mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
Ticket refs #7317: the reboot isn't triggred after call of Activate() operate of Device.DeviceInfo.FirmwareImage.{i}.
This commit is contained in:
parent
8d34bbcc9c
commit
a6d6d44588
3 changed files with 12 additions and 19 deletions
|
|
@ -18,6 +18,7 @@
|
|||
static int read_next;
|
||||
static struct diagnostic_stats diag_stats = {0};
|
||||
static const int READ_BUF_SIZE = { 1024 * 16 };
|
||||
static struct uloop_timeout activate_timer[MAX_TIME_WINDOW] = {0};
|
||||
|
||||
char *get_diagnostics_option(char *sec_name, char *option)
|
||||
{
|
||||
|
|
@ -561,17 +562,15 @@ static void launch_activate_iamge_cb(struct uloop_timeout *t)
|
|||
dmubus_call_set("system", "reboot", UBUS_ARGS{0}, 0);
|
||||
}
|
||||
|
||||
static void activate_fw_images(struct activate_image *active_img)
|
||||
static void activate_fw_images(char *start_time[])
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
for (i = 0; i < MAX_TIME_WINDOW && *active_img->start_time; i++, active_img++) {
|
||||
active_img->activate_timer.cb = launch_activate_iamge_cb;
|
||||
uloop_timeout_set(&active_img->activate_timer, atoi(active_img->start_time) * 1000);
|
||||
for (int i = 0; i < MAX_TIME_WINDOW && DM_STRLEN(start_time[i]); i++) {
|
||||
activate_timer[i].cb = launch_activate_iamge_cb;
|
||||
uloop_timeout_set(&activate_timer[i], atoi(start_time[i]) * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
int bbf_fw_image_activate(const char *bank_id, struct activate_image *active_img)
|
||||
int bbf_fw_image_activate(const char *bank_id, char *start_time[])
|
||||
{
|
||||
json_object *json_obj = NULL;
|
||||
|
||||
|
|
@ -580,8 +579,8 @@ int bbf_fw_image_activate(const char *bank_id, struct activate_image *active_img
|
|||
if (strcmp(status, "true") != 0)
|
||||
return -1;
|
||||
|
||||
if (*active_img->start_time) {
|
||||
activate_fw_images(active_img);
|
||||
if (DM_STRLEN(start_time[0])) {
|
||||
activate_fw_images(start_time);
|
||||
} else {
|
||||
if (dmubus_call_set("system", "reboot", UBUS_ARGS{0}, 0) != 0)
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -48,12 +48,6 @@ struct diagnostic_stats
|
|||
uint32_t ftp_syn;
|
||||
};
|
||||
|
||||
struct activate_image
|
||||
{
|
||||
struct uloop_timeout activate_timer;
|
||||
char *start_time;
|
||||
};
|
||||
|
||||
enum diagnostic_protocol {
|
||||
DIAGNOSTIC_HTTP = 1,
|
||||
DIAGNOSTIC_FTP
|
||||
|
|
@ -81,6 +75,6 @@ int bbf_config_restore(const char *url, const char *username, const char *passwo
|
|||
int bbf_fw_image_download(const char *url, const char *auto_activate, const char *username, const char *password,
|
||||
const char *file_size, const char *checksum_algorithm, const char *checksum,
|
||||
const char *bank_id, const char *command, const char *obj_path, const char *commandKey);
|
||||
int bbf_fw_image_activate(const char *bank_id, struct activate_image *active_img);
|
||||
int bbf_fw_image_activate(const char *bank_id, char *start_time[]);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1009,14 +1009,14 @@ static int get_operate_args_DeviceInfoFirmwareImage_Activate(char *refparam, str
|
|||
|
||||
static int operate_DeviceInfoFirmwareImage_Activate(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||
{
|
||||
struct activate_image active_images[MAX_TIME_WINDOW] = {0};
|
||||
char *start_time[MAX_TIME_WINDOW] = {0};
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(firmware_image_activate_in); i++)
|
||||
active_images[i].start_time = dmjson_get_value((json_object *)value, 1, firmware_image_activate_in[i]);
|
||||
start_time[i] = dmjson_get_value((json_object *)value, 1, firmware_image_activate_in[i]);
|
||||
|
||||
char *bank_id = dmjson_get_value((json_object *)data, 1, "id");
|
||||
|
||||
int res = bbf_fw_image_activate(bank_id, active_images);
|
||||
int res = bbf_fw_image_activate(bank_id, start_time);
|
||||
|
||||
return res ? CMD_FAIL : CMD_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue