DISCO-L072CZ-LRWAN1-base
Dependencies: BufferedSerial LoRaWAN-lib-st-murata ST-DEVKIT-LRWAN mbed
main.h@1:dcf49b02bfd9, 2017-12-04 (annotated)
- Committer:
- alphaemmeo
- Date:
- Mon Dec 04 14:28:30 2017 +0000
- Revision:
- 1:dcf49b02bfd9
- Parent:
- 0:60680ad16314
base porting
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alphaemmeo | 0:60680ad16314 | 1 | /* |
alphaemmeo | 0:60680ad16314 | 2 | * Copyright (c) Ivano Calabrese |
alphaemmeo | 0:60680ad16314 | 3 | * Licensed under the Apache License, Version 2.0); |
alphaemmeo | 0:60680ad16314 | 4 | */ |
alphaemmeo | 0:60680ad16314 | 5 | |
alphaemmeo | 0:60680ad16314 | 6 | #include "mbed.h" |
alphaemmeo | 0:60680ad16314 | 7 | #include "PinMap.h" |
alphaemmeo | 0:60680ad16314 | 8 | #include "BufferedSerial.h" |
alphaemmeo | 0:60680ad16314 | 9 | //#include "GenericPingPong.h" |
alphaemmeo | 0:60680ad16314 | 10 | |
alphaemmeo | 0:60680ad16314 | 11 | void SystemClock_Config(void); |
alphaemmeo | 0:60680ad16314 | 12 | |
alphaemmeo | 0:60680ad16314 | 13 | extern BufferedSerial *ser; |
alphaemmeo | 0:60680ad16314 | 14 | extern void dump(const char *title, const void *data, int len, bool dwords = false); |
alphaemmeo | 0:60680ad16314 | 15 | |
alphaemmeo | 0:60680ad16314 | 16 | #define dprintf(...) { ser->printf(__VA_ARGS__); ser->printf("\r\n"); } |
alphaemmeo | 0:60680ad16314 | 17 | |
alphaemmeo | 0:60680ad16314 | 18 | /*! |
alphaemmeo | 0:60680ad16314 | 19 | * Defines the application data transmission duty cycle. 5s, value in [ms]. |
alphaemmeo | 0:60680ad16314 | 20 | */ |
alphaemmeo | 0:60680ad16314 | 21 | #define APP_TX_DUTYCYCLE 60000 |
alphaemmeo | 0:60680ad16314 | 22 | |
alphaemmeo | 0:60680ad16314 | 23 | /*! |
alphaemmeo | 0:60680ad16314 | 24 | * Defines a random delay for application data transmission duty cycle. 1s, |
alphaemmeo | 0:60680ad16314 | 25 | * value in [ms]. |
alphaemmeo | 0:60680ad16314 | 26 | */ |
alphaemmeo | 0:60680ad16314 | 27 | #define APP_TX_DUTYCYCLE_RND 1000 |
alphaemmeo | 0:60680ad16314 | 28 | |
alphaemmeo | 0:60680ad16314 | 29 | |
alphaemmeo | 0:60680ad16314 | 30 | /*! |
alphaemmeo | 0:60680ad16314 | 31 | * LoRaWAN application port |
alphaemmeo | 0:60680ad16314 | 32 | */ |
alphaemmeo | 0:60680ad16314 | 33 | #define LORAWAN_APP_PORT 1 |
alphaemmeo | 0:60680ad16314 | 34 | |
alphaemmeo | 0:60680ad16314 | 35 | #define LORAWAN_APP_DATA_SIZE 1 |
alphaemmeo | 0:60680ad16314 | 36 | |
alphaemmeo | 0:60680ad16314 | 37 | /*! |
alphaemmeo | 0:60680ad16314 | 38 | * User application data buffer size |
alphaemmeo | 0:60680ad16314 | 39 | */ |
alphaemmeo | 0:60680ad16314 | 40 | #define LORAWAN_APP_DATA_MAX_SIZE 64 |
alphaemmeo | 0:60680ad16314 | 41 | |
alphaemmeo | 0:60680ad16314 | 42 | /*! |
alphaemmeo | 0:60680ad16314 | 43 | * Mote device IEEE EUI (big endian) |
alphaemmeo | 0:60680ad16314 | 44 | */ |
alphaemmeo | 0:60680ad16314 | 45 | //#define LORAWAN_DEVICE_EUI { IEEE_OUI, 0x44, 0x55, 0x66, 0x77, 0x88 } |
alphaemmeo | 0:60680ad16314 | 46 | #define LORAWAN_DEVICE_EUI { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11 } |
alphaemmeo | 0:60680ad16314 | 47 | |
alphaemmeo | 0:60680ad16314 | 48 | /*! |
alphaemmeo | 0:60680ad16314 | 49 | * Application IEEE EUI (big endian) |
alphaemmeo | 0:60680ad16314 | 50 | */ |
alphaemmeo | 0:60680ad16314 | 51 | #define LORAWAN_APPLICATION_EUI { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11 } |
alphaemmeo | 0:60680ad16314 | 52 | |
alphaemmeo | 0:60680ad16314 | 53 | /*! |
alphaemmeo | 0:60680ad16314 | 54 | * AES encryption/decryption cipher application key |
alphaemmeo | 0:60680ad16314 | 55 | */ |
alphaemmeo | 0:60680ad16314 | 56 | #define LORAWAN_APPLICATION_KEY { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11 } |
alphaemmeo | 0:60680ad16314 | 57 | |
alphaemmeo | 0:60680ad16314 | 58 | /*! |
alphaemmeo | 0:60680ad16314 | 59 | * When set to 1 the application uses the Over-the-Air activation procedure |
alphaemmeo | 0:60680ad16314 | 60 | * When set to 0 the application uses the Personalization activation procedure |
alphaemmeo | 0:60680ad16314 | 61 | */ |
alphaemmeo | 0:60680ad16314 | 62 | #define OVER_THE_AIR_ACTIVATION 0 |
alphaemmeo | 0:60680ad16314 | 63 | |
alphaemmeo | 0:60680ad16314 | 64 | /*! |
alphaemmeo | 0:60680ad16314 | 65 | * Indicates if the end-device is to be connected to a private or public network |
alphaemmeo | 0:60680ad16314 | 66 | */ |
alphaemmeo | 0:60680ad16314 | 67 | #define LORAWAN_PUBLIC_NETWORK true |
alphaemmeo | 0:60680ad16314 | 68 | |
alphaemmeo | 0:60680ad16314 | 69 | /*! |
alphaemmeo | 0:60680ad16314 | 70 | * Default datarate |
alphaemmeo | 0:60680ad16314 | 71 | */ |
alphaemmeo | 0:60680ad16314 | 72 | #define LORAWAN_DEFAULT_DATARATE DR_0 |
alphaemmeo | 0:60680ad16314 | 73 | |
alphaemmeo | 0:60680ad16314 | 74 | /*! |
alphaemmeo | 0:60680ad16314 | 75 | * LoRaWAN confirmed messages |
alphaemmeo | 0:60680ad16314 | 76 | */ |
alphaemmeo | 0:60680ad16314 | 77 | #define LORAWAN_CONFIRMED_MSG_ON false |
alphaemmeo | 0:60680ad16314 | 78 | |
alphaemmeo | 0:60680ad16314 | 79 | /*! |
alphaemmeo | 0:60680ad16314 | 80 | * Current network ID |
alphaemmeo | 0:60680ad16314 | 81 | */ |
alphaemmeo | 0:60680ad16314 | 82 | #define LORAWAN_NETWORK_ID ( uint32_t )0 |
alphaemmeo | 0:60680ad16314 | 83 | |
alphaemmeo | 0:60680ad16314 | 84 | /*! |
alphaemmeo | 0:60680ad16314 | 85 | * Device address on the network (big endian) |
alphaemmeo | 0:60680ad16314 | 86 | */ |
alphaemmeo | 0:60680ad16314 | 87 | #define LORAWAN_DEVICE_ADDRESS ( uint32_t )0x12345678 |
alphaemmeo | 0:60680ad16314 | 88 | |
alphaemmeo | 0:60680ad16314 | 89 | /*! |
alphaemmeo | 0:60680ad16314 | 90 | * AES encryption/decryption cipher network session key |
alphaemmeo | 0:60680ad16314 | 91 | */ |
alphaemmeo | 0:60680ad16314 | 92 | #define LORAWAN_NWKSKEY { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } |
alphaemmeo | 0:60680ad16314 | 93 | |
alphaemmeo | 0:60680ad16314 | 94 | /*! |
alphaemmeo | 0:60680ad16314 | 95 | * AES encryption/decryption cipher application session key |
alphaemmeo | 0:60680ad16314 | 96 | */ |
alphaemmeo | 0:60680ad16314 | 97 | #define LORAWAN_APPSKEY { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } |
alphaemmeo | 0:60680ad16314 | 98 | |
alphaemmeo | 0:60680ad16314 | 99 | /*! |
alphaemmeo | 0:60680ad16314 | 100 | * LoRaWAN Adaptive Data Rate |
alphaemmeo | 0:60680ad16314 | 101 | * |
alphaemmeo | 0:60680ad16314 | 102 | * \remark Please note that when ADR is enabled the end-device should be static |
alphaemmeo | 0:60680ad16314 | 103 | */ |
alphaemmeo | 0:60680ad16314 | 104 | #define LORAWAN_ADR_ON 1 |
alphaemmeo | 0:60680ad16314 | 105 | |
alphaemmeo | 0:60680ad16314 | 106 | #if defined( USE_BAND_868 ) |
alphaemmeo | 0:60680ad16314 | 107 | |
alphaemmeo | 0:60680ad16314 | 108 | /*! |
alphaemmeo | 0:60680ad16314 | 109 | * LoRaWAN ETSI duty cycle control enable/disable |
alphaemmeo | 0:60680ad16314 | 110 | * |
alphaemmeo | 0:60680ad16314 | 111 | * \remark Please note that ETSI mandates duty cycled transmissions. Use only for test purposes |
alphaemmeo | 0:60680ad16314 | 112 | */ |
alphaemmeo | 0:60680ad16314 | 113 | #define LORAWAN_DUTYCYCLE_ON false |
alphaemmeo | 0:60680ad16314 | 114 | |
alphaemmeo | 0:60680ad16314 | 115 | #define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } |
alphaemmeo | 0:60680ad16314 | 116 | #define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } |
alphaemmeo | 0:60680ad16314 | 117 | #define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } |
alphaemmeo | 0:60680ad16314 | 118 | #define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } |
alphaemmeo | 0:60680ad16314 | 119 | #define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } |
alphaemmeo | 0:60680ad16314 | 120 | #define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } |
alphaemmeo | 0:60680ad16314 | 121 | #define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } |
alphaemmeo | 0:60680ad16314 | 122 | |
alphaemmeo | 0:60680ad16314 | 123 | #endif |
alphaemmeo | 0:60680ad16314 | 124 | |
alphaemmeo | 0:60680ad16314 | 125 | /*! |
alphaemmeo | 0:60680ad16314 | 126 | * Indicates if the MAC layer network join status has changed. |
alphaemmeo | 0:60680ad16314 | 127 | */ |
alphaemmeo | 0:60680ad16314 | 128 | static bool IsNetworkJoinedStatusUpdate = false; |