Added new informations in the about section (raw magnetometer data, raw pressure and temperature and more).
This commit is contained in:
parent
fcc152f64d
commit
ef0abe0ab7
@ -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;
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user