Просмотр исходного кода

Remove staged wifi features from FAP. Future TODO.

Cody Tolene 1 год назад
Родитель
Сommit
53e849891d

+ 0 - 1
.prettierignore

@@ -1 +0,0 @@
-README.md

+ 1 - 0
views/camera_suite_view_guide.c

@@ -54,6 +54,7 @@ bool camera_suite_view_guide_input(InputEvent* event, void* context) {
                 CameraSuiteViewGuideModel * model,
                 {
                     UNUSED(model);
+                    // Go back to the main menu.
                     instance->callback(CameraSuiteCustomEventSceneGuideBack, instance->context);
                 },
                 true);

+ 11 - 11
views/camera_suite_view_start.c

@@ -4,16 +4,6 @@
 #include <input/input.h>
 #include <gui/elements.h>
 
-struct CameraSuiteViewStart {
-    View* view;
-    CameraSuiteViewStartCallback callback;
-    void* context;
-};
-
-typedef struct {
-    int some_value;
-} CameraSuiteViewStartModel;
-
 void camera_suite_view_start_set_callback(
     CameraSuiteViewStart* instance,
     CameraSuiteViewStartCallback callback,
@@ -169,12 +159,22 @@ void camera_suite_view_start_enter(void* context) {
 }
 
 CameraSuiteViewStart* camera_suite_view_start_alloc() {
+    // Allocate memory for the instance
     CameraSuiteViewStart* instance = malloc(sizeof(CameraSuiteViewStart));
+
+    // Allocate the view object
     instance->view = view_alloc();
+
+    // Allocate model
     view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(CameraSuiteViewStartModel));
-    // furi_assert crashes in events without this
+
+    // Set context for the view (furi_assert crashes in events without this)
     view_set_context(instance->view, instance);
+
+    // Set draw callback
     view_set_draw_callback(instance->view, (ViewDrawCallback)camera_suite_view_start_draw);
+
+    // Set input callback
     view_set_input_callback(instance->view, camera_suite_view_start_input);
 
     with_view_model(

+ 11 - 3
views/camera_suite_view_start.h

@@ -3,10 +3,18 @@
 #include <gui/view.h>
 #include "../helpers/camera_suite_custom_event.h"
 
-typedef struct CameraSuiteViewStart CameraSuiteViewStart;
-
 typedef void (*CameraSuiteViewStartCallback)(CameraSuiteCustomEvent event, void* context);
 
+typedef struct CameraSuiteViewStart {
+    View* view;
+    CameraSuiteViewStartCallback callback;
+    void* context;
+} CameraSuiteViewStart;
+
+typedef struct {
+    int some_value;
+} CameraSuiteViewStartModel;
+
 void camera_suite_view_start_set_callback(
     CameraSuiteViewStart* camera_suite_view_start,
     CameraSuiteViewStartCallback callback,
@@ -16,4 +24,4 @@ View* camera_suite_view_start_get_view(CameraSuiteViewStart* camera_suite_static
 
 CameraSuiteViewStart* camera_suite_view_start_alloc();
 
-void camera_suite_view_start_free(CameraSuiteViewStart* camera_suite_static);
+void camera_suite_view_start_free(CameraSuiteViewStart* camera_suite_static);

+ 19 - 115
views/camera_suite_view_wifi_camera.c

@@ -8,6 +8,16 @@
 #include "../helpers/camera_suite_speaker.h"
 #include "../helpers/camera_suite_led.h"
 
+void camera_suite_view_wifi_camera_set_callback(
+    CameraSuiteViewWiFiCamera* instance,
+    CameraSuiteViewWiFiCameraCallback callback,
+    void* context) {
+    furi_assert(instance);
+    furi_assert(callback);
+    instance->callback = callback;
+    instance->context = context;
+}
+
 static void camera_suite_view_wifi_camera_draw(Canvas* canvas, void* model) {
     furi_assert(canvas);
     furi_assert(model);
@@ -19,61 +29,13 @@ static void camera_suite_view_wifi_camera_draw(Canvas* canvas, void* model) {
     canvas_set_font(canvas, FontSecondary);
     canvas_draw_frame(canvas, 0, 0, FRAME_WIDTH, FRAME_HEIGHT);
 
-    canvas_draw_str_aligned(canvas, 3, 3, AlignLeft, AlignTop, "Starting WiFi Stream at:");
+    canvas_draw_str_aligned(canvas, 3, 3, AlignLeft, AlignTop, "Feature coming soon!");
+
+    // Draw log from camera.
     canvas_draw_str_aligned(
         canvas, 3, 13, AlignLeft, AlignTop, furi_string_get_cstr(instance->log));
 }
 
-static int32_t camera_suite_wifi_camera_worker(void* context) {
-    furi_assert(context);
-
-    CameraSuiteViewWiFiCamera* instance = context;
-
-    while(1) {
-        uint32_t events =
-            furi_thread_flags_wait(WIFI_WORKER_EVENTS_MASK, FuriFlagWaitAny, FuriWaitForever);
-
-        // Check if an error occurred.
-        furi_check((events & FuriFlagError) == 0);
-
-        // Check if the thread should stop.
-        if(events & WorkerEventStop) {
-            break;
-        } else if(events & WorkerEventRx) {
-            size_t length = 0;
-            do {
-                size_t buffer_size = 320;
-                uint8_t data[buffer_size];
-                length =
-                    furi_stream_buffer_receive(instance->wifi_rx_stream, data, buffer_size, 0);
-                if(length > 0) {
-                    data[length] = '\0';
-
-                    with_view_model(
-                        instance->view,
-                        CameraSuiteViewWiFiCameraModel * model,
-                        {
-                            furi_string_cat_printf(model->log, "%s", data);
-
-                            // Truncate if too long.
-                            model->log_strlen += length;
-                            if(model->log_strlen >= 4096 - 1) {
-                                furi_string_right(model->log, model->log_strlen / 2);
-                                model->log_strlen = furi_string_size(model->log) + length;
-                            }
-                        },
-                        true);
-                }
-            } while(length > 0);
-
-            with_view_model(
-                instance->view, CameraSuiteViewWiFiCameraModel * model, { UNUSED(model); }, true);
-        }
-    }
-
-    return 0;
-}
-
 static bool camera_suite_view_wifi_camera_input(InputEvent* event, void* context) {
     furi_assert(context);
     furi_assert(event);
@@ -82,12 +44,13 @@ static bool camera_suite_view_wifi_camera_input(InputEvent* event, void* context
 
     if(event->type == InputTypeRelease) {
         switch(event->key) {
-        default: // Stop all sounds, reset the LED.
+        default:
             with_view_model(
                 instance->view,
                 CameraSuiteViewWiFiCameraModel * model,
                 {
                     UNUSED(model);
+                    // Stop all sounds, reset the LED.
                     camera_suite_play_bad_bump(instance->context);
                     camera_suite_stop_all_sound(instance->context);
                     camera_suite_led_set_rgb(instance->context, 0, 0, 0);
@@ -105,8 +68,8 @@ static bool camera_suite_view_wifi_camera_input(InputEvent* event, void* context
                     UNUSED(model);
 
                     // Stop camera WiFi stream.
-                    furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'w'}, 1);
-                    furi_delay_ms(50);
+                    // furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'w'}, 1);
+                    // furi_delay_ms(50);
 
                     // Go back to the main menu.
                     instance->callback(CameraSuiteCustomEventSceneCameraBack, instance->context);
@@ -136,9 +99,6 @@ static void camera_suite_view_wifi_camera_exit(void* context) {
 static void camera_suite_view_wifi_camera_model_init(CameraSuiteViewWiFiCameraModel* const model) {
     model->log = furi_string_alloc();
     furi_string_reserve(model->log, 4096);
-
-    // Set the initial log message.
-    // furi_string_printf(model->log, "Starting WiFi Camera Stream...:\n");
 }
 
 static void camera_suite_view_wifi_camera_enter(void* context) {
@@ -148,7 +108,7 @@ static void camera_suite_view_wifi_camera_enter(void* context) {
     CameraSuiteViewWiFiCamera* instance = (CameraSuiteViewWiFiCamera*)context;
 
     // Start wifi camera stream.
-    furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'W'}, 1);
+    // furi_hal_uart_tx(FuriHalUartIdUSART1, (uint8_t[]){'W'}, 1);
 
     with_view_model(
         instance->view,
@@ -157,22 +117,6 @@ static void camera_suite_view_wifi_camera_enter(void* context) {
         true);
 }
 
-static void wifi_camera_on_irq_cb(UartIrqEvent uartIrqEvent, uint8_t data, void* context) {
-    furi_assert(uartIrqEvent);
-    furi_assert(data);
-    furi_assert(context);
-
-    // Cast `context` to `CameraSuiteViewWiFiCamera*` and store it in `instance`.
-    CameraSuiteViewWiFiCamera* instance = context;
-
-    // If `uartIrqEvent` is `UartIrqEventRXNE`, send the data to the
-    // `wifi_rx_stream` and set the `WorkerEventRx` flag.
-    if(uartIrqEvent == UartIrqEventRXNE) {
-        furi_stream_buffer_send(instance->wifi_rx_stream, &data, 1, 0);
-        furi_thread_flags_set(furi_thread_get_id(instance->wifi_worker_thread), WorkerEventRx);
-    }
-}
-
 CameraSuiteViewWiFiCamera* camera_suite_view_wifi_camera_alloc() {
     // Allocate memory for the instance
     CameraSuiteViewWiFiCamera* instance = malloc(sizeof(CameraSuiteViewWiFiCamera));
@@ -184,7 +128,7 @@ CameraSuiteViewWiFiCamera* camera_suite_view_wifi_camera_alloc() {
     view_allocate_model(
         instance->view, ViewModelTypeLocking, sizeof(CameraSuiteViewWiFiCameraModel));
 
-    // Set context for the view
+    // Set context for the view (furi_assert crashes in events without this)
     view_set_context(instance->view, instance);
 
     // Set draw callback
@@ -199,24 +143,6 @@ CameraSuiteViewWiFiCamera* camera_suite_view_wifi_camera_alloc() {
     // Set exit callback
     view_set_exit_callback(instance->view, camera_suite_view_wifi_camera_exit);
 
-    // Allocate a stream buffer
-    instance->wifi_rx_stream = furi_stream_buffer_alloc(1024, 1);
-
-    // Allocate a thread for this camera to run on.
-    FuriThread* thread = furi_thread_alloc_ex(
-        "Camera_Suite_WiFi_Rx_Thread", 1024, camera_suite_wifi_camera_worker, instance);
-    instance->wifi_worker_thread = thread;
-    furi_thread_start(instance->wifi_worker_thread);
-
-    // Disable console.
-    furi_hal_console_disable();
-
-    // 115200 is the default baud rate for the ESP32-CAM.
-    furi_hal_uart_set_br(FuriHalUartIdUSART1, 230400);
-
-    // Enable UART1 and set the IRQ callback.
-    furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, wifi_camera_on_irq_cb, instance);
-
     with_view_model(
         instance->view,
         CameraSuiteViewWiFiCameraModel * model,
@@ -229,18 +155,6 @@ CameraSuiteViewWiFiCamera* camera_suite_view_wifi_camera_alloc() {
 void camera_suite_view_wifi_camera_free(CameraSuiteViewWiFiCamera* instance) {
     furi_assert(instance);
 
-    // Remove the IRQ callback.
-    furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, NULL, NULL);
-
-    // Free the worker thread.
-    furi_thread_free(instance->wifi_worker_thread);
-
-    // Free the allocated stream buffer.
-    furi_stream_buffer_free(instance->wifi_rx_stream);
-
-    // Re-enable the console.
-    furi_hal_console_enable();
-
     with_view_model(
         instance->view,
         CameraSuiteViewWiFiCameraModel * model,
@@ -254,13 +168,3 @@ View* camera_suite_view_wifi_camera_get_view(CameraSuiteViewWiFiCamera* instance
     furi_assert(instance);
     return instance->view;
 }
-
-void camera_suite_view_wifi_camera_set_callback(
-    CameraSuiteViewWiFiCamera* instance,
-    CameraSuiteViewWiFiCameraCallback callback,
-    void* context) {
-    furi_assert(instance);
-    furi_assert(callback);
-    instance->callback = callback;
-    instance->context = context;
-}

+ 1 - 6
views/camera_suite_view_wifi_camera.h

@@ -22,20 +22,15 @@
 typedef void (*CameraSuiteViewWiFiCameraCallback)(CameraSuiteCustomEvent event, void* context);
 
 typedef struct CameraSuiteViewWiFiCamera {
-    CameraSuiteViewCameraCallback callback;
-    FuriStreamBuffer* wifi_rx_stream;
-    FuriThread* wifi_worker_thread;
     View* view;
+    CameraSuiteViewCameraCallback callback;
     void* context;
 } CameraSuiteViewWiFiCamera;
 
 typedef struct {
     FuriString* log;
-    size_t log_strlen;
 } CameraSuiteViewWiFiCameraModel;
 
-#define WIFI_WORKER_EVENTS_MASK (WorkerEventStop | WorkerEventRx)
-
 CameraSuiteViewWiFiCamera* camera_suite_view_wifi_camera_alloc();
 
 View* camera_suite_view_wifi_camera_get_view(CameraSuiteViewWiFiCamera* camera_suite_static);