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