Library for Bluetooth Low Energy Module ble 4.0 HM-11
hm11.h@0:df4bd867616e, 2015-11-01 (annotated)
- Committer:
- igbt6
- Date:
- Sun Nov 01 21:28:52 2015 +0000
- Revision:
- 0:df4bd867616e
- Child:
- 1:abf1462d47a0
First version of HM-11 library prepared
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
igbt6 | 0:df4bd867616e | 1 | /* |
igbt6 | 0:df4bd867616e | 2 | @file hm11.h |
igbt6 | 0:df4bd867616e | 3 | |
igbt6 | 0:df4bd867616e | 4 | @brief Bluetooth Low Energy v4.0 HM-11 Breakout Library |
igbt6 | 0:df4bd867616e | 5 | |
igbt6 | 0:df4bd867616e | 6 | @Author lukasz uszko(luszko@op.pl) |
igbt6 | 0:df4bd867616e | 7 | |
igbt6 | 0:df4bd867616e | 8 | Tested on FRDM-KL25Z |
igbt6 | 0:df4bd867616e | 9 | |
igbt6 | 0:df4bd867616e | 10 | Copyright (c) 2014 lukasz uszko |
igbt6 | 0:df4bd867616e | 11 | Released under the MIT License (see http://mbed.org/license/mit) |
igbt6 | 0:df4bd867616e | 12 | |
igbt6 | 0:df4bd867616e | 13 | Documentation regarding the HM-11 Bluetooth Low energy module can be found here: |
igbt6 | 0:df4bd867616e | 14 | https://www.microduino.cc/wiki/images/f/fc/Bluetooth40_en.pdf |
igbt6 | 0:df4bd867616e | 15 | http://txyz.info/b10n1c/datasheets/hm-11_bluetooth40_en.pdf |
igbt6 | 0:df4bd867616e | 16 | */ |
igbt6 | 0:df4bd867616e | 17 | |
igbt6 | 0:df4bd867616e | 18 | //HM-11 Device Pinout: |
igbt6 | 0:df4bd867616e | 19 | // Pin Name Description |
igbt6 | 0:df4bd867616e | 20 | // 1 UART_RTS UART interface |
igbt6 | 0:df4bd867616e | 21 | // 2 UART_TX UART interface |
igbt6 | 0:df4bd867616e | 22 | // 3 UART_CTS UART interface |
igbt6 | 0:df4bd867616e | 23 | // 4 UART_RX UART interface |
igbt6 | 0:df4bd867616e | 24 | // 5 NC NC |
igbt6 | 0:df4bd867616e | 25 | // 6 NC NC |
igbt6 | 0:df4bd867616e | 26 | // 7 NC NC |
igbt6 | 0:df4bd867616e | 27 | // 8 NC NC |
igbt6 | 0:df4bd867616e | 28 | // 9 CC V3.3 |
igbt6 | 0:df4bd867616e | 29 | // 10 NC NC or VCC |
igbt6 | 0:df4bd867616e | 30 | // 11 RESETB Reset if low <100ms |
igbt6 | 0:df4bd867616e | 31 | // 12 GND Ground |
igbt6 | 0:df4bd867616e | 32 | // 13 PIO3 Programmable input/output line |
igbt6 | 0:df4bd867616e | 33 | // 14 PIO2 Programmable input/output line |
igbt6 | 0:df4bd867616e | 34 | // 15 PIO1 System LED |
igbt6 | 0:df4bd867616e | 35 | // 16 PIO0 System KEY |
igbt6 | 0:df4bd867616e | 36 | |
igbt6 | 0:df4bd867616e | 37 | // AT Commands |
igbt6 | 0:df4bd867616e | 38 | // Factory default setting: |
igbt6 | 0:df4bd867616e | 39 | // Name: HMSoft; Baud: 9600, N, 8, 1; Pin code: 000000; transmit |
igbt6 | 0:df4bd867616e | 40 | |
igbt6 | 0:df4bd867616e | 41 | #ifndef HM11_H |
igbt6 | 0:df4bd867616e | 42 | #define HM11_H |
igbt6 | 0:df4bd867616e | 43 | |
igbt6 | 0:df4bd867616e | 44 | |
igbt6 | 0:df4bd867616e | 45 | #include "mbed.h" |
igbt6 | 0:df4bd867616e | 46 | #include "BufferedSerial.h" |
igbt6 | 0:df4bd867616e | 47 | |
igbt6 | 0:df4bd867616e | 48 | #define HM11_SERIAL_DEFAULT_BAUD 9600 |
igbt6 | 0:df4bd867616e | 49 | #define HM11_SERIAL_TIMEOUT 10000 |
igbt6 | 0:df4bd867616e | 50 | #define HM11_SERIAL_EOL "\r\n" |
igbt6 | 0:df4bd867616e | 51 | |
igbt6 | 0:df4bd867616e | 52 | static const char* hm11TestCommands[]={"AT","AT+","CONNL","RENEW","RESET","START","SLEEP","?"}; |
igbt6 | 0:df4bd867616e | 53 | |
igbt6 | 0:df4bd867616e | 54 | static const char* hm11SendCommands[]={"ADDR","BAUD","CLEAR","CON", |
igbt6 | 0:df4bd867616e | 55 | "FILT","HELP","IMME","MODE", |
igbt6 | 0:df4bd867616e | 56 | "NOTI","NAME","PARI","PIO1", |
igbt6 | 0:df4bd867616e | 57 | "PIO","PASS","PIN","POWE", |
igbt6 | 0:df4bd867616e | 58 | "PWRM","ROLE", |
igbt6 | 0:df4bd867616e | 59 | "RSSI","RADD","STOP", |
igbt6 | 0:df4bd867616e | 60 | "SAVE","TCON","TYPE","VERR","VERS" |
igbt6 | 0:df4bd867616e | 61 | }; |
igbt6 | 0:df4bd867616e | 62 | |
igbt6 | 0:df4bd867616e | 63 | static const char* HM11ReceiveMsgs[]={"OK","OK+","Get:","Set:","LOST","ADDR:","CLEAR","CONN", |
igbt6 | 0:df4bd867616e | 64 | "NAME","Set","PIO:","RENEW","RESET","RSSI:","RADD:", |
igbt6 | 0:df4bd867616e | 65 | "START","SLEEP","TCON","RSSI:","RADD:","CONNF" |
igbt6 | 0:df4bd867616e | 66 | }; |
igbt6 | 0:df4bd867616e | 67 | |
igbt6 | 0:df4bd867616e | 68 | typedef enum hm11CommandsType_t{ |
igbt6 | 0:df4bd867616e | 69 | HM11_TEST_COMMAND=0, |
igbt6 | 0:df4bd867616e | 70 | HM11_SEND_COMMAND, |
igbt6 | 0:df4bd867616e | 71 | HM11_NUM_OF_COMMAND_TYPE |
igbt6 | 0:df4bd867616e | 72 | }HM11CommandType; |
igbt6 | 0:df4bd867616e | 73 | |
igbt6 | 0:df4bd867616e | 74 | typedef enum hm11TestCommands_t{ |
igbt6 | 0:df4bd867616e | 75 | HM11_AT_TEST =0, |
igbt6 | 0:df4bd867616e | 76 | HM11_START_CMD, |
igbt6 | 0:df4bd867616e | 77 | HM11_CONNECT_TO_LAST_SUCCEEDED_DEVICE , // |
igbt6 | 0:df4bd867616e | 78 | HM11_RESTORE_ALL, // |
igbt6 | 0:df4bd867616e | 79 | HM11_RESET_MODULE, // |
igbt6 | 0:df4bd867616e | 80 | HM11_WORK_IMMEDIATELY, // |
igbt6 | 0:df4bd867616e | 81 | HM11_SLEEP_MODE, // |
igbt6 | 0:df4bd867616e | 82 | HM11_QUERY_SIGN, |
igbt6 | 0:df4bd867616e | 83 | HM11_NUM_OF_TEST_COMMANDS |
igbt6 | 0:df4bd867616e | 84 | }HM11TestCommands; |
igbt6 | 0:df4bd867616e | 85 | |
igbt6 | 0:df4bd867616e | 86 | |
igbt6 | 0:df4bd867616e | 87 | typedef enum hm11Commands_t{ |
igbt6 | 0:df4bd867616e | 88 | HM11_ADDRESS, |
igbt6 | 0:df4bd867616e | 89 | HM11_BAUDRATE, |
igbt6 | 0:df4bd867616e | 90 | HM11_CLEAR_LAST_CONNECTED_DEVICE_ADDRESS , |
igbt6 | 0:df4bd867616e | 91 | HM11_CONNECT_TO_ADDRESS, |
igbt6 | 0:df4bd867616e | 92 | HM11_FILTER_AT_COMMAND_PARAMETER, |
igbt6 | 0:df4bd867616e | 93 | HM11_HELP_INFORMATION, |
igbt6 | 0:df4bd867616e | 94 | HM11_MODULE_WORK_TYPE, |
igbt6 | 0:df4bd867616e | 95 | HM11_MODULE_WORK_MODE, |
igbt6 | 0:df4bd867616e | 96 | HM11_NOTIFY_INFORMATION, |
igbt6 | 0:df4bd867616e | 97 | HM11_MODULE_NAME, |
igbt6 | 0:df4bd867616e | 98 | HM11_PARITY_BIT, |
igbt6 | 0:df4bd867616e | 99 | HM11_PIO1_OUTPT_STATUS, |
igbt6 | 0:df4bd867616e | 100 | HM11_PIO_PINS_HIGH_OR_LOW, |
igbt6 | 0:df4bd867616e | 101 | HM11_GET_PIN_CODE, |
igbt6 | 0:df4bd867616e | 102 | HM11_PIN_CODE, |
igbt6 | 0:df4bd867616e | 103 | HM11_MODULE_POWER, |
igbt6 | 0:df4bd867616e | 104 | HM11_MODULE_SLEEP_TYPE, |
igbt6 | 0:df4bd867616e | 105 | HM11_MASTER_SLAVE_ROLL, |
igbt6 | 0:df4bd867616e | 106 | HM11_RSSI_VALUE, |
igbt6 | 0:df4bd867616e | 107 | HM11_LAST_CONNECTED_DEVICE_ADDRESS, |
igbt6 | 0:df4bd867616e | 108 | HM11_STOP_BIT, |
igbt6 | 0:df4bd867616e | 109 | HM11_MODULE_SAVE_CONNECTED_ADDR_PARAMETER, |
igbt6 | 0:df4bd867616e | 110 | HM11_MODULE_CONNECT_REMOTE_DEVICE_TIMEOUT_VALUE, |
igbt6 | 0:df4bd867616e | 111 | HM11_MODULE_BOND_MODE, |
igbt6 | 0:df4bd867616e | 112 | HM11_SOFTWARE_VERSION, |
igbt6 | 0:df4bd867616e | 113 | HM11_NUM_OF_COMMANDS |
igbt6 | 0:df4bd867616e | 114 | }HM11Commands; |
igbt6 | 0:df4bd867616e | 115 | |
igbt6 | 0:df4bd867616e | 116 | /** |
igbt6 | 0:df4bd867616e | 117 | AT Commands parameters |
igbt6 | 0:df4bd867616e | 118 | */ |
igbt6 | 0:df4bd867616e | 119 | typedef enum AdvertisingInterval{ |
igbt6 | 0:df4bd867616e | 120 | _100ms=0, |
igbt6 | 0:df4bd867616e | 121 | _152_5ms, |
igbt6 | 0:df4bd867616e | 122 | _211_25ms, |
igbt6 | 0:df4bd867616e | 123 | _318_75ms, |
igbt6 | 0:df4bd867616e | 124 | _417_5ms, |
igbt6 | 0:df4bd867616e | 125 | _546_25ms, |
igbt6 | 0:df4bd867616e | 126 | _760ms, |
igbt6 | 0:df4bd867616e | 127 | _852_5ms, |
igbt6 | 0:df4bd867616e | 128 | _1022_5ms, |
igbt6 | 0:df4bd867616e | 129 | _1285ms, |
igbt6 | 0:df4bd867616e | 130 | _2000ms, |
igbt6 | 0:df4bd867616e | 131 | _3000ms, |
igbt6 | 0:df4bd867616e | 132 | _4000ms, |
igbt6 | 0:df4bd867616e | 133 | _5000ms, |
igbt6 | 0:df4bd867616e | 134 | _6000ms, |
igbt6 | 0:df4bd867616e | 135 | _7000ms, |
igbt6 | 0:df4bd867616e | 136 | _INVALID_ADV_INTERVAL |
igbt6 | 0:df4bd867616e | 137 | }AdvertisingInterval_t; |
igbt6 | 0:df4bd867616e | 138 | |
igbt6 | 0:df4bd867616e | 139 | |
igbt6 | 0:df4bd867616e | 140 | typedef enum AdvertisingType{ |
igbt6 | 0:df4bd867616e | 141 | _AdvertisingScanResponseConnectable=0, |
igbt6 | 0:df4bd867616e | 142 | _LastDeviceConnectsIn1_28Seconds, |
igbt6 | 0:df4bd867616e | 143 | _AdvertisingScanResponse, |
igbt6 | 0:df4bd867616e | 144 | _Advertising, |
igbt6 | 0:df4bd867616e | 145 | _INVALID_ADV_TYPE |
igbt6 | 0:df4bd867616e | 146 | }AdvertisingType_t; |
igbt6 | 0:df4bd867616e | 147 | |
igbt6 | 0:df4bd867616e | 148 | typedef enum BaudRate{ |
igbt6 | 0:df4bd867616e | 149 | _9600=0, |
igbt6 | 0:df4bd867616e | 150 | _19200, |
igbt6 | 0:df4bd867616e | 151 | _38400, |
igbt6 | 0:df4bd867616e | 152 | _57600, |
igbt6 | 0:df4bd867616e | 153 | _115200, |
igbt6 | 0:df4bd867616e | 154 | _4800, |
igbt6 | 0:df4bd867616e | 155 | _2400, |
igbt6 | 0:df4bd867616e | 156 | _1200, |
igbt6 | 0:df4bd867616e | 157 | _230400, |
igbt6 | 0:df4bd867616e | 158 | _INVALID_BAUDRATE |
igbt6 | 0:df4bd867616e | 159 | }BaudRate_t; |
igbt6 | 0:df4bd867616e | 160 | |
igbt6 | 0:df4bd867616e | 161 | typedef enum ConnectionStatus{ |
igbt6 | 0:df4bd867616e | 162 | _L, // Connecting |
igbt6 | 0:df4bd867616e | 163 | _E, // Connect error |
igbt6 | 0:df4bd867616e | 164 | _F, // Connect Fail |
igbt6 | 0:df4bd867616e | 165 | _N // No Address |
igbt6 | 0:df4bd867616e | 166 | }ConnectionStatus_t; |
igbt6 | 0:df4bd867616e | 167 | |
igbt6 | 0:df4bd867616e | 168 | |
igbt6 | 0:df4bd867616e | 169 | class HM11{ |
igbt6 | 0:df4bd867616e | 170 | |
igbt6 | 0:df4bd867616e | 171 | public: |
igbt6 | 0:df4bd867616e | 172 | HM11(PinName uartTx , PinName uartRx); |
igbt6 | 0:df4bd867616e | 173 | |
igbt6 | 0:df4bd867616e | 174 | HM11(const BufferedSerial & serial); |
igbt6 | 0:df4bd867616e | 175 | |
igbt6 | 0:df4bd867616e | 176 | bool sendGetCommand(const char* command); |
igbt6 | 0:df4bd867616e | 177 | bool sendSetCommand(const char* command,int param); |
igbt6 | 0:df4bd867616e | 178 | |
igbt6 | 0:df4bd867616e | 179 | bool isCorrectCommand(const char* command, HM11CommandType cmdType); |
igbt6 | 0:df4bd867616e | 180 | |
igbt6 | 0:df4bd867616e | 181 | int sendDataToDevice(const char* data); |
igbt6 | 0:df4bd867616e | 182 | |
igbt6 | 0:df4bd867616e | 183 | int isRxDataAvailable(); |
igbt6 | 0:df4bd867616e | 184 | |
igbt6 | 0:df4bd867616e | 185 | inline uint8_t getDataFromRx() { |
igbt6 | 0:df4bd867616e | 186 | return mSerial.getc(); |
igbt6 | 0:df4bd867616e | 187 | } |
igbt6 | 0:df4bd867616e | 188 | |
igbt6 | 0:df4bd867616e | 189 | |
igbt6 | 0:df4bd867616e | 190 | //commandMethods |
igbt6 | 0:df4bd867616e | 191 | bool testCommand(void); |
igbt6 | 0:df4bd867616e | 192 | char* queryModuleAddress(void); |
igbt6 | 0:df4bd867616e | 193 | bool setAdvertisingInterval(AdvertisingInterval_t advInt); |
igbt6 | 0:df4bd867616e | 194 | AdvertisingInterval_t queryAdvertisingInterval(void); |
igbt6 | 0:df4bd867616e | 195 | |
igbt6 | 0:df4bd867616e | 196 | bool setAdvertisingType(AdvertisingType_t advInt); |
igbt6 | 0:df4bd867616e | 197 | AdvertisingType_t queryAdvertisingType(void); |
igbt6 | 0:df4bd867616e | 198 | |
igbt6 | 0:df4bd867616e | 199 | |
igbt6 | 0:df4bd867616e | 200 | /** Set ANCS switch |
igbt6 | 0:df4bd867616e | 201 | * @param enable |0: Off |1: On |Default: 0 |
igbt6 | 0:df4bd867616e | 202 | * @return |
igbt6 | 0:df4bd867616e | 203 | * 1 on success, |
igbt6 | 0:df4bd867616e | 204 | * 0 on error. |
igbt6 | 0:df4bd867616e | 205 | * Note1: This command added in V524. |
igbt6 | 0:df4bd867616e | 206 | * Note2: Please send AT+RESET to restart module if you set value 1. |
igbt6 | 0:df4bd867616e | 207 | * Note3: Must execute AT+TYPE3 first. |
igbt6 | 0:df4bd867616e | 208 | */ |
igbt6 | 0:df4bd867616e | 209 | bool setAncsSwitch(uint8_t enable); |
igbt6 | 0:df4bd867616e | 210 | |
igbt6 | 0:df4bd867616e | 211 | |
igbt6 | 0:df4bd867616e | 212 | /** query ANCS switch |
igbt6 | 0:df4bd867616e | 213 | * @return |
igbt6 | 0:df4bd867616e | 214 | * 1 -On, |
igbt6 | 0:df4bd867616e | 215 | * 0 -Off |
igbt6 | 0:df4bd867616e | 216 | * 0xFF -error |
igbt6 | 0:df4bd867616e | 217 | * Note1: This command added in V524. |
igbt6 | 0:df4bd867616e | 218 | * Note2: Please send AT+RESET to restart module if you set value 1. |
igbt6 | 0:df4bd867616e | 219 | * Note3: Must execute AT+TYPE3 first. |
igbt6 | 0:df4bd867616e | 220 | */ |
igbt6 | 0:df4bd867616e | 221 | uint8_t queryAncsSwitch(void); |
igbt6 | 0:df4bd867616e | 222 | |
igbt6 | 0:df4bd867616e | 223 | |
igbt6 | 0:df4bd867616e | 224 | /** Set Whitelist switch |
igbt6 | 0:df4bd867616e | 225 | * @param enable |0: Off |1: On |Default: 0 |
igbt6 | 0:df4bd867616e | 226 | * @return |
igbt6 | 0:df4bd867616e | 227 | * 1 on success, |
igbt6 | 0:df4bd867616e | 228 | * 0 on error. |
igbt6 | 0:df4bd867616e | 229 | * Note1: This command added in V523 |
igbt6 | 0:df4bd867616e | 230 | * Note2: Whitelist allow three mac address link to module. Please use AT+AD command set whitelist mac address. |
igbt6 | 0:df4bd867616e | 231 | */ |
igbt6 | 0:df4bd867616e | 232 | bool setWhitelistSwitch(uint8_t enable); |
igbt6 | 0:df4bd867616e | 233 | |
igbt6 | 0:df4bd867616e | 234 | |
igbt6 | 0:df4bd867616e | 235 | /** query Whitelist Switch |
igbt6 | 0:df4bd867616e | 236 | * @return |
igbt6 | 0:df4bd867616e | 237 | * 1 - On, |
igbt6 | 0:df4bd867616e | 238 | * 0 - Off, |
igbt6 | 0:df4bd867616e | 239 | * 0xFF -error. |
igbt6 | 0:df4bd867616e | 240 | * Note1: This command added in V523 |
igbt6 | 0:df4bd867616e | 241 | * Note2: Whitelist allow three mac address link to module. Please use AT+AD command set whitelist mac address. |
igbt6 | 0:df4bd867616e | 242 | */ |
igbt6 | 0:df4bd867616e | 243 | uint8_t queryWhitelistSwitch(void); |
igbt6 | 0:df4bd867616e | 244 | |
igbt6 | 0:df4bd867616e | 245 | |
igbt6 | 0:df4bd867616e | 246 | /** Set whitelist mac address |
igbt6 | 0:df4bd867616e | 247 | * @param nrOfMacAddrLinkedToModule |1,2,3 |
igbt6 | 0:df4bd867616e | 248 | * @param macAddress |eg. 001122334455 |
igbt6 | 0:df4bd867616e | 249 | * @return |
igbt6 | 0:df4bd867616e | 250 | * 1 on success, |
igbt6 | 0:df4bd867616e | 251 | * 0 on error. |
igbt6 | 0:df4bd867616e | 252 | */ |
igbt6 | 0:df4bd867616e | 253 | bool setWhitelistMacAddress (uint8_t nrOfMacAddrLinkedToModule, const char* macAddress); |
igbt6 | 0:df4bd867616e | 254 | |
igbt6 | 0:df4bd867616e | 255 | |
igbt6 | 0:df4bd867616e | 256 | /** query whitelist mac address |
igbt6 | 0:df4bd867616e | 257 | * @param nrOfMacAddrLinkedToModule |1,2,3 |
igbt6 | 0:df4bd867616e | 258 | * @return |
igbt6 | 0:df4bd867616e | 259 | * nr of mac addr |
igbt6 | 0:df4bd867616e | 260 | * null -error. |
igbt6 | 0:df4bd867616e | 261 | */ |
igbt6 | 0:df4bd867616e | 262 | char* queryWhitelistMacAddress(uint8_t nrOfMacAddrLinkedToModule); |
igbt6 | 0:df4bd867616e | 263 | |
igbt6 | 0:df4bd867616e | 264 | |
igbt6 | 0:df4bd867616e | 265 | /** Set battery monitor switch |
igbt6 | 0:df4bd867616e | 266 | * @param uint8_t battSwitchEnable: |0: Off |1: On |Default: 0 |
igbt6 | 0:df4bd867616e | 267 | * @return |
igbt6 | 0:df4bd867616e | 268 | * 1 on success, |
igbt6 | 0:df4bd867616e | 269 | * 0 on error. |
igbt6 | 0:df4bd867616e | 270 | * Note1: This command added in V520 |
igbt6 | 0:df4bd867616e | 271 | */ |
igbt6 | 0:df4bd867616e | 272 | bool setBatteryMonitorSwitch(uint8_t battSwitchEnable); |
igbt6 | 0:df4bd867616e | 273 | |
igbt6 | 0:df4bd867616e | 274 | |
igbt6 | 0:df4bd867616e | 275 | /** query BatteryMonitorSwitch |
igbt6 | 0:df4bd867616e | 276 | * @return |
igbt6 | 0:df4bd867616e | 277 | * batt switch state: |0: Off |1: On |
igbt6 | 0:df4bd867616e | 278 | * 0xFF -error |
igbt6 | 0:df4bd867616e | 279 | * Note1: This command added in V520. |
igbt6 | 0:df4bd867616e | 280 | */ |
igbt6 | 0:df4bd867616e | 281 | uint8_t queryBatteryMonitorSwitch(void); |
igbt6 | 0:df4bd867616e | 282 | |
igbt6 | 0:df4bd867616e | 283 | |
igbt6 | 0:df4bd867616e | 284 | |
igbt6 | 0:df4bd867616e | 285 | /**Query battery information |
igbt6 | 0:df4bd867616e | 286 | * @return |
igbt6 | 0:df4bd867616e | 287 | * batt information: 000~100 |
igbt6 | 0:df4bd867616e | 288 | * 0xFF -error |
igbt6 | 0:df4bd867616e | 289 | * |
igbt6 | 0:df4bd867616e | 290 | * There has three ways to get battery information: |
igbt6 | 0:df4bd867616e | 291 | a. Before establishing a connection, Send “AT+BATT?” through UART. |
igbt6 | 0:df4bd867616e | 292 | b. After established a connection, In Mode 1 or 2, remote side send“AT+BATT?” |
igbt6 | 0:df4bd867616e | 293 | Battery information has included in scan response data package, one hour update once |
igbt6 | 0:df4bd867616e | 294 | */ |
igbt6 | 0:df4bd867616e | 295 | uint8_t queryBatteryInformation(void); |
igbt6 | 0:df4bd867616e | 296 | |
igbt6 | 0:df4bd867616e | 297 | |
igbt6 | 0:df4bd867616e | 298 | |
igbt6 | 0:df4bd867616e | 299 | /** Set iBeacon into service mode(*) |
igbt6 | 0:df4bd867616e | 300 | * @return |
igbt6 | 0:df4bd867616e | 301 | * 1 on success, |
igbt6 | 0:df4bd867616e | 302 | * 0 on error. |
igbt6 | 0:df4bd867616e | 303 | * This command is added in V520, Removed in V521, Please use AT+DELO |
igbt6 | 0:df4bd867616e | 304 | * This command set iBeacon into service mode until next power on. |
igbt6 | 0:df4bd867616e | 305 | * In service mode, module not allow any link request. |
igbt6 | 0:df4bd867616e | 306 | * BUSHU is Chinese spelling, meaning the deployment. |
igbt6 | 0:df4bd867616e | 307 | * Note: Should to open iBeacon switch first (AT+IBEA). |
igbt6 | 0:df4bd867616e | 308 | */ |
igbt6 | 0:df4bd867616e | 309 | bool setIBeaconIntoServiceMode(void); |
igbt6 | 0:df4bd867616e | 310 | |
igbt6 | 0:df4bd867616e | 311 | |
igbt6 | 0:df4bd867616e | 312 | |
igbt6 | 0:df4bd867616e | 313 | /** Set Bit format |
igbt6 | 0:df4bd867616e | 314 | * @param bit7Format: 0:NotCompatible, 1:Compatible |
igbt6 | 0:df4bd867616e | 315 | * @return |
igbt6 | 0:df4bd867616e | 316 | * 1 NotCompatible, |
igbt6 | 0:df4bd867616e | 317 | * 0 Compatible, |
igbt6 | 0:df4bd867616e | 318 | * 0xFF Error |
igbt6 | 0:df4bd867616e | 319 | * This command is used only for compatible uses 7 data bits, 2 stop bit device. |
igbt6 | 0:df4bd867616e | 320 | */ |
igbt6 | 0:df4bd867616e | 321 | bool setBitFormat(uint8_t bit7Format); |
igbt6 | 0:df4bd867616e | 322 | |
igbt6 | 0:df4bd867616e | 323 | |
igbt6 | 0:df4bd867616e | 324 | /**Query BitFormat |
igbt6 | 0:df4bd867616e | 325 | * @return |
igbt6 | 0:df4bd867616e | 326 | * bit7 Swu=itch |
igbt6 | 0:df4bd867616e | 327 | * 0xFF -error |
igbt6 | 0:df4bd867616e | 328 | */ |
igbt6 | 0:df4bd867616e | 329 | uint8_t queryBitFormat(void); |
igbt6 | 0:df4bd867616e | 330 | |
igbt6 | 0:df4bd867616e | 331 | |
igbt6 | 0:df4bd867616e | 332 | /** Set baud rate |
igbt6 | 0:df4bd867616e | 333 | * @param baud: Baudrate value |
igbt6 | 0:df4bd867616e | 334 | * @return |
igbt6 | 0:df4bd867616e | 335 | * 1 success, |
igbt6 | 0:df4bd867616e | 336 | * 0 Error, |
igbt6 | 0:df4bd867616e | 337 | */ |
igbt6 | 0:df4bd867616e | 338 | bool setBaudRate(BaudRate_t baud); |
igbt6 | 0:df4bd867616e | 339 | |
igbt6 | 0:df4bd867616e | 340 | |
igbt6 | 0:df4bd867616e | 341 | |
igbt6 | 0:df4bd867616e | 342 | /**Query baud rate |
igbt6 | 0:df4bd867616e | 343 | * @return |
igbt6 | 0:df4bd867616e | 344 | * Baudrate_t - Baudrate value |
igbt6 | 0:df4bd867616e | 345 | */ |
igbt6 | 0:df4bd867616e | 346 | BaudRate_t queryBaudRate(void); |
igbt6 | 0:df4bd867616e | 347 | |
igbt6 | 0:df4bd867616e | 348 | /** Set Characteristic value |
igbt6 | 0:df4bd867616e | 349 | * @param chValue (characteristic value): 0x0001~0xFFFE |
igbt6 | 0:df4bd867616e | 350 | * @return |
igbt6 | 0:df4bd867616e | 351 | * 1 success, |
igbt6 | 0:df4bd867616e | 352 | * 0 Error, |
igbt6 | 0:df4bd867616e | 353 | */ |
igbt6 | 0:df4bd867616e | 354 | bool setCharacteristic(uint16_t chValue); |
igbt6 | 0:df4bd867616e | 355 | |
igbt6 | 0:df4bd867616e | 356 | |
igbt6 | 0:df4bd867616e | 357 | |
igbt6 | 0:df4bd867616e | 358 | /**Query Characteristic value |
igbt6 | 0:df4bd867616e | 359 | * @return |
igbt6 | 0:df4bd867616e | 360 | * characteristic value: 0x0001~0xFFFE |
igbt6 | 0:df4bd867616e | 361 | * error :0xFFFF |
igbt6 | 0:df4bd867616e | 362 | */ |
igbt6 | 0:df4bd867616e | 363 | uint16_t queryCharacteristic(void); |
igbt6 | 0:df4bd867616e | 364 | |
igbt6 | 0:df4bd867616e | 365 | |
igbt6 | 0:df4bd867616e | 366 | /** Try connect to last succeeded device |
igbt6 | 0:df4bd867616e | 367 | * @return |
igbt6 | 0:df4bd867616e | 368 | * ConnectionStatus_t connection status. |
igbt6 | 0:df4bd867616e | 369 | * Notice: Only Central role is used. |
igbt6 | 0:df4bd867616e | 370 | * If remote device has already connected to other device or shut down, |
igbt6 | 0:df4bd867616e | 371 | * “OK+CONNF” will received after about 10 seconds. |
igbt6 | 0:df4bd867616e | 372 | */ |
igbt6 | 0:df4bd867616e | 373 | ConnectionStatus_t connectToLastDevice(void); |
igbt6 | 0:df4bd867616e | 374 | |
igbt6 | 0:df4bd867616e | 375 | |
igbt6 | 0:df4bd867616e | 376 | /** Try connect an address |
igbt6 | 0:df4bd867616e | 377 | * @param address e.g." 0017EA090909 " |
igbt6 | 0:df4bd867616e | 378 | * @return connection status |
igbt6 | 0:df4bd867616e | 379 | * Notice: Only Central role is used. |
igbt6 | 0:df4bd867616e | 380 | * If remote device has already connected to other device or shut down, |
igbt6 | 0:df4bd867616e | 381 | * “OK+CONNF” will received after about 10 seconds. |
igbt6 | 0:df4bd867616e | 382 | * |
igbt6 | 0:df4bd867616e | 383 | * Notice: Only central role is used. |
igbt6 | 0:df4bd867616e | 384 | If remote device has already connected to other device or shut down, |
igbt6 | 0:df4bd867616e | 385 | “OK+CONNF” will received after about 10 Seconds. |
igbt6 | 0:df4bd867616e | 386 | e.g. |
igbt6 | 0:df4bd867616e | 387 | Try to connect an device which MAC address is 00:17:EA:09:09:09 |
igbt6 | 0:df4bd867616e | 388 | Send: AT+CON0017EA090909 |
igbt6 | 0:df4bd867616e | 389 | May receive a reply: |
igbt6 | 0:df4bd867616e | 390 | OK+CONNA ========= Accept request, connecting |
igbt6 | 0:df4bd867616e | 391 | OK+CONNE ========= Connect error |
igbt6 | 0:df4bd867616e | 392 | OK+CONN ========= Connected, if AT+NOTI1 is setup |
igbt6 | 0:df4bd867616e | 393 | OK+CONNF ========= Connect Failed, After 10 seconds |
igbt6 | 0:df4bd867616e | 394 | */ |
igbt6 | 0:df4bd867616e | 395 | ConnectionStatus_t connectToAnAddress(const char* address); |
igbt6 | 0:df4bd867616e | 396 | |
igbt6 | 0:df4bd867616e | 397 | |
igbt6 | 0:df4bd867616e | 398 | |
igbt6 | 0:df4bd867616e | 399 | private: |
igbt6 | 0:df4bd867616e | 400 | |
igbt6 | 0:df4bd867616e | 401 | bool waitForData(int timeoutMs); |
igbt6 | 0:df4bd867616e | 402 | BufferedSerial mSerial; |
igbt6 | 0:df4bd867616e | 403 | }; |
igbt6 | 0:df4bd867616e | 404 | |
igbt6 | 0:df4bd867616e | 405 | |
igbt6 | 0:df4bd867616e | 406 | |
igbt6 | 0:df4bd867616e | 407 | |
igbt6 | 0:df4bd867616e | 408 | |
igbt6 | 0:df4bd867616e | 409 | |
igbt6 | 0:df4bd867616e | 410 | |
igbt6 | 0:df4bd867616e | 411 | |
igbt6 | 0:df4bd867616e | 412 | |
igbt6 | 0:df4bd867616e | 413 | |
igbt6 | 0:df4bd867616e | 414 | |
igbt6 | 0:df4bd867616e | 415 | #endif |