]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/at45db/HplAt45dbByteC.nc
turn on safe compilation for some modules
[tinyos-2.x.git] / tos / chips / at45db / HplAt45dbByteC.nc
index c83251c74ba84c20c986e2e518b04cd664d20b2c..46f0a52081345c04e5fb38653cce9e331dc58588 100644 (file)
@@ -22,7 +22,7 @@
  * @author David Gay
  */
 
-generic module HplAt45dbByteC(int sectorSizeLog2) {
+generic module HplAt45dbByteC(int sectorSizeLog2) @safe() {
   provides interface HplAt45db;
   uses {
     interface Resource;
@@ -47,9 +47,9 @@ implementation
     P_ERASE
   };
   uint8_t status = P_IDLE;
-  uint8_t flashCmd[4];
-  uint8_t *data;
+  uint8_t flashCmd[9];
   at45pageoffset_t dataCount;
+  uint8_t * COUNT_NOK(dataCount) data;
   uint8_t dontCare;
 
   void complete(uint16_t crc) {
@@ -84,10 +84,8 @@ implementation
   }
 
   void requestFlashStatus() {
-    uint8_t dummy;
-
     call HplAt45dbByte.select();
-    call FlashSpi.write(AT45_C_REQ_STATUS, &dummy);
+    call FlashSpi.write(AT45_C_REQ_STATUS);
     call HplAt45dbByte.waitIdle();
   }
 
@@ -151,7 +149,7 @@ implementation
            else /* P_COMMAND */
              break;
        
-           call FlashSpi.write(out, &in);
+           in = call FlashSpi.write(out);
          }
        call HplAt45dbByte.deselect();
       }
@@ -174,7 +172,7 @@ implementation
 
   void execCommand(uint8_t op, uint8_t reqCmd, uint8_t reqDontCare,
                   at45page_t reqPage, at45pageoffset_t reqOffset,
-                  uint8_t *reqData, at45pageoffset_t reqCount) {
+                  uint8_t * COUNT_NOK(reqCount) reqData, at45pageoffset_t reqCount) {
     status = op;
 
     // page (2 bytes) and highest bit of offset
@@ -182,8 +180,9 @@ implementation
     flashCmd[1] = reqPage >> (16 - sectorSizeLog2);
     flashCmd[2] = reqPage << (sectorSizeLog2 - 8) | reqOffset >> 8;
     flashCmd[3] = reqOffset; // low-order 8 bits
-    data = reqData;
+    data = NULL;
     dataCount = reqCount;
+    data = reqData;
     dontCare = reqDontCare;
 
     call Resource.request();
@@ -246,7 +245,7 @@ implementation
                             at45page_t page, at45pageoffset_t offset,
                             at45pageoffset_t count,
                             uint16_t baseCrc) {
-    execCommand(P_READ_CRC, cmd, 2, page, offset, (uint8_t *)baseCrc, count);
+    execCommand(P_READ_CRC, cmd, 2, page, offset, TCAST(uint8_t * COUNT(count), baseCrc), count);
   }
 
   command void HplAt45db.write(uint8_t cmd,