Explorar o código

Merge pull request #14 from leedave/feature/subghz_updates

Display when data is being generated and when it is being sent
David Lee %!s(int64=2) %!d(string=hai) anos
pai
achega
524fc2eef3

+ 8 - 0
docs/changelog.md

@@ -1,3 +1,11 @@
+## v0.6
+
+- Display when data is being generated and when it is being sent
+- Fixed issue where callbacks were sent infitiv when leaving the transmission page
+- Fixed blinking remaining when leaving transmission page prematurely
+- Set default last station Number lower to prevent crashes on first try
+
+
 ## v0.5
 
 Compiled .sub data is read out and sent via SubGhz. Currently only support for T119. 

+ 2 - 0
scenes/meal_pager_scene_menu.c

@@ -1,5 +1,6 @@
 #include "../meal_pager_i.h"
 #include "../helpers/meal_pager_led.h"
+#include "../views/meal_pager_transmit.h"
 
 enum SubmenuIndex {
     SubmenuIndexTransmit = 10,
@@ -56,6 +57,7 @@ bool meal_pager_scene_menu_on_event(void* context, SceneManagerEvent event) {
             app->state_notifications = SubGhzNotificationStateIDLE;
             subghz_txrx_stop(app->subghz->txrx);
             meal_pager_blink_stop(app);
+            meal_pager_transmit_model_set_sending(app->meal_pager_transmit, 0);
             //notification_message(app->notification, &sequence_blink_magenta_10);
         }
         return true;

+ 3 - 0
scenes/meal_pager_scene_transmit.c

@@ -4,6 +4,7 @@
 #include "../views/meal_pager_transmit.h"
 #include "../helpers/meal_pager_led.h"
 #include "../helpers/subghz/subghz.h"
+#include "../views/meal_pager_transmit.h"
 #include <dolphin/dolphin.h>
 
 void meal_pager_transmit_callback(Meal_PagerCustomEvent event, void* context) {
@@ -34,6 +35,7 @@ void meal_pager_scene_transmit_on_enter(void* context) {
     //meal_pager_blink_start_subghz(app);
     FURI_LOG_D(TAG, "Start Transmitting");
     if (!app->stop_transmit) {
+        meal_pager_transmit_model_set_sending(app->meal_pager_transmit, 1);
         subghz_send(app);
     }
     dolphin_deed(DolphinDeedSubGhzSend);
@@ -69,6 +71,7 @@ bool meal_pager_scene_transmit_on_event(void* context, SceneManagerEvent event)
                 app->state_notifications = SubGhzNotificationStateIDLE;
                 subghz_txrx_stop(app->subghz->txrx);
                 meal_pager_blink_stop(app);
+                meal_pager_transmit_model_set_sending(app->meal_pager_transmit, 0);
                 scene_manager_next_scene(app->scene_manager, Meal_PagerSceneMenu);
                 FURI_LOG_D(TAG, "Stop Event");
                 break;

+ 23 - 4
views/meal_pager_transmit.c

@@ -23,6 +23,7 @@ typedef struct {
     uint32_t pager_type;
     uint32_t station;
     uint32_t pager;
+    uint32_t sending;
 } Meal_PagerTransmitModel;
 
 void meal_pager_transmit_set_callback(
@@ -36,7 +37,6 @@ void meal_pager_transmit_set_callback(
 }
 
 void meal_pager_transmit_draw(Canvas* canvas, Meal_PagerTransmitModel* model) {
-    UNUSED(model);
     canvas_clear(canvas);
     canvas_set_color(canvas, ColorBlack);
     canvas_set_font(canvas, FontPrimary);
@@ -48,9 +48,13 @@ void meal_pager_transmit_draw(Canvas* canvas, Meal_PagerTransmitModel* model) {
     snprintf(pagerText, 20, "Pager: %lu", model->pager);
     canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, pager_type_text_long[model->pager_type]); 
     canvas_set_font(canvas, FontSecondary);
-    canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, "Generating Data");
-    canvas_draw_str_aligned(canvas, 0, 32, AlignLeft, AlignTop, stationText); 
-    canvas_draw_str_aligned(canvas, 0, 42, AlignLeft, AlignTop, pagerText); 
+    if (model->sending == 0) {
+        canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, "Generating Data");
+        canvas_draw_str_aligned(canvas, 0, 32, AlignLeft, AlignTop, stationText); 
+        canvas_draw_str_aligned(canvas, 0, 42, AlignLeft, AlignTop, pagerText); 
+    } else {
+        canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, "Sending Data");
+    }
 }
 
 static void meal_pager_transmit_model_init(Meal_PagerTransmitModel* const model) {
@@ -58,6 +62,7 @@ static void meal_pager_transmit_model_init(Meal_PagerTransmitModel* const model)
     model->pager_type = 0;
     model->station = 0;
     model->pager = 0;
+    model->sending = 0;
 }
 
 void meal_pager_transmit_model_set_type(Meal_PagerTransmit* instance, uint32_t type) {
@@ -81,6 +86,20 @@ void meal_pager_transmit_model_set_station(Meal_PagerTransmit* instance, uint32_
         true);
 }
 
+void meal_pager_transmit_model_set_sending(Meal_PagerTransmit* instance, uint32_t value) {
+    furi_assert(instance);
+    Meal_PagerTransmitModel* model = view_get_model(instance->view);
+    model->sending = value;
+    view_commit_model(instance->view, false);
+    with_view_model(
+        instance->view,
+        Meal_PagerTransmitModel* model,
+        {
+            UNUSED(model);
+        },
+        true);
+}
+
 void meal_pager_transmit_model_set_pager(Meal_PagerTransmit* instance, uint32_t pager) {
     furi_assert(instance);
     Meal_PagerTransmitModel* model = view_get_model(instance->view);

+ 1 - 0
views/meal_pager_transmit.h

@@ -12,6 +12,7 @@ void meal_pager_transmit_set_callback(
     Meal_PagerTransmitCallback callback,
     void* context);
 
+void meal_pager_transmit_model_set_sending(Meal_PagerTransmit* instance, uint32_t value);
 void meal_pager_transmit_model_set_type(Meal_PagerTransmit* instance, uint32_t type);
 void meal_pager_transmit_model_set_station(Meal_PagerTransmit* instance, uint32_t station);
 void meal_pager_transmit_model_set_pager(Meal_PagerTransmit* instance, uint32_t pager);