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