The Modified Dot Library for SX1272
This version has been restoring as initial changes.
Verify the following dependencies:
Mbed-os 5.11 libmdot 3.2.0 for Mbed OS5.11
ChannelPlan.h@82:bfca91bb8341, 2020-07-10 (annotated)
- Committer:
- DanistyWuKids
- Date:
- Fri Jul 10 23:47:58 2020 +1000
- Branch:
- old_stable_update
- Revision:
- 82:bfca91bb8341
- Parent:
- 65:acc0468b9aec
- Child:
- 68:5f787643e7d7
Update same as on 75:268c51ddfc06
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 1 | /** __ ___ ____ _ ______ __ ____ __ ____ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 2 | * / |/ /_ __/ / /_(_)__/_ __/__ ____/ / / __/_ _____ / /____ __ _ ___ / _/__ ____ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 3 | * / /|_/ / // / / __/ /___// / / -_) __/ _ \ _\ \/ // (_-</ __/ -_) ' \(_-< _/ // _ \/ __/ __ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 4 | * /_/ /_/\_,_/_/\__/_/ /_/ \__/\__/_//_/ /___/\_, /___/\__/\__/_/_/_/___/ /___/_//_/\__/ /_/ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 5 | * Copyright (C) 2015 by Multi-Tech Systems /___/ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 6 | * |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 7 | * |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 8 | * @author Jason Reiss |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 9 | * @date 10-31-2015 |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 10 | * @brief lora::ChannelPlan provides an interface for LoRaWAN channel schemes |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 11 | * |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 12 | * @details |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 13 | * |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 14 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 15 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 16 | #ifndef __CHANNEL_STRATEGY_H__ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 17 | #define __CHANNEL_STRATEGY_H__ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 18 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 19 | #include "mbed_events.h" |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 20 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 21 | #include "Lora.h" |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 22 | #include "SxRadio.h" |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 23 | #include <vector> |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 24 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 25 | namespace lora { |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 26 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 27 | class ChannelPlan { |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 28 | public: |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 29 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 30 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 31 | * Descriptions for channel plans & region information. |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 32 | * Bits 0-2 represent the plan type (fixed or dynamic) |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 33 | * 0b000 cannot be used as plans may line up with old definitions and cause much badness |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 34 | * 0b001 fixed channel plans |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 35 | * 0b010 dynamic channel plans |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 36 | * 0b011 - 0b111 RFU |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 37 | * Bits 3-7 represent the specific channel plan/region within the plan type |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 38 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 39 | enum PlanType { |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 40 | FIXED = 0x20, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 41 | DYNAMIC = 0x40, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 42 | }; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 43 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 44 | enum Plan { |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 45 | EU868_OLD = 0x00, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 46 | US915_OLD = 0x01, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 47 | AU915_OLD = 0x02, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 48 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 49 | FB_EU868 = 0x00, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 50 | FB_US915 = 0x01, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 51 | FB_AU915 = 0x02, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 52 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 53 | FB_868 = 0x00, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 54 | FB_915 = 0x01, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 55 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 56 | US915 = FIXED | 0x00, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 57 | AU915 = FIXED | 0x01, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 58 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 59 | EU868 = DYNAMIC | 0x00, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 60 | IN865 = DYNAMIC | 0x01, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 61 | AS923 = DYNAMIC | 0x02, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 62 | KR920 = DYNAMIC | 0x03, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 63 | AS923_JAPAN = DYNAMIC | 0x04, |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 64 | RU864 = DYNAMIC | 0x05, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 65 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 66 | NONE = 0xFF, |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 67 | }; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 68 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 69 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 70 | * ChannelPlan constructor |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 71 | * @param radio SxRadio object used to set Tx/Rx config |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 72 | * @param settings Settings object |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 73 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 74 | ChannelPlan(SxRadio* radio, Settings* settings); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 75 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 76 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 77 | * ChannelPlan destructor |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 78 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 79 | virtual ~ChannelPlan(); |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 80 | |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 81 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 82 | * Checks that at least one channel exist for the data rate |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 83 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 84 | virtual uint8_t ValidateAdrDatarate(uint8_t status); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 85 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 86 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 87 | * Initialize channels, datarates and duty cycle bands according to current channel plan in settings |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 88 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 89 | virtual void Init() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 90 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 91 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 92 | * Set SxRadio object to be used to set Tx/Rx config |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 93 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 94 | virtual void SetRadio(SxRadio* radio); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 95 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 96 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 97 | * Set Settings object |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 98 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 99 | virtual void SetSettings(Settings* settings); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 100 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 101 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 102 | * Setter for the event queue |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 103 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 104 | virtual void SetEventQueue(EventQueue* queue); |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 105 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 106 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 107 | * Get the next channel to use to transmit |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 108 | * @return LORA_OK if channel was found |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 109 | * @return LORA_NO_CHANS_ENABLED |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 110 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 111 | virtual uint8_t GetNextChannel() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 112 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 113 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 114 | * Set the number of channels in the plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 115 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 116 | virtual void SetNumberOfChannels(uint8_t channels, bool resize = true); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 117 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 118 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 119 | * Get the number of channels in the plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 120 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 121 | virtual uint8_t GetNumberOfChannels(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 122 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 123 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 124 | * Check if channel is enabled |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 125 | * @return true if enabled |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 126 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 127 | virtual bool IsChannelEnabled(uint8_t channel); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 128 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 129 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 130 | * Set a 16 bit channel mask with offset |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 131 | * @param index of mask to set 0:0-15, 1:16-31 ... |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 132 | * @param mask 16 bit mask of enabled channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 133 | * @return true |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 134 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 135 | virtual bool SetChannelMask(uint8_t index, uint16_t mask); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 136 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 137 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 138 | * Get the channel mask of currently enabled channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 139 | * @return vector containing channel bit masks |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 140 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 141 | virtual std::vector<uint16_t> GetChannelMask(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 142 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 143 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 144 | * Add a channel to the ChannelPlan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 145 | * @param index of channel, use -1 to add to end |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 146 | * @param channel settings to add |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 147 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 148 | virtual uint8_t AddChannel(int8_t index, Channel channel) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 149 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 150 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 151 | * Get channel at index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 152 | * @return Channel |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 153 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 154 | virtual Channel GetChannel(int8_t index) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 155 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 156 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 157 | * Add a downlink channel to the ChannelPlan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 158 | * Set to 0 to use the default uplink channel frequency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 159 | * @param index of channel, use -1 to add to end |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 160 | * @param channel settings to add |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 161 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 162 | virtual uint8_t AddDownlinkChannel(int8_t index, Channel channel); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 163 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 164 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 165 | * Get channel at index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 166 | * @return Channel |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 167 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 168 | virtual Channel GetDownlinkChannel(uint8_t index); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 169 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 170 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 171 | * Set number of datarates in ChannelPlan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 172 | * @param datarates |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 173 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 174 | virtual void SetNumberOfDatarates(uint8_t datarates); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 175 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 176 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 177 | * Add a datarate to the ChannelPlan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 178 | * @param index of datarate, use -1 to add to end |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 179 | * @param datarate settings to add |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 180 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 181 | virtual uint8_t AddDatarate(int8_t index, Datarate datarate); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 182 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 183 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 184 | * Get datarate at index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 185 | * @return Datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 186 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 187 | virtual Datarate GetDatarate(int8_t index); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 188 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 189 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 190 | * Get max payload size for current datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 191 | * @return size in bytes |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 192 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 193 | virtual uint8_t GetMaxPayloadSize(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 194 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 195 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 196 | * Get rx window settings for requested window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 197 | * RX_1, RX_2, RX_BEACON, RX_SLOT |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 198 | * @param window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 199 | * @return RxWindow |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 200 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 201 | virtual RxWindow GetRxWindow(uint8_t window) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 202 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 203 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 204 | * Get current channel to use for transmitting |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 205 | * @param channel index of channel |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 206 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 207 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 208 | virtual uint8_t SetTxChannel(uint8_t channel); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 209 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 210 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 211 | * Get datarate to use on the join request |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 212 | * @return datarate index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 213 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 214 | virtual uint8_t GetJoinDatarate() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 215 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 216 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 217 | * Calculate the next time a join request is possible |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 218 | * @param size of join frame |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 219 | * @returns LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 220 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 221 | virtual uint8_t CalculateJoinBackoff(uint8_t size) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 222 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 223 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 224 | * Get the current datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 225 | * @return Datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 226 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 227 | virtual Datarate GetTxDatarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 228 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 229 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 230 | * Set the current datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 231 | * @param index of datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 232 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 233 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 234 | virtual uint8_t SetTxDatarate(uint8_t index); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 235 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 236 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 237 | * Set the datarate offset used for first receive window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 238 | * @param offset |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 239 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 240 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 241 | virtual uint8_t SetRx1Offset(uint8_t offset); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 242 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 243 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 244 | * Set the frequency for second receive window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 245 | * @param freq |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 246 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 247 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 248 | virtual uint8_t SetRx2Frequency(uint32_t freq); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 249 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 250 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 251 | * Set the datarate index used for second receive window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 252 | * @param index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 253 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 254 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 255 | virtual uint8_t SetRx2DatarateIndex(uint8_t index); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 256 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 257 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 258 | * Get next channel and set the SxRadio tx config with current settings |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 259 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 260 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 261 | virtual uint8_t SetTxConfig() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 262 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 263 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 264 | * Set the SxRadio rx config provided window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 265 | * @param window to be opened |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 266 | * @param continuous keep window open |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 267 | * @param wnd_growth factor to increase the rx window by |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 268 | * @param pad_ms time in milliseconds to add to computed window size |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 269 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 270 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 271 | virtual uint8_t SetRxConfig(uint8_t window, |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 272 | bool continuous, |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 273 | uint16_t wnd_growth = 1, |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 274 | uint16_t pad_ms = 0) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 275 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 276 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 277 | * Set frequency sub band if supported by plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 278 | * @param sub_band |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 279 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 280 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 281 | virtual uint8_t SetFrequencySubBand(uint8_t group) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 282 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 283 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 284 | * Get frequency sub band if supported by plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 285 | * @return sub band 0-8 or 0 if not supported |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 286 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 287 | virtual uint8_t GetFrequencySubBand(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 288 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 289 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 290 | * Reset the ack counter used to lower datarate if ACK's are missed |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 291 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 292 | virtual void ResetAckCounter(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 293 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 294 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 295 | * Callback for radio to request channel change when frequency hopping |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 296 | * @param currentChannel |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 297 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 298 | virtual void FhssChangeChannel(uint8_t currentChannel); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 299 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 300 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 301 | * Callback for ACK timeout event |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 302 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 303 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 304 | virtual uint8_t HandleAckTimeout(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 305 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 306 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 307 | * Callback for Join Accept packet to load optional channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 308 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 309 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 310 | virtual uint8_t HandleJoinAccept(const uint8_t* buffer, uint8_t size) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 311 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 312 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 313 | * Callback to for rx parameter setup ServerCommand |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 314 | * @param payload packet data |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 315 | * @param index of start of command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 316 | * @param size number of bytes in command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 317 | * @param[out] status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 318 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 319 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 320 | virtual uint8_t HandleRxParamSetup(const uint8_t* payload, uint8_t index, uint8_t size, uint8_t& status) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 321 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 322 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 323 | * Callback to for new channel ServerCommand |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 324 | * @param payload packet data |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 325 | * @param index of start of command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 326 | * @param size number of bytes in command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 327 | * @param[out] status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 328 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 329 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 330 | virtual uint8_t HandleNewChannel(const uint8_t* payload, uint8_t index, uint8_t size, uint8_t& status) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 331 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 332 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 333 | * Callback to for downlink channel request ServerCommand |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 334 | * @param payload packet data |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 335 | * @param index of start of command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 336 | * @param size number of bytes in command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 337 | * @param[out] status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 338 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 339 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 340 | virtual uint8_t HandleDownlinkChannelReq(const uint8_t* payload, uint8_t index, uint8_t size, uint8_t& status); |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 341 | |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 342 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 343 | * Callback to for ping slot channel request ServerCommand |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 344 | * @param payload packet data |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 345 | * @param index of start of command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 346 | * @param size number of bytes in command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 347 | * @param[out] status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 348 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 349 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 350 | virtual uint8_t HandlePingSlotChannelReq(const uint8_t* payload, uint8_t index, uint8_t size, uint8_t& status) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 351 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 352 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 353 | * Callback to for beacon frequency request ServerCommand |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 354 | * @param payload packet data |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 355 | * @param index of start of command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 356 | * @param size number of bytes in command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 357 | * @param[out] status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 358 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 359 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 360 | virtual uint8_t HandleBeaconFrequencyReq(const uint8_t* payload, uint8_t index, uint8_t size, uint8_t& status) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 361 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 362 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 363 | * Callback to for adaptive datarate ServerCommand |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 364 | * @param payload packet data |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 365 | * @param index of start of command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 366 | * @param size number of bytes in command buffer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 367 | * @param[out] status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 368 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 369 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 370 | virtual uint8_t HandleAdrCommand(const uint8_t* payload, uint8_t index, uint8_t size, uint8_t& status) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 371 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 372 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 373 | * Validate the configuration after multiple ADR commands have been applied |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 374 | * @return status to be returned in MoteCommand answer |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 375 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 376 | virtual uint8_t ValidateAdrConfiguration() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 377 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 378 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 379 | * Check that Rf Frequency is within channel plan range |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 380 | * @param freq frequency in Hz |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 381 | * @return true if valid frequency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 382 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 383 | virtual bool CheckRfFrequency(uint32_t freq); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 384 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 385 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 386 | * Flag for ADR |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 387 | * @return true if ADR is enable in settings |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 388 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 389 | virtual bool IsAdrEnabled(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 390 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 391 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 392 | * Flag if ADR ACK should be sent in next packet |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 393 | * @return true when flag should be set |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 394 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 395 | virtual bool AdrAckReq(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 396 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 397 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 398 | * Increment the ADR counter to track when ADR ACK request should be sent |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 399 | * @return current value |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 400 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 401 | virtual uint8_t IncAdrCounter(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 402 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 403 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 404 | * Reset the ADR counter when valid downlink is received from network server |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 405 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 406 | virtual void ResetAdrCounter(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 407 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 408 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 409 | * Get the time the radio must be off air to comply with regulations |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 410 | * Time to wait may be dependent on duty-cycle restrictions per channel |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 411 | * Or duty-cycle of join requests if OTAA is being attempted |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 412 | * @return ms of time to wait for next tx opportunity |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 413 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 414 | virtual uint32_t GetTimeOffAir() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 415 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 416 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 417 | * Get the channels in use by current channel plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 418 | * @return channel frequencies |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 419 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 420 | virtual std::vector<uint32_t> GetChannels() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 421 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 422 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 423 | * Get the downlink channels in use by current channel plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 424 | * @return channel frequencies |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 425 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 426 | virtual std::vector<uint32_t> GetDownlinkChannels(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 427 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 428 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 429 | * Get the channel datarate ranges in use by current channel plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 430 | * @return channel datarate ranges |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 431 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 432 | virtual std::vector<uint8_t> GetChannelRanges() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 433 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 434 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 435 | * Set the time off air for the given duty band |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 436 | * @param band index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 437 | * @param time off air in ms |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 438 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 439 | virtual void SetDutyBandTimeOff(uint8_t band, uint32_t timeoff); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 440 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 441 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 442 | * Get the time off air for the given duty band |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 443 | * @param band index |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 444 | * @return time off air in ms |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 445 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 446 | virtual uint32_t GetDutyBandTimeOff(uint8_t band); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 447 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 448 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 449 | * Get the number of duty bands in the current channel plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 450 | * @return number of bands |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 451 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 452 | virtual uint8_t GetNumDutyBands(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 453 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 454 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 455 | * Get the duty band index for the given frequency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 456 | * @param freq frequency in Hz |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 457 | * @return index of duty band |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 458 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 459 | virtual int8_t GetDutyBand(uint32_t freq); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 460 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 461 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 462 | * Add duty band |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 463 | * @param index of duty band or -1 to append |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 464 | * @param band DutyBand definition |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 465 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 466 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 467 | virtual uint8_t AddDutyBand(int8_t index, DutyBand band); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 468 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 469 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 470 | * Update duty cycle with current settings |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 471 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 472 | void UpdateDutyCycle(uint8_t bytes); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 473 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 474 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 475 | * Update duty cycle with at given frequency and time on air |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 476 | * @param freq frequency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 477 | * @param time_on_air_ms tx time on air |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 478 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 479 | virtual void UpdateDutyCycle(uint32_t freq, uint32_t time_on_air_ms); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 480 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 481 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 482 | * Get time on air with current settings |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 483 | * @param bytes number of bytes to be sent |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 484 | * @param cfg for setting up the radio before getting time on air |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 485 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 486 | virtual uint32_t GetTimeOnAir(uint8_t bytes, RadioCfg_t cfg = TX_RADIO_CFG); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 487 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 488 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 489 | * Reset the duty timers with the current time off air |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 490 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 491 | virtual void ResetDutyCycleTimer(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 492 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 493 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 494 | * Print log message for given rx window |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 495 | * @param wnd 1 or 2 |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 496 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 497 | virtual void LogRxWindow(uint8_t wnd) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 498 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 499 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 500 | * Indicator of P2P mode |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 501 | * @return true if enabled |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 502 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 503 | virtual bool P2PEnabled(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 504 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 505 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 506 | * Ack timeout for P2P mode |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 507 | * @return timeout in ms |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 508 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 509 | virtual uint16_t P2PTimeout(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 510 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 511 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 512 | * Ack backoff for P2P mode |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 513 | * @return backoff in ms |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 514 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 515 | virtual uint16_t P2PBackoff(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 516 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 517 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 518 | * Enable the default channels of the channel plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 519 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 520 | virtual void EnableDefaultChannels() = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 521 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 522 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 523 | * Callback for radio thread to signal |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 524 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 525 | virtual void MacEvent(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 526 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 527 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 528 | * Called when MAC layer doesn't know about a command. |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 529 | * Use to add custom or new mac command handling |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 530 | * @return LORA_OK |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 531 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 532 | virtual uint8_t HandleMacCommand(uint8_t* payload, uint8_t& index); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 533 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 534 | virtual void DecrementDatarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 535 | virtual void IncrementDatarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 536 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 537 | virtual std::string GetPlanName(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 538 | virtual uint8_t GetPlan(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 539 | virtual bool IsPlanFixed(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 540 | virtual bool IsPlanDynamic(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 541 | static bool IsPlanFixed(uint8_t plan); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 542 | static bool IsPlanDynamic(uint8_t plan); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 543 | virtual uint32_t GetMinFrequency(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 544 | virtual uint32_t GetMaxFrequency(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 545 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 546 | virtual uint8_t GetMinDatarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 547 | virtual uint8_t GetMaxDatarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 548 | virtual uint8_t GetMinDatarateOffset(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 549 | virtual uint8_t GetMaxDatarateOffset(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 550 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 551 | virtual uint8_t GetMinRx2Datarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 552 | virtual uint8_t GetMaxRx2Datarate(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 553 | virtual uint8_t GetMaxTxPower(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 554 | virtual uint8_t GetMinTxPower(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 555 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 556 | virtual uint16_t GetLBT_TimeUs(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 557 | virtual void SetLBT_TimeUs(uint16_t us); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 558 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 559 | virtual int8_t GetLBT_Threshold(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 560 | virtual void SetLBT_Threshold(int8_t rssi); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 561 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 562 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 563 | * Set LBT time and threshold to defaults |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 564 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 565 | virtual void DefaultLBT(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 566 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 567 | virtual bool ListenBeforeTalk(); |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 568 | |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 569 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 570 | * use to clear downlink channels on join |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 571 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 64:64982192a2af | 572 | virtual void ClearChannels(); |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 573 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 574 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 575 | * Check if this packet is a beacon and if so extract parameters needed |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 576 | * @param payload of potential beacon |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 577 | * @param size of the packet |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 578 | * @param [out] data extracted from the beacon if this packet was indeed a beacon |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 579 | * @return true if this packet is beacon, false if not |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 580 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 581 | virtual bool DecodeBeacon(const uint8_t* payload, |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 582 | size_t size, |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 583 | BeaconData_t& data) = 0; |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 584 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 585 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 586 | * Update class B beacon and ping slot settings if frequency hopping enabled |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 587 | * @param time received in the last beacon |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 588 | * @param period of the beacon |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 589 | * @param devAddr of this end device |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 590 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 591 | virtual void FrequencyHop(uint32_t time, uint32_t period, uint32_t devAddr) { } |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 592 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 593 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 594 | /* |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 595 | * Get default number of channels for a plan |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 596 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 597 | virtual uint8_t GetNumDefaultChans(); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 598 | protected: |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 599 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 600 | SxRadio* GetRadio(); //!< Get pointer to the SxRadio object or assert if it is null |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 601 | Settings* GetSettings(); //!< Get pointer to the settings object or assert if it is null |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 602 | /** |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 603 | * 16 bit ITU-T CRC implementation |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 604 | */ |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 605 | uint16_t CRC16(const uint8_t* data, size_t size); |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 606 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 607 | uint8_t _txChannel; //!< Current channel for transmit |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 608 | uint8_t _txFrequencySubBand; //!< Current frequency sub band for hybrid operation |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 609 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 610 | std::vector<Datarate> _datarates; //!< List of datarates |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 611 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 612 | std::vector<Channel> _channels; //!< List of channels for transmit |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 613 | std::vector<Channel> _dlChannels; //!< List of channels for receive if changed from default |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 614 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 615 | std::vector<DutyBand> _dutyBands; //!< List of duty bands to limit radio time on air |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 616 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 617 | uint8_t _maxTxPower; //!< Max Tx power for channel Plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 618 | uint8_t _minTxPower; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 619 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 620 | uint32_t _minFrequency; //!< Minimum Frequency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 621 | uint32_t _maxFrequency; //!< Maximum Frequency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 622 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 623 | uint8_t _minDatarate; //!< Minimum datarate to accept in ADR request |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 624 | uint8_t _maxDatarate; //!< Maximum datarate to accept in ADR request |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 625 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 626 | uint8_t _minRx2Datarate; //!< Minimum datarate to accept in for Rx2 |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 627 | uint8_t _maxRx2Datarate; //!< Maximum datarate to accept in for Rx2 |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 628 | uint8_t _minDatarateOffset; //!< Minimum datarate offset to accept |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 629 | uint8_t _maxDatarateOffset; //!< Maximum datarate offset to accept |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 630 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 631 | uint32_t _freqUBase125k; //!< Start of 125K uplink channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 632 | uint32_t _freqUStep125k; //!< Step between 125K uplink channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 633 | uint32_t _freqUBase500k; //!< Start of 500K uplink channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 634 | uint32_t _freqUStep500k; //!< Step between 500K uplink channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 635 | uint32_t _freqDBase500k; //!< Start of 500K downlink channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 636 | uint32_t _freqDStep500k; //!< Step between 500K downlink channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 637 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 638 | uint8_t _numChans; //!< Number of total channels in plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 639 | uint8_t _numChans125k; //!< Number of 125K channels in plan |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 640 | uint8_t _numChans500k; //!< Number of 500K channels in plan |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 641 | uint8_t _numDefaultChans; //!< Number of default channels in plan |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 642 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 643 | uint16_t _LBT_TimeUs; //!< Sample time in us for LBT |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 644 | int8_t _LBT_Threshold; //!< Threshold in dBm for LBT |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 645 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 646 | std::vector<uint16_t> _channelMask; //!< Bit mask for currently enabled channels |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 647 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 648 | Timer _dutyCycleTimer; //!< Timer for tracking time-off-air |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 649 | int _txDutyEvtId; //!< Event ID for expiration of time-off-air |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 650 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 651 | bool _txDutyCyclePending; //!< Flag for pending duty cycle event |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 652 | |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 653 | void OnTxDutyCycleEvent(); //!< Callback for duty cycle event |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 654 | void OnTxDutyCycleEventBottom(); //!< Callback for duty cycle event |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 655 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 656 | static const uint8_t* TX_POWERS; //!< List of available tx powers |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 657 | static const uint8_t* RADIO_POWERS; //!< List of available tx powers |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 658 | static const uint8_t* MAX_PAYLOAD_SIZE; //!< List of max payload sizes for each datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 659 | static const uint8_t* MAX_PAYLOAD_SIZE_REPEATER; //!< List of repeater compatible max payload sizes for each datarate |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 660 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 661 | uint8_t _plan; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 662 | std::string _planName; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 663 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 664 | private: |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 665 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 666 | SxRadio* _radio; //!< Injected SxRadio dependency |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 667 | Settings* _settings; //!< Current settings |
Jenkins@KEILDM1.dc.multitech.prv | 65:acc0468b9aec | 668 | EventQueue* _evtQueue; //!< mbed Event Queue |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 669 | }; |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 670 | } |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 671 | |
Jenkins@KEILDM1.dc.multitech.prv | 61:58ed1e136af5 | 672 | #endif |