fholin fholin / Mbed 2 deprecated MiniMousetest

Dependencies:   mbed

Committer:
fholin
Date:
Mon Dec 18 16:31:11 2017 +0000
Revision:
1:eda561b01daf
Parent:
0:2325d1d28df3
inline with github repository : ; https://github.com/LoRaWanMiniMouse/Mini-Mouse.git

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fholin 0:2325d1d28df3 1 /*
fholin 0:2325d1d28df3 2
fholin 0:2325d1d28df3 3 __ __ _ _
fholin 0:2325d1d28df3 4 | \/ (_) (_)
fholin 0:2325d1d28df3 5 | \ / |_ _ __ _ _ __ ___ ___ _ _ ___ ___
fholin 0:2325d1d28df3 6 | |\/| | | '_ \| | '_ ` _ \ / _ \| | | / __|/ _ \
fholin 0:2325d1d28df3 7 | | | | | | | | | | | | | | (_) | |_| \__ \ __/
fholin 0:2325d1d28df3 8 |_| |_|_|_| |_|_|_| |_| |_|\___/ \__,_|___/\___|
fholin 0:2325d1d28df3 9
fholin 0:2325d1d28df3 10
fholin 0:2325d1d28df3 11 Description : Dedine for loraMac Layer.
fholin 0:2325d1d28df3 12
fholin 0:2325d1d28df3 13
fholin 0:2325d1d28df3 14 License : Revised BSD License, see LICENSE.TXT file include in the project
fholin 0:2325d1d28df3 15
fholin 0:2325d1d28df3 16 Maintainer : Fabien Holin (SEMTECH)
fholin 0:2325d1d28df3 17 */
fholin 0:2325d1d28df3 18 #ifndef DEFINE_H
fholin 0:2325d1d28df3 19 #define DEFINE_H
fholin 0:2325d1d28df3 20 #include "mbed.h"
fholin 0:2325d1d28df3 21
fholin 0:2325d1d28df3 22 /********************************************************************************/
fholin 1:eda561b01daf 23 /* PINOUT Platform dependant */
fholin 1:eda561b01daf 24 /********************************************************************************/
fholin 1:eda561b01daf 25 // MURATA // sx1276 MBAS
fholin 1:eda561b01daf 26 #define LORA_SPI_MOSI PA_7 // D11
fholin 1:eda561b01daf 27 #define LORA_SPI_MISO PA_6 // D12
fholin 1:eda561b01daf 28 #define LORA_SPI_SCLK PB_3 // D13
fholin 1:eda561b01daf 29 #define LORA_CS PA_15 // D10
fholin 1:eda561b01daf 30 #define LORA_RESET PC_0 // A0
fholin 1:eda561b01daf 31 #define TX_RX_IT PB_4 // D2
fholin 1:eda561b01daf 32 #define RX_TIMEOUT_IT PB_1 // D3
fholin 1:eda561b01daf 33 #define SERIAL_TX PA_9 // D0
fholin 1:eda561b01daf 34 #define SERIAL_RX PA_10 // D1
fholin 1:eda561b01daf 35
fholin 1:eda561b01daf 36
fholin 1:eda561b01daf 37 /********************************************************************************/
fholin 1:eda561b01daf 38 /* LORA KEYS USER Specific */
fholin 1:eda561b01daf 39 /********************************************************************************/
fholin 1:eda561b01daf 40 static uint8_t LoRaMacNwkSKey[] =
fholin 1:eda561b01daf 41 { 0x94, 0x02, 0x9E, 0xAB, 0xE9, 0x0C, 0xE3, 0xCF, 0x51, 0xA2, 0x31, 0x7F, 0x03, 0x27, 0xEF, 0xA6 };
fholin 1:eda561b01daf 42
fholin 1:eda561b01daf 43 /*!
fholin 1:eda561b01daf 44 * AES encryption/decryption cipher application session key
fholin 1:eda561b01daf 45 */
fholin 1:eda561b01daf 46 static uint8_t LoRaMacAppSKey[] =
fholin 1:eda561b01daf 47 { 0xBB, 0xEB, 0xEB, 0x4D, 0x5C, 0xAF, 0x95, 0x5D, 0x33, 0xD1, 0xC0, 0xC4, 0x41, 0x55, 0xB5, 0xA1 };
fholin 1:eda561b01daf 48
fholin 1:eda561b01daf 49
fholin 1:eda561b01daf 50 static uint8_t LoRaMacAppKey[] =
fholin 1:eda561b01daf 51 { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11};
fholin 1:eda561b01daf 52 static uint8_t AppEui[] =
fholin 1:eda561b01daf 53 { 0x70, 0xB3, 0xD5, 0x7E, 0xF0, 0x00, 0x36, 0x12 };
fholin 1:eda561b01daf 54
fholin 1:eda561b01daf 55
fholin 1:eda561b01daf 56 static uint8_t DevEui[] =
fholin 1:eda561b01daf 57 { 0x33, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33 };
fholin 1:eda561b01daf 58
fholin 1:eda561b01daf 59
fholin 1:eda561b01daf 60
fholin 1:eda561b01daf 61
fholin 1:eda561b01daf 62
fholin 1:eda561b01daf 63 /********************************************************************************/
fholin 0:2325d1d28df3 64 /* LoraWan Process States */
fholin 0:2325d1d28df3 65 /********************************************************************************/
fholin 0:2325d1d28df3 66
fholin 0:2325d1d28df3 67 typedef enum LoraWan_Process_States {
fholin 0:2325d1d28df3 68 LWPSTATE_IDLE ,
fholin 0:2325d1d28df3 69 LWPSTATE_SEND ,
fholin 0:2325d1d28df3 70 LWPSTATE_RX1 ,
fholin 0:2325d1d28df3 71 LWPSTATE_RX2 ,
fholin 0:2325d1d28df3 72 LWPSTATE_PROCESSDOWNLINK ,
fholin 0:2325d1d28df3 73 LWPSTATE_UPDATEMAC,
fholin 0:2325d1d28df3 74 LWPSTATE_TXWAIT,
fholin 0:2325d1d28df3 75 LWPSTATE_ERROR
fholin 0:2325d1d28df3 76 } eLoraWan_Process_States;
fholin 0:2325d1d28df3 77 /********************************************************************************/
fholin 0:2325d1d28df3 78 /* Timer Process States */
fholin 0:2325d1d28df3 79 /********************************************************************************/
fholin 0:2325d1d28df3 80 enum{
fholin 0:2325d1d28df3 81 TIMERSTATE_SLEEP,
fholin 0:2325d1d28df3 82 TIMERSTATE_RUNNING
fholin 0:2325d1d28df3 83 };
fholin 0:2325d1d28df3 84
fholin 0:2325d1d28df3 85 /*****************************************************************************/
fholin 0:2325d1d28df3 86 /* Radio Process States */
fholin 0:2325d1d28df3 87 /*****************************************************************************/
fholin 0:2325d1d28df3 88
fholin 0:2325d1d28df3 89 enum{
fholin 0:2325d1d28df3 90 RADIOSTATE_IDLE,
fholin 0:2325d1d28df3 91 RADIOSTATE_TXON,
fholin 0:2325d1d28df3 92 RADIOSTATE_TXFINISHED,
fholin 0:2325d1d28df3 93 RADIOSTATE_RX1FINISHED,
fholin 0:2325d1d28df3 94 // RADIOSTATE_RX2FINISHED
fholin 0:2325d1d28df3 95 };
fholin 0:2325d1d28df3 96
fholin 0:2325d1d28df3 97
fholin 0:2325d1d28df3 98 /********************************************************************************/
fholin 0:2325d1d28df3 99 /* LoraWan Mac Layer Parameters */
fholin 0:2325d1d28df3 100 /********************************************************************************/
fholin 0:2325d1d28df3 101 enum{
fholin 0:2325d1d28df3 102 JOINREQUEST,
fholin 0:2325d1d28df3 103 JOINACCEPT,
fholin 0:2325d1d28df3 104 UNCONFDATAUP,
fholin 0:2325d1d28df3 105 UNCONFDATADOWN,
fholin 0:2325d1d28df3 106 CONFDATAUP,
fholin 0:2325d1d28df3 107 CONFDATADOWN,
fholin 0:2325d1d28df3 108 REJOINREQUEST,
fholin 0:2325d1d28df3 109 PROPRIETARY,
fholin 0:2325d1d28df3 110 };
fholin 0:2325d1d28df3 111
fholin 0:2325d1d28df3 112 enum{
fholin 0:2325d1d28df3 113 LORAWANR1,
fholin 0:2325d1d28df3 114 RFU,
fholin 0:2325d1d28df3 115 };
fholin 0:2325d1d28df3 116
fholin 0:2325d1d28df3 117 enum {
fholin 0:2325d1d28df3 118 LINK_CHECK_REQ,
fholin 0:2325d1d28df3 119 LINK_CHECK_ANS,
fholin 0:2325d1d28df3 120 LINK_ADR_REQ,
fholin 0:2325d1d28df3 121 LINK_ADR_ANS,
fholin 0:2325d1d28df3 122 DUTY_CYCLE_REQ,
fholin 0:2325d1d28df3 123 DUTY_CYCLE_ANS,
fholin 0:2325d1d28df3 124 RXPARRAM_SETUP_REQ,
fholin 0:2325d1d28df3 125 RXPARRAM_SETUP_ANS,
fholin 0:2325d1d28df3 126 DEV_STATUS_REQ,
fholin 0:2325d1d28df3 127 DEV_STATUS_ANS,
fholin 0:2325d1d28df3 128 NEW_CHANNEL_REQ,
fholin 0:2325d1d28df3 129 NEW_CHANNEL_ANS,
fholin 0:2325d1d28df3 130 RXTIMING_SETUP_REQ,
fholin 0:2325d1d28df3 131 RXTIMING_SETUP_ANS,
fholin 0:2325d1d28df3 132 };
fholin 1:eda561b01daf 133 enum {
fholin 1:eda561b01daf 134 LINK_CHECK_REQ_SIZE ,
fholin 1:eda561b01daf 135 LINK_CHECK_ANS_SIZE ,
fholin 1:eda561b01daf 136 LINK_ADR_REQ_SIZE,
fholin 1:eda561b01daf 137 LINK_ADR_ANS_SIZE,
fholin 1:eda561b01daf 138 DUTY_CYCLE_REQ_SIZE,
fholin 1:eda561b01daf 139 DUTY_CYCLE_ANS_SIZE,
fholin 1:eda561b01daf 140 RXPARRAM_SETUP_REQ_SIZE,
fholin 1:eda561b01daf 141 RXPARRAM_SETUP_ANS_SIZE,
fholin 1:eda561b01daf 142 DEV_STATUS_REQ_SIZE,
fholin 1:eda561b01daf 143 DEV_STATUS_ANS_SIZE,
fholin 1:eda561b01daf 144 NEW_CHANNEL_REQ_SIZE,
fholin 1:eda561b01daf 145 NEW_CHANNEL_ANS_SIZE,
fholin 1:eda561b01daf 146 RXTIMING_SETUP_REQ_SIZE,
fholin 1:eda561b01daf 147 RXTIMING_SETUP_ANS_SIZE ,
fholin 1:eda561b01daf 148 };
fholin 1:eda561b01daf 149
fholin 0:2325d1d28df3 150 #define RX1DELAY 1000 // define in ms
fholin 0:2325d1d28df3 151 #define RX1DELAYJOIN 5000 // define in ms
fholin 0:2325d1d28df3 152 #define MAX_FCNT_GAP 16384
fholin 0:2325d1d28df3 153 #define MINLORAWANPAYLOADSIZE 13
fholin 0:2325d1d28df3 154 #define PORTNWK 0
fholin 0:2325d1d28df3 155 /*****************************************************************************/
fholin 0:2325d1d28df3 156 /* Lora Phy Irg Flags Parameters */
fholin 0:2325d1d28df3 157 /*****************************************************************************/
fholin 0:2325d1d28df3 158
fholin 0:2325d1d28df3 159 enum{
fholin 0:2325d1d28df3 160 RXTIMEOUTIRQFLAG = 0x80,
fholin 0:2325d1d28df3 161 RECEIVEPACKETIRQFLAG = 0x40,
fholin 0:2325d1d28df3 162 BADPACKETIRQFLAG = 0x60,
fholin 0:2325d1d28df3 163 };
fholin 0:2325d1d28df3 164
fholin 0:2325d1d28df3 165
fholin 0:2325d1d28df3 166 /********************************************************************************/
fholin 0:2325d1d28df3 167 /* Code implementation Parameters */
fholin 0:2325d1d28df3 168 /********************************************************************************/
fholin 0:2325d1d28df3 169 #define MSB32FIRST( x ) ( ( ( x & 0x000000FF ) << 24 ) + ( ( x & 0x0000FF00 ) << 8 ) + ( ( x & 0x00FF0000 ) >> 8 ) + ( ( x & 0xFF000000 ) >> 24 ) )
fholin 0:2325d1d28df3 170 #define MSB16FIRST( x ) ( ( ( x & 0x00FF ) << 8 ) + ( ( x & 0xFF00 ) >> 8 ) )
fholin 0:2325d1d28df3 171 #define MAXTXPAYLOADSIZE 255
fholin 0:2325d1d28df3 172 #define FHDROFFSET 9 // MHDR+FHDR offset if OPT = 0 + fport
fholin 0:2325d1d28df3 173 #define MICSIZE 4
fholin 0:2325d1d28df3 174 #define FLASH_UPDATE_PERIOD 4
fholin 0:2325d1d28df3 175 /*!
fholin 0:2325d1d28df3 176 * Frame direction definition for up-link communications
fholin 0:2325d1d28df3 177 */
fholin 0:2325d1d28df3 178 #define UP_LINK 0
fholin 0:2325d1d28df3 179
fholin 0:2325d1d28df3 180 /*!
fholin 0:2325d1d28df3 181 * Frame direction definition for down-link communications
fholin 0:2325d1d28df3 182 */
fholin 0:2325d1d28df3 183 #define DOWN_LINK 1
fholin 0:2325d1d28df3 184
fholin 0:2325d1d28df3 185 /*User Confi for Adr Mode select*/
fholin 0:2325d1d28df3 186 typedef enum eDataRateStrategy{
fholin 0:2325d1d28df3 187 STATICADRMODE,
fholin 0:2325d1d28df3 188 MOBILELONGRANGEADRMODE,
fholin 0:2325d1d28df3 189 MOBILELOWPOWERADRMODE,
fholin 0:2325d1d28df3 190 } eDataRateStrategy;
fholin 0:2325d1d28df3 191
fholin 1:eda561b01daf 192 typedef enum {
fholin 0:2325d1d28df3 193 ERRORLORAWAN = -1,
fholin 0:2325d1d28df3 194 OKLORAWAN = 0,
fholin 1:eda561b01daf 195 }eStatusLoRaWan;
fholin 0:2325d1d28df3 196
fholin 1:eda561b01daf 197 typedef enum {
fholin 0:2325d1d28df3 198 NOVALIDRXPACKET,
fholin 0:2325d1d28df3 199 USERRXPACKET,
fholin 1:eda561b01daf 200 USERRX_FOPTSPACKET,
fholin 0:2325d1d28df3 201 NWKRXPACKET,
fholin 0:2325d1d28df3 202 JOINACCEPTPACKET,
fholin 1:eda561b01daf 203 } eRxPacketType;
fholin 0:2325d1d28df3 204 enum {
fholin 0:2325d1d28df3 205 RX1,
fholin 0:2325d1d28df3 206 RX2
fholin 0:2325d1d28df3 207 };
fholin 0:2325d1d28df3 208 /*************************/
fholin 0:2325d1d28df3 209 /* SHARE WITH USER */
fholin 0:2325d1d28df3 210 /*************************/
fholin 0:2325d1d28df3 211 enum {
fholin 0:2325d1d28df3 212 NOLORARXPACKETAVAILABLE,
fholin 0:2325d1d28df3 213 LORARXPACKETAVAILABLE,
fholin 0:2325d1d28df3 214 };
fholin 0:2325d1d28df3 215
fholin 0:2325d1d28df3 216 enum {
fholin 0:2325d1d28df3 217 NOTJOINED,
fholin 0:2325d1d28df3 218 ISJOINED,
fholin 0:2325d1d28df3 219 };
fholin 0:2325d1d28df3 220
fholin 0:2325d1d28df3 221 enum {
fholin 0:2325d1d28df3 222 NOFRAME_TOSEND,
fholin 0:2325d1d28df3 223 NWKFRAME_TOSEND,
fholin 0:2325d1d28df3 224 USERACK_TOSEND,
fholin 0:2325d1d28df3 225 };
fholin 0:2325d1d28df3 226
fholin 0:2325d1d28df3 227 /*************************/
fholin 0:2325d1d28df3 228 /* API CRYPTO */
fholin 0:2325d1d28df3 229 /*************************/
fholin 0:2325d1d28df3 230 enum {
fholin 0:2325d1d28df3 231 UNICASTKEY,
fholin 0:2325d1d28df3 232 };
fholin 0:2325d1d28df3 233 #endif
fholin 0:2325d1d28df3 234 /* pense bete minimouse)
fholin 0:2325d1d28df3 235
fholin 0:2325d1d28df3 236 SendPayload(uint8_t fPort,const uint8_t* dataIn,const uint16_t sizeIn, uint8_t* dataReceive,uint16_t *sizeOut) api
fholin 0:2325d1d28df3 237 loraWanContainer.MType = UNCONFDATAUP;//tbupdate Mtype should become a parameter of SendPayload */