A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.

Dependencies:   mbed

Committer:
fahadmirza
Date:
Thu Jul 12 23:08:47 2018 +0000
Revision:
1:168a6afffbff
Parent:
0:a0c5877bd360
Child:
2:1ef859bc5cd2
Updated debug printf; Separated ClassA and ClassC configs; ADC initialization added;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fahadmirza 0:a0c5877bd360 1 #include "mbed.h"
fahadmirza 0:a0c5877bd360 2 #include "main.h"
fahadmirza 0:a0c5877bd360 3 #include "lora_driver.h"
fahadmirza 0:a0c5877bd360 4
fahadmirza 0:a0c5877bd360 5 /* Private Macros ------------------------------------------------------------*/
fahadmirza 0:a0c5877bd360 6 #define SENSORS_MEASURE_CYCLE (15000U) // Send packet every 15s
fahadmirza 0:a0c5877bd360 7
fahadmirza 0:a0c5877bd360 8 /* Private function declaration ----------------------------------------------*/
fahadmirza 0:a0c5877bd360 9 static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port);
fahadmirza 0:a0c5877bd360 10 static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port);
fahadmirza 0:a0c5877bd360 11
fahadmirza 0:a0c5877bd360 12 /* Private variables ---------------------------------------------------------*/
fahadmirza 0:a0c5877bd360 13 static sLoraConfig_t LoraConfigParam =
fahadmirza 0:a0c5877bd360 14 {
fahadmirza 0:a0c5877bd360 15 .joinMode = OTAA,
fahadmirza 1:168a6afffbff 16 // .class_ = 'C',
fahadmirza 1:168a6afffbff 17 // .devEui = "C0A0D00000000000",
fahadmirza 1:168a6afffbff 18 // .appEui = "C0A0000000000000",
fahadmirza 1:168a6afffbff 19 // .appKey = "C0A0A000000000000000000000000000",
fahadmirza 1:168a6afffbff 20 .class_ = 'A',
fahadmirza 1:168a6afffbff 21 .devEui = "E000000000000003",
fahadmirza 1:168a6afffbff 22 .appEui = "E000000000000002",
fahadmirza 1:168a6afffbff 23 .appKey = "E0000000000000000000000000000004",
fahadmirza 0:a0c5877bd360 24 };
fahadmirza 0:a0c5877bd360 25
fahadmirza 0:a0c5877bd360 26 static sLoraDriverParam_t LoraDriverParam =
fahadmirza 0:a0c5877bd360 27 {
fahadmirza 0:a0c5877bd360 28 .SensorMeasureTime = SENSORS_MEASURE_CYCLE,
fahadmirza 0:a0c5877bd360 29 .SendDataHandler = SensorMeasureData,
fahadmirza 0:a0c5877bd360 30 .ReceiveDataHandler = LedControl
fahadmirza 0:a0c5877bd360 31 };
fahadmirza 0:a0c5877bd360 32
fahadmirza 1:168a6afffbff 33 // Mbed specific declaration
fahadmirza 0:a0c5877bd360 34 Serial pc(SERIAL_TX, SERIAL_RX);
fahadmirza 0:a0c5877bd360 35 Serial hxc(PA_9, PA_10);
fahadmirza 1:168a6afffbff 36 AnalogIn analog_value(A0);
fahadmirza 0:a0c5877bd360 37 DigitalOut myled(LED1);
fahadmirza 0:a0c5877bd360 38
fahadmirza 0:a0c5877bd360 39 int main()
fahadmirza 0:a0c5877bd360 40 {
fahadmirza 0:a0c5877bd360 41 HW_Init();
fahadmirza 0:a0c5877bd360 42
fahadmirza 1:168a6afffbff 43 DBG_PRINTF("HXC900-NucleoL053R8 Demo Application\r\n");
fahadmirza 0:a0c5877bd360 44 Lora_init(&LoraConfigParam, &LoraDriverParam);
fahadmirza 0:a0c5877bd360 45
fahadmirza 0:a0c5877bd360 46 while(1)
fahadmirza 0:a0c5877bd360 47 {
fahadmirza 0:a0c5877bd360 48 Lora_fsm();
fahadmirza 0:a0c5877bd360 49 }
fahadmirza 0:a0c5877bd360 50 }
fahadmirza 0:a0c5877bd360 51
fahadmirza 0:a0c5877bd360 52
fahadmirza 0:a0c5877bd360 53 /* Private function definitions ----------------------------------------------*/
fahadmirza 0:a0c5877bd360 54
fahadmirza 0:a0c5877bd360 55 /******************************************************************************
fahadmirza 0:a0c5877bd360 56 * @Brief : Uplink packet handler for lora_driver
fahadmirza 0:a0c5877bd360 57 * @Param : Pointer for payload buffer, data size, ack configuration and port
fahadmirza 0:a0c5877bd360 58 * @return: none
fahadmirza 0:a0c5877bd360 59 ******************************************************************************/
fahadmirza 0:a0c5877bd360 60 static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port)
fahadmirza 0:a0c5877bd360 61 {
fahadmirza 0:a0c5877bd360 62 uint8_t size = 0;
fahadmirza 0:a0c5877bd360 63 // Organizing an unconfirmed uplink packet for port 2
fahadmirza 0:a0c5877bd360 64 *ack = UNCONFIRMED;
fahadmirza 0:a0c5877bd360 65
fahadmirza 0:a0c5877bd360 66 buffer[size++] = 0xFA; // Random data
fahadmirza 0:a0c5877bd360 67 buffer[size++] = 0xCE;
fahadmirza 0:a0c5877bd360 68 buffer[size++] = 0x0F;
fahadmirza 0:a0c5877bd360 69 buffer[size++] = 0xF0;
fahadmirza 0:a0c5877bd360 70 buffer[size++] = 0x00;
fahadmirza 0:a0c5877bd360 71 *dataSize = size;
fahadmirza 0:a0c5877bd360 72
fahadmirza 0:a0c5877bd360 73 *port = 2;
fahadmirza 0:a0c5877bd360 74 }
fahadmirza 0:a0c5877bd360 75
fahadmirza 0:a0c5877bd360 76 /******************************************************************************
fahadmirza 0:a0c5877bd360 77 * @Brief : Downlink packet handler for lora_driver
fahadmirza 0:a0c5877bd360 78 * LSBytes of the payload controls the Nucleo LED
fahadmirza 0:a0c5877bd360 79 * @Param : Payload buffer, data size, ack configuration and port
fahadmirza 0:a0c5877bd360 80 * @return: none
fahadmirza 0:a0c5877bd360 81 ******************************************************************************/
fahadmirza 0:a0c5877bd360 82 static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port)
fahadmirza 0:a0c5877bd360 83 {
fahadmirza 0:a0c5877bd360 84 switch(buffer[dataSize - 1])
fahadmirza 0:a0c5877bd360 85 {
fahadmirza 0:a0c5877bd360 86 case 1:
fahadmirza 0:a0c5877bd360 87 {
fahadmirza 0:a0c5877bd360 88 BSP_LED_On(LED_GREEN);
fahadmirza 0:a0c5877bd360 89 break;
fahadmirza 0:a0c5877bd360 90 }
fahadmirza 0:a0c5877bd360 91 default:
fahadmirza 0:a0c5877bd360 92 {
fahadmirza 0:a0c5877bd360 93 BSP_LED_Off(LED_GREEN);
fahadmirza 0:a0c5877bd360 94 break;
fahadmirza 0:a0c5877bd360 95 }
fahadmirza 0:a0c5877bd360 96 }
fahadmirza 0:a0c5877bd360 97 }
fahadmirza 0:a0c5877bd360 98
fahadmirza 0:a0c5877bd360 99 /************************ (C) COPYRIGHT Haxiot ***** END OF FILE ****/
fahadmirza 0:a0c5877bd360 100