Fahad Mirza
/
Nucleo_HXC900
A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.
main.cpp
- Committer:
- fahadmirza
- Date:
- 2018-07-16
- Revision:
- 3:11cdf29c8739
- Parent:
- 2:1ef859bc5cd2
- Child:
- 4:511677d804ac
File content as of revision 3:11cdf29c8739:
#include "mbed.h" #include "main.h" #include "lora_driver.h" /* Private Macros ------------------------------------------------------------*/ #define SENSORS_MEASURE_CYCLE (15000U) // Send packet every 15s /* Private variables ---------------------------------------------------------*/ static sLoraConfig_t LoraConfigParam = { .joinMode = OTAA, .adrStatus = ADR_OFF, .class_ = 'A', .devEui = "E000000000000003", .appEui = "E000000000000002", .appKey = "E0000000000000000000000000000004" }; /* Private function declaration ----------------------------------------------*/ static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port); static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port); static sLoraDriverParam_t LoraDriverParam = { .SensorMeasureTime = SENSORS_MEASURE_CYCLE, .SendDataHandler = SensorMeasureData, .ReceiveDataHandler = LedControl }; // Mbed specific declaration AnalogIn temperatureSensor(A0); DigitalOut nucleoLED(LED1); int main() { HW_Init(); DBG_PRINTF("HXC900-NucleoL053R8 Demo Application\r\n"); Lora_init(&LoraConfigParam, &LoraDriverParam); while(1) { Lora_fsm(); } } /* Private function definitions ----------------------------------------------*/ /****************************************************************************** * @Brief : Uplink packet handler for lora_driver * @Param : Pointer for payload buffer, data size, ack configuration and port * @return: none ******************************************************************************/ static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port) { uint8_t size = 0; uint16_t temperatureValue = temperatureSensor.read_u16(); // Organizing an unconfirmed uplink packet for port 2 buffer[size++] = (temperatureValue >> 8) & 0xFF; buffer[size++] = temperatureValue & 0xFF; *dataSize = size; *ack = UNCONFIRMED; *port = 2; } /****************************************************************************** * @Brief : Downlink packet handler for lora_driver * LSBytes of the payload controls the Nucleo LED * @Param : Payload buffer, data size, ack configuration and port * @return: none ******************************************************************************/ static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port) { switch(buffer[dataSize - 1]) { case 1: { BSP_LED_On(LED_GREEN); break; } default: { BSP_LED_Off(LED_GREEN); break; } } } /************************ (C) COPYRIGHT Haxiot ***** END OF FILE ****/