#ifndef SMART_ALARM_TIMEZONES_H #define SMART_ALARM_TIMEZONES_H #include "lwip/arch.h" typedef struct { char zone_name[31]; // Timezone name (e.g., "Europe/Berlin") char std_abbr[6]; // Standard time abbreviation char dst_abbr[6]; // DST abbreviation s8_t std_offset_hours; // Standard time UTC offset hours (-12 to +14) u8_t std_offset_mins; // Standard time UTC offset minutes (0-59) s8_t dst_offset_hours; // DST UTC offset hours (-12 to +14) u8_t dst_offset_mins; // DST UTC offset minutes (0-59) u8_t dst_start_month; // DST start month (1-12) u8_t dst_start_week; // DST start week (1-5, where 5=last week) u8_t dst_start_day; // DST start day of week (0=Sunday..6=Saturday) s8_t dst_start_hour; // DST start hour (0-23) u8_t dst_start_min; // DST start minute (0-59) u8_t dst_end_month; // DST end month (1-12) u8_t dst_end_week; // DST end week (1-5, where 5=last week) u8_t dst_end_day; // DST end day of week (0=Sunday..6=Saturday) u8_t dst_end_hour; // DST end hour (0-23) u8_t dst_end_min; // DST end minute (0-59) bool has_dst; // 1 if timezone uses DST, 0 otherwise u8_t reserved; // Padding for alignment } timezone_t; extern const timezone_t timezones[]; void timezone_offset(u16_t timezone_index, datetime_t &dt); #endif //SMART_ALARM_TIMEZONES_H