initial publish

Dependencies:   mbed-rtos mbed

Committer:
boddeke
Date:
Wed May 18 08:37:47 2016 +0000
Revision:
0:31e47b639d0f
Child:
1:f5b145be9d8e
updated with semaphores

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 0:31e47b639d0f 20 int changes = hasChanges();
boddeke 0:31e47b639d0f 21
boddeke 0:31e47b639d0f 22 if(changes) {
boddeke 0:31e47b639d0f 23
boddeke 0:31e47b639d0f 24 getDataAndUpdate(&data_to_send);
boddeke 0:31e47b639d0f 25
boddeke 0:31e47b639d0f 26 pc.printf("sending: ");
boddeke 0:31e47b639d0f 27 for(int i=0;i<sizeof(Payload);i++) {
boddeke 0:31e47b639d0f 28 pc.printf("%02x",(unsigned int)data_to_send.at(i));
boddeke 0:31e47b639d0f 29 }
boddeke 0:31e47b639d0f 30 } else {
boddeke 0:31e47b639d0f 31 pc.printf("no change");
boddeke 0:31e47b639d0f 32 }
boddeke 0:31e47b639d0f 33 pc.printf("\r\n");
boddeke 0:31e47b639d0f 34 }
boddeke 0:31e47b639d0f 35
boddeke 0:31e47b639d0f 36 int main() {
boddeke 0:31e47b639d0f 37
boddeke 0:31e47b639d0f 38 unsigned char battery_level = 255;
boddeke 0:31e47b639d0f 39
boddeke 0:31e47b639d0f 40 pc.baud(115200);
boddeke 0:31e47b639d0f 41 pc.printf("\r\n\r\n********************************\r\n");
boddeke 0:31e47b639d0f 42 pc.printf( "* *\r\n");
boddeke 0:31e47b639d0f 43 pc.printf( "* Edge Payload Test *\r\n");
boddeke 0:31e47b639d0f 44 pc.printf( "* *\r\n");
boddeke 0:31e47b639d0f 45 pc.printf( "* Build: " __DATE__ ", " __TIME__" *\r\n");
boddeke 0:31e47b639d0f 46 pc.printf( "********************************\r\n\r\n");
boddeke 0:31e47b639d0f 47
boddeke 0:31e47b639d0f 48 sender_ticker.attach(&sender, SEND_INTERVAL);
boddeke 0:31e47b639d0f 49
boddeke 0:31e47b639d0f 50 pc.printf("\r\n\r\npayload size: %d bytes\r\n",sizeof(Payload));
boddeke 0:31e47b639d0f 51
boddeke 0:31e47b639d0f 52 pc.printf("changing battery_level to %d\r\n",battery_level);
boddeke 0:31e47b639d0f 53 setBatteryLevel(battery_level);
boddeke 0:31e47b639d0f 54
boddeke 0:31e47b639d0f 55 while(1) {
boddeke 0:31e47b639d0f 56
boddeke 0:31e47b639d0f 57 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 58 pc.printf("changing reed_sensor_value to 1\r\n");
boddeke 0:31e47b639d0f 59 setReedSensorValue(1);
boddeke 0:31e47b639d0f 60 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 61 pc.printf("changing change_in_last_ack_window to 1\r\n");
boddeke 0:31e47b639d0f 62 setChangeInLastAckWindow(1);
boddeke 0:31e47b639d0f 63 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 64 pc.printf("changing reed_sensor_value to 1\r\n");
boddeke 0:31e47b639d0f 65 setReedSensorValue(1);
boddeke 0:31e47b639d0f 66 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 67 pc.printf("changing reed_sensor_value to 0\r\n");
boddeke 0:31e47b639d0f 68 setReedSensorValue(0);
boddeke 0:31e47b639d0f 69 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 70 pc.printf("changing change_in_last_ack_window to 0\r\n");
boddeke 0:31e47b639d0f 71 setChangeInLastAckWindow(0);
boddeke 0:31e47b639d0f 72 Thread::wait(UPDATE_INTERVAL*1000);
boddeke 0:31e47b639d0f 73 battery_level--;
boddeke 0:31e47b639d0f 74 pc.printf("changing battery_level to %d\r\n",battery_level);
boddeke 0:31e47b639d0f 75 setBatteryLevel(battery_level);
boddeke 0:31e47b639d0f 76 if(battery_level<250) {
boddeke 0:31e47b639d0f 77 pc.printf("changing low_battery to 1\r\n");
boddeke 0:31e47b639d0f 78 setLowBattery(1);
boddeke 0:31e47b639d0f 79 }
boddeke 0:31e47b639d0f 80 }
boddeke 0:31e47b639d0f 81 }