Skip to content

Commit cb00fcc

Browse files
committed
Added FlipperZero dev board v1 support
1 parent 875c604 commit cb00fcc

4 files changed

Lines changed: 53 additions & 26 deletions

File tree

FlipperZero-WiFi-Scanner-App/applications/wifi_scanner/FlipperZeroWiFiModuleDefines.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,8 @@
1010
#define MODULE_CONTROL_COMMAND_PREVIOUS 'p'
1111
#define MODULE_CONTROL_COMMAND_SCAN 's'
1212
#define MODULE_CONTROL_COMMAND_MONITOR 'm'
13+
#define MODULE_CONTROL_COMMAND_RESTART 'r'
14+
15+
#define FLIPPERZERO_SERIAL_BAUD 115200
1316

1417
#define NA 0

FlipperZero-WiFi-Scanner-App/applications/wifi_scanner/wifi_scanner.c

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
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
@@ -30,8 +32,15 @@
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

570573
void 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
}

FlipperZero-WiFi-Scanner_Module/FlipperZero-WiFi-Scanner_Module.ino

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ void ScanMode()
234234
}
235235

236236
void setup() {
237-
Serial.begin(115200);
237+
Serial.begin(FLIPPERZERO_SERIAL_BAUD);
238238
while (!Serial) {
239239
; // wait for serial port to connect
240240
}
@@ -380,12 +380,12 @@ void ScanNetworks()
380380
ChangeContext(EContext::SCAN_ANIMATION);
381381
}
382382

383-
bool MonitorNetwork(const bool firstRun = false)
383+
void MonitorNetwork(const bool firstRun = false)
384384
{
385-
int16_t scanResult = WiFi.scanComplete();
385+
const int16_t scanResult = WiFi.scanComplete();
386386
if(scanResult != WIFI_SCAN_RUNNING)
387387
{
388-
DEBUG_LOG_LN(F("MonitorNetwork()"));
388+
DEBUG_LOG_LN(F("MonitorNetwork() - Scan Completed"));
389389

390390
if(firstRun)
391391
{
@@ -396,7 +396,6 @@ bool MonitorNetwork(const bool firstRun = false)
396396
OnMonScanComplete(scanResult);
397397
}
398398

399-
WiFi.scanDelete();
400399
const bool async = true;
401400
const bool showHidden = true;
402401
WiFi.scanNetworks(async, showHidden);
@@ -468,6 +467,12 @@ void CheckForFlipperCommands()
468467
FUNCTION_PERF();
469468

470469
int incommingCommand = Serial.read();
470+
if(incommingCommand == MODULE_CONTROL_COMMAND_RESTART)
471+
{
472+
DEBUG_LOG_LN(F("Restart module"));
473+
ESP.restart();
474+
}
475+
else
471476
if(g_context >= EContext::SCAN_PAGE)
472477
{
473478
switch(incommingCommand)
@@ -488,6 +493,10 @@ void CheckForFlipperCommands()
488493
DEBUG_LOG_LN(F("Monitor command"));
489494
ChangeBetweenMonitorAndScanMode();
490495
break;
496+
case MODULE_CONTROL_COMMAND_RESTART:
497+
DEBUG_LOG_LN(F("Restart module"));
498+
ESP.restart();
499+
break;
491500
default:
492501
break;
493502
}

FlipperZero-WiFi-Scanner_Module/FlipperZeroWiFiModuleDefines.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,8 @@
1010
#define MODULE_CONTROL_COMMAND_PREVIOUS 'p'
1111
#define MODULE_CONTROL_COMMAND_SCAN 's'
1212
#define MODULE_CONTROL_COMMAND_MONITOR 'm'
13+
#define MODULE_CONTROL_COMMAND_RESTART 'r'
14+
15+
#define FLIPPERZERO_SERIAL_BAUD 115200
1316

1417
#define NA 0

0 commit comments

Comments
 (0)