RFCOMM protocal

RFCOMM传输协议是在L2CAP之上提供仿真串口。

RFCOMM基于ETSI标准GSM 07.10。

RFCOMM模拟了串行9针RS-232。

RFCOMM支持两个设备间高达60路的通信连接。

Data Link Connection Identifier (DLCI)  6bits  (2~61)  0被专用为控制通道,1不能用,62和63被保留。

RFCOMM protocal_第1张图片

DLCI 0,作为一个专用的控制通道,支持如下命令:

RFCOMM protocal_第2张图片

一个RFCOMM frame包含在各自的L2CAP frame里。

RFCOMM protocal_第3张图片

frame check sequence (FCS),对于不同类型的Frame会按不同数据集域来计算:

P/F-Bit

CR Bit

系统参数如下:

RFCOMM protocal_第4张图片

DLCI分配RFCOMM server channel:

RFCOMM protocal_第5张图片

Server Channel (1~30), 0和31不能用。这个值在SDP中注册。

 

Flow Control


source code:

system/bt/stack/rfcomm/port_api.cc

void RFCOMM_Init(void)

int RFCOMM_CreateConnection(uint16_t uuid, uint8_t scn, bool is_server,
                            uint16_t mtu, const RawAddress& bd_addr,
                            uint16_t* p_handle, tPORT_CALLBACK* p_mgmt_cb)

 

system/bt/stack/rfcomm/rfc_l2cap_if.cc

void rfcomm_l2cap_if_init(void)

 

system/bt/stack/rfcomm/rfc_ts_frames.cc

void rfc_send_sabme(tRFC_MCB* p_mcb, uint8_t dlci)

 

 

 

 

你可能感兴趣的:(RFCOMM protocal)