Added new informations in the about section (raw magnetometer data, raw pressure and temperature and more).

This commit is contained in:
anschrammh 2023-04-20 13:14:05 +02:00
parent fcc152f64d
commit ef0abe0ab7
2 changed files with 95 additions and 4 deletions

View File

@ -26,6 +26,8 @@ static void update_menu_list_item_text(lv_obj_t *menu_list_item, const char *tex
static void _simulate_side_screen_item_click(SettingsScreen_t * const settingsScreen, lv_obj_t *item); static void _simulate_side_screen_item_click(SettingsScreen_t * const settingsScreen, lv_obj_t *item);
static void _set_rtc_time_to_label(SettingsScreen_t * const settingsScreen); static void _set_rtc_time_to_label(SettingsScreen_t * const settingsScreen);
static void _set_battery_voltage_to_label(SettingsScreen_t * const settingsScreen); static void _set_battery_voltage_to_label(SettingsScreen_t * const settingsScreen);
static void _set_magnetometer_data_to_label(SettingsScreen_t * const settingsScreen);
static void _set_bmp280_data_to_label(SettingsScreen_t * const settingsScreen);
static void _reset_switch_pointers(SettingsScreen_t * const settingsScreen); static void _reset_switch_pointers(SettingsScreen_t * const settingsScreen);
static void _enable_time_and_date_rollers(bool enabled, SettingsScreen_t * const settingsScreen); static void _enable_time_and_date_rollers(bool enabled, SettingsScreen_t * const settingsScreen);
@ -253,8 +255,16 @@ static void factory_reset_cb(lv_event_t *e)
static void about_refresh_timer_cb(lv_timer_t *timer) static void about_refresh_timer_cb(lv_timer_t *timer)
{ {
SettingsScreen_t *settingsScreen = timer->user_data; SettingsScreen_t *settingsScreen = timer->user_data;
static uint8_t timer_divider = 6;
if(timer_divider++ == 6)
{
_set_rtc_time_to_label(settingsScreen); _set_rtc_time_to_label(settingsScreen);
_set_battery_voltage_to_label(settingsScreen); _set_battery_voltage_to_label(settingsScreen);
_set_bmp280_data_to_label(settingsScreen);
timer_divider = 0;
}
_set_magnetometer_data_to_label(settingsScreen);
} }
static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen) static void load_time_and_date_side_screen(SettingsScreen_t *settingsScreen)
@ -589,9 +599,45 @@ static void load_about_side_screen(SettingsScreen_t *settingsScreen)
lv_obj_align_to(settingsScreen->currentTime.current_time_label, rtc_time, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5); lv_obj_align_to(settingsScreen->currentTime.current_time_label, rtc_time, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
_set_rtc_time_to_label(settingsScreen); _set_rtc_time_to_label(settingsScreen);
lv_obj_t *magnetometer_data = lv_label_create(settingsScreen->side_screen);
lv_label_set_text_static(magnetometer_data, "Magnetometer :");
lv_obj_align_to(magnetometer_data, settingsScreen->currentTime.current_time_label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
/* Display the magnetometer raw data with refresh */
settingsScreen->magnetometer_x.label = lv_label_create(settingsScreen->side_screen);
lv_obj_set_style_text_color(settingsScreen->magnetometer_x.label, lv_color_make(130, 130, 130), LV_PART_MAIN);
lv_obj_align_to(settingsScreen->magnetometer_x.label, magnetometer_data, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
settingsScreen->magnetometer_y.label = lv_label_create(settingsScreen->side_screen);
lv_obj_set_style_text_color(settingsScreen->magnetometer_y.label, lv_color_make(130, 130, 130), LV_PART_MAIN);
lv_obj_align_to(settingsScreen->magnetometer_y.label, settingsScreen->magnetometer_x.label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
settingsScreen->magnetometer_z.label = lv_label_create(settingsScreen->side_screen);
lv_obj_set_style_text_color(settingsScreen->magnetometer_z.label, lv_color_make(130, 130, 130), LV_PART_MAIN);
lv_obj_align_to(settingsScreen->magnetometer_z.label, settingsScreen->magnetometer_y.label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
settingsScreen->magnetometer_temperature.label = lv_label_create(settingsScreen->side_screen);
lv_obj_set_style_text_color(settingsScreen->magnetometer_temperature.label, lv_color_make(130, 130, 130), LV_PART_MAIN);
lv_obj_align_to(settingsScreen->magnetometer_temperature.label, settingsScreen->magnetometer_z.label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
_set_magnetometer_data_to_label(settingsScreen);
lv_obj_t *bmp280_data = lv_label_create(settingsScreen->side_screen);
lv_label_set_text_static(bmp280_data, "Pressure & temp :");
lv_obj_align_to(bmp280_data, settingsScreen->magnetometer_temperature.label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
/* Display pressure and temperature sensor data with refresh */
settingsScreen->bmp280_pressure.label = lv_label_create(settingsScreen->side_screen);
lv_obj_set_style_text_color(settingsScreen->bmp280_pressure.label, lv_color_make(130, 130, 130), LV_PART_MAIN);
lv_obj_align_to(settingsScreen->bmp280_pressure.label, bmp280_data, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
settingsScreen->bmp280_temperature.label = lv_label_create(settingsScreen->side_screen);
lv_obj_set_style_text_color(settingsScreen->bmp280_temperature.label, lv_color_make(130, 130, 130), LV_PART_MAIN);
lv_obj_align_to(settingsScreen->bmp280_temperature.label, settingsScreen->bmp280_pressure.label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
_set_bmp280_data_to_label(settingsScreen);
lv_obj_t *battery_label = lv_label_create(settingsScreen->side_screen); lv_obj_t *battery_label = lv_label_create(settingsScreen->side_screen);
lv_label_set_text_static(battery_label, "Battery Voltage :"); lv_label_set_text_static(battery_label, "Battery Voltage :");
lv_obj_align_to(battery_label, settingsScreen->currentTime.current_time_label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5); lv_obj_align_to(battery_label, settingsScreen->bmp280_temperature.label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5);
settingsScreen->batteryVoltage.batteryVoltageLabel = lv_label_create(settingsScreen->side_screen); settingsScreen->batteryVoltage.batteryVoltageLabel = lv_label_create(settingsScreen->side_screen);
_set_battery_voltage_to_label(settingsScreen); _set_battery_voltage_to_label(settingsScreen);
@ -617,7 +663,7 @@ static void load_about_side_screen(SettingsScreen_t *settingsScreen)
lv_timer_del(settingsScreen->about_refresh_timer); lv_timer_del(settingsScreen->about_refresh_timer);
settingsScreen->about_refresh_timer = NULL; settingsScreen->about_refresh_timer = NULL;
} }
settingsScreen->about_refresh_timer = lv_timer_create(&(about_refresh_timer_cb), 1000, settingsScreen); settingsScreen->about_refresh_timer = lv_timer_create(&(about_refresh_timer_cb), 150, settingsScreen);
} }
static void menu_list_item_event_handler(lv_event_t * e) static void menu_list_item_event_handler(lv_event_t * e)
@ -786,6 +832,37 @@ static void _set_battery_voltage_to_label(SettingsScreen_t * const settingsScree
lv_label_set_text_static(settingsScreen->batteryVoltage.batteryVoltageLabel, settingsScreen->batteryVoltage.batteryVoltageText); lv_label_set_text_static(settingsScreen->batteryVoltage.batteryVoltageLabel, settingsScreen->batteryVoltage.batteryVoltageText);
} }
static void _set_magnetometer_data_to_label(SettingsScreen_t * const settingsScreen)
{
int16_t field_x = 0, field_y = 0, field_z = 0;
float temperature = 0.0;
if(settingsScreen->settingsScreenAPIInterface.getMagnetometerRawDataCb) settingsScreen->settingsScreenAPIInterface.getMagnetometerRawDataCb(&field_x, &field_y, &field_z, &temperature);
sprintf(settingsScreen->magnetometer_x.text, "x: %d", field_x);
lv_label_set_text_static(settingsScreen->magnetometer_x.label, settingsScreen->magnetometer_x.text);
sprintf(settingsScreen->magnetometer_y.text, "y: %d", field_y);
lv_label_set_text_static(settingsScreen->magnetometer_y.label, settingsScreen->magnetometer_y.text);
sprintf(settingsScreen->magnetometer_z.text, "z: %d", field_z);
lv_label_set_text_static(settingsScreen->magnetometer_z.label, settingsScreen->magnetometer_z.text);
sprintf(settingsScreen->magnetometer_temperature.text, "%.2f °C", temperature);
lv_label_set_text_static(settingsScreen->magnetometer_temperature.label, settingsScreen->magnetometer_temperature.text);
}
static void _set_bmp280_data_to_label(SettingsScreen_t * const settingsScreen)
{
float pressure = 0.0, temperature = 0.0;
if(settingsScreen->settingsScreenAPIInterface.getBMP280DataCb) settingsScreen->settingsScreenAPIInterface.getBMP280DataCb(&temperature, &pressure);
sprintf(settingsScreen->bmp280_pressure.text, "%.2f hPa", pressure);
lv_label_set_text_static(settingsScreen->bmp280_pressure.label, settingsScreen->bmp280_pressure.text);
sprintf(settingsScreen->bmp280_temperature.text, "%.2f °C", temperature);
lv_label_set_text_static(settingsScreen->bmp280_temperature.label, settingsScreen->bmp280_temperature.text);
}
static void _reset_switch_pointers(SettingsScreen_t * const settingsScreen) static void _reset_switch_pointers(SettingsScreen_t * const settingsScreen)
{ {
settingsScreen->auto_set_time_switch = NULL; settingsScreen->auto_set_time_switch = NULL;

View File

@ -25,6 +25,8 @@ typedef struct SettingsScreenAPIInterface
void (*setLanguageSettingsCb)(uint8_t *language, SettingMode_e mode); void (*setLanguageSettingsCb)(uint8_t *language, SettingMode_e mode);
void (*getBLEDeviceNameCb)(const char **dev_name); void (*getBLEDeviceNameCb)(const char **dev_name);
void (*getBatteryVoltageCb)(uint16_t *battery_voltage); void (*getBatteryVoltageCb)(uint16_t *battery_voltage);
void (*getMagnetometerRawDataCb)(int16_t *field_x, int16_t *field_y, int16_t *field_z, float *temperature);
void (*getBMP280DataCb)(float *temperature, float *pressure);
void (*saveSettingsCb)(void); void (*saveSettingsCb)(void);
void (*factoryResetCb)(void); void (*factoryResetCb)(void);
} SettingsScreenAPIInterface_t; } SettingsScreenAPIInterface_t;
@ -68,6 +70,18 @@ typedef struct SettingsScreen
char batteryVoltageText[8]; char batteryVoltageText[8];
} batteryVoltage; } batteryVoltage;
struct
{
lv_obj_t *label;
char text[11];
} magnetometer_x, magnetometer_y, magnetometer_z, magnetometer_temperature, bmp280_temperature;
struct
{
lv_obj_t *label;
char text[13];
} bmp280_pressure;
/* Main screen */ /* Main screen */
lv_obj_t *display; lv_obj_t *display;