initial publish

Dependencies:   mbed-rtos mbed

Committer:
boddeke
Date:
Thu Jun 02 11:44:51 2016 +0000
Revision:
1:f5b145be9d8e
Parent:
0:31e47b639d0f
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
boddeke 0:31e47b639d0f 1 #include "mbed.h"
boddeke 0:31e47b639d0f 2 #include "rtos.h"
boddeke 0:31e47b639d0f 3 #include <string>
boddeke 0:31e47b639d0f 4 #include <vector>
boddeke 0:31e47b639d0f 5 #include "payload.h"
boddeke 0:31e47b639d0f 6 #include "Ticker.h"
boddeke 0:31e47b639d0f 7
boddeke 0:31e47b639d0f 8 // RTOS needs RawSerial (and not Serial)
boddeke 0:31e47b639d0f 9 RawSerial pc(USBTX,USBRX);
boddeke 0:31e47b639d0f 10 Ticker sender_ticker;
boddeke 0:31e47b639d0f 11 std::vector<uint8_t> data_to_send(sizeof(Payload));
boddeke 0:31e47b639d0f 12
boddeke 0:31e47b639d0f 13 #define SEND_INTERVAL 0.5
boddeke 0:31e47b639d0f 14 #define UPDATE_INTERVAL 1
boddeke 0:31e47b639d0f 15
boddeke 0:31e47b639d0f 16 void sender(void) {
boddeke 0:31e47b639d0f 17
boddeke 0:31e47b639d0f 18 pc.printf("---- checking changes: ");
boddeke 0:31e47b639d0f 19
boddeke 1:f5b145be9d8e 20 // carefull... do not use if(hasChanges())
boddeke 0:31e47b639d0f 21 int changes = hasChanges();
boddeke 0:31e47b639d0f 22
boddeke 0:31e47b639d0f 23 if(changes) {
boddeke 0:31e47b639d0f 24
boddeke 0:31e47b639d0f 25 getDataAndUpdate(&data_to_send);
boddeke 0:31e47b639d0f 26
boddeke 0:31e47b639d0f 27 pc.printf("sending: ");
boddeke 0:31e47b639d0f 28 for(int i=0;i<sizeof(Payload);i++) {
boddeke 0:31e47b639d0f 29 pc.printf("%02x",(unsigned int)data_to_send.at(i));
boddeke 0:31e47b639d0f 30 }
boddeke 0:31e47b639d0f 31 } else {
boddeke 0:31e47b639d0f 32 pc.printf("no change");
boddeke 0:31e47b639d0f 33 }
boddeke 0:31e47b639d0f 34 pc.printf("\r\n");
boddeke 0:31e47b639d0f 35 }
boddeke 0:31e47b639d0f 36
boddeke 0:31e47b639d0f 37 int main() {
boddeke 0:31e47b639d0f 38
boddeke 0:31e47b639d0f 39 unsigned char battery_level = 255;
boddeke 0:31e47b639d0f 40
boddeke 0:31e47b639d0f 41 pc.baud(115200);
boddeke 0:31e47b639d0f 42 pc.printf("\r\n\r\n********************************\r\n");
boddeke 0:31e47b639d0f 43 pc.printf( "* *\r\n");
boddeke 0:31e47b639d0f 44 pc.printf( "* Edge Payload Test *\r\n");
boddeke 0:31e47b639d0f 45 pc.printf( "* *\r\n");
boddeke 0:31e47b639d0f 46 pc.printf( "* Build: " __DATE__ ", " __TIME__" *\r\n");
boddeke 0:31e47b639d0f 47 pc.printf( "********************************\r\n\r\n");
boddeke 0:31e47b639d0f 48
boddeke 1:f5b145be9d8e 49 pc.printf("sizeof(char) = %d\r\n",sizeof(char));
boddeke 1:f5b145be9d8e 50 pc.printf("sizeof(short) = %d\r\n",sizeof(short));
boddeke 1:f5b145be9d8e 51 pc.printf("sizeof(int) = %d\r\n",sizeof(int));
boddeke 1:f5b145be9d8e 52 pc.printf("sizeof(long) = %d\r\n",sizeof(long));
boddeke 1:f5b145be9d8e 53
boddeke 1:f5b145be9d8e 54
boddeke 1:f5b145be9d8e 55 pc.printf("Node ID: %d\r\n",NODE_ID);
boddeke 1:f5b145be9d8e 56 pc.printf("Node STATE: %d\r\n",NODE_STATE);
boddeke 1:f5b145be9d8e 57
boddeke 0:31e47b639d0f 58 sender_ticker.attach(&sender, SEND_INTERVAL);
boddeke 0:31e47b639d0f 59
boddeke 0:31e47b639d0f 60 pc.printf("\r\n\r\npayload size: %d bytes\r\n",sizeof(Payload));
boddeke 0:31e47b639d0f 61
boddeke 0:31e47b639d0f 62 pc.printf("changing battery_level to %d\r\n",battery_level);
boddeke 0:31e47b639d0f 63 setBatteryLevel(battery_level);
boddeke 0:31e47b639d0f 64
boddeke 0:31e47b639d0f 65 while(1) {
boddeke 0:31e47b639d0f 66
boddeke 0:31e47b639d0f 67 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 68 pc.printf("changing reed_sensor_value to 1\r\n");
boddeke 0:31e47b639d0f 69 setReedSensorValue(1);
boddeke 0:31e47b639d0f 70 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 71 pc.printf("changing change_in_last_ack_window to 1\r\n");
boddeke 0:31e47b639d0f 72 setChangeInLastAckWindow(1);
boddeke 0:31e47b639d0f 73 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 74 pc.printf("changing reed_sensor_value to 1\r\n");
boddeke 0:31e47b639d0f 75 setReedSensorValue(1);
boddeke 0:31e47b639d0f 76 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 77 pc.printf("changing reed_sensor_value to 0\r\n");
boddeke 0:31e47b639d0f 78 setReedSensorValue(0);
boddeke 0:31e47b639d0f 79 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 80 pc.printf("changing change_in_last_ack_window to 0\r\n");
boddeke 0:31e47b639d0f 81 setChangeInLastAckWindow(0);
boddeke 0:31e47b639d0f 82 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 83 battery_level--;
boddeke 0:31e47b639d0f 84 pc.printf("changing battery_level to %d\r\n",battery_level);
boddeke 0:31e47b639d0f 85 setBatteryLevel(battery_level);
boddeke 0:31e47b639d0f 86 if(battery_level<250) {
boddeke 0:31e47b639d0f 87 pc.printf("changing low_battery to 1\r\n");
boddeke 0:31e47b639d0f 88 setLowBattery(1);
boddeke 0:31e47b639d0f 89 }
boddeke 0:31e47b639d0f 90 }
boddeke 0:31e47b639d0f 91 }