工具与软件:
您好!
在 basic_ble OAD 外围设备项目中、我们将根据 UART 回调实现观察配对过程中的不同行为。
以下 是两种不同的实现方式:
观察结果:
实施1:我们没有在远程设备(移动电话)上收到 PASSKEY 输入弹出窗口、最终每次配对都失败、而且我们也没有收到 BLEAPPUTIL_PAIRING_STATE_COMPLETE 事件。
实施2:配对成功。
我们需要使用实施 1来正确处理 UART 交换、但配对失败、最好建议解决方案。
SDK 版本:simplelink_lowpower_f3_sdk_8_10_01_02
CCS 版本:CCS 12.7.1
//Global variables
uint8_t uartReadBuffer[100] = {0};
uint8_t uartPacketSize = 0;
//Implemention 1:
void HandlingFunction(char *pData)
{
uint8_t *pDataBase = NULL;
pDataBase = pData;
uint8_t len = *pData;
pData++;
UART2_write(uart, pDataBase,len+1, 0);
UART2_read(uart, &uartReadBuffer, UART_MAX_READ_SIZE,0);
}
void UARTCallback(UART2_Handle handle, void *buffer, size_t count, void *userArg, int_fast16_t status)
{
uint8_t *idx = NULL;
uint8_t *data = BLEAppUtil_malloc(count);
idx = data;
*idx = count;
idx++;
memcpy(idx, buffer, count);
BLEAppUtil_invokeFunction(HandlingFunction, data);
memset(uartReadBuffer,0,sizeof(uartReadBuffer));
}
//Implemention 2:
void HandlingFunction(char *pData)
{
UART2_write(uart, uartReadBuffer,uartPacketSize, 0);
memset(uartReadBuffer,0,sizeof(uartReadBuffer));
UART2_read(uart, &uartReadBuffer, UART_MAX_READ_SIZE,0);
}
void UARTCallback(UART2_Handle handle, void *buffer, size_t count, void *userArg, int_fast16_t status)
{
uartPacketSize = count;
BLEAppUtil_invokeFunction(HandlingFunction, NULL);
}
谢谢!
Vignesh。