Fahad Mirza
/
Nucleo_HXC900
A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.
lora_conf.h
- Committer:
- fahadmirza
- Date:
- 2018-07-16
- Revision:
- 5:53302861bfea
- Parent:
- 4:511677d804ac
- Child:
- 6:1d09b7960d57
File content as of revision 5:53302861bfea:
/* _ _ _____ _______ | | | | |_ _| |__ __| | |__| | __ ___ __ | | ___ | | | __ |/ _` \ \/ / | | / _ \| | | | | | (_| |> < _| || (_) | | |_| |_|\__,_/_/\_\_____\___/|_| (C)2017 HaxIoT */ /******************************************************************************* * File : lora_driver.h * Author : Fahad Mirza (Haxiot) * Version : V1.0.0 * Modified: 13-April-2018 * Brief : Header for driver lora_driver.h module ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT(c) 2017 Haxiot</center></h2> * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of Haxiot nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ #ifndef __LORA_CONF_H #define __LORA_CONF_H #ifdef __cplusplus extern "C" { #endif /* Private Macros ------------------------------------------------------------*/ #define SENSORS_MEASURE_CYCLE (15000U) // Send packet every 15s #define SENSOR_ON true #define STRING_PACKET "YourName" // Uplink packet acknowledgment configuration #define UNCONFIRMED 0 #define CONFIRMED 1 // Mbed specific declaration AnalogIn temperatureSensor(A0); DigitalOut nucleoLED(LED1); /* 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 GetSensorData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port) { // Prepare an unconfirmed uplink packet for port 2 uint8_t size = 0; if(SENSOR_ON == true) { uint16_t temperatureValue = temperatureSensor.read_u16(); buffer[size++] = (temperatureValue >> 8) & 0xFF; buffer[size++] = temperatureValue & 0xFF; } else { char yourName[] = STRING_PACKET; for(uint8_t i = 0; (i < 11) && (yourName[i] != NULL); i++) { buffer[size++] = yourName[i]; } } *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; } } } #ifdef __cplusplus } #endif /* __cplusplus */ #endif