#pragma once #include #include #include #include #include #include #include #include #include "gui/views/main_view.h" #include #include #include "gui/scenes/config/lightmeter_scene.h" #include #include "lightmeter_config.h" #include #include #define APP_PATH_DIR STORAGE_APP_DATA_PATH_PREFIX #define APP_PATH_CFG "config.txt" typedef struct { int32_t iso; int32_t nd; int32_t aperture; int32_t dome; int32_t backlight; int32_t lux_only; int32_t sensor_type; int32_t measurement_resolution; int32_t device_addr; } LightMeterConfig; typedef struct { Gui* gui; SceneManager* scene_manager; ViewDispatcher* view_dispatcher; MainView* main_view; VariableItemList* var_item_list; VariableItem* var_item_addr; LightMeterConfig* config; NotificationApp* notifications; Widget* widget; Storage* storage; FuriString* cfg_path; } LightMeterApp; typedef enum { LightMeterAppViewMainView, LightMeterAppViewConfigView, LightMeterAppViewVarItemList, LightMeterAppViewAbout, LightMeterAppViewHelp, } LightMeterAppView; typedef enum { LightMeterAppCustomEventReset, LightMeterAppCustomEventConfig, LightMeterAppCustomEventHelp, LightMeterAppCustomEventAbout, } LightMeterAppCustomEvent; void lightmeter_app_set_config(LightMeterApp* context, LightMeterConfig* config); void lightmeter_app_i2c_init_sensor(LightMeterApp* context); void lightmeter_app_i2c_deinit_sensor(LightMeterApp* context); void lightmeter_app_i2c_callback(LightMeterApp* context); void lightmeter_app_reset_callback(LightMeterApp* context);