void ble_write_string(byte *bytes, uint8_t len) { int j; if (buf_len + len > 20) { for (j = 0; j < 15000; j++) ble_do_events(); buf_len = 0; } for (j = 0; j < len; j++) { ble_write(bytes[j]); buf_len++; } if (buf_len == 20) { for (j = 0; j < 15000; j++) ble_do_events(); buf_len = 0; } }
void rs_ble_process(void) { while (ble_available()) { byte cmd; cmd = ble_read(); Serial.write(cmd); // Parse data here switch (cmd) { case 'V': // query protocol version { byte buf[] = {'V', PROTOCOL_MAJOR, PROTOCOL_MINOR, PROTOCOL_BUGFIX}; ble_write_string(buf, 4); } break; // send out any outstanding data ble_do_events(); buf_len = 0; return; // only do this task in this loop } // process text data if (Serial.available()) { byte d = 'Z'; ble_write(d); delay(5); while (Serial.available()) { d = Serial.read(); ble_write(d); } ble_do_events(); buf_len = 0; return; } ble_do_events(); buf_len = 0; } }
String BLE::readIncoming(){ int i=0; char stringBase[CHARS_TO_READ]; for (int i=0; i<CHARS_TO_READ; i++){ stringBase[i] = 1; } String finalString=""; if (ble_available()){ while (ble_available()){ int carrier = ble_read(); Serial.write (carrier); if (i<CHARS_TO_READ){ stringBase [i] = carrier; } i++; } for (i=0;i<CHARS_TO_READ;i++){ finalString = finalString + stringBase[i]; } Serial.println(""); Serial.println (finalString); return finalString; } ble_do_events(); }
void beaconSendData(){ int carrier; char sendCharArray[14]; if (Serial.available()){ delay(5); while (Serial.available()){ carrier = Serial.read(); ble_write ( carrier ); } } ble_do_events(); }