EmStar Release Notes
|
|
Site and Mailing List Search:
|
New in the 2.5 release:
Bugfixes:
-
Emrun:
-
fixed last_msg to work correctly
-
removed memory leak from config parser (although this did not grow over time)
-
-
Sensor Device: Numerous bugfixes, now well tested for isochronous sources via the vxpcd driver (VX Pocket 440 PC Card)
-
Numerous bugs fixed in State Sync code
-
Fixed memory leak in destructor for logring
-
Packet device:
-
Fixed packet device to send rather than drop packets that were queued for sending when a client closes.
-
Added always_invoke_filter option to always call the filter function even if no filter "state" has been registered.
-
-
buf_t:
-
file descriptor leak fixed in file_to_buf()
-
fixed a bug in bufcpy() that did not properly decrement empty pointer.
-
-
ip_connector bugfixes; autoresponds arps by default rather than passing them through; now has been tested more thoroughly
-
EmTOS:
-
fixes to properly handle receipts and dropped receipts
-
upgrades to tinyos 1.1.13
-
fixed dbg() in EmTOS to comply with tinyos conventions
-
fixed memory error; missing strdups in emlinkserver, etc.
-
-
Timesync
-
gsync modified to create pairs device on timing source
-
moved timesync computation into separate thread
-
moved timesync client code (send/recv from radio) into separate thread
-
if mac layer has its own clock, timesync will use it to do conversions rather than converting to CPU time at each hop.
-
fixed bug in least squares algorithm
-
fixed up graph output code, indicates dropped points on graph
-
API/Feature changes:
-
Ceiling mode changes. emcee is gone; now replaced by --ceiling option to emsim.
-
New xml status response type
-
Change to sensor client API to support response type request
-
Link devices:
-
Now support promisc correctly; however, this means that packets with a destination field that is not equal to your interface's link ID will not be presented except when the client is in promiscuous mode.
-
Link devices support multiple type codes to filter on
-
Schedules link configuration until after constructor completes
-
-
EmTOS: emlinkserver, empacketserver now accept PD_BLOCKED return code
-
Timesync:
-
added optional timesync listener event, sync_event_init(). This will listen for parameter updates rather than re-reading every 10 sec.
-
sync_clock_no_create(), resolves a sync clock without necessarily creating a new clock
-
New Features:
-
libevent: A library for general purpose stuff that is compatible with the GLib events library. Currently adds a TCP client and server helper library.
-
libnl: A library of numerical routines
-
libroute: Helpers for writing routing layers; code factored out of flooding
-
libmisc:
-
long-int min/max
-
pollnow() function polls a file descriptor
-
print/parse_if_id() moved to local_types.h
-
added SHA hashing functions
-
added numerous new API calls for buf_t's, including ability to pre-allocate space, write into pre-allocated space, etc.
-
new fixed point math functions
-
misc_ringbuff: numerous performance improvements
-
misc_convert_baud(): support for higher, nonstandard baud rates
-
misc_busywait(): sleeps for some time before actually busywaiting
-
-
misc_init() startup features
-
--stop-on-startup: option to stop on startup and wait for a signal
-
--enable-remote: option to enable FUSDnet access to devices
-
Added PID to startup message
-
-
Directory device adds new function to "re-add" well-known entry; does not return error if entry already exists
-
Message queue adds accessors to lock/unlock/modify the queue
-
Status and Command devices expose information about its client
-
Packet client adds poll() function and ability to set blocking mode
-
Improved support for multiple threads:
-
you can now have different event loops in different threads
-
events are by default added into the "default loop" for your thread
-
exposed GContext in more layers to enable events to be inserted into specific loops.
-
-
Build process:
-
Now automatically builds kernel modules for 2.6 kernels
-
Debugging flags are now optional, controlled via Make.conf
-
-
New tosnicd developed as a replacement for motenic/hostmote, adds telos and micaz support. However, tosnicd does not support all the configuration parameters that motenic supports.
-
Hostmote support for tcp client socket in place of serial connection. This enables connection to AVRora and EPRB ethernet programming boards.
-
udpd now supports "macinfo" interface to hostap drivers, providing low level time stamping, RSSI for each packet, and information about the fate of packets that have been sent.
-
tosinstall script supports setting mote ID.
-
HTTP support factored common code out of cgi scripts, improved ssi parser
-
Emproxy:
-
Emproxy supports link devices in addition to IP interfaces
-
Emproxy supports remote shell commands
-
rbsh remote broadcast shell client
-
cpd compressed proxy; uses mhflood to push link state information
-
Better support for "emproxy_gw" functionality, where a gateway node emits data that gets reported in emview, e.g. for systems involving real motes.
-
libproxy supports connecting to multiple interfaces or addresses
-
-
EmView:
-
Hide inactive nodes option added
-
ColorStatus module added (like TextStatus).. allows simple way to color a node from a status device output
-
Changes to routing_tree module; removed some test code that was added for a class project
-
-
Emrun:
-
added support for a "fault logger" that applications can use
-
added memory usage tracking support
-
--no-process-logrings option to disable per-process log rings
-
--no-child-logrings option to disable log rings for child emruns (useful for sim mode)
-
added logger daemon that can grab and save snapshots of the emrun logs
-
-
Emulation array support; supports proxy_host tag in .sim file to use FUSDnet to remotely access a device, e.g. udp0 on a remote stargate
-
EmTOS:
-
socket server support
-
-
New sensors supported
-
sensors/audiod/vxpcd: VXPocket440 sound card
-
devel/loc/anemometer: Vane anemometer
-
devel/loc/davis-vp2: Davis VantagePro2 weather station
-
-
Several new examples/samples added
-
State sync code includes several new features
-
Mobile flag causes algorithm to connect as a leaf rather than a router
-
Logging features for measuring the algorithm performance
-
mhflood version adds options to reduce traffic from refreshes
-
sink routing module, can be used for IP routing with ip_connector
-
push_status module, pushes output of a status device into statesync
-
-
Lots of new comments and documentation
New in the 2.1 release:
Bugfixes:
-
Sensor Device: Numerous bugfixes, fixing resource leaks and lockups
-
FUSDnet: some minor bugfixes, and greater verification. FUSDnet is now operated by a server that runs as part of the regular EmStar system (rather than as a part of fusdd).
-
Query Device/Query Client: Fixed bugs that would inappropriately start an overlapped transaction, when transactions should have been atomic
-
Fixed bugs in logging in simulation mode: now logging works correctly for all processes including sim components.
-
Fixed a problem observed with newer versions of GLib.
-
Fixed performance problems with EmView. Fixed support for EmTOS and some problems with cases where node IDs don't match interface IDs.
-
EmTOS:
-
Fixed bugs in the EmTOS EmPacketClient and EmPacketServer libraries.
-
Cleaned up header files
-
Fixed glitches in logging
-
-
Simulator channel models: Bugfix to path loss model that caused small but nonzero reception at very long distances
New features:
-
Link Device:
-
Link Classes: new feature of link device. Link devices may now be instantiated with a specific "link class". Specifying a class annotates each link with its type, e.g. Link layer, Network layer, etc. This also enables an entire class of link devices to be conveniently opened at once through the link_multi interface, simplifying the implementation of routing protocols that manage multiple links. Sample emrun config files and macros have been updated to support these Link Classes; see the implementation of udpd and link/include/link.run for examples of how to provide and accept link class arguments. Links that are unspecified default to class "None".
Link classes also provide a dynamic numbering scheme for the links in each class. The list of link classes and the mapping of link to number can be found in devices `/dev/link/classes/*`
-
link_multi interface. Similar to lu_open() but can open a whole "class" at once.
-
Command devices added to Link devices. Future link devices will use these command devices in preference to ioctl() commands. The commands that are not processed by one layer will pass down to a lower layer. Command devices also correctly support usage information.
-
-
echocat: Added a refresh parameter that will periodically force a reread.
-
Directory Service: dir_service enables apps to create 'directory devices' external to their own process. These devices map short string names to small integers.
-
HTML support / Embedded Web Server: New handlers for status devices allow them to output HTML formatted output for access via the web. An embedded web service based on BozoHTTPD (a very small and simple web server) provides CGI gateways to EmStar status and log devices. Added support for HTML output to various EmStar services.
-
Packet Device Client: added option to enable blocking writes
-
Status Device Client: added ability to fail on open even when crashproofing is enabled. Previously crashproofing would prevent errors when the device did not initially exist; however it is often useful to return an error or exit under those conditions.
-
LibMisc:
-
buf_t: Added new features for properly removing data from a buf_t; fixed instances where this was done incorrectly. Also added a new iterator to the misc_buf library, that enables creation and parsing of key-length-value strings.
-
misc_get_fqdn(): Gets the fully qualified domain name for a specific domain.
-
New option parsing routines for uint8 anf uint16 types.
-
New misc_parse scheme for parsing CGI type ampersand delimited key value pairs
-
-
Simulation:
-
sim_become_node(). Routines for writing simulation mode test drivers that allow your program to "become" a specific node in order to access that node's devices directly.
-
Simulation timers: uptime, elapsed system time, etc. These are useful for implementing scheduled events in simulation components.
-
Ceiling mode is now a part of regular simulation mode.. the --ceiling option. The use of the moteNIC in ceiling mode is now greatly simplified.
-
Dump config device added, can dump the current config, after evaluating all macros and random numbers, for inclusion into a .sim file.
-
The way network links are interfaced to the simulator has changed in this release. Previously special hackery would prevent link drivers in emrun config files (e.g. hostmoted and motenicd from running when in simulation or ceiling mode, and even more hackery was required to actually indeed run them in ceiling mode, but in a different mode of operation.
This has been substantially fixed: now the link driver _always_ runs in all modes, but environment variables set by `emsim` and feedback from the simulated channels themselves will control what that link driver will do. The link driver starts up, and if it's in simulation mode (`SIM_ID` set), then it will contact the simulator (`/dev/sim/groupXX/radio/<linkname>/command`) to discover whether its channel is simulated. If it's not being simulated then it will start for real. Otherwise, it registers with the channel model and the channel model will create a device that hooks into that channel.
In addition, another environment variable, `PROXY_HOST`, if set, will cause the module to connect to that host via FUSDnet to remotely access and create local stubs for the remote devices.
This is all "under the covers" -- these changes should not affect existing `.sim` files, except perhaps for minor changes to command line arguments. The details need only be understood by those planning to write _new_ link drivers that need to integrate to simulation and ceiling mode.
-
New channel models have been added. The API for channel model plugins has also changed substantially.
+ Sensor data replay, both spatially and time varying + Empirical topology radio channel model, based on topology file + Several statistical data-driven models
-
-
New delay program: Can be used to add a delay into an emrun waitfor chain, cause random delays on start of a simulation, etc.
-
FUSDnet: By default, devices are not exported. All EmStar modules now parse the new --enable-remote command line option in misc_init(), which will cause that module's devices to be exported via FUSDnet. In addition a library version of the FUSDnet client can be used to cause a remote device to be hosted from within an EmStar program.
-
EmView:
-
Added autoscaling grid lines
-
Added useful title string
-
Added new modules that enable display of simple text strings and simple arrow configurations, by providing device files specific to driving the visualization.
-
-
Fragmentation Module: improved performance, reduced overhead
-
IP Connector: A new facility has been added that enables a virtual network interface to be created that routes traffic through an EmStar Link device. This enables simulations to support socket applications. This also allows EmStar apps that use sockets to operate over interfaces such as moteNIC that do not have a network interface driver.
-
EmTOS:
-
Motesync sync support between mote and Stargate
-
Implemented connection between simlated sensor devices and EmTOS simulations
-
Support for paged eeprom
-
Supports Stargate LEDS from EmTOS
-
-
Mote/HostMote
-
Added programming support (ability to program through a running HostMote process.
-
-
BUILD system
-
Install target that installs FUSD
-
Change CPPFLAGS to more standard CXXFLAGS
-
Support for conditional builds
-
Properly computes TinyOS dependencies when build tos used
-
New in the 2.0 release:
-
Additions to the EmStar build system. TinyOS and EmTOS are now more closely integrated into the EmStar build system. When appropriately configured, the EmStar make will now build EmTOS targets, as well as actual Mote targets (e.g. the mica2 platform to build Transceiver). In addition, tos-contrib is now integrated into the same directory hierarchy, so that the sharing of header files between EmStar and TinyOS is simplified.
-
EmTOS improvements:
-
Added EmPacketServer for providing EmStar packet devices
-
Fixed timer problem, moved up to TinyOS release 1.1.6
-
Receipts used to enable correct SendDone semantics
-
Supports link-layer ACK
-
Added ALIGN_TOS_MSG, to align the data field of a TOSMsg for correct behavior on processors such as the PXA
-
-
MoteNIC v7.
-
v7: is a slight improvement over v6, adding a length check that avoids stalls in response to certain serial port loss conditions.
-
v6: adds support for Berkeley LPL, significant improvements in the serial protocol, and the addition of receipts that enable correct semantics when used from EmTOS.
-
v2-5: Major cleanup and many bug fixes in the MoteNIC/Transceiver codebase. Several race conditions affecting the use of S-MAC and high rate transmissions have been eliminated. MTU is now detected by the Microserver side rather than being defined at compile time. hostmoted and motenicd have re-merged into single binaries (no more hostmoted2 or smacnic to provide smac support).
-
-
hostmoted supports reprogramming of motes while hostmote is running.
-
Change to the link_udp() emrun macro, to add an additional field
-
Added optional arguments to the emrun macro language, which however have not yet been integrated into the existing macros.
-
Improved the performance of the UDP link driver, reducing header overhead.
-
Added support for Kernel 2.6 to FUSD
-
Simulator directories changed from node1 -> node001
-
Simulator supports grid-position as a way of generating random topologies that are jittered from a grid.
-
Added "trap mode" to emrun/emsim. In trap mode, signals such as SIGSEGV and SIPFPE are trapped and the process hangs, waiting for the developer to attach with GDB. After attaching, if you sent SIGUSR1 to the process it will reenter the trapped signal and you can examine the stack, etc.
-
Added responsiveness measurement to emrun, including an emview module to display it. This feature will flag processes that appear to be unresponsive for large amounts of time. This can be a sign of faulty code or of an overloaded simulator. The statistics are reported in /dev/emrun/status and are flagged in the visualizer.
-
Added default arguments to many emrun macros to support setting loglevel and "debug" tools. Simply add loglevel=<LEVEL> to an emrun macro to set the loglevel for that process. To run the process with valgrind, add debug="valgrind --tool=memcheck".