Skip to content
This repository has been archived by the owner on Feb 17, 2020. It is now read-only.

Commit

Permalink
fix: some error handling mqtt module
Browse files Browse the repository at this point in the history
  • Loading branch information
simensrostad committed Aug 20, 2019
1 parent f1563ca commit 96ee34c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 45 deletions.
39 changes: 23 additions & 16 deletions applications/cat_tracker/src/mqtt_behaviour/mqtt_behaviour.c
Original file line number Diff line number Diff line change
Expand Up @@ -565,8 +565,7 @@ int publish_data(bool syncronization, bool pub_modem_d)
} else {
err = encode_message(&transmit_data, &sync_data);
if (err != 0) {
printk("ERROR when enconding message: %d\n",
err);
goto end;
}
transmit_data.topic = update_topic;
}
Expand All @@ -575,57 +574,51 @@ int publish_data(bool syncronization, bool pub_modem_d)
transmit_data.buf, transmit_data.len,
transmit_data.topic);
if (err != 0) {
printk("Could not publish data: %d\n", err);
goto end;
}

err = process_mqtt_and_sleep(&client, APP_SLEEP_MS);
if (err != 0) {
printk("Could not process data broker: %d\n", err);
goto end;
}

if (check_config_change()) {
err = encode_message(&transmit_data, &sync_data);
if (err != 0) {
printk("ERROR when enconding message: %d\n",
err);
goto end;
}
transmit_data.topic = update_topic;

data_publish(&client, MQTT_QOS_1_AT_LEAST_ONCE,
transmit_data.buf, transmit_data.len,
transmit_data.topic);
if (err != 0) {
printk("Could not publish configuration update: %d\n",
err);
goto end;
}

err = process_mqtt_and_sleep(&client, APP_SLEEP_MS);
if (err != 0) {
printk("Could not process data broker: %d\n",
err);
goto end;
}
}

if (pub_modem_d) {
err = encode_modem_data(&transmit_data, syncronization);
if (err != 0) {
printk("ERROR when enconding modem data: %d\n",
err);
goto end;
}
transmit_data.topic = update_topic;

data_publish(&client, MQTT_QOS_1_AT_LEAST_ONCE,
transmit_data.buf, transmit_data.len,
transmit_data.topic);
if (err != 0) {
printk("Could not publish configuration update: %d\n",
err);
goto end;
}

err = process_mqtt_and_sleep(&client, APP_SLEEP_MS);
if (err != 0) {
printk("Could not process data broker: %d\n",
err);
goto end;
}
}
}
Expand All @@ -642,4 +635,18 @@ int publish_data(bool syncronization, bool pub_modem_d)
}

return 0;

end:
err = mqtt_disconnect(&client);
if (err) {
printk("Could not disconnect\n");
}

wait(APP_SLEEP_MS);
err = mqtt_input(&client);
if (err) {
printk("Could not input data\n");
}

return err;
}
34 changes: 5 additions & 29 deletions applications/cat_tracker/src/mqtt_codec/mqtt_codec.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ int decode_response(char *input, struct Sync_data *sync_data)

string = cJSON_Print(root_obj);
if (string == NULL) {
printk("Failed to print monitor.\n");
printk("Failed to print message.\n");
}

printk("Incoming message %s\n", string);
Expand Down Expand Up @@ -276,17 +276,6 @@ int encode_modem_data(struct Transmit_data *output, bool syncronization)
err += json_add_str(dynamic_m_data_v, "ip",
modem_info->network.ip_address.value_string);

if (err != 0) {
cJSON_Delete(root_obj);
cJSON_Delete(state_obj);
cJSON_Delete(reported_obj);
cJSON_Delete(static_m_data);
cJSON_Delete(static_m_data_v);
cJSON_Delete(dynamic_m_data);
cJSON_Delete(dynamic_m_data_v);
return -ENOMEM;
}

err += json_add_obj(static_m_data, "v", static_m_data_v);
err += json_add_number(
static_m_data, "ts",
Expand Down Expand Up @@ -319,11 +308,11 @@ int encode_modem_data(struct Transmit_data *output, bool syncronization)
}

buffer = cJSON_Print(root_obj);
cJSON_Delete(root_obj);

output->buf = buffer;
output->len = strlen(buffer);

cJSON_Delete(root_obj);

return 0;
}

Expand Down Expand Up @@ -402,18 +391,6 @@ int encode_message(struct Transmit_data *output, struct Sync_data *sync_data)
sync_data->accel_threshold);
}

if (err != 0) {
cJSON_Delete(root_obj);
cJSON_Delete(state_obj);
cJSON_Delete(reported_obj);
cJSON_Delete(bat_obj);
cJSON_Delete(acc_obj);
cJSON_Delete(gps_obj);
cJSON_Delete(cfg_obj);
cJSON_Delete(gps_val_obj);
return -ENOMEM;
}

if (!change_config) {
if (sync_data->active == true &&
sync_data->gps_found == false) {
Expand Down Expand Up @@ -453,7 +430,7 @@ int encode_message(struct Transmit_data *output, struct Sync_data *sync_data)

if (change_gpst || change_active || change_active_wait ||
change_passive_wait || change_movement_timeout ||
change_accel_threshold) {
change_accel_threshold || change_config) {
err += json_add_obj(reported_obj, "cfg", cfg_obj);
change_gpst = change_active = change_active_wait =
change_passive_wait = change_movement_timeout =
Expand All @@ -477,12 +454,11 @@ int encode_message(struct Transmit_data *output, struct Sync_data *sync_data)
}

buffer = cJSON_Print(root_obj);
cJSON_Delete(root_obj);

output->buf = buffer;
output->len = strlen(buffer);

cJSON_Delete(root_obj);

return 0;
}

Expand Down

0 comments on commit 96ee34c

Please sign in to comment.