Verified Telemetry
FreeRTOS_verified_telemetry.h
Go to the documentation of this file.
1 /* Copyright (c) Microsoft Corporation.
2  Licensed under the MIT License. */
3 
6 #ifndef FREERTOS_VERIFIED_TELEMETRY_H
7 #define FREERTOS_VERIFIED_TELEMETRY_H
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 /* Azure Provisioning/IoT Hub library includes */
16 #include "vt_defs.h"
17 
18 #define FREERTOS_AZURE_IOT_PNP_PROPERTIES 0x00000004
19 
20 #define VT_SIGNATURE_TYPE_FALLCURVE 0x01
21 #define VT_SIGNATURE_TYPE_CURRENTSENSE 0x02
22 
23 #define VT_MINIMUM_BUFFER_SIZE_BYTES sizeof(VT_CURRENTSENSE_RAW_SIGNATURES_READER)
24 
26  /* FallCurve Component */
29 };
30 
31 typedef struct FreeRTOS_VT_OBJECT_TAG
32 {
33  /* Signature Object Union */
35 
36  /* Signature Type */
37  UINT signature_type;
38 
39  /* Pointer to next component */
40  void* next_component;
41 
43 
45 {
46  /* Name of this component */
47  UCHAR component_name_ptr[VT_COMPONENT_NAME_MAX_LENGTH];
48 
49  UINT component_name_length;
50 
51  /* Pointer to first component */
52  void* first_component;
53 
54  /* Pointer to last component */
55  void* last_component;
56 
57  /* Number of component*/
58  UINT components_num;
59 
60  /* Device specific implementations*/
61  VT_DEVICE_DRIVER* device_driver;
62 
63  /* Enable Verified Telemetry*/
64  bool enable_verified_telemetry;
65 
66  /* Device Status*/
67  bool device_status;
68 
69  /* Device Status Property Sent*/
70  bool device_status_property_sent;
71 
72  /* Pointer to byte buffer passed from application layer, used for fingerprint calculation/storage */
73  CHAR* scratch_buffer;
74 
75  /* Length of byte buffer passed from application layer, used for fingerprint calculation/storage */
76  UINT scratch_buffer_length;
77 
79 
92 AzureIoTResult_t FreeRTOS_vt_init(FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB,
93  UCHAR* component_name_ptr,
94  bool enable_verified_telemetry,
95  VT_DEVICE_DRIVER* device_driver,
96  CHAR* scratch_buffer,
97  UINT scratch_buffer_length);
98 
116 AzureIoTResult_t FreeRTOS_vt_signature_init(FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB,
117  FreeRTOS_VT_OBJECT* handle,
118  UCHAR* component_name_ptr,
119  UINT signature_type,
120  UCHAR* associated_telemetry,
121  bool telemetry_status_auto_update,
122  VT_SENSOR_HANDLE* sensor_handle);
123 
138  AzureIoTHubClient_t* xAzureIoTHubClient,
139  const UCHAR* component_name_ptr,
140  UINT component_name_length,
141  const UCHAR* telemetry_data,
142  UINT data_size);
143 
158 AzureIoTResult_t FreeRTOS_vt_process_command(FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB,
159  AzureIoTHubClient_t* xAzureIoTHubClient,
160  UCHAR* component_name_ptr,
161  UINT component_name_length,
162  UCHAR* pnp_command_name_ptr,
163  UINT pnp_command_name_length,
164  UINT* status_code);
165 
175 AzureIoTResult_t FreeRTOS_vt_properties(
176  FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB, AzureIoTHubClient_t* xAzureIoTHubClient);
177 
192  FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB, int32_t MultiCalibrationCount);
193 
194 AzureIoTResult_t FreeRTOS_vt_process_property_update(FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB,
195  AzureIoTHubClient_t* xAzureIoTHubClient,
196  const UCHAR* component_name_ptr,
197  UINT component_name_length,
198  AzureIoTJSONReader_t* xReader,
199  UINT version);
200 
210 
223  FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB, AzureIoTHubClient_t* xAzureIoTHubClient, UINT message_type);
224 
236 AzureIoTResult_t FreeRTOS_vt_process_reported_property_sync(FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB,
237  const UCHAR* component_name_ptr,
238  UINT component_name_length,
239  AzureIoTJSONReader_t* json_reader_ptr);
240 
241 AzureIoTResult_t FreeRTOS_vt_signature_read(
242  FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB, UCHAR* associated_telemetry, UINT associated_telemetry_length,UINT mode);
243 
244 UINT FreeRTOS_vt_signature_process(
245  FreeRTOS_VERIFIED_TELEMETRY_DB* verified_telemetry_DB, UCHAR* associated_telemetry, UINT associated_telemetry_length);
246 
247 #ifdef __cplusplus
248 }
249 #endif
250 
251 #endif /* FREERTOS_VERIFIED_TELEMETRY_H */
FreeRTOS_vt_signature_init
AzureIoTResult_t FreeRTOS_vt_signature_init(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, FreeRTOS_VT_OBJECT *handle, UCHAR *component_name_ptr, UINT signature_type, UCHAR *associated_telemetry, bool telemetry_status_auto_update, VT_SENSOR_HANDLE *sensor_handle)
Initializes Verified Telemetry for a particular sensor data stream.
MultiCalibration_store_cs_object
UINT MultiCalibration_store_cs_object(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, int32_t MultiCalibrationCount)
Processes all desired property updates supported by vT Middleware.
FreeRTOS_VT_SIGNATURE_COMPONENT_UNION_TAG
Definition: FreeRTOS_verified_telemetry.h:25
FreeRTOS_vt_compute_evaluate_fingerprint_all_sensors
AzureIoTResult_t FreeRTOS_vt_compute_evaluate_fingerprint_all_sensors(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB)
Computes status of all telemetries which have been initialized to provide Verified Telemetry.
FreeRTOS_vt_process_command
AzureIoTResult_t FreeRTOS_vt_process_command(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, AzureIoTHubClient_t *xAzureIoTHubClient, UCHAR *component_name_ptr, UINT component_name_length, UCHAR *pnp_command_name_ptr, UINT pnp_command_name_length, UINT *status_code)
Processes all commands supported by VT Middleware.
FreeRTOS_vt_send_desired_property_after_boot
AzureIoTResult_t FreeRTOS_vt_send_desired_property_after_boot(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, AzureIoTHubClient_t *xAzureIoTHubClient, UINT message_type)
Updates Digital Twin with default desired property values when device is booted for the first time.
FreeRTOS_VT_OBJECT_TAG
Definition: FreeRTOS_verified_telemetry.h:31
FreeRTOS_vt_properties
AzureIoTResult_t FreeRTOS_vt_properties(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, AzureIoTHubClient_t *xAzureIoTHubClient)
Updates Digital Twin with default desired property values when device is booted for the first time.
FreeRTOS_VERIFIED_TELEMETRY_DB_TAG
Definition: FreeRTOS_verified_telemetry.h:44
FreeRTOS_vt_verified_telemetry_message_create_send
AzureIoTResult_t FreeRTOS_vt_verified_telemetry_message_create_send(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, AzureIoTHubClient_t *xAzureIoTHubClient, const UCHAR *component_name_ptr, UINT component_name_length, const UCHAR *telemetry_data, UINT data_size)
Creates and sends telemetry JSON with message properties containing telemetry status.
FreeRTOS_vt_fallcurve_component.h
FreeRTOS_vt_currentsense_component.h
FreeRTOS_vt_init
AzureIoTResult_t FreeRTOS_vt_init(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, UCHAR *component_name_ptr, bool enable_verified_telemetry, VT_DEVICE_DRIVER *device_driver, CHAR *scratch_buffer, UINT scratch_buffer_length)
Initializes Global Verified Telemetry using platform specific device drivers.
FreeRTOS_VT_FALLCURVE_COMPONENT_TAG
Definition: FreeRTOS_vt_fallcurve_component.h:15
FreeRTOS_VT_CURRENTSENSE_COMPONENT_TAG
Definition: FreeRTOS_vt_currentsense_component.h:15
FreeRTOS_vt_process_reported_property_sync
AzureIoTResult_t FreeRTOS_vt_process_reported_property_sync(FreeRTOS_VERIFIED_TELEMETRY_DB *verified_telemetry_DB, const UCHAR *component_name_ptr, UINT component_name_length, AzureIoTJSONReader_t *json_reader_ptr)
Synchronizes VT Settings stored in digital Twin as reported properties at startup.