【メモ】IoT Plug and Playのデバイス実装コード
IoT Plug and PlayのAZ3166向けサンプルコードを調査。
★ ... Azure IoT SDK for C
☆ ... Azure IoT Device Workbench生成コード
main.ino
setup() connectIoTService() registerDeviceRetry() registerDevice() IoTHub_Init()★ prov_dev_set_symmetric_key_info()★ prov_dev_security_init()★ Prov_Device_LL_Create()★ Prov_Device_LL_Register_Device()★ Prov_Device_LL_DoWork()★ IoTHub_Deinit()★ pnp_device_initialize()☆ ---> pnp_device.h/.c loop() pnp_device_run()☆ ---> pnp_device.h/.c is_error_max()☆ invokeDevKitPeripheral()
pnp_device.h/.c
pnp_device_initialize() tickcounter_create()★ DigitalTwinClientHelper_InitializeDeviceHandle()☆ IoTHub_Init()★ IoTHubDeviceClient_LL_CreateFromConnectionString()★ DigitalTwin_DeviceClient_LL_CreateFromDeviceHandle()★ DeviceinfoInterface_Create()☆ DigitalTwin_InterfaceClient_Create()★ SensorsInterface_Create()☆ DigitalTwin_InterfaceClient_Create()★ LedsInterface_Create()☆ DigitalTwin_InterfaceClient_Create()★ DigitalTwin_InterfaceClient_SetCommandsCallback()★ ScreenInterface_Create()☆ DigitalTwin_InterfaceClient_Create()★ DigitalTwin_InterfaceClient_SetCommandsCallback()★ SettingsInterface_Create()☆ DigitalTwin_InterfaceClient_Create()★ DigitalTwin_InterfaceClient_SetPropertiesUpdatedCallback()★ DigitalTwinClientHelper_RegisterInterfacesAndWait()☆ DigitalTwin_DeviceClient_LL_RegisterInterfacesAsync()★ DigitalTwin_DeviceClient_LL_DoWork()★ DigitalTwinClientHelper_Check()☆ DigitalTwin_DeviceClient_LL_DoWork()★ DeviceinfoInterface_Property_ReportAll()☆ tickcounter_get_current_ms()★ pnp_device_run() SensorsInterface_Telemetry_SendAll()☆ DigitalTwinClientHelper_Check()☆ pnp_device_close()
digitaltwin_device_client_ll.h
DigitalTwin_DeviceClient_LL_CreateFromDeviceHandle() DigitalTwin_DeviceClient_LL_RegisterInterfacesAsync() DigitalTwin_DeviceClient_LL_DoWork() DigitalTwin_DeviceClient_LL_Destroy()
digialtwin_interface_client.h
DigitalTwin_InterfaceClient_Create() DigitalTwin_InterfaceClient_SetPropertiesUpdatedCallback() DigitalTwin_InterfaceClient_SetCommandsCallback() DigitalTwin_InterfaceClient_SendTelemetryAsync() DigitalTwin_InterfaceClient_ReportPropertyAsync() DigitalTwin_InterfaceClient_UpdateAsyncCommandStatusAsync() DigitalTwin_InterfaceClient_Destroy()
考察
- スケッチ -> Azure IoT Device Workbench生成コード -> Azure IoT SDK for C
- 接続は、Privisoning -> IoTHubDeviceClient -> DigitalTwinDeviceClient
- 低レベルは従来のIoTHubDeviceClientで、その上にDigitalTwinDeviceClientの模様
- (Device Capability Modelから)Azure IoT Device Workbenchで生成したコードを使うと、項目毎のコールバック実装になる。(mxchip_iot_devkit_impl.h/.c)