Cayenne Low Power Payload

Dependents:   LORAWAN-TTN-CAYENNE-LM35 ER4Lora gps_accelerometer sgam_mdw_test ... more

Revision:
1:3747637941bf
Parent:
0:15c6e1cab70a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CayenneLPP.h	Fri Dec 02 01:49:35 2016 +0000
@@ -0,0 +1,72 @@
+#ifndef _CAYENNE_LPP_H_
+#define _CAYENNE_LPP_H_
+
+#include "mbed.h"
+
+//LPP_BATTERY = // TODO Unsupported in IPSO Smart Object
+//LPP_PROXIMITY = // TODO Unsupported in IPSO Smart Object
+
+#define LPP_DIGITAL_INPUT       0       // 1 byte
+#define LPP_DIGITAL_OUTPUT      1       // 1 byte
+#define LPP_ANALOG_INPUT        2       // 2 bytes, 0.01 signed
+#define LPP_ANALOG_OUTPUT       3       // 2 bytes, 0.01 signed
+#define LPP_LUMINOSITY          101     // 2 bytes, 1 lux unsigned
+#define LPP_PRESENCE            102     // 1 byte, 1
+#define LPP_TEMPERATURE         103     // 2 bytes, 0.1°C signed
+#define LPP_RELATIVE_HUMIDITY   104     // 1 byte, 0.5% unsigned
+#define LPP_ACCELEROMETER       113     // 2 bytes per axis, 0.001G
+#define LPP_BAROMETRIC_PRESSURE 115     // 2 bytes 0.1 hPa Unsigned
+#define LPP_GYROMETER           134     // 2 bytes per axis, 0.01 °/s
+#define LPP_GPS                 136     // 3 byte lon/lat 0.0001 °, 3 bytes alt 0.01 meter
+
+
+// Data ID + Data Type + Data Size
+#define LPP_DIGITAL_INPUT_SIZE       3       // 1 byte
+#define LPP_DIGITAL_OUTPUT_SIZE      3       // 1 byte
+#define LPP_ANALOG_INPUT_SIZE        4       // 2 bytes, 0.01 signed
+#define LPP_ANALOG_OUTPUT_SIZE       4       // 2 bytes, 0.01 signed
+#define LPP_LUMINOSITY_SIZE          4       // 2 bytes, 1 lux unsigned
+#define LPP_PRESENCE_SIZE            3       // 1 byte, 1
+#define LPP_TEMPERATURE_SIZE         4       // 2 bytes, 0.1°C signed
+#define LPP_RELATIVE_HUMIDITY_SIZE   3       // 1 byte, 0.5% unsigned
+#define LPP_ACCELEROMETER_SIZE       8       // 2 bytes per axis, 0.001G
+#define LPP_BAROMETRIC_PRESSURE_SIZE 4       // 2 bytes 0.1 hPa Unsigned
+#define LPP_GYROMETER_SIZE           8       // 2 bytes per axis, 0.01 °/s
+#define LPP_GPS_SIZE                 11      // 3 byte lon/lat 0.0001 °, 3 bytes alt 0.01 meter
+
+
+class CayenneLPP {
+    public:
+        CayenneLPP(uint8_t size);
+        ~CayenneLPP();
+        
+        void reset(void);
+        uint8_t getSize(void);
+        uint8_t* getBuffer(void);
+        uint8_t copy(uint8_t* buffer);
+        
+        uint8_t addDigitalInput(uint8_t channel, uint8_t value);
+        uint8_t addDigitalOutput(uint8_t channel, uint8_t value);
+
+        uint8_t addAnalogInput(uint8_t channel, float value);
+        uint8_t addAnalogOutput(uint8_t channel, float value);
+
+        uint8_t addLuminosity(uint8_t channel, uint16_t lux);
+        uint8_t addPresence(uint8_t channel, uint8_t value);
+        uint8_t addTemperature(uint8_t channel, float celsius);
+        uint8_t addRelativeHumidity(uint8_t channel, float rh);
+        uint8_t addAccelerometer(uint8_t channel, float x, float y, float z);
+        uint8_t addBarometricPressure(uint8_t channel, float hpa);
+        uint8_t addGyrometer(uint8_t channel, float x, float y, float z);
+        uint8_t addGPS(uint8_t channel, float latitude, float longitude, float meters);
+    
+    private:
+        uint8_t *buffer;
+        uint8_t maxsize;
+        uint8_t cursor;
+        
+        
+};
+
+
+#endif
\ No newline at end of file