Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HM-11 by
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 | 
