Library for using the LSR SiFlex/ProFlex RF modules with mbed.
LsrModule.h@4:2ac0b9a7f43a, 2016-07-25 (annotated)
- Committer:
- Issus
- Date:
- Mon Jul 25 18:01:26 2016 +0000
- Revision:
- 4:2ac0b9a7f43a
- Parent:
- 1:8ecba4bfc183
- Child:
- 5:ae864b96eb5f
Added method for setting RF data rate
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Issus | 0:f9cf4a19bb84 | 1 | /** |
Issus | 0:f9cf4a19bb84 | 2 | * @file LsrModule.h |
Issus | 0:f9cf4a19bb84 | 3 | * @author LS Research LLC |
Issus | 0:f9cf4a19bb84 | 4 | * @version 1.0 |
Issus | 0:f9cf4a19bb84 | 5 | * |
Issus | 0:f9cf4a19bb84 | 6 | * @section LICENSE |
Issus | 0:f9cf4a19bb84 | 7 | * |
Issus | 0:f9cf4a19bb84 | 8 | * This program is free software; you can redistribute it and/or |
Issus | 0:f9cf4a19bb84 | 9 | * modify it under the terms of the GNU General Public License as |
Issus | 0:f9cf4a19bb84 | 10 | * published by the Free Software Foundation; either version 2 of |
Issus | 0:f9cf4a19bb84 | 11 | * the License, or (at your option) any later version. |
Issus | 0:f9cf4a19bb84 | 12 | * |
Issus | 0:f9cf4a19bb84 | 13 | * This program is distributed in the hope that it will be useful, but |
Issus | 0:f9cf4a19bb84 | 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
Issus | 0:f9cf4a19bb84 | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
Issus | 0:f9cf4a19bb84 | 16 | * General Public License for more details at |
Issus | 0:f9cf4a19bb84 | 17 | * http://www.gnu.org/copyleft/gpl.html |
Issus | 0:f9cf4a19bb84 | 18 | * |
Issus | 0:f9cf4a19bb84 | 19 | * @section DESCRIPTION |
Issus | 0:f9cf4a19bb84 | 20 | * |
Issus | 0:f9cf4a19bb84 | 21 | * UART communication API for LS Research's ProFLEX01 and SiFLEX02 ModFLEX Shields. |
Issus | 0:f9cf4a19bb84 | 22 | */ |
Issus | 0:f9cf4a19bb84 | 23 | |
Issus | 0:f9cf4a19bb84 | 24 | /** |
Issus | 0:f9cf4a19bb84 | 25 | * Modified by Mark Harris at SAIT.ca |
Issus | 0:f9cf4a19bb84 | 26 | * Improved functionality for mbed |
Issus | 0:f9cf4a19bb84 | 27 | */ |
Issus | 0:f9cf4a19bb84 | 28 | |
Issus | 0:f9cf4a19bb84 | 29 | #ifndef LsrModule_h |
Issus | 0:f9cf4a19bb84 | 30 | #define LsrModule_h |
Issus | 0:f9cf4a19bb84 | 31 | |
Issus | 0:f9cf4a19bb84 | 32 | #include <inttypes.h> |
Issus | 0:f9cf4a19bb84 | 33 | #include "mbed.h" |
Issus | 0:f9cf4a19bb84 | 34 | |
Issus | 0:f9cf4a19bb84 | 35 | #ifndef NULL |
Issus | 0:f9cf4a19bb84 | 36 | #define NULL 0 |
Issus | 0:f9cf4a19bb84 | 37 | #endif |
Issus | 0:f9cf4a19bb84 | 38 | |
Issus | 0:f9cf4a19bb84 | 39 | #define SIFLEX02 ///< Use with a SiFLEX02 ModFLEX Shield (900MHz) |
Issus | 0:f9cf4a19bb84 | 40 | //#define PROFLEX01 ///< Use with a ProFLEX01 ModFLEX Shield (2.4GHz) |
Issus | 0:f9cf4a19bb84 | 41 | |
Issus | 0:f9cf4a19bb84 | 42 | /** |
Issus | 0:f9cf4a19bb84 | 43 | * Message Index Defintions. |
Issus | 0:f9cf4a19bb84 | 44 | * |
Issus | 0:f9cf4a19bb84 | 45 | */ |
Issus | 0:f9cf4a19bb84 | 46 | #define LSR_MODULE_MSG_START_BYTE_INDEX 0 |
Issus | 0:f9cf4a19bb84 | 47 | #define LSR_MODULE_MSG_LENGTH_BYTE_INDEX 1 |
Issus | 0:f9cf4a19bb84 | 48 | #define LSR_MODULE_MSG_TYPE_BYTE_INDEX 2 |
Issus | 0:f9cf4a19bb84 | 49 | |
Issus | 0:f9cf4a19bb84 | 50 | /** |
Issus | 0:f9cf4a19bb84 | 51 | * Message Byte Types. |
Issus | 0:f9cf4a19bb84 | 52 | * |
Issus | 0:f9cf4a19bb84 | 53 | */ |
Issus | 0:f9cf4a19bb84 | 54 | #define LSR_MODULE_SERIAL_MSG_START_BYTE 0x01 |
Issus | 0:f9cf4a19bb84 | 55 | #define LSR_MODULE_SERIAL_MSG_END_BYTE 0x04 |
Issus | 0:f9cf4a19bb84 | 56 | |
Issus | 0:f9cf4a19bb84 | 57 | /** |
Issus | 0:f9cf4a19bb84 | 58 | * Rx Message Type Limits. |
Issus | 0:f9cf4a19bb84 | 59 | * |
Issus | 0:f9cf4a19bb84 | 60 | */ |
Issus | 0:f9cf4a19bb84 | 61 | #define LSR_MODULE_MIN_SERIAL_RX_MSG_TYPE 0x81 |
Issus | 0:f9cf4a19bb84 | 62 | #define LSR_MODULE_MAX_SERIAL_RX_MSG_TYPE 0xC5 |
Issus | 0:f9cf4a19bb84 | 63 | |
Issus | 0:f9cf4a19bb84 | 64 | /** |
Issus | 0:f9cf4a19bb84 | 65 | * LSR Module Host TX Message Definitions. |
Issus | 0:f9cf4a19bb84 | 66 | * |
Issus | 0:f9cf4a19bb84 | 67 | */ |
Issus | 0:f9cf4a19bb84 | 68 | #define LSR_MODULE_QUERY_VERSION_MSG_TYPE 0x01 |
Issus | 0:f9cf4a19bb84 | 69 | #define LSR_MODULE_SET_SECURITY_TX_FRAME_COUNTER_MSG_TYPE 0x0C |
Issus | 0:f9cf4a19bb84 | 70 | #define LSR_MODULE_QUERY_SECURITY_TX_FRAME_COUNTER_MSG_TYPE 0x0D |
Issus | 0:f9cf4a19bb84 | 71 | #define LSR_MODULE_SET_BASIC_RF_SETTINGS_MSG_TYPE 0x10 |
Issus | 0:f9cf4a19bb84 | 72 | #define LSR_MODULE_QUERY_BASIC_RF_SETTINGS_MSG_TYPE 0x11 |
Issus | 0:f9cf4a19bb84 | 73 | #define LSR_MODULE_SAVE_SETTINGS_TO_NV_MEMORY_MSG_TYPE 0x12 |
Issus | 0:f9cf4a19bb84 | 74 | #define LSR_MODULE_RESET_REQUEST_MSG_TYPE 0x13 |
Issus | 0:f9cf4a19bb84 | 75 | #define LSR_MODULE_QUERY_SUPPLY_VOLTAGE_MSG_TYPE 0x14 |
Issus | 0:f9cf4a19bb84 | 76 | #define LSR_MODULE_QUERY_STATISTICS_MSG_TYPE 0x15 |
Issus | 0:f9cf4a19bb84 | 77 | #define LSR_MODULE_CLEAR_STATISTICS_MSG_TYPE 0x16 |
Issus | 0:f9cf4a19bb84 | 78 | #define LSR_MODULE_SET_HOST_DATA_RATE_MSG_TYPE 0x18 |
Issus | 4:2ac0b9a7f43a | 79 | #define LSR_MODULE_SET_RF_DATA_RATE_MSG_TYPE 0x19 |
Issus | 0:f9cf4a19bb84 | 80 | #define LSR_MODULE_SEND_SIMPLE_SHORT_RF_DATA_PACKET_MSG_TYPE 0x20 |
Issus | 0:f9cf4a19bb84 | 81 | #define LSR_MODULE_SEND_ADVANCED_SHORT_RF_DATA_PACKET_MSG_TYPE 0x22 |
Issus | 0:f9cf4a19bb84 | 82 | #define LSR_MODULE_SEND_SIMPLE_LONG_RF_DATA_PACKET_MSG_TYPE 0x24 |
Issus | 0:f9cf4a19bb84 | 83 | #define LSR_MODULE_SEND_ADVANCED_LONG_RF_DATA_PACKET_MSG_TYPE 0x26 |
Issus | 0:f9cf4a19bb84 | 84 | #define LSR_MODULE_SEND_SIMPLE_REPEATED_RF_DATA_PACKET_MSG_TYPE 0x2A |
Issus | 0:f9cf4a19bb84 | 85 | #define LSR_MODULE_CHANNEL_ENERGY_SCAN_MSG_TYPE 0x44 |
Issus | 0:f9cf4a19bb84 | 86 | |
Issus | 1:8ecba4bfc183 | 87 | |
Issus | 0:f9cf4a19bb84 | 88 | /** |
Issus | 0:f9cf4a19bb84 | 89 | * LSR Module Settings Definitions. |
Issus | 0:f9cf4a19bb84 | 90 | * |
Issus | 0:f9cf4a19bb84 | 91 | */ |
Issus | 0:f9cf4a19bb84 | 92 | #define LSR_MODULE_TX_POWER_LEVEL_MIN 0 |
Issus | 0:f9cf4a19bb84 | 93 | #define LSR_MODULE_SECURITY_OVERHEAD 14 |
Issus | 0:f9cf4a19bb84 | 94 | #define LSR_MODULE_MIN_SERIAL_RX_MSG_LENGTH 5 |
Issus | 0:f9cf4a19bb84 | 95 | #define LSR_MODULE_MAX_SERIAL_RX_MSG_LENGTH 131 |
Issus | 0:f9cf4a19bb84 | 96 | |
Issus | 0:f9cf4a19bb84 | 97 | #ifdef PROFLEX01 |
Issus | 0:f9cf4a19bb84 | 98 | #define LSR_MODULE_RF_CHANNEL_MIN 11 |
Issus | 0:f9cf4a19bb84 | 99 | #define LSR_MODULE_RF_CHANNEL_MAX 25 |
Issus | 0:f9cf4a19bb84 | 100 | #define LSR_MODULE_TX_POWER_LEVEL_MAX 19 |
Issus | 0:f9cf4a19bb84 | 101 | #define LSR_MODULE_SIMPLE_SHORT_RF_DATA_LENGTH 98 |
Issus | 0:f9cf4a19bb84 | 102 | #define LSR_MODULE_ADVANCED_SHORT_RF_DATA_LENGTH 98 |
Issus | 0:f9cf4a19bb84 | 103 | #define LSR_MODULE_SIMPLE_LONG_RF_DATA_LENGTH 98 |
Issus | 0:f9cf4a19bb84 | 104 | #define LSR_MODULE_ADVANCED_LONG_RF_DATA_LENGTH 98 |
Issus | 0:f9cf4a19bb84 | 105 | #define LSR_MODULE_MAX_SERIAL_TX_MSG_LENGTH 115 |
Issus | 0:f9cf4a19bb84 | 106 | #elif defined SIFLEX02 |
Issus | 0:f9cf4a19bb84 | 107 | #define LSR_MODULE_RF_CHANNEL_MIN 1 |
Issus | 0:f9cf4a19bb84 | 108 | #define LSR_MODULE_RF_CHANNEL_MAX 10 |
Issus | 0:f9cf4a19bb84 | 109 | #define LSR_MODULE_TX_POWER_LEVEL_MAX 21 |
Issus | 0:f9cf4a19bb84 | 110 | #define LSR_MODULE_SIMPLE_SHORT_RF_DATA_LENGTH 112 |
Issus | 0:f9cf4a19bb84 | 111 | #define LSR_MODULE_ADVANCED_SHORT_RF_DATA_LENGTH 110 |
Issus | 0:f9cf4a19bb84 | 112 | #define LSR_MODULE_SIMPLE_LONG_RF_DATA_LENGTH 100 |
Issus | 0:f9cf4a19bb84 | 113 | #define LSR_MODULE_ADVANCED_LONG_RF_DATA_LENGTH 98 |
Issus | 0:f9cf4a19bb84 | 114 | #define LSR_MODULE_MAX_SERIAL_TX_MSG_LENGTH 121 |
Issus | 0:f9cf4a19bb84 | 115 | #else |
Issus | 0:f9cf4a19bb84 | 116 | #error "Incorrect module type" |
Issus | 0:f9cf4a19bb84 | 117 | #endif |
Issus | 0:f9cf4a19bb84 | 118 | |
Issus | 0:f9cf4a19bb84 | 119 | /** |
Issus | 0:f9cf4a19bb84 | 120 | * Receiver ConfigurationBitmask Definitions. |
Issus | 0:f9cf4a19bb84 | 121 | * |
Issus | 0:f9cf4a19bb84 | 122 | */ |
Issus | 0:f9cf4a19bb84 | 123 | #define LSR_MODULE_RX_CONFIG_ALLOW_BROADCAST_ADDRESS_BITMASK 0x01 |
Issus | 0:f9cf4a19bb84 | 124 | #define LSR_MODULE_RX_CONFIG_ALLOW_BROADCAST_PAN_BITMASK 0x02 |
Issus | 0:f9cf4a19bb84 | 125 | #define LSR_MODULE_RX_CONFIG_PROMISCUOUS_MODE_BITMASK 0x04 |
Issus | 0:f9cf4a19bb84 | 126 | #define LSR_MODULE_RX_CONFIG_ALLOW_SECURED_PACKETS_MODE_BITMASK 0x08 |
Issus | 0:f9cf4a19bb84 | 127 | #define LSR_MODULE_RX_CONFIG_MAX (LSR_MODULE_RX_CONFIG_ALLOW_BROADCAST_ADDRESS_BITMASK + LSR_MODULE_RX_CONFIG_ALLOW_BROADCAST_PAN_BITMASK + LSR_MODULE_RX_CONFIG_PROMISCUOUS_MODE_BITMASK + LSR_MODULE_RX_CONFIG_ALLOW_SECURED_PACKETS_MODE_BITMASK) |
Issus | 0:f9cf4a19bb84 | 128 | |
Issus | 0:f9cf4a19bb84 | 129 | /** |
Issus | 0:f9cf4a19bb84 | 130 | * Transmit Options Bitmask Definitions. |
Issus | 0:f9cf4a19bb84 | 131 | * |
Issus | 0:f9cf4a19bb84 | 132 | */ |
Issus | 0:f9cf4a19bb84 | 133 | #define LSR_MODULE_TX_OPTIONS_RETRIES_ACKS_BITMASK 0x01 |
Issus | 0:f9cf4a19bb84 | 134 | #define LSR_MODULE_TX_OPTIONS_USE_SECURITY_BITMASK 0x02 |
Issus | 0:f9cf4a19bb84 | 135 | #define LSR_MODULE_TX_OPTIONS_MAX (LSR_MODULE_TX_OPTIONS_RETRIES_ACKS_BITMASK + LSR_MODULE_TX_OPTIONS_USE_SECURITY_BITMASK) |
Issus | 0:f9cf4a19bb84 | 136 | |
Issus | 0:f9cf4a19bb84 | 137 | /** |
Issus | 0:f9cf4a19bb84 | 138 | * Host UART Data Rate Definitions. |
Issus | 0:f9cf4a19bb84 | 139 | * |
Issus | 0:f9cf4a19bb84 | 140 | */ |
Issus | 0:f9cf4a19bb84 | 141 | #define LSR_MODULE_HOST_DATA_RATE_1200 0 |
Issus | 0:f9cf4a19bb84 | 142 | #define LSR_MODULE_HOST_DATA_RATE_2400 1 |
Issus | 0:f9cf4a19bb84 | 143 | #define LSR_MODULE_HOST_DATA_RATE_4800 2 |
Issus | 0:f9cf4a19bb84 | 144 | #define LSR_MODULE_HOST_DATA_RATE_9600 3 |
Issus | 0:f9cf4a19bb84 | 145 | #define LSR_MODULE_HOST_DATA_RATE_19200 4 |
Issus | 0:f9cf4a19bb84 | 146 | #define LSR_MODULE_HOST_DATA_RATE_38400 5 |
Issus | 0:f9cf4a19bb84 | 147 | #define LSR_MODULE_HOST_DATA_RATE_57600 6 |
Issus | 0:f9cf4a19bb84 | 148 | #define LSR_MODULE_HOST_DATA_RATE_115200 7 |
Issus | 1:8ecba4bfc183 | 149 | #define LSR_MODULE_HOST_DATA_RATE_230400 8 |
Issus | 1:8ecba4bfc183 | 150 | #define LSR_MODULE_HOST_DATA_RATE_460800 9 |
Issus | 1:8ecba4bfc183 | 151 | #define LSR_MODULE_HOST_DATA_RATE_921600 10 |
Issus | 1:8ecba4bfc183 | 152 | #define LSR_MODULE_HOST_DATA_RATE_MAX LSR_MODULE_HOST_DATA_RATE_921600 |
Issus | 0:f9cf4a19bb84 | 153 | #define LSR_MODULE_10MS_UART_TIMEOUT 239 |
Issus | 0:f9cf4a19bb84 | 154 | |
Issus | 0:f9cf4a19bb84 | 155 | /** |
Issus | 4:2ac0b9a7f43a | 156 | * RF Data Rate Definitions. |
Issus | 4:2ac0b9a7f43a | 157 | * |
Issus | 4:2ac0b9a7f43a | 158 | */ |
Issus | 4:2ac0b9a7f43a | 159 | #define LSR_MODULE_RF_DATA_RATE_BPSK_40KBPS 0 |
Issus | 4:2ac0b9a7f43a | 160 | #define LSR_MODULE_RF_DATA_RATE_OQPSK_SIN_250KBPS 1 |
Issus | 4:2ac0b9a7f43a | 161 | #define LSR_MODULE_RF_DATA_RATE_OQPSK_SIN_1MBPS 2 |
Issus | 4:2ac0b9a7f43a | 162 | #define LSR_MODULE_RF_DATA_RATE_MAX LSP_MODULE_RF_DATA_RATE_OQPSK_SIN_1MBPS |
Issus | 4:2ac0b9a7f43a | 163 | |
Issus | 4:2ac0b9a7f43a | 164 | /** |
Issus | 0:f9cf4a19bb84 | 165 | * Channel Energy Scan Duration Definitions. |
Issus | 0:f9cf4a19bb84 | 166 | * |
Issus | 0:f9cf4a19bb84 | 167 | */ |
Issus | 0:f9cf4a19bb84 | 168 | #define LSR_MODULE_SCAN_DURATION_MAX 14 |
Issus | 0:f9cf4a19bb84 | 169 | |
Issus | 0:f9cf4a19bb84 | 170 | /** |
Issus | 0:f9cf4a19bb84 | 171 | * Type Defintions. |
Issus | 0:f9cf4a19bb84 | 172 | * |
Issus | 0:f9cf4a19bb84 | 173 | */ |
Issus | 0:f9cf4a19bb84 | 174 | typedef unsigned int word_t; |
Issus | 0:f9cf4a19bb84 | 175 | |
Issus | 0:f9cf4a19bb84 | 176 | /** |
Issus | 0:f9cf4a19bb84 | 177 | * Word structure. |
Issus | 0:f9cf4a19bb84 | 178 | * |
Issus | 0:f9cf4a19bb84 | 179 | */ |
Issus | 0:f9cf4a19bb84 | 180 | typedef struct _words |
Issus | 0:f9cf4a19bb84 | 181 | { |
Issus | 0:f9cf4a19bb84 | 182 | uint8_t lb; ///< Low byte. |
Issus | 0:f9cf4a19bb84 | 183 | uint8_t hb; ///< High byte. |
Issus | 0:f9cf4a19bb84 | 184 | } Words_t; |
Issus | 0:f9cf4a19bb84 | 185 | |
Issus | 0:f9cf4a19bb84 | 186 | /** |
Issus | 0:f9cf4a19bb84 | 187 | * Word union. |
Issus | 0:f9cf4a19bb84 | 188 | * |
Issus | 0:f9cf4a19bb84 | 189 | */ |
Issus | 0:f9cf4a19bb84 | 190 | typedef union _wordu |
Issus | 0:f9cf4a19bb84 | 191 | { |
Issus | 0:f9cf4a19bb84 | 192 | word_t w; ///< Word. |
Issus | 0:f9cf4a19bb84 | 193 | uint16_t u16; ///< Unsigned 16. |
Issus | 0:f9cf4a19bb84 | 194 | Words_t ws; ///< Word structure. |
Issus | 0:f9cf4a19bb84 | 195 | } Wordu_t; |
Issus | 0:f9cf4a19bb84 | 196 | |
Issus | 0:f9cf4a19bb84 | 197 | /** |
Issus | 0:f9cf4a19bb84 | 198 | * Word structure. |
Issus | 0:f9cf4a19bb84 | 199 | * |
Issus | 0:f9cf4a19bb84 | 200 | */ |
Issus | 0:f9cf4a19bb84 | 201 | typedef struct _dwords |
Issus | 0:f9cf4a19bb84 | 202 | { |
Issus | 0:f9cf4a19bb84 | 203 | uint8_t lb; ///< Low byte. |
Issus | 0:f9cf4a19bb84 | 204 | uint8_t mlb; ///< Middle low byte. |
Issus | 0:f9cf4a19bb84 | 205 | uint8_t mhb; ///< Middle high byte. |
Issus | 0:f9cf4a19bb84 | 206 | uint8_t hb; ///< High byte. |
Issus | 0:f9cf4a19bb84 | 207 | } DWords_t; |
Issus | 0:f9cf4a19bb84 | 208 | |
Issus | 0:f9cf4a19bb84 | 209 | /** |
Issus | 0:f9cf4a19bb84 | 210 | * Double word union. |
Issus | 0:f9cf4a19bb84 | 211 | * |
Issus | 0:f9cf4a19bb84 | 212 | */ |
Issus | 0:f9cf4a19bb84 | 213 | typedef union _dwordu |
Issus | 0:f9cf4a19bb84 | 214 | { |
Issus | 0:f9cf4a19bb84 | 215 | uint32_t u32; ///< Unsigned 32. |
Issus | 0:f9cf4a19bb84 | 216 | DWords_t dws; ///< Double word structure. |
Issus | 0:f9cf4a19bb84 | 217 | } DWordu_t; |
Issus | 0:f9cf4a19bb84 | 218 | |
Issus | 0:f9cf4a19bb84 | 219 | |
Issus | 0:f9cf4a19bb84 | 220 | class LsrModule : Serial |
Issus | 0:f9cf4a19bb84 | 221 | { |
Issus | 0:f9cf4a19bb84 | 222 | public: |
Issus | 0:f9cf4a19bb84 | 223 | uint8_t* pu8RxBuffer; ///< Pointer to private UART receive buffer. |
Issus | 0:f9cf4a19bb84 | 224 | uint8_t u8RxMsgLength; ///< Length of private UART receive buffer. |
Issus | 0:f9cf4a19bb84 | 225 | //Functions: |
Issus | 0:f9cf4a19bb84 | 226 | LsrModule(PinName tx, PinName rx, int baudRate = 19200); |
Issus | 0:f9cf4a19bb84 | 227 | ~LsrModule(); |
Issus | 0:f9cf4a19bb84 | 228 | bool SubscribeRxMsgCallback(uint8_t u8RxMsgType, void (*callback)(void)); |
Issus | 0:f9cf4a19bb84 | 229 | bool UnsubscribeRxMsgCallback(uint8_t u8RxMsgType); |
Issus | 0:f9cf4a19bb84 | 230 | void RunHostRxStateMachine(void); |
Issus | 0:f9cf4a19bb84 | 231 | // Tx Messages: |
Issus | 0:f9cf4a19bb84 | 232 | // 0x01 |
Issus | 0:f9cf4a19bb84 | 233 | void QueryVersionMsg(void); |
Issus | 0:f9cf4a19bb84 | 234 | // 0x0C |
Issus | 0:f9cf4a19bb84 | 235 | void SetSecurityTransmitFrameCounterMsg(uint32_t* pu32FrameCounter); |
Issus | 0:f9cf4a19bb84 | 236 | // 0x0D |
Issus | 0:f9cf4a19bb84 | 237 | void QuerySecurityTransmitFrameCounterMsg(void); |
Issus | 0:f9cf4a19bb84 | 238 | // 0x10 |
Issus | 0:f9cf4a19bb84 | 239 | void SetBasicRfSettingsMsg(uint16_t u16PanId, uint16_t u16AddrShort, uint8_t* pu8AddrLong, uint8_t u8RfChannel, uint8_t u8TxPowerLevel, uint8_t u8ReceiverConfig, uint8_t* pu8SecurityKey); |
Issus | 0:f9cf4a19bb84 | 240 | // 0x11 |
Issus | 0:f9cf4a19bb84 | 241 | void QueryBasicRfSettingsMsg(void); |
Issus | 0:f9cf4a19bb84 | 242 | // 0x12 |
Issus | 0:f9cf4a19bb84 | 243 | void SaveSettingsToNVMemoryMsg(void); |
Issus | 0:f9cf4a19bb84 | 244 | // 0x13 |
Issus | 0:f9cf4a19bb84 | 245 | void ResetRequestMsg(void); |
Issus | 0:f9cf4a19bb84 | 246 | // 0x14 |
Issus | 0:f9cf4a19bb84 | 247 | void QuerySupplyVoltageMsg(void); |
Issus | 0:f9cf4a19bb84 | 248 | // 0x15 |
Issus | 0:f9cf4a19bb84 | 249 | void QueryStatisticsMsg(void); |
Issus | 0:f9cf4a19bb84 | 250 | // 0x16 |
Issus | 0:f9cf4a19bb84 | 251 | void ClearStatisticsMsg(void); |
Issus | 0:f9cf4a19bb84 | 252 | // 0x18 |
Issus | 0:f9cf4a19bb84 | 253 | void SetHostDataRateMsg(uint8_t u8HostDataRate); |
Issus | 4:2ac0b9a7f43a | 254 | // 0x18 |
Issus | 4:2ac0b9a7f43a | 255 | void SetRfDataRateMsg(uint8_t u8RfDataRate); |
Issus | 0:f9cf4a19bb84 | 256 | // 0x20 |
Issus | 0:f9cf4a19bb84 | 257 | void SendSimpleShortAddrRfDataPacketMsg(uint8_t* pu8Data, uint8_t u8DataLength, uint16_t u16DestAddress, uint8_t u8TxOptions, uint8_t u8PacketId); |
Issus | 0:f9cf4a19bb84 | 258 | // 0x22 |
Issus | 0:f9cf4a19bb84 | 259 | void SendAdvancedShortAddrRfDataPacketMsg(uint8_t* pu8Data, uint8_t u8DataLength, uint16_t u16DestPanId, uint16_t u16DestAddress, uint8_t u8TxOptions, uint8_t u8PacketId); |
Issus | 0:f9cf4a19bb84 | 260 | // 0x24 |
Issus | 0:f9cf4a19bb84 | 261 | void SendSimpleLongAddrRfDataPacketMsg(uint8_t* pu8Data, uint8_t u8DataLength, uint8_t* pu8DestAddress, uint8_t u8TxOptions, uint8_t u8PacketId); |
Issus | 0:f9cf4a19bb84 | 262 | // 0x26 |
Issus | 0:f9cf4a19bb84 | 263 | void SendAdvancedLongAddrRfDataPacketMsg(uint8_t* pu8Data, uint8_t u8DataLength, uint16_t u16DestPanId, uint8_t* pu8DestAddress, uint8_t u8TxOptions, uint8_t u8PacketId); |
Issus | 0:f9cf4a19bb84 | 264 | // 0x44 |
Issus | 0:f9cf4a19bb84 | 265 | void ChannelEnergyScanMsg(uint16_t u16ChannelMask, uint8_t u8ScanDuration); |
Issus | 0:f9cf4a19bb84 | 266 | |
Issus | 0:f9cf4a19bb84 | 267 | |
Issus | 0:f9cf4a19bb84 | 268 | private: |
Issus | 0:f9cf4a19bb84 | 269 | // Variables |
Issus | 0:f9cf4a19bb84 | 270 | uint8_t u8RxReadByte; |
Issus | 0:f9cf4a19bb84 | 271 | uint8_t u8ForLoopCounter; |
Issus | 0:f9cf4a19bb84 | 272 | uint8_t u8UartRxBufferIndex; |
Issus | 0:f9cf4a19bb84 | 273 | uint8_t u8UartTxBufferIndex; |
Issus | 0:f9cf4a19bb84 | 274 | uint8_t u8TxMsgChecksum;///< Transmit message checksum. |
Issus | 0:f9cf4a19bb84 | 275 | uint8_t au8UartRxBuffer[LSR_MODULE_MAX_SERIAL_RX_MSG_LENGTH];///< Receive buffer for UART communication from module. |
Issus | 0:f9cf4a19bb84 | 276 | uint8_t au8UartTxBuffer[LSR_MODULE_MAX_SERIAL_TX_MSG_LENGTH];///< Transmit buffer for UART communication to module. |
Issus | 0:f9cf4a19bb84 | 277 | bool bUartMethodFlag; |
Issus | 0:f9cf4a19bb84 | 278 | |
Issus | 0:f9cf4a19bb84 | 279 | |
Issus | 0:f9cf4a19bb84 | 280 | // Function Pointers |
Issus | 0:f9cf4a19bb84 | 281 | void (LsrModule::*ptrHostState)(void);///< Runs uart UART receive state machine. |
Issus | 0:f9cf4a19bb84 | 282 | void (LsrModule::*ptrHostProcessCallbackState)(uint8_t*);///< Used to process received UART messages. |
Issus | 0:f9cf4a19bb84 | 283 | |
Issus | 0:f9cf4a19bb84 | 284 | |
Issus | 0:f9cf4a19bb84 | 285 | // Functions |
Issus | 0:f9cf4a19bb84 | 286 | void AddSerialMsgHeader(uint8_t u8MsgType, uint8_t u8MsgLength); |
Issus | 0:f9cf4a19bb84 | 287 | void AddSerialByteToMsgBuffer(uint8_t u8Data); |
Issus | 0:f9cf4a19bb84 | 288 | void AddSerialMsgTrailer(void); |
Issus | 0:f9cf4a19bb84 | 289 | void WriteSerialMsg(void); |
Issus | 0:f9cf4a19bb84 | 290 | void HostProcessCallbackMsgStart (uint8_t* pu8MsgBuffer, uint8_t u8Length); |
Issus | 0:f9cf4a19bb84 | 291 | // Rx Message Callbacks |
Issus | 0:f9cf4a19bb84 | 292 | |
Issus | 0:f9cf4a19bb84 | 293 | |
Issus | 0:f9cf4a19bb84 | 294 | // Rx functions |
Issus | 0:f9cf4a19bb84 | 295 | bool ValidMsgLengthAndType(uint8_t u8MsgType, uint8_t u8MsgLength); |
Issus | 0:f9cf4a19bb84 | 296 | bool ValidRxChecksum(uint8_t* pu8MsgBuffer, uint8_t u8MsgLength); |
Issus | 0:f9cf4a19bb84 | 297 | void SerialFlush(void); |
Issus | 0:f9cf4a19bb84 | 298 | bool SerialAvailable(void); |
Issus | 0:f9cf4a19bb84 | 299 | uint8_t SerialRead(void); |
Issus | 0:f9cf4a19bb84 | 300 | |
Issus | 0:f9cf4a19bb84 | 301 | |
Issus | 0:f9cf4a19bb84 | 302 | // Rx State Machine States |
Issus | 0:f9cf4a19bb84 | 303 | void SerialRxCleanupRestart(void); |
Issus | 0:f9cf4a19bb84 | 304 | void HostRxWaitForMsgStartByteState(void); |
Issus | 0:f9cf4a19bb84 | 305 | void HostRxGetMsgLengthState(void); |
Issus | 0:f9cf4a19bb84 | 306 | void HostRxGetMsgTypeState(void); |
Issus | 0:f9cf4a19bb84 | 307 | void HostRxWaitToGetRestOfMsgState(void); |
Issus | 0:f9cf4a19bb84 | 308 | void HostRxValidateMsgState(void); |
Issus | 0:f9cf4a19bb84 | 309 | void HostRxGoodMsgState(void); |
Issus | 0:f9cf4a19bb84 | 310 | }; |
Issus | 0:f9cf4a19bb84 | 311 | |
Issus | 0:f9cf4a19bb84 | 312 | #endif |