#include "Timer.h"
#include "MultihopOscilloscope.h"
-module MultihopOscilloscopeC {
+module MultihopOscilloscopeC @safe(){
uses {
// Interfaces for initialization:
interface Boot;
oscilloscope_t* in = (oscilloscope_t*)payload;
oscilloscope_t* out;
if (uartbusy == FALSE) {
- out = (oscilloscope_t*)call SerialSend.getPayload(&uartbuf);
- if (len != sizeof(oscilloscope_t)) {
+ out = (oscilloscope_t*)call SerialSend.getPayload(&uartbuf, sizeof(oscilloscope_t));
+ if (len != sizeof(oscilloscope_t) || out == NULL) {
return msg;
}
else {
return msg;
}
- //Prepare message to be sent over the uart
- out = (oscilloscope_t*)call SerialSend.getPayload(newmsg);
+ //Serial port busy, so enqueue.
+ out = (oscilloscope_t*)call SerialSend.getPayload(newmsg, sizeof(oscilloscope_t));
+ if (out == NULL) {
+ return msg;
+ }
memcpy(out, in, sizeof(oscilloscope_t));
if (call UARTQueue.enqueue(newmsg) != SUCCESS) {
event void Timer.fired() {
if (reading == NREADINGS) {
if (!sendbusy) {
- oscilloscope_t *o = (oscilloscope_t *)call Send.getPayload(&sendbuf);
+ oscilloscope_t *o = (oscilloscope_t *)call Send.getPayload(&sendbuf, sizeof(oscilloscope_t));
+ if (o == NULL) {
+ fatal_problem();
+ return;
+ }
memcpy(o, &local, sizeof(local));
if (call Send.send(&sendbuf, sizeof(local)) == SUCCESS)
sendbusy = TRUE;