message_t* rxBufPtr;
message_t rxBuf;
- /* packet vars */
- uint8_t seqNo; // for later use ...
-
/* state vars */
error_t splitStateError; // state of SplitControl interfaces
bool rxBusy; // blocks an incoming packet if the rxBuffer is in use
atomic {
rxBufPtr = &rxBuf;
txBufPtr = 0;
- seqNo = 0;
splitStateError = EOFF;
rxBusy = FALSE;
}
}
command error_t Send.send(message_t *msg, uint8_t len) {
- ++seqNo; // where to put?
- return call SendDown.send(msg, len);
+ if(getMetadata(msg)->ack != NO_ACK_REQUESTED) {
+ // ensure reasonable value
+ getMetadata(msg)->ack = ACK_REQUESTED;
+ }
+ return call SendDown.send(msg, len);
}
command error_t Send.cancel(message_t* msg) {
return call Packet.maxPayloadLength();
}
- command void* Send.getPayload(message_t* msg) {
- return call Packet.getPayload(msg, (uint8_t*) (call Packet.payloadLength(msg)) );
+ command void* Send.getPayload(message_t* msg, uint8_t len) {
+ return call Packet.getPayload(msg, len);
}
async event void SendDown.sendDone(message_t* msg, error_t error) {
message_t* tmpMsgPtr;
atomic {
len = call Packet.payloadLength(rxBufPtr);
- payload = call Packet.getPayload(rxBufPtr, &len);
+ payload = call Packet.getPayload(rxBufPtr, len);
tmpMsgPtr = rxBufPtr;
}
tmpMsgPtr = signal Receive.receive(tmpMsgPtr, payload , len);
atomic {
if (rxBusy) {
msgPtr = msg;
- } else {
+ }
+ else {
rxBusy = TRUE;
msgPtr = rxBufPtr;
rxBufPtr = msg;
}
return msgPtr;
}
-
- command void* Receive.getPayload(message_t* msg, uint8_t* len) {
- return call Packet.getPayload(msg, len);
- }
- command uint8_t Receive.payloadLength(message_t* msg) {
- return call Packet.payloadLength(msg);
- }
/*************** default events ***********/