Library for Bluetooth Low Energy Module ble 4.0 HM-11

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?

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