[Tinyos-beta-commits] CVS: tinyos-1.x/beta/teps/txt tep102.txt, 1.2, 1.3 tep103.txt, 1.2, 1.3 tep105.txt, 1.2, 1.3

Ion Yannopoulos ion- at users.sourceforge.net
Mon Jan 31 15:10:05 PST 2005


Update of /cvsroot/tinyos/tinyos-1.x/beta/teps/txt
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26485/txt

Modified Files:
	tep102.txt tep103.txt tep105.txt 
Log Message:
Clean up RST so HTML will generate properly.


Index: tep102.txt
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/teps/txt/tep102.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tep102.txt	24 Jan 2005 10:00:59 -0000	1.2
--- tep102.txt	31 Jan 2005 23:09:56 -0000	1.3
***************
*** 1,3 ****
! <===========================
   Timers
  ============================
--- 1,3 ----
! ============================
   Timers
  ============================
***************
*** 38,44 ****
  
  * Low frequency alarms, synchronous, periodic and oneshot, for
! user/app timers
  * High frequency alarms, asynchronous, periodic and oneshot, for adc
! sampling
  * Stop watches, timing information
  * Local time, time origin
--- 38,44 ----
  
  * Low frequency alarms, synchronous, periodic and oneshot, for
!   user/app timers
  * High frequency alarms, asynchronous, periodic and oneshot, for adc
!   sampling
  * Stop watches, timing information
  * Local time, time origin
***************
*** 54,58 ****
  
  * All exposed timer values should be unsigned 32-bit integers (uint32_t)
! regardless of precision
  
  A single timer interface common across all precisions would enable subtle
--- 54,58 ----
  
  * All exposed timer values should be unsigned 32-bit integers (uint32_t)
!   regardless of precision
  
  A single timer interface common across all precisions would enable subtle
***************
*** 165,169 ****
  
      i. Get current time as a uint32_t in whatever units are specified by
!       the interface tag frequency_tag
      ii. Manage overflows
  
--- 165,169 ----
  
      i. Get current time as a uint32_t in whatever units are specified by
!        the interface tag frequency_tag
      ii. Manage overflows
  
***************
*** 172,182 ****
      iii. Interface::
  
!       interface Counter<frequency_tag>
!       {
! 	async command uint32_t get();
! 	async command bool isOverflowPending();
! 	async command bool clearOverflow();
! 	async event void overflow();
!       }
  
    e. Alarm<frequency_tag>
--- 172,182 ----
      iii. Interface::
  
!            interface Counter<frequency_tag>
!            {
!              async command uint32_t get();
!              async command bool isOverflowPending();
!              async command bool clearOverflow();
!              async event void overflow();
!            }
  
    e. Alarm<frequency_tag>
***************
*** 192,203 ****
      iv. Interface::
  
!       interface Alarm<frequency_tag>
!       {
! 	async command uint32_t get();
! 	async command bool isSet();
! 	async command void cancel();
! 	async command void set( uint32_t t0, uint32_t dt );
! 	async event void fired();
!       }
  
      v. The AlarmC configuration exposes a distinct set of alarms
--- 192,203 ----
      iv. Interface::
  
!           interface Alarm<frequency_tag>
!           {
!              async command uint32_t get();
!              async command bool isSet();
!              async command void cancel();
!              async command void set( uint32_t t0, uint32_t dt );
!              async event void fired();
!           }
  
      v. The AlarmC configuration exposes a distinct set of alarms
***************
*** 208,225 ****
        configuration AlarmC
        {
! 	// alarms required by standard tinyos components
! 	provides interface Alarm<TMilli> as AlarmTimerMilli;
! 	provides interface Alarm<T32khz> as AlarmTimer32khz;
! 	provides interface AlarmAsync<T32khz> as AlarmTimerAsync32khz;
  
! 	// extra alarms to be used by applications
! 	provides interface Alarm<T32khz> as Alarm32khz1;
! 	provides interface Alarm<T32khz> as Alarm32khz2;
! 	//...
  
! 	provides interface Alarm<TMicro> as AlarmMicro1;
! 	provides interface Alarm<TMicro> as AlarmMicro2;
! 	provides interface Alarm<TMicro> as AlarmMicro3;
! 	//...
        }
  
--- 208,225 ----
        configuration AlarmC
        {
!         // alarms required by standard tinyos components
!         provides interface Alarm<TMilli> as AlarmTimerMilli;
!         provides interface Alarm<T32khz> as AlarmTimer32khz;
!         provides interface AlarmAsync<T32khz> as AlarmTimerAsync32khz;
  
!         // extra alarms to be used by applications
!         provides interface Alarm<T32khz> as Alarm32khz1;
!         provides interface Alarm<T32khz> as Alarm32khz2;
!         //...
  
!         provides interface Alarm<TMicro> as AlarmMicro1;
!         provides interface Alarm<TMicro> as AlarmMicro2;
!         provides interface Alarm<TMicro> as AlarmMicro3;
!         //...
        }
  
***************
*** 255,278 ****
    c. Timer interface
    
!     i. Synchronous
!     ii. Parameterized by time precision
      iii. Provides periodic and one shot timers
!     iv. May have moderate computational overhead, probably all Timers for
!     a given timer precision are multiplexed from a single hardware
!     resource
  
      v. Interface::
  
!       interface Timer<frequency_tag>
!       {
! 	command result_t setPeriodic( uint32_t dt );
! 	command result_t setOneShot( uint32_t dt );
! 	command result_t stop();
! 	command bool isSet();
! 	command bool isPeriodic();
! 	command bool isOneShot();
! 	command uint32_t getPeriod();
! 	event void fired();
!       }
  
    d. TimerAsync interface
--- 255,278 ----
    c. Timer interface
    
!     i.   Synchronous
!     ii.  Parameterized by time precision
      iii. Provides periodic and one shot timers
!     iv.  May have moderate computational overhead, probably all Timers for
!          a given timer precision are multiplexed from a single hardware
!          resource
  
      v. Interface::
  
!         interface Timer<frequency_tag>
!         {
!           command result_t setPeriodic( uint32_t dt );
!           command result_t setOneShot( uint32_t dt );
!           command result_t stop();
!           command bool isSet();
!           command bool isPeriodic();
!           command bool isOneShot();
!           command uint32_t getPeriod();
!           event void fired();
!         }
  
    d. TimerAsync interface
***************
*** 282,300 ****
      iii. Provides periodic and one shot timers
      iv. Should have minimal computational overhead, probably each
!     TimerAsync is based on a single hardware resource
  
      v. Interface::
  
!       interface TimerAsync<frequency_tag>
!       {
! 	async command result_t setPeriodic( uint32_t dt );
! 	async command result_t setOneShot( uint32_t dt );
! 	async command result_t stop();
! 	async command bool isSet();
! 	async command bool isPeriodic();
! 	async command bool isOneShot();
! 	async command uint32_t getPeriod();
! 	async event void fired();
!       }
  
    e. Stopwatch interface
--- 282,300 ----
      iii. Provides periodic and one shot timers
      iv. Should have minimal computational overhead, probably each
!         TimerAsync is based on a single hardware resource
  
      v. Interface::
  
!         interface TimerAsync<frequency_tag>
!         {
!           async command result_t setPeriodic( uint32_t dt );
!           async command result_t setOneShot( uint32_t dt );
!           async command result_t stop();
!           async command bool isSet();
!           async command bool isPeriodic();
!           async command bool isOneShot();
!           async command uint32_t getPeriod();
!           async event void fired();
!         }
  
    e. Stopwatch interface
***************
*** 305,323 ****
      iv. Indicates if an overflow occurred for the returned value
      v. Stopwatches only depend on measurements from an appropriate
!     Counter.
!     v. Interface::
  
!       typedef struct
!       {
! 	uint32_t value;
! 	bool overflow;
!       } stopwatch_t;
  
!       interface Stopwatch<frequency_tag>
!       {
! 	async command void start();
! 	async command stopwatch_t read();
! 	async command stopwatch_t stop();
!       }
  
  
--- 305,323 ----
      iv. Indicates if an overflow occurred for the returned value
      v. Stopwatches only depend on measurements from an appropriate
!        Counter.
!     vi. Interface::
  
!           typedef struct
!           {
!             uint32_t value;
!             bool overflow;
!           } stopwatch_t;
  
!           interface Stopwatch<frequency_tag>
!           {
!             async command void start();
!             async command stopwatch_t read();
!             async command stopwatch_t stop();
!           }
  
  

Index: tep103.txt
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/teps/txt/tep103.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tep103.txt	26 Jan 2005 19:29:02 -0000	1.2
--- tep103.txt	31 Jan 2005 23:09:57 -0000	1.3
***************
*** 49,53 ****
  A common restriction of flash technology is that each bit can only be
  written once between erases. The table below summarizes the differences
! between the various flash technologies:
  
  
--- 49,53 ----
  A common restriction of flash technology is that each bit can only be
  written once between erases. The table below summarizes the differences
! between the various flash technologies::
  
  
***************
*** 106,112 ****
       Writes: random (minimum block size?), each block written once
       Failure model: no fault tolerance (crash before commit leads to
!        object loss)
       Other: a commit operation terminates writes, a validate operation
!        checks the object.
  
    b. Small objects (Deluge metadata, many other apps):
--- 106,112 ----
       Writes: random (minimum block size?), each block written once
       Failure model: no fault tolerance (crash before commit leads to
!      object loss)
       Other: a commit operation terminates writes, a validate operation
!      checks the object.
  
    b. Small objects (Deluge metadata, many other apps):
***************
*** 119,123 ****
       Writes: random, no minimum block size, rewrite ok
       Failure model: writes are atomic, failure during/between writes
!        does not lead to object loss
  
    c. Large sequential objects (Logs)
--- 119,123 ----
       Writes: random, no minimum block size, rewrite ok
       Failure model: writes are atomic, failure during/between writes
!      does not lead to object loss
  
    c. Large sequential objects (Logs)
***************
*** 131,139 ****
       Writes: sequential, object is linear or circular
       Failure model: writes are atomic, failure during/between writes
!        does not lead to whole object loss, but may lead to loss of
!        some entries (but see sync)
!        Note: failure during write may lead to (minor) capacity reduction
       Other: sync: guarantees already written data will not be lost to
!        (crash-style) failure
  
  These interfaces will be offered on top of a uniform method of sharing
--- 131,139 ----
       Writes: sequential, object is linear or circular
       Failure model: writes are atomic, failure during/between writes
!      does not lead to whole object loss, but may lead to loss of
!      some entries (but see sync)
!      Note: failure during write may lead to (minor) capacity reduction
       Other: sync: guarantees already written data will not be lost to
!      (crash-style) failure
  
  These interfaces will be offered on top of a uniform method of sharing
***************
*** 184,188 ****
       iii. automatic buffer management (+ sync, flush)
       iv. see tos/platform/mica/PageEEPROM|PageEEPROMM.nc
!   d. Intel Strataflash (should extend to other memory-mapped NOR flashes)
  
         interface HALStrata { /* In flux until higher level stuff written */
--- 184,188 ----
       iii. automatic buffer management (+ sync, flush)
       iv. see tos/platform/mica/PageEEPROM|PageEEPROMM.nc
!   d. Intel Strataflash (should extend to other memory-mapped NOR flashes)::
  
         interface HALStrata { /* In flux until higher level stuff written */
***************
*** 201,205 ****
          }
  
!   e. M25P:
  
         interface {
--- 201,205 ----
          }
  
!   e. M25P::
  
         interface {
***************
*** 225,231 ****
    c. Space allocation
  
!        This is similar to fdisk. Allocation of volumes can only occur
!        between calls to init() and commit(). init() wipes the volume
!        table clean and commit() writes out the volume table.
  
         interface FStorage {
--- 225,231 ----
    c. Space allocation
  
!      This is similar to fdisk. Allocation of volumes can only occur
!      between calls to init() and commit(). init() wipes the volume
!      table clean and commit() writes out the volume table::
  
         interface FStorage {
***************
*** 237,242 ****
         }
  
!        The mount interface is used to setup access to a specific
!        volume. 
  
         interface Mount {
--- 237,242 ----
         }
  
!      The mount interface is used to setup access to a specific
!      volume::
  
         interface Mount {
***************
*** 245,254 ****
         }
  
!        This interface is provided by the components implementing
!        BlockRead/Write, ConfigStorage, and LogRead/Write. This
!        interface is necessary for components to setup any required
!        metadata. For example, ConfigRead may need to know where to
!        read a specific configuration. LogWrite may need to search for
!        the current offset.
  
         interface VolumeInit {
--- 245,254 ----
         }
  
!      This interface is provided by the components implementing
!      BlockRead/Write, ConfigStorage, and LogRead/Write. This
!      interface is necessary for components to setup any required
!      metadata. For example, ConfigRead may need to know where to
!      read a specific configuration. LogWrite may need to search for
!      the current offset::
  
         interface VolumeInit {
***************
*** 257,261 ****
         }
  
!   d. Large object
  
         interface BlockWrite {
--- 257,261 ----
         }
  
!   d. Large object::
  
         interface BlockWrite {
***************
*** 281,285 ****
  
  
!   e. Small object
  
         interface ConfigStorage {
--- 281,285 ----
  
  
!   e. Small object::
  
         interface ConfigStorage {
***************
*** 294,298 ****
         }
  
!   f. Large sequential object
  
        interface LogWrite {
--- 294,298 ----
         }
  
!   f. Large sequential object::
  
        interface LogWrite {

Index: tep105.txt
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/teps/txt/tep105.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** tep105.txt	24 Jan 2005 07:13:06 -0000	1.2
--- tep105.txt	31 Jan 2005 23:09:57 -0000	1.3
***************
*** 1,5 ****
! ============================
  Link Layer Primitives in TinyOS
! ============================
  :TEP: 105
  :Group: Core Working Group
--- 1,5 ----
! ===============================
  Link Layer Primitives in TinyOS
! ===============================
  :TEP: 105
  :Group: Core Working Group
***************
*** 48,89 ****
       conditions in event-driven operations and buffer swapping
  
!   d. HPL for control
!      Chipcon CC1000 register-based radios:
!        read/write registers
!        interrupts and timer capture events (general I/O)
!      Chipcon CC2420 buffer-based radios:
!        read/write registers
!        read/write RAM
!        interrupts and timer capture events (general I/O)
  
! | interface HPLCC2420 {
! |   async command uint8_t cmd(uint8_t addr);
! |   async command uint8_t write(uint8_t addr, uint16_t data);
! |   async command uint16_t read(uint8_t addr);
! | }
! |
! | // a subset of the capture provided by the hardware
! | interface HPLCC2420Capture {
! |   async command result_t enableCapture(bool low_to_high);
! |   async event result_t captured(uint16_t val);
! |   async command result_t disable();
! | }
  
  
    e. HPL for data
!      Chipcon CC1000 register-based radios:
!        read/write byte
!      Chipcon CC2420 buffer-based radios:
!        read/write 128-byte FIFO
  
! | interface HPLCC2420FIFO {
! |   async command cc2420_result_t readRXFIFO(uint8_t length, uint8_t *data);
! |   async command cc2420_result_t writeTXFIFO(uint8_t length, uint8_t *data);
! |   async event result_t RXFIFODone(uint8_t length, uint8_t *data, cc2420_result_t success);
! |   async event result_t TXFIFODone(uint8_t length, uint8_t *data, cc2420_result_t success);
! | }
  
    f. The HPL interfaces reside in the radio's "chips" directory while
!      the underlying HPL implementations (*C, *M) reside in 
       a microcontroller or platform directory.
  
--- 48,96 ----
       conditions in event-driven operations and buffer swapping
  
!   d. HPL for control:
!        - Chipcon CC1000 register-based radios:
!          - read/write registers
!          - interrupts and timer capture events (general I/O)
!        - Chipcon CC2420 buffer-based radios:
!          - read/write registers
!          - read/write RAM
!          - interrupts and timer capture events (general I/O)
  
!     ::
! 
!       interface HPLCC2420
!       {
!         async command uint8_t cmd(uint8_t addr);
!         async command uint8_t write(uint8_t addr, uint16_t data);
!         async command uint16_t read(uint8_t addr);
!       }
!      
!       // a subset of the capture provided by the hardware
!       interface HPLCC2420Capture
!       {
!         async command result_t enableCapture(bool low_to_high);
!         async event result_t captured(uint16_t val);
!         async command result_t disable();
!       }
  
  
    e. HPL for data
!        - Chipcon CC1000 register-based radios:
!          - read/write byte
!        - Chipcon CC2420 buffer-based radios:
!          - read/write 128-byte FIFO
  
!      ::
! 
!        interface HPLCC2420FIFO
!        {
!          async command cc2420_result_t readRXFIFO(uint8_t length, uint8_t *data);
!          async command cc2420_result_t writeTXFIFO(uint8_t length, uint8_t *data);
!          async event result_t RXFIFODone(uint8_t length, uint8_t *data, cc2420_result_t success);
!          async event result_t TXFIFODone(uint8_t length, uint8_t *data, cc2420_result_t success);
!        }
  
    f. The HPL interfaces reside in the radio's "chips" directory while
!      the underlying HPL implementations (\*C, \*M) reside in 
       a microcontroller or platform directory.
  
***************
*** 99,103 ****
       (whether it be bit, byte, or packet), translations may occur
       on the data--coding, cryptography etc.
!        (see Figure 2 of RadioActive networks paper)
  
       This PHY/MAC split currently exists in TinyOS with 
--- 106,110 ----
       (whether it be bit, byte, or packet), translations may occur
       on the data--coding, cryptography etc.
!      (see Figure 2 of RadioActive networks paper)
  
       This PHY/MAC split currently exists in TinyOS with 
***************
*** 117,140 ****
       Additionally, the MAC provides control interfaces similar to B-MAC,
       including the ability to turn on or off CSMA, acks, and low power
!      listening.
  
! | interface CSMAControl
! | {
! |   async command result_t enableCCA();
! |   async command result_t disableCCA();
! |   async command result_t enableAck();
! |   async command result_t disableAck();
! |   async command TOSMsg* HaltTx();
! | }
  
       The units of the CSMA Backoff are *SYMBOL PERIODS* of the radio.
       See the RadioControl interface below to convert symbol periods into
!      normal time units.
  
! | interface CSMABackoff
! | {
! |   async event int16_t initial(TOSMsg* m);
! |   async event int16_t congestion(TOSMsg* m);
! | }
  
       Low Power Listening provides additional challenges as the notation
--- 124,147 ----
       Additionally, the MAC provides control interfaces similar to B-MAC,
       including the ability to turn on or off CSMA, acks, and low power
!      listening::
  
!        interface CSMAControl
!        {
!          async command result_t enableCCA();
!          async command result_t disableCCA();
!          async command result_t enableAck();
!          async command result_t disableAck();
!          async command TOSMsg* HaltTx();
!        }
  
       The units of the CSMA Backoff are *SYMBOL PERIODS* of the radio.
       See the RadioControl interface below to convert symbol periods into
!      normal time units::
  
!        interface CSMABackoff
!        {
!          async event int16_t initial(TOSMsg* m);
!          async event int16_t congestion(TOSMsg* m);
!        }
  
       Low Power Listening provides additional challenges as the notation
***************
*** 143,157 ****
       preamble is used for LPL.  On the CC2420, cyclical packets must be
       used for LPL (due to the HW constraints, long preambles are not an
!      option).  A proposal:
  
! | interface LowPowerListening
! | {
! |   async command result_t SetMode(lpl_mode_t mode);
! |   async command lpl_mode_t GetMode();
! |   async command result_t SetListeningMode(lpl_mode_t mode);
! |   async command lpl_mode_t GetListeningMode();
! |   async command result_t SetTransmitMode(lpl_mode_t mode);
! |   async command lpl_mode_t GetTransmitMode();
! | }
  
       The lpl_mode_t values are mapped by the specific radio implementation
--- 150,164 ----
       preamble is used for LPL.  On the CC2420, cyclical packets must be
       used for LPL (due to the HW constraints, long preambles are not an
!      option).  A proposal::
  
!         interface LowPowerListening
!         {
!           async command result_t SetMode(lpl_mode_t mode);
!           async command lpl_mode_t GetMode();
!           async command result_t SetListeningMode(lpl_mode_t mode);
!           async command lpl_mode_t GetListeningMode();
!           async command result_t SetTransmitMode(lpl_mode_t mode);
!           async command lpl_mode_t GetTransmitMode();
!         }
  
       The lpl_mode_t values are mapped by the specific radio implementation
***************
*** 161,173 ****
  
       Additional HAL-level interface for Low Power Listening in a radio
!      dependent manner
  
! | interface CC1000LowPowerListening
! | {
! |   async command result_t SetPreambleLength(uint16_t bytes);
! |   async command uint16_t GetPreambleLength();
! |   async command result_t SetCheckInterval(uint16_t ms);
! |   async command uint16_t GetCheckInterval();
! | }
  
       The "mode" options provide a level of abstraction above the 
--- 168,180 ----
  
       Additional HAL-level interface for Low Power Listening in a radio
!      dependent manner::
  
!         interface CC1000LowPowerListening
!         {
!           async command result_t SetPreambleLength(uint16_t bytes);
!           async command uint16_t GetPreambleLength();
!           async command result_t SetCheckInterval(uint16_t ms);
!           async command uint16_t GetCheckInterval();
!         }
  
       The "mode" options provide a level of abstraction above the 
***************
*** 183,203 ****
       delimiter.  The time value is always a 32768Hz 16-bit value .
       CC1000RadioTimeStamping is an example of an expanded time HAL interface
!      specific to the CC1000 radio.
  
! | interface RadioTimeStamping
! | {
! |   async event void SFD(uint16_t time, TOSMsg* msgBuff);
! | }
  
       Each platform may be able to provide more information than just the
       SFD timestamp.  These platforms will have their own HAL interfaces
!      with additional time information.
  
! | interface CC1000RadioTimeStamping
! | {
! |   async event void startSymbol(uint8_t bitsPerBlock, uint8_t offset, TOSMsg* msgBuff);
! |   async event void byte(TOSMsg* msg, uint8_t byteCount);
! |   async event void blockTimer();
! | }
  
       The 16-bit "time" field of TOSMsg is the 16-bit 32768Hz timer value
--- 190,210 ----
       delimiter.  The time value is always a 32768Hz 16-bit value .
       CC1000RadioTimeStamping is an example of an expanded time HAL interface
!      specific to the CC1000 radio::
  
!         interface RadioTimeStamping
!         {
!           async event void SFD(uint16_t time, TOSMsg* msgBuff);
!         }
  
       Each platform may be able to provide more information than just the
       SFD timestamp.  These platforms will have their own HAL interfaces
!      with additional time information::
  
!         interface CC1000RadioTimeStamping
!         {
!           async event void startSymbol(uint8_t bitsPerBlock, uint8_t offset, TOSMsg* msgBuff);
!           async event void byte(TOSMsg* msg, uint8_t byteCount);
!           async event void blockTimer();
!         }
  
       The 16-bit "time" field of TOSMsg is the 16-bit 32768Hz timer value
***************
*** 217,238 ****
       Radio timing information, such as bit, byte, and symbol times are
       provided through the RadioControl interface.  See the RadioControl
!      interface defintion in tinyos-2.x/tos/interfaces
  
! | interface RadioControl
! | {
! |   command result_t SetRFChannel(uint8_t channel);
! |   command uint8_t GetRFChannel();
! |   command uint8_t GetMaxChannels();
! | 
! |   command result_t SetRFPower(uint8_t power);	
! |   command uint8_t GetRFPower();
! | 
! |   command uint8_t RFtoDB(uint8_t power);
! |   command uint8_t DBtoRF(int8_t dbm);
! | 
! |   command uint16_t getTimeBit();
! |   command uint16_t getTimeByte();
! |   command uint16_t getTimeSymbol();
! | }
  
       The TOSMsg structure is created such that each radio implementation
--- 224,245 ----
       Radio timing information, such as bit, byte, and symbol times are
       provided through the RadioControl interface.  See the RadioControl
!      interface defintion in tinyos-2.x/tos/interfaces::
  
!         interface RadioControl
!         {
!           command result_t SetRFChannel(uint8_t channel);
!           command uint8_t GetRFChannel();
!           command uint8_t GetMaxChannels();
!         
!           command result_t SetRFPower(uint8_t power);
!           command uint8_t GetRFPower();
!         
!           command uint8_t RFtoDB(uint8_t power);
!           command uint8_t DBtoRF(int8_t dbm);
!         
!           command uint16_t getTimeBit();
!           command uint16_t getTimeByte();
!           command uint16_t getTimeSymbol();
!         }
  
       The TOSMsg structure is created such that each radio implementation
***************
*** 242,264 ****
       Platform indpendent services use RadioPacket to access common
       message fields; whereas platform dependent services directly
!      access the TOSMsg fields as defined by that radio implementation.
  
! | interface RadioPacket
! | {
! |   command uint8_t getLength(TOSMsg* msg);
! |   command result_t setLength(TOSMsg* msg, uint8_t length);
! | 
! |   command uint8_t* getData(TOSMsg* msg);
! | 
! |   command uint16_t getAddress(TOSMsg* msg);
! |   command result_t setAddress(TOSMsg* msg, uint16_t addr);
! | 
! |   command uint16_t getGroup(TOSMsg* msg);
! |   command result_t setGroup(TOSMsg* msg, uint16_t group);
! | 
! |   command uint16_t getTime(TOSMsg* msg);
! | 
! |   command bool isAck(TOSMsg* msg);
! | }
  
       The radio interfaces come together in the new RadioC module.
--- 249,271 ----
       Platform indpendent services use RadioPacket to access common
       message fields; whereas platform dependent services directly
!      access the TOSMsg fields as defined by that radio implementation::
  
!         interface RadioPacket
!         {
!           command uint8_t getLength(TOSMsg* msg);
!           command result_t setLength(TOSMsg* msg, uint8_t length);
!         
!           command uint8_t* getData(TOSMsg* msg);
!         
!           command uint16_t getAddress(TOSMsg* msg);
!           command result_t setAddress(TOSMsg* msg, uint16_t addr);
!         
!           command uint16_t getGroup(TOSMsg* msg);
!           command result_t setGroup(TOSMsg* msg, uint16_t group);
!         
!           command uint16_t getTime(TOSMsg* msg);
!         
!           command bool isAck(TOSMsg* msg);
!         }
  
       The radio interfaces come together in the new RadioC module.
***************
*** 269,295 ****
       fallback for cross-platform application development.
       The configurations look like the following, such as
!      in tos/chips/CC2420:
  
! | configuration RadioC {
! |  provides {
! |     // split phase startup and shutdown of the radio
! |     interface SplitControl;
! |     // change frequency, power, etc.
! |     interface RadioControl;
! |     // send a message
! |     interface Send;
! |     // receive a message
! |     interface Receive;
! |   }
! | }
! | implementation
! | {
! |   components CSMARadioC as CC2420RadioC;
! | 
! |   SplitControl = CC2420RadioC;
! |   RadioControl = CC2420RadioC;
! |   Send = CC2420RadioC;
! |   Receive = CC2420RadioC;
! | }
  
       Then, if the radio supports CSMA, it also provides a
--- 276,304 ----
       fallback for cross-platform application development.
       The configurations look like the following, such as
!      in tos/chips/CC2420::
  
!         configuration RadioC 
!         {
!           provides 
!           {
!             // split phase startup and shutdown of the radio
!             interface SplitControl;
!             // change frequency, power, etc.
!             interface RadioControl;
!             // send a message
!             interface Send;
!             // receive a message
!             interface Receive;
!           }
!         }
!         implementation
!         {
!           components CSMARadioC as CC2420RadioC;
!         
!           SplitControl = CC2420RadioC;
!           RadioControl = CC2420RadioC;
!           Send = CC2420RadioC;
!           Receive = CC2420RadioC;
!         }
  
       Then, if the radio supports CSMA, it also provides a
***************
*** 297,324 ****
       radio-agnostic, and CSMARadioC if they wish to use the CSMA
       control functionality but restrict their service's portability
!      to CSMA radios.
  
! | configuration CSMARadioC {
! |   provides {
! |     // split phase startup and shutdown of the radio
! |     interface SplitControl;
! |     // change frequency, power, etc.
! |     interface RadioControl;
! |     // send a message
! |     interface Send;
! |     // receive a message
! |     interface ReceiveMsg as Receive;
! | 
! |     // enable/disable csma, acks
! |     interface CSMAControl;
! |     // change the backoff on a per-packet basis
! |     interface CSMABackoff;
! |     // duty cycle the radio with preamble sampling
! |     interface LowPowerListening;
! |   }
! | }
! | implementation {
! |   components CC2420RadioM ...
! | }
  
  FUTURE WORK:
--- 306,335 ----
       radio-agnostic, and CSMARadioC if they wish to use the CSMA
       control functionality but restrict their service's portability
!      to CSMA radios::
  
!         configuration CSMARadioC
!         {
!           provides 
!           {
!             // split phase startup and shutdown of the radio
!             interface SplitControl;
!             // change frequency, power, etc.
!             interface RadioControl;
!             // send a message
!             interface Send;
!             // receive a message
!             interface ReceiveMsg as Receive;
!         
!             // enable/disable csma, acks
!             interface CSMAControl;
!             // change the backoff on a per-packet basis
!             interface CSMABackoff;
!             // duty cycle the radio with preamble sampling
!             interface LowPowerListening;
!           }
!         }
!         implementation {
!           components CC2420RadioM ...
!         }
  
  FUTURE WORK:



More information about the Tinyos-beta-commits mailing list