1616
1717#include "FlipperZeroWiFiModuleDefines.h"
1818
19+ #define FLIPPERZERO_DEV_BOARD_V_1 1
20+
1921#define WIFI_APP_DEBUG 0
2022
2123#if WIFI_APP_DEBUG
3032#endif // WIFI_APP_DEBUG
3133
3234#define DISABLE_CONSOLE !WIFI_APP_DEBUG
35+
36+ #if FLIPPERZERO_DEV_BOARD_V_1
37+ #define ENABLE_MODULE_POWER 0
38+ #define ENABLE_MODULE_DETECTION 0
39+ #else
3340#define ENABLE_MODULE_POWER 1
3441#define ENABLE_MODULE_DETECTION 1
42+ #endif
43+
3544
3645#define ANIMATION_TIME 350
3746
@@ -133,11 +142,7 @@ static void wifi_scanner_app_init(SWiFiScannerApp* const app)
133142 app -> m_animationTime = ANIMATION_TIME ;
134143 app -> m_animtaionCounter = 0 ;
135144
136- #if ENABLE_MODULE_POWER
137145 app -> m_wifiModuleInitialized = false;
138- #else
139- app -> m_wifiModuleInitialized = true;
140- #endif // ENABLE_MODULE_POWER
141146
142147#if ENABLE_MODULE_DETECTION
143148 app -> m_wifiModuleAttached = false;
@@ -199,8 +204,8 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx)
199204 {
200205 canvas_set_font (canvas , FontPrimary );
201206
202- const char * strInitializing = "Something wrong" ;
203- canvas_draw_str (canvas , (u8g2_GetDisplayWidth (& canvas -> fb ) / 2 ) - (canvas_string_width (canvas , strInitializing ) / 2 ), (u8g2_GetDisplayHeight (& canvas -> fb ) / 2 )/* - (u8g2_GetMaxCharHeight(&canvas->fb) / 2)*/ , strInitializing );
207+ const char * strError = "Something wrong" ;
208+ canvas_draw_str (canvas , (u8g2_GetDisplayWidth (& canvas -> fb ) / 2 ) - (canvas_string_width (canvas , strError ) / 2 ), (u8g2_GetDisplayHeight (& canvas -> fb ) / 2 )/* - (u8g2_GetMaxCharHeight(&canvas->fb) / 2)*/ , strError );
204209 }
205210 break ;
206211 case WaitingForModule :
@@ -210,13 +215,12 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx)
210215 {
211216 canvas_set_font (canvas , FontSecondary );
212217
213- const char * strInitializing = "Attach WiFi scanner module" ;
214- canvas_draw_str (canvas , (u8g2_GetDisplayWidth (& canvas -> fb ) / 2 ) - (canvas_string_width (canvas , strInitializing ) / 2 ), (u8g2_GetDisplayHeight (& canvas -> fb ) / 2 )/* - (u8g2_GetMaxCharHeight(&canvas->fb) / 2)*/ , strInitializing );
218+ const char * strConnectModule = "Attach WiFi scanner module" ;
219+ canvas_draw_str (canvas , (u8g2_GetDisplayWidth (& canvas -> fb ) / 2 ) - (canvas_string_width (canvas , strConnectModule ) / 2 ), (u8g2_GetDisplayHeight (& canvas -> fb ) / 2 )/* - (u8g2_GetMaxCharHeight(&canvas->fb) / 2)*/ , strConnectModule );
215220 }
216221#endif
217222 break ;
218223 case Initializing :
219- #if ENABLE_MODULE_POWER
220224 {
221225 furi_assert (!app -> m_wifiModuleInitialized );
222226 if (!app -> m_wifiModuleInitialized )
@@ -227,7 +231,6 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx)
227231 canvas_draw_str (canvas , (u8g2_GetDisplayWidth (& canvas -> fb ) / 2 ) - (canvas_string_width (canvas , strInitializing ) / 2 ), (u8g2_GetDisplayHeight (& canvas -> fb ) / 2 ) - (u8g2_GetMaxCharHeight (& canvas -> fb ) / 2 ), strInitializing );
228232 }
229233 }
230- #endif // ENABLE_MODULE_POWER
231234 break ;
232235 case ScanMode :
233236 {
@@ -501,7 +504,7 @@ static int32_t uart_worker(void* context) {
501504 return 1 ;
502505 }
503506
504- #if ENABLE_MODULE_POWER
507+
505508 if (!app -> m_wifiModuleInitialized )
506509 {
507510 if (string_cmp_str (chunksArray [EChunkArrayData_Context ], MODULE_CONTEXT_INITIALIZATION ) == 0 )
@@ -511,7 +514,6 @@ static int32_t uart_worker(void* context) {
511514 }
512515 }
513516 else
514- #endif // ENABLE_MODULE_POWER
515517 {
516518 if (string_cmp_str (chunksArray [EChunkArrayData_Context ], MODULE_CONTEXT_MONITOR ) == 0 )
517519 {
@@ -564,12 +566,18 @@ typedef enum ESerialCommand
564566 ESerialCommand_Next ,
565567 ESerialCommand_Previous ,
566568 ESerialCommand_Scan ,
567- ESerialCommand_MonitorMode
569+ ESerialCommand_MonitorMode ,
570+ ESerialCommand_Restart
568571} ESerialCommand ;
569572
570573void send_serial_command (ESerialCommand command )
571574{
575+ #if !DISABLE_CONSOLE
576+ return ;
577+ #endif
578+
572579 uint8_t data [1 ] = { 0 };
580+
573581 switch (command )
574582 {
575583 case ESerialCommand_Next :
@@ -584,14 +592,13 @@ void send_serial_command(ESerialCommand command)
584592 case ESerialCommand_MonitorMode :
585593 data [0 ] = MODULE_CONTROL_COMMAND_MONITOR ;
586594 break ;
595+ case ESerialCommand_Restart :
596+ data [0 ] = MODULE_CONTROL_COMMAND_RESTART ;
597+ break ;
587598 default :
588599 return ;
589600 };
590601
591- #if !DISABLE_CONSOLE
592- return ;
593- #endif
594-
595602 furi_hal_uart_tx (FuriHalUartIdUSART1 , data , 1 );
596603}
597604
@@ -615,10 +622,10 @@ int32_t wifi_scanner_app(void* p)
615622 //furi_hal_gpio_add_int_callback(pinD0, input_isr_d0, this);
616623 app -> m_context = WaitingForModule ;
617624#else
618- #if ENABLE_MODULE_POWER
619625 app -> m_context = Initializing ;
626+ #if ENABLE_MODULE_POWER
620627 furi_hal_power_enable_otg ();
621- #endif
628+ #endif // ENABLE_MODULE_POWER
622629#endif // ENABLE_MODULE_DETECTION
623630
624631 ValueMutex app_data_mutex ;
@@ -648,7 +655,7 @@ int32_t wifi_scanner_app(void* p)
648655#if DISABLE_CONSOLE
649656 furi_hal_console_disable ();
650657#endif
651- furi_hal_uart_set_br (FuriHalUartIdUSART1 , 115200 );
658+ furi_hal_uart_set_br (FuriHalUartIdUSART1 , FLIPPERZERO_SERIAL_BAUD );
652659 furi_hal_uart_set_irq_cb (FuriHalUartIdUSART1 , uart_on_irq_cb , app );
653660 WIFI_APP_LOG_I ("UART Listener created" );
654661
@@ -660,6 +667,11 @@ int32_t wifi_scanner_app(void* p)
660667 furi_thread_start (app -> m_worker_thread );
661668 WIFI_APP_LOG_I ("UART thread allocated" );
662669
670+ #if !ENABLE_MODULE_POWER
671+ // Because we assume that module was on before we launched the app. We need to ensure that module will be in initial state on app start
672+ send_serial_command (ESerialCommand_Restart );
673+ #endif // ENABLE_MODULE_POWER
674+
663675 SPluginEvent event ;
664676 for (bool processing = true; processing ;)
665677 {
@@ -673,8 +685,8 @@ int32_t wifi_scanner_app(void* p)
673685 {
674686 WIFI_APP_LOG_I ("Module Attached" );
675687 app -> m_wifiModuleAttached = true;
676- #if ENABLE_MODULE_POWER
677688 app -> m_context = Initializing ;
689+ #if ENABLE_MODULE_POWER
678690 furi_hal_power_enable_otg ();
679691#endif
680692 }
0 commit comments