From 468f30bb972de2930a0e35f7ed74c34147ae13f3 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:28:28 -0300 Subject: [PATCH 01/46] HBE-163 chore: rename Common.cmake variables --- common/Common.cmake | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/common/Common.cmake b/common/Common.cmake index b9826d5..6539560 100644 --- a/common/Common.cmake +++ b/common/Common.cmake @@ -1,4 +1,4 @@ -set(CIOT_DIR F:/projects/ciot-platform/ciot_c) +set(CIOT_DIR ../../../../ciot_c) set(CIOT_INCLUDE_DIRS ${CIOT_DIR}/include/types @@ -13,31 +13,28 @@ set(PROTO_INCLUDE_DIRS ${CIOT_DIR}/src/proto ) -set(CIOT_OPCUA_INCLUDE_DIR ${CIOT_DIR}/src/opcua) - FILE(GLOB_RECURSE PROTOBUF_C ${PROTOBUF_C_DIR}/protobuf-c/*.c) FILE(GLOB_RECURSE PROTO_CIOT ${CIOT_DIR}/src/proto/*.c) -FILE(GLOB_RECURSE CIOT_UNSUPPORTED_SRCS ${CIOT_DIR}/src/unsupported/*.c) -FILE(GLOB_RECURSE CIOT_COMMON_SRCS ${CIOT_DIR}/src/common/*.c) -FILE(GLOB_RECURSE CIOT_ESP32_SRCS ${CIOT_DIR}/src/esp32/*.c) -FILE(GLOB_RECURSE CIOT_MONGOOSE_SRCS ${CIOT_DIR}/src/mg/*.c) -FILE(GLOB_RECURSE CIOT_WIN_SRCS ${CIOT_DIR}/src/win/*.c) -FILE(GLOB_RECURSE CIOT_LINUX_SRCS ${CIOT_DIR}/src/linux/*.c) -FILE(GLOB_RECURSE CIOT_OPCUA_SRCS ${CIOT_OPCUA_INCLUDE_DIR}/*.c) +FILE(GLOB_RECURSE CIOT_UNSUPPORTED ${CIOT_DIR}/src/unsupported/*.c) +FILE(GLOB_RECURSE CIOT_COMMON ${CIOT_DIR}/src/common/*.c) +FILE(GLOB_RECURSE CIOT_ESP32 ${CIOT_DIR}/src/esp32/*.c) +FILE(GLOB_RECURSE CIOT_MONGOOSE ${CIOT_DIR}/src/mg/*.c) +FILE(GLOB_RECURSE CIOT_WIN ${CIOT_DIR}/src/win/*.c) +FILE(GLOB_RECURSE CIOT_LINUX ${CIOT_DIR}/src/linux/*.c) list(APPEND PROTO_SRCS ${PROTOBUF_C}) list(APPEND PROTO_SRCS ${PROTO_CIOT}) -# list(APPEND CIOT_ESP32_SRCS ${CIOT_ESP32_SRCS}) -list(APPEND CIOT_ESP32_SRCS ${CIOT_COMMON_SRCS}) +list(APPEND CIOT_ESP32_SRCS ${CIOT_COMMON}) +list(APPEND CIOT_ESP32_SRCS ${CIOT_ESP32}) -list(APPEND CIOT_PC_SRCS ${CIOT_UNSUPPORTED_SRCS}) -list(APPEND CIOT_PC_SRCS ${CIOT_COMMON_SRCS}) -list(APPEND CIOT_PC_SRCS ${CIOT_MONGOOSE_SRCS}) +list(APPEND CIOT_PC_SRCS ${CIOT_UNSUPPORTED}) +list(APPEND CIOT_PC_SRCS ${CIOT_COMMON}) +list(APPEND CIOT_PC_SRCS ${CIOT_MONGOOSE}) if (UNIX) - list(APPEND CIOT_PC_SRCS ${CIOT_LINUX_SRCS}) + list(APPEND CIOT_PC_SRCS ${CIOT_LINUX}) else() - list(APPEND CIOT_PC_SRCS ${CIOT_WIN_SRCS}) + list(APPEND CIOT_PC_SRCS ${CIOT_WIN}) endif() From 8a6d64c212de824c211a9682324982afa3f3a956 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:28:59 -0300 Subject: [PATCH 02/46] HBE-163 chore: update intelissense config file --- .vscode/c_cpp_properties.json | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 3bf5371..1145b77 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -78,13 +78,12 @@ "-mcpu=cortex-m4" ], "includePath": [ - "E:/Projetos/nordic/nRF5_SDK_17.1.0_ddde560/components/**", - "E:/Projetos/nordic/nRF5_SDK_17.1.0_ddde560/modules/**", - "E:/Projetos/nordic/nRF5_SDK_17.1.0_ddde560/external/**", - "E:/Projetos/nordic/nRF5_SDK_17.1.0_ddde560/integration/**", + "../nRF5_SDK_17/components/**", + "../nRF5_SDK_17/modules/**", + "../nRF5_SDK_17/external/**", + "../nRF5_SDK_17/integration/**", "${workspaceFolder}/include/**", - "${workspaceFolder}/src/platform/nrf", - "examples/nrf_ble_scn/**" + "${workspaceFolder}/src/nrf" ], "forcedInclude": [], "defines": [ From 2762ef85ac1f9c272f640dee0961e2b694a8df46 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:31:41 -0300 Subject: [PATCH 03/46] HBE-163 refact: mode iface parameter to configuration struct --- examples/nrf_dfu_master/main/main.c | 5 +++-- include/ciot_nrf_dfu.h | 4 +++- src/common/ciot_nrf_dfu.c | 4 +--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/nrf_dfu_master/main/main.c b/examples/nrf_dfu_master/main/main.c index 52b94df..83ad4e2 100644 --- a/examples/nrf_dfu_master/main/main.c +++ b/examples/nrf_dfu_master/main/main.c @@ -81,10 +81,11 @@ int app_main(void) ciot_nrf_dfu_cfg_t dfu_cfg = { .dfu.type = DFU_TYPE, - .max_package_len = DFU_MAX_PACKAGE_LEN}; + .max_package_len = DFU_MAX_PACKAGE_LEN, + .iface = (ciot_iface_t*)self.uart}; CIOT_ERROR_RETURN(ciot_nrf_dfu_read_file(&dfu_cfg.init_packet, DFU_INIT_PACKET_FILE)); CIOT_ERROR_RETURN(ciot_nrf_dfu_read_file(&dfu_cfg.app_image, DFU_APP_IMAGE_FILE)); - self.dfu = ciot_nrf_dfu_new(&dfu_cfg, (ciot_iface_t*)self.uart); + self.dfu = ciot_nrf_dfu_new(&dfu_cfg); ciot_nrf_dfu_start(self.dfu, &dfu_cfg.dfu); ciot_iface_register_event((ciot_iface_t *)self.uart, uart_event_handler, &self); diff --git a/include/ciot_nrf_dfu.h b/include/ciot_nrf_dfu.h index bb0157a..931b3c1 100644 --- a/include/ciot_nrf_dfu.h +++ b/include/ciot_nrf_dfu.h @@ -105,9 +105,11 @@ typedef struct ciot_nrf_dfu_cfg ciot_nrf_dfu_packet_t init_packet; ciot_nrf_dfu_packet_t app_image; uint32_t max_package_len; + ciot_iface_t *iface; + int target_sys_iface_id; } ciot_nrf_dfu_cfg_t; -ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg, ciot_iface_t *iface); +ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg); ciot_err_t ciot_nrf_dfu_start(ciot_dfu_t self, ciot_dfu_cfg_t *cfg); ciot_err_t ciot_nrf_uart_stop(ciot_dfu_t self); ciot_err_t ciot_nrf_dfu_process_req(ciot_dfu_t self, ciot_dfu_req_t *req); diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index d8ae058..23839e6 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -68,7 +68,6 @@ struct ciot_dfu ciot_nrf_dfu_cfg_t cfg; ciot_dfu_status_t status; - ciot_iface_t *iface_dfu; ciot_nrf_dfu_slip_t slip; ciot_nrf_dfu_state_t state; ciot_nrf_dfu_crc_t crc; @@ -87,11 +86,10 @@ static uint32_t ciot_nrf_dfu_timeout_check(uint32_t timeout); static const char *TAG = "ciot_nrf_dfu"; -ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg, ciot_iface_t *iface) +ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg) { ciot_dfu_t self = calloc(1, sizeof(struct ciot_dfu)); self->cfg = *cfg; - self->iface_dfu = iface; self->iface.base.ptr = self; self->iface.base.start = (ciot_iface_start_fn *)ciot_nrf_dfu_start; self->iface.base.stop = (ciot_iface_stop_fn *)ciot_nrf_uart_stop; From 173f77380d132d956bd8e4ba0cc487377cd300fb Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:32:35 -0300 Subject: [PATCH 04/46] HBE-163 refact: function renamed --- include/ciot_nrf_dfu.h | 2 +- src/common/ciot_nrf_dfu.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/ciot_nrf_dfu.h b/include/ciot_nrf_dfu.h index 931b3c1..1f61bda 100644 --- a/include/ciot_nrf_dfu.h +++ b/include/ciot_nrf_dfu.h @@ -111,7 +111,7 @@ typedef struct ciot_nrf_dfu_cfg ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg); ciot_err_t ciot_nrf_dfu_start(ciot_dfu_t self, ciot_dfu_cfg_t *cfg); -ciot_err_t ciot_nrf_uart_stop(ciot_dfu_t self); +ciot_err_t ciot_nrf_dfu_stop(ciot_dfu_t self); ciot_err_t ciot_nrf_dfu_process_req(ciot_dfu_t self, ciot_dfu_req_t *req); ciot_err_t ciot_nrf_dfu_send_data(ciot_dfu_t self, uint8_t *data, int size); diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 23839e6..43fbeea 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -92,7 +92,7 @@ ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg) self->cfg = *cfg; self->iface.base.ptr = self; self->iface.base.start = (ciot_iface_start_fn *)ciot_nrf_dfu_start; - self->iface.base.stop = (ciot_iface_stop_fn *)ciot_nrf_uart_stop; + self->iface.base.stop = (ciot_iface_stop_fn *)ciot_nrf_dfu_stop; self->iface.base.process_req = (ciot_iface_process_req_fn *)ciot_nrf_dfu_process_req; self->iface.base.send_data = (ciot_iface_send_data_fn *)ciot_nrf_dfu_send_data; self->iface.base.cfg.ptr = &self->cfg.dfu; @@ -124,7 +124,7 @@ ciot_err_t ciot_nrf_dfu_start(ciot_dfu_t self, ciot_dfu_cfg_t *cfg) return CIOT_OK; } -ciot_err_t ciot_nrf_uart_stop(ciot_dfu_t self) +ciot_err_t ciot_nrf_dfu_stop(ciot_dfu_t self) { return CIOT_ERR_NOT_IMPLEMENTED; } From a69f2ee2fba3389440e1991451c591122f244d2c Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:33:59 -0300 Subject: [PATCH 05/46] HBE-163 feat: implemented ciot_nrf_dfu_stop --- src/common/ciot_nrf_dfu.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 43fbeea..fab7fd0 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -15,9 +15,11 @@ #include "ciot_config.h" #include "ciot_nrf_dfu.h" +#include "ciot_sys.h" #include "ciot_slip.h" #include "ciot_utils.h" #include "ciot_crc.h" +#include "ciot_uart.h" #define MAX_OBJECT_SIZE 4096 #define PING_ID 0x01 @@ -75,6 +77,10 @@ struct ciot_dfu uint16_t prn_counter; uint16_t data_transferred; ciot_nrf_dfu_object_t object; + + bool cache_bridge_mode; + void *cache_event_args; + ciot_iface_event_handler_t *cache_event_handler; }; static ciot_err_t ciot_nrf_dfu_set_state(ciot_dfu_t self, ciot_dfu_state_t state); @@ -126,7 +132,13 @@ ciot_err_t ciot_nrf_dfu_start(ciot_dfu_t self, ciot_dfu_cfg_t *cfg) ciot_err_t ciot_nrf_dfu_stop(ciot_dfu_t self) { - return CIOT_ERR_NOT_IMPLEMENTED; + if(self->cfg.iface->info.type == CIOT_IFACE_TYPE_UART) + { + ciot_uart_set_bridge_mode((ciot_uart_t)self->cfg.iface, false); + } + self->cfg.iface->event_args = self->cache_event_args; + self->cfg.iface->event_handler = self->cache_event_handler; + return CIOT_OK; } ciot_err_t ciot_nrf_dfu_process_req(ciot_dfu_t self, ciot_dfu_req_t *req) @@ -384,7 +396,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 CIOT_LOGI(TAG, "App image write completed"); self->state = CIOT_NRF_DFU_STATE_COMPLETED; ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_COMPLETED); - // ciot_nrf_dfu_stop(self); + ciot_nrf_dfu_stop(self); return CIOT_OK; } } From e9d1de7e55480ed9a5ce4f3c92257bc98f5b38c9 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:34:34 -0300 Subject: [PATCH 06/46] HBE-163 refact: moved dfu_iface to cfg.iface --- src/common/ciot_nrf_dfu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index fab7fd0..304faa7 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -148,13 +148,13 @@ ciot_err_t ciot_nrf_dfu_process_req(ciot_dfu_t self, ciot_dfu_req_t *req) ciot_err_t ciot_nrf_dfu_send_data(ciot_dfu_t self, uint8_t *data, int size) { - if(self->iface_dfu->info.type == CIOT_IFACE_TYPE_UART) + if(self->cfg.iface->info.type == CIOT_IFACE_TYPE_UART) { return ciot_nrf_dfu_slip_encode_and_send(self, data, size); } else { - return ciot_iface_send_data(self->iface_dfu, data, size); + return ciot_iface_send_data(self->cfg.iface, data, size); } } From f750c181afe819aa2ea9e8f9265eb540337bc15a Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:35:46 -0300 Subject: [PATCH 07/46] HBE-163 feat: implement ciot_nrf_dfu_start_bootloader --- src/common/ciot_nrf_dfu.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 304faa7..619f108 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -85,6 +85,7 @@ struct ciot_dfu static ciot_err_t ciot_nrf_dfu_set_state(ciot_dfu_t self, ciot_dfu_state_t state); static ciot_err_t ciot_nrf_dfu_event_handler(ciot_iface_t *sender, ciot_iface_event_t *event, void *args); +static ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self); static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self); static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int32_t len); static ciot_err_t ciot_nrf_dfu_slip_encode_and_send(ciot_dfu_t self, uint8_t *data, uint32_t len); @@ -220,6 +221,17 @@ ciot_err_t ciot_nrf_dfu_read_file(ciot_nrf_dfu_packet_t *object, const char *nam return 0; } +static ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self) +{ + ciot_msg_t msg = { + .type = CIOT_MSG_TYPE_REQUEST, + .iface.id = self->cfg.target_sys_iface_id, + .iface.type = CIOT_IFACE_TYPE_SYSTEM, + .data.system.request.type = CIOT_SYS_REQ_INIT_DFU + }; + return ciot_iface_send_req(self->cfg.iface, &msg, CIOT_MSG_HEADER_SIZE + 1); +} + static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) { CIOT_NULL_CHECK(self); From 866689e8997c230d40d9bae96be71bc376b7dbd9 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:36:38 -0300 Subject: [PATCH 08/46] HBE-163 feat: add function to set bridge mode --- src/common/ciot_nrf_dfu.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 619f108..22df727 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -179,7 +179,14 @@ ciot_err_t ciot_nrf_dfu_task(ciot_dfu_t self) ciot_err_t ciot_nrf_dfu_send_firmware(ciot_dfu_t self) { - ciot_iface_register_event(self->iface_dfu, ciot_nrf_dfu_event_handler, self); + ciot_nrf_dfu_start_bootloader(self); + if(self->cfg.iface->info.type == CIOT_IFACE_TYPE_UART) + { + ciot_uart_set_bridge_mode((ciot_uart_t)self->cfg.iface, true); + } + self->cache_event_args = self->cfg.iface->event_args; + self->cache_event_handler = self->cfg.iface->event_handler; + ciot_iface_register_event(self->cfg.iface, ciot_nrf_dfu_event_handler, self); self->state = CIOT_NRF_DFU_STATE_SEND_PING_RESP; return CIOT_OK; } From 0e7466168217a6042f51cae2b87cfd46caed5640 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:38:06 -0300 Subject: [PATCH 09/46] HBE-163 refact: changed logs --- src/common/ciot_nrf_dfu.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 22df727..dc04bd1 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -197,13 +197,13 @@ ciot_err_t ciot_nrf_dfu_read_file(ciot_nrf_dfu_packet_t *object, const char *nam if(file == NULL) { - perror("Error opening file"); + CIOT_LOGE(TAG, "Error opening file"); return CIOT_ERR_NOT_FOUND; } if (object == NULL || object->data != NULL) { - perror("Invalid arg"); + CIOT_LOGE(TAG, "Invalid arg"); return CIOT_ERR_INVALID_ARG; } @@ -215,13 +215,13 @@ ciot_err_t ciot_nrf_dfu_read_file(ciot_nrf_dfu_packet_t *object, const char *nam object->size = file_size; if (object->data == NULL) { - perror("Error allocating memory"); + CIOT_LOGE(TAG, "Error allocating memory"); return CIOT_ERR_NO_MEMORY; } size_t elements_read = fread(object->data, sizeof(uint8_t), file_size, file); if (elements_read != file_size) { - perror("Error reading file"); + CIOT_LOGE(TAG, "Error reading file"); return CIOT_FAIL; } @@ -257,7 +257,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) // Create command: size [x01 x01 xXXXXXXXX] if(self->state == CIOT_NRF_DFU_STATE_CREATE_OBJECT) { - CIOT_LOGI(TAG, "Create command"); + CIOT_LOGD(TAG, "Create command"); int32_t data_remaining = self->object.packet->size - self->data_transferred; self->object.remaining = data_remaining >= MAX_OBJECT_SIZE ? MAX_OBJECT_SIZE : data_remaining; self->data[0] = CIOT_NRF_DFU_OP_OBJECT_CREATE; @@ -282,7 +282,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) if(self->cfg.dfu.type != CIOT_DFU_TYPE_BLE) { uint8_t write_opcode[] = { CIOT_NRF_DFU_OP_OBJECT_WRITE }; - ciot_iface_send_data(self->iface_dfu, &write_opcode, 1); + CIOT_LOGI(TAG, "Writing %d object [%d / %ld]", self->object.packet->type, self->data_transferred, self->object.packet->size); } ciot_err_t err = ciot_nrf_dfu_send_data(self, &self->object.packet->data[self->data_transferred], bytes_to_write); @@ -310,7 +310,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) // Calculate CRC [x03] if(self->state == CIOT_NRF_DFU_STATE_REQUEST_CRC) { - CIOT_LOGI(TAG, "Calculate CRC"); + CIOT_LOGD(TAG, "Calculate CRC"); self->data[0] = CIOT_NRF_DFU_OP_CRC_GET; self->state = CIOT_NRF_DFU_STATE_WAITING_CRC; ciot_nrf_dfu_timeout_check(TIMEOUT_RESET); @@ -320,7 +320,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) // Execute command [0x04] if(self->state == CIOT_NRF_DFU_STATE_REQUEST_EXECUTE) { - CIOT_LOGI(TAG, "Execute command"); + CIOT_LOGD(TAG, "Execute command"); self->data[0] = CIOT_NRF_DFU_OP_OBJECT_EXECUTE; self->state = CIOT_NRF_DFU_STATE_WAITING_EXECUTE; ciot_nrf_dfu_timeout_check(TIMEOUT_RESET); @@ -344,7 +344,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_PING && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGI(TAG, "Ping response sucess"); + CIOT_LOGD(TAG, "Ping response sucess"); self->state = CIOT_NRF_DFU_STATE_CREATE_OBJECT; ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_IN_PROGRESS); return CIOT_OK; @@ -356,7 +356,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_OBJECT_CREATE && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGI(TAG, "Response create success"); + CIOT_LOGD(TAG, "Response create success"); self->state = CIOT_NRF_DFU_STATE_WRITE_DFU_PACKAGE; return CIOT_OK; } @@ -381,12 +381,12 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 } if(self->object.remaining == 0) { - CIOT_LOGI(TAG, "Calculate CRC Sucess: offset CRC32"); + CIOT_LOGD(TAG, "Calculate CRC Sucess: offset CRC32"); self->state = CIOT_NRF_DFU_STATE_REQUEST_EXECUTE; } else { - CIOT_LOGI(TAG, "Response PRN Sucess: offset CRC32"); + CIOT_LOGD(TAG, "Response PRN Sucess: offset CRC32"); self->state = CIOT_NRF_DFU_STATE_WRITE_DFU_PACKAGE; } return CIOT_OK; @@ -398,7 +398,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_OBJECT_EXECUTE && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGI(TAG, "Response Execute Success"); + CIOT_LOGD(TAG, "Response Execute Success"); if(self->object.packet->transferred) { if(self->object.packet->type == CIOT_NRF_DFU_PACKET_TYPE_INIT) From b237b87232aa743ff8eca1e296adfc3fb6a50c47 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:38:23 -0300 Subject: [PATCH 10/46] HBE-163 feat: implement ciot_nrf_dfu_state --- src/common/ciot_nrf_dfu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index dc04bd1..b652ec5 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -228,6 +228,11 @@ ciot_err_t ciot_nrf_dfu_read_file(ciot_nrf_dfu_packet_t *object, const char *nam return 0; } +ciot_nrf_dfu_state_t ciot_nrf_dfu_state(ciot_dfu_t self) +{ + return self->state; +} + static ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self) { ciot_msg_t msg = { From 83c819c8a28b1278c232ac47d87b4d0efb5cd1fa Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:38:48 -0300 Subject: [PATCH 11/46] HBE-163 feat: send write opcode before start writing operation --- src/common/ciot_nrf_dfu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index b652ec5..f5c3eca 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -287,6 +287,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) if(self->cfg.dfu.type != CIOT_DFU_TYPE_BLE) { uint8_t write_opcode[] = { CIOT_NRF_DFU_OP_OBJECT_WRITE }; + ciot_iface_send_data(self->cfg.iface, &write_opcode, 1); CIOT_LOGI(TAG, "Writing %d object [%d / %ld]", self->object.packet->type, self->data_transferred, self->object.packet->size); } From d3d3b10c9a4b5e644551102c2c069f949fcfdfc3 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:39:04 -0300 Subject: [PATCH 12/46] HBE-163 feat: stop dfu on error --- src/common/ciot_nrf_dfu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index f5c3eca..4ddbe5e 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -457,6 +457,10 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 static ciot_err_t ciot_nrf_dfu_set_state(ciot_dfu_t self, ciot_dfu_state_t state) { self->status.state = state; + if(state == CIOT_DFU_STATE_ERROR) + { + ciot_nrf_dfu_stop(self); + } if(self->iface.event_handler != NULL) { ciot_iface_event_t status_event = { 0 }; From f12b2ef431211a952fe5e3ec84372019bb4ab411 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:39:24 -0300 Subject: [PATCH 13/46] HBE-163 feat: changed dfu_iface to cfg.iface --- src/common/ciot_nrf_dfu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 4ddbe5e..15e5659 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -507,7 +507,7 @@ static ciot_err_t ciot_nrf_dfu_slip_encode_and_send(ciot_dfu_t self, uint8_t *da uint8_t encoded_slip_packet[CIOT_NRF_DFU_MAX_DFU_PKT_LEN_UART] = {0}; uint32_t encoded_slip_packet_len; ciot_slip_encode(encoded_slip_packet, data, len, &encoded_slip_packet_len); - return ciot_iface_send_data(self->iface_dfu, encoded_slip_packet, encoded_slip_packet_len); + return ciot_iface_send_data(self->cfg.iface, encoded_slip_packet, encoded_slip_packet_len); } static uint32_t ciot_nrf_dfu_timeout_check(uint32_t timeout) From c1720841b731877122c51d30c9073bd4b1db47b8 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:40:04 -0300 Subject: [PATCH 14/46] HBE-163 feat: simplified nrf sys restart operation --- src/nrf/ciot_sys.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/nrf/ciot_sys.c b/src/nrf/ciot_sys.c index 908911a..2bf8e4d 100644 --- a/src/nrf/ciot_sys.c +++ b/src/nrf/ciot_sys.c @@ -117,11 +117,12 @@ static void ciot_sys_init(ciot_sys_t self) static ciot_err_t ciot_sys_req_restart(ciot_sys_t self) { + ciot_sys_rst(self); self->iface.base.req.status = CIOT_IFACE_REQ_STATUS_IDLE; self->iface.base.req.response_size++; #ifdef SOFTDEVICE_PRESENT #ifdef CIOT_CONFIG_FEATURE_TIMER - self->reset_scheduled = ciot_timer_get() + 5; + self->reset_scheduled = self->status.lifetime + 5; #else ciot_sys_rst(self); #endif @@ -136,7 +137,8 @@ static ciot_err_t ciot_sys_req_init_dfu(ciot_sys_t self) #if CIOT_CONFIG_FEATURE_DFU CIOT_ERROR_RETURN(sd_power_gpregret_clr(0, 0xffffffff)); CIOT_ERROR_RETURN(sd_power_gpregret_set(0, BOOTLOADER_DFU_START)); - return ciot_sys_req_restart(self); + nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_DFU); + return CIOT_OK; #else return CIOT_ERR_NOT_SUPPORTED; #endif @@ -150,7 +152,7 @@ ciot_err_t ciot_sys_task(ciot_sys_t self) self->status.free_memory = 0; #if CIOT_CONFIG_FEATURE_TIMER self->status.lifetime = ciot_timer_get(); - if (self->reset_scheduled > 0 && ciot_timer_compare(&self->reset_scheduled, 5)) + if (self->reset_scheduled) { ciot_sys_rst(self); } From 4536d5426604f37ad4f999e200c65550a2069c63 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:40:33 -0300 Subject: [PATCH 15/46] HBE-163 refact: refact uart instance selection --- src/nrf/ciot_uart.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/nrf/ciot_uart.c b/src/nrf/ciot_uart.c index 8312491..ec54035 100644 --- a/src/nrf/ciot_uart.c +++ b/src/nrf/ciot_uart.c @@ -95,16 +95,16 @@ ciot_err_t ciot_uart_start(ciot_uart_t self, ciot_uart_cfg_t *cfg) #if UART0_ENABLED case 0: { - nrf_drv_uart_t uart_inst = NRF_DRV_UART_INSTANCE(0); - self->handle = uart_inst; + static nrf_drv_uart_t uart_inst0 = NRF_DRV_UART_INSTANCE(0); + self->handle = uart_inst0; break; } #endif #if UART1_ENABLED case 1: { - nrf_drv_uart_t uart_inst = NRF_DRV_UART_INSTANCE(1); - self->handle = uart_inst; + static nrf_drv_uart_t uart_inst1 = NRF_DRV_UART_INSTANCE(1); + self->handle = uart_inst1; break; } #endif @@ -114,7 +114,6 @@ ciot_err_t ciot_uart_start(ciot_uart_t self, ciot_uart_cfg_t *cfg) err_code = nrf_drv_uart_init(&self->handle, &config, ciot_uart_event_handler); VERIFY_SUCCESS(err_code); - // self->fifo.rx_ovf = false; if (self->uart.cfg.rx_pin != UART_PIN_DISCONNECTED) { From e7f44d7effa1a883bb958ec30fa54ba14ac02891 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 27 Apr 2024 08:40:56 -0300 Subject: [PATCH 16/46] HBE-163 fix: set uart bridge mode --- src/win/ciot_uart.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/win/ciot_uart.c b/src/win/ciot_uart.c index adbd033..932a287 100644 --- a/src/win/ciot_uart.c +++ b/src/win/ciot_uart.c @@ -132,6 +132,7 @@ ciot_err_t ciot_uart_send_bytes(ciot_iface_t *iface, uint8_t *bytes, int size) ciot_err_t ciot_uart_set_bridge_mode(ciot_uart_t self, bool mode) { CIOT_NULL_CHECK(self); + self->uart.cfg.bridge_mode = mode; return ciot_s_set_bridge_mode(self->uart.s, mode); } From ac13eb23f937c776fbe676cc56a7a02d7f905357 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:47:13 -0300 Subject: [PATCH 17/46] HBE-163 refact: renamed enum member --- include/ciot_nrf_dfu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ciot_nrf_dfu.h b/include/ciot_nrf_dfu.h index 1f61bda..bd9930c 100644 --- a/include/ciot_nrf_dfu.h +++ b/include/ciot_nrf_dfu.h @@ -79,7 +79,7 @@ typedef enum ciot_nrf_dfu_state { CIOT_NRF_DFU_STATE_ERROR = -1, CIOT_NRF_DFU_STATE_IDLE, - CIOT_NRF_DFU_STATE_SEND_PING_RESP, + CIOT_NRF_DFU_STATE_SEND_PING, CIOT_NRF_DFU_STATE_WAITING_PING_RESP, CIOT_NRF_DFU_STATE_CREATE_OBJECT, CIOT_NRF_DFU_STATE_WAITING_CREATE_OBJ, From 7ba3635f0ca16d171320e3db3fa9d98cdfb93e2b Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:47:32 -0300 Subject: [PATCH 18/46] HBE-163 refact: enable hex logger --- src/common/ciot_iface.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/common/ciot_iface.c b/src/common/ciot_iface.c index d45ed91..993a5f1 100644 --- a/src/common/ciot_iface.c +++ b/src/common/ciot_iface.c @@ -82,9 +82,7 @@ ciot_err_t ciot_iface_send_data(ciot_iface_t *self, void *data, int size) CIOT_NULL_CHECK(data); CIOT_NULL_CHECK(self->base.ptr); CIOT_NULL_CHECK(self->base.send_data); - #ifdef CIOT_LOG_HEX_ENABLED - CIOT_LOG_BUFFER_HEX(TAG, data, size); - #endif //CIOT_LOG_HEX_ENABLED + CIOT_LOG_HEX(TAG, data, size); return self->base.send_data(self->base.ptr, data, size); } From 93e90c9d33981db57cda664591d49111c2931350 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:47:58 -0300 Subject: [PATCH 19/46] HBE-163 feat: implement ciot_nrf_dfu_process_req --- src/common/ciot_nrf_dfu.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 15e5659..529f480 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -144,7 +144,22 @@ ciot_err_t ciot_nrf_dfu_stop(ciot_dfu_t self) ciot_err_t ciot_nrf_dfu_process_req(ciot_dfu_t self, ciot_dfu_req_t *req) { - return CIOT_ERR_NOT_IMPLEMENTED; + CIOT_NULL_CHECK(self); + CIOT_NULL_CHECK(req); + + switch (req->type) + { + case CIOT_DFU_REQ_SEND_FIRMWARE: + CIOT_LOGI(TAG, "CIOT_DFU_REQ_SEND_FIRMWARE"); + self->iface.base.req.response_size = CIOT_MSG_HEADER_SIZE + sizeof(req->type); + self->iface.base.req.status = CIOT_IFACE_REQ_STATUS_IDLE; + return ciot_nrf_dfu_send_firmware(self); + default: + CIOT_LOGI(TAG, "CIOT_ERR_INVALID_TYPE"); + return CIOT_ERR_INVALID_TYPE; + } + + return CIOT_OK; } ciot_err_t ciot_nrf_dfu_send_data(ciot_dfu_t self, uint8_t *data, int size) From 2112536c33793b47e2b85eb6ab0f32dd3ea5dcf1 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:48:32 -0300 Subject: [PATCH 20/46] HBE-163 feat: add send ping retries --- src/common/ciot_nrf_dfu.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 529f480..9ef378b 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -371,6 +371,17 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 return CIOT_OK; } + if(self->state == CIOT_NRF_DFU_STATE_WAITING_PING_RESP && + data[0] == CIOT_NRF_DFU_OP_RESPONSE && + data[2] == CIOT_NRF_DFU_RES_CODE_OP_CODE_NOT_SUPPORTED && + !self->ping_refused) + { + CIOT_LOGI(TAG, "First ping refused. Trying again..."); + self->state = CIOT_NRF_DFU_STATE_SEND_PING; + self->ping_refused = true; + return CIOT_OK; + } + // Response Create Success [x60 x01 x01] if(self->state == CIOT_NRF_DFU_STATE_WAITING_CREATE_OBJ && data[0] == CIOT_NRF_DFU_OP_RESPONSE && From f9069217bbfde02cd1220ddc96b4d1b766aa06e1 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:49:01 -0300 Subject: [PATCH 21/46] HBE-163 fix: fix encoded_slip_packet size --- src/common/ciot_nrf_dfu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 9ef378b..d35501c 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -530,8 +530,8 @@ static ciot_err_t ciot_nrf_dfu_event_handler(ciot_iface_t *sender, ciot_iface_ev static ciot_err_t ciot_nrf_dfu_slip_encode_and_send(ciot_dfu_t self, uint8_t *data, uint32_t len) { - uint8_t encoded_slip_packet[CIOT_NRF_DFU_MAX_DFU_PKT_LEN_UART] = {0}; - uint32_t encoded_slip_packet_len; + uint8_t encoded_slip_packet[CIOT_NRF_DFU_MAX_DFU_PKT_LEN_UART * 2] = {0}; + uint32_t encoded_slip_packet_len = 0; ciot_slip_encode(encoded_slip_packet, data, len, &encoded_slip_packet_len); return ciot_iface_send_data(self->cfg.iface, encoded_slip_packet, encoded_slip_packet_len); } From 67f1667b271ebdbef728b55be5edeeb4c76c9fd6 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:49:32 -0300 Subject: [PATCH 22/46] HBE-163 refact: logger changes --- src/common/ciot_nrf_dfu.c | 60 ++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index d35501c..aa9fd4d 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -24,7 +24,7 @@ #define MAX_OBJECT_SIZE 4096 #define PING_ID 0x01 #define TIMEOUT_RESET 0 -#define PKT_SET_PRN_PARAM_LEN (1) /**< Length (in bytes) of the parameters for Set Packet Receipt Notification request. */ +#define PKT_SET_PRN_PARAM_LEN (3) /**< Length (in bytes) of the parameters for Set Packet Receipt Notification request. */ typedef enum ciot_nrf_dfu_obj { @@ -78,6 +78,7 @@ struct ciot_dfu uint16_t data_transferred; ciot_nrf_dfu_object_t object; + bool ping_refused; bool cache_bridge_mode; void *cache_event_args; ciot_iface_event_handler_t *cache_event_handler; @@ -202,7 +203,7 @@ ciot_err_t ciot_nrf_dfu_send_firmware(ciot_dfu_t self) self->cache_event_args = self->cfg.iface->event_args; self->cache_event_handler = self->cfg.iface->event_handler; ciot_iface_register_event(self->cfg.iface, ciot_nrf_dfu_event_handler, self); - self->state = CIOT_NRF_DFU_STATE_SEND_PING_RESP; + self->state = CIOT_NRF_DFU_STATE_SEND_PING; return CIOT_OK; } @@ -250,6 +251,7 @@ ciot_nrf_dfu_state_t ciot_nrf_dfu_state(ciot_dfu_t self) static ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self) { + CIOT_LOGI(TAG, "Starting bootloader"); ciot_msg_t msg = { .type = CIOT_MSG_TYPE_REQUEST, .iface.id = self->cfg.target_sys_iface_id, @@ -264,7 +266,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) CIOT_NULL_CHECK(self); // Send Ping [x09 x01] - if(self->state == CIOT_NRF_DFU_STATE_SEND_PING_RESP) + if(self->state == CIOT_NRF_DFU_STATE_SEND_PING) { CIOT_LOGI(TAG, "Send ping"); self->data[0] = CIOT_NRF_DFU_OP_PING; @@ -277,7 +279,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) // Create command: size [x01 x01 xXXXXXXXX] if(self->state == CIOT_NRF_DFU_STATE_CREATE_OBJECT) { - CIOT_LOGD(TAG, "Create command"); + CIOT_LOGI(TAG, "Create command"); int32_t data_remaining = self->object.packet->size - self->data_transferred; self->object.remaining = data_remaining >= MAX_OBJECT_SIZE ? MAX_OBJECT_SIZE : data_remaining; self->data[0] = CIOT_NRF_DFU_OP_OBJECT_CREATE; @@ -303,12 +305,13 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) { uint8_t write_opcode[] = { CIOT_NRF_DFU_OP_OBJECT_WRITE }; ciot_iface_send_data(self->cfg.iface, &write_opcode, 1); - CIOT_LOGI(TAG, "Writing %d object [%d / %ld]", self->object.packet->type, self->data_transferred, self->object.packet->size); + CIOT_LOGI(TAG, "Item %d writing %d of object [%d / %ld]", self->object.packet->type, bytes_to_write, self->data_transferred, self->object.packet->size); } ciot_err_t err = ciot_nrf_dfu_send_data(self, &self->object.packet->data[self->data_transferred], bytes_to_write); if(err != CIOT_OK) { + CIOT_LOGE(TAG, "Error sending data (0x%x)", err); self->state = CIOT_NRF_DFU_STATE_ERROR; return err; } @@ -331,7 +334,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) // Calculate CRC [x03] if(self->state == CIOT_NRF_DFU_STATE_REQUEST_CRC) { - CIOT_LOGD(TAG, "Calculate CRC"); + CIOT_LOGI(TAG, "Request CRC"); self->data[0] = CIOT_NRF_DFU_OP_CRC_GET; self->state = CIOT_NRF_DFU_STATE_WAITING_CRC; ciot_nrf_dfu_timeout_check(TIMEOUT_RESET); @@ -341,7 +344,7 @@ static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) // Execute command [0x04] if(self->state == CIOT_NRF_DFU_STATE_REQUEST_EXECUTE) { - CIOT_LOGD(TAG, "Execute command"); + CIOT_LOGI(TAG, "Execute command"); self->data[0] = CIOT_NRF_DFU_OP_OBJECT_EXECUTE; self->state = CIOT_NRF_DFU_STATE_WAITING_EXECUTE; ciot_nrf_dfu_timeout_check(TIMEOUT_RESET); @@ -365,7 +368,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_PING && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGD(TAG, "Ping response sucess"); + CIOT_LOGI(TAG, "Ping response sucess"); self->state = CIOT_NRF_DFU_STATE_CREATE_OBJECT; ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_IN_PROGRESS); return CIOT_OK; @@ -388,7 +391,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_OBJECT_CREATE && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGD(TAG, "Response create success"); + CIOT_LOGI(TAG, "Response create success"); self->state = CIOT_NRF_DFU_STATE_WRITE_DFU_PACKAGE; return CIOT_OK; } @@ -400,25 +403,26 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_CRC_GET && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { + CIOT_LOGI(TAG, "CRC received"); self->crc.received = data[len-1] << 24; self->crc.received += data[len-2] << 16; self->crc.received += data[len-3] << 8; self->crc.received += data[len-4]; if(self->crc.received != self->crc.expected) { - CIOT_LOGE(TAG, "CRC error: expected = %lu, received = %lu", self->crc.expected, self->crc.received); + CIOT_LOGI(TAG, "CRC error: expected = %lu, received = %lu", self->crc.expected, self->crc.received); self->state = CIOT_NRF_DFU_STATE_ERROR; ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_ERROR); return CIOT_ERR_CHECKSUM; } if(self->object.remaining == 0) { - CIOT_LOGD(TAG, "Calculate CRC Sucess: offset CRC32"); + CIOT_LOGI(TAG, "Calculate CRC Sucess: offset CRC32"); self->state = CIOT_NRF_DFU_STATE_REQUEST_EXECUTE; } else { - CIOT_LOGD(TAG, "Response PRN Sucess: offset CRC32"); + CIOT_LOGI(TAG, "Response PRN Sucess: offset CRC32"); self->state = CIOT_NRF_DFU_STATE_WRITE_DFU_PACKAGE; } return CIOT_OK; @@ -430,7 +434,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 data[1] == CIOT_NRF_DFU_OP_OBJECT_EXECUTE && data[2] == CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGD(TAG, "Response Execute Success"); + CIOT_LOGI(TAG, "Response Execute Success"); if(self->object.packet->transferred) { if(self->object.packet->type == CIOT_NRF_DFU_PACKET_TYPE_INIT) @@ -465,19 +469,24 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 return CIOT_OK; } - CIOT_LOGE(TAG, "DFU failed at state %d with response code 0x%x", self->state, data[2]); - if(data[2] == CIOT_NRF_DFU_RES_CODE_EXT_ERROR) + if(data[2] != CIOT_NRF_DFU_RES_CODE_SUCCESS) { - CIOT_LOGE(TAG, "DFU extended error code: 0x%x", data[3]); - self->status.error = data[3]; - } - if(self->state != CIOT_NRF_DFU_STATE_ERROR) - { - ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_ERROR); + CIOT_LOGE(TAG, "DFU failed at state %d with response code 0x%x", self->state, data[2]); + if(data[2] == CIOT_NRF_DFU_RES_CODE_EXT_ERROR) + { + CIOT_LOGE(TAG, "DFU extended error code: 0x%x", data[3]); + self->status.error = data[3]; + } + if(self->state != CIOT_NRF_DFU_STATE_ERROR) + { + ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_ERROR); + } + self->state = CIOT_NRF_DFU_STATE_ERROR; + + return CIOT_FAIL; } - self->state = CIOT_NRF_DFU_STATE_ERROR; - return CIOT_FAIL; + return CIOT_OK; } static ciot_err_t ciot_nrf_dfu_set_state(ciot_dfu_t self, ciot_dfu_state_t state) @@ -504,16 +513,20 @@ static ciot_err_t ciot_nrf_dfu_set_state(ciot_dfu_t self, ciot_dfu_state_t state static ciot_err_t ciot_nrf_dfu_event_handler(ciot_iface_t *sender, ciot_iface_event_t *event, void *args) { + CIOT_LOGD(TAG, "Event received %s", ciot_iface_event_to_str(event)); + ciot_dfu_t self = (ciot_dfu_t)args; if(event->type == CIOT_IFACE_EVENT_DATA) { if(sender->info.type == CIOT_IFACE_TYPE_UART) { + CIOT_LOGD(TAG, "Decoding data"); for (size_t i = 0; i < event->size; i++) { if(ciot_slip_decode_add_byte(&self->slip.handle, event->data->payload[i]) == CIOT_OK) { + CIOT_LOGD(TAG, "Processing message"); ciot_nrf_dfu_process_data(self, self->slip.buffer, self->slip.handle.current_index); self->slip.handle.current_index = 0; } @@ -533,6 +546,7 @@ static ciot_err_t ciot_nrf_dfu_slip_encode_and_send(ciot_dfu_t self, uint8_t *da uint8_t encoded_slip_packet[CIOT_NRF_DFU_MAX_DFU_PKT_LEN_UART * 2] = {0}; uint32_t encoded_slip_packet_len = 0; ciot_slip_encode(encoded_slip_packet, data, len, &encoded_slip_packet_len); + CIOT_LOGD(TAG, "Sending encoded packet %lu", encoded_slip_packet_len); return ciot_iface_send_data(self->cfg.iface, encoded_slip_packet, encoded_slip_packet_len); } From 6c34fd4d60341f778e218c275f90f72865de2b63 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:49:43 -0300 Subject: [PATCH 23/46] HBE-163 refact: added logs --- src/common/ciot_s.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/common/ciot_s.c b/src/common/ciot_s.c index 262b65f..2140216 100644 --- a/src/common/ciot_s.c +++ b/src/common/ciot_s.c @@ -34,6 +34,8 @@ struct ciot_s #endif }; +static const char *TAG = "ciot_s"; + ciot_s_t ciot_s_new(ciot_s_cfg_t *cfg) { ciot_s_t s = calloc(1, sizeof(struct ciot_s)); @@ -46,6 +48,7 @@ ciot_err_t ciot_s_send(ciot_s_t self, uint8_t *data, int size) CIOT_NULL_CHECK(self); CIOT_NULL_CHECK(data); CIOT_NULL_CHECK(self->cfg.send_bytes); + CIOT_LOGD(TAG, "Senging data"); if(self->cfg.bridge_mode) { @@ -62,14 +65,16 @@ ciot_err_t ciot_s_send(ciot_s_t self, uint8_t *data, int size) self->cfg.send_bytes(self->cfg.iface, data, size); self->cfg.send_bytes(self->cfg.iface, &end, 1); - CIOT_LOG_BUFFER_HEX("ciot_s", header, sizeof(header)); - CIOT_LOG_BUFFER_HEX("ciot_s", data, sizeof(size)); - CIOT_LOG_BUFFER_HEX("ciot_s", &end, 1); + CIOT_LOG_BUFFER_HEX(TAG, header, sizeof(header)); + CIOT_LOG_BUFFER_HEX(TAG, data, sizeof(size)); + CIOT_LOG_BUFFER_HEX(TAG, &end, 1); return CIOT_OK; } ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) { + CIOT_LOGD(TAG, "Processing byte"); + #if CIOT_CONFIG_FEATURE_TIMER self->timer = ciot_timer_get() + CIOT_S_TIMEOUT; #endif @@ -78,6 +83,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) { if(self->cfg.on_message_cb != NULL) { + CIOT_LOGD(TAG, "Bridge mode enabled. Skipping decode process"); self->cfg.on_message_cb(self->cfg.iface, &byte, 1); } return CIOT_OK; @@ -85,6 +91,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) if(self->status == CIOT_S_STATUS_TIMEOUT) { + CIOT_LOGD(TAG, "Timeout detected"); self->idx = 0; self->status = CIOT_S_STATUS_WAIT_START_DATA; } @@ -95,6 +102,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) } else { + CIOT_LOGD(TAG, "Overflow detected"); self->idx = 0; self->status = CIOT_S_STATUS_WAIT_START_DATA; return CIOT_ERR_OVERFLOW; @@ -103,6 +111,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) switch (self->status) { case CIOT_S_STATUS_WAIT_START_DATA: + CIOT_LOGD(TAG, "CIOT_S_STATUS_WAIT_START_DATA"); self->idx = 0; self->len = 0; if(byte == CIOT_S_START_CH) @@ -112,6 +121,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) } break; case CIOT_S_STATUS_WAIT_SIZE: + CIOT_LOGD(TAG, "CIOT_S_STATUS_WAIT_SIZE"); self->len++; if (self->len == CIOT_S_LENGHT_SIZE) { @@ -120,6 +130,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) } break; case CIOT_S_STATUS_READ_DATA: + CIOT_LOGD(TAG, "CIOT_S_STATUS_READ_DATA"); if(byte == CIOT_S_END_CH && self->idx - CIOT_S_HEADER_SIZE == self->len) { if(self->cfg.on_message_cb != NULL) @@ -149,6 +160,7 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) ciot_err_t ciot_s_set_bridge_mode(ciot_s_t self, bool mode) { CIOT_NULL_CHECK(self); + CIOT_LOGD(TAG, "Set bridge mode to %d", mode); self->cfg.bridge_mode = mode; return CIOT_OK; } From 2993581d80aab3ace0710640d251be357a80121e Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:49:58 -0300 Subject: [PATCH 24/46] HBE-163 refact: added logs --- src/common/ciot_slip.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/ciot_slip.c b/src/common/ciot_slip.c index dc1ad84..e15e04a 100644 --- a/src/common/ciot_slip.c +++ b/src/common/ciot_slip.c @@ -45,15 +45,19 @@ #define SLIP_BYTE_ESC_END 0xdc /* ESC ESC_END means END data byte */ #define SLIP_BYTE_ESC_ESC 0xdd /* ESC ESC_ESC means ESC data byte */ +static const char *TAG = "ciot_slip"; + int ciot_slip_encode(uint8_t * p_output, uint8_t * p_input, uint32_t input_length, uint32_t * p_output_buffer_length) { + CIOT_LOGD(TAG, "Encoding %lu bytes", input_length); + if (p_output == NULL || p_input == NULL || p_output_buffer_length == NULL) { return CIOT_ERR_NULL_ARG; } *p_output_buffer_length = 0; - uint32_t input_index; + uint32_t input_index = 0; for (input_index = 0; input_index < input_length; input_index++) { @@ -75,6 +79,8 @@ int ciot_slip_encode(uint8_t * p_output, uint8_t * p_input, uint32_t input_leng } p_output[(*p_output_buffer_length)++] = SLIP_BYTE_END; + CIOT_LOGD(TAG, "Encoded to %lu bytes", *p_output_buffer_length); + return CIOT_OK; } From 09703570bbdb15026f0eb63c1e37135c2e2139fb Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:50:20 -0300 Subject: [PATCH 25/46] HBE-163 feat: add not supported error msg --- src/esp32/ciot_sys.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/esp32/ciot_sys.c b/src/esp32/ciot_sys.c index a255a98..fa1c82a 100644 --- a/src/esp32/ciot_sys.c +++ b/src/esp32/ciot_sys.c @@ -88,6 +88,8 @@ ciot_err_t ciot_sys_process_req(ciot_sys_t self, ciot_sys_req_t *req) ciot_sys_rst(self); #endif return CIOT_OK; + default: + return CIOT_ERR_NOT_SUPPORTED; } return CIOT_ERR_INVALID_TYPE; From f670cbf06bd8f5b88e63f12db99772ab3c39deb5 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Wed, 8 May 2024 11:50:46 -0300 Subject: [PATCH 26/46] HBE-163 fix: fix uart tasks management --- src/esp32/ciot_uart.c | 206 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 202 insertions(+), 4 deletions(-) diff --git a/src/esp32/ciot_uart.c b/src/esp32/ciot_uart.c index 601a105..c7bda2a 100644 --- a/src/esp32/ciot_uart.c +++ b/src/esp32/ciot_uart.c @@ -11,7 +11,7 @@ #include "ciot_uart.h" -#if CIOT_CONFIG_FEATURE_UART && defined(CIOT_TARGET_ESP32) +#if CIOT_CONFIG_FEATURE_UART && defined(true) #include #include @@ -30,7 +30,9 @@ struct ciot_uart uart_event_t event; }; -static void ciot_uart_event_handler(void *args); +static void ciot_uart_event_handler_0(void *args); +static void ciot_uart_event_handler_1(void *args); +static void ciot_uart_event_handler_2(void *args); ciot_err_t ciot_uart_task_internal(ciot_iface_t *iface, ciot_s_t ciot_s); ciot_err_t ciot_uart_on_message(ciot_iface_t *iface, uint8_t *data, int size); @@ -65,7 +67,9 @@ ciot_err_t ciot_uart_start(ciot_uart_t self, ciot_uart_cfg_t *cfg) { CIOT_NULL_CHECK(self); CIOT_NULL_CHECK(cfg); + CIOT_LOGI(TAG, "Starging uart"); self->uart.cfg = *cfg; + int num = self->uart.cfg.num; const uart_config_t uart_cfg = { .flow_ctrl = self->uart.cfg.flow_control, @@ -75,17 +79,23 @@ ciot_err_t ciot_uart_start(ciot_uart_t self, ciot_uart_cfg_t *cfg) .stop_bits = UART_STOP_BITS_1, .source_clk = UART_SCLK_DEFAULT, }; + ciot_s_set_bridge_mode(self->uart.s, self->uart.cfg.bridge_mode); ESP_ERROR_CHECK(uart_param_config(num, &uart_cfg)); ESP_ERROR_CHECK(uart_set_pin(num, self->uart.cfg.tx_pin, self->uart.cfg.rx_pin, self->uart.cfg.rts_pin, self->uart.cfg.cts_pin)); ESP_ERROR_CHECK(uart_driver_install(num, CIOT_CONFIG_UART_RX_BUF_SIZE, CIOT_CONFIG_UART_TX_BUF_SIZE, CIOT_CONFIG_UART_QUEUE_SIZE, &self->queue, 0)); - xTaskCreatePinnedToCore(ciot_uart_event_handler, "ciot_uart_event_handler", CIOT_CONFIG_UART_TASK_SIZE, self, CIOT_CONFIG_UART_TASK_PRIO, &self->task, CIOT_CONFIG_UART_TASK_CORE); + + if(num == 0) xTaskCreatePinnedToCore(ciot_uart_event_handler_0, "ciot_uart_task_0", CIOT_CONFIG_UART_TASK_SIZE, self, CIOT_CONFIG_UART_TASK_PRIO, &self->task, CIOT_CONFIG_UART_TASK_CORE); + if(num == 1) xTaskCreatePinnedToCore(ciot_uart_event_handler_1, "ciot_uart_task_1", CIOT_CONFIG_UART_TASK_SIZE, self, CIOT_CONFIG_UART_TASK_PRIO, &self->task, CIOT_CONFIG_UART_TASK_CORE); + if(num == 2) xTaskCreatePinnedToCore(ciot_uart_event_handler_2, "ciot_uart_task_2", CIOT_CONFIG_UART_TASK_SIZE, self, CIOT_CONFIG_UART_TASK_PRIO, &self->task, CIOT_CONFIG_UART_TASK_CORE); + return CIOT_OK; } ciot_err_t ciot_uart_stop(ciot_uart_t self) { CIOT_NULL_CHECK(self); + CIOT_LOGI(TAG, "Stopping uart"); uart_driver_delete(self->uart.cfg.num); vTaskDelete(self->task); return CIOT_OK; @@ -110,6 +120,7 @@ ciot_err_t ciot_uart_send_bytes(ciot_iface_t *iface, uint8_t *bytes, int size) ciot_err_t ciot_uart_set_bridge_mode(ciot_uart_t self, bool mode) { CIOT_NULL_CHECK(self); + self->uart.cfg.bridge_mode = mode; return ciot_s_set_bridge_mode(self->uart.s, mode); } @@ -118,8 +129,194 @@ ciot_err_t ciot_uart_task(ciot_uart_t self) return ciot_uart_task_internal(&self->uart.iface, self->uart.s); } -static void ciot_uart_event_handler(void *args) +static void ciot_uart_event_handler_0(void *args) { + CIOT_LOGI(TAG, "ciot_uart_event_handler_0 starting..."); + + ciot_uart_t self = (ciot_uart_t)args; + + if (self == NULL) return; + + ciot_iface_event_t iface_event = {0}; + ciot_uart_status_msg_t status_msg = {0}; + ciot_msg_error_t error_msg = {0}; + + status_msg.header.iface = self->uart.iface.info; + iface_event.size = sizeof(status_msg); + + while (true) + { + if(xQueueReceive(self->queue, (void*)&self->event, portMAX_DELAY)) + { + switch (self->event.type) + { + case UART_DATA: + ESP_LOGD(TAG, "UART_DATA[0] size:%d", self->event.size); + while (self->event.size) + { + uint8_t byte; + uart_read_bytes(self->uart.cfg.num, &byte, 1, portMAX_DELAY); + self->event.size--; + ciot_err_t err = ciot_s_process_byte(self->uart.s, byte); + if(err != CIOT_OK) { + ESP_LOGE(TAG, "Process byte error: %d", err); + } + } + iface_event.type = CIOT_IFACE_EVENT_INTERNAL; + break; + case UART_FIFO_OVF: + ESP_LOGE(TAG, "UART_FIFO_OVF"); + self->uart.status.error = CIOT_UART_ERR_FIFO_OVERFLOW; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_FIFO_OVERFLOW; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + case UART_BUFFER_FULL: + ESP_LOGE(TAG, "UART_BUFFER_FULL: %d", self->event.size); + self->uart.status.error = CIOT_UART_ERR_BUFFER_FULL; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_BUFFER_FULL; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + case UART_BREAK: + ESP_LOGE(TAG, "UART_BREAK"); + self->uart.status.error = CIOT_UART_ERR_BREAK; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_BREAK; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + case UART_FRAME_ERR: + ESP_LOGE(TAG, "UART_FRAME_ERR"); + self->uart.status.error = CIOT_UART_ERR_FRAME; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_FRAME; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + default: + ESP_LOGW(TAG, "unhandled event: %d", self->event.type); + break; + } + + if(iface_event.type != CIOT_IFACE_EVENT_INTERNAL && self->uart.iface.event_handler) + { + self->uart.iface.event_handler(&self->uart.iface, &iface_event, self->uart.iface.event_args); + } + } + } +} + +static void ciot_uart_event_handler_1(void *args) +{ + CIOT_LOGI(TAG, "ciot_uart_event_handler_1 starting..."); + + ciot_uart_t self = (ciot_uart_t)args; + + if (self == NULL) return; + + ciot_iface_event_t iface_event = {0}; + ciot_uart_status_msg_t status_msg = {0}; + ciot_msg_error_t error_msg = {0}; + + status_msg.header.iface = self->uart.iface.info; + iface_event.size = sizeof(status_msg); + + while (true) + { + if(xQueueReceive(self->queue, (void*)&self->event, portMAX_DELAY)) + { + switch (self->event.type) + { + case UART_DATA: + ESP_LOGD(TAG, "UART_DATA[1]"); + while (self->event.size) + { + uint8_t byte; + uart_read_bytes(self->uart.cfg.num, &byte, 1, portMAX_DELAY); + self->event.size--; + ciot_err_t err = ciot_s_process_byte(self->uart.s, byte); + if(err != CIOT_OK) { + ESP_LOGE(TAG, "Process byte error: %d", err); + } + } + iface_event.type = CIOT_IFACE_EVENT_INTERNAL; + break; + case UART_FIFO_OVF: + ESP_LOGE(TAG, "UART_FIFO_OVF"); + self->uart.status.error = CIOT_UART_ERR_FIFO_OVERFLOW; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_FIFO_OVERFLOW; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + case UART_BUFFER_FULL: + ESP_LOGE(TAG, "UART_BUFFER_FULL: %d", self->event.size); + self->uart.status.error = CIOT_UART_ERR_BUFFER_FULL; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_BUFFER_FULL; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + case UART_BREAK: + ESP_LOGE(TAG, "UART_BREAK"); + self->uart.status.error = CIOT_UART_ERR_BREAK; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_BREAK; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + case UART_FRAME_ERR: + ESP_LOGE(TAG, "UART_FRAME_ERR"); + self->uart.status.error = CIOT_UART_ERR_FRAME; + self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; + iface_event.data = (ciot_iface_event_data_u*)&error_msg; + error_msg.msg_type = CIOT_MSG_TYPE_EVENT; + error_msg.code = CIOT_UART_ERR_FRAME; + iface_event.type = CIOT_IFACE_EVENT_ERROR; + uart_flush_input(self->uart.cfg.num); + xQueueReset(self->queue); + break; + default: + ESP_LOGW(TAG, "unhandled event: %d", self->event.type); + break; + } + + if(iface_event.type != CIOT_IFACE_EVENT_INTERNAL && self->uart.iface.event_handler) + { + self->uart.iface.event_handler(&self->uart.iface, &iface_event, self->uart.iface.event_args); + } + } + } +} + +static void ciot_uart_event_handler_2(void *args) +{ + CIOT_LOGI(TAG, "ciot_uart_event_handler_2 starting..."); + ciot_uart_t self = (ciot_uart_t)args; if (self == NULL) return; @@ -138,6 +335,7 @@ static void ciot_uart_event_handler(void *args) switch (self->event.type) { case UART_DATA: + ESP_LOGD(TAG, "UART_DATA[2]"); while (self->event.size) { uint8_t byte; From 4eacb08320820d821a5310b1e319dc94fc97b175 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:40:18 -0300 Subject: [PATCH 27/46] HBE-146 feat: removed target_sys_iface_id field --- include/ciot_nrf_dfu.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/ciot_nrf_dfu.h b/include/ciot_nrf_dfu.h index bd9930c..0864537 100644 --- a/include/ciot_nrf_dfu.h +++ b/include/ciot_nrf_dfu.h @@ -106,7 +106,6 @@ typedef struct ciot_nrf_dfu_cfg ciot_nrf_dfu_packet_t app_image; uint32_t max_package_len; ciot_iface_t *iface; - int target_sys_iface_id; } ciot_nrf_dfu_cfg_t; ciot_dfu_t ciot_nrf_dfu_new(ciot_nrf_dfu_cfg_t *cfg); From 8cdb93b041aa5b414c59aa024e45be54b8138164 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:40:37 -0300 Subject: [PATCH 28/46] HBE-146 feat: added ciot_nrf_dfu_start_bootloader method --- include/ciot_nrf_dfu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/ciot_nrf_dfu.h b/include/ciot_nrf_dfu.h index 0864537..af16306 100644 --- a/include/ciot_nrf_dfu.h +++ b/include/ciot_nrf_dfu.h @@ -117,6 +117,7 @@ ciot_err_t ciot_nrf_dfu_send_data(ciot_dfu_t self, uint8_t *data, int size); ciot_err_t ciot_nrf_dfu_task(ciot_dfu_t self); ciot_err_t ciot_nrf_dfu_send_firmware(ciot_dfu_t self); ciot_err_t ciot_nrf_dfu_read_file(ciot_nrf_dfu_packet_t *object, const char *name); +ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self, ciot_iface_t *iface, int sys_id); ciot_nrf_dfu_state_t ciot_nrf_dfu_state(ciot_dfu_t self); #endif //!__CIOT_NRF_DFU__H__ \ No newline at end of file From 4002dbb5744316d7b0e10c073e39c74aa7dd6b29 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:41:09 -0300 Subject: [PATCH 29/46] HBE-146 feat: implement dfu stop --- src/common/ciot_nrf_dfu.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index aa9fd4d..0dd848d 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -138,6 +138,12 @@ ciot_err_t ciot_nrf_dfu_stop(ciot_dfu_t self) { ciot_uart_set_bridge_mode((ciot_uart_t)self->cfg.iface, false); } + self->cfg.iface->base.req.status = CIOT_IFACE_REQ_STATUS_IDLE; + self->prn_counter = 0; + self->data_transferred = 0; + self->crc.expected = 0; + self->crc.received = 0; + self->object.packet = &self->cfg.init_packet; self->cfg.iface->event_args = self->cache_event_args; self->cfg.iface->event_handler = self->cache_event_handler; return CIOT_OK; From ddccd5b5bc895fb0613ed0ecce02ddb47dd3ff2a Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:41:44 -0300 Subject: [PATCH 30/46] HBE-146 feat: added for loop to find initial byte --- src/common/ciot_nrf_dfu.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 0dd848d..b9a4d58 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -368,6 +368,23 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 self->status.code = data[2]; + for (size_t i = 0; i < len; i++) + { + if(data[i] == CIOT_NRF_DFU_OP_RESPONSE) + { + data = &data[i]; + break; + } + CIOT_LOGD(TAG, "Invalid initial byte: %0x", data[i]); + } + + // Invlalid message + if(data[0] != CIOT_NRF_DFU_OP_RESPONSE) + { + CIOT_LOGE(TAG, "Invalid msg"); + return CIOT_ERR_VALIDATION_FAILED; + } + // Ping Response Success [x60 x09 x01] or Opcode not supported [x60 x09 x03] if(self->state == CIOT_NRF_DFU_STATE_WAITING_PING_RESP && data[0] == CIOT_NRF_DFU_OP_RESPONSE && From 9a858cf5cbaab8b5386b98995cc87ffd6da869e2 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:42:23 -0300 Subject: [PATCH 31/46] HBE-146 refact: changed ciot_nrf_dfu_start_bootloader visibility --- src/common/ciot_nrf_dfu.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index b9a4d58..5d5cdd1 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -250,21 +250,23 @@ ciot_err_t ciot_nrf_dfu_read_file(ciot_nrf_dfu_packet_t *object, const char *nam return 0; } -ciot_nrf_dfu_state_t ciot_nrf_dfu_state(ciot_dfu_t self) -{ - return self->state; -} - -static ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self) +ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self, ciot_iface_t *iface, int sys_id) { CIOT_LOGI(TAG, "Starting bootloader"); ciot_msg_t msg = { .type = CIOT_MSG_TYPE_REQUEST, - .iface.id = self->cfg.target_sys_iface_id, + .iface.id = sys_id, .iface.type = CIOT_IFACE_TYPE_SYSTEM, .data.system.request.type = CIOT_SYS_REQ_INIT_DFU }; - return ciot_iface_send_req(self->cfg.iface, &msg, CIOT_MSG_HEADER_SIZE + 1); + ciot_err_t err = ciot_iface_send_req(iface, &msg, CIOT_MSG_HEADER_SIZE + 1); + iface->base.req.status = CIOT_IFACE_REQ_STATUS_IDLE; + return err; +} + +ciot_nrf_dfu_state_t ciot_nrf_dfu_state(ciot_dfu_t self) +{ + return self->state; } static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self) From 40093ca848dda2d64658339b95b8d744fa8a0a4e Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:42:46 -0300 Subject: [PATCH 32/46] HBE-146 feat: call stop when an error ocours --- src/common/ciot_nrf_dfu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 5d5cdd1..ba462ce 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -504,6 +504,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 } if(self->state != CIOT_NRF_DFU_STATE_ERROR) { + ciot_nrf_dfu_stop(self); ciot_nrf_dfu_set_state(self, CIOT_DFU_STATE_ERROR); } self->state = CIOT_NRF_DFU_STATE_ERROR; From 0dbac523da4c48ffa0e4279be3b999d7cb642261 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:43:10 -0300 Subject: [PATCH 33/46] HBE-146 refact: changed macro used to log buffer --- src/common/ciot_nrf_dfu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index ba462ce..6a2be1d 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -366,7 +366,7 @@ static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int3 { CIOT_NULL_CHECK(self); - CIOT_LOG_HEX(TAG, data, len); + CIOT_LOG_BUFFER_HEX(TAG, data, len); self->status.code = data[2]; From 857d9389cb43b821910823bd92ba1e97bbf1b284 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:43:23 -0300 Subject: [PATCH 34/46] HBE-146 doc: updated comment --- src/common/ciot_nrf_dfu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 6a2be1d..00243fb 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -24,7 +24,7 @@ #define MAX_OBJECT_SIZE 4096 #define PING_ID 0x01 #define TIMEOUT_RESET 0 -#define PKT_SET_PRN_PARAM_LEN (3) /**< Length (in bytes) of the parameters for Set Packet Receipt Notification request. */ +#define PKT_SET_PRN_PARAM_LEN (3) /**< Packet Receipt Notification request count. */ typedef enum ciot_nrf_dfu_obj { From 390a685bdb9d366237a2b6dfc04089687044b4ce Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:43:50 -0300 Subject: [PATCH 35/46] HBE-146 refact: unused static prototype removed --- src/common/ciot_nrf_dfu.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index 00243fb..a27b051 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -86,7 +86,6 @@ struct ciot_dfu static ciot_err_t ciot_nrf_dfu_set_state(ciot_dfu_t self, ciot_dfu_state_t state); static ciot_err_t ciot_nrf_dfu_event_handler(ciot_iface_t *sender, ciot_iface_event_t *event, void *args); -static ciot_err_t ciot_nrf_dfu_start_bootloader(ciot_dfu_t self); static ciot_err_t ciot_nrf_dfu_write(ciot_dfu_t self); static ciot_err_t ciot_nrf_dfu_process_data(ciot_dfu_t self, uint8_t *data, int32_t len); static ciot_err_t ciot_nrf_dfu_slip_encode_and_send(ciot_dfu_t self, uint8_t *data, uint32_t len); From 3e0b304f373e1af3f335fcf09c9a1cd7052393b3 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:44:16 -0300 Subject: [PATCH 36/46] HBE-146 feat: removed start bootloader request --- src/common/ciot_nrf_dfu.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/common/ciot_nrf_dfu.c b/src/common/ciot_nrf_dfu.c index a27b051..62868f5 100644 --- a/src/common/ciot_nrf_dfu.c +++ b/src/common/ciot_nrf_dfu.c @@ -200,7 +200,6 @@ ciot_err_t ciot_nrf_dfu_task(ciot_dfu_t self) ciot_err_t ciot_nrf_dfu_send_firmware(ciot_dfu_t self) { - ciot_nrf_dfu_start_bootloader(self); if(self->cfg.iface->info.type == CIOT_IFACE_TYPE_UART) { ciot_uart_set_bridge_mode((ciot_uart_t)self->cfg.iface, true); From 864f8fd50df62df9686de6cbe85a87c11b086279 Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Sat, 11 May 2024 10:45:07 -0300 Subject: [PATCH 37/46] HBE-146 refact: logger changes --- src/common/ciot_s.c | 8 +------- src/esp32/ciot_uart.c | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/common/ciot_s.c b/src/common/ciot_s.c index 2140216..f6f8998 100644 --- a/src/common/ciot_s.c +++ b/src/common/ciot_s.c @@ -66,15 +66,13 @@ ciot_err_t ciot_s_send(ciot_s_t self, uint8_t *data, int size) self->cfg.send_bytes(self->cfg.iface, &end, 1); CIOT_LOG_BUFFER_HEX(TAG, header, sizeof(header)); - CIOT_LOG_BUFFER_HEX(TAG, data, sizeof(size)); + CIOT_LOG_BUFFER_HEX(TAG, data, size); CIOT_LOG_BUFFER_HEX(TAG, &end, 1); return CIOT_OK; } ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) { - CIOT_LOGD(TAG, "Processing byte"); - #if CIOT_CONFIG_FEATURE_TIMER self->timer = ciot_timer_get() + CIOT_S_TIMEOUT; #endif @@ -83,7 +81,6 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) { if(self->cfg.on_message_cb != NULL) { - CIOT_LOGD(TAG, "Bridge mode enabled. Skipping decode process"); self->cfg.on_message_cb(self->cfg.iface, &byte, 1); } return CIOT_OK; @@ -111,7 +108,6 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) switch (self->status) { case CIOT_S_STATUS_WAIT_START_DATA: - CIOT_LOGD(TAG, "CIOT_S_STATUS_WAIT_START_DATA"); self->idx = 0; self->len = 0; if(byte == CIOT_S_START_CH) @@ -121,7 +117,6 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) } break; case CIOT_S_STATUS_WAIT_SIZE: - CIOT_LOGD(TAG, "CIOT_S_STATUS_WAIT_SIZE"); self->len++; if (self->len == CIOT_S_LENGHT_SIZE) { @@ -130,7 +125,6 @@ ciot_err_t ciot_s_process_byte(ciot_s_t self, uint8_t byte) } break; case CIOT_S_STATUS_READ_DATA: - CIOT_LOGD(TAG, "CIOT_S_STATUS_READ_DATA"); if(byte == CIOT_S_END_CH && self->idx - CIOT_S_HEADER_SIZE == self->len) { if(self->cfg.on_message_cb != NULL) diff --git a/src/esp32/ciot_uart.c b/src/esp32/ciot_uart.c index c7bda2a..9fbb69a 100644 --- a/src/esp32/ciot_uart.c +++ b/src/esp32/ciot_uart.c @@ -11,7 +11,7 @@ #include "ciot_uart.h" -#if CIOT_CONFIG_FEATURE_UART && defined(true) +#if CIOT_CONFIG_FEATURE_UART && defined(CIOT_TARGET_ESP32) #include #include @@ -67,7 +67,6 @@ ciot_err_t ciot_uart_start(ciot_uart_t self, ciot_uart_cfg_t *cfg) { CIOT_NULL_CHECK(self); CIOT_NULL_CHECK(cfg); - CIOT_LOGI(TAG, "Starging uart"); self->uart.cfg = *cfg; int num = self->uart.cfg.num; @@ -80,6 +79,7 @@ ciot_err_t ciot_uart_start(ciot_uart_t self, ciot_uart_cfg_t *cfg) .source_clk = UART_SCLK_DEFAULT, }; + CIOT_LOGI(TAG, "Starging uart %d", self->uart.cfg.num); ciot_s_set_bridge_mode(self->uart.s, self->uart.cfg.bridge_mode); ESP_ERROR_CHECK(uart_param_config(num, &uart_cfg)); ESP_ERROR_CHECK(uart_set_pin(num, self->uart.cfg.tx_pin, self->uart.cfg.rx_pin, self->uart.cfg.rts_pin, self->uart.cfg.cts_pin)); @@ -151,7 +151,7 @@ static void ciot_uart_event_handler_0(void *args) switch (self->event.type) { case UART_DATA: - ESP_LOGD(TAG, "UART_DATA[0] size:%d", self->event.size); + ESP_LOGI(TAG, "UART_DATA[%d] size:%d", self->uart.cfg.num, self->event.size); while (self->event.size) { uint8_t byte; @@ -165,7 +165,7 @@ static void ciot_uart_event_handler_0(void *args) iface_event.type = CIOT_IFACE_EVENT_INTERNAL; break; case UART_FIFO_OVF: - ESP_LOGE(TAG, "UART_FIFO_OVF"); + ESP_LOGE(TAG, "UART_FIFO_OVF[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_FIFO_OVERFLOW; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -176,7 +176,7 @@ static void ciot_uart_event_handler_0(void *args) xQueueReset(self->queue); break; case UART_BUFFER_FULL: - ESP_LOGE(TAG, "UART_BUFFER_FULL: %d", self->event.size); + ESP_LOGE(TAG, "UART_BUFFER_FULL[%d]: %d", self->uart.cfg.num, self->event.size); self->uart.status.error = CIOT_UART_ERR_BUFFER_FULL; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -187,7 +187,7 @@ static void ciot_uart_event_handler_0(void *args) xQueueReset(self->queue); break; case UART_BREAK: - ESP_LOGE(TAG, "UART_BREAK"); + ESP_LOGE(TAG, "UART_BREAK[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_BREAK; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -198,7 +198,7 @@ static void ciot_uart_event_handler_0(void *args) xQueueReset(self->queue); break; case UART_FRAME_ERR: - ESP_LOGE(TAG, "UART_FRAME_ERR"); + ESP_LOGE(TAG, "UART_FRAME_ERR[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_FRAME; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -243,7 +243,7 @@ static void ciot_uart_event_handler_1(void *args) switch (self->event.type) { case UART_DATA: - ESP_LOGD(TAG, "UART_DATA[1]"); + ESP_LOGI(TAG, "UART_DATA[%d]", self->uart.cfg.num); while (self->event.size) { uint8_t byte; @@ -257,7 +257,7 @@ static void ciot_uart_event_handler_1(void *args) iface_event.type = CIOT_IFACE_EVENT_INTERNAL; break; case UART_FIFO_OVF: - ESP_LOGE(TAG, "UART_FIFO_OVF"); + ESP_LOGE(TAG, "UART_FIFO_OVF[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_FIFO_OVERFLOW; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -279,7 +279,7 @@ static void ciot_uart_event_handler_1(void *args) xQueueReset(self->queue); break; case UART_BREAK: - ESP_LOGE(TAG, "UART_BREAK"); + ESP_LOGE(TAG, "UART_BREAK[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_BREAK; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -290,7 +290,7 @@ static void ciot_uart_event_handler_1(void *args) xQueueReset(self->queue); break; case UART_FRAME_ERR: - ESP_LOGE(TAG, "UART_FRAME_ERR"); + ESP_LOGE(TAG, "UART_FRAME_ERR[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_FRAME; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -335,7 +335,7 @@ static void ciot_uart_event_handler_2(void *args) switch (self->event.type) { case UART_DATA: - ESP_LOGD(TAG, "UART_DATA[2]"); + ESP_LOGI(TAG, "UART_DATA[%d]", self->uart.cfg.num); while (self->event.size) { uint8_t byte; @@ -349,7 +349,7 @@ static void ciot_uart_event_handler_2(void *args) iface_event.type = CIOT_IFACE_EVENT_INTERNAL; break; case UART_FIFO_OVF: - ESP_LOGE(TAG, "UART_FIFO_OVF"); + ESP_LOGE(TAG, "UART_FIFO_OVF[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_FIFO_OVERFLOW; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -371,7 +371,7 @@ static void ciot_uart_event_handler_2(void *args) xQueueReset(self->queue); break; case UART_BREAK: - ESP_LOGE(TAG, "UART_BREAK"); + ESP_LOGE(TAG, "UART_BREAK[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_BREAK; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; @@ -382,7 +382,7 @@ static void ciot_uart_event_handler_2(void *args) xQueueReset(self->queue); break; case UART_FRAME_ERR: - ESP_LOGE(TAG, "UART_FRAME_ERR"); + ESP_LOGE(TAG, "UART_FRAME_ERR[%d]", self->uart.cfg.num); self->uart.status.error = CIOT_UART_ERR_FRAME; self->uart.status.state = CIOT_UART_STATE_INTERNAL_ERROR; iface_event.data = (ciot_iface_event_data_u*)&error_msg; From 457d2385f9833d0cd0ceca69bb27620b957f853f Mon Sep 17 00:00:00 2001 From: wesley-santos Date: Tue, 14 May 2024 21:46:11 -0300 Subject: [PATCH 38/46] feat: created code documentation --- Doxyfile | 2894 +++++++++ doc/html/annotated.html | 280 + doc/html/annotated_dup.js | 172 + doc/html/bc_s.png | Bin 0 -> 676 bytes doc/html/bc_sd.png | Bin 0 -> 635 bytes doc/html/ciot_8h.html | 488 ++ doc/html/ciot_8h.js | 16 + doc/html/ciot_8h_source.html | 208 + doc/html/ciot__ble_8h.html | 577 ++ doc/html/ciot__ble_8h.js | 24 + doc/html/ciot__ble_8h_source.html | 209 + doc/html/ciot__ble__scn_8h.html | 401 ++ doc/html/ciot__ble__scn_8h.js | 12 + doc/html/ciot__ble__scn_8h_source.html | 173 + doc/html/ciot__ble__scn__types_8h.html | 203 + doc/html/ciot__ble__scn__types_8h.js | 17 + doc/html/ciot__ble__scn__types_8h_source.html | 223 + doc/html/ciot__ble__types_8h.html | 203 + doc/html/ciot__ble__types_8h.js | 17 + doc/html/ciot__ble__types_8h_source.html | 212 + doc/html/ciot__bridge_8h.html | 382 ++ doc/html/ciot__bridge_8h.js | 12 + doc/html/ciot__bridge_8h_source.html | 170 + doc/html/ciot__bridge__types_8h.html | 200 + doc/html/ciot__bridge__types_8h.js | 16 + doc/html/ciot__bridge__types_8h_source.html | 199 + doc/html/ciot__common__types_8h.html | 153 + doc/html/ciot__common__types_8h.js | 5 + doc/html/ciot__common__types_8h_source.html | 140 + doc/html/ciot__config_8h.html | 515 ++ doc/html/ciot__config_8h.js | 26 + doc/html/ciot__config_8h_source.html | 166 + doc/html/ciot__crc_8h.html | 363 ++ doc/html/ciot__crc_8h.js | 9 + doc/html/ciot__crc_8h_source.html | 186 + doc/html/ciot__data__model__types_8h.html | 185 + doc/html/ciot__data__model__types_8h.js | 14 + .../ciot__data__model__types_8h_source.html | 195 + doc/html/ciot__default_8h.html | 1092 ++++ doc/html/ciot__default_8h.js | 57 + doc/html/ciot__default_8h_source.html | 278 + doc/html/ciot__dfu_8h.html | 401 ++ doc/html/ciot__dfu_8h.js | 15 + doc/html/ciot__dfu_8h_source.html | 178 + doc/html/ciot__dfu__types_8h.html | 239 + doc/html/ciot__dfu__types_8h.js | 24 + doc/html/ciot__dfu__types_8h_source.html | 227 + doc/html/ciot__err_8h.html | 432 ++ doc/html/ciot__err_8h.js | 39 + doc/html/ciot__err_8h_source.html | 230 + doc/html/ciot__eth_8h.html | 364 ++ doc/html/ciot__eth_8h.js | 16 + doc/html/ciot__eth_8h_source.html | 181 + doc/html/ciot__gpio_8h.html | 400 ++ doc/html/ciot__gpio_8h.js | 12 + doc/html/ciot__gpio_8h_source.html | 173 + doc/html/ciot__gpio__types_8h.html | 275 + doc/html/ciot__gpio__types_8h.js | 31 + doc/html/ciot__gpio__types_8h_source.html | 261 + doc/html/ciot__httpc_8h.html | 377 ++ doc/html/ciot__httpc_8h.js | 15 + doc/html/ciot__httpc_8h_source.html | 178 + doc/html/ciot__httpc__types_8h.html | 497 ++ doc/html/ciot__httpc__types_8h.js | 59 + doc/html/ciot__httpc__types_8h_source.html | 339 + doc/html/ciot__https_8h.html | 374 ++ doc/html/ciot__https_8h.js | 14 + doc/html/ciot__https_8h_source.html | 176 + doc/html/ciot__https__types_8h.html | 306 + doc/html/ciot__https__types_8h.js | 23 + doc/html/ciot__https__types_8h_source.html | 238 + doc/html/ciot__iface_8h.html | 1123 ++++ doc/html/ciot__iface_8h.js | 55 + doc/html/ciot__iface_8h_source.html | 342 ++ doc/html/ciot__ifaces_8h.html | 275 + doc/html/ciot__ifaces_8h.js | 27 + doc/html/ciot__ifaces_8h_source.html | 249 + doc/html/ciot__lib_8h.html | 155 + doc/html/ciot__lib_8h_source.html | 196 + doc/html/ciot__log_8h.html | 580 ++ doc/html/ciot__log_8h.js | 21 + doc/html/ciot__log_8h_source.html | 275 + doc/html/ciot__mqttc_8h.html | 492 ++ doc/html/ciot__mqttc_8h.js | 19 + doc/html/ciot__mqttc_8h_source.html | 191 + doc/html/ciot__mqttc__types_8h.html | 424 ++ doc/html/ciot__mqttc__types_8h.js | 41 + doc/html/ciot__mqttc__types_8h_source.html | 351 ++ doc/html/ciot__msg__types_8h.html | 394 ++ doc/html/ciot__msg__types_8h.js | 45 + doc/html/ciot__msg__types_8h_source.html | 348 ++ doc/html/ciot__nrf__dfu_8h.html | 951 +++ doc/html/ciot__nrf__dfu_8h.js | 88 + doc/html/ciot__nrf__dfu_8h_source.html | 341 ++ doc/html/ciot__ntp_8h.html | 355 ++ doc/html/ciot__ntp_8h.js | 11 + doc/html/ciot__ntp_8h_source.html | 170 + doc/html/ciot__ntp__types_8h.html | 223 + doc/html/ciot__ntp__types_8h.js | 17 + doc/html/ciot__ntp__types_8h_source.html | 225 + doc/html/ciot__opcuas_8h.html | 378 ++ doc/html/ciot__opcuas_8h.js | 11 + doc/html/ciot__opcuas_8h_source.html | 170 + doc/html/ciot__opcuas__types_8h.html | 209 + doc/html/ciot__opcuas__types_8h.js | 19 + doc/html/ciot__opcuas__types_8h_source.html | 217 + doc/html/ciot__ota_8h.html | 491 ++ doc/html/ciot__ota_8h.js | 23 + doc/html/ciot__ota_8h_source.html | 202 + doc/html/ciot__ota__types_8h.html | 232 + doc/html/ciot__ota__types_8h.js | 25 + doc/html/ciot__ota__types_8h_source.html | 232 + doc/html/ciot__s_8h.html | 499 ++ doc/html/ciot__s_8h.js | 24 + doc/html/ciot__s_8h_source.html | 200 + doc/html/ciot__serializer_8h.html | 354 ++ doc/html/ciot__serializer_8h.js | 15 + doc/html/ciot__serializer_8h_source.html | 173 + doc/html/ciot__slip_8h.html | 276 + doc/html/ciot__slip_8h.js | 11 + doc/html/ciot__slip_8h_source.html | 165 + doc/html/ciot__storage_8h.html | 504 ++ doc/html/ciot__storage_8h.js | 15 + doc/html/ciot__storage_8h_source.html | 182 + doc/html/ciot__storage__types_8h.html | 242 + doc/html/ciot__storage__types_8h.js | 24 + doc/html/ciot__storage__types_8h_source.html | 222 + doc/html/ciot__sys_8h.html | 522 ++ doc/html/ciot__sys_8h.js | 17 + doc/html/ciot__sys_8h_source.html | 189 + doc/html/ciot__sys__types_8h.html | 236 + doc/html/ciot__sys__types_8h.js | 27 + doc/html/ciot__sys__types_8h_source.html | 295 + doc/html/ciot__tcp_8h.html | 502 ++ doc/html/ciot__tcp_8h.js | 22 + doc/html/ciot__tcp_8h_source.html | 207 + doc/html/ciot__tcp__types_8h.html | 278 + doc/html/ciot__tcp__types_8h.js | 31 + doc/html/ciot__tcp__types_8h_source.html | 262 + doc/html/ciot__timer_8h.html | 271 + doc/html/ciot__timer_8h.js | 9 + doc/html/ciot__timer_8h_source.html | 149 + doc/html/ciot__types_8h.html | 224 + doc/html/ciot__types_8h.js | 24 + doc/html/ciot__types_8h_source.html | 263 + doc/html/ciot__uart_8h.html | 604 ++ doc/html/ciot__uart_8h.js | 25 + doc/html/ciot__uart_8h_source.html | 226 + doc/html/ciot__uart__types_8h.html | 296 + doc/html/ciot__uart__types_8h.js | 34 + doc/html/ciot__uart__types_8h_source.html | 283 + doc/html/ciot__usb_8h.html | 558 ++ doc/html/ciot__usb_8h.js | 41 + doc/html/ciot__usb_8h_source.html | 238 + doc/html/ciot__usb__types_8h.html | 225 + doc/html/ciot__usb__types_8h.js | 17 + doc/html/ciot__usb__types_8h_source.html | 214 + doc/html/ciot__utils_8h.html | 205 + doc/html/ciot__utils_8h.js | 5 + doc/html/ciot__utils_8h_source.html | 136 + doc/html/ciot__wifi_8h.html | 533 ++ doc/html/ciot__wifi_8h.js | 26 + doc/html/ciot__wifi_8h_source.html | 207 + doc/html/ciot__wifi__types_8h.html | 264 + doc/html/ciot__wifi__types_8h.js | 27 + doc/html/ciot__wifi__types_8h_source.html | 261 + doc/html/classes.html | 113 + doc/html/clipboard.js | 61 + doc/html/closed.png | Bin 0 -> 132 bytes doc/html/cookie.js | 58 + .../dir_0ad255a918b7fba820a1ddafed6fa637.html | 171 + .../dir_0ad255a918b7fba820a1ddafed6fa637.js | 23 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 215 + .../dir_d44c64559bbebec7f509842c48db8b23.js | 38 + doc/html/doc.svg | 12 + doc/html/docd.svg | 12 + doc/html/doxygen.css | 2225 +++++++ doc/html/doxygen.svg | 28 + doc/html/doxygen_crawl.html | 356 ++ doc/html/dynsections.js | 194 + doc/html/files.html | 167 + doc/html/files_dup.js | 4 + doc/html/folderclosed.svg | 11 + doc/html/folderclosedd.svg | 11 + doc/html/folderopen.svg | 17 + doc/html/folderopend.svg | 12 + doc/html/functions.html | 116 + doc/html/functions_b.html | 119 + doc/html/functions_c.html | 120 + doc/html/functions_d.html | 118 + doc/html/functions_dup.js | 24 + doc/html/functions_e.html | 117 + doc/html/functions_f.html | 113 + doc/html/functions_g.html | 111 + doc/html/functions_h.html | 117 + doc/html/functions_i.html | 120 + doc/html/functions_l.html | 112 + doc/html/functions_m.html | 117 + doc/html/functions_n.html | 112 + doc/html/functions_o.html | 111 + doc/html/functions_p.html | 121 + doc/html/functions_q.html | 109 + doc/html/functions_r.html | 121 + doc/html/functions_s.html | 136 + doc/html/functions_t.html | 123 + doc/html/functions_u.html | 112 + doc/html/functions_v.html | 110 + doc/html/functions_vars.html | 116 + doc/html/functions_vars.js | 24 + doc/html/functions_vars_b.html | 119 + doc/html/functions_vars_c.html | 120 + doc/html/functions_vars_d.html | 118 + doc/html/functions_vars_e.html | 117 + doc/html/functions_vars_f.html | 113 + doc/html/functions_vars_g.html | 111 + doc/html/functions_vars_h.html | 117 + doc/html/functions_vars_i.html | 120 + doc/html/functions_vars_l.html | 112 + doc/html/functions_vars_m.html | 117 + doc/html/functions_vars_n.html | 112 + doc/html/functions_vars_o.html | 111 + doc/html/functions_vars_p.html | 121 + doc/html/functions_vars_q.html | 109 + doc/html/functions_vars_r.html | 121 + doc/html/functions_vars_s.html | 136 + doc/html/functions_vars_t.html | 123 + doc/html/functions_vars_u.html | 112 + doc/html/functions_vars_v.html | 110 + doc/html/functions_vars_w.html | 110 + doc/html/functions_w.html | 110 + doc/html/globals.html | 109 + doc/html/globals_b.html | 109 + doc/html/globals_c.html | 950 +++ doc/html/globals_defs.html | 245 + doc/html/globals_dup.js | 7 + doc/html/globals_enum.html | 184 + doc/html/globals_eval.html | 484 ++ doc/html/globals_eval.js | 6 + doc/html/globals_eval_h.html | 111 + doc/html/globals_eval_n.html | 122 + doc/html/globals_func.html | 300 + doc/html/globals_func.js | 6 + doc/html/globals_func_b.html | 109 + doc/html/globals_func_c.html | 296 + doc/html/globals_h.html | 114 + doc/html/globals_n.html | 122 + doc/html/globals_p.html | 109 + doc/html/globals_type.html | 182 + doc/html/globals_type.js | 4 + doc/html/globals_vars.html | 303 + doc/html/group___common.html | 115 + doc/html/group___hardware.html | 115 + doc/html/group___software.html | 120 + doc/html/group___utils.html | 111 + doc/html/group___utils.js | 16 + doc/html/group__hardware__interfaces.html | 145 + doc/html/group__hardware__interfaces.js | 12 + doc/html/group__hardware__types.html | 142 + doc/html/group__hardware__types.js | 11 + doc/html/group__slip.html | 260 + doc/html/group__slip.js | 16 + doc/html/group__software__interfaces.html | 142 + doc/html/group__software__interfaces.js | 11 + doc/html/group__software__types.html | 145 + doc/html/group__software__types.js | 12 + doc/html/group__uart__apis.html | 359 ++ doc/html/group__uart__apis.js | 9 + doc/html/index.html | 108 + doc/html/jquery.js | 34 + doc/html/menu.js | 134 + doc/html/menudata.js | 97 + doc/html/minus.svg | 8 + doc/html/minusd.svg | 8 + doc/html/nav_f.png | Bin 0 -> 153 bytes doc/html/nav_fd.png | Bin 0 -> 169 bytes doc/html/nav_g.png | Bin 0 -> 95 bytes doc/html/nav_h.png | Bin 0 -> 98 bytes doc/html/nav_hd.png | Bin 0 -> 114 bytes doc/html/navtree.css | 149 + doc/html/navtree.js | 482 ++ doc/html/navtreedata.js | 61 + doc/html/navtreeindex0.js | 253 + doc/html/navtreeindex1.js | 253 + doc/html/navtreeindex2.js | 253 + doc/html/navtreeindex3.js | 253 + doc/html/navtreeindex4.js | 99 + doc/html/open.png | Bin 0 -> 123 bytes doc/html/plus.svg | 9 + doc/html/plusd.svg | 9 + doc/html/resize.js | 109 + doc/html/search/all_0.js | 11 + doc/html/search/all_1.js | 15 + doc/html/search/all_10.js | 33 + doc/html/search/all_11.js | 18 + doc/html/search/all_12.js | 7 + doc/html/search/all_13.js | 5 + doc/html/search/all_14.js | 5 + doc/html/search/all_2.js | 1080 ++++ doc/html/search/all_3.js | 13 + doc/html/search/all_4.js | 12 + doc/html/search/all_5.js | 8 + doc/html/search/all_6.js | 6 + doc/html/search/all_7.js | 20 + doc/html/search/all_8.js | 15 + doc/html/search/all_9.js | 7 + doc/html/search/all_a.js | 12 + doc/html/search/all_b.js | 21 + doc/html/search/all_c.js | 6 + doc/html/search/all_d.js | 16 + doc/html/search/all_e.js | 4 + doc/html/search/all_f.js | 16 + doc/html/search/classes_0.js | 172 + doc/html/search/classes_1.js | 4 + doc/html/search/close.svg | 18 + doc/html/search/defines_0.js | 133 + doc/html/search/defines_1.js | 6 + doc/html/search/enums_0.js | 79 + doc/html/search/enums_1.js | 4 + doc/html/search/enumvalues_0.js | 379 ++ doc/html/search/enumvalues_1.js | 6 + doc/html/search/enumvalues_2.js | 17 + doc/html/search/files_0.js | 57 + doc/html/search/functions_0.js | 4 + doc/html/search/functions_1.js | 190 + doc/html/search/functions_2.js | 191 + doc/html/search/groups_0.js | 5 + doc/html/search/groups_1.js | 5 + doc/html/search/groups_2.js | 5 + doc/html/search/groups_3.js | 4 + doc/html/search/groups_4.js | 5 + doc/html/search/groups_5.js | 5 + doc/html/search/groups_6.js | 5 + doc/html/search/mag.svg | 24 + doc/html/search/mag_d.svg | 24 + doc/html/search/mag_sel.svg | 31 + doc/html/search/mag_seld.svg | 31 + doc/html/search/search.css | 291 + doc/html/search/search.js | 694 +++ doc/html/search/searchdata.js | 42 + doc/html/search/typedefs_0.js | 77 + doc/html/search/variables_0.js | 11 + doc/html/search/variables_1.js | 14 + doc/html/search/variables_10.js | 31 + doc/html/search/variables_11.js | 18 + doc/html/search/variables_12.js | 7 + doc/html/search/variables_13.js | 5 + doc/html/search/variables_14.js | 5 + doc/html/search/variables_2.js | 15 + doc/html/search/variables_3.js | 13 + doc/html/search/variables_4.js | 12 + doc/html/search/variables_5.js | 8 + doc/html/search/variables_6.js | 6 + doc/html/search/variables_7.js | 12 + doc/html/search/variables_8.js | 15 + doc/html/search/variables_9.js | 7 + doc/html/search/variables_a.js | 12 + doc/html/search/variables_b.js | 7 + doc/html/search/variables_c.js | 6 + doc/html/search/variables_d.js | 16 + doc/html/search/variables_e.js | 4 + doc/html/search/variables_f.js | 16 + doc/html/splitbar.png | Bin 0 -> 314 bytes doc/html/splitbard.png | Bin 0 -> 282 bytes doc/html/structciot__ble__cfg__t.html | 142 + doc/html/structciot__ble__cfg__t.js | 4 + doc/html/structciot__ble__ifaces.html | 142 + doc/html/structciot__ble__ifaces.js | 4 + doc/html/structciot__ble__info__t.html | 159 + doc/html/structciot__ble__info__t.js | 5 + doc/html/structciot__ble__req__t.html | 159 + doc/html/structciot__ble__req__t.js | 5 + .../structciot__ble__scn__adv__info__t.html | 159 + .../structciot__ble__scn__adv__info__t.js | 5 + doc/html/structciot__ble__scn__cfg__t.html | 227 + doc/html/structciot__ble__scn__cfg__t.js | 9 + doc/html/structciot__ble__scn__req__t.html | 159 + doc/html/structciot__ble__scn__req__t.js | 5 + .../structciot__ble__scn__status__msg__t.html | 159 + .../structciot__ble__scn__status__msg__t.js | 5 + doc/html/structciot__ble__scn__status__t.html | 176 + doc/html/structciot__ble__scn__status__t.js | 6 + doc/html/structciot__ble__status__msg__t.html | 159 + doc/html/structciot__ble__status__msg__t.js | 5 + doc/html/structciot__ble__status__t.html | 176 + doc/html/structciot__ble__status__t.js | 6 + doc/html/structciot__bridge__cfg__t.html | 142 + doc/html/structciot__bridge__cfg__t.js | 4 + doc/html/structciot__bridge__req__t.html | 159 + doc/html/structciot__bridge__req__t.js | 5 + .../structciot__bridge__status__msg__t.html | 159 + .../structciot__bridge__status__msg__t.js | 5 + doc/html/structciot__bridge__status__t.html | 142 + doc/html/structciot__bridge__status__t.js | 4 + doc/html/structciot__cfg.html | 182 + doc/html/structciot__cfg.js | 6 + doc/html/structciot__data__model__cfg__t.html | 118 + doc/html/structciot__data__model__req__t.html | 159 + doc/html/structciot__data__model__req__t.js | 5 + .../structciot__data__model__status__t.html | 142 + .../structciot__data__model__status__t.js | 4 + doc/html/structciot__dfu__cfg__t.html | 142 + doc/html/structciot__dfu__cfg__t.js | 4 + doc/html/structciot__dfu__req__t.html | 159 + doc/html/structciot__dfu__req__t.js | 5 + doc/html/structciot__dfu__status__msg__t.html | 159 + doc/html/structciot__dfu__status__msg__t.js | 5 + doc/html/structciot__dfu__status__t.html | 210 + doc/html/structciot__dfu__status__t.js | 8 + doc/html/structciot__eth__status__msg__t.html | 159 + doc/html/structciot__eth__status__msg__t.js | 5 + doc/html/structciot__event__data.html | 159 + doc/html/structciot__event__data.js | 5 + doc/html/structciot__gpio__cfg__t.html | 176 + doc/html/structciot__gpio__cfg__t.js | 6 + .../structciot__gpio__req__get__state__t.html | 142 + .../structciot__gpio__req__get__state__t.js | 4 + doc/html/structciot__gpio__req__t.html | 159 + doc/html/structciot__gpio__req__t.js | 5 + .../structciot__gpio__state__info__t.html | 159 + doc/html/structciot__gpio__state__info__t.js | 5 + .../structciot__gpio__status__msg__t.html | 159 + doc/html/structciot__gpio__status__msg__t.js | 5 + doc/html/structciot__gpio__status__t.html | 142 + doc/html/structciot__gpio__status__t.js | 4 + doc/html/structciot__httpc__cfg__t.html | 193 + doc/html/structciot__httpc__cfg__t.js | 7 + doc/html/structciot__httpc__event__data.html | 159 + doc/html/structciot__httpc__event__data.js | 5 + doc/html/structciot__httpc__req__send__t.html | 176 + doc/html/structciot__httpc__req__send__t.js | 6 + ...tructciot__httpc__req__set__header__t.html | 159 + .../structciot__httpc__req__set__header__t.js | 5 + doc/html/structciot__httpc__req__t.html | 159 + doc/html/structciot__httpc__req__t.js | 5 + .../structciot__httpc__status__msg__t.html | 159 + doc/html/structciot__httpc__status__msg__t.js | 5 + doc/html/structciot__httpc__status__t.html | 159 + doc/html/structciot__httpc__status__t.js | 5 + doc/html/structciot__https__cfg__t.html | 176 + doc/html/structciot__https__cfg__t.js | 6 + doc/html/structciot__https__event.html | 142 + doc/html/structciot__https__event.js | 4 + doc/html/structciot__https__event__data.html | 176 + doc/html/structciot__https__event__data.js | 6 + doc/html/structciot__https__req__t.html | 142 + doc/html/structciot__https__req__t.js | 4 + .../structciot__https__status__msg__t.html | 159 + doc/html/structciot__https__status__msg__t.js | 5 + doc/html/structciot__https__status__t.html | 159 + doc/html/structciot__https__status__t.js | 5 + doc/html/structciot__iface.html | 210 + doc/html/structciot__iface.js | 8 + doc/html/structciot__iface__base.html | 261 + doc/html/structciot__iface__base.js | 11 + doc/html/structciot__iface__base__data.html | 159 + doc/html/structciot__iface__base__data.js | 5 + doc/html/structciot__iface__cfg__t.html | 118 + doc/html/structciot__iface__event__t.html | 176 + doc/html/structciot__iface__event__t.js | 6 + doc/html/structciot__iface__req__info.html | 210 + doc/html/structciot__iface__req__info.js | 8 + doc/html/structciot__ifaces.html | 397 ++ doc/html/structciot__ifaces.js | 19 + doc/html/structciot__info__t.html | 142 + doc/html/structciot__info__t.js | 4 + doc/html/structciot__mqttc__cfg__t.html | 261 + doc/html/structciot__mqttc__cfg__t.js | 11 + doc/html/structciot__mqttc__error__t.html | 227 + doc/html/structciot__mqttc__error__t.js | 9 + doc/html/structciot__mqttc__event.html | 142 + doc/html/structciot__mqttc__event.js | 4 + doc/html/structciot__mqttc__event__data.html | 159 + doc/html/structciot__mqttc__event__data.js | 5 + .../structciot__mqttc__req__publish__t.html | 193 + .../structciot__mqttc__req__publish__t.js | 7 + .../structciot__mqttc__req__subscribe__t.html | 159 + .../structciot__mqttc__req__subscribe__t.js | 5 + doc/html/structciot__mqttc__req__t.html | 159 + doc/html/structciot__mqttc__req__t.js | 5 + .../structciot__mqttc__status__msg__t.html | 159 + doc/html/structciot__mqttc__status__msg__t.js | 5 + doc/html/structciot__mqttc__status__t.html | 210 + doc/html/structciot__mqttc__status__t.js | 8 + .../structciot__mqttc__topics__cfg__t.html | 159 + doc/html/structciot__mqttc__topics__cfg__t.js | 5 + doc/html/structciot__msg__error__t.html | 159 + doc/html/structciot__msg__error__t.js | 5 + doc/html/structciot__msg__header__t.html | 176 + doc/html/structciot__msg__header__t.js | 6 + doc/html/structciot__msg__iface__info__t.html | 159 + doc/html/structciot__msg__iface__info__t.js | 5 + doc/html/structciot__msg__t.html | 193 + doc/html/structciot__msg__t.js | 7 + doc/html/structciot__nrf__dfu__cfg.html | 210 + doc/html/structciot__nrf__dfu__cfg.js | 8 + doc/html/structciot__nrf__dfu__packet.html | 193 + doc/html/structciot__nrf__dfu__packet.js | 7 + doc/html/structciot__ntp__cfg__t.html | 210 + doc/html/structciot__ntp__cfg__t.js | 8 + doc/html/structciot__ntp__req__t.html | 159 + doc/html/structciot__ntp__req__t.js | 5 + doc/html/structciot__ntp__status__msg__t.html | 159 + doc/html/structciot__ntp__status__msg__t.js | 5 + doc/html/structciot__ntp__status__t.html | 227 + doc/html/structciot__ntp__status__t.js | 9 + doc/html/structciot__opcuas__cfg__t.html | 142 + doc/html/structciot__opcuas__cfg__t.js | 4 + ...structciot__opcuas__req__add__node__t.html | 193 + .../structciot__opcuas__req__add__node__t.js | 7 + doc/html/structciot__opcuas__req__t.html | 159 + doc/html/structciot__opcuas__req__t.js | 5 + .../structciot__opcuas__status__msg__t.html | 159 + .../structciot__opcuas__status__msg__t.js | 5 + doc/html/structciot__opcuas__status__t.html | 142 + doc/html/structciot__opcuas__status__t.js | 4 + doc/html/structciot__ota__cfg__t.html | 210 + doc/html/structciot__ota__cfg__t.js | 8 + doc/html/structciot__ota__req__t.html | 159 + doc/html/structciot__ota__req__t.js | 5 + doc/html/structciot__ota__status__msg__t.html | 159 + doc/html/structciot__ota__status__msg__t.js | 5 + doc/html/structciot__ota__status__t.html | 193 + doc/html/structciot__ota__status__t.js | 7 + ...tructciot__req__delete__iface__cfg__t.html | 142 + .../structciot__req__delete__iface__cfg__t.js | 4 + doc/html/structciot__req__proxy__msg__t.html | 176 + doc/html/structciot__req__proxy__msg__t.js | 6 + doc/html/structciot__req__result__t.html | 159 + doc/html/structciot__req__result__t.js | 5 + .../structciot__req__save__iface__cfg__t.html | 142 + .../structciot__req__save__iface__cfg__t.js | 4 + doc/html/structciot__req__t.html | 159 + doc/html/structciot__req__t.js | 5 + doc/html/structciot__s__cfg.html | 193 + doc/html/structciot__s__cfg.js | 7 + doc/html/structciot__serializer.html | 176 + doc/html/structciot__serializer.js | 6 + doc/html/structciot__slip__t.html | 201 + doc/html/structciot__slip__t.js | 7 + doc/html/structciot__status__t.html | 159 + doc/html/structciot__status__t.js | 5 + doc/html/structciot__storage__cfg__t.html | 142 + doc/html/structciot__storage__cfg__t.js | 4 + ...ructciot__storage__req__file__data__t.html | 176 + ...structciot__storage__req__file__data__t.js | 6 + doc/html/structciot__storage__req__t.html | 159 + doc/html/structciot__storage__req__t.js | 5 + .../structciot__storage__status__msg__t.html | 159 + .../structciot__storage__status__msg__t.js | 5 + doc/html/structciot__storage__status__t.html | 142 + doc/html/structciot__storage__status__t.js | 4 + doc/html/structciot__sys__cfg__t.html | 118 + doc/html/structciot__sys__features__t.html | 159 + doc/html/structciot__sys__features__t.js | 5 + .../structciot__sys__hw__features__t.html | 278 + doc/html/structciot__sys__hw__features__t.js | 12 + doc/html/structciot__sys__info__t.html | 193 + doc/html/structciot__sys__info__t.js | 7 + doc/html/structciot__sys__req__t.html | 159 + doc/html/structciot__sys__req__t.js | 5 + doc/html/structciot__sys__status__msg__t.html | 159 + doc/html/structciot__sys__status__msg__t.js | 5 + doc/html/structciot__sys__status__t.html | 210 + doc/html/structciot__sys__status__t.js | 8 + .../structciot__sys__sw__features__t.html | 278 + doc/html/structciot__sys__sw__features__t.js | 12 + doc/html/structciot__tcp__cfg__t.html | 210 + doc/html/structciot__tcp__cfg__t.js | 8 + .../structciot__tcp__dhcp__status__t.html | 159 + doc/html/structciot__tcp__dhcp__status__t.js | 5 + doc/html/structciot__tcp__handle.html | 176 + doc/html/structciot__tcp__handle.js | 6 + doc/html/structciot__tcp__info__t.html | 159 + doc/html/structciot__tcp__info__t.js | 5 + doc/html/structciot__tcp__req__t.html | 159 + doc/html/structciot__tcp__req__t.js | 5 + doc/html/structciot__tcp__status__msg__t.html | 159 + doc/html/structciot__tcp__status__msg__t.js | 5 + doc/html/structciot__tcp__status__t.html | 193 + doc/html/structciot__tcp__status__t.js | 7 + doc/html/structciot__timer__cfg.html | 159 + doc/html/structciot__timer__cfg.js | 5 + doc/html/structciot__uart__base.html | 193 + doc/html/structciot__uart__base.js | 7 + doc/html/structciot__uart__cfg__t.html | 312 + doc/html/structciot__uart__cfg__t.js | 14 + .../structciot__uart__req__send__data__t.html | 159 + .../structciot__uart__req__send__data__t.js | 5 + doc/html/structciot__uart__req__t.html | 159 + doc/html/structciot__uart__req__t.js | 5 + .../structciot__uart__status__msg__t.html | 159 + doc/html/structciot__uart__status__msg__t.js | 5 + doc/html/structciot__uart__status__t.html | 159 + doc/html/structciot__uart__status__t.js | 5 + doc/html/structciot__usb__cfg__t.html | 142 + doc/html/structciot__usb__cfg__t.js | 4 + doc/html/structciot__usb__req__t.html | 159 + doc/html/structciot__usb__req__t.js | 5 + doc/html/structciot__usb__status__msg__t.html | 159 + doc/html/structciot__usb__status__msg__t.js | 5 + doc/html/structciot__usb__status__t.html | 142 + doc/html/structciot__usb__status__t.js | 4 + doc/html/structciot__wifi__ap__info__t.html | 193 + doc/html/structciot__wifi__ap__info__t.js | 7 + doc/html/structciot__wifi__cfg__t.html | 193 + doc/html/structciot__wifi__cfg__t.js | 7 + doc/html/structciot__wifi__req__t.html | 159 + doc/html/structciot__wifi__req__t.js | 5 + .../structciot__wifi__scan__result__t.html | 159 + doc/html/structciot__wifi__scan__result__t.js | 5 + .../structciot__wifi__status__msg__t.html | 163 + doc/html/structciot__wifi__status__msg__t.js | 5 + doc/html/structciot__wifi__status__t.html | 176 + doc/html/structciot__wifi__status__t.js | 6 + doc/html/structpacked.html | 5438 +++++++++++++++++ doc/html/structpacked.js | 302 + doc/html/sync_off.png | Bin 0 -> 853 bytes doc/html/sync_on.png | Bin 0 -> 845 bytes doc/html/tab_a.png | Bin 0 -> 142 bytes doc/html/tab_ad.png | Bin 0 -> 135 bytes doc/html/tab_b.png | Bin 0 -> 169 bytes doc/html/tab_bd.png | Bin 0 -> 173 bytes doc/html/tab_h.png | Bin 0 -> 177 bytes doc/html/tab_hd.png | Bin 0 -> 180 bytes doc/html/tab_s.png | Bin 0 -> 184 bytes doc/html/tab_sd.png | Bin 0 -> 188 bytes doc/html/tabs.css | 1 + doc/html/topics.html | 115 + doc/html/topics.js | 7 + doc/html/unionciot__ble__data__u.html | 176 + doc/html/unionciot__ble__data__u.js | 6 + doc/html/unionciot__ble__req__data__u.html | 142 + doc/html/unionciot__ble__req__data__u.js | 4 + doc/html/unionciot__ble__scn__data__u.html | 176 + doc/html/unionciot__ble__scn__data__u.js | 6 + .../unionciot__ble__scn__req__data__u.html | 118 + doc/html/unionciot__bridge__data__u.html | 176 + doc/html/unionciot__bridge__data__u.js | 6 + doc/html/unionciot__bridge__req__data__u.html | 118 + doc/html/unionciot__data__model__data__u.html | 176 + doc/html/unionciot__data__model__data__u.js | 6 + .../unionciot__data__model__req__data__u.html | 118 + doc/html/unionciot__data__u.html | 176 + doc/html/unionciot__data__u.js | 6 + doc/html/unionciot__dfu__data__u.html | 176 + doc/html/unionciot__dfu__data__u.js | 6 + doc/html/unionciot__dfu__req__data__u.html | 118 + doc/html/unionciot__gpio__data__u.html | 176 + doc/html/unionciot__gpio__data__u.js | 6 + doc/html/unionciot__gpio__req__data__u.html | 176 + doc/html/unionciot__gpio__req__data__u.js | 6 + doc/html/unionciot__httpc__data__u.html | 193 + doc/html/unionciot__httpc__data__u.js | 7 + doc/html/unionciot__httpc__event.html | 142 + doc/html/unionciot__httpc__event.js | 4 + doc/html/unionciot__httpc__req__data.html | 159 + doc/html/unionciot__httpc__req__data.js | 5 + doc/html/unionciot__https__data__u.html | 193 + doc/html/unionciot__https__data__u.js | 7 + doc/html/unionciot__https__req__data__u.html | 118 + .../unionciot__iface__event__data__u.html | 159 + doc/html/unionciot__iface__event__data__u.js | 5 + doc/html/unionciot__mqttc__data__u.html | 193 + doc/html/unionciot__mqttc__data__u.js | 7 + doc/html/unionciot__mqttc__req__data__u.html | 159 + doc/html/unionciot__mqttc__req__data__u.js | 5 + doc/html/unionciot__msg__data__u.html | 431 ++ doc/html/unionciot__msg__data__u.js | 21 + doc/html/unionciot__ntp__data__u.html | 176 + doc/html/unionciot__ntp__data__u.js | 6 + doc/html/unionciot__ntp__req__data__u.html | 118 + doc/html/unionciot__opcuas__data__u.html | 176 + doc/html/unionciot__opcuas__data__u.js | 6 + doc/html/unionciot__opcuas__req__data__u.html | 142 + doc/html/unionciot__opcuas__req__data__u.js | 4 + doc/html/unionciot__ota__data__u.html | 176 + doc/html/unionciot__ota__data__u.js | 6 + doc/html/unionciot__ota__req__data__u.html | 118 + doc/html/unionciot__req__data__u.html | 193 + doc/html/unionciot__req__data__u.js | 7 + doc/html/unionciot__storage__data__u.html | 176 + doc/html/unionciot__storage__data__u.js | 6 + doc/html/unionciot__sys__data__u.html | 176 + doc/html/unionciot__sys__data__u.js | 6 + doc/html/unionciot__sys__req__data__u.html | 118 + doc/html/unionciot__tcp__data__u.html | 176 + doc/html/unionciot__tcp__data__u.js | 6 + doc/html/unionciot__tcp__req__data__u.html | 118 + doc/html/unionciot__uart__data__u.html | 193 + doc/html/unionciot__uart__data__u.js | 7 + doc/html/unionciot__uart__event.html | 142 + doc/html/unionciot__uart__event.js | 4 + doc/html/unionciot__uart__req__data__u.html | 142 + doc/html/unionciot__uart__req__data__u.js | 4 + doc/html/unionciot__usb__data__u.html | 193 + doc/html/unionciot__usb__data__u.js | 7 + doc/html/unionciot__usb__event.html | 142 + doc/html/unionciot__usb__event.js | 4 + doc/html/unionciot__usb__req__data__u.html | 118 + doc/html/unionciot__wifi__data__u.html | 176 + doc/html/unionciot__wifi__data__u.js | 6 + doc/html/unionciot__wifi__req__data__u.html | 142 + doc/html/unionciot__wifi__req__data__u.js | 4 + doc/latex/Makefile | 27 + doc/latex/annotated.tex | 172 + doc/latex/ciot_8h.tex | 244 + doc/latex/ciot_8h_source.tex | 75 + doc/latex/ciot__ble_8h.tex | 340 ++ doc/latex/ciot__ble_8h_source.tex | 64 + doc/latex/ciot__ble__scn_8h.tex | 210 + doc/latex/ciot__ble__scn_8h_source.tex | 44 + doc/latex/ciot__ble__scn__types_8h.tex | 94 + doc/latex/ciot__ble__scn__types_8h_source.tex | 73 + doc/latex/ciot__ble__types_8h.tex | 94 + doc/latex/ciot__ble__types_8h_source.tex | 69 + doc/latex/ciot__bridge_8h.tex | 200 + doc/latex/ciot__bridge_8h_source.tex | 43 + doc/latex/ciot__bridge__types_8h.tex | 92 + doc/latex/ciot__bridge__types_8h_source.tex | 61 + doc/latex/ciot__common__types_8h.tex | 48 + doc/latex/ciot__common__types_8h_source.tex | 27 + doc/latex/ciot__config_8h.tex | 214 + doc/latex/ciot__config_8h_source.tex | 59 + doc/latex/ciot__crc_8h.tex | 168 + doc/latex/ciot__crc_8h_source.tex | 73 + doc/latex/ciot__data__model__types_8h.tex | 60 + .../ciot__data__model__types_8h_source.tex | 59 + doc/latex/ciot__default_8h.tex | 568 ++ doc/latex/ciot__default_8h_source.tex | 151 + doc/latex/ciot__dfu_8h.tex | 217 + doc/latex/ciot__dfu_8h_source.tex | 45 + doc/latex/ciot__dfu__types_8h.tex | 136 + doc/latex/ciot__dfu__types_8h_source.tex | 75 + doc/latex/ciot__err_8h.tex | 335 + doc/latex/ciot__err_8h_source.tex | 83 + doc/latex/ciot__eth_8h.tex | 204 + doc/latex/ciot__eth_8h_source.tex | 47 + doc/latex/ciot__gpio_8h.tex | 210 + doc/latex/ciot__gpio_8h_source.tex | 44 + doc/latex/ciot__gpio__types_8h.tex | 169 + doc/latex/ciot__gpio__types_8h_source.tex | 93 + doc/latex/ciot__httpc_8h.tex | 206 + doc/latex/ciot__httpc_8h_source.tex | 45 + doc/latex/ciot__httpc__types_8h.tex | 359 ++ doc/latex/ciot__httpc__types_8h_source.tex | 135 + doc/latex/ciot__https_8h.tex | 201 + doc/latex/ciot__https_8h_source.tex | 44 + doc/latex/ciot__https__types_8h.tex | 157 + doc/latex/ciot__https__types_8h_source.tex | 82 + doc/latex/ciot__iface_8h.tex | 705 +++ doc/latex/ciot__iface_8h_source.tex | 136 + doc/latex/ciot__ifaces_8h.tex | 194 + doc/latex/ciot__ifaces_8h_source.tex | 69 + doc/latex/ciot__lib_8h.tex | 60 + doc/latex/ciot__lib_8h_source.tex | 53 + doc/latex/ciot__log_8h.tex | 315 + doc/latex/ciot__log_8h_source.tex | 141 + doc/latex/ciot__mqttc_8h.tex | 261 + doc/latex/ciot__mqttc_8h_source.tex | 54 + doc/latex/ciot__mqttc__types_8h.tex | 253 + doc/latex/ciot__mqttc__types_8h_source.tex | 150 + doc/latex/ciot__msg__types_8h.tex | 297 + doc/latex/ciot__msg__types_8h_source.tex | 129 + doc/latex/ciot__nrf__dfu_8h.tex | 739 +++ doc/latex/ciot__nrf__dfu_8h_source.tex | 129 + doc/latex/ciot__ntp_8h.tex | 184 + doc/latex/ciot__ntp_8h_source.tex | 43 + doc/latex/ciot__ntp__types_8h.tex | 108 + doc/latex/ciot__ntp__types_8h_source.tex | 77 + doc/latex/ciot__opcuas_8h.tex | 192 + doc/latex/ciot__opcuas_8h_source.tex | 43 + doc/latex/ciot__opcuas__types_8h.tex | 104 + doc/latex/ciot__opcuas__types_8h_source.tex | 71 + doc/latex/ciot__ota_8h.tex | 281 + doc/latex/ciot__ota_8h_source.tex | 65 + doc/latex/ciot__ota__types_8h.tex | 141 + doc/latex/ciot__ota__types_8h_source.tex | 78 + doc/latex/ciot__s_8h.tex | 274 + doc/latex/ciot__s_8h_source.tex | 66 + doc/latex/ciot__serializer_8h.tex | 198 + doc/latex/ciot__serializer_8h_source.tex | 46 + doc/latex/ciot__slip_8h.tex | 145 + doc/latex/ciot__slip_8h_source.tex | 43 + doc/latex/ciot__storage_8h.tex | 273 + doc/latex/ciot__storage_8h_source.tex | 51 + doc/latex/ciot__storage__types_8h.tex | 138 + doc/latex/ciot__storage__types_8h_source.tex | 73 + doc/latex/ciot__sys_8h.tex | 296 + doc/latex/ciot__sys_8h_source.tex | 55 + doc/latex/ciot__sys__types_8h.tex | 137 + doc/latex/ciot__sys__types_8h_source.tex | 112 + doc/latex/ciot__tcp_8h.tex | 291 + doc/latex/ciot__tcp_8h_source.tex | 62 + doc/latex/ciot__tcp__types_8h.tex | 171 + doc/latex/ciot__tcp__types_8h_source.tex | 97 + doc/latex/ciot__timer_8h.tex | 130 + doc/latex/ciot__timer_8h_source.tex | 30 + doc/latex/ciot__types_8h.tex | 117 + doc/latex/ciot__types_8h_source.tex | 96 + doc/latex/ciot__uart_8h.tex | 340 ++ doc/latex/ciot__uart_8h_source.tex | 80 + doc/latex/ciot__uart__types_8h.tex | 198 + doc/latex/ciot__uart__types_8h_source.tex | 104 + doc/latex/ciot__usb_8h.tex | 395 ++ doc/latex/ciot__usb_8h_source.tex | 78 + doc/latex/ciot__usb__types_8h.tex | 108 + doc/latex/ciot__usb__types_8h_source.tex | 68 + doc/latex/ciot__utils_8h.tex | 58 + doc/latex/ciot__utils_8h_source.tex | 27 + doc/latex/ciot__wifi_8h.tex | 324 + doc/latex/ciot__wifi_8h_source.tex | 64 + doc/latex/ciot__wifi__types_8h.tex | 150 + doc/latex/ciot__wifi__types_8h_source.tex | 95 + .../dir_0ad255a918b7fba820a1ddafed6fa637.tex | 45 + .../dir_d44c64559bbebec7f509842c48db8b23.tex | 78 + doc/latex/doxygen.sty | 694 +++ doc/latex/etoc_doxygen.sty | 2178 +++++++ doc/latex/files.tex | 57 + doc/latex/group___common.tex | 21 + doc/latex/group___hardware.tex | 21 + doc/latex/group___software.tex | 37 + doc/latex/group___utils.tex | 14 + doc/latex/group__hardware__interfaces.tex | 33 + doc/latex/group__hardware__types.tex | 31 + doc/latex/group__slip.tex | 126 + doc/latex/group__software__interfaces.tex | 31 + doc/latex/group__software__types.tex | 33 + doc/latex/group__uart__apis.tex | 162 + doc/latex/longtable_doxygen.sty | 456 ++ doc/latex/make.bat | 56 + doc/latex/refman.tex | 509 ++ doc/latex/structciot__ble__cfg__t.tex | 33 + doc/latex/structciot__ble__ifaces.tex | 33 + doc/latex/structciot__ble__info__t.tex | 41 + doc/latex/structciot__ble__req__t.tex | 41 + .../structciot__ble__scn__adv__info__t.tex | 41 + doc/latex/structciot__ble__scn__cfg__t.tex | 73 + doc/latex/structciot__ble__scn__req__t.tex | 41 + .../structciot__ble__scn__status__msg__t.tex | 41 + doc/latex/structciot__ble__scn__status__t.tex | 49 + doc/latex/structciot__ble__status__msg__t.tex | 41 + doc/latex/structciot__ble__status__t.tex | 49 + doc/latex/structciot__bridge__cfg__t.tex | 33 + doc/latex/structciot__bridge__req__t.tex | 41 + .../structciot__bridge__status__msg__t.tex | 41 + doc/latex/structciot__bridge__status__t.tex | 33 + doc/latex/structciot__cfg.tex | 61 + doc/latex/structciot__data__model__cfg__t.tex | 19 + doc/latex/structciot__data__model__req__t.tex | 41 + .../structciot__data__model__status__t.tex | 33 + doc/latex/structciot__dfu__cfg__t.tex | 33 + doc/latex/structciot__dfu__req__t.tex | 41 + doc/latex/structciot__dfu__status__msg__t.tex | 41 + doc/latex/structciot__dfu__status__t.tex | 65 + doc/latex/structciot__eth__status__msg__t.tex | 41 + doc/latex/structciot__event__data.tex | 41 + doc/latex/structciot__gpio__cfg__t.tex | 49 + .../structciot__gpio__req__get__state__t.tex | 33 + doc/latex/structciot__gpio__req__t.tex | 41 + .../structciot__gpio__state__info__t.tex | 41 + .../structciot__gpio__status__msg__t.tex | 41 + doc/latex/structciot__gpio__status__t.tex | 33 + doc/latex/structciot__httpc__cfg__t.tex | 57 + doc/latex/structciot__httpc__event__data.tex | 41 + doc/latex/structciot__httpc__req__send__t.tex | 49 + ...structciot__httpc__req__set__header__t.tex | 41 + doc/latex/structciot__httpc__req__t.tex | 41 + .../structciot__httpc__status__msg__t.tex | 41 + doc/latex/structciot__httpc__status__t.tex | 41 + doc/latex/structciot__https__cfg__t.tex | 49 + doc/latex/structciot__https__event.tex | 33 + doc/latex/structciot__https__event__data.tex | 49 + doc/latex/structciot__https__req__t.tex | 33 + .../structciot__https__status__msg__t.tex | 41 + doc/latex/structciot__https__status__t.tex | 41 + doc/latex/structciot__iface.tex | 65 + doc/latex/structciot__iface__base.tex | 89 + doc/latex/structciot__iface__base__data.tex | 41 + doc/latex/structciot__iface__cfg__t.tex | 19 + doc/latex/structciot__iface__event__t.tex | 49 + doc/latex/structciot__iface__req__info.tex | 65 + doc/latex/structciot__ifaces.tex | 153 + doc/latex/structciot__info__t.tex | 33 + doc/latex/structciot__mqttc__cfg__t.tex | 89 + doc/latex/structciot__mqttc__error__t.tex | 73 + doc/latex/structciot__mqttc__event.tex | 33 + doc/latex/structciot__mqttc__event__data.tex | 41 + .../structciot__mqttc__req__publish__t.tex | 57 + .../structciot__mqttc__req__subscribe__t.tex | 41 + doc/latex/structciot__mqttc__req__t.tex | 41 + .../structciot__mqttc__status__msg__t.tex | 41 + doc/latex/structciot__mqttc__status__t.tex | 65 + .../structciot__mqttc__topics__cfg__t.tex | 41 + doc/latex/structciot__msg__error__t.tex | 41 + doc/latex/structciot__msg__header__t.tex | 49 + doc/latex/structciot__msg__iface__info__t.tex | 41 + doc/latex/structciot__msg__t.tex | 57 + doc/latex/structciot__nrf__dfu__cfg.tex | 65 + doc/latex/structciot__nrf__dfu__packet.tex | 57 + doc/latex/structciot__ntp__cfg__t.tex | 65 + doc/latex/structciot__ntp__req__t.tex | 41 + doc/latex/structciot__ntp__status__msg__t.tex | 41 + doc/latex/structciot__ntp__status__t.tex | 73 + doc/latex/structciot__opcuas__cfg__t.tex | 33 + .../structciot__opcuas__req__add__node__t.tex | 57 + doc/latex/structciot__opcuas__req__t.tex | 41 + .../structciot__opcuas__status__msg__t.tex | 41 + doc/latex/structciot__opcuas__status__t.tex | 33 + doc/latex/structciot__ota__cfg__t.tex | 65 + doc/latex/structciot__ota__req__t.tex | 41 + doc/latex/structciot__ota__status__msg__t.tex | 41 + doc/latex/structciot__ota__status__t.tex | 57 + ...structciot__req__delete__iface__cfg__t.tex | 33 + doc/latex/structciot__req__proxy__msg__t.tex | 49 + doc/latex/structciot__req__result__t.tex | 41 + .../structciot__req__save__iface__cfg__t.tex | 33 + doc/latex/structciot__req__t.tex | 41 + doc/latex/structciot__s__cfg.tex | 57 + doc/latex/structciot__serializer.tex | 49 + doc/latex/structciot__slip__t.tex | 73 + doc/latex/structciot__status__t.tex | 41 + doc/latex/structciot__storage__cfg__t.tex | 33 + ...tructciot__storage__req__file__data__t.tex | 49 + doc/latex/structciot__storage__req__t.tex | 41 + .../structciot__storage__status__msg__t.tex | 41 + doc/latex/structciot__storage__status__t.tex | 33 + doc/latex/structciot__sys__cfg__t.tex | 19 + doc/latex/structciot__sys__features__t.tex | 41 + .../structciot__sys__hw__features__t.tex | 97 + doc/latex/structciot__sys__info__t.tex | 57 + doc/latex/structciot__sys__req__t.tex | 41 + doc/latex/structciot__sys__status__msg__t.tex | 41 + doc/latex/structciot__sys__status__t.tex | 65 + .../structciot__sys__sw__features__t.tex | 97 + doc/latex/structciot__tcp__cfg__t.tex | 65 + .../structciot__tcp__dhcp__status__t.tex | 41 + doc/latex/structciot__tcp__handle.tex | 49 + doc/latex/structciot__tcp__info__t.tex | 41 + doc/latex/structciot__tcp__req__t.tex | 41 + doc/latex/structciot__tcp__status__msg__t.tex | 41 + doc/latex/structciot__tcp__status__t.tex | 57 + doc/latex/structciot__timer__cfg.tex | 41 + doc/latex/structciot__uart__base.tex | 57 + doc/latex/structciot__uart__cfg__t.tex | 113 + .../structciot__uart__req__send__data__t.tex | 41 + doc/latex/structciot__uart__req__t.tex | 41 + .../structciot__uart__status__msg__t.tex | 41 + doc/latex/structciot__uart__status__t.tex | 41 + doc/latex/structciot__usb__cfg__t.tex | 33 + doc/latex/structciot__usb__req__t.tex | 41 + doc/latex/structciot__usb__status__msg__t.tex | 41 + doc/latex/structciot__usb__status__t.tex | 33 + doc/latex/structciot__wifi__ap__info__t.tex | 57 + doc/latex/structciot__wifi__cfg__t.tex | 57 + doc/latex/structciot__wifi__req__t.tex | 41 + .../structciot__wifi__scan__result__t.tex | 41 + .../structciot__wifi__status__msg__t.tex | 49 + doc/latex/structciot__wifi__status__t.tex | 49 + doc/latex/structpacked.tex | 2835 +++++++++ doc/latex/tabu_doxygen.sty | 2557 ++++++++ doc/latex/topics.tex | 7 + doc/latex/unionciot__ble__data__u.tex | 49 + doc/latex/unionciot__ble__req__data__u.tex | 33 + doc/latex/unionciot__ble__scn__data__u.tex | 49 + .../unionciot__ble__scn__req__data__u.tex | 19 + doc/latex/unionciot__bridge__data__u.tex | 49 + doc/latex/unionciot__bridge__req__data__u.tex | 19 + doc/latex/unionciot__data__model__data__u.tex | 49 + .../unionciot__data__model__req__data__u.tex | 19 + doc/latex/unionciot__data__u.tex | 49 + doc/latex/unionciot__dfu__data__u.tex | 49 + doc/latex/unionciot__dfu__req__data__u.tex | 19 + doc/latex/unionciot__gpio__data__u.tex | 49 + doc/latex/unionciot__gpio__req__data__u.tex | 49 + doc/latex/unionciot__httpc__data__u.tex | 57 + doc/latex/unionciot__httpc__event.tex | 33 + doc/latex/unionciot__httpc__req__data.tex | 41 + doc/latex/unionciot__https__data__u.tex | 57 + doc/latex/unionciot__https__req__data__u.tex | 19 + .../unionciot__iface__event__data__u.tex | 41 + doc/latex/unionciot__mqttc__data__u.tex | 57 + doc/latex/unionciot__mqttc__req__data__u.tex | 41 + doc/latex/unionciot__msg__data__u.tex | 169 + doc/latex/unionciot__ntp__data__u.tex | 49 + doc/latex/unionciot__ntp__req__data__u.tex | 19 + doc/latex/unionciot__opcuas__data__u.tex | 49 + doc/latex/unionciot__opcuas__req__data__u.tex | 33 + doc/latex/unionciot__ota__data__u.tex | 49 + doc/latex/unionciot__ota__req__data__u.tex | 19 + doc/latex/unionciot__req__data__u.tex | 57 + doc/latex/unionciot__storage__data__u.tex | 49 + doc/latex/unionciot__sys__data__u.tex | 49 + doc/latex/unionciot__sys__req__data__u.tex | 19 + doc/latex/unionciot__tcp__data__u.tex | 49 + doc/latex/unionciot__tcp__req__data__u.tex | 19 + doc/latex/unionciot__uart__data__u.tex | 57 + doc/latex/unionciot__uart__event.tex | 33 + doc/latex/unionciot__uart__req__data__u.tex | 33 + doc/latex/unionciot__usb__data__u.tex | 57 + doc/latex/unionciot__usb__event.tex | 33 + doc/latex/unionciot__usb__req__data__u.tex | 19 + doc/latex/unionciot__wifi__data__u.tex | 49 + doc/latex/unionciot__wifi__req__data__u.tex | 33 + .../main/config/ciot_custom_config.h | 2 +- .../main/config/ciot_custom_config_win.h | 2 +- examples/iot_device/main/include/iot_device.h | 2 +- examples/iot_device/main/iot_device.c | 2 +- examples/iot_device/main/main.c | 2 +- examples/nrf_dfu_master/main/main.c | 2 +- include/ciot.h | 87 +- include/ciot_ble.h | 107 +- include/ciot_ble_scn.h | 68 +- include/ciot_bridge.h | 61 +- include/ciot_common_types.h | 13 +- include/ciot_config.h | 50 +- include/ciot_crc.h | 15 +- include/ciot_default.h | 6 +- include/ciot_dfu.h | 65 +- include/ciot_err.h | 94 +- include/ciot_eth.h | 69 +- include/ciot_gpio.h | 69 +- include/ciot_httpc.h | 64 +- include/ciot_https.h | 63 +- include/ciot_iface.h | 285 +- include/ciot_ifaces.h | 90 +- include/ciot_lib.h | 73 + include/ciot_log.h | 51 +- include/ciot_mqttc.h | 88 +- include/ciot_nrf_dfu.h | 200 +- include/ciot_ntp.h | 63 +- include/ciot_opcuas.h | 67 +- include/ciot_ota.h | 85 +- include/ciot_s.h | 84 +- include/ciot_serializer.h | 64 +- include/ciot_slip.h | 6 - include/ciot_storage.h | 97 +- include/ciot_sys.h | 100 +- include/ciot_tcp.h | 98 +- include/ciot_timer.h | 40 +- include/ciot_uart.h | 100 +- include/ciot_usb.h | 134 +- include/ciot_utils.h | 24 +- include/ciot_wifi.h | 108 +- include/types/ciot_ble_scn_types.h | 73 +- include/types/ciot_ble_types.h | 65 +- include/types/ciot_bridge_types.h | 52 +- include/types/ciot_data_model_types.h | 45 +- include/types/ciot_dfu_types.h | 75 +- include/types/ciot_gpio_types.h | 98 +- include/types/ciot_httpc_types.h | 161 +- include/types/ciot_https_types.h | 77 +- include/types/ciot_mqttc_types.h | 163 +- include/types/ciot_msg_types.h | 157 +- include/types/ciot_ntp_types.h | 74 +- include/types/ciot_opcuas_types.h | 69 +- include/types/ciot_ota_types.h | 88 +- include/types/ciot_storage_types.h | 75 +- include/types/ciot_sys_types.h | 134 +- include/types/ciot_tcp_types.h | 106 +- include/types/ciot_types.h | 96 +- include/types/ciot_uart_types.h | 121 +- include/types/ciot_usb_types.h | 59 +- include/types/ciot_wifi_types.h | 100 +- release/arduino/ciot/include/ciot.h | 2 +- release/arduino/ciot/include/ciot_ble.h | 2 +- release/arduino/ciot/include/ciot_ble_scn.h | 2 +- .../arduino/ciot/include/ciot_ble_scn_types.h | 2 +- release/arduino/ciot/include/ciot_ble_types.h | 2 +- release/arduino/ciot/include/ciot_bridge.h | 2 +- .../arduino/ciot/include/ciot_bridge_types.h | 2 +- .../arduino/ciot/include/ciot_common_types.h | 2 +- release/arduino/ciot/include/ciot_config.h | 2 +- .../ciot/include/ciot_data_model_types.h | 2 +- release/arduino/ciot/include/ciot_err.h | 2 +- release/arduino/ciot/include/ciot_eth.h | 2 +- release/arduino/ciot/include/ciot_httpc.h | 2 +- .../arduino/ciot/include/ciot_httpc_types.h | 2 +- release/arduino/ciot/include/ciot_https.h | 2 +- .../arduino/ciot/include/ciot_https_types.h | 2 +- release/arduino/ciot/include/ciot_iface.h | 2 +- release/arduino/ciot/include/ciot_log.h | 2 +- release/arduino/ciot/include/ciot_mqttc.h | 2 +- .../arduino/ciot/include/ciot_mqttc_types.h | 2 +- release/arduino/ciot/include/ciot_msg_types.h | 2 +- release/arduino/ciot/include/ciot_ntp.h | 2 +- release/arduino/ciot/include/ciot_ntp_types.h | 2 +- release/arduino/ciot/include/ciot_ota.h | 2 +- release/arduino/ciot/include/ciot_ota_types.h | 2 +- release/arduino/ciot/include/ciot_s.h | 2 +- release/arduino/ciot/include/ciot_storage.h | 2 +- .../arduino/ciot/include/ciot_storage_types.h | 2 +- release/arduino/ciot/include/ciot_sys.h | 2 +- release/arduino/ciot/include/ciot_sys_types.h | 2 +- release/arduino/ciot/include/ciot_tcp.h | 2 +- release/arduino/ciot/include/ciot_tcp_types.h | 2 +- release/arduino/ciot/include/ciot_types.h | 2 +- release/arduino/ciot/include/ciot_uart.h | 2 +- .../arduino/ciot/include/ciot_uart_types.h | 2 +- release/arduino/ciot/include/ciot_usb.h | 2 +- release/arduino/ciot/include/ciot_usb_types.h | 2 +- release/arduino/ciot/include/ciot_utils.h | 2 +- release/arduino/ciot/include/ciot_wifi.h | 2 +- .../arduino/ciot/include/ciot_wifi_types.h | 2 +- release/arduino/ciot/src/ciot.c | 2 +- release/arduino/ciot/src/ciot_bridge.c | 2 +- release/arduino/ciot/src/ciot_common.c | 2 +- release/arduino/ciot/src/ciot_err.c | 2 +- release/arduino/ciot/src/ciot_iface.c | 2 +- release/arduino/ciot/src/ciot_msg_types.c | 2 +- release/arduino/ciot/src/ciot_s.c | 2 +- release/arduino/ciot/src/ciot_sys.c | 2 +- release/arduino/ciot/src/ciot_uart.cpp | 2 +- release/arduino/ciot/src/ciot_uart_common.c | 2 +- release/arduino/ciot/src/ciot_utils.c | 2 +- src/common/ciot.c | 2 +- src/common/ciot_bridge.c | 2 +- src/common/ciot_crc.c | 2 +- src/common/ciot_err.c | 2 +- src/common/ciot_iface.c | 2 +- src/common/ciot_msg_types.c | 2 +- src/common/ciot_nrf_dfu.c | 2 +- src/common/ciot_s.c | 2 +- src/common/ciot_serializer.c | 2 +- src/common/ciot_sys_common.c | 2 +- src/common/ciot_timer_common.c | 2 +- src/common/ciot_uart_common.c | 2 +- src/common/ciot_utils.c | 2 +- src/esp32/ciot_crc.c | 2 +- src/esp32/ciot_eth.c | 2 +- src/esp32/ciot_gpio.c | 2 +- src/esp32/ciot_httpc.c | 2 +- src/esp32/ciot_https.c | 2 +- src/esp32/ciot_mqttc.c | 2 +- src/esp32/ciot_ntp.c | 2 +- src/esp32/ciot_ota.c | 2 +- src/esp32/ciot_storage.c | 2 +- src/esp32/ciot_sys.c | 2 +- src/esp32/ciot_tcp.c | 2 +- src/esp32/ciot_uart.c | 2 +- src/esp32/ciot_wifi.c | 2 +- src/esp8266/ciot_ntp.c | 2 +- src/esp8266/ciot_storage.c | 2 +- src/esp8266/ciot_tcp.c | 2 +- src/esp8266/ciot_wifi.c | 2 +- src/ino/ciot_sys.c | 2 +- src/ino/ciot_uart.cpp | 2 +- src/mg/ciot_eth.c | 2 +- src/mg/ciot_httpc.c | 2 +- src/mg/ciot_https.c | 2 +- src/mg/ciot_mqttc.c | 2 +- src/mg/ciot_ntp.c | 2 +- src/mg/ciot_ota.c | 2 +- src/mg/ciot_storage.c | 2 +- src/mg/ciot_sys.c | 2 +- src/nrf/ciot_ble.c | 2 +- src/nrf/ciot_ble_scn.c | 2 +- src/nrf/ciot_sys.c | 2 +- src/nrf/ciot_timer.c | 2 +- src/nrf/ciot_uart.c | 2 +- src/nrf/ciot_usb.c | 2 +- src/opcua/ciot_opcuas.c | 2 +- src/proto/proto_serializer.c | 2 +- src/proto/proto_serializer.h | 2 +- src/proto/proto_serializer_pack.c | 2 +- src/proto/proto_serializer_unpack.c | 2 +- src/unsupported/ciot_gpio.c | 2 +- src/unsupported/ciot_ota.c | 2 +- src/unsupported/ciot_tcp.c | 2 +- src/unsupported/ciot_wifi.c | 2 +- src/win/ciot_uart.c | 2 +- tests/ciot_custom_config.h | 2 +- tests/ciot_custom_config_win.h | 2 +- tests/serialization_test.c | 2 +- 1173 files changed, 131664 insertions(+), 1339 deletions(-) create mode 100644 Doxyfile create mode 100644 doc/html/annotated.html create mode 100644 doc/html/annotated_dup.js create mode 100644 doc/html/bc_s.png create mode 100644 doc/html/bc_sd.png create mode 100644 doc/html/ciot_8h.html create mode 100644 doc/html/ciot_8h.js create mode 100644 doc/html/ciot_8h_source.html create mode 100644 doc/html/ciot__ble_8h.html create mode 100644 doc/html/ciot__ble_8h.js create mode 100644 doc/html/ciot__ble_8h_source.html create mode 100644 doc/html/ciot__ble__scn_8h.html create mode 100644 doc/html/ciot__ble__scn_8h.js create mode 100644 doc/html/ciot__ble__scn_8h_source.html create mode 100644 doc/html/ciot__ble__scn__types_8h.html create mode 100644 doc/html/ciot__ble__scn__types_8h.js create mode 100644 doc/html/ciot__ble__scn__types_8h_source.html create mode 100644 doc/html/ciot__ble__types_8h.html create mode 100644 doc/html/ciot__ble__types_8h.js create mode 100644 doc/html/ciot__ble__types_8h_source.html create mode 100644 doc/html/ciot__bridge_8h.html create mode 100644 doc/html/ciot__bridge_8h.js create mode 100644 doc/html/ciot__bridge_8h_source.html create mode 100644 doc/html/ciot__bridge__types_8h.html create mode 100644 doc/html/ciot__bridge__types_8h.js create mode 100644 doc/html/ciot__bridge__types_8h_source.html create mode 100644 doc/html/ciot__common__types_8h.html create mode 100644 doc/html/ciot__common__types_8h.js create mode 100644 doc/html/ciot__common__types_8h_source.html create mode 100644 doc/html/ciot__config_8h.html create mode 100644 doc/html/ciot__config_8h.js create mode 100644 doc/html/ciot__config_8h_source.html create mode 100644 doc/html/ciot__crc_8h.html create mode 100644 doc/html/ciot__crc_8h.js create mode 100644 doc/html/ciot__crc_8h_source.html create mode 100644 doc/html/ciot__data__model__types_8h.html create mode 100644 doc/html/ciot__data__model__types_8h.js create mode 100644 doc/html/ciot__data__model__types_8h_source.html create mode 100644 doc/html/ciot__default_8h.html create mode 100644 doc/html/ciot__default_8h.js create mode 100644 doc/html/ciot__default_8h_source.html create mode 100644 doc/html/ciot__dfu_8h.html create mode 100644 doc/html/ciot__dfu_8h.js create mode 100644 doc/html/ciot__dfu_8h_source.html create mode 100644 doc/html/ciot__dfu__types_8h.html create mode 100644 doc/html/ciot__dfu__types_8h.js create mode 100644 doc/html/ciot__dfu__types_8h_source.html create mode 100644 doc/html/ciot__err_8h.html create mode 100644 doc/html/ciot__err_8h.js create mode 100644 doc/html/ciot__err_8h_source.html create mode 100644 doc/html/ciot__eth_8h.html create mode 100644 doc/html/ciot__eth_8h.js create mode 100644 doc/html/ciot__eth_8h_source.html create mode 100644 doc/html/ciot__gpio_8h.html create mode 100644 doc/html/ciot__gpio_8h.js create mode 100644 doc/html/ciot__gpio_8h_source.html create mode 100644 doc/html/ciot__gpio__types_8h.html create mode 100644 doc/html/ciot__gpio__types_8h.js create mode 100644 doc/html/ciot__gpio__types_8h_source.html create mode 100644 doc/html/ciot__httpc_8h.html create mode 100644 doc/html/ciot__httpc_8h.js create mode 100644 doc/html/ciot__httpc_8h_source.html create mode 100644 doc/html/ciot__httpc__types_8h.html create mode 100644 doc/html/ciot__httpc__types_8h.js create mode 100644 doc/html/ciot__httpc__types_8h_source.html create mode 100644 doc/html/ciot__https_8h.html create mode 100644 doc/html/ciot__https_8h.js create mode 100644 doc/html/ciot__https_8h_source.html create mode 100644 doc/html/ciot__https__types_8h.html create mode 100644 doc/html/ciot__https__types_8h.js create mode 100644 doc/html/ciot__https__types_8h_source.html create mode 100644 doc/html/ciot__iface_8h.html create mode 100644 doc/html/ciot__iface_8h.js create mode 100644 doc/html/ciot__iface_8h_source.html create mode 100644 doc/html/ciot__ifaces_8h.html create mode 100644 doc/html/ciot__ifaces_8h.js create mode 100644 doc/html/ciot__ifaces_8h_source.html create mode 100644 doc/html/ciot__lib_8h.html create mode 100644 doc/html/ciot__lib_8h_source.html create mode 100644 doc/html/ciot__log_8h.html create mode 100644 doc/html/ciot__log_8h.js create mode 100644 doc/html/ciot__log_8h_source.html create mode 100644 doc/html/ciot__mqttc_8h.html create mode 100644 doc/html/ciot__mqttc_8h.js create mode 100644 doc/html/ciot__mqttc_8h_source.html create mode 100644 doc/html/ciot__mqttc__types_8h.html create mode 100644 doc/html/ciot__mqttc__types_8h.js create mode 100644 doc/html/ciot__mqttc__types_8h_source.html create mode 100644 doc/html/ciot__msg__types_8h.html create mode 100644 doc/html/ciot__msg__types_8h.js create mode 100644 doc/html/ciot__msg__types_8h_source.html create mode 100644 doc/html/ciot__nrf__dfu_8h.html create mode 100644 doc/html/ciot__nrf__dfu_8h.js create mode 100644 doc/html/ciot__nrf__dfu_8h_source.html create mode 100644 doc/html/ciot__ntp_8h.html create mode 100644 doc/html/ciot__ntp_8h.js create mode 100644 doc/html/ciot__ntp_8h_source.html create mode 100644 doc/html/ciot__ntp__types_8h.html create mode 100644 doc/html/ciot__ntp__types_8h.js create mode 100644 doc/html/ciot__ntp__types_8h_source.html create mode 100644 doc/html/ciot__opcuas_8h.html create mode 100644 doc/html/ciot__opcuas_8h.js create mode 100644 doc/html/ciot__opcuas_8h_source.html create mode 100644 doc/html/ciot__opcuas__types_8h.html create mode 100644 doc/html/ciot__opcuas__types_8h.js create mode 100644 doc/html/ciot__opcuas__types_8h_source.html create mode 100644 doc/html/ciot__ota_8h.html create mode 100644 doc/html/ciot__ota_8h.js create mode 100644 doc/html/ciot__ota_8h_source.html create mode 100644 doc/html/ciot__ota__types_8h.html create mode 100644 doc/html/ciot__ota__types_8h.js create mode 100644 doc/html/ciot__ota__types_8h_source.html create mode 100644 doc/html/ciot__s_8h.html create mode 100644 doc/html/ciot__s_8h.js create mode 100644 doc/html/ciot__s_8h_source.html create mode 100644 doc/html/ciot__serializer_8h.html create mode 100644 doc/html/ciot__serializer_8h.js create mode 100644 doc/html/ciot__serializer_8h_source.html create mode 100644 doc/html/ciot__slip_8h.html create mode 100644 doc/html/ciot__slip_8h.js create mode 100644 doc/html/ciot__slip_8h_source.html create mode 100644 doc/html/ciot__storage_8h.html create mode 100644 doc/html/ciot__storage_8h.js create mode 100644 doc/html/ciot__storage_8h_source.html create mode 100644 doc/html/ciot__storage__types_8h.html create mode 100644 doc/html/ciot__storage__types_8h.js create mode 100644 doc/html/ciot__storage__types_8h_source.html create mode 100644 doc/html/ciot__sys_8h.html create mode 100644 doc/html/ciot__sys_8h.js create mode 100644 doc/html/ciot__sys_8h_source.html create mode 100644 doc/html/ciot__sys__types_8h.html create mode 100644 doc/html/ciot__sys__types_8h.js create mode 100644 doc/html/ciot__sys__types_8h_source.html create mode 100644 doc/html/ciot__tcp_8h.html create mode 100644 doc/html/ciot__tcp_8h.js create mode 100644 doc/html/ciot__tcp_8h_source.html create mode 100644 doc/html/ciot__tcp__types_8h.html create mode 100644 doc/html/ciot__tcp__types_8h.js create mode 100644 doc/html/ciot__tcp__types_8h_source.html create mode 100644 doc/html/ciot__timer_8h.html create mode 100644 doc/html/ciot__timer_8h.js create mode 100644 doc/html/ciot__timer_8h_source.html create mode 100644 doc/html/ciot__types_8h.html create mode 100644 doc/html/ciot__types_8h.js create mode 100644 doc/html/ciot__types_8h_source.html create mode 100644 doc/html/ciot__uart_8h.html create mode 100644 doc/html/ciot__uart_8h.js create mode 100644 doc/html/ciot__uart_8h_source.html create mode 100644 doc/html/ciot__uart__types_8h.html create mode 100644 doc/html/ciot__uart__types_8h.js create mode 100644 doc/html/ciot__uart__types_8h_source.html create mode 100644 doc/html/ciot__usb_8h.html create mode 100644 doc/html/ciot__usb_8h.js create mode 100644 doc/html/ciot__usb_8h_source.html create mode 100644 doc/html/ciot__usb__types_8h.html create mode 100644 doc/html/ciot__usb__types_8h.js create mode 100644 doc/html/ciot__usb__types_8h_source.html create mode 100644 doc/html/ciot__utils_8h.html create mode 100644 doc/html/ciot__utils_8h.js create mode 100644 doc/html/ciot__utils_8h_source.html create mode 100644 doc/html/ciot__wifi_8h.html create mode 100644 doc/html/ciot__wifi_8h.js create mode 100644 doc/html/ciot__wifi_8h_source.html create mode 100644 doc/html/ciot__wifi__types_8h.html create mode 100644 doc/html/ciot__wifi__types_8h.js create mode 100644 doc/html/ciot__wifi__types_8h_source.html create mode 100644 doc/html/classes.html create mode 100644 doc/html/clipboard.js create mode 100644 doc/html/closed.png create mode 100644 doc/html/cookie.js create mode 100644 doc/html/dir_0ad255a918b7fba820a1ddafed6fa637.html create mode 100644 doc/html/dir_0ad255a918b7fba820a1ddafed6fa637.js create mode 100644 doc/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/html/dir_d44c64559bbebec7f509842c48db8b23.js create mode 100644 doc/html/doc.svg create mode 100644 doc/html/docd.svg create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.svg create mode 100644 doc/html/doxygen_crawl.html create mode 100644 doc/html/dynsections.js create mode 100644 doc/html/files.html create mode 100644 doc/html/files_dup.js create mode 100644 doc/html/folderclosed.svg create mode 100644 doc/html/folderclosedd.svg create mode 100644 doc/html/folderopen.svg create mode 100644 doc/html/folderopend.svg create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_b.html create mode 100644 doc/html/functions_c.html create mode 100644 doc/html/functions_d.html create mode 100644 doc/html/functions_dup.js create mode 100644 doc/html/functions_e.html create mode 100644 doc/html/functions_f.html create mode 100644 doc/html/functions_g.html create mode 100644 doc/html/functions_h.html create mode 100644 doc/html/functions_i.html create mode 100644 doc/html/functions_l.html create mode 100644 doc/html/functions_m.html create mode 100644 doc/html/functions_n.html create mode 100644 doc/html/functions_o.html create mode 100644 doc/html/functions_p.html create mode 100644 doc/html/functions_q.html create mode 100644 doc/html/functions_r.html create mode 100644 doc/html/functions_s.html create mode 100644 doc/html/functions_t.html create mode 100644 doc/html/functions_u.html create mode 100644 doc/html/functions_v.html create mode 100644 doc/html/functions_vars.html create mode 100644 doc/html/functions_vars.js create mode 100644 doc/html/functions_vars_b.html create mode 100644 doc/html/functions_vars_c.html create mode 100644 doc/html/functions_vars_d.html create mode 100644 doc/html/functions_vars_e.html create mode 100644 doc/html/functions_vars_f.html create mode 100644 doc/html/functions_vars_g.html create mode 100644 doc/html/functions_vars_h.html create mode 100644 doc/html/functions_vars_i.html create mode 100644 doc/html/functions_vars_l.html create mode 100644 doc/html/functions_vars_m.html create mode 100644 doc/html/functions_vars_n.html create mode 100644 doc/html/functions_vars_o.html create mode 100644 doc/html/functions_vars_p.html create mode 100644 doc/html/functions_vars_q.html create mode 100644 doc/html/functions_vars_r.html create mode 100644 doc/html/functions_vars_s.html create mode 100644 doc/html/functions_vars_t.html create mode 100644 doc/html/functions_vars_u.html create mode 100644 doc/html/functions_vars_v.html create mode 100644 doc/html/functions_vars_w.html create mode 100644 doc/html/functions_w.html create mode 100644 doc/html/globals.html create mode 100644 doc/html/globals_b.html create mode 100644 doc/html/globals_c.html create mode 100644 doc/html/globals_defs.html create mode 100644 doc/html/globals_dup.js create mode 100644 doc/html/globals_enum.html create mode 100644 doc/html/globals_eval.html create mode 100644 doc/html/globals_eval.js create mode 100644 doc/html/globals_eval_h.html create mode 100644 doc/html/globals_eval_n.html create mode 100644 doc/html/globals_func.html create mode 100644 doc/html/globals_func.js create mode 100644 doc/html/globals_func_b.html create mode 100644 doc/html/globals_func_c.html create mode 100644 doc/html/globals_h.html create mode 100644 doc/html/globals_n.html create mode 100644 doc/html/globals_p.html create mode 100644 doc/html/globals_type.html create mode 100644 doc/html/globals_type.js create mode 100644 doc/html/globals_vars.html create mode 100644 doc/html/group___common.html create mode 100644 doc/html/group___hardware.html create mode 100644 doc/html/group___software.html create mode 100644 doc/html/group___utils.html create mode 100644 doc/html/group___utils.js create mode 100644 doc/html/group__hardware__interfaces.html create mode 100644 doc/html/group__hardware__interfaces.js create mode 100644 doc/html/group__hardware__types.html create mode 100644 doc/html/group__hardware__types.js create mode 100644 doc/html/group__slip.html create mode 100644 doc/html/group__slip.js create mode 100644 doc/html/group__software__interfaces.html create mode 100644 doc/html/group__software__interfaces.js create mode 100644 doc/html/group__software__types.html create mode 100644 doc/html/group__software__types.js create mode 100644 doc/html/group__uart__apis.html create mode 100644 doc/html/group__uart__apis.js create mode 100644 doc/html/index.html create mode 100644 doc/html/jquery.js create mode 100644 doc/html/menu.js create mode 100644 doc/html/menudata.js create mode 100644 doc/html/minus.svg create mode 100644 doc/html/minusd.svg create mode 100644 doc/html/nav_f.png create mode 100644 doc/html/nav_fd.png create mode 100644 doc/html/nav_g.png create mode 100644 doc/html/nav_h.png create mode 100644 doc/html/nav_hd.png create mode 100644 doc/html/navtree.css create mode 100644 doc/html/navtree.js create mode 100644 doc/html/navtreedata.js create mode 100644 doc/html/navtreeindex0.js create mode 100644 doc/html/navtreeindex1.js create mode 100644 doc/html/navtreeindex2.js create mode 100644 doc/html/navtreeindex3.js create mode 100644 doc/html/navtreeindex4.js create mode 100644 doc/html/open.png create mode 100644 doc/html/plus.svg create mode 100644 doc/html/plusd.svg create mode 100644 doc/html/resize.js create mode 100644 doc/html/search/all_0.js create mode 100644 doc/html/search/all_1.js create mode 100644 doc/html/search/all_10.js create mode 100644 doc/html/search/all_11.js create mode 100644 doc/html/search/all_12.js create mode 100644 doc/html/search/all_13.js create mode 100644 doc/html/search/all_14.js create mode 100644 doc/html/search/all_2.js create mode 100644 doc/html/search/all_3.js create mode 100644 doc/html/search/all_4.js create mode 100644 doc/html/search/all_5.js create mode 100644 doc/html/search/all_6.js create mode 100644 doc/html/search/all_7.js create mode 100644 doc/html/search/all_8.js create mode 100644 doc/html/search/all_9.js create mode 100644 doc/html/search/all_a.js create mode 100644 doc/html/search/all_b.js create mode 100644 doc/html/search/all_c.js create mode 100644 doc/html/search/all_d.js create mode 100644 doc/html/search/all_e.js create mode 100644 doc/html/search/all_f.js create mode 100644 doc/html/search/classes_0.js create mode 100644 doc/html/search/classes_1.js create mode 100644 doc/html/search/close.svg create mode 100644 doc/html/search/defines_0.js create mode 100644 doc/html/search/defines_1.js create mode 100644 doc/html/search/enums_0.js create mode 100644 doc/html/search/enums_1.js create mode 100644 doc/html/search/enumvalues_0.js create mode 100644 doc/html/search/enumvalues_1.js create mode 100644 doc/html/search/enumvalues_2.js create mode 100644 doc/html/search/files_0.js create mode 100644 doc/html/search/functions_0.js create mode 100644 doc/html/search/functions_1.js create mode 100644 doc/html/search/functions_2.js create mode 100644 doc/html/search/groups_0.js create mode 100644 doc/html/search/groups_1.js create mode 100644 doc/html/search/groups_2.js create mode 100644 doc/html/search/groups_3.js create mode 100644 doc/html/search/groups_4.js create mode 100644 doc/html/search/groups_5.js create mode 100644 doc/html/search/groups_6.js create mode 100644 doc/html/search/mag.svg create mode 100644 doc/html/search/mag_d.svg create mode 100644 doc/html/search/mag_sel.svg create mode 100644 doc/html/search/mag_seld.svg create mode 100644 doc/html/search/search.css create mode 100644 doc/html/search/search.js create mode 100644 doc/html/search/searchdata.js create mode 100644 doc/html/search/typedefs_0.js create mode 100644 doc/html/search/variables_0.js create mode 100644 doc/html/search/variables_1.js create mode 100644 doc/html/search/variables_10.js create mode 100644 doc/html/search/variables_11.js create mode 100644 doc/html/search/variables_12.js create mode 100644 doc/html/search/variables_13.js create mode 100644 doc/html/search/variables_14.js create mode 100644 doc/html/search/variables_2.js create mode 100644 doc/html/search/variables_3.js create mode 100644 doc/html/search/variables_4.js create mode 100644 doc/html/search/variables_5.js create mode 100644 doc/html/search/variables_6.js create mode 100644 doc/html/search/variables_7.js create mode 100644 doc/html/search/variables_8.js create mode 100644 doc/html/search/variables_9.js create mode 100644 doc/html/search/variables_a.js create mode 100644 doc/html/search/variables_b.js create mode 100644 doc/html/search/variables_c.js create mode 100644 doc/html/search/variables_d.js create mode 100644 doc/html/search/variables_e.js create mode 100644 doc/html/search/variables_f.js create mode 100644 doc/html/splitbar.png create mode 100644 doc/html/splitbard.png create mode 100644 doc/html/structciot__ble__cfg__t.html create mode 100644 doc/html/structciot__ble__cfg__t.js create mode 100644 doc/html/structciot__ble__ifaces.html create mode 100644 doc/html/structciot__ble__ifaces.js create mode 100644 doc/html/structciot__ble__info__t.html create mode 100644 doc/html/structciot__ble__info__t.js create mode 100644 doc/html/structciot__ble__req__t.html create mode 100644 doc/html/structciot__ble__req__t.js create mode 100644 doc/html/structciot__ble__scn__adv__info__t.html create mode 100644 doc/html/structciot__ble__scn__adv__info__t.js create mode 100644 doc/html/structciot__ble__scn__cfg__t.html create mode 100644 doc/html/structciot__ble__scn__cfg__t.js create mode 100644 doc/html/structciot__ble__scn__req__t.html create mode 100644 doc/html/structciot__ble__scn__req__t.js create mode 100644 doc/html/structciot__ble__scn__status__msg__t.html create mode 100644 doc/html/structciot__ble__scn__status__msg__t.js create mode 100644 doc/html/structciot__ble__scn__status__t.html create mode 100644 doc/html/structciot__ble__scn__status__t.js create mode 100644 doc/html/structciot__ble__status__msg__t.html create mode 100644 doc/html/structciot__ble__status__msg__t.js create mode 100644 doc/html/structciot__ble__status__t.html create mode 100644 doc/html/structciot__ble__status__t.js create mode 100644 doc/html/structciot__bridge__cfg__t.html create mode 100644 doc/html/structciot__bridge__cfg__t.js create mode 100644 doc/html/structciot__bridge__req__t.html create mode 100644 doc/html/structciot__bridge__req__t.js create mode 100644 doc/html/structciot__bridge__status__msg__t.html create mode 100644 doc/html/structciot__bridge__status__msg__t.js create mode 100644 doc/html/structciot__bridge__status__t.html create mode 100644 doc/html/structciot__bridge__status__t.js create mode 100644 doc/html/structciot__cfg.html create mode 100644 doc/html/structciot__cfg.js create mode 100644 doc/html/structciot__data__model__cfg__t.html create mode 100644 doc/html/structciot__data__model__req__t.html create mode 100644 doc/html/structciot__data__model__req__t.js create mode 100644 doc/html/structciot__data__model__status__t.html create mode 100644 doc/html/structciot__data__model__status__t.js create mode 100644 doc/html/structciot__dfu__cfg__t.html create mode 100644 doc/html/structciot__dfu__cfg__t.js create mode 100644 doc/html/structciot__dfu__req__t.html create mode 100644 doc/html/structciot__dfu__req__t.js create mode 100644 doc/html/structciot__dfu__status__msg__t.html create mode 100644 doc/html/structciot__dfu__status__msg__t.js create mode 100644 doc/html/structciot__dfu__status__t.html create mode 100644 doc/html/structciot__dfu__status__t.js create mode 100644 doc/html/structciot__eth__status__msg__t.html create mode 100644 doc/html/structciot__eth__status__msg__t.js create mode 100644 doc/html/structciot__event__data.html create mode 100644 doc/html/structciot__event__data.js create mode 100644 doc/html/structciot__gpio__cfg__t.html create mode 100644 doc/html/structciot__gpio__cfg__t.js create mode 100644 doc/html/structciot__gpio__req__get__state__t.html create mode 100644 doc/html/structciot__gpio__req__get__state__t.js create mode 100644 doc/html/structciot__gpio__req__t.html create mode 100644 doc/html/structciot__gpio__req__t.js create mode 100644 doc/html/structciot__gpio__state__info__t.html create mode 100644 doc/html/structciot__gpio__state__info__t.js create mode 100644 doc/html/structciot__gpio__status__msg__t.html create mode 100644 doc/html/structciot__gpio__status__msg__t.js create mode 100644 doc/html/structciot__gpio__status__t.html create mode 100644 doc/html/structciot__gpio__status__t.js create mode 100644 doc/html/structciot__httpc__cfg__t.html create mode 100644 doc/html/structciot__httpc__cfg__t.js create mode 100644 doc/html/structciot__httpc__event__data.html create mode 100644 doc/html/structciot__httpc__event__data.js create mode 100644 doc/html/structciot__httpc__req__send__t.html create mode 100644 doc/html/structciot__httpc__req__send__t.js create mode 100644 doc/html/structciot__httpc__req__set__header__t.html create mode 100644 doc/html/structciot__httpc__req__set__header__t.js create mode 100644 doc/html/structciot__httpc__req__t.html create mode 100644 doc/html/structciot__httpc__req__t.js create mode 100644 doc/html/structciot__httpc__status__msg__t.html create mode 100644 doc/html/structciot__httpc__status__msg__t.js create mode 100644 doc/html/structciot__httpc__status__t.html create mode 100644 doc/html/structciot__httpc__status__t.js create mode 100644 doc/html/structciot__https__cfg__t.html create mode 100644 doc/html/structciot__https__cfg__t.js create mode 100644 doc/html/structciot__https__event.html create mode 100644 doc/html/structciot__https__event.js create mode 100644 doc/html/structciot__https__event__data.html create mode 100644 doc/html/structciot__https__event__data.js create mode 100644 doc/html/structciot__https__req__t.html create mode 100644 doc/html/structciot__https__req__t.js create mode 100644 doc/html/structciot__https__status__msg__t.html create mode 100644 doc/html/structciot__https__status__msg__t.js create mode 100644 doc/html/structciot__https__status__t.html create mode 100644 doc/html/structciot__https__status__t.js create mode 100644 doc/html/structciot__iface.html create mode 100644 doc/html/structciot__iface.js create mode 100644 doc/html/structciot__iface__base.html create mode 100644 doc/html/structciot__iface__base.js create mode 100644 doc/html/structciot__iface__base__data.html create mode 100644 doc/html/structciot__iface__base__data.js create mode 100644 doc/html/structciot__iface__cfg__t.html create mode 100644 doc/html/structciot__iface__event__t.html create mode 100644 doc/html/structciot__iface__event__t.js create mode 100644 doc/html/structciot__iface__req__info.html create mode 100644 doc/html/structciot__iface__req__info.js create mode 100644 doc/html/structciot__ifaces.html create mode 100644 doc/html/structciot__ifaces.js create mode 100644 doc/html/structciot__info__t.html create mode 100644 doc/html/structciot__info__t.js create mode 100644 doc/html/structciot__mqttc__cfg__t.html create mode 100644 doc/html/structciot__mqttc__cfg__t.js create mode 100644 doc/html/structciot__mqttc__error__t.html create mode 100644 doc/html/structciot__mqttc__error__t.js create mode 100644 doc/html/structciot__mqttc__event.html create mode 100644 doc/html/structciot__mqttc__event.js create mode 100644 doc/html/structciot__mqttc__event__data.html create mode 100644 doc/html/structciot__mqttc__event__data.js create mode 100644 doc/html/structciot__mqttc__req__publish__t.html create mode 100644 doc/html/structciot__mqttc__req__publish__t.js create mode 100644 doc/html/structciot__mqttc__req__subscribe__t.html create mode 100644 doc/html/structciot__mqttc__req__subscribe__t.js create mode 100644 doc/html/structciot__mqttc__req__t.html create mode 100644 doc/html/structciot__mqttc__req__t.js create mode 100644 doc/html/structciot__mqttc__status__msg__t.html create mode 100644 doc/html/structciot__mqttc__status__msg__t.js create mode 100644 doc/html/structciot__mqttc__status__t.html create mode 100644 doc/html/structciot__mqttc__status__t.js create mode 100644 doc/html/structciot__mqttc__topics__cfg__t.html create mode 100644 doc/html/structciot__mqttc__topics__cfg__t.js create mode 100644 doc/html/structciot__msg__error__t.html create mode 100644 doc/html/structciot__msg__error__t.js create mode 100644 doc/html/structciot__msg__header__t.html create mode 100644 doc/html/structciot__msg__header__t.js create mode 100644 doc/html/structciot__msg__iface__info__t.html create mode 100644 doc/html/structciot__msg__iface__info__t.js create mode 100644 doc/html/structciot__msg__t.html create mode 100644 doc/html/structciot__msg__t.js create mode 100644 doc/html/structciot__nrf__dfu__cfg.html create mode 100644 doc/html/structciot__nrf__dfu__cfg.js create mode 100644 doc/html/structciot__nrf__dfu__packet.html create mode 100644 doc/html/structciot__nrf__dfu__packet.js create mode 100644 doc/html/structciot__ntp__cfg__t.html create mode 100644 doc/html/structciot__ntp__cfg__t.js create mode 100644 doc/html/structciot__ntp__req__t.html create mode 100644 doc/html/structciot__ntp__req__t.js create mode 100644 doc/html/structciot__ntp__status__msg__t.html create mode 100644 doc/html/structciot__ntp__status__msg__t.js create mode 100644 doc/html/structciot__ntp__status__t.html create mode 100644 doc/html/structciot__ntp__status__t.js create mode 100644 doc/html/structciot__opcuas__cfg__t.html create mode 100644 doc/html/structciot__opcuas__cfg__t.js create mode 100644 doc/html/structciot__opcuas__req__add__node__t.html create mode 100644 doc/html/structciot__opcuas__req__add__node__t.js create mode 100644 doc/html/structciot__opcuas__req__t.html create mode 100644 doc/html/structciot__opcuas__req__t.js create mode 100644 doc/html/structciot__opcuas__status__msg__t.html create mode 100644 doc/html/structciot__opcuas__status__msg__t.js create mode 100644 doc/html/structciot__opcuas__status__t.html create mode 100644 doc/html/structciot__opcuas__status__t.js create mode 100644 doc/html/structciot__ota__cfg__t.html create mode 100644 doc/html/structciot__ota__cfg__t.js create mode 100644 doc/html/structciot__ota__req__t.html create mode 100644 doc/html/structciot__ota__req__t.js create mode 100644 doc/html/structciot__ota__status__msg__t.html create mode 100644 doc/html/structciot__ota__status__msg__t.js create mode 100644 doc/html/structciot__ota__status__t.html create mode 100644 doc/html/structciot__ota__status__t.js create mode 100644 doc/html/structciot__req__delete__iface__cfg__t.html create mode 100644 doc/html/structciot__req__delete__iface__cfg__t.js create mode 100644 doc/html/structciot__req__proxy__msg__t.html create mode 100644 doc/html/structciot__req__proxy__msg__t.js create mode 100644 doc/html/structciot__req__result__t.html create mode 100644 doc/html/structciot__req__result__t.js create mode 100644 doc/html/structciot__req__save__iface__cfg__t.html create mode 100644 doc/html/structciot__req__save__iface__cfg__t.js create mode 100644 doc/html/structciot__req__t.html create mode 100644 doc/html/structciot__req__t.js create mode 100644 doc/html/structciot__s__cfg.html create mode 100644 doc/html/structciot__s__cfg.js create mode 100644 doc/html/structciot__serializer.html create mode 100644 doc/html/structciot__serializer.js create mode 100644 doc/html/structciot__slip__t.html create mode 100644 doc/html/structciot__slip__t.js create mode 100644 doc/html/structciot__status__t.html create mode 100644 doc/html/structciot__status__t.js create mode 100644 doc/html/structciot__storage__cfg__t.html create mode 100644 doc/html/structciot__storage__cfg__t.js create mode 100644 doc/html/structciot__storage__req__file__data__t.html create mode 100644 doc/html/structciot__storage__req__file__data__t.js create mode 100644 doc/html/structciot__storage__req__t.html create mode 100644 doc/html/structciot__storage__req__t.js create mode 100644 doc/html/structciot__storage__status__msg__t.html create mode 100644 doc/html/structciot__storage__status__msg__t.js create mode 100644 doc/html/structciot__storage__status__t.html create mode 100644 doc/html/structciot__storage__status__t.js create mode 100644 doc/html/structciot__sys__cfg__t.html create mode 100644 doc/html/structciot__sys__features__t.html create mode 100644 doc/html/structciot__sys__features__t.js create mode 100644 doc/html/structciot__sys__hw__features__t.html create mode 100644 doc/html/structciot__sys__hw__features__t.js create mode 100644 doc/html/structciot__sys__info__t.html create mode 100644 doc/html/structciot__sys__info__t.js create mode 100644 doc/html/structciot__sys__req__t.html create mode 100644 doc/html/structciot__sys__req__t.js create mode 100644 doc/html/structciot__sys__status__msg__t.html create mode 100644 doc/html/structciot__sys__status__msg__t.js create mode 100644 doc/html/structciot__sys__status__t.html create mode 100644 doc/html/structciot__sys__status__t.js create mode 100644 doc/html/structciot__sys__sw__features__t.html create mode 100644 doc/html/structciot__sys__sw__features__t.js create mode 100644 doc/html/structciot__tcp__cfg__t.html create mode 100644 doc/html/structciot__tcp__cfg__t.js create mode 100644 doc/html/structciot__tcp__dhcp__status__t.html create mode 100644 doc/html/structciot__tcp__dhcp__status__t.js create mode 100644 doc/html/structciot__tcp__handle.html create mode 100644 doc/html/structciot__tcp__handle.js create mode 100644 doc/html/structciot__tcp__info__t.html create mode 100644 doc/html/structciot__tcp__info__t.js create mode 100644 doc/html/structciot__tcp__req__t.html create mode 100644 doc/html/structciot__tcp__req__t.js create mode 100644 doc/html/structciot__tcp__status__msg__t.html create mode 100644 doc/html/structciot__tcp__status__msg__t.js create mode 100644 doc/html/structciot__tcp__status__t.html create mode 100644 doc/html/structciot__tcp__status__t.js create mode 100644 doc/html/structciot__timer__cfg.html create mode 100644 doc/html/structciot__timer__cfg.js create mode 100644 doc/html/structciot__uart__base.html create mode 100644 doc/html/structciot__uart__base.js create mode 100644 doc/html/structciot__uart__cfg__t.html create mode 100644 doc/html/structciot__uart__cfg__t.js create mode 100644 doc/html/structciot__uart__req__send__data__t.html create mode 100644 doc/html/structciot__uart__req__send__data__t.js create mode 100644 doc/html/structciot__uart__req__t.html create mode 100644 doc/html/structciot__uart__req__t.js create mode 100644 doc/html/structciot__uart__status__msg__t.html create mode 100644 doc/html/structciot__uart__status__msg__t.js create mode 100644 doc/html/structciot__uart__status__t.html create mode 100644 doc/html/structciot__uart__status__t.js create mode 100644 doc/html/structciot__usb__cfg__t.html create mode 100644 doc/html/structciot__usb__cfg__t.js create mode 100644 doc/html/structciot__usb__req__t.html create mode 100644 doc/html/structciot__usb__req__t.js create mode 100644 doc/html/structciot__usb__status__msg__t.html create mode 100644 doc/html/structciot__usb__status__msg__t.js create mode 100644 doc/html/structciot__usb__status__t.html create mode 100644 doc/html/structciot__usb__status__t.js create mode 100644 doc/html/structciot__wifi__ap__info__t.html create mode 100644 doc/html/structciot__wifi__ap__info__t.js create mode 100644 doc/html/structciot__wifi__cfg__t.html create mode 100644 doc/html/structciot__wifi__cfg__t.js create mode 100644 doc/html/structciot__wifi__req__t.html create mode 100644 doc/html/structciot__wifi__req__t.js create mode 100644 doc/html/structciot__wifi__scan__result__t.html create mode 100644 doc/html/structciot__wifi__scan__result__t.js create mode 100644 doc/html/structciot__wifi__status__msg__t.html create mode 100644 doc/html/structciot__wifi__status__msg__t.js create mode 100644 doc/html/structciot__wifi__status__t.html create mode 100644 doc/html/structciot__wifi__status__t.js create mode 100644 doc/html/structpacked.html create mode 100644 doc/html/structpacked.js create mode 100644 doc/html/sync_off.png create mode 100644 doc/html/sync_on.png create mode 100644 doc/html/tab_a.png create mode 100644 doc/html/tab_ad.png create mode 100644 doc/html/tab_b.png create mode 100644 doc/html/tab_bd.png create mode 100644 doc/html/tab_h.png create mode 100644 doc/html/tab_hd.png create mode 100644 doc/html/tab_s.png create mode 100644 doc/html/tab_sd.png create mode 100644 doc/html/tabs.css create mode 100644 doc/html/topics.html create mode 100644 doc/html/topics.js create mode 100644 doc/html/unionciot__ble__data__u.html create mode 100644 doc/html/unionciot__ble__data__u.js create mode 100644 doc/html/unionciot__ble__req__data__u.html create mode 100644 doc/html/unionciot__ble__req__data__u.js create mode 100644 doc/html/unionciot__ble__scn__data__u.html create mode 100644 doc/html/unionciot__ble__scn__data__u.js create mode 100644 doc/html/unionciot__ble__scn__req__data__u.html create mode 100644 doc/html/unionciot__bridge__data__u.html create mode 100644 doc/html/unionciot__bridge__data__u.js create mode 100644 doc/html/unionciot__bridge__req__data__u.html create mode 100644 doc/html/unionciot__data__model__data__u.html create mode 100644 doc/html/unionciot__data__model__data__u.js create mode 100644 doc/html/unionciot__data__model__req__data__u.html create mode 100644 doc/html/unionciot__data__u.html create mode 100644 doc/html/unionciot__data__u.js create mode 100644 doc/html/unionciot__dfu__data__u.html create mode 100644 doc/html/unionciot__dfu__data__u.js create mode 100644 doc/html/unionciot__dfu__req__data__u.html create mode 100644 doc/html/unionciot__gpio__data__u.html create mode 100644 doc/html/unionciot__gpio__data__u.js create mode 100644 doc/html/unionciot__gpio__req__data__u.html create mode 100644 doc/html/unionciot__gpio__req__data__u.js create mode 100644 doc/html/unionciot__httpc__data__u.html create mode 100644 doc/html/unionciot__httpc__data__u.js create mode 100644 doc/html/unionciot__httpc__event.html create mode 100644 doc/html/unionciot__httpc__event.js create mode 100644 doc/html/unionciot__httpc__req__data.html create mode 100644 doc/html/unionciot__httpc__req__data.js create mode 100644 doc/html/unionciot__https__data__u.html create mode 100644 doc/html/unionciot__https__data__u.js create mode 100644 doc/html/unionciot__https__req__data__u.html create mode 100644 doc/html/unionciot__iface__event__data__u.html create mode 100644 doc/html/unionciot__iface__event__data__u.js create mode 100644 doc/html/unionciot__mqttc__data__u.html create mode 100644 doc/html/unionciot__mqttc__data__u.js create mode 100644 doc/html/unionciot__mqttc__req__data__u.html create mode 100644 doc/html/unionciot__mqttc__req__data__u.js create mode 100644 doc/html/unionciot__msg__data__u.html create mode 100644 doc/html/unionciot__msg__data__u.js create mode 100644 doc/html/unionciot__ntp__data__u.html create mode 100644 doc/html/unionciot__ntp__data__u.js create mode 100644 doc/html/unionciot__ntp__req__data__u.html create mode 100644 doc/html/unionciot__opcuas__data__u.html create mode 100644 doc/html/unionciot__opcuas__data__u.js create mode 100644 doc/html/unionciot__opcuas__req__data__u.html create mode 100644 doc/html/unionciot__opcuas__req__data__u.js create mode 100644 doc/html/unionciot__ota__data__u.html create mode 100644 doc/html/unionciot__ota__data__u.js create mode 100644 doc/html/unionciot__ota__req__data__u.html create mode 100644 doc/html/unionciot__req__data__u.html create mode 100644 doc/html/unionciot__req__data__u.js create mode 100644 doc/html/unionciot__storage__data__u.html create mode 100644 doc/html/unionciot__storage__data__u.js create mode 100644 doc/html/unionciot__sys__data__u.html create mode 100644 doc/html/unionciot__sys__data__u.js create mode 100644 doc/html/unionciot__sys__req__data__u.html create mode 100644 doc/html/unionciot__tcp__data__u.html create mode 100644 doc/html/unionciot__tcp__data__u.js create mode 100644 doc/html/unionciot__tcp__req__data__u.html create mode 100644 doc/html/unionciot__uart__data__u.html create mode 100644 doc/html/unionciot__uart__data__u.js create mode 100644 doc/html/unionciot__uart__event.html create mode 100644 doc/html/unionciot__uart__event.js create mode 100644 doc/html/unionciot__uart__req__data__u.html create mode 100644 doc/html/unionciot__uart__req__data__u.js create mode 100644 doc/html/unionciot__usb__data__u.html create mode 100644 doc/html/unionciot__usb__data__u.js create mode 100644 doc/html/unionciot__usb__event.html create mode 100644 doc/html/unionciot__usb__event.js create mode 100644 doc/html/unionciot__usb__req__data__u.html create mode 100644 doc/html/unionciot__wifi__data__u.html create mode 100644 doc/html/unionciot__wifi__data__u.js create mode 100644 doc/html/unionciot__wifi__req__data__u.html create mode 100644 doc/html/unionciot__wifi__req__data__u.js create mode 100644 doc/latex/Makefile create mode 100644 doc/latex/annotated.tex create mode 100644 doc/latex/ciot_8h.tex create mode 100644 doc/latex/ciot_8h_source.tex create mode 100644 doc/latex/ciot__ble_8h.tex create mode 100644 doc/latex/ciot__ble_8h_source.tex create mode 100644 doc/latex/ciot__ble__scn_8h.tex create mode 100644 doc/latex/ciot__ble__scn_8h_source.tex create mode 100644 doc/latex/ciot__ble__scn__types_8h.tex create mode 100644 doc/latex/ciot__ble__scn__types_8h_source.tex create mode 100644 doc/latex/ciot__ble__types_8h.tex create mode 100644 doc/latex/ciot__ble__types_8h_source.tex create mode 100644 doc/latex/ciot__bridge_8h.tex create mode 100644 doc/latex/ciot__bridge_8h_source.tex create mode 100644 doc/latex/ciot__bridge__types_8h.tex create mode 100644 doc/latex/ciot__bridge__types_8h_source.tex create mode 100644 doc/latex/ciot__common__types_8h.tex create mode 100644 doc/latex/ciot__common__types_8h_source.tex create mode 100644 doc/latex/ciot__config_8h.tex create mode 100644 doc/latex/ciot__config_8h_source.tex create mode 100644 doc/latex/ciot__crc_8h.tex create mode 100644 doc/latex/ciot__crc_8h_source.tex create mode 100644 doc/latex/ciot__data__model__types_8h.tex create mode 100644 doc/latex/ciot__data__model__types_8h_source.tex create mode 100644 doc/latex/ciot__default_8h.tex create mode 100644 doc/latex/ciot__default_8h_source.tex create mode 100644 doc/latex/ciot__dfu_8h.tex create mode 100644 doc/latex/ciot__dfu_8h_source.tex create mode 100644 doc/latex/ciot__dfu__types_8h.tex create mode 100644 doc/latex/ciot__dfu__types_8h_source.tex create mode 100644 doc/latex/ciot__err_8h.tex create mode 100644 doc/latex/ciot__err_8h_source.tex create mode 100644 doc/latex/ciot__eth_8h.tex create mode 100644 doc/latex/ciot__eth_8h_source.tex create mode 100644 doc/latex/ciot__gpio_8h.tex create mode 100644 doc/latex/ciot__gpio_8h_source.tex create mode 100644 doc/latex/ciot__gpio__types_8h.tex create mode 100644 doc/latex/ciot__gpio__types_8h_source.tex create mode 100644 doc/latex/ciot__httpc_8h.tex create mode 100644 doc/latex/ciot__httpc_8h_source.tex create mode 100644 doc/latex/ciot__httpc__types_8h.tex create mode 100644 doc/latex/ciot__httpc__types_8h_source.tex create mode 100644 doc/latex/ciot__https_8h.tex create mode 100644 doc/latex/ciot__https_8h_source.tex create mode 100644 doc/latex/ciot__https__types_8h.tex create mode 100644 doc/latex/ciot__https__types_8h_source.tex create mode 100644 doc/latex/ciot__iface_8h.tex create mode 100644 doc/latex/ciot__iface_8h_source.tex create mode 100644 doc/latex/ciot__ifaces_8h.tex create mode 100644 doc/latex/ciot__ifaces_8h_source.tex create mode 100644 doc/latex/ciot__lib_8h.tex create mode 100644 doc/latex/ciot__lib_8h_source.tex create mode 100644 doc/latex/ciot__log_8h.tex create mode 100644 doc/latex/ciot__log_8h_source.tex create mode 100644 doc/latex/ciot__mqttc_8h.tex create mode 100644 doc/latex/ciot__mqttc_8h_source.tex create mode 100644 doc/latex/ciot__mqttc__types_8h.tex create mode 100644 doc/latex/ciot__mqttc__types_8h_source.tex create mode 100644 doc/latex/ciot__msg__types_8h.tex create mode 100644 doc/latex/ciot__msg__types_8h_source.tex create mode 100644 doc/latex/ciot__nrf__dfu_8h.tex create mode 100644 doc/latex/ciot__nrf__dfu_8h_source.tex create mode 100644 doc/latex/ciot__ntp_8h.tex create mode 100644 doc/latex/ciot__ntp_8h_source.tex create mode 100644 doc/latex/ciot__ntp__types_8h.tex create mode 100644 doc/latex/ciot__ntp__types_8h_source.tex create mode 100644 doc/latex/ciot__opcuas_8h.tex create mode 100644 doc/latex/ciot__opcuas_8h_source.tex create mode 100644 doc/latex/ciot__opcuas__types_8h.tex create mode 100644 doc/latex/ciot__opcuas__types_8h_source.tex create mode 100644 doc/latex/ciot__ota_8h.tex create mode 100644 doc/latex/ciot__ota_8h_source.tex create mode 100644 doc/latex/ciot__ota__types_8h.tex create mode 100644 doc/latex/ciot__ota__types_8h_source.tex create mode 100644 doc/latex/ciot__s_8h.tex create mode 100644 doc/latex/ciot__s_8h_source.tex create mode 100644 doc/latex/ciot__serializer_8h.tex create mode 100644 doc/latex/ciot__serializer_8h_source.tex create mode 100644 doc/latex/ciot__slip_8h.tex create mode 100644 doc/latex/ciot__slip_8h_source.tex create mode 100644 doc/latex/ciot__storage_8h.tex create mode 100644 doc/latex/ciot__storage_8h_source.tex create mode 100644 doc/latex/ciot__storage__types_8h.tex create mode 100644 doc/latex/ciot__storage__types_8h_source.tex create mode 100644 doc/latex/ciot__sys_8h.tex create mode 100644 doc/latex/ciot__sys_8h_source.tex create mode 100644 doc/latex/ciot__sys__types_8h.tex create mode 100644 doc/latex/ciot__sys__types_8h_source.tex create mode 100644 doc/latex/ciot__tcp_8h.tex create mode 100644 doc/latex/ciot__tcp_8h_source.tex create mode 100644 doc/latex/ciot__tcp__types_8h.tex create mode 100644 doc/latex/ciot__tcp__types_8h_source.tex create mode 100644 doc/latex/ciot__timer_8h.tex create mode 100644 doc/latex/ciot__timer_8h_source.tex create mode 100644 doc/latex/ciot__types_8h.tex create mode 100644 doc/latex/ciot__types_8h_source.tex create mode 100644 doc/latex/ciot__uart_8h.tex create mode 100644 doc/latex/ciot__uart_8h_source.tex create mode 100644 doc/latex/ciot__uart__types_8h.tex create mode 100644 doc/latex/ciot__uart__types_8h_source.tex create mode 100644 doc/latex/ciot__usb_8h.tex create mode 100644 doc/latex/ciot__usb_8h_source.tex create mode 100644 doc/latex/ciot__usb__types_8h.tex create mode 100644 doc/latex/ciot__usb__types_8h_source.tex create mode 100644 doc/latex/ciot__utils_8h.tex create mode 100644 doc/latex/ciot__utils_8h_source.tex create mode 100644 doc/latex/ciot__wifi_8h.tex create mode 100644 doc/latex/ciot__wifi_8h_source.tex create mode 100644 doc/latex/ciot__wifi__types_8h.tex create mode 100644 doc/latex/ciot__wifi__types_8h_source.tex create mode 100644 doc/latex/dir_0ad255a918b7fba820a1ddafed6fa637.tex create mode 100644 doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex create mode 100644 doc/latex/doxygen.sty create mode 100644 doc/latex/etoc_doxygen.sty create mode 100644 doc/latex/files.tex create mode 100644 doc/latex/group___common.tex create mode 100644 doc/latex/group___hardware.tex create mode 100644 doc/latex/group___software.tex create mode 100644 doc/latex/group___utils.tex create mode 100644 doc/latex/group__hardware__interfaces.tex create mode 100644 doc/latex/group__hardware__types.tex create mode 100644 doc/latex/group__slip.tex create mode 100644 doc/latex/group__software__interfaces.tex create mode 100644 doc/latex/group__software__types.tex create mode 100644 doc/latex/group__uart__apis.tex create mode 100644 doc/latex/longtable_doxygen.sty create mode 100644 doc/latex/make.bat create mode 100644 doc/latex/refman.tex create mode 100644 doc/latex/structciot__ble__cfg__t.tex create mode 100644 doc/latex/structciot__ble__ifaces.tex create mode 100644 doc/latex/structciot__ble__info__t.tex create mode 100644 doc/latex/structciot__ble__req__t.tex create mode 100644 doc/latex/structciot__ble__scn__adv__info__t.tex create mode 100644 doc/latex/structciot__ble__scn__cfg__t.tex create mode 100644 doc/latex/structciot__ble__scn__req__t.tex create mode 100644 doc/latex/structciot__ble__scn__status__msg__t.tex create mode 100644 doc/latex/structciot__ble__scn__status__t.tex create mode 100644 doc/latex/structciot__ble__status__msg__t.tex create mode 100644 doc/latex/structciot__ble__status__t.tex create mode 100644 doc/latex/structciot__bridge__cfg__t.tex create mode 100644 doc/latex/structciot__bridge__req__t.tex create mode 100644 doc/latex/structciot__bridge__status__msg__t.tex create mode 100644 doc/latex/structciot__bridge__status__t.tex create mode 100644 doc/latex/structciot__cfg.tex create mode 100644 doc/latex/structciot__data__model__cfg__t.tex create mode 100644 doc/latex/structciot__data__model__req__t.tex create mode 100644 doc/latex/structciot__data__model__status__t.tex create mode 100644 doc/latex/structciot__dfu__cfg__t.tex create mode 100644 doc/latex/structciot__dfu__req__t.tex create mode 100644 doc/latex/structciot__dfu__status__msg__t.tex create mode 100644 doc/latex/structciot__dfu__status__t.tex create mode 100644 doc/latex/structciot__eth__status__msg__t.tex create mode 100644 doc/latex/structciot__event__data.tex create mode 100644 doc/latex/structciot__gpio__cfg__t.tex create mode 100644 doc/latex/structciot__gpio__req__get__state__t.tex create mode 100644 doc/latex/structciot__gpio__req__t.tex create mode 100644 doc/latex/structciot__gpio__state__info__t.tex create mode 100644 doc/latex/structciot__gpio__status__msg__t.tex create mode 100644 doc/latex/structciot__gpio__status__t.tex create mode 100644 doc/latex/structciot__httpc__cfg__t.tex create mode 100644 doc/latex/structciot__httpc__event__data.tex create mode 100644 doc/latex/structciot__httpc__req__send__t.tex create mode 100644 doc/latex/structciot__httpc__req__set__header__t.tex create mode 100644 doc/latex/structciot__httpc__req__t.tex create mode 100644 doc/latex/structciot__httpc__status__msg__t.tex create mode 100644 doc/latex/structciot__httpc__status__t.tex create mode 100644 doc/latex/structciot__https__cfg__t.tex create mode 100644 doc/latex/structciot__https__event.tex create mode 100644 doc/latex/structciot__https__event__data.tex create mode 100644 doc/latex/structciot__https__req__t.tex create mode 100644 doc/latex/structciot__https__status__msg__t.tex create mode 100644 doc/latex/structciot__https__status__t.tex create mode 100644 doc/latex/structciot__iface.tex create mode 100644 doc/latex/structciot__iface__base.tex create mode 100644 doc/latex/structciot__iface__base__data.tex create mode 100644 doc/latex/structciot__iface__cfg__t.tex create mode 100644 doc/latex/structciot__iface__event__t.tex create mode 100644 doc/latex/structciot__iface__req__info.tex create mode 100644 doc/latex/structciot__ifaces.tex create mode 100644 doc/latex/structciot__info__t.tex create mode 100644 doc/latex/structciot__mqttc__cfg__t.tex create mode 100644 doc/latex/structciot__mqttc__error__t.tex create mode 100644 doc/latex/structciot__mqttc__event.tex create mode 100644 doc/latex/structciot__mqttc__event__data.tex create mode 100644 doc/latex/structciot__mqttc__req__publish__t.tex create mode 100644 doc/latex/structciot__mqttc__req__subscribe__t.tex create mode 100644 doc/latex/structciot__mqttc__req__t.tex create mode 100644 doc/latex/structciot__mqttc__status__msg__t.tex create mode 100644 doc/latex/structciot__mqttc__status__t.tex create mode 100644 doc/latex/structciot__mqttc__topics__cfg__t.tex create mode 100644 doc/latex/structciot__msg__error__t.tex create mode 100644 doc/latex/structciot__msg__header__t.tex create mode 100644 doc/latex/structciot__msg__iface__info__t.tex create mode 100644 doc/latex/structciot__msg__t.tex create mode 100644 doc/latex/structciot__nrf__dfu__cfg.tex create mode 100644 doc/latex/structciot__nrf__dfu__packet.tex create mode 100644 doc/latex/structciot__ntp__cfg__t.tex create mode 100644 doc/latex/structciot__ntp__req__t.tex create mode 100644 doc/latex/structciot__ntp__status__msg__t.tex create mode 100644 doc/latex/structciot__ntp__status__t.tex create mode 100644 doc/latex/structciot__opcuas__cfg__t.tex create mode 100644 doc/latex/structciot__opcuas__req__add__node__t.tex create mode 100644 doc/latex/structciot__opcuas__req__t.tex create mode 100644 doc/latex/structciot__opcuas__status__msg__t.tex create mode 100644 doc/latex/structciot__opcuas__status__t.tex create mode 100644 doc/latex/structciot__ota__cfg__t.tex create mode 100644 doc/latex/structciot__ota__req__t.tex create mode 100644 doc/latex/structciot__ota__status__msg__t.tex create mode 100644 doc/latex/structciot__ota__status__t.tex create mode 100644 doc/latex/structciot__req__delete__iface__cfg__t.tex create mode 100644 doc/latex/structciot__req__proxy__msg__t.tex create mode 100644 doc/latex/structciot__req__result__t.tex create mode 100644 doc/latex/structciot__req__save__iface__cfg__t.tex create mode 100644 doc/latex/structciot__req__t.tex create mode 100644 doc/latex/structciot__s__cfg.tex create mode 100644 doc/latex/structciot__serializer.tex create mode 100644 doc/latex/structciot__slip__t.tex create mode 100644 doc/latex/structciot__status__t.tex create mode 100644 doc/latex/structciot__storage__cfg__t.tex create mode 100644 doc/latex/structciot__storage__req__file__data__t.tex create mode 100644 doc/latex/structciot__storage__req__t.tex create mode 100644 doc/latex/structciot__storage__status__msg__t.tex create mode 100644 doc/latex/structciot__storage__status__t.tex create mode 100644 doc/latex/structciot__sys__cfg__t.tex create mode 100644 doc/latex/structciot__sys__features__t.tex create mode 100644 doc/latex/structciot__sys__hw__features__t.tex create mode 100644 doc/latex/structciot__sys__info__t.tex create mode 100644 doc/latex/structciot__sys__req__t.tex create mode 100644 doc/latex/structciot__sys__status__msg__t.tex create mode 100644 doc/latex/structciot__sys__status__t.tex create mode 100644 doc/latex/structciot__sys__sw__features__t.tex create mode 100644 doc/latex/structciot__tcp__cfg__t.tex create mode 100644 doc/latex/structciot__tcp__dhcp__status__t.tex create mode 100644 doc/latex/structciot__tcp__handle.tex create mode 100644 doc/latex/structciot__tcp__info__t.tex create mode 100644 doc/latex/structciot__tcp__req__t.tex create mode 100644 doc/latex/structciot__tcp__status__msg__t.tex create mode 100644 doc/latex/structciot__tcp__status__t.tex create mode 100644 doc/latex/structciot__timer__cfg.tex create mode 100644 doc/latex/structciot__uart__base.tex create mode 100644 doc/latex/structciot__uart__cfg__t.tex create mode 100644 doc/latex/structciot__uart__req__send__data__t.tex create mode 100644 doc/latex/structciot__uart__req__t.tex create mode 100644 doc/latex/structciot__uart__status__msg__t.tex create mode 100644 doc/latex/structciot__uart__status__t.tex create mode 100644 doc/latex/structciot__usb__cfg__t.tex create mode 100644 doc/latex/structciot__usb__req__t.tex create mode 100644 doc/latex/structciot__usb__status__msg__t.tex create mode 100644 doc/latex/structciot__usb__status__t.tex create mode 100644 doc/latex/structciot__wifi__ap__info__t.tex create mode 100644 doc/latex/structciot__wifi__cfg__t.tex create mode 100644 doc/latex/structciot__wifi__req__t.tex create mode 100644 doc/latex/structciot__wifi__scan__result__t.tex create mode 100644 doc/latex/structciot__wifi__status__msg__t.tex create mode 100644 doc/latex/structciot__wifi__status__t.tex create mode 100644 doc/latex/structpacked.tex create mode 100644 doc/latex/tabu_doxygen.sty create mode 100644 doc/latex/topics.tex create mode 100644 doc/latex/unionciot__ble__data__u.tex create mode 100644 doc/latex/unionciot__ble__req__data__u.tex create mode 100644 doc/latex/unionciot__ble__scn__data__u.tex create mode 100644 doc/latex/unionciot__ble__scn__req__data__u.tex create mode 100644 doc/latex/unionciot__bridge__data__u.tex create mode 100644 doc/latex/unionciot__bridge__req__data__u.tex create mode 100644 doc/latex/unionciot__data__model__data__u.tex create mode 100644 doc/latex/unionciot__data__model__req__data__u.tex create mode 100644 doc/latex/unionciot__data__u.tex create mode 100644 doc/latex/unionciot__dfu__data__u.tex create mode 100644 doc/latex/unionciot__dfu__req__data__u.tex create mode 100644 doc/latex/unionciot__gpio__data__u.tex create mode 100644 doc/latex/unionciot__gpio__req__data__u.tex create mode 100644 doc/latex/unionciot__httpc__data__u.tex create mode 100644 doc/latex/unionciot__httpc__event.tex create mode 100644 doc/latex/unionciot__httpc__req__data.tex create mode 100644 doc/latex/unionciot__https__data__u.tex create mode 100644 doc/latex/unionciot__https__req__data__u.tex create mode 100644 doc/latex/unionciot__iface__event__data__u.tex create mode 100644 doc/latex/unionciot__mqttc__data__u.tex create mode 100644 doc/latex/unionciot__mqttc__req__data__u.tex create mode 100644 doc/latex/unionciot__msg__data__u.tex create mode 100644 doc/latex/unionciot__ntp__data__u.tex create mode 100644 doc/latex/unionciot__ntp__req__data__u.tex create mode 100644 doc/latex/unionciot__opcuas__data__u.tex create mode 100644 doc/latex/unionciot__opcuas__req__data__u.tex create mode 100644 doc/latex/unionciot__ota__data__u.tex create mode 100644 doc/latex/unionciot__ota__req__data__u.tex create mode 100644 doc/latex/unionciot__req__data__u.tex create mode 100644 doc/latex/unionciot__storage__data__u.tex create mode 100644 doc/latex/unionciot__sys__data__u.tex create mode 100644 doc/latex/unionciot__sys__req__data__u.tex create mode 100644 doc/latex/unionciot__tcp__data__u.tex create mode 100644 doc/latex/unionciot__tcp__req__data__u.tex create mode 100644 doc/latex/unionciot__uart__data__u.tex create mode 100644 doc/latex/unionciot__uart__event.tex create mode 100644 doc/latex/unionciot__uart__req__data__u.tex create mode 100644 doc/latex/unionciot__usb__data__u.tex create mode 100644 doc/latex/unionciot__usb__event.tex create mode 100644 doc/latex/unionciot__usb__req__data__u.tex create mode 100644 doc/latex/unionciot__wifi__data__u.tex create mode 100644 doc/latex/unionciot__wifi__req__data__u.tex create mode 100644 include/ciot_lib.h diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..f426087 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,2894 @@ +# Doxyfile 1.10.0 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = CioT + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 0.1.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Connected IoT" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = F:/projects/hedrosistemas/ciot_c/doc + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = SYSTEM + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = YES + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = F:/projects/hedrosistemas/ciot_c/include + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING) if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding +# "INPUT_ENCODING" for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cxxm \ + *.cpp \ + *.cppm \ + *.ccm \ + *.c++ \ + *.c++m \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.ixx \ + *.l \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /