Thanks for the reply, I did figure it out after a while. I misread the code
initially. But for some reason the mote was reporting that the supply
voltage was too low and did not want to reboot. I thought that this was not
possible as the mote was plugged into a USB port. Until I physically
measured the voltage and found that it was indeed below the threshold
voltage. When run from batteries everything seems fine.


Leon



2009/6/11 Razvan Musaloiu-E. <[email protected]>

> Hi!
>
> On Fri, 8 May 2009, Leon Steenkamp wrote:
>
>  In tos\lib\net\Deluge\extra\NetProgM.nc there is the following:
>>
>> --<SNIP>--
>>  command error_t NetProg.programImageAndReboot(uint32_t imgAddr)
>>  {
>>   reprogramImgAddr = imgAddr;
>>   return call ReprogramGuard.okToProgram();
>>  }
>>
>>  event void ReprogramGuard.okToProgramDone(bool ok)
>>  {
>>   BootArgs bootArgs;
>>
>>   if (!ok) {
>>     // The voltage is too low. Nothing to do.
>>     return;
>>   }
>>
>>   atomic {
>>     call IFlash.read(TCAST(uint8_t*
>> COUNT(sizeof(bootArgs)),TOSBOOT_ARGS_ADDR), &bootArgs, sizeof(bootArgs));
>>
>>     bootArgs.imageAddr = reprogramImgAddr;
>>     bootArgs.gestureCount = 0xff;
>>     bootArgs.noReprogram = FALSE;
>>     bootArgs.address = TOS_NODE_ID;
>>
>>     call IFlash.write(TCAST(uint8_t*
>> COUNT(sizeof(bootArgs)),TOSBOOT_ARGS_ADDR), &bootArgs, sizeof(bootArgs));
>>
>>     // reboot
>>     netprog_reboot();
>>   }
>>  }
>> --<SNIP>--
>>
>> I am using TelosB platform and when NetProg.programImageAndReboot is
>> called
>> not much happens and I guess its because ReprogramGuard.okToProgram() is
>> called with no argument.
>>
>
> ReprogramGuard.okToProgram() is called without any argument because it's a
> split phase command. The response is the ReprogramGuard.okToProgramDone
> event. If the ok is false it means the battery voltage is too low so the
> mote will not reboot. There is another voltage check in the bootloader
> (tosboot) so if you ignore the ok and initiate a reboot the mote will not
> reprogram (and you can enter in a loop if you keep rebooting asking for a
> reprogramming).
>
> Sorry for delay. I didn't notice this message until now. :-(
> Razvan ME
>
>
>  And if (!ok) is always true.
>>
>> Am I missing something? or is there a problem with the code? I changed the
>> "if (!ok)" to "if (ok)", the node now reboots but it does not seem to be
>> reprogrammed.
>>
>> Leon
>>
>>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to