]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/tests/storage/Log/RandRWC.nc
Shouldn't fail when you reach the end of the log. Sync instead.
[tinyos-2.x.git] / apps / tests / storage / Log / RandRWC.nc
index ab762de78271413ce077fd68c188132b22340187..7a79e132a96bf34803c8129c402826a85e630814 100644 (file)
@@ -62,14 +62,18 @@ implementation {
   int count, testCount;
   uint32_t len;
   uint16_t offset;
-  message_t reportmsg;
+  message_t reportMsg;
 
   void report(error_t e) {
-    uint8_t *msg = call AMSend.getPayload(&reportmsg);
+    uint8_t *msg = call AMSend.getPayload(&reportMsg, 1);
 
-    msg[0] = e;
-    if (call AMSend.send(AM_BROADCAST_ADDR, &reportmsg, 1) != SUCCESS)
-      call Leds.led0On();
+    if (msg)
+      {
+       msg[0] = e;
+       if (call AMSend.send(AM_BROADCAST_ADDR, &reportMsg, 1) == SUCCESS)
+         return;
+      }
+    call Leds.led0On();
   }
 
   event void AMSend.sendDone(message_t* msg, error_t error) {
@@ -99,6 +103,8 @@ implementation {
     return b;
   }
 
+  volatile int x;
+
   void setParameters() {
     len = rand() >> 8;
     offset = rand() >> 9;
@@ -132,13 +138,23 @@ implementation {
       scheck(call LogWrite.sync());
     else
       {
+       error_t result;
        setParameters();
-       scheck(call LogWrite.append(data + offset, len));
+       result = call LogWrite.append(data + offset, len);
+       if (result == ESIZE) {
+         // We have reached the end of the log, sync it
+         scheck(call LogWrite.sync());
+       }
+       else {
+         scheck(result);
+       }
       }
   }
 
   event void LogWrite.appendDone(void *buf, storage_len_t y, bool recordsLost, error_t result) {
-    if (scheck(result))
+    if (result == ESIZE)
+      scheck(call LogWrite.sync());
+    else if (scheck(result))
       nextWrite();
   }