]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
safe tinyos annotations
authorregehr <regehr>
Tue, 3 Jun 2008 04:08:34 +0000 (04:08 +0000)
committerregehr <regehr>
Tue, 3 Jun 2008 04:08:34 +0000 (04:08 +0000)
tos/chips/cc1000/ByteRadio.nc
tos/chips/cc1000/CC1000ActiveMessageP.nc
tos/chips/cc1000/CC1000CsmaP.nc
tos/chips/cc1000/CC1000SendReceiveP.nc

index 713716cc710daf1a90d7943558d02e4bd7576883..6e610e0f40072fb938d062c1e73af8ae23cd552c 100644 (file)
@@ -22,7 +22,7 @@ interface ByteRadio
    * SendReceive wants to send a packet.
    * @param msg Message to be sent.
    */
-  event void rts(message_t *msg);
+  event void rts(message_t * ONE msg);
 
   /**
    * Access to the media granted. Start sending. SendReceive must signal
index 60a56d7a8e12807f497d552f83d17a851aa7a3de..bb3be23dd7526503856ecdcf0df03b60f2366942 100644 (file)
@@ -51,8 +51,8 @@ module CC1000ActiveMessageP {
 }
 implementation {
 
-  cc1000_header_t* getHeader(message_t* amsg) {
-    return (cc1000_header_t*)(amsg->data - sizeof(cc1000_header_t));
+  cc1000_header_t* ONE getHeader(message_t* ONE amsg) {
+    return TCAST(cc1000_header_t* ONE, (uint8_t*)amsg + offsetof(message_t, data) - sizeof(cc1000_header_t));
   }
 
   cc1000_footer_t *getFooter(message_t *amsg) {
index bf9af8fb1c8ba855a5ebc1649e271f324a34509d..b232d48394582ac125cf81340e426ec8df1fa18a 100644 (file)
@@ -107,8 +107,8 @@ implementation
 
   task void setWakeupTask();
 
-  cc1000_metadata_t *getMetadata(message_t *amsg) {
-    return (cc1000_metadata_t *)((uint8_t *)amsg->footer + sizeof(cc1000_footer_t));
+  cc1000_metadata_t * ONE getMetadata(message_t * ONE amsg) {
+    return TCAST(cc1000_metadata_t * ONE, (uint8_t*)amsg + offsetof(message_t, footer) + sizeof(cc1000_footer_t));
   }
   
   void enterIdleState() {
@@ -160,7 +160,7 @@ implementation
     call ByteRadio.off();
   }
 
-  void setPreambleLength(message_t *msg);
+  void setPreambleLength(message_t * ONE msg);
 
   /* Initialisation, startup and stopping */
   /*--------------------------------------*/
@@ -355,7 +355,7 @@ implementation
   /* CSMA */
   /*------*/
 
-  event void ByteRadio.rts(message_t *msg) {
+  event void ByteRadio.rts(message_t * ONE msg) {
     atomic
       {
        f.txPending = TRUE;
@@ -554,7 +554,7 @@ implementation
     return sleepToDuty(s);
   }
 
-  void setPreambleLength(message_t *msg) {
+  void setPreambleLength(message_t * ONE msg) {
     cc1000_metadata_t *meta = getMetadata(msg);
     uint16_t s;
     uint32_t plen;
index a4aec3989936334a092b3ae7dd5f1ccc412a8421..62ca40b0f2de6da1a943fb7d9f76427080646700 100644 (file)
@@ -122,26 +122,26 @@ implementation
 
   uint16_t rxShiftBuf;
   message_t rxBuf;
-  message_t *rxBufPtr = &rxBuf;
+  message_t * ONE rxBufPtr = &rxBuf;
 
   uint16_t preambleLength;
-  message_t *txBufPtr;
+  message_t * ONE_NOK txBufPtr;
   uint8_t nextTxByte;
 
   const_uint8_t ackCode[5] = { 0xab, ACK_BYTE1, ACK_BYTE2, 0xaa, 0xaa };
 
   /* Packet structure accessor functions. Note that everything is
    * relative to the data field. */
-  cc1000_header_t *getHeader(message_t *amsg) {
-    return (cc1000_header_t *)(amsg->data - sizeof(cc1000_header_t));
+  cc1000_header_t * ONE getHeader(message_t * ONE amsg) {
+    return TCAST(cc1000_header_t * ONE, (uint8_t *)amsg + offsetof(message_t, data) - sizeof(cc1000_header_t));
   }
 
-  cc1000_footer_t *getFooter(message_t *amsg) {
+  cc1000_footer_t *getFooter(message_t * ONE amsg) {
     return (cc1000_footer_t *)(amsg->footer);
   }
   
-  cc1000_metadata_t *getMetadata(message_t *amsg) {
-    return (cc1000_metadata_t *)((uint8_t *)amsg->footer + sizeof(cc1000_footer_t));
+  cc1000_metadata_t * ONE getMetadata(message_t * ONE amsg) {
+    return TCAST(cc1000_metadata_t * ONE, (uint8_t *)amsg + offsetof(message_t, footer) + sizeof(cc1000_footer_t));
   }
   
   /* State transition functions */
@@ -498,7 +498,7 @@ implementation
 
     rxShiftBuf = rxShiftBuf << 8 | in;
     nextByte = rxShiftBuf >> f.rxBitOffset;
-    ((uint8_t *)rxBufPtr)[count++] = nextByte;
+    ((uint8_t *COUNT(sizeof(message_t)))rxBufPtr)[count++] = nextByte;
 
     // Adjust rxLength to correspond to the corresponding offset in message_t
     rxLength += offsetof(message_t, data);
@@ -653,7 +653,7 @@ implementation
 
   command void* Packet.getPayload(message_t *msg, uint8_t len) {
     if (len <= TOSH_DATA_LENGTH) {
-      return (void*)msg->data;
+      return (void* COUNT_NOK(len))msg->data;
     }
     else {
       return NULL;