implemented auto publish of battery voltage in both robot modes (ESP32)

main
Jonas Arnold 4 years ago
parent 630f504785
commit 9a6402f32e
  1. 4
      ADIS_ESP32_Eclipse/main/challenge_app.c
  2. 67
      ADIS_ESP32_Eclipse/main/challenge_com.c
  3. 3
      ADIS_ESP32_Eclipse/main/challenge_com.h

@ -56,7 +56,9 @@ static void appTask(void *pv){
// endless loop
for(;;){
vTaskDelay(pdMS_TO_TICKS(10000));
vTaskDelay(pdMS_TO_TICKS(5000));
// auto publish battery voltage
Challenge_Com_PublishBatteryVoltage();
}
}

@ -31,8 +31,9 @@ const char MQTT_TOPIC_ROBO_NAV_STOP[] = "/mobile/cmd/nav/stop/";
const char MQTT_TOPIC_ROBO_CALIB_CMD[] = "/mobile/cmd/line_sens/calib";
const char MQTT_TOPIC_ROBO_GET_CALIB[] = "/mobile/cmd/line_sens/get_calib";
const char MQTT_TOPIC_ROBO_CALIB_STATE[] = "/mobile/state/line_sens/calib_data";
const char MQTT_TOPIC_ROBO_REQ_BATTERY[] = "/mobile/cmd/battery/get_volt";
const char MQTT_TOPIC_REQ_BATTERY[] = "/both/cmd/battery/get_volt";
const char MQTT_TOPIC_ROBO_RESP_BATTERY[] = "/mobile/state/battery/voltage";
const char MQTT_TOPIC_STAT_RESP_BATTERY[] = "/stationary/state/battery/voltage";
void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data){
/* INFO
@ -197,23 +198,14 @@ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t
MyMqtt_Publish(MQTT_TOPIC_ROBO_CALIB_STATE, (char*)payload);
}
// CMD: ROBO_REQ_BATTERY
else if(McuUtility_strcmp(topic, MQTT_TOPIC_ROBO_REQ_BATTERY)==0){
handled = true;
unsigned char voltage[20] = "";
Robo_Wrapper_GetBatteryVoltage(voltage);
ESP_LOGI(TAG, "Read battery voltage=%s", voltage);
// build json and respond
unsigned char payload[100] = "{\"voltage\": \"";
McuUtility_strcat(payload, sizeof(payload), voltage);
McuUtility_strcat(payload, sizeof(payload), (unsigned char*)"\"}");
MyMqtt_Publish(MQTT_TOPIC_ROBO_RESP_BATTERY, (char*)payload);
}
}
/* both robot modes allowed commands */
// CMD: REQ_BATTERY
if(McuUtility_strcmp(topic, MQTT_TOPIC_REQ_BATTERY)==0){
handled = true;
Challenge_Com_PublishBatteryVoltage();
}
@ -223,15 +215,40 @@ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t
return;
}
void Challenge_Com_PublishBatteryVoltage(void){
unsigned char voltage[20] = "";
Robo_Wrapper_GetBatteryVoltage(voltage);
ESP_LOGI(TAG, "Read battery voltage=%s", voltage);
// build json and respond
unsigned char payload[100] = "{\"voltage\": \"";
McuUtility_strcat(payload, sizeof(payload), voltage);
McuUtility_strcat(payload, sizeof(payload), (unsigned char*)"\"}");
if(Challenge_App_GetRobotMode() == true){
MyMqtt_Publish(MQTT_TOPIC_STAT_RESP_BATTERY, (char*)payload);
}
else{
MyMqtt_Publish(MQTT_TOPIC_ROBO_RESP_BATTERY, (char*)payload);
}
}
void Challenge_Com_SubscribeToAllTopics(void){
MyMqtt_Subscribe(MQTT_TOPIC_SF_INITALL);
MyMqtt_Subscribe(MQTT_TOPIC_SF_DISPLAY);
MyMqtt_Subscribe(MQTT_TOPIC_SF_CONFIG_SETUP);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_MODE);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_MOVE);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_TURN);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_STOP);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_CALIB_CMD);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_GET_CALIB);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_REQ_BATTERY);
/* subscribe to stationary robot interested topics */
if(Challenge_App_GetRobotMode() == true){
MyMqtt_Subscribe(MQTT_TOPIC_SF_INITALL);
MyMqtt_Subscribe(MQTT_TOPIC_SF_DISPLAY);
MyMqtt_Subscribe(MQTT_TOPIC_SF_CONFIG_SETUP);
}
/* subscribe to mobile robot interested topics */
else{
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_MODE);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_MOVE);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_TURN);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_STOP);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_CALIB_CMD);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_GET_CALIB);
}
/* subscribe to topics relevant for both modes */
MyMqtt_Subscribe(MQTT_TOPIC_REQ_BATTERY);
}

@ -16,4 +16,7 @@ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t
/*! \brief subscribes to all relevant topics */
void Challenge_Com_SubscribeToAllTopics(void);
/*! \brief publish the battery voltage */
void Challenge_Com_PublishBatteryVoltage(void);
#endif /* MAIN_CHALLENGE_COM_H_ */

Loading…
Cancel
Save