X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Fnet%2FDeluge%2FDelugeP.nc;h=01aad620ffc468b6a721478cb4b3d81a5730f707;hb=da393f0d6e7bca649d8d0ce0894cb1ad10ba4212;hp=d7312f12a9d31a5bf7fe039f62f5d06ae70f6286;hpb=54266a2025b5e1246459c8d625b96f3294362425;p=tinyos-2.x.git diff --git a/tos/lib/net/Deluge/DelugeP.nc b/tos/lib/net/Deluge/DelugeP.nc index d7312f12..01aad620 100644 --- a/tos/lib/net/Deluge/DelugeP.nc +++ b/tos/lib/net/Deluge/DelugeP.nc @@ -47,7 +47,9 @@ module DelugeP implementation { - //uint8_t img_num; + uint32_t recv_uid = 0xffffffff; + uint16_t recv_size = 0xffff; + uint8_t recv_imgNum = 0xff; /** * Starts the radio @@ -56,7 +58,7 @@ implementation { call RadioSplitControl.start(); } - + #ifdef DELUGE_BASESTATION /** * Starts disseminating image information @@ -104,14 +106,20 @@ implementation { const DelugeDissemination *delugeDis = call DisseminationValue.get(); DelugeImgDesc *imgDesc = call DelugeMetadata.getImgDesc(delugeDis->imgNum); - + switch (delugeDis->msg_type) { case DISSMSG_DISS: if (imgDesc->uid == delugeDis->uid && imgDesc->uid != DELUGE_INVALID_UID) { if (imgDesc->vNum < delugeDis->vNum) { + recv_uid = delugeDis->uid; + recv_size = delugeDis->size; + recv_imgNum = delugeDis->imgNum; call ObjectTransfer.receive(delugeDis->uid, delugeDis->size, delugeDis->imgNum); } } else { + recv_uid = delugeDis->uid; + recv_size = delugeDis->size; + recv_imgNum = delugeDis->imgNum; call ObjectTransfer.receive(delugeDis->uid, delugeDis->size, delugeDis->imgNum); } @@ -133,11 +141,7 @@ implementation event void ObjectTransfer.receiveDone(error_t error) { - //call ObjectTransfer.publish(imgDesc->uid, imgDesc->size, imgDesc->imgNum); - call ObjectTransfer.stop(); -// if (error == SUCCESS) { -// call NetProg.programImgAndReboot(img_num); -// } + call ObjectTransfer.publish(recv_uid, recv_size, recv_imgNum); } /** @@ -146,17 +150,6 @@ implementation event void RadioSplitControl.startDone(error_t error) { if (error == SUCCESS) { -// // Start publishing the current image -// DelugeImgDesc *imgDesc; -// DelugeNodeDesc nodeDesc; -// call IFlash.read((uint8_t*)IFLASH_NODE_DESC_ADDR, -// &nodeDesc, -// sizeof(DelugeNodeDesc)); // Reads which image was just reprogrammed -// imgDesc = call DelugeMetadata.getImgDesc(nodeDesc.imgNum); -// if (nodeDesc.uid == imgDesc->uid && imgDesc->uid != DELUGE_INVALID_UID) { -// call ObjectTransfer.publish(imgDesc->uid, imgDesc->size, imgDesc->imgNum); -// } - call StdControlDissemination.start(); } }