Files
ink-board/main/external/mtr/line_info.cpp
GW_MC c4635948e4 feat(travel): Implement settings UI and web server for MTR route configuration
- Added MainUIHandler class to manage the main UI and polling for arrival data.
- Introduced SettingsUI class for displaying QR code and configuration options.
- Created SettingsUIHandler to manage settings UI lifecycle and web server interactions.
- Developed WebHandler to handle HTTP requests for MTR route settings, including adding and removing routes.
- Implemented web endpoints for fetching MTR lines, routes, and saving settings.
- Enhanced UI with responsive design for e-ink displays and added error handling for web interactions.
2026-02-03 19:26:53 +08:00

54 lines
1.6 KiB
C++

#include "external/mtr/line_info.h"
#include "external/mtr/station_info.h"
#include "cJSON.h"
#include "esp_log.h"
LineInfo::LineInfo(cJSON* line_json) {
if (!line_json) {
ESP_LOGE(LINE_INFO_TAG, "line_json is null");
return;
}
// Parse line code
cJSON* code_json = cJSON_GetObjectItem(line_json, "code");
if (code_json && cJSON_IsString(code_json)) {
_code = code_json->valuestring;
} else {
ESP_LOGW(LINE_INFO_TAG, "Missing or invalid 'code' field");
}
// Parse line name
cJSON* name_json = cJSON_GetObjectItem(line_json, "name");
if (name_json && cJSON_IsString(name_json)) {
_name = name_json->valuestring;
} else {
ESP_LOGW(LINE_INFO_TAG, "Missing or invalid 'name' field");
}
// Parse line color (note: field is 'line_color' in JSON, not 'color')
cJSON* color_json = cJSON_GetObjectItem(line_json, "line_color");
if (color_json && cJSON_IsString(color_json)) {
_color = color_json->valuestring;
} else {
ESP_LOGW(LINE_INFO_TAG, "Missing or invalid 'line_color' field");
}
// Parse stations array
cJSON* stations_json = cJSON_GetObjectItem(line_json, "stations");
if (stations_json && cJSON_IsArray(stations_json)) {
int station_count = cJSON_GetArraySize(stations_json);
_stations.reserve(station_count);
for (int i = 0; i < station_count; i++) {
cJSON* station_json = cJSON_GetArrayItem(stations_json, i);
if (station_json) {
_stations.emplace_back(station_json);
}
}
ESP_LOGI(LINE_INFO_TAG, "Created LineInfo: %s with %d stations", _code.c_str(), station_count);
} else {
ESP_LOGW(LINE_INFO_TAG, "Missing or invalid 'stations' array");
}
}