edge
/
testPayloadManipulation
initial publish
main.cpp@1:f5b145be9d8e, 2016-06-02 (annotated)
- Committer:
- boddeke
- Date:
- Thu Jun 02 11:44:51 2016 +0000
- Revision:
- 1:f5b145be9d8e
- Parent:
- 0:31e47b639d0f
update
Who changed what in which revision?
User | Revision | Line number | New 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 | } |