Fahad Mirza / Mbed 2 deprecated Nucleo_HXC900

Dependencies:   mbed

Committer:
fahadmirza
Date:
Thu Nov 01 21:57:57 2018 +0000
Revision:
26:176e648c03f6
Parent:
24:f3b987589609
Child:
27:517ca3a30ad7
Updated the device state enums because of the SLEEP_DEVICE state. Can't use DEVICE_SLEEP, one of mbed library is using it.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fahadmirza 0:a0c5877bd360 1 /*
fahadmirza 0:a0c5877bd360 2 _ _ _____ _______
fahadmirza 0:a0c5877bd360 3 | | | | |_ _| |__ __|
fahadmirza 0:a0c5877bd360 4 | |__| | __ ___ __ | | ___ | |
fahadmirza 0:a0c5877bd360 5 | __ |/ _` \ \/ / | | / _ \| |
fahadmirza 0:a0c5877bd360 6 | | | | (_| |> < _| || (_) | |
fahadmirza 0:a0c5877bd360 7 |_| |_|\__,_/_/\_\_____\___/|_|
fahadmirza 0:a0c5877bd360 8 (C)2017 HaxIoT
fahadmirza 0:a0c5877bd360 9 */
fahadmirza 0:a0c5877bd360 10 /*******************************************************************************
fahadmirza 22:5b77cf59d630 11 * @File : lora_driver.h
fahadmirza 22:5b77cf59d630 12 * @Author : Fahad Mirza (Haxiot)
fahadmirza 22:5b77cf59d630 13 * @Version : V1.0.0
fahadmirza 22:5b77cf59d630 14 * @Modified: 18 October, 2018
fahadmirza 22:5b77cf59d630 15 * @Brief : Header for driver lora_driver.h module
fahadmirza 0:a0c5877bd360 16 ******************************************************************************
fahadmirza 0:a0c5877bd360 17 * @attention
fahadmirza 0:a0c5877bd360 18 *
fahadmirza 0:a0c5877bd360 19 * <h2><center>&copy; COPYRIGHT(c) 2017 Haxiot</center></h2>
fahadmirza 0:a0c5877bd360 20 *
fahadmirza 0:a0c5877bd360 21 * Redistribution and use in source and binary forms, with or without modification,
fahadmirza 0:a0c5877bd360 22 * are permitted provided that the following conditions are met:
fahadmirza 0:a0c5877bd360 23 * 1. Redistributions of source code must retain the above copyright notice,
fahadmirza 0:a0c5877bd360 24 * this list of conditions and the following disclaimer.
fahadmirza 0:a0c5877bd360 25 * 2. Redistributions in binary form must reproduce the above copyright notice,
fahadmirza 0:a0c5877bd360 26 * this list of conditions and the following disclaimer in the documentation
fahadmirza 0:a0c5877bd360 27 * and/or other materials provided with the distribution.
fahadmirza 0:a0c5877bd360 28 * 3. Neither the name of Haxiot nor the names of its contributors
fahadmirza 0:a0c5877bd360 29 * may be used to endorse or promote products derived from this software
fahadmirza 0:a0c5877bd360 30 * without specific prior written permission.
fahadmirza 0:a0c5877bd360 31 *
fahadmirza 0:a0c5877bd360 32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
fahadmirza 0:a0c5877bd360 33 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
fahadmirza 0:a0c5877bd360 34 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
fahadmirza 0:a0c5877bd360 35 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
fahadmirza 0:a0c5877bd360 36 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
fahadmirza 0:a0c5877bd360 37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
fahadmirza 0:a0c5877bd360 38 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
fahadmirza 0:a0c5877bd360 39 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
fahadmirza 0:a0c5877bd360 40 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
fahadmirza 0:a0c5877bd360 41 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
fahadmirza 0:a0c5877bd360 42 *
fahadmirza 0:a0c5877bd360 43 ******************************************************************************
fahadmirza 0:a0c5877bd360 44 */
fahadmirza 0:a0c5877bd360 45
fahadmirza 0:a0c5877bd360 46 #ifndef __LORA_DRIVER_H
fahadmirza 0:a0c5877bd360 47 #define __LORA_DRIVER_H
fahadmirza 0:a0c5877bd360 48
fahadmirza 0:a0c5877bd360 49 #ifdef __cplusplus
fahadmirza 0:a0c5877bd360 50 extern "C" {
fahadmirza 0:a0c5877bd360 51 #endif
fahadmirza 0:a0c5877bd360 52
fahadmirza 0:a0c5877bd360 53 /* Exported types ------------------------------------------------------------*/
fahadmirza 0:a0c5877bd360 54 typedef enum eJoinMode
fahadmirza 0:a0c5877bd360 55 {
fahadmirza 0:a0c5877bd360 56 OTAA,
fahadmirza 0:a0c5877bd360 57 ABP
fahadmirza 0:a0c5877bd360 58 }eJoinMode_t;
fahadmirza 0:a0c5877bd360 59
fahadmirza 22:5b77cf59d630 60 typedef enum eConfirmationStatus
fahadmirza 22:5b77cf59d630 61 {
fahadmirza 22:5b77cf59d630 62 UNCONFIRMED = 0,
fahadmirza 22:5b77cf59d630 63 CONFIRMED = 1
fahadmirza 22:5b77cf59d630 64 }eConfirmationStatus_t;
fahadmirza 22:5b77cf59d630 65
fahadmirza 2:1ef859bc5cd2 66 typedef enum eAdrStatus
fahadmirza 2:1ef859bc5cd2 67 {
fahadmirza 2:1ef859bc5cd2 68 ADR_OFF = 0,
fahadmirza 2:1ef859bc5cd2 69 ADR_ON
fahadmirza 2:1ef859bc5cd2 70 }eAdrStatus_t;
fahadmirza 2:1ef859bc5cd2 71
fahadmirza 0:a0c5877bd360 72 typedef enum eJoinStatus
fahadmirza 0:a0c5877bd360 73 {
fahadmirza 0:a0c5877bd360 74 JOINED,
fahadmirza 0:a0c5877bd360 75 NOT_JOINED
fahadmirza 0:a0c5877bd360 76 }eJoinStatus_t;
fahadmirza 0:a0c5877bd360 77
fahadmirza 10:19da323c2bc0 78 // LoRaWAN State Machine states
fahadmirza 10:19da323c2bc0 79 typedef enum eDevicState
fahadmirza 10:19da323c2bc0 80 {
fahadmirza 26:176e648c03f6 81 CLIENT_INIT,
fahadmirza 26:176e648c03f6 82 CLIENT_CONFIG,
fahadmirza 26:176e648c03f6 83 CLIENT_JOIN,
fahadmirza 26:176e648c03f6 84 CLIENT_SEND,
fahadmirza 26:176e648c03f6 85 CLIENT_SLEEP,
fahadmirza 26:176e648c03f6 86 CLIENT_DATA_RECEIVED,
fahadmirza 26:176e648c03f6 87 CLIENT_JOIN_STATUS_CHECK
fahadmirza 10:19da323c2bc0 88 } eDeviceState_t;
fahadmirza 10:19da323c2bc0 89
fahadmirza 0:a0c5877bd360 90 typedef struct sLoraConfig
fahadmirza 0:a0c5877bd360 91 {
fahadmirza 24:f3b987589609 92 eJoinMode_t JoinMode;
fahadmirza 24:f3b987589609 93 eAdrStatus_t AdrStatus;
fahadmirza 24:f3b987589609 94 char Class;
fahadmirza 24:f3b987589609 95 char *DevEui;
fahadmirza 24:f3b987589609 96 char *AppEui;
fahadmirza 24:f3b987589609 97 char *AppKey;
fahadmirza 0:a0c5877bd360 98 }sLoraConfig_t;
fahadmirza 0:a0c5877bd360 99
fahadmirza 0:a0c5877bd360 100 typedef struct sLoraDriverParam
fahadmirza 0:a0c5877bd360 101 {
fahadmirza 0:a0c5877bd360 102 uint32_t SensorMeasureTime;
fahadmirza 10:19da323c2bc0 103 // Callbacks
fahadmirza 10:19da323c2bc0 104 void (*SendDataHandler)(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port);
fahadmirza 0:a0c5877bd360 105 void (*ReceiveDataHandler)(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port);
fahadmirza 0:a0c5877bd360 106 }sLoraDriverParam_t;
fahadmirza 0:a0c5877bd360 107
fahadmirza 0:a0c5877bd360 108 /* Public functions ----------------------------------------------------------*/
fahadmirza 0:a0c5877bd360 109 void Lora_init(sLoraConfig_t *loraConfig, sLoraDriverParam_t *loraDriverParam);
fahadmirza 0:a0c5877bd360 110 void Lora_fsm(void);
fahadmirza 0:a0c5877bd360 111
fahadmirza 10:19da323c2bc0 112 void Lora_ChangeDeviceState(eDeviceState_t newDeviceState);
fahadmirza 10:19da323c2bc0 113
fahadmirza 0:a0c5877bd360 114 #ifdef __cplusplus
fahadmirza 0:a0c5877bd360 115 }
fahadmirza 0:a0c5877bd360 116 #endif /* __cplusplus */
fahadmirza 0:a0c5877bd360 117
fahadmirza 0:a0c5877bd360 118 #endif