C Device Virtualization API Reference for Oracle Internet of Things Cloud Service Client Software Library. Release 21.1.1.0.0-3. E70343-26
iotcs_virtual_device.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
00003  *
00004  * This software is dual-licensed to you under the MIT License (MIT) and
00005  * the Universal Permissive License (UPL). See the LICENSE file in the root
00006  * directory for license terms. You may choose either license, or both.
00007  */
00008 
00014 #ifndef IOTCS_DEVICE_VIRTUAL_H
00015 #define IOTCS_DEVICE_VIRTUAL_H
00016 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020 
00021 #include "iotcs.h"
00022 #include "advanced/iotcs_message.h"
00023 
00028     typedef struct iotcs_virtual_device_handle_t* iotcs_virtual_device_handle;
00029 
00034     typedef struct iotcs_named_value_t {
00035         const char *name; 
00036         iotcs_typed_value typed_value; 
00037         struct iotcs_named_value_t *next; 
00038     } iotcs_named_value;
00045     typedef struct iotcs_virtual_device_change_event_t {
00046         iotcs_named_value named_value; 
00047         iotcs_virtual_device_handle virtual_device_handle; 
00048     } iotcs_virtual_device_change_event;
00055     typedef struct iotcs_virtual_device_error_event_t {
00056         iotcs_named_value named_value; 
00057         iotcs_virtual_device_handle virtual_device_handle; 
00058         const char *message; 
00059     } iotcs_virtual_device_error_event;
00066     typedef void (*iotcs_virtual_device_changed_callback)(iotcs_virtual_device_change_event *event);
00067 
00074     typedef void (*iotcs_action_callback)(iotcs_virtual_device_handle virtual_device_handle,
00075             iotcs_typed_value argument);
00076  
00081     typedef void (*iotcs_virtual_device_on_action_callback)(iotcs_virtual_device_handle device_handle, char *action, iotcs_named_value *argument);
00082 
00083 
00091     typedef void (*iotcs_virtual_device_error_callback)(iotcs_virtual_device_error_event *event);
00092 
00097     typedef struct iotcs_device_model_handle_t* iotcs_device_model_handle;
00098 
00103     typedef struct iotcs_alert_handle_t* iotcs_alert_handle;
00104 
00109     typedef struct iotcs_data_handle_t* iotcs_data_handle;
00110 
00119     iotcs_result iotcs_get_device_model(const char *device_model, iotcs_device_model_handle *device_model_handle);
00120 
00126     const char * iotcs_get_device_model_name(iotcs_device_model_handle device_model_handle);
00127 
00133     const char * iotcs_get_device_model_description(iotcs_device_model_handle device_model_handle);
00134 
00140     const char * iotcs_get_device_model_urn(iotcs_device_model_handle device_model_handle);
00141 
00146     void iotcs_free_device_model(iotcs_device_model_handle device_model_handle);
00147 
00158     iotcs_result iotcs_create_virtual_device_handle(const char *endpoint_id, iotcs_device_model_handle device_model_handle, iotcs_virtual_device_handle *virtual_device_handle);
00159 
00164     void iotcs_free_virtual_device_handle(iotcs_virtual_device_handle virtual_device_handle);
00165 
00179     iotcs_result iotcs_virtual_device_set(iotcs_virtual_device_handle virtual_device_handle, const char* attribute_name, const void* value, size_t length);
00180 
00181 #if defined IOTCS_IMPLICIT_EDGE_COMPUTING || defined IOTCS_DOXYGEN
00182 
00195     iotcs_result iotcs_virtual_device_offer_boolean(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_bool value);
00196 
00210     iotcs_result iotcs_virtual_device_offer_integer(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, int value);
00211 
00225     iotcs_result iotcs_virtual_device_offer_float(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, float value);
00226 
00240     iotcs_result iotcs_virtual_device_offer_date_time(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_date_time value);
00241 #endif
00242 
00253     iotcs_result iotcs_virtual_device_get_string(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, const char **value);
00254 
00267     iotcs_result iotcs_virtual_device_set_string(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, const char *value);
00268 
00279     iotcs_result iotcs_virtual_device_get_integer(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, int *value);
00280 
00293     iotcs_result iotcs_virtual_device_set_integer(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, int value);
00294 
00305     iotcs_result iotcs_virtual_device_get_float(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, float *value);
00306 
00319     iotcs_result iotcs_virtual_device_set_float(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, float value);
00320 
00331     iotcs_result iotcs_virtual_device_get_boolean(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_bool *value);
00332 
00345     iotcs_result iotcs_virtual_device_set_boolean(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_bool value);
00346 
00357     iotcs_result iotcs_virtual_device_get_date_time(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_date_time *value);
00358 
00371     iotcs_result iotcs_virtual_device_set_date_time(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_date_time value);
00372 
00378     void iotcs_virtual_device_set_on_change(iotcs_virtual_device_handle virtual_device_handle, iotcs_virtual_device_changed_callback callback);
00379 
00389     iotcs_result iotcs_virtual_device_attribute_set_on_change(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_virtual_device_changed_callback callback);
00390 
00396     void iotcs_virtual_device_set_on_error(iotcs_virtual_device_handle virtual_device_handle, iotcs_virtual_device_error_callback callback);
00397 
00407     iotcs_result iotcs_virtual_device_attribute_set_on_error(iotcs_virtual_device_handle virtual_device_handle, const char *attribute_name, iotcs_virtual_device_error_callback callback);
00408 
00418     iotcs_result iotcs_virtual_device_set_callback(iotcs_virtual_device_handle virtual_device_handle, const char *action_name, iotcs_action_callback callback);
00419 
00429     iotcs_result iotcs_virtual_device_set_on_action_callback(iotcs_virtual_device_handle virtual_device_handle, const char *action_name, iotcs_virtual_device_on_action_callback callback);
00430  
00440     iotcs_result iotcs_virtual_device_set_global_on_action_callback(iotcs_virtual_device_handle virtual_device_handle, iotcs_virtual_device_on_action_callback callback);
00441 
00446     void iotcs_virtual_device_start_update(iotcs_virtual_device_handle virtual_device_handle);
00447 
00452     void iotcs_virtual_device_finish_update(iotcs_virtual_device_handle virtual_device_handle);
00453 
00464     iotcs_result iotcs_virtual_device_create_alert_handle(iotcs_virtual_device_handle virtual_device_handle, const char *alert_name, iotcs_alert_handle *alert_handle);
00465 
00470     void iotcs_virtual_device_free_alert_handle(iotcs_alert_handle alert_handle);
00471 
00484     iotcs_result iotcs_alert_raise(iotcs_alert_handle alert_handle);
00485 
00492     void iotcs_alert_set_on_error(iotcs_alert_handle alert_handle, iotcs_virtual_device_error_callback callback);
00493 
00505     iotcs_result iotcs_alert_set(iotcs_alert_handle alert_handle, const char* field, const void* value, size_t length);
00506 
00516     iotcs_result iotcs_alert_set_string(iotcs_alert_handle alert_handle, const char *field, const char *value);
00517 
00527     iotcs_result iotcs_alert_set_integer(iotcs_alert_handle alert_handle, const char *field, int value);
00528 
00538     iotcs_result iotcs_alert_set_float(iotcs_alert_handle alert_handle, const char *field, float value);
00539 
00549     iotcs_result iotcs_alert_set_boolean(iotcs_alert_handle alert_handle, const char *field, iotcs_bool value);
00550 
00560     iotcs_result iotcs_alert_set_date_time(iotcs_alert_handle alert_handle, const char *field, iotcs_date_time value);
00561 
00571     iotcs_result iotcs_alert_set_storage_object(iotcs_alert_handle alert_handle, const char *field,
00572             iotcs_storage_object_handle value);
00573 
00574 #if !defined IOTCS_DOXYGEN
00575 
00584     iotcs_result iotcs_alert_set_external_object(iotcs_alert_handle alert_handle, const char *field,
00585             iotcs_external_object_handle value);
00586 #endif
00587 
00598     iotcs_result iotcs_virtual_device_create_data_handle(iotcs_virtual_device_handle virtual_device_handle, const char *data_name, iotcs_data_handle *data_handle);
00599 
00612     iotcs_result iotcs_virtual_device_set_storage_object(iotcs_virtual_device_handle virtual_device_handle,
00613             const char *attribute_name, iotcs_storage_object_handle value);
00614 
00615 #if !defined IOTCS_DOXYGEN
00616 
00628     iotcs_result iotcs_virtual_device_set_external_object(iotcs_virtual_device_handle virtual_device_handle,
00629             const char *attribute_name, iotcs_external_object_handle value);
00630 #endif
00631 
00644     iotcs_result iotcs_virtual_device_get_storage_object(iotcs_virtual_device_handle virtual_device_handle,
00645             const char *attribute_name, iotcs_storage_object_handle *value);
00646 
00647 #if !defined IOTCS_DOXYGEN
00648 
00660     iotcs_result iotcs_virtual_device_get_external_object(iotcs_virtual_device_handle virtual_device_handle,
00661             const char *attribute_name, iotcs_external_object_handle *value);
00662 #endif
00663 
00668     void iotcs_virtual_device_free_data_handle(iotcs_data_handle data_handle);
00669 
00682     iotcs_result iotcs_data_submit(iotcs_data_handle data_handle);
00683 
00695     iotcs_result iotcs_data_set(iotcs_data_handle data_handle, const char* field, const void* value, size_t length);
00696 
00703     void iotcs_data_set_on_error(iotcs_data_handle data_handle, iotcs_virtual_device_error_callback callback);
00704 
00714     iotcs_result iotcs_data_set_string(iotcs_data_handle data_handle, const char *field, const char *value);
00715 
00725     iotcs_result iotcs_data_set_integer(iotcs_data_handle data_handle, const char *field, int value);
00726 
00736     iotcs_result iotcs_data_set_float(iotcs_data_handle data_handle, const char *field, float value);
00737 
00747     iotcs_result iotcs_data_set_boolean(iotcs_data_handle data_handle, const char *field, iotcs_bool value);
00748 
00758     iotcs_result iotcs_data_set_date_time(iotcs_data_handle data_handle, const char *field, iotcs_date_time value);
00759 
00770     iotcs_result iotcs_data_set_storage_object(iotcs_data_handle data_handle, const char *field,
00771             iotcs_storage_object_handle value);
00772 
00773 #if !defined IOTCS_DOXYGEN
00774 
00784     iotcs_result iotcs_data_set_external_object(iotcs_data_handle data_handle, const char *field,
00785             iotcs_external_object_handle value);
00786 #endif
00787 #ifdef __cplusplus
00788 }
00789 #endif
00790 
00791 #endif /* IOTCS_DEVICE_VIRTUAL_H */
00792