*
*/
-module Atm128SpiP {
+module Atm128SpiP @safe() {
provides {
interface Init;
interface SpiByte;
}
}
implementation {
- uint8_t* txBuffer;
- uint8_t* rxBuffer;
uint16_t len;
+ uint8_t* COUNT_NOK(len) txBuffer;
+ uint8_t* COUNT_NOK(len) rxBuffer;
uint16_t pos;
enum {
error_t sendNextPart() {
uint16_t end;
uint16_t tmpPos;
- uint8_t* tx;
- uint8_t* rx;
+ uint16_t myLen;
+ uint8_t* COUNT_NOK(myLen) tx;
+ uint8_t* COUNT_NOK(myLen) rx;
atomic {
+ myLen = len;
tx = txBuffer;
rx = rxBuffer;
tmpPos = pos;
task void zeroTask() {
- uint8_t* rx;
- uint8_t* tx;
uint16_t myLen;
+ uint8_t* COUNT_NOK(myLen) rx;
+ uint8_t* COUNT_NOK(myLen) tx;
+
atomic {
+ myLen = len;
rx = rxBuffer;
tx = txBuffer;
- myLen = len;
rxBuffer = NULL;
txBuffer = NULL;
len = 0;
uint16_t bufLen) {
uint8_t discard;
atomic {
+ len = bufLen;
txBuffer = writeBuf;
rxBuffer = readBuf;
- len = bufLen;
pos = 0;
}
if (bufLen > 0) {
sendNextPart();
}
else {
- uint8_t* rx;
- uint8_t* tx;
- uint16_t myLen;
uint8_t discard;
+ uint16_t myLen;
+ uint8_t* COUNT_NOK(myLen) rx;
+ uint8_t* COUNT_NOK(myLen) tx;
atomic {
+ myLen = len;
rx = rxBuffer;
tx = txBuffer;
- myLen = len;
rxBuffer = NULL;
txBuffer = NULL;
len = 0;