Upgrade Playlist Features
This commit is contained in:
46
main/boards/genjutech-s3-1.54tft/weather_service.h
Normal file
46
main/boards/genjutech-s3-1.54tft/weather_service.h
Normal file
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* @file weather_service.h
|
||||
* @brief Weather API service for fetching weather data
|
||||
* @version 1.0
|
||||
* @date 2025-01-10
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include "idle_screen.h"
|
||||
|
||||
class WeatherService {
|
||||
public:
|
||||
WeatherService();
|
||||
~WeatherService();
|
||||
|
||||
// Initialize weather service with city code (optional, will auto-detect if empty)
|
||||
void Initialize(const std::string& city_code = ""); // Empty: auto-detect
|
||||
|
||||
// Auto-detect city code by IP address
|
||||
bool AutoDetectCityCode();
|
||||
|
||||
// Fetch weather data (async)
|
||||
void FetchWeather();
|
||||
|
||||
// Set callback for when weather data is updated
|
||||
void SetWeatherCallback(std::function<void(const WeatherData&)> callback);
|
||||
|
||||
// Get last fetched weather data
|
||||
const WeatherData& GetLastWeatherData() const { return last_weather_data_; }
|
||||
|
||||
// Get current city code
|
||||
const std::string& GetCityCode() const { return city_code_; }
|
||||
|
||||
private:
|
||||
void ParseWeatherData(const std::string& response);
|
||||
std::string ExtractJsonValue(const std::string& json, const std::string& key);
|
||||
|
||||
private:
|
||||
std::string city_code_;
|
||||
WeatherData last_weather_data_;
|
||||
std::function<void(const WeatherData&)> weather_callback_;
|
||||
bool auto_detect_enabled_;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user