Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MinimouseSrc/Define.h@1:eda561b01daf, 2017-12-18 (annotated)
- 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?
User | Revision | Line number | New 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 */ |