edge / Mbed 2 deprecated testReed

Dependencies:   libmDot mbed-rtos mbed

Committer:
waltertakens
Date:
Thu Jun 02 12:27:37 2016 +0000
Revision:
5:5654666925e1
met lora

Who changed what in which revision?

UserRevisionLine numberNew contents of line
waltertakens 5:5654666925e1 1 // automagically generated (version 20160519)
waltertakens 5:5654666925e1 2 // by: http://iot.edgetech.nl/iot/node/includeFile?node=0x01
waltertakens 5:5654666925e1 3 // on: 20160519
waltertakens 5:5654666925e1 4 #include <Semaphore.h>
waltertakens 5:5654666925e1 5
waltertakens 5:5654666925e1 6 enum NodeStates { development = 0, preproduction = 1, production = 2};
waltertakens 5:5654666925e1 7 #define NODE_ID 0x01
waltertakens 5:5654666925e1 8 #define NODE_STATE development
waltertakens 5:5654666925e1 9
waltertakens 5:5654666925e1 10 #define CONTACT_NOACK_MIN 10000
waltertakens 5:5654666925e1 11 #undef CONTACT_NOACK_MAX
waltertakens 5:5654666925e1 12 #define CONTACT_ACK_MIN 3600000
waltertakens 5:5654666925e1 13 #define CONTACT_ACK_MAX 3600000
waltertakens 5:5654666925e1 14
waltertakens 5:5654666925e1 15 #define CONTACT_MAX_TOTAL_PER_DAY 100
waltertakens 5:5654666925e1 16
waltertakens 5:5654666925e1 17 #pragma pack(push, 1)
waltertakens 5:5654666925e1 18 typedef struct payloadvalues{
waltertakens 5:5654666925e1 19 unsigned char node_id;
waltertakens 5:5654666925e1 20 unsigned char reed_sensor_value: 1;
waltertakens 5:5654666925e1 21 unsigned char change_in_last_ack_window: 1;
waltertakens 5:5654666925e1 22 unsigned char low_battery: 1;
waltertakens 5:5654666925e1 23 unsigned char battery_level;
waltertakens 5:5654666925e1 24 } PayloadValues;
waltertakens 5:5654666925e1 25
waltertakens 5:5654666925e1 26 typedef union payload {
waltertakens 5:5654666925e1 27 PayloadValues values;
waltertakens 5:5654666925e1 28 char b[sizeof(PayloadValues)];
waltertakens 5:5654666925e1 29 } Payload;
waltertakens 5:5654666925e1 30
waltertakens 5:5654666925e1 31 Payload payload_new = {NODE_ID,0,0};
waltertakens 5:5654666925e1 32 Payload payload_last = {NODE_ID,0,0};
waltertakens 5:5654666925e1 33 #pragma pack(pop)
waltertakens 5:5654666925e1 34
waltertakens 5:5654666925e1 35 Semaphore payload_protect(1);
waltertakens 5:5654666925e1 36
waltertakens 5:5654666925e1 37 int setReedSensorValue(unsigned char value) {
waltertakens 5:5654666925e1 38 if(value>1) {
waltertakens 5:5654666925e1 39 return(0);
waltertakens 5:5654666925e1 40 }
waltertakens 5:5654666925e1 41 payload_protect.wait();
waltertakens 5:5654666925e1 42 payload_new.values.reed_sensor_value = value;
waltertakens 5:5654666925e1 43 payload_protect.release();
waltertakens 5:5654666925e1 44 return(1);
waltertakens 5:5654666925e1 45 }
waltertakens 5:5654666925e1 46
waltertakens 5:5654666925e1 47 int setChangeInLastAckWindow(unsigned char value) {
waltertakens 5:5654666925e1 48 if(value>1) {
waltertakens 5:5654666925e1 49 return(0);
waltertakens 5:5654666925e1 50 }
waltertakens 5:5654666925e1 51 payload_protect.wait();
waltertakens 5:5654666925e1 52 payload_new.values.change_in_last_ack_window = value;
waltertakens 5:5654666925e1 53 payload_protect.release();
waltertakens 5:5654666925e1 54 return(1);
waltertakens 5:5654666925e1 55 }
waltertakens 5:5654666925e1 56
waltertakens 5:5654666925e1 57 int setLowBattery(unsigned char value) {
waltertakens 5:5654666925e1 58 if(value>1) {
waltertakens 5:5654666925e1 59 return(0);
waltertakens 5:5654666925e1 60 }
waltertakens 5:5654666925e1 61 payload_protect.wait();
waltertakens 5:5654666925e1 62 payload_new.values.low_battery = value;
waltertakens 5:5654666925e1 63 payload_protect.release();
waltertakens 5:5654666925e1 64 return(1);
waltertakens 5:5654666925e1 65 }
waltertakens 5:5654666925e1 66
waltertakens 5:5654666925e1 67 int setBatteryLevel(unsigned char value) {
waltertakens 5:5654666925e1 68 payload_protect.wait();
waltertakens 5:5654666925e1 69 payload_new.values.battery_level = value;
waltertakens 5:5654666925e1 70 payload_protect.release();
waltertakens 5:5654666925e1 71 return(1);
waltertakens 5:5654666925e1 72 }
waltertakens 5:5654666925e1 73
waltertakens 5:5654666925e1 74 int hasChanges() {
waltertakens 5:5654666925e1 75 payload_protect.wait();
waltertakens 5:5654666925e1 76 for(int i=1;i<sizeof(Payload);i++) {
waltertakens 5:5654666925e1 77 if(payload_new.b[i]!=payload_last.b[i]) {
waltertakens 5:5654666925e1 78 payload_protect.release();
waltertakens 5:5654666925e1 79 return(1);
waltertakens 5:5654666925e1 80 }
waltertakens 5:5654666925e1 81 }
waltertakens 5:5654666925e1 82 payload_protect.release();
waltertakens 5:5654666925e1 83 return(0);
waltertakens 5:5654666925e1 84 }
waltertakens 5:5654666925e1 85
waltertakens 5:5654666925e1 86 void getDataAndUpdate(std::vector<uint8_t> *b) {
waltertakens 5:5654666925e1 87 payload_protect.wait();
waltertakens 5:5654666925e1 88 std::copy(payload_new.b, payload_new.b + sizeof(Payload), b->begin());
waltertakens 5:5654666925e1 89 std::copy(payload_new.b, payload_new.b + sizeof(Payload), payload_last.b);
waltertakens 5:5654666925e1 90 payload_protect.release();
waltertakens 5:5654666925e1 91 }
waltertakens 5:5654666925e1 92