void checkBluetoothResetResponse() { if (((newMillis-bluetoothResponseMillis)>=BLUETOOH_RESET_RESPONSE_INTERVAL) && (!bluetoothResetResponded) ) { resetBluetooth(); bluetoothResetResponded = true; } }
int initBluetooth(struct sserial_props *pProps, const char *btName, const char *btPin) { char pTxBuff[32]; char pRxBuff[RX_BUFF_LENGTH] = {0}; int bSame, nLength; LOGI("> Triger reset pin"); resetBluetooth(pProps); LOGI("> Switch device to AT-mode"); ClrDtr(pProps); SleepMs(1000); #if 0 LOGV("> Reset to default"); WritePort(pProps, "AT+ORGL" CRLF, strlen("AT+ORGL" CRLF)); SleepMs(1000); #endif LOGV("> Switch to Slave mode"); WritePort(pProps, "AT+ROLE=0" CRLF, strlen("AT+ROLE=0" CRLF)); if (readLine(pProps, pRxBuff, OK_BUFF_LENGTH) <= 0 && strncasecmp(pRxBuff, "ok", 2)) { LOGE("AT+ROLE failed to set (%s)", pRxBuff); return 0; } if (getResult(pProps, "AT+NAME?" CRLF, pRxBuff, RX_BUFF_LENGTH)) { bSame = strncmp(pRxBuff, btName, strlen(btName)) == 0; // Get "OK" readLine(pProps, pRxBuff, OK_BUFF_LENGTH); if (bSame) { LOGW("Bluetooth name is same and will not be changed"); goto skip_name; } } LOGV("> Set name"); nLength = sprintf(pTxBuff, "AT+NAME=%s" CRLF, btName); WritePort(pProps, pTxBuff, nLength); if (readLine(pProps, pRxBuff, OK_BUFF_LENGTH) <= 0 && strncasecmp(pRxBuff, "ok", 2)) { LOGE("AT+NAME failed to set (%s)", pRxBuff); return 0; } skip_name: if (getResult(pProps, "AT+PSWD?" CRLF, pRxBuff, RX_BUFF_LENGTH)) { bSame = strncmp(pRxBuff, btPin, strlen(btPin)) == 0; // Get "OK" readLine(pProps, pRxBuff, OK_BUFF_LENGTH); if (bSame) { LOGW("Bluetooth pin code is same and will not be changed"); goto skip_password; } } LOGV("> Set password"); nLength = sprintf(pTxBuff, "AT+PSWD=%s" CRLF, btPin); WritePort(pProps, pTxBuff, nLength); if (readLine(pProps, pRxBuff, OK_BUFF_LENGTH) <= 0 && strncasecmp(pRxBuff, "ok", 2)) { LOGE("AT+PSWD failed to set (%s)", pRxBuff); return 0; } skip_password: LOGI("> Switch device to Data-mode"); SetDtr(pProps); SleepMs(10); resetBluetooth(pProps); return 1; }