Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

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?

UserRevisionLine numberNew 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__