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.

[参考译文] CC2564C:我们能否同时运行 HID 和 SPP 组合配置文件?

Guru**** 2589245 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/647607/cc2564c-can-we-run-hid-and-spp-combo-profile-at-the-same-time

器件型号:CC2564C

我想知道我们是否可以同时为 CC2564B/C 运行 HID 和 SPP 配置文件? 我们希望同时运行蓝牙经典版、因此 BLE 对我们的案例不感兴趣。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在电路板上同时运行两个系统配置时不应出现任何问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! BTW 是否有适合此组合的演示项目?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此组合没有演示项目、您必须通过组合 SPPDemo 和 HIDDemo 来实现。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dale、

    我尝试将 HID 经典和 SPP 配置文件组合在一起、并且在调用 SPP_Register_Generic SDP_Record 后、我始终得到负返回值(-1)。 HID 工作正常。 我已经尝试将 HID 和 SPP 都放在同一个任务和不同的任务中。 在同时运行两个配置文件时、我是否需要注意什么? 您能不能对此有所了解? 谢谢。

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

    支持多个配置文件的器件的 SDP 记录将连接在一起。

    您如何使用 SPP_Register_SDP_Record API、是否确保函数的所有参数都符合规范中的定义?

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

    Dale、

    我刚才使用它、因为它来自 SPPDemo。 BluetoothStackID 与 HID 配置文件相同。  

    /*以下函数负责在
    本地设备上打开串行端口*/*服务器。 此函数用于打开
    指定 RFCOMM 通道上的串行端口*//*服务器。 此函数
    如果成功则返回*//*零、如果出错则返回负值
    发生了*/*。 //
    静态 int OpenServer (ParameterList_t * TempParam)
    {
    int ret_val;
    char * ServiceName;
    
    //首先检查是否存在有效的蓝牙堆栈 ID。 //
    if (BluetoothStackID)
    {
    /*确保尚未打开串行端口服务器。 *
    if (!ServerPortID)
    {
    /*接下来,检查指定的参数是否有效。 *
    if ((TempParam)&&(TempParam->NumberofParameters >= 1)&&(TempParam->Params[0].intParam))
    {
    /*只需尝试在 RFCOMM Server*/上打开串行服务器
    /*端口1。 *
    RET_val = SPP_Open_Server_Port (BluetoothStackID、TempParam->Params[0].intParam、SPP_Event_Callback、(无符号长整型) 0);
    
    /*如果打开成功,则记下串行端口*/
    /*服务器 ID。 *
    if (ret_val >0)
    {
    /*请注意已打开的串行的串行端口服务器 ID */
    /*端口服务器。 *
    ServerPortID = ret_val;
    
    /*创建缓冲区以保存服务名称。 *
    if ((ServiceName = BTPS_AllocateMemory (64))!= NULL)
    {
    /*服务器已成功打开,现在注册一个*/
    /* SDP 记录表示串行端口服务器*/
    /*存在。 要执行此操作,请首先创建服务名称。 *
    BTPS_sprintf (ServiceName、"Serial Port Server Port %d"、(int)(TempParam->Params[0].intParam);
    
    /*现在已创建服务名称,请尝试*/
    /*注册 SDP 记录。 *
    RET_val = SPP_Register_Generic SDP_Record (BluetoothStackID、ServerPortID、ServiceName、&SPPServerSDPHandle);
    
    /*如果创建串行端口时出错 *
    /*服务器的 SDP 服务记录,然后关闭*/
    /*关闭服务器标志错误。 *
    if (ret_val < 0)
    {
    显示("无法注册服务器 SDP 记录、错误=%d.\r\n\r\n、ret_val);
    
    SPP_Close_Server_Port (BluetoothStackID、ServerPortID);
    
    /*标记不再有串行端口 *
    /*服务器打开。 *
    ServerPortID = 0;
    
    /*标记我们不再连接。 *
    Connected = false;
    
    RET_val = unced_to register_Server;
    }
    其他
    {
    /*只需向用户标记所有内容 *
    /*已正确初始化。 *
    显示(("服务器已打开:%d.\r\n\r\n、TempParam->Params[0].intParam));
    
    /*向呼叫者标记成功。 *
    RET_val = 0;
    }
    
    /*释放服务名称缓冲区。 *
    BTPS_FreeMemory (ServiceName);
    }
    其他
    {
    显示("未能分配缓冲区以在 SDP 记录中保留服务名称。\r\n);
    }
    }
    其他
    {
    显示("无法打开服务器:%d、错误=%d.\r\n、TempParam->Params[0].intParam、ret_val);
    
    RET_val = unaged_to register_Server;
    }
    }
    其他
    {
    DisplayUsage ("打开[端口号]");
    
    RET_val = INVALID_PARAMETERS_ERROR;
    }
    }
    其他
    {
    /*服务器已打开,此程序仅支持一个*/
    /*服务器或客户端。 *
    显示("服务器已打开。\r\n);
    
    RET_val = function_error;
    }
    }
    否则
    {
    /*不存在有效的蓝牙堆栈 ID。 *
    RET_val = INVALID_STACK_ID_ERROR;
    }
    
    return (RET_val);
    } 

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

    Dale、

     在成功调用 SPP_Register_Generic SDP_Record 之前、依赖项有哪些 ? 我们需要在此处设置哪些配置? 需要将哪些资源与 HID 分开? 非常感谢您的参与。

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

    Dale、

    我们似乎只能注册一条 SDP 记录。 当我们尝试将 HID Classic 和 SPP 合并在一起时、只有 HID_Register_Device_SDP_Record 或 SPP_Register_Generic SDP_Record 才能成功运行、具体取决于我们在代码中首先放置的内容。 因此、HID 或 SPP 都可以工作、但两者不能同时工作。

    您对如何解决该问题有什么想法吗? 谢谢。

    ---- J