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:SPPDEMO 蓝牙正在广播但未配对

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1201929/tm4c129xnczad-sppdemo-bluetooth-is-advertising-but-not-pairing

器件型号:TM4C129XNCZAD
主题中讨论的其他器件:CC2564MODACC2564

您好!

我正在我的项目中使用 CC2564MODA 蓝牙模块、来自 CC2564_Bluetopia 堆栈。我正在使用 SPPDEMO 配置文件、一切都正确。 将代码加载到我的套件后、蓝牙正在广播、但它未配对器件、我不知道突然发生了什么、您能帮助这方面的任何人吗? 如何解决该问题。 我跳你的人会帮助这个。 我正在等待您的快速响应。

提前感谢。

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

    大家好、Jansi、为了更好地帮助您并了解您的问题、您可以  按照以下说明使用这些工具 WiLink-BT 提供日志: 蓝牙记录器和链路质量监控器(LQM)工具(修订版 D)(TI.com)。  另请告知我们有关您的设置的更多信息、如主机器件、补丁版本等  

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

    您好!

    我的补丁版本是 CC2564MODA、我不确定您要求的是哪款主机器件。 您能提供帮助吗。 在我的项目中、我使用的是 SPPDEMO 配置文件、我已在 OpenStack 功能中声明了设备名称、但它的广告名称也不与移动蓝牙配对。

    提前感谢。

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

    大家好、Jansi、我所说的补丁版本我指的是此链接中的文件: CC256XB-BT-SP 驱动程序或库| TI.com、这些是修复错误并帮助配置 CC2564MODA 的必要初始化文件。 此外、我假设主机器件的票证名称、负责通过 UART/HCI 与 CC2564MODA 通信的器件是 TM4C129XNCZAD。  

    要更改广播的名称,请参阅 SPPDemo.c 中的 SetLocalName()函数 该函数特别关注 SDK 中的 GAP_SET_LOCAL_Device_Name、该字符串应当能够设置本地设备的名称。

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

    Daniel、您好!  

    感谢您的回复。

    我必须使用  GAP_SET_LOCAL_Device_Name 这个函数在右边 SetLocalName ()下。 如果我调用、则意味着我的函数将进行广播、并且配对将正确发生。  

    在我的 prohecr CC2564MODA 中、仅通过 HCI、而不是 UART。

    提前感谢

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

    是的、我  在 OpenStack 功能下调用了 GAP_SET_LOCAL_Device_Name (BluetoothStackID、default_local_device_name)、但仍然广播设备名称、但不能与任何设备配对。 请帮我解决这个问题。 如何解决该问题。

    提前感谢

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

    您好!

    我将在下面的附件中分享我的登录信息。

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

    Jansi、大家好、GAP_SET_LOCAL_Device_Name 函数只会更改器件所广播的名称、不会与器件配对、这是一个单独的函数。

    与演示一起浏览本文档可能会有所帮助:    

    本文档末尾介绍了演示中使用的每个通用访问配置文件(GAP)功能。 例如、按照演示的说明:查询了哪些蓝牙设备可见后、该演示会调用以下函数、该函数获取目标设备的蓝牙地址。

    int BTPSAPI SPP_Open_Remote_Port (unsigned int BluetoothStackID、BD_ADDR_t BD_ADDR、unsigned int ServerPort、SPP_Event_Callback_t SPP_Event_Callback、unsigned long CallbackParameter);

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

    Daniel、您好!

    如果我要将器件与我必须使用的独立函数配对、请在这方面帮助我。

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

    您能告诉我如何设置密码以及我用于配对设备的功能吗? 这是一个很好的问题,我很喜欢这个问题。 我正在等待您的快速响应。

    提前感谢。

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

    您好!

    无论你提供的文件,我提到,然后我实施了以下两个功能,但仍然没有配对。 请帮助我使用哪个函数来使用 sppdemo 配置文件进行器件配对。

    GAP_SET_LOCAL_Device_Name (BluetoothStackID、"MyDeviceName");

    GAP_Authentication_Response (BluetoothStackID、BD_ADDR、(uint32_t *)&Passkey);

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

    大家好、Jansi、在您提到的文档中、

    GAP_Initiate_Bonding (BluetoothStackIDBD_ADDR、BondingType、GAP_Event_Callback、(unsigned long) 0);

    这是启动配对过程的功能。 请实现此函数、然后告诉我它是否起作用。

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

    您好 Daniel Oils:

    上述内容在我的代码中已经介绍过、但仍然无法确定是什么问题、以及为什么无法对器件进行配对。

    static int Pair(ParameterList_t *TempParam) {
        int Result;
        int ret_val;
        GAP_Bonding_Type_t BondingType;
        Display(("pair------1685"));
        /* First, check that valid Bluetooth Stack ID exists.                */
        if (BluetoothStackID) {
            /* Next, make sure that we are not already connected.             */
            if (!Connected) {
                /* There are currently no active connections, make sure that   */
                /* all of the parameters required for this function appear to  */
                /* be at least semi-valid.                                     */
                if ((TempParam) &&(TempParam->NumberofParameters > 0)
                        && (TempParam->Params[0].intParam)
                        && (NumberofValidResponses) &&(TempParam->Params[0].intParam
                                <= NumberofValidResponses)
                        && (!COMPARE_BD_ADDR(
                                InquiryResultList[(TempParam->Params[0].intParam - 1)],
                                NullADDR))) {
                    /* Check to see if General Bonding was specified.           */
                    if (TempParam->NumberofParameters > 1)
                        BondingType =
                                TempParam->Params[1].intParam ?
                                        btGeneral : btDedicated;
                    else
                        BondingType = btDedicated;
    
                    /* Before we submit the command to the stack, we need to    */
                    /* make sure that we clear out any Link Key we have stored  */
                    /* for the specified device.                                */
                    DeleteLinkKey(
                            InquiryResultList[(TempParam->Params[0].intParam - 1)]);
    
                    /* Attempt to submit the command.                           */
                    Result = GAP_Initiate_Bonding(BluetoothStackID,
                            InquiryResultList[(TempParam->Params[0].intParam - 1)],
                            BondingType, GAP_Event_Callback, (unsigned long) 0);
    
                    /* Check the return value of the submitted command for      */
                    /* success.                                                 */
                    if (!Result) {
                        /* Display a messsage indicating that Bonding was        */
                        /* initiated successfully.                               */
                        Display(
                                ("GAP_Initiate_Bonding(%s): Success.\r\n", (BondingType == btDedicated)?"Dedicated":"General"));
    
                        /* Flag success to the caller.                           */
                        ret_val = 0;
                    } else {
                        /* Display a message indicating that an error occured    */
                        /* while initiating bonding.                             */
                        DisplayFunctionError("GAP_Initiate_Bonding", Result);
    
                        ret_val = FUNCTION_ERROR;
                    }
                } else {
                    /* One or more of the necessary parameters is/are invalid.  */
                    DisplayUsage(
                            "Pair [Inquiry Index] [0 = Dedicated, 1 = General (optional)]");
    
                    ret_val = INVALID_PARAMETERS_ERROR;
                }
            } else {
                /* Display an error to the user describing that Pairing can    */
                /* only occur when we are not connected.                       */
                Display(("Only valid when not connected.\r\n"));
    
                ret_val = FUNCTION_ERROR;
            }
        } else {
            /* No valid Bluetooth Stack ID exists.                            */
            ret_val = INVALID_STACK_ID_ERROR;
        }
    
        return (ret_val);
    }
    
    
    我将附上我的代码,请你一遍。

    静态 int 对(PARAMETERLIST_t * TempParam){
    INT 结果;
    int ret_val;
    GAP_Bond_Type_t 绑定类型;
    显示器("配对------ 1685英寸));
    /*首先,检查是否存在有效的蓝牙堆栈 ID。 */
    如果(BluetoothStackID){
    /*接下来,确保我们尚未连接。 */
    如果(!connected){
    /*当前没有活动的连接,请确保*/
    /*此函数所需的所有参数都显示为*/
    /*至少为半有效。 */
    if ((TempParam)&&(TempParam -> NumberofParameters > 0)
    &&(TempParam->Params[0].intParam)
    &&(NumberofValidResponse)&&(TempParam->Params[0].intParam
    <= ValidResponse 的数目)
    &&(!COMPARE_BD_ADDR (
    InquiryResultList[(TempParam->Params[0].intParam - 1)],
    NullADDR)){
    /*检查是否指定了通用绑定。 */
    if (TempParam->NumberofParameters > 1)
    绑定类型=
    TempParam->Params[1].intParam?
    一般情况:已达格;
    方案
    绑定类型=绑定;

    /*在向堆栈提交命令之前,我们需要*/
    /*确保清除已存储的任何链接密钥*/
    /*表示指定设备。 */
    DeleteLinkKey(
    InquiryResultList[(TempParam->Params[0].intParam - 1)];

    /*尝试提交命令。 */
    结果= GAP_Initiate_Bonding (BluetoothStackID、
    InquiryResultList[(TempParam->Params[0].intParam - 1)],
    BondingType、GAP_Event_Callback、(unsigned long) 0);

    /*检查已提交命令的返回值*/
    /*成功。 */
    如果(!RESULT){
    /*显示消息,表示绑定为*/
    /*已成功启动。 */
    显示(
    ("GAP_Initiate_Bonding (%s):成功。\r\n "、(BondingType == btDedated)?"专用":"常规");

    /*标记呼叫者成功。 */
    RET_val = 0;
    }其他{
    /*显示指示发生错误的消息*/
    /*启动绑定时。 */
    DisplayFunctionError ("GAP_Initiate_Bonding"、Result);

    RET_val = FUNCTION_ERROR;
    }
    }其他{
    /*一个或多个必要参数无效。 */
    DisplayUsage(
    "配对[查询索引][0 =专用、1 =通用(可选)]";

    RET_val = INVALID_PARAMS_ERROR;
    }
    }其他{
    /*向用户显示一个错误,描述配对可以*/
    /*仅在未连接时发生。 */
    显示("仅在未连接时有效。\r\n);

    RET_val = FUNCTION_ERROR;
    }
    }其他{
    /*不存在有效的蓝牙堆栈 ID。 */
    RET_val = INVALID_STACK_ID_ERROR;
    }

    返回(ret_val);
    }

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

    您好,Jansi, 如果我错了,请更正我,但您的代码,保存为 显示("配对---- 1685")); 与示例代码完全相同。

    您是否对演示进行了任何其他更改? 如果没有、演示版应完全按照我提供的文档中的说明进行操作、前提是您按顺序操作。 请告诉我调用该函数时该函数会返回什么结果、因为它应该包含对调试有帮助的错误代码。

    否则、为了更好地帮助您理解问题、我会要求您像我在初始消息中那样收集日志。 为了您的利益、我已将说明附在 Logger 软件上。

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

    Daniel Oils:

    感谢您的答复。

    如前所述、演示代码可以正常工作、并且其配对成功、但在演示代码中、我添加了自定义代码、在添加自定义代码后、不会进行配对、只有器件名称会广播、但根本不会进行配对。 错误显示为"Could not pairing"(无法配对)。 请帮我解决这个问题。

    我不知道如何发送日志、您能帮助我如何收集日志吗?  

    提前感谢。

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

    Daniel、您好!

    我在以下附件中分享了我的日志。 请仔细阅读、请帮我解决此问题。

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

    尊敬的 Jansi:

    您附加的是一小部分日志的屏幕截图、通常一个日志包含数千行。 请附上该日志文件本身、以便我可以在最终的软件中打开它并完成操作。

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

    丹尼尔,

    如何与您共享日志文件。 您能告诉我如何上传日志文件吗

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

    大家好、Jansi、请将文件保存到您的本地计算机上、然后在 E2E 上撰写帖子时、点击"插入">"图像/视频/文件"、"上传"以选择日志、然后点击"确定"。

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

    Daniel、您好!  

    我已尝试上传日志文件、 单击"插入">"图像/视频/文件"、但我无法加载该文件、但在加载日志文件时无法加载该文件。 您能告诉我其他方式吗

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

    大家好、Jansi、我在 E2E DM 上向您发送了一条消息、如果您点击页面右上角的聊天框图标、您应该能够看到我的消息。

    然后、我会将您发送的日志发布到此处供其他人查看、我们可以继续调试。

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

    好的、可以。 我已经发送了邮件。 您能详细介绍一下并告诉我问题的解决方案吗?