/* * Copyright (c) 2020 Linumiz * * SPDX-License-Identifier: Apache-2.0 */ /** @file * * @brief This file contains structures representing JSON messages * exchanged with a hawkbit */ #ifndef __HAWKBIT_PRIV_H__ #define __HAWKBIT_PRIV_H__ #include #define HAWKBIT_SLEEP_LENGTH 8 enum hawkbit_http_request { HAWKBIT_PROBE, HAWKBIT_CONFIG_DEVICE, HAWKBIT_CLOSE, HAWKBIT_PROBE_DEPLOYMENT_BASE, HAWKBIT_REPORT, HAWKBIT_DOWNLOAD, }; enum hawkbit_status_fini { HAWKBIT_STATUS_FINISHED_SUCCESS, HAWKBIT_STATUS_FINISHED_FAILURE, HAWKBIT_STATUS_FINISHED_NONE, }; enum hawkbit_status_exec { HAWKBIT_STATUS_EXEC_CLOSED = 0, HAWKBIT_STATUS_EXEC_PROCEEDING, HAWKBIT_STATUS_EXEC_CANCELED, HAWKBIT_STATUS_EXEC_SCHEDULED, HAWKBIT_STATUS_EXEC_REJECTED, HAWKBIT_STATUS_EXEC_RESUMED, HAWKBIT_STATUS_EXEC_NONE, }; enum hawkbit_dev_acid_t { HAWKBIT_ACTION_ID_CURRENT = 0, HAWKBIT_ACTION_ID_UPDATE, }; struct hawkbit_href { const char *href; }; struct hawkbit_status_result { const char *finished; }; struct hawkbit_status { struct hawkbit_status_result result; const char *execution; }; struct hawkbit_ctl_res_sleep { const char *sleep; }; struct hawkbit_ctl_res_polling { struct hawkbit_ctl_res_sleep polling; }; struct hawkbit_ctl_res_links { struct hawkbit_href deploymentBase; struct hawkbit_href configData; struct hawkbit_href cancelAction; }; struct hawkbit_ctl_res { struct hawkbit_ctl_res_polling config; struct hawkbit_ctl_res_links _links; }; struct hawkbit_cfg_data { const char *VIN; const char *hwRevision; }; struct hawkbit_cfg { const char *mode; struct hawkbit_cfg_data data; const char *id; const char *time; struct hawkbit_status status; }; struct hawkbit_close { char *id; const char *time; struct hawkbit_status status; }; /* Maximum number of chunks we support */ #define HAWKBIT_DEP_MAX_CHUNKS 1 /* Maximum number of artifacts per chunk. */ #define HAWKBIT_DEP_MAX_CHUNK_ARTS 1 struct hawkbit_dep_res_hashes { const char *sha1; const char *md5; const char *sha256; }; struct hawkbit_dep_res_links { struct hawkbit_href download_http; struct hawkbit_href md5sum_http; }; struct hawkbit_dep_res_arts { const char *filename; struct hawkbit_dep_res_hashes hashes; struct hawkbit_dep_res_links _links; int size; }; struct hawkbit_dep_res_chunk { const char *part; const char *name; const char *version; struct hawkbit_dep_res_arts artifacts[HAWKBIT_DEP_MAX_CHUNK_ARTS]; size_t num_artifacts; }; struct hawkbit_dep_res_deploy { const char *download; const char *update; struct hawkbit_dep_res_chunk chunks[HAWKBIT_DEP_MAX_CHUNKS]; size_t num_chunks; }; struct hawkbit_dep_res { const char *id; struct hawkbit_dep_res_deploy deployment; }; struct hawkbit_dep_fbk { const char *id; struct hawkbit_status status; }; struct hawkbit_cancel { struct hawkbit_href cancelBase; }; struct entry { char *http_req_str; int n; }; struct entry http_request[] = { {"HAWKBIT_PROBE", 0}, {"HAWKBIT_CONFIG_DEVICE", 1}, {"HAWKBIT_CLOSE", 2}, {"HAWKBIT_PROBE_DEPLOYMENT_BASE", 3}, {"HAWKBIT_REPORT", 4}, {"HAWKBIT_DOWNLOAD", 5}, }; #endif /* __HAWKBIT_PRIV_H__ */