168 lines
3.1 KiB
C
168 lines
3.1 KiB
C
/*
|
|
* 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 <zephyr/data/json.h>
|
|
|
|
#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__ */
|