我想知道我们是否可以同时为 CC2564B/C 运行 HID 和 SPP 配置文件? 我们希望同时运行蓝牙经典版、因此 BLE 对我们的案例不感兴趣。
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.
我想知道我们是否可以同时为 CC2564B/C 运行 HID 和 SPP 配置文件? 我们希望同时运行蓝牙经典版、因此 BLE 对我们的案例不感兴趣。
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、
我们似乎只能注册一条 SDP 记录。 当我们尝试将 HID Classic 和 SPP 合并在一起时、只有 HID_Register_Device_SDP_Record 或 SPP_Register_Generic SDP_Record 才能成功运行、具体取决于我们在代码中首先放置的内容。 因此、HID 或 SPP 都可以工作、但两者不能同时工作。
您对如何解决该问题有什么想法吗? 谢谢。
---- J