--- /dev/null
+========================================================================
+README: LowPowerSensing Application
+Created: 2-March-2008
+Author: Kevin Klues (klueska@cs.stanford.edu)
+========================================================================
+
+This README is intended to give an overview of the organizational
+structure of the LowPowerSensing Application application as well as
+how to best utilize and customize some of the features it contains.
+This document is divided into three sections. The first section
+contains an overview of how the application is organized and what it
+is capable of doing. The second section gives instructions on how to
+install the application and interact with it from your PC. The third
+section demonstrates how to customize the application to meet your
+particualr needs.
+
+------------------------------------------------------------------------
+Organizational Structure and Overview
+------------------------------------------------------------------------
+
+The LowPowerSensing application is actually made up of three separate
+mini-applications: one mote base station application, one mote sampling
+application, and one java based application used to interact with the
+mote applications. The code for all three applications is divided up
+among several directories:
+
+LowPowerSensing
+./Base
+./java
+./sampleLog
+./Sampler
+./tmote_onboard_sensors
+./universal_sensors
+
+The code specific to the base station aplication is contained under
+the 'Base' directory, and code for the sampling application is found
+under 'Sampler'. Code shared between them is found either in the top
+level directory (LowPowerSensing) or in the subdirectories 'sampleLog',
+'tmote_onboard_sensors', and 'universal_sensors'. Code for the java
+application is found in the 'java' directory.
+
+Now the application itself is fairly straightforward. The sampler
+application periodically takes some sensor readings, logs them to flash,
+and waits for requests from the base station to stream out the contents
+or its flash over the radio. Requests originate from end users of the
+java application and simply get forwarded on to a mote running the
+sampler application through the base station application. Conversely,
+whenever the base station receives any packets from the sampler
+application, it forwards these packets back to the java application for
+further processing. Any number of motes running the sampler application
+can exist simultaneously, and data can be requested from them using a
+unique address assigned to each of them.
+
+What sensors are sampled, the periodicity of sampling, and the check
+interval for performing LowPowerListening the are all configurable
+options that can easily be set by the user at compile time.
+
+This application is admittedly *not* robust in the sense that no reliable
+transfer protocol is implemented for the exchange of data, data can only
+be retreived from one mote at a time, and there is no code anywhere to
+recover from node failures at any point in time. This application is
+intended more for demonstration purposes, and as a starting point for
+developers learning how to write low power sensornet applications. Enjoy!
+
+------------------------------------------------------------------------
+Installation Instructions and Running the Applications
+------------------------------------------------------------------------
+
+The default configuration of the LowPowerSensing applcation has been
+designed to compile and run on any platform that supports
+LowPowerListening and has a LogStorage component defined for its
+external flash (i.e. telos, mica2, micaz, eyesIFX, etc.). For purposes
+of illustration the instructions below are given for installation on the
+telosb platform, but should be applicable to other platforms as well.
+
+To run the LowPowerSensing application with its default configuration
+do the following:
+
+1) Install the base station application on a mote and connect it to your
+PC via whatever serial interface you normally use to communicate with it.
+IMPORTANT: the base station mote must be installed with address 0
+
+cd Base
+make telosb install.0
+
+2) Install the sampler application on a mote. You can install this
+application on any number of motes, remembering to change the TOS_NODE_ID
+of each installation instance (in the example below I use 5, 10, and 20,
+but any number is acceptable as long as its not 0).
+
+cd Sampler
+make telosb install.5
+make telosb install.10
+make telosb install.20
+
+3) Compile and run the java application. You first need to start up an
+instance of serial forwarder to do so.
+
+cd java
+make
+java net.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB0:telosb &
+java LowePowerSensingApp
+
+After starting the java application you will be presented with a user
+prompt that looks like:
+
+Enter 's' to request samples
+>>
+
+Just type 's' and hit enter in order to request samples from one of your
+sampler motes. After doing so, you will be presented with a prompt for
+the address of the mote from which you are requesting data. You should
+enter the TOS_NODE_ID of one of the motes you installed the sampler
+application on before.
+
+Enter Address:
+
+Once the address has been entered, a request message will be sent from
+the java application through the base station mote and out to the
+mote running the sampling application. Once the sampler mote receives
+this request, it will start streaming back any data it has logged to flash
+since the last time a request was received. If this is the first request
+message it is receiving, it will send all of the samples back that it has
+logged since the time it was booted up.
+
+------------------------------------------------------------------------
+Changing the default Configuration
+------------------------------------------------------------------------
+
+The LowPowerSensing Application is set up by default to use a software
+based Sinusoidal generator sensor with a sampling period of 3s, and an
+LPL check interval of 2s. The code for using this sensor can be found
+in the 'universal_sensors' directory. The pattern followed by the set
+of files found in this directory can be used to setup other types of
+sensors for sampling by the LowPowerSensing application. If you take a
+look in the 'tmote_onboard_sensors' directory you will see the exact
+same set of files as you do in the 'universal_sensors' directory. Of
+course, these files are set up to use the set of sensors found onboard
+the tmote sky motes: namely a temperature sensor, a humidity sensor, a
+photo active sensor, and a total solar sensor. Because the files in
+each directory are named identically, we can tell the LowPowerSensing
+application which set of sensors to expect completely at compile time
+by simply setting a few compiler flags.
+
+So if you happen to have a tmote laying around and you want to sample
+its onboard sensors instead of using the default sinusoidal sensor you
+need to do the following:
+
+Open up the makefiles for both the the Sampler and Base station
+applications and change this line:
+
+CFLAGS += -I.. -I../sampleLog -I../universal_sensors
+to
+CFLAGS += -I.. -I../sampleLog -I../tmote_onboard_sensors
+
+Additionally, to allow the java application to recognize the new types
+of sensors being sampled you need to change this line in the makefile
+of the java directory:
+
+SENSOR_DIR = universal_sensors
+to
+SENSOR_DIR = tmote_onboard_sensors
+
+And thats it. You should now be sampling the oboard tmote sensors
+instead of the sinusoaidal one. If you wish to create a custom set of
+sensors to sample using the LowPowerSensing application (such as those
+from one of the mica sensorboards), just follow the pattern found in
+the 'universal_sensors' and 'tmote_onboard_sensors' and then change
+the compiler flags appropriately.
+
+Additionally, if you wish to change the LowPowerListening check
+interval or the sampling period of the Sampler application you can
+eitheropen up the 'LowPowerSensingConsants.h' file and directly change
+them there, or pass new values for them at compile time through the
+makefile (all values are in binary milliseconds i.e. 1s is specified as
+1024 not 1000).
+
+To change them via the makefile add lines such as the following to
+your makefile in both the Base and Sampler application directories
+(its important that its in both makefiles for the LPL check interval,
+but only necessary in the Sampler application if you are only changing
+the sampling period):
+
+PFLAGS += -DSAMPLING_INTERVAL=10000
+PFLAGS += -DLPL_INTERVAL=3000
+PFLAGS += -DSAMPLING_INTERVAL=10000 -DLPL_INTERVAL=3000
+
+And that should be it. The rest of it involves sifting through the code
+and figuring out how the application does what it does. If you have any
+questions feel free to email me (Kevin) at klueska@cs.stanford.edu .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+