Fahad Mirza
/
Nucleo_HXC900
A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.
main.cpp
- Committer:
- fahadmirza
- Date:
- 2018-07-12
- Revision:
- 1:168a6afffbff
- Parent:
- 0:a0c5877bd360
- Child:
- 2:1ef859bc5cd2
File content as of revision 1:168a6afffbff:
#include "mbed.h" #include "main.h" #include "lora_driver.h" /* Private Macros ------------------------------------------------------------*/ #define SENSORS_MEASURE_CYCLE (15000U) // Send packet every 15s /* 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); /* Private variables ---------------------------------------------------------*/ static sLoraConfig_t LoraConfigParam = { .joinMode = OTAA, // .class_ = 'C', // .devEui = "C0A0D00000000000", // .appEui = "C0A0000000000000", // .appKey = "C0A0A000000000000000000000000000", .class_ = 'A', .devEui = "E000000000000003", .appEui = "E000000000000002", .appKey = "E0000000000000000000000000000004", }; static sLoraDriverParam_t LoraDriverParam = { .SensorMeasureTime = SENSORS_MEASURE_CYCLE, .SendDataHandler = SensorMeasureData, .ReceiveDataHandler = LedControl }; // Mbed specific declaration Serial pc(SERIAL_TX, SERIAL_RX); Serial hxc(PA_9, PA_10); AnalogIn analog_value(A0); DigitalOut myled(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; // Organizing an unconfirmed uplink packet for port 2 *ack = UNCONFIRMED; buffer[size++] = 0xFA; // Random data buffer[size++] = 0xCE; buffer[size++] = 0x0F; buffer[size++] = 0xF0; buffer[size++] = 0x00; *dataSize = size; *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 ****/