* @author Razvan Musaloiu-E. <razvanm@cs.jhu.edu>
*/
+#include "imgNum2volumeId.h"
+
generic module FlashVolumeManagerP()
{
uses {
interface BlockRead[uint8_t imgNum];
interface BlockWrite[uint8_t imgNum];
- interface Resource[uint8_t imgNum];
+ interface Resource;
interface ArbiterInfo;
interface AMSend as SerialAMSender;
interface Receive as SerialAMReceiver;
nx_uint16_t nodeid;
};
- uint8_t imgNum2volumeId[] = {
- VOLUME_GOLDENIMAGE,
- VOLUME_DELUGE1,
- VOLUME_DELUGE2,
- VOLUME_DELUGE3
- };
-
void sendReply(error_t error, storage_len_t len)
{
SerialReplyPacket *reply = (SerialReplyPacket *)call SerialAMSender.getPayload(&serialMsg, sizeof(SerialReplyPacket));
}
// Converts the image number that the user wants to the real image number
- imgNum = imgNum2volumeId[request->imgNum];
+ imgNum = imgNum2volumeId(request->imgNum);
- if (imgNum != 0xFF) {
+ if (imgNum != NON_DELUGE_VOLUME) {
error = SUCCESS;
// We ask for a reservation only for erase and write.
switch (request->cmd) {
case CMD_ERASE:
case CMD_WRITE:
- if (!call Resource.isOwner[imgNum]()) {
- error = call Resource.immediateRequest[imgNum]();
+ if (!call Resource.isOwner()) {
+ error = call Resource.immediateRequest();
}
}
if (error == SUCCESS) {
event void TimeoutTimer.fired()
{
// Release the resource.
- if (state == S_IDLE && call Resource.isOwner[currentImgNum]()) {
- call Leds.led1Off();
- call Resource.release[currentImgNum]();
+ if (state == S_IDLE && call Resource.isOwner()) {
+ call Resource.release();
}
- if (state == S_IDLE && !call ArbiterInfo.inUse()) {
+ if (state == S_IDLE) {
call Leds.led1Off();
}
}
event void SerialAMSender.sendDone(message_t* msg, error_t error) {}
- event void Resource.granted[uint8_t imgNum]() {}
+ event void Resource.granted() {}
default command error_t BlockWrite.write[uint8_t imgNum](storage_addr_t addr, void* buf, storage_len_t len) { return FAIL; }
default command error_t BlockWrite.erase[uint8_t imgNum]() { return FAIL; }
default command error_t BlockRead.read[uint8_t imgNum](storage_addr_t addr, void* buf, storage_len_t len) { return FAIL; }
default command error_t BlockRead.computeCrc[uint8_t imgNum](storage_addr_t addr, storage_len_t len, uint16_t crc) { return FAIL; }
- default async command error_t Resource.immediateRequest[uint8_t imgNum]() { return FAIL; }
- default async command error_t Resource.release[uint8_t imgNum]() { return FAIL; }
- default async command bool Resource.isOwner[uint8_t imgNum]() { return FAIL; }
+ default async command error_t Resource.immediateRequest() { return FAIL; }
+ default async command error_t Resource.release() { return FAIL; }
+ default async command bool Resource.isOwner() { return FAIL; }
}