From 83ce21e0fe78d87c918df5acd17955749b99cfeb Mon Sep 17 00:00:00 2001 From: razvanm Date: Thu, 20 Dec 2007 02:31:39 +0000 Subject: [PATCH] Fix the Deluge rollback gesture and increase the total number of Deluge images to 4. The first one is considered to be the Golden Image. --- apps/tests/deluge/Blink/burn-net | 6 ++-- apps/tests/deluge/Blink/volumes-at45db.xml | 4 ++- apps/tests/deluge/Blink/volumes-stm25p.xml | 4 ++- .../deluge/GoldenImage/volumes-at45db.xml | 4 ++- .../deluge/GoldenImage/volumes-stm25p.xml | 4 ++- .../deluge/SerialBlink/volumes-at45db.xml | 4 ++- .../deluge/SerialBlink/volumes-stm25p.xml | 4 ++- tos/lib/net/Deluge/Deluge.h | 2 +- tos/lib/net/Deluge/DelugeC.nc | 22 +++++++++--- tos/lib/net/Deluge/DelugeStorageC.nc | 35 ++++++++++++++----- .../FlashVolumeManager/FlashVolumeManagerC.nc | 13 +++++-- .../FlashVolumeManager/FlashVolumeManagerP.nc | 8 ++++- tos/lib/net/Deluge/ObjectTransferC.nc | 9 +++-- tos/lib/net/Deluge/extra/NetProgC.nc | 4 ++- 14 files changed, 92 insertions(+), 31 deletions(-) diff --git a/apps/tests/deluge/Blink/burn-net b/apps/tests/deluge/Blink/burn-net index 64a19a17..26debcdc 100755 --- a/apps/tests/deluge/Blink/burn-net +++ b/apps/tests/deluge/Blink/burn-net @@ -65,7 +65,7 @@ echo ============================= Compile a new Blink ========================= 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 ' | |' @@ -80,7 +80,7 @@ echo ' +-----------------------------------------------------+' read echo ============================= Start dissemination ============================== -${TOS_DELUGE} ${PORT} ${PLATFORM} -d 0 +${TOS_DELUGE} ${PORT} ${PLATFORM} -d 1 echo ' +------------------------------------------------------------+' echo ' | |' @@ -96,7 +96,7 @@ echo ' +------------------------------------------------------------+' read echo ===================== Trigger the reboot in the new image ====================== -${TOS_DELUGE} ${PORT} ${PLATFORM} -r 0 +${TOS_DELUGE} ${PORT} ${PLATFORM} -r 1 echo ' +-------------------------------------------------------------+' echo ' | |' diff --git a/apps/tests/deluge/Blink/volumes-at45db.xml b/apps/tests/deluge/Blink/volumes-at45db.xml index afc864a7..8b22ebe4 100644 --- a/apps/tests/deluge/Blink/volumes-at45db.xml +++ b/apps/tests/deluge/Blink/volumes-at45db.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/apps/tests/deluge/Blink/volumes-stm25p.xml b/apps/tests/deluge/Blink/volumes-stm25p.xml index afc864a7..4210f08a 100644 --- a/apps/tests/deluge/Blink/volumes-stm25p.xml +++ b/apps/tests/deluge/Blink/volumes-stm25p.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/apps/tests/deluge/GoldenImage/volumes-at45db.xml b/apps/tests/deluge/GoldenImage/volumes-at45db.xml index afc864a7..8b22ebe4 100644 --- a/apps/tests/deluge/GoldenImage/volumes-at45db.xml +++ b/apps/tests/deluge/GoldenImage/volumes-at45db.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/apps/tests/deluge/GoldenImage/volumes-stm25p.xml b/apps/tests/deluge/GoldenImage/volumes-stm25p.xml index afc864a7..4210f08a 100644 --- a/apps/tests/deluge/GoldenImage/volumes-stm25p.xml +++ b/apps/tests/deluge/GoldenImage/volumes-stm25p.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/apps/tests/deluge/SerialBlink/volumes-at45db.xml b/apps/tests/deluge/SerialBlink/volumes-at45db.xml index afc864a7..8b22ebe4 100644 --- a/apps/tests/deluge/SerialBlink/volumes-at45db.xml +++ b/apps/tests/deluge/SerialBlink/volumes-at45db.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/apps/tests/deluge/SerialBlink/volumes-stm25p.xml b/apps/tests/deluge/SerialBlink/volumes-stm25p.xml index afc864a7..4210f08a 100644 --- a/apps/tests/deluge/SerialBlink/volumes-stm25p.xml +++ b/apps/tests/deluge/SerialBlink/volumes-stm25p.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/tos/lib/net/Deluge/Deluge.h b/tos/lib/net/Deluge/Deluge.h index 8a9f504f..b938e4ae 100644 --- a/tos/lib/net/Deluge/Deluge.h +++ b/tos/lib/net/Deluge/Deluge.h @@ -34,7 +34,7 @@ enum { DELUGE_INVALID_UID = 0xffffffff, - DELUGE_NUM_VOLUMES = 2, + DELUGE_NUM_VOLUMES = 4, }; typedef nx_struct DelugeDissemination { diff --git a/tos/lib/net/Deluge/DelugeC.nc b/tos/lib/net/Deluge/DelugeC.nc index 50adc25f..21a5320f 100644 --- a/tos/lib/net/Deluge/DelugeC.nc +++ b/tos/lib/net/Deluge/DelugeC.nc @@ -42,19 +42,31 @@ implementation 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; diff --git a/tos/lib/net/Deluge/DelugeStorageC.nc b/tos/lib/net/Deluge/DelugeStorageC.nc index f5adb54f..78d56ce3 100644 --- a/tos/lib/net/Deluge/DelugeStorageC.nc +++ b/tos/lib/net/Deluge/DelugeStorageC.nc @@ -42,32 +42,51 @@ implementation { 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; diff --git a/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerC.nc b/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerC.nc index d1f9fbe7..7ef0c385 100644 --- a/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerC.nc +++ b/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerC.nc @@ -49,10 +49,15 @@ implementation 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; @@ -62,8 +67,10 @@ implementation 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 diff --git a/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerP.nc b/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerP.nc index 5c03b0ab..bf29d2b3 100644 --- a/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerP.nc +++ b/tos/lib/net/Deluge/FlashVolumeManager/FlashVolumeManagerP.nc @@ -162,11 +162,17 @@ implementation // 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) { diff --git a/tos/lib/net/Deluge/ObjectTransferC.nc b/tos/lib/net/Deluge/ObjectTransferC.nc index b27fbcb7..03ace370 100644 --- a/tos/lib/net/Deluge/ObjectTransferC.nc +++ b/tos/lib/net/Deluge/ObjectTransferC.nc @@ -42,10 +42,12 @@ implementation 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; @@ -67,8 +69,9 @@ implementation 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; diff --git a/tos/lib/net/Deluge/extra/NetProgC.nc b/tos/lib/net/Deluge/extra/NetProgC.nc index ccbbf2a9..aeef0279 100644 --- a/tos/lib/net/Deluge/extra/NetProgC.nc +++ b/tos/lib/net/Deluge/extra/NetProgC.nc @@ -46,8 +46,10 @@ implementation { 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; -- 2.39.2