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.

[参考译文] CC256XB-BT-SP:我无法更改 SPP 连接的开放端口超时

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/656944/cc256xb-bt-sp-i-can-not-change-the-open-port-timeout-of-the-spp-connection

器件型号:CC256XB-BT-SP
主题中讨论的其他器件:TM4C123GE6PZ

尊敬的支持团队

我们开发了一个 USB 记忆棒来连接一些蓝牙设备。
我通过 SPP_Open_Remote_Port 连接器件。

我想更改打开端口的超时时间。

我使用 HCI_Write_Connection_Accept_Timeout 函数。

我将超时设置为16.000 Dez。 (10秒)。

但是、当我在此之后启动 SPP_Open_Remote_Port 时、端口打开功能会在5秒后超时(默认)。

当我回读 HCI_READ_Connection_Accept_Timeout 函数时、我会得到正确的值(16.000 Dez)。

问题出在哪呢?

我使用最后一个堆栈:
www.ti.com/.../CC256XM4BTBLESW

我们使用 TM4C123GE6PZ 连接 CC256XB。
我开始使用 SPP-Demo 进行开发。

谢谢

Ronald Lilleg

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

    罗纳德

    您能否捕获并附加此事件的固件日志? 我怀疑 HCI_Write_Connection_Accept_Timeout 函数在错误的位置被调用、其他一些函数在初始化完成之前将其改回默认值。 我将能够从固件日志中确认或拒绝该信息、并能够从固件日志中继续进行故障排除。

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

    我使用 SppDemo 的原始版本进行测试。

    我插入以下字幕:

    INT SetLinkTime (int Time)
    //此命令写入 Connection_Accept_Timeout 配置参数,
    //这是允许蓝牙硬件自动拒绝连接的参数
    //在指定的时间段后请求,新连接不被接受。
    //时间=新超时值。  值是基带插槽数(0.625msec)、范围为0.625msec (0x0001)至40.9sec (0xFFFF)。

     //初始化:
     byte_t   状态;
      INT      结果;
      int      ret_val;
     WORD_t Logic_Link_Accept_TimeoutResult =时间;

      //首先,检查是否存在有效的蓝牙堆栈 ID:                
      if (蓝牙 StackID)
      {
      结果= HCI_Write_Connection_Accept_Timeout (BluetoothStackID、Logic_Link_Accept_TimeoutResult、&Status);
      如果(!RESULT)
      {
       if (!状态)
       {
        // Der Befehl war erfolderich:
        DisplayFunctionSuccessess("WriteLinkAcceptTimeout OK");
        RET_val = 0;
       }
       其他
       {
        // Fehler im 状态标志
        Display (("错误:WriteLinkAcceptTimeout:"、状态));
        RET_val = function_error;
       }
      }
      其他
      {
       // Fehler im 结果:                         */
       DisplayFunctionError ("WriteLinkAcceptTimeout "、结果);

       //将函数错误返回给调用方。                   
       RET_val = function_error;
      }
      }
      其他
      {
         //不存在有效的蓝牙堆栈 ID。                            
         RET_val = INVALID_STACK_ID_ERROR;
      }

      return (ret_val);

    我在打开端口之前调用"转换":

    /*以下函数负责发起连接*/
      具有远程串行端口服务器的/*。  如果 是*/,则此函数返回零
      /*成功,如果发生错误,则为负值。             *
    静态 int OpenRemoteServer (参数列表_t *温度参数)

      int      ret_val;
      INT      结果;
     TimeCounter = 0;
     
     SetLinkTime (16000);

     

    我将其用作客户端并设置它并打开远程端口。

    但它不起作用。

     

    以下是日志:

     

    client>Openstack()。
    HCI_VS_InitializeAfterHCIReset
    VS_Update_UART_Baud 速率成功。
    HCI_VS_InitializeAfterHCIReset 成功
    蓝牙堆栈 ID:1.
    器件芯片组:4.1
    BD_ADDR:0xcc78ab32fcd9

    (二
    *命令选项:服务器、客户端、帮助                         *
    (二

    选择模式>客户端

    (二
    *命令选项:查询、DisplayInquiryList、Pair、           *
    *                 结束配对、PINCodeResponse、PassKeyResponse、*
    *                 UserConfirmationResponse、                    *
    *                 SetDiscoverabilityMode、SetConnectabilityMode、*
    *                 SetPairabilityMode、                          *
    *                 ChangeSimplePairingParameters、               *
    *                 GetLocalAddress、GetLocalName、SetLocalName、 *
    *                 GetClassOfDevice、SetClassOfDevice、          *
    *                 GetRemoteName、SniffMode、ExitSniffMode、     *
    *                 打开、关闭、读取、写入、                    *
    *                 GetConfigParams、SetConfigParams、            *
    *                 GetQueueParams、SetQueueParams、              *
    *                 环回、DisplayRawModeData、                *
    *                 AutomaticReadMode、SetBaudRate、Send         *
    *                 帮助,退出                                   *
    (二

    客户>查询

    客户端>
    查询条目:0xa0e6f8936b3f。

    客户>查询完成

    结果:1、0xa0e6f8936b3f。


    CLIENT>打开1

    WriteLinkAcceptTimeout 成功。

    客户端>
    时间:5133。

    客户端>

     

     

     

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

    //------------------------------------
    INT SetLinkTime (int Time)
    //此命令写入 Connection_Accept_Timeout 配置参数,
    //这是允许蓝牙硬件自动拒绝连接的参数
    //在指定的时间段后请求,新连接不被接受。
    //时间=新超时值。 值是基带插槽数(0.625msec)、范围为0.625msec (0x0001)至40.9sec (0xFFFF)。

    //初始化:
    byte_t 状态;
    内部 结果;
    内部 RET_val;
    WORD_t Logic_Link_Accept_TimeoutResult =时间;

    //首先,检查是否存在有效的蓝牙堆栈 ID:
    if (蓝牙 StackID)

    结果= HCI_Write_Connection_Accept_Timeout (BluetoothStackID、Logic_Link_Accept_TimeoutResult、&Status);
    如果(!RESULT)

    if (!状态)

    // Der Befehl war erfolderich:
    DisplayFunctionSuccessess("WriteLinkAcceptTimeout OK");
    RET_val = 0;

    其他

    // Fehler im 状态标志
    Display (("错误:WriteLinkAcceptTimeout:"、状态));
    RET_val = function_error;


    其他

    // Fehler im 结果: *
    DisplayFunctionError ("WriteLinkAcceptTimeout "、结果);

    //将函数错误返回给调用方。
    RET_val = function_error;


    其他

    //不存在有效的蓝牙堆栈 ID。
    RET_val = INVALID_STACK_ID_ERROR;


    return (ret_val);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 OpenRemoteServer 开始时调用它:

    //------------------------------------
    /*以下函数负责发起连接*/
    具有远程串行端口服务器的/*。 如果是*/,则此函数返回零
    /*成功,如果发生错误,则为负值。 *
    静态 int OpenRemoteServer (参数列表_t *温度参数)

    内部 RET_val;
    内部 结果;
    TimeCounter = 0;

    SetLinkTime (16000);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这将从 SPPDemo 中记录日志:

    client>Openstack()。
    HCI_VS_InitializeAfterHCIReset
    VS_Update_UART_Baud 速率成功。
    HCI_VS_InitializeAfterHCIReset 成功
    蓝牙堆栈 ID:1.
    器件芯片组:4.1
    BD_ADDR:0xcc78ab32fcd9

    (二
    *命令选项:服务器、客户端、帮助 *
    (二

    选择模式>客户端

    (二
    *命令选项:查询、DisplayInquiryList、Pair、 *
    * EndPairing、PINCodeResponse、PassKeyResponse、*
    * UserConfirmationResponse、 *
    * SetDiscoverabilityMode、SetConnectabilityMode、*
    * SetPairabilityMode、 *
    * ChangeSimplePairingParameters、 *
    * GetLocalAddress、GetLocalName、SetLocalName、*
    * GetClassOfDevice、SetClassOfDevice、 *
    * GetRemoteName、SniffMode、ExitSniffMode、 *
    * 打开、关闭、读取、写入、 *
    * GetConfigParams、SetConfigParams、 *
    * GetQueueParams、SetQueueParams、 *
    * 环回、DisplayRawModeData、 *
    * AutomaticReadMode、SetBaudRate、Send *
    * 帮助,退出 *
    (二

    客户>查询

    客户>查询

    条目:0xa0e6f8936b3f。

    客户>查询完成

    结果:1、0xa0e6f8936b3f。


    CLIENT>打开1

    WriteLinkAcceptTimeout 成功。

    客户端>
    etPort_Open_Confirmation:SppConnectErrorStatus:1 =超时
    之后超时:5133毫秒

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

    罗纳德

    您能否捕获 固件日志? 这将使我能够查看消息的来回发送时间、以及在应用程序运行之前是否错误地重置超时。