Explorar el Código

Added exit from the application

Victor hace 3 años
padre
commit
4d2cb1a3d4
Se han modificado 3 ficheros con 17 adiciones y 5 borrados
  1. 13 0
      scenes/TempHum_scene.c
  2. 2 2
      unitemp.c
  3. 2 3
      unitemp.h

+ 13 - 0
scenes/TempHum_scene.c

@@ -37,10 +37,23 @@ static void TempHum_draw_callback(Canvas* canvas, void* _model) {
         if(app->sensors_count == 0) canvas_draw_str(canvas, 0, 24, "Sensors not found");
         if(app->sensors_count == 0) canvas_draw_str(canvas, 0, 24, "Sensors not found");
     }
     }
 }
 }
+
+bool input_callback(InputEvent* event, void* context) {
+    Unitemp* app = context;
+
+    //Вход по короткому нажатию
+    if(event->key == InputKeyBack && event->type == InputTypeShort) {
+        app->processing = false;
+    }
+
+    return true;
+}
+
 void TempHum_secene_alloc(void) {
 void TempHum_secene_alloc(void) {
     view = view_alloc();
     view = view_alloc();
     view_set_context(view, app);
     view_set_context(view, app);
     view_set_draw_callback(view, TempHum_draw_callback);
     view_set_draw_callback(view, TempHum_draw_callback);
+    view_set_input_callback(view, input_callback);
 
 
     view_dispatcher_add_view(app->view_dispatcher, TEMPHUM_VIEW, view);
     view_dispatcher_add_view(app->view_dispatcher, TEMPHUM_VIEW, view);
 }
 }

+ 2 - 2
unitemp.c

@@ -185,7 +185,9 @@ static bool unitemp_loadSettings(void) {
 static bool unitemp_alloc(void) {
 static bool unitemp_alloc(void) {
     //Выделение памяти под данные приложения
     //Выделение памяти под данные приложения
     app = malloc(sizeof(Unitemp));
     app = malloc(sizeof(Unitemp));
+    //Разрешение работы приложения
     app->processing = true;
     app->processing = true;
+
     //Открытие хранилища (?)
     //Открытие хранилища (?)
     app->storage = furi_record_open(RECORD_STORAGE);
     app->storage = furi_record_open(RECORD_STORAGE);
 
 
@@ -202,7 +204,6 @@ static bool unitemp_alloc(void) {
 
 
     TempHum_secene_alloc();
     TempHum_secene_alloc();
 
 
-    view_dispatcher_enable_queue(app->view_dispatcher);
     view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
     view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
 
 
     return true;
     return true;
@@ -258,7 +259,6 @@ int32_t unitemp_app() {
 
 
     while(app->processing) {
     while(app->processing) {
         unitemp_sensors_updateValues();
         unitemp_sensors_updateValues();
-        furi_delay_ms(1000);
     }
     }
 
 
     //Деинициализация датчиков
     //Деинициализация датчиков

+ 2 - 3
unitemp.h

@@ -41,7 +41,6 @@ typedef struct {
     //Бесконечная работа подсветки
     //Бесконечная работа подсветки
     bool infinityBacklight;
     bool infinityBacklight;
     //Единица измерения температуры
     //Единица измерения температуры
-    //Ложь - градусы Цельсия, истина - Фарeнгейты
     measureUnit unit;
     measureUnit unit;
     //Последнее состояние OTG
     //Последнее состояние OTG
     bool lastOTGState;
     bool lastOTGState;
@@ -49,8 +48,8 @@ typedef struct {
 
 
 //Основная структура плагина
 //Основная структура плагина
 typedef struct {
 typedef struct {
-    bool processing;
-
+    //Система
+    bool processing; //Флаг работы приложения. При ложном значении приложение закрывается
     //Основные настройки
     //Основные настройки
     UnitempSettings settings;
     UnitempSettings settings;
     //Список указателей на датчики
     //Список указателей на датчики