diff --git a/api/icsneo/icsneo.cpp b/api/icsneo/icsneo.cpp index cfbf22c..5cbc097 100644 --- a/api/icsneo/icsneo.cpp +++ b/api/icsneo/icsneo.cpp @@ -147,7 +147,6 @@ ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, icsneo_dev return icsneo_error_invalid_parameters; } auto dev = device->device; - // TODO: We should expose these types *value = dev->getType().getDeviceType(); return icsneo_error_success; @@ -166,3 +165,58 @@ ICSNEO_API icsneo_error_t icsneo_device_serial(icsneo_device_t* device, const ch return icsneo_error_success; } + + +ICSNEO_API icsneo_error_t icsneo_go_online(icsneo_device_t* device, bool go_online) { + if (!device) { + return icsneo_error_invalid_parameters; + } + auto dev = device->device; + // Go online + if (go_online && dev->goOnline()) { + return icsneo_error_success; + } + // Go offline + if (!go_online && dev->goOffline()) { + return icsneo_error_success; + } + + return icsneo_error_go_online_failed; +} + +ICSNEO_API icsneo_error_t icsneo_is_online(icsneo_device_t* device, bool* is_online) { + if (!device || !is_online) { + return icsneo_error_invalid_parameters; + } + auto dev = device->device; + *is_online = dev->isOnline(); + + return icsneo_error_success; +} + +ICSNEO_API icsneo_error_t icsneo_set_message_polling(icsneo_device_t* device, bool enable) { + if (!device) { + return icsneo_error_invalid_parameters; + } + auto dev = device->device; + // Enable message polling + if (enable && dev->enableMessagePolling()) { + return icsneo_error_success; + } + // Disable message polling + if (!enable && dev->disableMessagePolling()) { + return icsneo_error_success; + } + + return icsneo_error_enable_message_polling_failed; +} + +ICSNEO_API icsneo_error_t icsneo_get_message_polling(icsneo_device_t* device, bool* is_enabled) { + if (!device || !is_enabled) { + return icsneo_error_invalid_parameters; + } + auto dev = device->device; + *is_enabled = dev->isMessagePollingEnabled(); + + return icsneo_error_success; +} diff --git a/include/icsneo/icsneo.h b/include/icsneo/icsneo.h index 6fff629..97bbb11 100644 --- a/include/icsneo/icsneo.h +++ b/include/icsneo/icsneo.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include @@ -153,6 +154,46 @@ ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, icsneo_dev */ ICSNEO_API icsneo_error_t icsneo_device_serial(icsneo_device_t* device, const char* value, uint32_t* value_length); + +/** @brief Set the online state of a device. + * + * @param[in] icsneo_device_t device The device to set the online state of. + * @param[in] bool go_online true to go online, false to go offline. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. + */ +ICSNEO_API icsneo_error_t icsneo_go_online(icsneo_device_t* device, bool go_online); + +/** @brief Get the online state of a device. + * + * @param[in] icsneo_device_t device The device to set the online state of. + * @param[out] bool true if online, false if offline. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. + */ +ICSNEO_API icsneo_error_t icsneo_is_online(icsneo_device_t* device, bool* is_online); + + +/** @brief Set the message polling state of a device. + * + * @param[in] icsneo_device_t device The device to set the message polling state of. + * @param[in] bool enable true to enable message polling, false to disable message polling.. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. + */ +ICSNEO_API icsneo_error_t icsneo_set_message_polling(icsneo_device_t* device, bool enable); + +/** @brief Get the message polling state of a device. + * + * @param[in] icsneo_device_t device The device to set the message polling state of. + * @param[out] bool is_enabled true if message polling is enabled, false if message polling is disabled. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. + */ +ICSNEO_API icsneo_error_t icsneo_get_message_polling(icsneo_device_t* device, bool* is_enabled); + + + #ifdef __cplusplus } #endif \ No newline at end of file