L14-Click 1.0
STM32WLE5CC LoRaWAN Sensor Platform
Loading...
Searching...
No Matches
CayenneLpp.c File Reference

Implements the Cayenne Low Power Protocol. More...

#include "stm32_mem.h"
#include "CayenneLpp.h"
#include "utilities.h"
Include dependency graph for CayenneLpp.c:

Go to the source code of this file.

Macros

#define CAYENNE_LPP_MAXBUFFER_SIZE   242
#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 Celsius degrees 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 degrees/s */
#define LPP_GPS   136 /* 3 byte lon/lat 0.0001 degrees, 3 bytes alt 0.01m */
#define LPP_DIGITAL_INPUT_SIZE   3
#define LPP_DIGITAL_OUTPUT_SIZE   3
#define LPP_ANALOG_INPUT_SIZE   4
#define LPP_ANALOG_OUTPUT_SIZE   4
#define LPP_LUMINOSITY_SIZE   4
#define LPP_PRESENCE_SIZE   3
#define LPP_TEMPERATURE_SIZE   4
#define LPP_RELATIVE_HUMIDITY_SIZE   3
#define LPP_ACCELEROMETER_SIZE   8
#define LPP_BAROMETRIC_PRESSURE_SIZE   4
#define LPP_GYROMETER_SIZE   8
#define LPP_GPS_SIZE   11
#define LPP_CONCENTRATION   125 /* 2 bytes, 1 ppm unsigned (CO2) */
#define LPP_VOLTAGE   116 /* 2 bytes, 0.01V unsigned */
#define LPP_PARTICULATE_MATTER_1_0   138 /* 2 bytes, 1 μg/m3 of 1mm unsigned */
#define LPP_PARTICULATE_MATTER_2_5   139 /* 2 bytes, 1 μg/m3 of 2.5mm unsigned */
#define LPP_UNIX_TIME   133 /* 4 bytes data, unsigned Unix timestamp */
#define LPP_MEAUREINTERVAL_MIN   140 /* 2bytes data, measire inteval in minutes*10 */
#define LPP_CONCENTRATION_SIZE   4
#define LPP_VOLTAGE_SIZE   4
#define LPP_PARTICULATE_MATTER_SIZE   4
#define LPP_UNIX_TIME_SIZE   6
#define LPP_MEAUREINTERVAL_MIN_SIZE   2

Functions

void CayenneLppInit (void)
void CayenneLppReset (void)
uint8_t CayenneLppGetSize (void)
uint8_t * CayenneLppGetBuffer (void)
uint8_t CayenneLppCopy (uint8_t *dst)
uint8_t CayenneLppAddDigitalInput (uint8_t channel, uint8_t value)
uint8_t CayenneLppAddDigitalOutput (uint8_t channel, uint8_t value)
uint8_t CayenneLppAddAnalogInput (uint8_t channel, float value)
uint8_t CayenneLppAddAnalogOutput (uint8_t channel, float value)
uint8_t CayenneLppAddLuminosity (uint8_t channel, uint16_t lux)
uint8_t CayenneLppAddPresence (uint8_t channel, uint8_t value)
uint8_t CayenneLppAddTemperature (uint8_t channel, float celsius)
uint8_t CayenneLppAddRelativeHumidity (uint8_t channel, float rh)
uint8_t CayenneLppAddAccelerometer (uint8_t channel, float x, float y, float z)
uint8_t CayenneLppAddBarometricPressure (uint8_t channel, float hpa)
uint8_t CayenneLppAddGyrometer (uint8_t channel, float x, float y, float z)
uint8_t CayenneLppAddGps (uint8_t channel, float latitude, float longitude, float meters)
uint8_t CayenneLppMaxBuffer ()
uint8_t CayenneLppAddConcentration (uint8_t channel, uint16_t ppm)
 Add CO2 concentration data to the buffer.
uint8_t CayenneLppAddVoltage (uint8_t channel, float voltage)
 Add voltage data to the buffer.
uint8_t CayenneLppAddParticulateMatter_1_0 (uint8_t channel, float concentration_1_0)
 Add particulate matter of 1mm concentration data to the buffer.
uint8_t CayenneLppAddParticulateMatter_2_5 (uint8_t channel, float concentration_2_5)
 Add particulate matter 2.5mm concentration data to the buffer.
uint8_t CayenneLppAddBatteryVoltage (uint8_t channel, float voltage)
 Add battery voltage data to the buffer.
uint8_t CayenneLppAddTimeFromJoin (uint8_t channel, uint32_t timeOffset)
 Add time offset from LoRa join to the buffer.
uint8_t CayenneLppAddMeasureInterval (uint8_t channel, uint16_t min10)
 Add the measure interval in minutes *10 of data measuring.

Variables

static uint8_t CayenneLppBuffer [242]
static uint8_t CayenneLppCursor = 0

Detailed Description

Implements the Cayenne Low Power Protocol.

______ _
/ _____) _ | |
( (____ _____ ____ _| |_ _____ ____| |__
\____ \| ___ | (_ _) ___ |/ ___) _ \
_____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
(C)2013-2018 Semtech
Author
Miguel Luis ( Semtech )

Definition in file CayenneLpp.c.

Macro Definition Documentation

◆ CAYENNE_LPP_MAXBUFFER_SIZE

◆ LPP_ACCELEROMETER

#define LPP_ACCELEROMETER   113 /* 2 bytes per axis, 0.001G */

Definition at line 48 of file CayenneLpp.c.

Referenced by CayenneLppAddAccelerometer().

◆ LPP_ACCELEROMETER_SIZE

#define LPP_ACCELEROMETER_SIZE   8

Definition at line 62 of file CayenneLpp.c.

Referenced by CayenneLppAddAccelerometer().

◆ LPP_ANALOG_INPUT

#define LPP_ANALOG_INPUT   2 /* 2 bytes, 0.01 signed */

Definition at line 42 of file CayenneLpp.c.

Referenced by CayenneLppAddAnalogInput().

◆ LPP_ANALOG_INPUT_SIZE

#define LPP_ANALOG_INPUT_SIZE   4

Definition at line 56 of file CayenneLpp.c.

Referenced by CayenneLppAddAnalogInput().

◆ LPP_ANALOG_OUTPUT

#define LPP_ANALOG_OUTPUT   3 /* 2 bytes, 0.01 signed */

Definition at line 43 of file CayenneLpp.c.

Referenced by CayenneLppAddAnalogOutput().

◆ LPP_ANALOG_OUTPUT_SIZE

#define LPP_ANALOG_OUTPUT_SIZE   4

Definition at line 57 of file CayenneLpp.c.

Referenced by CayenneLppAddAnalogOutput().

◆ LPP_BAROMETRIC_PRESSURE

#define LPP_BAROMETRIC_PRESSURE   115 /* 2 bytes 0.1 hPa Unsigned */

Definition at line 49 of file CayenneLpp.c.

Referenced by CayenneLppAddBarometricPressure().

◆ LPP_BAROMETRIC_PRESSURE_SIZE

#define LPP_BAROMETRIC_PRESSURE_SIZE   4

Definition at line 63 of file CayenneLpp.c.

Referenced by CayenneLppAddBarometricPressure().

◆ LPP_CONCENTRATION

#define LPP_CONCENTRATION   125 /* 2 bytes, 1 ppm unsigned (CO2) */

Definition at line 69 of file CayenneLpp.c.

Referenced by CayenneLppAddConcentration().

◆ LPP_CONCENTRATION_SIZE

#define LPP_CONCENTRATION_SIZE   4

Definition at line 77 of file CayenneLpp.c.

Referenced by CayenneLppAddConcentration().

◆ LPP_DIGITAL_INPUT

#define LPP_DIGITAL_INPUT   0 /* 1 byte */

Definition at line 40 of file CayenneLpp.c.

Referenced by CayenneLppAddDigitalInput().

◆ LPP_DIGITAL_INPUT_SIZE

#define LPP_DIGITAL_INPUT_SIZE   3

Definition at line 54 of file CayenneLpp.c.

Referenced by CayenneLppAddDigitalInput().

◆ LPP_DIGITAL_OUTPUT

#define LPP_DIGITAL_OUTPUT   1 /* 1 byte */

Definition at line 41 of file CayenneLpp.c.

Referenced by CayenneLppAddDigitalOutput().

◆ LPP_DIGITAL_OUTPUT_SIZE

#define LPP_DIGITAL_OUTPUT_SIZE   3

Definition at line 55 of file CayenneLpp.c.

Referenced by CayenneLppAddDigitalOutput().

◆ LPP_GPS

#define LPP_GPS   136 /* 3 byte lon/lat 0.0001 degrees, 3 bytes alt 0.01m */

Definition at line 51 of file CayenneLpp.c.

Referenced by CayenneLppAddGps().

◆ LPP_GPS_SIZE

#define LPP_GPS_SIZE   11

Definition at line 65 of file CayenneLpp.c.

Referenced by CayenneLppAddGps().

◆ LPP_GYROMETER

#define LPP_GYROMETER   134 /* 2 bytes per axis, 0.01 degrees/s */

Definition at line 50 of file CayenneLpp.c.

Referenced by CayenneLppAddGyrometer().

◆ LPP_GYROMETER_SIZE

#define LPP_GYROMETER_SIZE   8

Definition at line 64 of file CayenneLpp.c.

Referenced by CayenneLppAddGyrometer().

◆ LPP_LUMINOSITY

#define LPP_LUMINOSITY   101 /* 2 bytes, 1 lux unsigned */

Definition at line 44 of file CayenneLpp.c.

Referenced by CayenneLppAddLuminosity().

◆ LPP_LUMINOSITY_SIZE

#define LPP_LUMINOSITY_SIZE   4

Definition at line 58 of file CayenneLpp.c.

Referenced by CayenneLppAddLuminosity().

◆ LPP_MEAUREINTERVAL_MIN

#define LPP_MEAUREINTERVAL_MIN   140 /* 2bytes data, measire inteval in minutes*10 */

Definition at line 74 of file CayenneLpp.c.

Referenced by CayenneLppAddMeasureInterval().

◆ LPP_MEAUREINTERVAL_MIN_SIZE

#define LPP_MEAUREINTERVAL_MIN_SIZE   2

Definition at line 81 of file CayenneLpp.c.

Referenced by CayenneLppAddMeasureInterval().

◆ LPP_PARTICULATE_MATTER_1_0

#define LPP_PARTICULATE_MATTER_1_0   138 /* 2 bytes, 1 μg/m3 of 1mm unsigned */

Definition at line 71 of file CayenneLpp.c.

Referenced by CayenneLppAddParticulateMatter_1_0().

◆ LPP_PARTICULATE_MATTER_2_5

#define LPP_PARTICULATE_MATTER_2_5   139 /* 2 bytes, 1 μg/m3 of 2.5mm unsigned */

Definition at line 72 of file CayenneLpp.c.

Referenced by CayenneLppAddParticulateMatter_2_5().

◆ LPP_PARTICULATE_MATTER_SIZE

#define LPP_PARTICULATE_MATTER_SIZE   4

◆ LPP_PRESENCE

#define LPP_PRESENCE   102 /* 1 byte, 1 */

Definition at line 45 of file CayenneLpp.c.

Referenced by CayenneLppAddPresence().

◆ LPP_PRESENCE_SIZE

#define LPP_PRESENCE_SIZE   3

Definition at line 59 of file CayenneLpp.c.

Referenced by CayenneLppAddPresence().

◆ LPP_RELATIVE_HUMIDITY

#define LPP_RELATIVE_HUMIDITY   104 /* 1 byte, 0.5% unsigned */

Definition at line 47 of file CayenneLpp.c.

Referenced by CayenneLppAddRelativeHumidity().

◆ LPP_RELATIVE_HUMIDITY_SIZE

#define LPP_RELATIVE_HUMIDITY_SIZE   3

Definition at line 61 of file CayenneLpp.c.

Referenced by CayenneLppAddRelativeHumidity().

◆ LPP_TEMPERATURE

#define LPP_TEMPERATURE   103 /* 2 bytes, 0.1 Celsius degrees signed */

Definition at line 46 of file CayenneLpp.c.

Referenced by CayenneLppAddTemperature().

◆ LPP_TEMPERATURE_SIZE

#define LPP_TEMPERATURE_SIZE   4

Definition at line 60 of file CayenneLpp.c.

Referenced by CayenneLppAddTemperature().

◆ LPP_UNIX_TIME

#define LPP_UNIX_TIME   133 /* 4 bytes data, unsigned Unix timestamp */

Definition at line 73 of file CayenneLpp.c.

Referenced by CayenneLppAddTimeFromJoin().

◆ LPP_UNIX_TIME_SIZE

#define LPP_UNIX_TIME_SIZE   6

Definition at line 80 of file CayenneLpp.c.

Referenced by CayenneLppAddTimeFromJoin().

◆ LPP_VOLTAGE

#define LPP_VOLTAGE   116 /* 2 bytes, 0.01V unsigned */

Definition at line 70 of file CayenneLpp.c.

Referenced by CayenneLppAddVoltage().

◆ LPP_VOLTAGE_SIZE

#define LPP_VOLTAGE_SIZE   4

Definition at line 78 of file CayenneLpp.c.

Referenced by CayenneLppAddVoltage().

Function Documentation

◆ CayenneLppAddAccelerometer()

uint8_t CayenneLppAddAccelerometer ( uint8_t channel,
float x,
float y,
float z )

◆ CayenneLppAddAnalogInput()

uint8_t CayenneLppAddAnalogInput ( uint8_t channel,
float value )

◆ CayenneLppAddAnalogOutput()

uint8_t CayenneLppAddAnalogOutput ( uint8_t channel,
float value )

◆ CayenneLppAddBarometricPressure()

uint8_t CayenneLppAddBarometricPressure ( uint8_t channel,
float hpa )

Definition at line 326 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_BAROMETRIC_PRESSURE, and LPP_BAROMETRIC_PRESSURE_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddBatteryVoltage()

uint8_t CayenneLppAddBatteryVoltage ( uint8_t channel,
float voltage )

Add battery voltage data to the buffer.

Parameters
channelData channel (30 for main battery, 31 for PA15)
voltageBattery voltage in volts
Returns
Current buffer position

Definition at line 498 of file CayenneLpp.c.

References CayenneLppAddVoltage().

Here is the call graph for this function:

◆ CayenneLppAddConcentration()

uint8_t CayenneLppAddConcentration ( uint8_t channel,
uint16_t ppm )

Add CO2 concentration data to the buffer.

Parameters
channelData channel
ppmCO2 concentration in parts per million (ppm)
Returns
Current buffer position

Definition at line 418 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_CONCENTRATION, and LPP_CONCENTRATION_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddDigitalInput()

uint8_t CayenneLppAddDigitalInput ( uint8_t channel,
uint8_t value )

◆ CayenneLppAddDigitalOutput()

uint8_t CayenneLppAddDigitalOutput ( uint8_t channel,
uint8_t value )

◆ CayenneLppAddGps()

uint8_t CayenneLppAddGps ( uint8_t channel,
float latitude,
float longitude,
float meters )

◆ CayenneLppAddGyrometer()

uint8_t CayenneLppAddGyrometer ( uint8_t channel,
float x,
float y,
float z )

◆ CayenneLppAddLuminosity()

uint8_t CayenneLppAddLuminosity ( uint8_t channel,
uint16_t lux )

Definition at line 224 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_LUMINOSITY, and LPP_LUMINOSITY_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddMeasureInterval()

uint8_t CayenneLppAddMeasureInterval ( uint8_t channel,
uint16_t min10 )

Add the measure interval in minutes *10 of data measuring.

Parameters
channelData channel
min10- minutes in *10

Definition at line 526 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_MEAUREINTERVAL_MIN, and LPP_MEAUREINTERVAL_MIN_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddParticulateMatter_1_0()

uint8_t CayenneLppAddParticulateMatter_1_0 ( uint8_t channel,
float concentration_1_0 )

Add particulate matter of 1mm concentration data to the buffer.

Parameters
channelData channel
concentration_1_0Particle concentration of 1mm in μg/m³
Returns
Current buffer position

Definition at line 457 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_PARTICULATE_MATTER_1_0, and LPP_PARTICULATE_MATTER_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddParticulateMatter_2_5()

uint8_t CayenneLppAddParticulateMatter_2_5 ( uint8_t channel,
float concentration_2_5 )

Add particulate matter 2.5mm concentration data to the buffer.

Parameters
channelData channel
concentration_2_5Particle concentration of 2.5mm in μg/m³
Returns
Current buffer position

Definition at line 477 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_PARTICULATE_MATTER_2_5, and LPP_PARTICULATE_MATTER_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddPresence()

uint8_t CayenneLppAddPresence ( uint8_t channel,
uint8_t value )

◆ CayenneLppAddRelativeHumidity()

uint8_t CayenneLppAddRelativeHumidity ( uint8_t channel,
float rh )

Definition at line 281 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_RELATIVE_HUMIDITY, and LPP_RELATIVE_HUMIDITY_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddTemperature()

uint8_t CayenneLppAddTemperature ( uint8_t channel,
float celsius )

Definition at line 261 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_TEMPERATURE, and LPP_TEMPERATURE_SIZE.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppAddTimeFromJoin()

uint8_t CayenneLppAddTimeFromJoin ( uint8_t channel,
uint32_t timeOffset )

Add time offset from LoRa join to the buffer.

Parameters
channelData channel
timeOffsetTime value in seconds (uint32_t). Can represent either:
  • Time offset since joining LoRa network
  • Unix timestamp (seconds since epoch)
Returns
Current buffer position

Definition at line 511 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_UNIX_TIME, and LPP_UNIX_TIME_SIZE.

◆ CayenneLppAddVoltage()

uint8_t CayenneLppAddVoltage ( uint8_t channel,
float voltage )

Add voltage data to the buffer.

Parameters
channelData channel
voltageVoltage in volts
Returns
Current buffer position

Definition at line 437 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE, CayenneLppBuffer, CayenneLppCursor, LPP_VOLTAGE, and LPP_VOLTAGE_SIZE.

Referenced by CayenneLppAddBatteryVoltage(), and sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppCopy()

uint8_t CayenneLppCopy ( uint8_t * dst)

Definition at line 135 of file CayenneLpp.c.

References CayenneLppBuffer, and CayenneLppCursor.

◆ CayenneLppGetBuffer()

uint8_t * CayenneLppGetBuffer ( void )

Definition at line 127 of file CayenneLpp.c.

References CayenneLppBuffer.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppGetSize()

uint8_t CayenneLppGetSize ( void )

Definition at line 119 of file CayenneLpp.c.

References CayenneLppCursor.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

◆ CayenneLppInit()

void CayenneLppInit ( void )

Definition at line 103 of file CayenneLpp.c.

References CayenneLppCursor.

◆ CayenneLppMaxBuffer()

uint8_t CayenneLppMaxBuffer ( )
Return values
themax number in bytes for CayenneLpp buffer

Definition at line 407 of file CayenneLpp.c.

References CAYENNE_LPP_MAXBUFFER_SIZE.

Referenced by myLoraWan_LastDataSend().

Here is the caller graph for this function:

◆ CayenneLppReset()

void CayenneLppReset ( void )

Definition at line 111 of file CayenneLpp.c.

References CayenneLppCursor.

Referenced by sensors_CayennelFromBckData().

Here is the caller graph for this function:

Variable Documentation

◆ CayenneLppBuffer

◆ CayenneLppCursor