コード例 #1
0
void checkBluetoothResetResponse()
{
	if (((newMillis-bluetoothResponseMillis)>=BLUETOOH_RESET_RESPONSE_INTERVAL) && (!bluetoothResetResponded) )
	{
		resetBluetooth();
		bluetoothResetResponded = true;
	}
}
コード例 #2
0
ファイル: main.c プロジェクト: Duiesel/test-bt
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;
}