主题中讨论的其他器件: CC256XM4BTBLESW
您好!
我正在使用 Tm4c129xnczad 控制器。 我正在使用 SPPLE 演示程序连接远程蓝牙。 它具有蓝牙地址" 30ae7bc71efc "。因此我尝试 使用 ConnectLE (NULL)等函数连接远程蓝牙;
DiscoverSPPLE (空);
ConfigureSPPLE (NULL); 所以我在 连接请求成功时获得输出。
发现中无设备信息。
配置中无设备信息。
您能告诉我为什么我无法连接远程蓝牙吗? 我在这里通过共享代码、请告诉我如何解决该问题。
静态 int ConnectLE (参数列表_t *温度参数)
{
int ret_val;
BD_ADDR_t BD_ADDR;
GAP_LE_Address_Type_t Address_Type;
// char BT_address[12]="f43538fe9c18";
// char BT_address[12]="d78206cba936";
char RT_address[12]="30ae7bc71efc";
/*首先,检查是否存在有效的蓝牙堆栈 ID。 *
if (蓝牙 StackID)
{
/*接下来,确保存在有效的设备地址。 *
// if ((TempParam)&&(TempParam->NumberofParameters >0)&&(TempParam->Params[0].strParam)&&(BTPS_StringLength (TempParam->Params[0].strParam)>=(sizeof (BD_ADDR_t)*2)))))
//{
/*检查是否指定了地址类型。 *
// if (TempParam->NumberofParameters >=2)
//{
// if (TempParam->Params[1].intParam)
// Address_Type = latRandom;
//否则
// Address_Type = latPublic;
//}
//否则
address_Type = latRandom;
/*将参数转换为蓝牙设备地址。 *
StrToBD_ADDR (RT_ADDRESS、&BD_ADDR);
// StrToBD_ADDR (DOG_Address、&BD_ADDR);
if (!ConnectLEDevice (BluetoothStackID、Address_Type、BD_ADDR、false))
RET_val = 0;
其他
RET_val = function_error;
//}
//否则
//{
/*指定的参数无效,因此向用户标记错误。 *
// DisplayUsage ("ConnectLE [BD_ADDR][地址类型(0 =公共/默认、1 =随机)可选]");
/*标记在提交命令时发生错误。 *
// ret_val = inval_parameters_error;
//}
}
其他
{
/*不存在有效的蓝牙堆栈 ID。 *
RET_val = INVALID_STACK_ID_ERROR;
}
return (ret_val);
}
静态 int DiscoverSPPLE (参数列表_t *温度参数)
{
int ret_val;
Int LEConnectionIndex;
BD_ADDR_t BD_ADDR;
GATT_UUUUID_t UUUID[1];
DeviceInfo_t *设备信息;
//char BT_address[12]="f43538fe9c18";
// char BT_address[12]="d78206cba936";
char RT_address[12]="30ae7bc71efc";
/*接下来,确保存在有效的设备地址。 *
// if ((TempParam)&&(TempParam->NumberofParameters >0)&&(TempParam->Params[0].strParam)&&(BTPS_StringLength (TempParam->Params[0].strParam)>=(sizeof (BD_ADDR_t)*2)))))
//{
/*将参数转换为蓝牙设备地址。 *
StrToBD_ADDR (RT_ADDRESS、&BD_ADDR);
/*找到此连接的 LE 连接索引。 *
if ((LEConnectionIndex = FindLEIndexByAddress (BD_ADDR))>= 0)
{
/*获取连接设备的设备信息。 *
if ((DeviceInfo = SearchDeviceInfoEntryByBD_ADDR (&DeviceInfoList、LEContextInfo[LEConnectionIndex].ConnectionBD_ADDR))!= NULL)
{
/*验证没有针对此服务发现的未完成*/
/*设备。 *
if (!(DeviceInfo->Flags & DEVICE_INFO_FLAGS_SERVICE_DISCOVERY))
{
/*配置过滤器,以便仅使用 SPP LE 服务*/
/*已发现。 *
UUUID[0].UUUID_Type = guUUID_128;
SPPLE_ASSIGT_SPPLE_SERVICE_UUUUID_128 (&(UUUID[0].UUID_UUID_128));
/*启动服务发现过程。 *
RET_val = GATT_Start_Service_Discovery (BluetoothStackID、LEContextInfo[LEConnectionIndex].ConnectionID、(sizeof (UUID)/sizeof (GATT_UUID_t))、UUID、GATT_Service_Discovery_Event_Callback、 0);
if (!ret_val)
{
/*显示成功消息。 *
显示("GATT_Start_Service_Discovery 成功。\r\n);
/*标记服务发现操作是*/
/*出色。 *
DeviceInfo->Flags |= DEVICE_INFO_FLAGS_SERVICE_DISCOVERY;
}
其他
{
/*发生错误,因此只需清理即可。 *
显示("错误- GATT_Start_Service_Discovery 返回%d.\r\n\r\n、ret_val);
RET_val = function_error;
}
}
其他
{
显示("设备的服务发现操作超研。\r\n);
RET_val = function_error;
}
}
其他
{
显示("发现中无设备信息。\r\n);
RET_val = function_error;
}
}
其他
{
/*不匹配 ConnectionBD_ADDR。 *
显示("存在与 BD_ADDR %s 的连接。\r\n、RT_ADDRESS);
RET_val = function_error;
}
//}
//否则
//{
/*指定的参数无效,因此向用户标记错误。 *
//显示(("用法:DiscoverSPPLE [BD_ADDR]。\r\n");
/*标记在提交命令时发生错误。 *
// ret_val = inval_parameters_error;
//}
return (ret_val);
}
静态 int 配置 SPPLE (参数列表_t *温度参数)
{
int ret_val;
Int LEConnectionIndex;
BD_ADDR_t BD_ADDR;
DeviceInfo_t *设备信息;
// char BT_address[12]="f43538fe9c18";
// char BT_address[12]="d78206cba936";
char RT_address[12]="30ae7bc71efc";
/*接下来,确保存在有效的设备地址。 *
// if ((TempParam)&&(TempParam->NumberofParameters >0)&&(TempParam->Params[0].strParam)&&(BTPS_StringLength (TempParam->Params[0].strParam)>=(sizeof (BD_ADDR_t)*2)))))
//{
/*将参数转换为蓝牙设备地址。 *
StrToBD_ADDR (RT_ADDRESS、&BD_ADDR);
/*找到此连接的 LE 连接索引。 *
if ((LEConnectionIndex = FindLEIndexByAddress (BD_ADDR))>= 0)
{
/*获取连接设备的设备信息。 *
if ((DeviceInfo = SearchDeviceInfoEntryByBD_ADDR (&DeviceInfoList、LEContextInfo[LEConnectionIndex].ConnectionBD_ADDR))!= NULL)
{
/*确定服务发现操作是否为*/
/*之前完成。 *
//if (SPPLE_CLIENT_information_valid (DeviceInfo->ClientInfo))
//{
显示("SPPLE 服务在远程设备上找到、尝试读取传输积分并配置 CCCD。\r\n);
/*将初始积分发送到远程设备。 *
SPPLESendCredits (&(LEContextInfo[LEConnectionIndex])、DeviceInfo、LEContextInfo[LEConnectionIndex].SPPLEBufferInfo.ReceiveBuffer.BytesFree);
/*根据正确的特性启用通知。 *
EnableDisableNotificationsIndications(LEContextInfo[LEConnectionIndex].ConnectionID、DeviceInfo->ClientInfo.Rx_Credit 客户机配置描述符、GATT_CLIENT_CONFIGURATIL_NOTIFY_ENABLE_ENABLE、GATT_ClientEventCallback_SPPLE);
EnableDisableNotificationsIndications (LEContextInfo[LEConnectionIndex].ConnectionID、DeviceInfo->ClientInfo.Tx_Client_Configuration_Descriptor、GATT_CLIENT_CONFIGURATE_NOTIFY_ENABLED、GATT_ClientEventCallback_SPPLE);
RET_val = 0;
//}
//else
//{
//显示("在设备上未发现 SPPLE 服务。\r\n");
//ret_val = FUNCING_ERROR;
//}
}
其他
{
显示("配置中无设备信息。\r\n);
RET_val = function_error;
}
}
其他
{
/*不匹配 ConnectionBD_ADDR。 *
显示("存在与 BD_ADDR %s 的连接。\r\n、RT_ADDRESS);
RET_val = function_error;
}
//}
//否则
//{
/*指定的参数无效,因此向用户标记错误。 *
//显示(("用法:配置 SPPLE [BD_ADDR]。\r\n");
/*标记在提交命令时发生错误。 *
//ret_val = inval_parameters_error;
//}
return (ret_val);
}