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. 45
      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 // endless loop
for(;;){ 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_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_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_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_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){ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data){
/* INFO /* INFO
@ -197,9 +198,24 @@ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t
MyMqtt_Publish(MQTT_TOPIC_ROBO_CALIB_STATE, (char*)payload); MyMqtt_Publish(MQTT_TOPIC_ROBO_CALIB_STATE, (char*)payload);
} }
// CMD: ROBO_REQ_BATTERY }
else if(McuUtility_strcmp(topic, MQTT_TOPIC_ROBO_REQ_BATTERY)==0){
/* both robot modes allowed commands */
// CMD: REQ_BATTERY
if(McuUtility_strcmp(topic, MQTT_TOPIC_REQ_BATTERY)==0){
handled = true; handled = true;
Challenge_Com_PublishBatteryVoltage();
}
if(handled == false){
ESP_LOGE(TAG, "Received data could not be handled. Topic was %s", topic);
}
return;
}
void Challenge_Com_PublishBatteryVoltage(void){
unsigned char voltage[20] = ""; unsigned char voltage[20] = "";
Robo_Wrapper_GetBatteryVoltage(voltage); Robo_Wrapper_GetBatteryVoltage(voltage);
ESP_LOGI(TAG, "Read battery voltage=%s", voltage); ESP_LOGI(TAG, "Read battery voltage=%s", voltage);
@ -209,29 +225,30 @@ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t
McuUtility_strcat(payload, sizeof(payload), voltage); McuUtility_strcat(payload, sizeof(payload), voltage);
McuUtility_strcat(payload, sizeof(payload), (unsigned char*)"\"}"); McuUtility_strcat(payload, sizeof(payload), (unsigned char*)"\"}");
MyMqtt_Publish(MQTT_TOPIC_ROBO_RESP_BATTERY, (char*)payload); if(Challenge_App_GetRobotMode() == true){
MyMqtt_Publish(MQTT_TOPIC_STAT_RESP_BATTERY, (char*)payload);
} }
else{
MyMqtt_Publish(MQTT_TOPIC_ROBO_RESP_BATTERY, (char*)payload);
} }
/* both robot modes allowed commands */
if(handled == false){
ESP_LOGE(TAG, "Received data could not be handled. Topic was %s", topic);
}
return;
} }
void Challenge_Com_SubscribeToAllTopics(void){ void Challenge_Com_SubscribeToAllTopics(void){
/* subscribe to stationary robot interested topics */
if(Challenge_App_GetRobotMode() == true){
MyMqtt_Subscribe(MQTT_TOPIC_SF_INITALL); MyMqtt_Subscribe(MQTT_TOPIC_SF_INITALL);
MyMqtt_Subscribe(MQTT_TOPIC_SF_DISPLAY); MyMqtt_Subscribe(MQTT_TOPIC_SF_DISPLAY);
MyMqtt_Subscribe(MQTT_TOPIC_SF_CONFIG_SETUP); 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_MODE);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_MOVE); MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_MOVE);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_TURN); MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_TURN);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_STOP); MyMqtt_Subscribe(MQTT_TOPIC_ROBO_NAV_STOP);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_CALIB_CMD); MyMqtt_Subscribe(MQTT_TOPIC_ROBO_CALIB_CMD);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_GET_CALIB); MyMqtt_Subscribe(MQTT_TOPIC_ROBO_GET_CALIB);
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_REQ_BATTERY); }
/* 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 */ /*! \brief subscribes to all relevant topics */
void Challenge_Com_SubscribeToAllTopics(void); void Challenge_Com_SubscribeToAllTopics(void);
/*! \brief publish the battery voltage */
void Challenge_Com_PublishBatteryVoltage(void);
#endif /* MAIN_CHALLENGE_COM_H_ */ #endif /* MAIN_CHALLENGE_COM_H_ */

Loading…
Cancel
Save