[Tinyos-2-commits] CVS: tinyos-2.x/doc/txt tep114.txt,1.8,1.9

Phil Levis scipio at users.sourceforge.net
Tue Jun 10 10:45:31 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x/doc/txt
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv1111/txt

Modified Files:
	tep114.txt 
Log Message:
Clean up to make it Documentary.


Index: tep114.txt
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/doc/txt/tep114.txt,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** tep114.txt	18 Sep 2007 19:27:42 -0000	1.8
--- tep114.txt	10 Jun 2008 17:45:28 -0000	1.9
***************
*** 107,110 ****
--- 107,124 ----
  described in this section.
  
+ This table summarizes the SID interfaces:
+ 
+ +------------------------+-----------+-----------+-----------+
+ | Name                   | Phase     | Data type | Section   |
+ +------------------------+-----------+-----------+-----------+
+ | Read                   | Split     | Scalar    | 3.1       |
+ +------------------------+-----------+-----------+-----------+
+ | Get                    | Single    | Scalar    | 3.2       |
+ +------------------------+-----------+-----------+-----------+
+ | Notify                 | Trigger   | Scalar    | 3.3       |
+ +------------------------+-----------+-----------+-----------+
+ | ReadStream             | Split     | Stream    | 3.4       |
+ +------------------------+-----------+-----------+-----------+
+ 
  3.1 Split-Phase Small Scalar I/O
  --------------------------------------------------------------------
***************
*** 117,152 ****
    }
  
-   interface Write<val_t> {
-     command error_t write( val_t val );
-     event void writeDone( error_t result );
-   }
- 
- A component that provides both read and write functionality might want
- to use a combined version of the interface, to reduce the amount of
- wiring required by the client application::
- 
-   interface ReadWrite<val_t> {
-     command error_t read();
-     event void readDone( error_t result, val_t val );
- 
-     command error_t write( val_t val );
-     event void writeDone( error_t result );
-   }
- 
- A component that can support concurrent reads and writes SHOULD
- provide separate Read/Write interfaces. A component whose internal
- logic will cause a read to fail while a write is pending or a write to
- fail while a read is pending MUST provide a ReadWrite interface.
- 
  If the ``result`` parameter of the ``Read.readDone`` and
  ``ReadWrite.readDone`` events is not SUCCESS, then the memory of the
  ``val`` parameter MUST be filled with zeroes.
  
! If the call to ``Read.read`` has returned SUCCESS, but the
! ``Read.readDone`` event has not yet been signalled, then a subsequent
! call to ``Read.read`` MUST not return SUCCESS. This simple locking
! technique, as opposed to a more complex system in which multiple
! read/readDone pairs may be outstanding, is intended to reduce the
! complexity of code that is a client of a SID interface.
  
  Examples of sensors that would be suited to this class of interface
--- 131,143 ----
    }
  
  If the ``result`` parameter of the ``Read.readDone`` and
  ``ReadWrite.readDone`` events is not SUCCESS, then the memory of the
  ``val`` parameter MUST be filled with zeroes.
  
! If the call to ``read`` has returned SUCCESS, but the ``readDone``
! event has not yet been signalled, then a subsequent call to ``read``
! MUST return EBUSY or FAIL.  This simple locking technique, as opposed
! to a more complex system in which multiple read/readDone pairs may be
! outstanding, is intended to reduce the complexity of SID client code.
  
  Examples of sensors that would be suited to this class of interface
***************
*** 154,206 ****
  readings.
  
! 3.2 Split-Phase Large Scalar I/O 
! --------------------------------------------------------------------
! 
! If the SID's data object is large, it can provide read/write
! interfaces that pass parameters by pointer rather than value::
! 
!   interface ReadRef<val_t> {
!     command error_t read( val_t* val );
!     event void readDone( error_t result, val_t* val );
!   }
! 
!   interface WriteRef<val_t> {
!     command error_t write( val_t* val );
!     event void writeDone( error_t result, val_t* val );
!   }
! 
!   interface ReadWriteRef<val_t> {
!     command error_t read( val_t* val );
!     event void readDone( error_t result, val_t* val );
! 
!     command error_t write( val_t* val );
!     event void writeDone( error_t result, val_t* val );
!   }
! 
! The caller is responsible for managing storage pointed to by the val
! pointer which is passed to read() or write(). The SID takes ownership
! of the storage, stores a new value into it or copy a value out of it,
! and then relinquishes it when signaling readDone() or writeDone(). If
! read or write() returns SUCCESS then the caller MUST NOT access or
! modify the storage pointed to by the val pointer until it handles the
! readDone() or writeDone() event.
! 
! As is the case with the parameters by value, whether a component
! provides separate ReadRef and WriteRef or ReadWriteRef affects the
! concurrency it allows. If a component can allow the two to execute
! concurrently, then it SHOULD provide separate ReadRef and WriteRef
! interfaces. If the two cannot occur concurrently, then it MUST provide
! ReadWriteRef.
! 
! If the ``result`` parameter of the ``ReadRef.readDone`` and
! ``ReadWriteRef.readDone`` events is not SUCCESS, then the memory the
! ``val`` parameter points to MUST be filled with zeroes. 
! 
! Examples of sensors that are suited to this set of interfaces include
! those that generate multiple simultaneous readings for which
! passing by value is inefficient, such as a two-axis digital 
! accelerometer.
! 
! 3.4 Single-Phase Scalar I/O
  --------------------------------------------------------------------
  
--- 145,149 ----
  readings.
  
! 3.2 Single-Phase Scalar I/O
  --------------------------------------------------------------------
  
***************
*** 209,214 ****
  split-phase operation.  Examples include a node's MAC address (which
  the radio stack caches in memory), profiling information (e.g.,
! packets received), or a GPIO pin. These devices MAY use these
! single-phase interfaces::
  
    interface Get<val_t> {
--- 152,157 ----
  split-phase operation.  Examples include a node's MAC address (which
  the radio stack caches in memory), profiling information (e.g.,
! packets received), or a GPIO pin. These devices MAY use the
! Get interface::
  
    interface Get<val_t> {
***************
*** 216,245 ****
    }
  
-   interface Set<val_t> {
-     command void set( val_t val );
-   }
- 
-   interface GetSet<val_t> {
-     command val_t get();
-     command void set( val_t val );
-   }
- 
- If a device's data object is readily available but still too large to
- be passed on the stack, then the device MAY use these interfaces::
  
-   interface GetRef<val_t> {
-     command error_t get( val_t* val );
-   }
  
!   interface SetRef<val_t> {
!     command error_t set( val_t* val );
!   }
! 
!   interface GetSetRef<val_t> {
!     command error_t get( val_t* val );
!     command error_t set( val_t* val );
!   }
! 
! 3.5 Notification-Based Scalar I/O
  --------------------------------------------------------------------
  
--- 159,165 ----
    }
  
  
  
! 3.3 Notification-Based Scalar I/O
  --------------------------------------------------------------------
  
***************
*** 263,272 ****
  events for the interface instance used by a single particular
  client. They are distinct from the sensor's power state. For example,
! if an enabled sensor is powered down, then when powered up it MUST
  remain enabled.
  
  The val parameter is used as defined in the Read interface.
  
! 3.7 Split-Phase Streaming I/O
  --------------------------------------------------------------------
  
--- 183,196 ----
  events for the interface instance used by a single particular
  client. They are distinct from the sensor's power state. For example,
! if an enabled sensor is powered down, then when powered up it will
  remain enabled.
  
+ If ``enable`` returns SUCCESS, the interface MUST subsequently
+ signal notifications when appropriate. If ``disable`` returns SUCCESS,
+ the interface MUST NOT signal any notifications.
+ 
  The val parameter is used as defined in the Read interface.
  
! 3.4 Split-Phase Streaming I/O
  --------------------------------------------------------------------
  
***************
*** 280,284 ****
  synchronous context through the task queue.
  
! The ReadStreaming interface MAY be provided by a device that can
  provide a continuous stream of readings::
  
--- 204,208 ----
  synchronous context through the task queue.
  
! The ReadStream interface MAY be provided by a device that can
  provide a continuous stream of readings::
  
***************
*** 320,341 ****
  FAIL.
  
! The following interface can be used for bulk writes::
  
!   interface WriteStream<val_t> {
  
!     command error_t postBuffer( val_t* buf, uint16_t count );
  
!     command error_t write( uint32_t period );
  
!     event void bufferDone( error_t result, 
!                            val_t* buf, uint16_t count );
  
!     event void writeDone( error_t result );
!   }
  
- postBuffer() and bufferDone() are matched in the same way described
- for the ReadStream interface, as are write() and writeDone().
  
! 4. Summary
  ====================================================================
  
--- 244,273 ----
  FAIL.
  
! In the ReadStream interface, ``postBuffer`` returns SUCCESS if the buffer
! was successfully added to the queue, FAIL otherwise. A return value
! of SUCCESS from ``read`` indicates reading has begun and the interface
! will signal ``bufferDone`` and/or ``readDone`` in the future. A
! return value of FAIL means the read did not begin and the interface
! MUST NOT signal ``readDone`` or ``bufferDone``. Calls to ``read``
! MAY return EBUSY if the component cannot service the request.
  
! 4. Implementation
! ====================================================================
  
! An implementation of the Read interface can be found in
! ``tos/system/SineSensorC.nc`` and ``tos/system/ArbitratedReadC.nc``.
  
! An implementation of the Get interface can be found in
! ``tos/platforms/telosb/UserButtonC.nc``.
  
! An implementation of the ReadStream interface can be found in
! ``tos/sensorboards/mts300/MageXStreamC.nc``.
  
! Implementations of the Notify interface can be found in
! ``tos/platforms/telosb/SwitchToggleC.nc`` and
! ``tos/platforms/telosb/UserButtonP.nc``.
  
  
! 5. Summary
  ====================================================================
  
***************
*** 349,353 ****
  connect a sensor into a more general system.
  
! 5. Author's Address
  ====================================================================
  
--- 281,285 ----
  connect a sensor into a more general system.
  
! 6. Author's Address
  ====================================================================
  



More information about the Tinyos-2-commits mailing list