|
|
|
@ -28,6 +28,11 @@ const char MQTT_TOPIC_ROBO_MODE[] = "/mobile/cmd/mode/"; |
|
|
|
const char MQTT_TOPIC_ROBO_NAV_TURN[] = "/mobile/cmd/nav/turn/"; |
|
|
|
const char MQTT_TOPIC_ROBO_NAV_TURN[] = "/mobile/cmd/nav/turn/"; |
|
|
|
const char MQTT_TOPIC_ROBO_NAV_MOVE[] = "/mobile/cmd/nav/move/"; |
|
|
|
const char MQTT_TOPIC_ROBO_NAV_MOVE[] = "/mobile/cmd/nav/move/"; |
|
|
|
const char MQTT_TOPIC_ROBO_NAV_STOP[] = "/mobile/cmd/nav/stop/"; |
|
|
|
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_ROBO_RESP_BATTERY[] = "/mobile/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
|
|
|
|
@ -158,6 +163,54 @@ void Challenge_Com_ParseMqtt(void *handler_args, esp_event_base_t base, int32_t |
|
|
|
handled = true; |
|
|
|
handled = true; |
|
|
|
Robo_Wrapper_Nav_Stop(); |
|
|
|
Robo_Wrapper_Nav_Stop(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// CMD: ROBO_CALIB_CMD
|
|
|
|
|
|
|
|
else if(McuUtility_strcmp(topic, MQTT_TOPIC_ROBO_CALIB_CMD)==0){ |
|
|
|
|
|
|
|
handled = true; |
|
|
|
|
|
|
|
// parse json
|
|
|
|
|
|
|
|
bool start = false; |
|
|
|
|
|
|
|
struct json_attr_t json_attrs[] = { |
|
|
|
|
|
|
|
{"start", t_boolean, .addr.boolean = &start}, |
|
|
|
|
|
|
|
{NULL}, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
int err = json_read_object(data, json_attrs, NULL); |
|
|
|
|
|
|
|
if(err != 0){ |
|
|
|
|
|
|
|
ESP_LOGE(TAG, "Parsing JSON data of ROBO_CALIB_CMD message failed. Event data was = %s", data); |
|
|
|
|
|
|
|
ESP_LOGE(TAG, "Parse error was: %s", json_error_string(err)); |
|
|
|
|
|
|
|
} else{ // successfully parsed
|
|
|
|
|
|
|
|
Robo_Wrapper_Calibration(start); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// CMD: ROBO_GET_CALIB
|
|
|
|
|
|
|
|
else if(McuUtility_strcmp(topic, MQTT_TOPIC_ROBO_GET_CALIB)==0){ |
|
|
|
|
|
|
|
handled = true; |
|
|
|
|
|
|
|
LineSensorCalibData_t calibData; |
|
|
|
|
|
|
|
Robo_Wrapper_GetCalibrationValues(&calibData); |
|
|
|
|
|
|
|
ESP_LOGI(TAG, "Read calibration data: state=%s", calibData.state); |
|
|
|
|
|
|
|
ESP_LOGI(TAG, "Read calibration data: values=%s", calibData.values); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// build json and respond
|
|
|
|
|
|
|
|
unsigned char payload[100] = "{\"state\": \""; |
|
|
|
|
|
|
|
McuUtility_strcat(payload, sizeof(payload), calibData.state); |
|
|
|
|
|
|
|
McuUtility_strcat(payload, sizeof(payload), (unsigned char*)"\", \"data\": \""); |
|
|
|
|
|
|
|
McuUtility_strcat(payload, sizeof(payload), calibData.values); |
|
|
|
|
|
|
|
McuUtility_strcat(payload, sizeof(payload), (unsigned char*)"\"}"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 */ |
|
|
|
/* both robot modes allowed commands */ |
|
|
|
@ -178,4 +231,7 @@ void Challenge_Com_SubscribeToAllTopics(void){ |
|
|
|
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_GET_CALIB); |
|
|
|
|
|
|
|
MyMqtt_Subscribe(MQTT_TOPIC_ROBO_REQ_BATTERY); |
|
|
|
} |
|
|
|
} |
|
|
|
|