Greetings, all,

I've just committed a bunch of changes to hackyKernel (and a few to hackyAnt and hackyStdExt) to support "phase I" of the evolutionary sensor data type implementation.

What I mean by "Phase I" is the implementation of an alternative "transmission protocol" for sensor data from the client to the server. Basically, in the original implementation I did in 2001, I sent the data regarding a sensor data entry as an ordered list of field values. So, a sensor data entry might be received at the server as <tstamp value> <tool value> <filename value> etc. The order the fields are sent is the same order in which they appear in the sensor data type definition, which is how we determine that the second value is to be associated with the "tool" field.

In the evolutionary SDT setting, fields can be added or deleted over time, and the SDT definition in place at the client (within their sensorshell) might not necessarily be in sync with the SDT definition in place at the server (which might have "evolved"). Due to these features, the "ordered list" protocol for sensor data transmission is not good for evolution.

What I've implemented is a new, "keyword" based transmission protocol, in which the data is sent as a set of pairs, the first element being the field name, and the second element being the field value. With this transmission protocol in place, the server can now have a different SDT definition than the client, and these differences can be managed at least to some extent. For example, if the evolved SDT definition includes a new field where a default value has been specified, the server can tell whether or not this field is being sent by a client and if it is absent the server can simply provide the default value.

Part of the implementation trickiness to this process is maintaining current functionality while implementing this new mechanism. So, the current commits are not intended to break any existing behavior. While I've made a bunch of low-level additions to hackyKernel to support this new mechanism, I've kept the old mechanism around, and the new transmission protocol has to be explicitly enabled by sending a "setTransmissionProtocol" command to the sensorshell with the value Notification.KEYWORDS. (Don't try this at home, folks!) I've also implemented, within hackyKernel, a new SDT package called EvolSdt which I am using to exercise the new capabilities.

I've successfully done a local freshStart junitAll with what I believe is the equivalent of hackystat-ALL, and I've also done a successful build on hackydev with hackystat-UH, so with any luck this first set of changes hasn't thrown us into the weeds.

For more details on the direction I'm heading, please see:

<http://hackydev.ics.hawaii.edu/hackyDevSite/doc/evolutionarySDT.html>

Have a good weekend.

Cheers,
Philip

Reply via email to