openharmony软总线
1. 软总线基本流程
1.1 发现
- 上层应用需要发现特定能力设备时,调用发现接口启动发现。
1 | // 发现回调 |
- 当软总线发现到设备时,通过回调接口通知业务所发现的设备信息。
- 发现设备最终会调用到实现,如果传入的info是AUTO,则会通过蓝牙和CoAP服务进行发现。
1.2 组网
当发现设备时,则传入地址进行组网。组网接口为JoinLNN
1 | // 发起组网请求 |
具体调用链为:(将地址信息加入map中)
JoinLNN->JoinLNNInner->ServerIpcJoinLNN->Invoke->ServerJoinLNN->LnnIpcServerJoin->LnnServerJoin->PostMessageToHandler(MSG_TYPE_JOIN_LNN, 地址)->g_netBuilder.handler->NetBuilderMessageHandler->g_messageProcessor[]->ProcessJoinLNNRequest->TrySendJoinLNNRequest->PostJoinRequestToConnFsm->(StartNewConnectionFsm)LnnSendJoinRequestToConnFsm->LnnFsmPostMessage(FSM_MSG_TYPE_JOIN_LNN,地址)->PostMessageToFsm->fsm.handler->FsmStateMsgHandler->ProcessDataMessage->(fsm->curState->process)->AuthStateProcess->OnJoinLNN->CompleteJoinLNN->CompleteJoinLNN
2. 连接
2.1 创建会话服务器
CreateSessionServer
1 | // 创建会话服务 |
2.2 创建会话
1 | // 创建会话 |
具体调用链为:
- 获取地址信息
OpenSession->ServerIpcOpenSession->Invoke->ServerOpenSession->TransOpenSession->TransOpenChannel->TransGetLaneInfo->TransGetLaneInfoByOption->TransAddLaneReqToPendingAndWaiting->LnnRequestLane(listener)->(listenser.OnLaneRequestSuccess)->LnnRequestLane->AllocLane->Alloc->TriggerLink->PostMsgToHandler->PostMessage->g_laneLoopHandler.HandleMessage->MsgHandler->LaneTriggerLink->BuildLink->g_linkTable[]->LaneLinkOfWlan->(LnnGetRemoteNumInfo->g_dlKeyTable[]->DlGetSessionPort->LnnGetNodeInfoById)OnLaneLinkSuccess->LinkSuccess->PostMsgToHandler->PostMessage->g_laneLoopHandler.HandleMessage->MsgHandler->LaneLinkSuccess->NotifyLaneAllocSuccess->TransOnLaneRequestSuccess->TransUpdateLaneConnInfoByLaneId
- 开启tcp
OpenSession->ServerIpcOpenSession->Invoke->ServerOpenSession->TransOpenSession->TransOpenChannel->TransOpenChannelProc->TransOpenDirectChannel->OpenTcpDirectChannel->ConnOpenClientSocket->OpenClientSocket->OpenTcpClientSocket->BindTcpClientAddr
参考
- Title: openharmony软总线
- Author: Ethereal
- Created at: 2024-10-16 13:59:07
- Updated at: 2024-10-16 15:56:32
- Link: https://ethereal-o.github.io/2024/10/16/openharmony软总线/
- License: This work is licensed under CC BY-NC-SA 4.0.