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

Dependencies:   mbed

Committer:
fahadmirza
Date:
Mon Jul 16 16:37:32 2018 +0000
Revision:
2:1ef859bc5cd2
Parent:
1:168a6afffbff
Child:
3:11cdf29c8739
Added settings for ADR; Removed Mbed specific serial declarations;

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