Exportable version of WizziLab's modem driver.
include/lwan.h@56:67e3d9608403, 2021-01-27 (annotated)
- Committer:
- Jeej
- Date:
- Wed Jan 27 14:45:28 2021 +0000
- Revision:
- 56:67e3d9608403
- Parent:
- include/lora.h@55:7759000f5dee
Sanity commit. Do not use.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jeej | 56:67e3d9608403 | 1 | /// @copyright |
Jeej | 56:67e3d9608403 | 2 | /// ========================================================================={{{ |
Jeej | 56:67e3d9608403 | 3 | /// Copyright (c) 2012-2020 WizziLab / |
Jeej | 56:67e3d9608403 | 4 | /// All rights reserved / |
Jeej | 56:67e3d9608403 | 5 | /// =========================================================================}}} |
Jeej | 56:67e3d9608403 | 6 | /// @endcopyright |
Jeej | 19:701d5669f2e9 | 7 | |
Jeej | 56:67e3d9608403 | 8 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 9 | /// @file lwan.h |
Jeej | 56:67e3d9608403 | 10 | /// @brief LWAN Module headers |
Jeej | 56:67e3d9608403 | 11 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 12 | |
Jeej | 56:67e3d9608403 | 13 | #ifndef __LWAN_H__ |
Jeej | 56:67e3d9608403 | 14 | #define __LWAN_H__ |
Jeej | 19:701d5669f2e9 | 15 | |
Jeej | 56:67e3d9608403 | 16 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 17 | /// LoRa ISM Bands |
Jeej | 56:67e3d9608403 | 18 | // ======================================================================= |
Jeej | 19:701d5669f2e9 | 19 | typedef enum |
Jeej | 19:701d5669f2e9 | 20 | { |
Jeej | 19:701d5669f2e9 | 21 | ISM_BAND_470, |
Jeej | 19:701d5669f2e9 | 22 | ISM_BAND_780, |
Jeej | 19:701d5669f2e9 | 23 | ISM_BAND_433, |
Jeej | 19:701d5669f2e9 | 24 | ISM_BAND_868, |
Jeej | 19:701d5669f2e9 | 25 | ISM_BAND_915, |
Jeej | 19:701d5669f2e9 | 26 | ISM_BAND_QTY, |
Jeej | 19:701d5669f2e9 | 27 | |
Jeej | 56:67e3d9608403 | 28 | } lwan_ism_band_t; |
Jeej | 56:67e3d9608403 | 29 | |
Jeej | 56:67e3d9608403 | 30 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 31 | /// |
Jeej | 56:67e3d9608403 | 32 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 33 | TYPEDEF_STRUCT_PACKED |
Jeej | 56:67e3d9608403 | 34 | { |
Jeej | 56:67e3d9608403 | 35 | // LoRaWAN device class |
Jeej | 56:67e3d9608403 | 36 | u8 dev_class; |
Jeej | 56:67e3d9608403 | 37 | // Activation state of adaptativeDatarate |
Jeej | 56:67e3d9608403 | 38 | u8 adr_enable; |
Jeej | 56:67e3d9608403 | 39 | // Uplink datarate, if adr_enable is off |
Jeej | 56:67e3d9608403 | 40 | s8 tx_datarate; |
Jeej | 56:67e3d9608403 | 41 | // ISM Band |
Jeej | 56:67e3d9608403 | 42 | u8 ism_band; |
Jeej | 56:67e3d9608403 | 43 | // Number of join attempts; |
Jeej | 56:67e3d9608403 | 44 | u8 join_trials; |
Jeej | 56:67e3d9608403 | 45 | // Rejoin period (hours) |
Jeej | 56:67e3d9608403 | 46 | u8 rejoin_period; |
Jeej | 56:67e3d9608403 | 47 | |
Jeej | 56:67e3d9608403 | 48 | } lwan_cfg_t; |
Jeej | 56:67e3d9608403 | 49 | #define FS_LWAN_CFG_SIZE (sizeof(lwan_cfg_t)) |
Jeej | 56:67e3d9608403 | 50 | |
Jeej | 56:67e3d9608403 | 51 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 52 | /// |
Jeej | 56:67e3d9608403 | 53 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 54 | TYPEDEF_STRUCT_PACKED |
Jeej | 56:67e3d9608403 | 55 | { |
Jeej | 56:67e3d9608403 | 56 | // Application identifier |
Jeej | 56:67e3d9608403 | 57 | u8 app_id[8]; |
Jeej | 56:67e3d9608403 | 58 | // Application key |
Jeej | 56:67e3d9608403 | 59 | u8 app_key[16]; |
Jeej | 56:67e3d9608403 | 60 | |
Jeej | 56:67e3d9608403 | 61 | } lwan_nls_t; |
Jeej | 56:67e3d9608403 | 62 | #define FS_LWAN_NLS_SIZE (sizeof(lwan_nls_t)) |
Jeej | 56:67e3d9608403 | 63 | |
Jeej | 56:67e3d9608403 | 64 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 65 | /// |
Jeej | 56:67e3d9608403 | 66 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 67 | #define FS_LWAN_STATUS_FREQS 8 |
Jeej | 56:67e3d9608403 | 68 | TYPEDEF_STRUCT_PACKED |
Jeej | 56:67e3d9608403 | 69 | { |
Jeej | 56:67e3d9608403 | 70 | // Indicates if the MAC layer has already joined a network. |
Jeej | 56:67e3d9608403 | 71 | bool IsNetworkJoined; |
Jeej | 56:67e3d9608403 | 72 | |
Jeej | 56:67e3d9608403 | 73 | // Network ID ( 3 bytes ) |
Jeej | 56:67e3d9608403 | 74 | uint32_t NetID; |
Jeej | 56:67e3d9608403 | 75 | |
Jeej | 56:67e3d9608403 | 76 | // ISM Band |
Jeej | 56:67e3d9608403 | 77 | uint8_t IsmBand; |
Jeej | 56:67e3d9608403 | 78 | |
Jeej | 56:67e3d9608403 | 79 | // Indicates if the node is connected to a _private or network |
Jeej | 56:67e3d9608403 | 80 | bool PublicNetwork; |
Jeej | 19:701d5669f2e9 | 81 | |
Jeej | 56:67e3d9608403 | 82 | // ADR control status |
Jeej | 56:67e3d9608403 | 83 | bool AdrCtrlOn; |
Jeej | 56:67e3d9608403 | 84 | |
Jeej | 56:67e3d9608403 | 85 | // Enables/Disables duty cycle management (Test only) |
Jeej | 56:67e3d9608403 | 86 | bool DutyCycleOn; |
Jeej | 56:67e3d9608403 | 87 | |
Jeej | 56:67e3d9608403 | 88 | // Maximum duty cycle |
Jeej | 56:67e3d9608403 | 89 | uint8_t MaxDCycle; |
Jeej | 56:67e3d9608403 | 90 | |
Jeej | 56:67e3d9608403 | 91 | // frame counter. Each time a packet is sent the counter is incremented. Only the 16 LSB bits are sent |
Jeej | 56:67e3d9608403 | 92 | uint32_t UpLinkCounter; |
Jeej | 56:67e3d9608403 | 93 | |
Jeej | 56:67e3d9608403 | 94 | // frame counter. Each time a packet is received the counter is incremented. Only the 16 LSB bits are received |
Jeej | 56:67e3d9608403 | 95 | uint32_t DownLinkCounter; |
Jeej | 56:67e3d9608403 | 96 | |
Jeej | 56:67e3d9608403 | 97 | // Counts the number of missed ADR acknowledgements |
Jeej | 56:67e3d9608403 | 98 | uint32_t AdrAckCounter; |
Jeej | 56:67e3d9608403 | 99 | |
Jeej | 56:67e3d9608403 | 100 | // Channels TX power |
Jeej | 56:67e3d9608403 | 101 | int8_t TxPower; |
Jeej | 56:67e3d9608403 | 102 | |
Jeej | 56:67e3d9608403 | 103 | // Channels data rate |
Jeej | 56:67e3d9608403 | 104 | int8_t TxDr; |
Jeej | 56:67e3d9608403 | 105 | |
Jeej | 56:67e3d9608403 | 106 | // Datarate offset between uplink and downlink on first window |
Jeej | 56:67e3d9608403 | 107 | uint8_t Rx1DrOffset; |
Jeej | 19:701d5669f2e9 | 108 | |
Jeej | 56:67e3d9608403 | 109 | // 2nd reception window frequency |
Jeej | 56:67e3d9608403 | 110 | uint32_t Rx2ChannelFreq; |
Jeej | 56:67e3d9608403 | 111 | |
Jeej | 56:67e3d9608403 | 112 | // 2nd reception window Datarate frequency |
Jeej | 56:67e3d9608403 | 113 | uint8_t Rx2ChannelDr; |
Jeej | 56:67e3d9608403 | 114 | |
Jeej | 56:67e3d9608403 | 115 | // Mask indicating which channels are enabled |
Jeej | 56:67e3d9608403 | 116 | uint32_t TxFreqs[FS_LWAN_STATUS_FREQS]; |
Jeej | 56:67e3d9608403 | 117 | |
Jeej | 56:67e3d9608403 | 118 | } lwan_status_t; |
Jeej | 56:67e3d9608403 | 119 | #define FS_LWAN_STATUS_SIZE (sizeof(lwan_status_t)) |
Jeej | 19:701d5669f2e9 | 120 | |
Jeej | 56:67e3d9608403 | 121 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 122 | /// Classes |
Jeej | 56:67e3d9608403 | 123 | // ======================================================================= |
Jeej | 56:67e3d9608403 | 124 | typedef enum |
Jeej | 56:67e3d9608403 | 125 | { |
Jeej | 56:67e3d9608403 | 126 | // LoRaWAN device class A |
Jeej | 56:67e3d9608403 | 127 | // LoRaWAN Specification V1.0, chapter 3ff |
Jeej | 56:67e3d9608403 | 128 | LWAN_CLASS_A, |
Jeej | 56:67e3d9608403 | 129 | // LoRaWAN device class B |
Jeej | 56:67e3d9608403 | 130 | // LoRaWAN Specification V1.0, chapter 8ff |
Jeej | 56:67e3d9608403 | 131 | LWAN_CLASS_B, |
Jeej | 56:67e3d9608403 | 132 | // LoRaWAN device class C |
Jeej | 56:67e3d9608403 | 133 | // LoRaWAN Specification V1.0, chapter 17ff |
Jeej | 56:67e3d9608403 | 134 | LWAN_CLASS_C, |
Jeej | 56:67e3d9608403 | 135 | |
Jeej | 56:67e3d9608403 | 136 | } lwan_dev_class_t; |
Jeej | 56:67e3d9608403 | 137 | |
Jeej | 56:67e3d9608403 | 138 | #endif // __LWAN_H__ |