This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C129XNCZAD:连接远程蓝牙时出现问题

Guru**** 1587505 points
Other Parts Discussed in Thread: TM4C129XNCZAD, CC256XM4BTBLESW
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1023353/tm4c129xnczad-problem-in-connecting-the-remote-bluetooth

器件型号:TM4C129XNCZAD
主题中讨论的其他器件: 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);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Chandana、

    这是否来自 CC256XM4BTBLESW 软件包?

    此致、

    Ralph

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的。 它是  CC256XM4BTBLESW-v1.2-R2- Setup

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chandana、

    您是否在功能中收到任何错误代码?

    谢谢、

    Jacob