CFLAGS=-DBLINK_REVERSE\ -DDELUGE_BASESTATION make ${PLATFORM}
echo ========= Upload the new image to the external flash of the last mote ==========
-${TOS_DELUGE} ${PORT} ${PLATFORM} -i 0 build/${PLATFORM}/tos_image.xml
+${TOS_DELUGE} ${PORT} ${PLATFORM} -i 1 build/${PLATFORM}/tos_image.xml
echo ' +-----------------------------------------------------+'
echo ' | |'
read
echo ============================= Start dissemination ==============================
-${TOS_DELUGE} ${PORT} ${PLATFORM} -d 0
+${TOS_DELUGE} ${PORT} ${PLATFORM} -d 1
echo ' +------------------------------------------------------------+'
echo ' | |'
read
echo ===================== Trigger the reboot in the new image ======================
-${TOS_DELUGE} ${PORT} ${PLATFORM} -r 0
+${TOS_DELUGE} ${PORT} ${PLATFORM} -r 1
echo ' +-------------------------------------------------------------+'
echo ' | |'
<volume_table>
- <volume name="DELUGE0" size="65536"/>
+ <volume name="GOLDENIMAGE" size="65536" base="0" />
<volume name="DELUGE1" size="65536"/>
+ <volume name="DELUGE2" size="65536"/>
+ <volume name="DELUGE3" size="65536"/>
</volume_table>
\ No newline at end of file
<volume_table>
- <volume name="DELUGE0" size="65536"/>
+ <volume name="GOLDENIMAGE" size="65536" base="983040" />
<volume name="DELUGE1" size="65536"/>
+ <volume name="DELUGE2" size="65536"/>
+ <volume name="DELUGE3" size="65536"/>
</volume_table>
\ No newline at end of file
<volume_table>
- <volume name="DELUGE0" size="65536"/>
+ <volume name="GOLDENIMAGE" size="65536" base="0" />
<volume name="DELUGE1" size="65536"/>
+ <volume name="DELUGE2" size="65536"/>
+ <volume name="DELUGE3" size="65536"/>
</volume_table>
\ No newline at end of file
<volume_table>
- <volume name="DELUGE0" size="65536"/>
+ <volume name="GOLDENIMAGE" size="65536" base="983040" />
<volume name="DELUGE1" size="65536"/>
+ <volume name="DELUGE2" size="65536"/>
+ <volume name="DELUGE3" size="65536"/>
</volume_table>
\ No newline at end of file
<volume_table>
- <volume name="DELUGE0" size="65536"/>
+ <volume name="GOLDENIMAGE" size="65536" base="0" />
<volume name="DELUGE1" size="65536"/>
+ <volume name="DELUGE2" size="65536"/>
+ <volume name="DELUGE3" size="65536"/>
</volume_table>
\ No newline at end of file
<volume_table>
- <volume name="DELUGE0" size="65536"/>
+ <volume name="GOLDENIMAGE" size="65536" base="983040" />
<volume name="DELUGE1" size="65536"/>
+ <volume name="DELUGE2" size="65536"/>
+ <volume name="DELUGE3" size="65536"/>
</volume_table>
\ No newline at end of file
enum {
DELUGE_INVALID_UID = 0xffffffff,
- DELUGE_NUM_VOLUMES = 2,
+ DELUGE_NUM_VOLUMES = 4,
};
typedef nx_struct DelugeDissemination {
DelugeP.DissNotify -> FlashVolumeManagerC.DissNotify;
DelugeP.ReprogNotify -> FlashVolumeManagerC.ReprogNotify;
- FlashVolumeManagerC.BlockRead[VOLUME_DELUGE0] -> DelugeStorageC.BlockRead[VOLUME_DELUGE0];
- FlashVolumeManagerC.BlockWrite[VOLUME_DELUGE0] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE0];
- FlashVolumeManagerC.DelugeStorage[VOLUME_DELUGE0] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE0];
+
+ FlashVolumeManagerC.BlockRead[VOLUME_GOLDENIMAGE] -> DelugeStorageC.BlockRead[VOLUME_GOLDENIMAGE];
+ FlashVolumeManagerC.BlockWrite[VOLUME_GOLDENIMAGE] -> DelugeStorageC.BlockWrite[VOLUME_GOLDENIMAGE];
+ FlashVolumeManagerC.DelugeStorage[VOLUME_GOLDENIMAGE] -> DelugeStorageC.DelugeStorage[VOLUME_GOLDENIMAGE];
+
FlashVolumeManagerC.BlockRead[VOLUME_DELUGE1] -> DelugeStorageC.BlockRead[VOLUME_DELUGE1];
FlashVolumeManagerC.BlockWrite[VOLUME_DELUGE1] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE1];
FlashVolumeManagerC.DelugeStorage[VOLUME_DELUGE1] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE1];
+
+ FlashVolumeManagerC.BlockRead[VOLUME_DELUGE2] -> DelugeStorageC.BlockRead[VOLUME_DELUGE2];
+ FlashVolumeManagerC.BlockWrite[VOLUME_DELUGE2] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE2];
+ FlashVolumeManagerC.DelugeStorage[VOLUME_DELUGE2] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE2];
+
+ FlashVolumeManagerC.BlockRead[VOLUME_DELUGE3] -> DelugeStorageC.BlockRead[VOLUME_DELUGE3];
+ FlashVolumeManagerC.BlockWrite[VOLUME_DELUGE3] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE3];
+ FlashVolumeManagerC.DelugeStorage[VOLUME_DELUGE3] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE3];
#endif
components ObjectTransferC;
- ObjectTransferC.BlockRead[VOLUME_DELUGE0] -> DelugeStorageC.BlockRead[VOLUME_DELUGE0];
- ObjectTransferC.BlockWrite[VOLUME_DELUGE0] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE0];
ObjectTransferC.BlockRead[VOLUME_DELUGE1] -> DelugeStorageC.BlockRead[VOLUME_DELUGE1];
ObjectTransferC.BlockWrite[VOLUME_DELUGE1] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE1];
+ ObjectTransferC.BlockRead[VOLUME_DELUGE2] -> DelugeStorageC.BlockRead[VOLUME_DELUGE2];
+ ObjectTransferC.BlockWrite[VOLUME_DELUGE2] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE2];
+ ObjectTransferC.BlockRead[VOLUME_DELUGE3] -> DelugeStorageC.BlockRead[VOLUME_DELUGE3];
+ ObjectTransferC.BlockWrite[VOLUME_DELUGE3] -> DelugeStorageC.BlockWrite[VOLUME_DELUGE3];
ObjectTransferC.Leds = Leds;
components new DisseminatorC(DelugeDissemination, 0xDE00), DisseminationC;
{
components DelugeStorageP;
- BlockRead[VOLUME_DELUGE0] = DelugeStorageP.BlockRead[VOLUME_DELUGE0];
- BlockWrite[VOLUME_DELUGE0] = DelugeStorageP.BlockWrite[VOLUME_DELUGE0];
+ BlockRead[VOLUME_GOLDENIMAGE] = DelugeStorageP.BlockRead[VOLUME_GOLDENIMAGE];
+ BlockWrite[VOLUME_GOLDENIMAGE] = DelugeStorageP.BlockWrite[VOLUME_GOLDENIMAGE];
BlockRead[VOLUME_DELUGE1] = DelugeStorageP.BlockRead[VOLUME_DELUGE1];
BlockWrite[VOLUME_DELUGE1] = DelugeStorageP.BlockWrite[VOLUME_DELUGE1];
+ BlockRead[VOLUME_DELUGE2] = DelugeStorageP.BlockRead[VOLUME_DELUGE2];
+ BlockWrite[VOLUME_DELUGE2] = DelugeStorageP.BlockWrite[VOLUME_DELUGE2];
+ BlockRead[VOLUME_DELUGE3] = DelugeStorageP.BlockRead[VOLUME_DELUGE3];
+ BlockWrite[VOLUME_DELUGE3] = DelugeStorageP.BlockWrite[VOLUME_DELUGE3];
DelugeMetadata = DelugeStorageP.DelugeMetadata;
+
+ components new BlockStorageC(VOLUME_GOLDENIMAGE) as BlockStorageC_Golden;
+ DelugeStorageP.SubBlockRead[VOLUME_GOLDENIMAGE] -> BlockStorageC_Golden;
+ DelugeStorageP.SubBlockWrite[VOLUME_GOLDENIMAGE] -> BlockStorageC_Golden;
- components new BlockStorageC(VOLUME_DELUGE0) as BlockStorageC_0;
components new BlockStorageC(VOLUME_DELUGE1) as BlockStorageC_1;
- DelugeStorageP.SubBlockRead[VOLUME_DELUGE0] -> BlockStorageC_0;
- DelugeStorageP.SubBlockWrite[VOLUME_DELUGE0] -> BlockStorageC_0;
DelugeStorageP.SubBlockRead[VOLUME_DELUGE1] -> BlockStorageC_1;
DelugeStorageP.SubBlockWrite[VOLUME_DELUGE1] -> BlockStorageC_1;
+
+ components new BlockStorageC(VOLUME_DELUGE2) as BlockStorageC_2;
+ DelugeStorageP.SubBlockRead[VOLUME_DELUGE2] -> BlockStorageC_2;
+ DelugeStorageP.SubBlockWrite[VOLUME_DELUGE2] -> BlockStorageC_2;
+
+ components new BlockStorageC(VOLUME_DELUGE3) as BlockStorageC_3;
+ DelugeStorageP.SubBlockRead[VOLUME_DELUGE3] -> BlockStorageC_3;
+ DelugeStorageP.SubBlockWrite[VOLUME_DELUGE3] -> BlockStorageC_3;
#if defined(PLATFORM_TELOSB)
- DelugeStorageP.StorageMap[VOLUME_DELUGE0] -> BlockStorageC_0;
+ DelugeStorageP.StorageMap[VOLUME_GOLDENIMAGE] -> BlockStorageC_Golden;
DelugeStorageP.StorageMap[VOLUME_DELUGE1] -> BlockStorageC_1;
+ DelugeStorageP.StorageMap[VOLUME_DELUGE2] -> BlockStorageC_2;
+ DelugeStorageP.StorageMap[VOLUME_DELUGE3] -> BlockStorageC_3;
#elif defined(PLATFORM_MICAZ)
components At45dbStorageManagerC;
- DelugeStorageP.At45dbVolume[VOLUME_DELUGE0] -> At45dbStorageManagerC.At45dbVolume[VOLUME_DELUGE0];
+ DelugeStorageP.At45dbVolume[VOLUME_GOLDENIMAGE] -> At45dbStorageManagerC.At45dbVolume[VOLUME_GOLDENIMAGE];
DelugeStorageP.At45dbVolume[VOLUME_DELUGE1] -> At45dbStorageManagerC.At45dbVolume[VOLUME_DELUGE1];
+ DelugeStorageP.At45dbVolume[VOLUME_DELUGE2] -> At45dbStorageManagerC.At45dbVolume[VOLUME_DELUGE2];
+ DelugeStorageP.At45dbVolume[VOLUME_DELUGE3] -> At45dbStorageManagerC.At45dbVolume[VOLUME_DELUGE3];
#else
#error "Target platform is not currently supported by Deluge T2"
#endif
- DelugeStorage[VOLUME_DELUGE0] = DelugeStorageP.DelugeStorage[VOLUME_DELUGE0];
+ DelugeStorage[VOLUME_GOLDENIMAGE] = DelugeStorageP.DelugeStorage[VOLUME_GOLDENIMAGE];
DelugeStorage[VOLUME_DELUGE1] = DelugeStorageP.DelugeStorage[VOLUME_DELUGE1];
+ DelugeStorage[VOLUME_DELUGE2] = DelugeStorageP.DelugeStorage[VOLUME_DELUGE2];
+ DelugeStorage[VOLUME_DELUGE3] = DelugeStorageP.DelugeStorage[VOLUME_DELUGE3];
components LedsC, MainC;
DelugeStorageP.Leds -> LedsC;
new FlashVolumeManagerP(),
NoLedsC, LedsC;
- FlashVolumeManagerP.BlockRead[VOLUME_DELUGE0] = BlockRead[VOLUME_DELUGE0];
- FlashVolumeManagerP.BlockWrite[VOLUME_DELUGE0] = BlockWrite[VOLUME_DELUGE0];
+ FlashVolumeManagerP.BlockRead[VOLUME_GOLDENIMAGE] = BlockRead[VOLUME_GOLDENIMAGE];
+ FlashVolumeManagerP.BlockWrite[VOLUME_GOLDENIMAGE] = BlockWrite[VOLUME_GOLDENIMAGE];
FlashVolumeManagerP.BlockRead[VOLUME_DELUGE1] = BlockRead[VOLUME_DELUGE1];
FlashVolumeManagerP.BlockWrite[VOLUME_DELUGE1] = BlockWrite[VOLUME_DELUGE1];
+ FlashVolumeManagerP.BlockRead[VOLUME_DELUGE2] = BlockRead[VOLUME_DELUGE2];
+ FlashVolumeManagerP.BlockWrite[VOLUME_DELUGE2] = BlockWrite[VOLUME_DELUGE2];
+ FlashVolumeManagerP.BlockRead[VOLUME_DELUGE3] = BlockRead[VOLUME_DELUGE3];
+ FlashVolumeManagerP.BlockWrite[VOLUME_DELUGE3] = BlockWrite[VOLUME_DELUGE3];
+
FlashVolumeManagerP.SerialAMSender -> SerialAMSenderC;
FlashVolumeManagerP.SerialAMReceiver -> SerialAMReceiverC;
FlashVolumeManagerP.Leds -> NoLedsC;
FlashVolumeManagerP.NetProg -> NetProgC;
FlashVolumeManagerP.Timer -> TimerMilliC;
- FlashVolumeManagerP.DelugeStorage[VOLUME_DELUGE0] = DelugeStorage[VOLUME_DELUGE0];
+ FlashVolumeManagerP.DelugeStorage[VOLUME_GOLDENIMAGE] = DelugeStorage[VOLUME_GOLDENIMAGE];
FlashVolumeManagerP.DelugeStorage[VOLUME_DELUGE1] = DelugeStorage[VOLUME_DELUGE1];
+ FlashVolumeManagerP.DelugeStorage[VOLUME_DELUGE2] = DelugeStorage[VOLUME_DELUGE2];
+ FlashVolumeManagerP.DelugeStorage[VOLUME_DELUGE3] = DelugeStorage[VOLUME_DELUGE3];
DissNotify = FlashVolumeManagerP.DissNotify;
ReprogNotify = FlashVolumeManagerP.ReprogNotify;
#endif
// Converts the image number that the user wants to the real image number
switch (srpkt->img_num) {
case 0:
- img_num = VOLUME_DELUGE0;
+ img_num = VOLUME_GOLDENIMAGE;
break;
case 1:
img_num = VOLUME_DELUGE1;
break;
+ case 2:
+ img_num = VOLUME_DELUGE2;
+ break;
+ case 3:
+ img_num = VOLUME_DELUGE3;
+ break;
}
if (img_num != 0xFF) {
components ObjectTransferP, DelugePageTransferC;
ObjectTransfer = ObjectTransferP;
- BlockRead[VOLUME_DELUGE0] = DelugePageTransferC.BlockRead[VOLUME_DELUGE0];
- BlockWrite[VOLUME_DELUGE0] = DelugePageTransferC.BlockWrite[VOLUME_DELUGE0];
BlockRead[VOLUME_DELUGE1] = DelugePageTransferC.BlockRead[VOLUME_DELUGE1];
BlockWrite[VOLUME_DELUGE1] = DelugePageTransferC.BlockWrite[VOLUME_DELUGE1];
+ BlockRead[VOLUME_DELUGE2] = DelugePageTransferC.BlockRead[VOLUME_DELUGE2];
+ BlockWrite[VOLUME_DELUGE2] = DelugePageTransferC.BlockWrite[VOLUME_DELUGE2];
+ BlockRead[VOLUME_DELUGE3] = DelugePageTransferC.BlockRead[VOLUME_DELUGE3];
+ BlockWrite[VOLUME_DELUGE3] = DelugePageTransferC.BlockWrite[VOLUME_DELUGE3];
ObjectTransferP.DelugePageTransfer -> DelugePageTransferC.DelugePageTransfer;
components CrcP;
DelugePageTransferC.AMPacket -> SendDataMsg;
DelugePageTransferC.Leds = Leds;
- ObjectTransferP.BlockWrite[VOLUME_DELUGE0] = BlockWrite[VOLUME_DELUGE0];
ObjectTransferP.BlockWrite[VOLUME_DELUGE1] = BlockWrite[VOLUME_DELUGE1];
+ ObjectTransferP.BlockWrite[VOLUME_DELUGE2] = BlockWrite[VOLUME_DELUGE2];
+ ObjectTransferP.BlockWrite[VOLUME_DELUGE3] = BlockWrite[VOLUME_DELUGE3];
components RandomC, new TimerMilliC() as Timer;
ObjectTransferP.Random -> RandomC;
NetProg = NetProgM;
MainC.SoftwareInit -> NetProgM.Init;
- NetProgM.DelugeStorage[VOLUME_DELUGE0] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE0];
+ NetProgM.DelugeStorage[VOLUME_GOLDENIMAGE] -> DelugeStorageC.DelugeStorage[VOLUME_GOLDENIMAGE];
NetProgM.DelugeStorage[VOLUME_DELUGE1] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE1];
+ NetProgM.DelugeStorage[VOLUME_DELUGE2] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE2];
+ NetProgM.DelugeStorage[VOLUME_DELUGE3] -> DelugeStorageC.DelugeStorage[VOLUME_DELUGE3];
NetProgM.DelugeMetadata -> DelugeStorageC;
NetProgM.IFlash -> IFlash;
NetProgM.Crc -> CrcP;