Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: libmDot mbed-rtos mbed
Diff: payload.h
- Revision:
- 5:5654666925e1
diff -r 0fb159501a04 -r 5654666925e1 payload.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/payload.h Thu Jun 02 12:27:37 2016 +0000
@@ -0,0 +1,92 @@
+// automagically generated (version 20160519)
+// by: http://iot.edgetech.nl/iot/node/includeFile?node=0x01
+// on: 20160519
+#include <Semaphore.h>
+
+enum NodeStates { development = 0, preproduction = 1, production = 2};
+#define NODE_ID 0x01
+#define NODE_STATE development
+
+#define CONTACT_NOACK_MIN 10000
+#undef CONTACT_NOACK_MAX
+#define CONTACT_ACK_MIN 3600000
+#define CONTACT_ACK_MAX 3600000
+
+#define CONTACT_MAX_TOTAL_PER_DAY 100
+
+#pragma pack(push, 1)
+typedef struct payloadvalues{
+ unsigned char node_id;
+ unsigned char reed_sensor_value: 1;
+ unsigned char change_in_last_ack_window: 1;
+ unsigned char low_battery: 1;
+ unsigned char battery_level;
+} PayloadValues;
+
+typedef union payload {
+ PayloadValues values;
+ char b[sizeof(PayloadValues)];
+} Payload;
+
+Payload payload_new = {NODE_ID,0,0};
+Payload payload_last = {NODE_ID,0,0};
+#pragma pack(pop)
+
+Semaphore payload_protect(1);
+
+int setReedSensorValue(unsigned char value) {
+ if(value>1) {
+ return(0);
+ }
+ payload_protect.wait();
+ payload_new.values.reed_sensor_value = value;
+ payload_protect.release();
+ return(1);
+}
+
+int setChangeInLastAckWindow(unsigned char value) {
+ if(value>1) {
+ return(0);
+ }
+ payload_protect.wait();
+ payload_new.values.change_in_last_ack_window = value;
+ payload_protect.release();
+ return(1);
+}
+
+int setLowBattery(unsigned char value) {
+ if(value>1) {
+ return(0);
+ }
+ payload_protect.wait();
+ payload_new.values.low_battery = value;
+ payload_protect.release();
+ return(1);
+}
+
+int setBatteryLevel(unsigned char value) {
+ payload_protect.wait();
+ payload_new.values.battery_level = value;
+ payload_protect.release();
+ return(1);
+}
+
+int hasChanges() {
+ payload_protect.wait();
+ for(int i=1;i<sizeof(Payload);i++) {
+ if(payload_new.b[i]!=payload_last.b[i]) {
+ payload_protect.release();
+ return(1);
+ }
+ }
+ payload_protect.release();
+ return(0);
+}
+
+void getDataAndUpdate(std::vector<uint8_t> *b) {
+ payload_protect.wait();
+ std::copy(payload_new.b, payload_new.b + sizeof(Payload), b->begin());
+ std::copy(payload_new.b, payload_new.b + sizeof(Payload), payload_last.b);
+ payload_protect.release();
+}
+