SIG MESH工作流程¶
1. sig mesh 初始化¶
sequenceDiagram
Participant A as App_Layer
Participant B as Stack_Layer
A->>A :sys_init_app
A->>A :user init code
A->>A :tinyfs_mkdir <br> (please refer to modulde tinyfs)
A->>A :check unbind for node <br> (fast up and down power 5 times to unbind the node)
rect rgb(150,210,249)
autonumber
A->>B:ble_init()
A->>B:dev_manager_init(dev_manager_callback)
A->>B:gap_manager_init(gap_manager_callback)
A->>B:gatt_manager_init(gatt_manager_callback)
end
loop ble_loop
B-->>+A: stack_init
A->>-B: ble_stack_cfg <br> ( Privacy configuration mac_addr/controller) <br> (user define mac addr)
B-->>A: stack_ready
Note right of A: get mac address
rect rgb(222,232,222)
opt mesh application
activate A
A->>B:dev_manager_prf_ls_sig_mesh_add() <br>(Add feature for sig mesh)
deactivate A
activate B
B-->>A:profile mesh added
deactivate B
A->>B:prf_ls_sig_mesh_callback_init(mesh_manager_callback)
A->>B:ls_sig_mesh_init(&model_env)
note over A,B:resgister all models
end
end
end
2. Register Model¶
sequenceDiagram
Participant A as App_Layer
Participant B as Mesh_Stack_Layer
A->>B:ls_sig_mesh_init(&model_env)
note over A,B:All models have been registered
rect rgb(222,232,222)
opt mesh_auto_prov(unprov)
B-->>A:MESH_ACTIVE_AUTO_PROV
note left of A: App_defined:<br>unicast_address<br>group_address<br>app_key<br>net_key
note left of A: App_defined:<br> Server Model <br>Client Model
A->>B:ls_sig_mesh_auto_prov_handler
end
end
B-->>A:MESH_ACTIVE_STORAGE_LOAD
note left of A: Node_Get_Proved_State:<br>UNPROVISIONED_KO <br> PROVISIONING <br> PROVISIONED_OK
B-->>A:MESH_ACTIVE_ENABLE
rect rgb(218,234,130)
par clear power up num
A->>A: Clear number of the power up after 3 Seconds
and proving_param_req
B-->>A:MESH_GET_PROV_INFO
note left of A:App_Set_Prov_Param:<br> devuuid/UriHash/OobInfo/PubKeyOob<br>StaticOob/OutOobSize/InOobSize<br>OutOobAction/InOobAction/Info
A->>B:set_prov_param
note over A,B:The device waits to be provisioned
end
end
3. Provisoning¶
sequenceDiagram
Participant A as App_Layer
Participant B as Mesh_Stack_Layer
note over A,B: The device is provisioning
rect rgb(222,232,222)
opt Static OOB
B-->>A:MESH_GET_PROV_AUTH_INFO
note left of A:App_defined:Auth_data
A->>B:set_prov_auth_info
end
end
note right of B:PROV_STARTED<br>PROV_SUCCEED<br>PROV_FAILED
B-->>A:MESH_REPOPT_PROV_RESULT
note left of A:app_store:<br>Provisoning result
rect rgb(251,209,176)
alt Prov_Successed
note right of B: all models local index<br>app key local index
B-->>A:MESH_ACTIVE_REGISTER_MODEL
note left of A: app_store:<br>all models local index <br> app key local index
else Prov_Failed
note over A,B: The device is provisioning
end
end