Merge branch 'dev' into subrem_new_app

This commit is contained in:
MX 2023-05-22 02:56:15 +03:00
commit 889a45eaca
No known key found for this signature in database
GPG key ID: 7CCC66B7DBDD1C83
5 changed files with 296 additions and 102 deletions

View file

@ -154,10 +154,8 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
const char* strInitializing = "Something wrong";
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)*/,
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) /* - (canvas_current_font_height(canvas) / 2)*/,
strInitializing);
} break;
case WaitingForModule:
@ -170,10 +168,8 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
const char* strInitializing = "Attach WiFi Deauther module";
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)*/,
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) /* - (canvas_current_font_height(canvas) / 2)*/,
strInitializing);
}
#endif
@ -188,10 +184,8 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
const char* strInitializing = "Initializing...";
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),
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) - (canvas_current_font_height(canvas) / 2),
strInitializing);
}
}

View file

@ -74,11 +74,8 @@ static void gps_uart_parse_nmea(GpsUart* gps_uart, char* line) {
static int32_t gps_uart_worker(void* context) {
GpsUart* gps_uart = (GpsUart*)context;
gps_uart->rx_stream = furi_stream_buffer_alloc(RX_BUF_SIZE * 5, 1);
size_t rx_offset = 0;
gps_uart_serial_init(gps_uart);
while(1) {
uint32_t events =
furi_thread_flags_wait(WORKER_ALL_RX_EVENTS, FuriFlagWaitAny, FuriWaitForever);
@ -148,6 +145,8 @@ void gps_uart_init_thread(GpsUart* gps_uart) {
gps_uart->status.time_minutes = 0;
gps_uart->status.time_seconds = 0;
gps_uart->rx_stream = furi_stream_buffer_alloc(RX_BUF_SIZE * 5, 1);
gps_uart->thread = furi_thread_alloc();
furi_thread_set_name(gps_uart->thread, "GpsUartWorker");
furi_thread_set_stack_size(gps_uart->thread, 1024);
@ -155,6 +154,8 @@ void gps_uart_init_thread(GpsUart* gps_uart) {
furi_thread_set_callback(gps_uart->thread, gps_uart_worker);
furi_thread_start(gps_uart->thread);
gps_uart_serial_init(gps_uart);
}
void gps_uart_deinit_thread(GpsUart* gps_uart) {

View file

@ -367,11 +367,8 @@ int32_t tetris_game_app() {
// Not doing this eventually causes issues with TimerSvc due to not sleeping/yielding enough in this task
TaskHandle_t timer_task = xTaskGetHandle(configTIMER_SERVICE_TASK_NAME);
TaskHandle_t curr_task = xTaskGetHandle("Tetris Game");
uint32_t origTimerPrio = uxTaskPriorityGet(timer_task);
uint32_t myPrio = uxTaskPriorityGet(curr_task);
vTaskPrioritySet(timer_task, myPrio + 1);
vTaskPrioritySet(timer_task, configMAX_PRIORITIES - 1);
ViewPort* view_port = view_port_alloc();
view_port_set_orientation(view_port, ViewPortOrientationVertical);
@ -475,7 +472,7 @@ int32_t tetris_game_app() {
view_port_free(view_port);
furi_message_queue_free(event_queue);
furi_mutex_free(tetris_state->mutex);
vTaskPrioritySet(timer_task, origTimerPrio);
vTaskPrioritySet(timer_task, configTIMER_TASK_PRIORITY);
free(newPiece);
free(tetris_state);

View file

@ -104,6 +104,238 @@ typedef struct SWiFiScannerApp {
uint8_t m_animtaionCounter;
} SWiFiScannerApp;
/*
Fontname: -FreeType-Inconsolata LGC-Bold-R-Normal--36-360-72-72-P-176-ISO10646-1
Copyright: Original Roman version created by Raph Levien using his own tools and FontForge. Copyright 2006 Raph Levien. Hellenisation of the Roman font, by Dimosthenis Kaponis, using FontForge. Hellenic glyphs Copyright 2010-2012 Dimosthenis Kaponis. Released under the SIL Open Font License, http://scripts.sil.org/OFL. Cyrillic glyphs added by MihailJP, using FontForge. Cyrillic glyphs Copyright 2012 MihailJP. Released under the SIL Open Font License, http://scripts.sil.org/OFL. Emboldened by MihailJP. Some glyphs modified by Greg Omelaenko, using FontForge.
Glyphs: 95/658
BBX Build Mode: 2
*/
const uint8_t u8g2_font_inb27_mr[4414] =
"_\2\5\4\5\6\1\4\6\26%\0\370\33\371\35\371\5e\13\313\21! \13\266\14\366\207\377\377\377"
"\20\0!\30\266\14\366\7`\310\22\353E\42\351\177r|(\220h\240-\222\17\37\42%\266\14v\37"
"d,\62\310\42\203,\62\310\42\203,\62\310\42\203,\62\310\42\203,\62\310\42\203|\370\377\307\1#"
"M\266\14\366\7u\220\261\310 \213\14\262\310 \213\14\262\310 k\20b\36 \343\1\62\36 \3;"
"d\220E\6Yd\220\65\10Y\203\220\365\306\3c<@\306\3\344\220A\26\31d\221A\326 d\15"
"\62\330 \203\15\62\26!\343\303\63\0$A\266\14\366\7\200H\352\251\325\320;$\220P\14\21d\210"
"C\4\31\1\21AX\11\244e.\271\325\64F\202YD\224E\6Yd\20\23\10\31\244\214AD!"
"&\220P\314Cm\251G$\365\341\42\0%I\266\14\366\7\261\34RN!%\21B\226 \205\14\42"
"H!\203\4b\310H\346!\227N \253\204\22I,\221\222d\10F\302Q\15\221\220N\32\304\220@"
"\6)%\220A\12\21d\20R\304\42\204$R\312)\344\224\17/\3&F\266\14\366\7\264\274\304\326"
"b\251\214\222H!\211\24\222H!\212\14\262\310 \214\4\322\220;\16\65E\302!\202\220A\250A\221"
"\22\310 &\15r\16!\250\224bL)\5\225\7Fa\241\224\64\310\61F|x\30\0'\17\266\14"
"\366\7aH\372\357\303\377\177\1\0((\266\14v\14sD\363\216\63\317@\22\13,\221\304\22\211$"
"\261D\42\351\223ER\262\304\42K,\262\212v\261L\241\1)$\266\14\266\26\263D\233\254\305\42K"
",\222\310\42\351_$\222\304\22I,\260\304\2\313\263\301\22\307\7\7\0*/\266\14\366\207\207\210\244"
"\261PH\11\205\14\62F\61a\10C\36\30\306\261\2\317C\215\10\262\310(\251\20\202\212!h\234\261"
"\2\12\37\376,\0+\33\266\14\366\207\207\210\244\267\36\30\344\201A\36\30\344\201\261\210\244\337\207\277\14"
"\0,\30\266\14\366\207\377\377\300\220%\32hI\42\307\34rH\42\7\15\15\0-\26\266\14\366\207\177"
"\352\201`\36\10\346\201`\36\10\37\376\277\4\0.\21\266\14\366\207\377\377\0\211\6\332\42\371p\22\0"
"/.\266\14\366\33\223\304\22I,\221H\22\211$\221H\22\211$\221H\22K$\261D\22K$\261"
"D\42I$\222D\42\211\34\65|x\17\0\60I\266\14\366\7\266<\324\324b\251\220\202\210!\247\230"
"b\310)\206\30SJA\204\24\22\10!e\10B\10\31\203\20\62(B\306 \224\30\205\20\22\206!"
"\4\31R\214)\245\34b\312!\247\224r\12)\211-\325\20,\37^\7\61\26\266\14\366\7\226@\363"
"NKL\265!\210\244\377\377\367\341y\0\62'\266\14\366\7\325\70\265Xr\247\24s\306)($\42"
"i\261D\22\13\254\277H\311g\36\10\346\201`\36\10\37\36\6\63-\266\14\366\7\324\70\265Xri"
"\230\222\2\42\222\26\313\63,\265\363RS\261\310\42i) \202\304)\207\224r\36jj\265\363\341y"
"\0\64\65\266\14\366\7\232H\22\13\264\336q\310\215@\32\11\204\21A\330\30d\221A\24!$\221B"
"\22)\4\21C\316\3\203<\60\310\3\203<\60\36\221\364}x\32\0\65*\266\14\366\7\361\235\337!"
"\222N\20\306TK\16\25b\316\70%\5T$\275#P)\4\21cJ\61\17\265\245\234\371\360:\0"
"\66>\266\14\366\7\327\70\265Xj\250\224\221\310\11\211H\22K$\243(\22\22z\347\201`L)\246"
"\234R\10*\205$RH\42\205$R\12\42\206\234b\212!\250\220\202\232b+=\363\341q\0\67-"
"\266\14\366\7\360\201`\36\10\346\201`\236$\261D\22K$\222\304\22I,\221H\22K$\222\304\22"
"I\254\42\211U$\261|\370\4\0\70;\266\14\366\7\325\70\265Xj\250\224r\212!\207\356\24C\20"
")$\225Q\324b\251)U\204I\244\224C\31\202J!\211\24\222H!\211\224r\212)\245\234\207\232"
"Z\355|x\35\0\71\71\266\14\366\7\265\274\304\326b\251\220\202\210!\247\230b\10\42\206 b\10\42"
"\206 b\312\241L\71\205\30\344\251\23\10\33\203H\42\207$*\34\222D)\251%\266\322+\37>:"
"\27\266\14\366\207\77A\242\201\266H>|\210D\3m\221|\70\11\0;\34\266\14\366\207\77A\242\201"
"\266H>|\210D\3\255X$\221C\222HM\361\1\1< \266\14\366\207\271\60G,\357\264\304\360"
"\265\363J<\20\301\23/\210\301\3\215$T|\370\25\0= \266\14\366\207\317=\60\310\3\203<\60"
"\310\3\343\303\352\3\203<\60\310\3\203<\60>\374g\1>\36\266\14\366\207\266\240D\32\210\37<\261"
"\274\323\20\303\332\325P;\257\304\61\305\207\277\6\0\77%\266\14\266\67N\251\206\236\61\245\34r\312\21"
"\211H*\226Hb\201u\221H\352C\226D\3m\221|x\36\0@G\266\14\366\7\266\274\264\32r"
"\247\230b\10\42\205(B\306Ad\24\65\6ac\20\66\306(\204\214\61H!c\14R\310\30\203\24"
"\62\306\250\306\30m\220\301\310 \213\20R\2!d\222YNH.\265\245\234\371\360\70\0A<\266\14"
"\366\7\67PA\307\34\262\304\2\15<\357\70\22H#\201\264!\10#\203,\62\310\32e(RHj"
"\311\235\357\220S\12I\244\220T\6Yd\220E\6Y%\220F><\13\0BD\266\14\366\7\217)"
"\207\36\10\346\201`\310\61\205\240RH\42\205$RH\42\205\240R\310)\346\201`\336\371@\60\4\225"
"BR!D\21B\24!D\21B\24!$\25B\220!\17\210\362@\60\357\264\17\217\3C/\266\14"
"\366\7\327\264\245\32z\306\24S\312)\244$B\210\22\206\304\22\211\244'K,\222\310\22\213\12\247\240"
"a\214)\346\241\246V\63\37\36\7DC\266\14\366\7o\255\226\336y\207\30c\10*\205\240RH\42"
"\205\244B\210\42\204(B\210\42\204(B\210\42\204(B\210\42\204(B\210\42\204\244BH\42\205\240"
"R\10\42\206\30c\336q\250\245\365\341y\0E'\266\14\366\7\357\1Q\36\20\345\1Q\36\20\205H"
"\372\344;\277C$\375\344\3\242< \312\3\242< ><\14\0F\35\266\14\366\7\360\201`\36\10"
"\346\201`\36\10\206H\372\244C>D$\375\357\303W\0G:\266\14\366\7\326\70\245\32z\306\24S"
"\312)\244$a\210$\261D\42i&\15b\322 &\15b\322(\212\20\242\10!\212\220\222H)\210"
"\24c\212y \34\227\30;\37\36\7HM\266\14\366\7\217$RH\42\205$RH\42\205$RH"
"\42\205$RH\42\205$RH\42\205$R\36\20\345\1Q\36\20\345\1QH\42\205$RH\42\205"
"$RH\42\205$RH\42\205$RH\42\205$RH\42\205$\362\341a\0I\24\266\14\366\7\320"
"!_#\222\376\377k\357\374>\274\14\0J\33\266\14\366\7\264\245\236#\222\376\377\222\60%\215BR"
"S\213\245W>|\1\0KI\266\14\366\7\257\244\62H*\204\240R\310)\206\230rH)\210\24\222"
"\10!\212\14\262\210(\213\204\302RKM\261\22\312\42\203,\62\212\42\244$RH\42\245 b\312!"
"\247\30r\212!\250\24\222\12!\251\20\242\312\207g\1L\32\266\14\366\7\260D\42\351\377\377\311\7D"
"y@\224\7Dy@|x\27\0MU\266\14\366\7\217,\62\310\42\243\244\62J*\303\34\63\314\61"
"\343\224\63N\71\3\33$\214\61\2\31$\320\6\21#\14A\6\21#\14A\6\31eP\243\14\32!"
"\203\220A\310 \213\14\262\310 \213\14\262\310 \213\14\262\310 \213\14\262\310 \213\14\262\310\207g\1"
"NS\266\14\366\7\217(BJ\42\244$B\14\42\304 B\316!\344\34B\220!\204\4R\10!\201"
"\24B\210 \204\22\204P\203\42dP\204\22\204P\202\20RH \204\230\21\10!\6\21r\16!\347"
"\20\202\14!\310\20\222\12!\251\20\242\10!\212|x\27\0OC\266\14\366\7\325\70\265Xr\247\224"
"r\310)\245 RH*\204(\62\212\42\203,\62\310\42\203,\62\310\42\203,\62\310\42\203,\62\212"
"\42\204(BH*\244 b\310)\246\224\202\134bK\71\363\341u\0P\60\266\14\366\7\257\245w\36"
"\10\346\1Q\10*\205\244B\210\42\204(B\210\42\204(BH*\204\240R\36\20\345\201`\34b\212"
"H\372\357\303g\0QJ\266\14\366\7\325\70\265Xr\247\224r\310)\245 RH*\204\244\62\212\42"
"\203,\62\310\42\203,\62\310\42\203,\62\310\42\203,\62\212\42\204\244BH*\244 b\310)\246\224"
"\202\134b+\271\23\211$R\265\344\20\64\37@\0RC\266\14\366\7\217)\207\336y \30rL!"
"\250\24\222H!\211\24\222H!\211\24\202J!\247\230\7\202y\307!\246H!\211\24\222H)\210\30"
"\202\210)\207v\212!\210\30\202J!\211\24\222\312\207w\1S\61\266\14\366\7\365\264\245\32z\207\230"
"\12\211C\222\70DV\321D\364\262\207\242\221ER&,b\302\42e\244B\214)\345\1a^b\354"
"|x\35\0T\27\266\14\366\7\356\1\62\36 \343\1\62\36 \212H\372\377\377>|UH\266\14\366"
"\7\257$B\210\42\204(B\210\42\204(B\210\42\204(B\210\42\204(B\210\42\204(B\210\42\204"
"(B\210\42\204(B\210\42\204(B\210\42\204(B\210\42\244\240B\12*\245\230b\36rJ\71\363"
"\341u\0V>\266\14\366\7\216\60\42\10#\203(B\210\42\204(R\10\42\206 b\10\42\207\30\202"
"\210!\210\30\222H\31\212\20\242\10!\213\214\301\210 \214\10\322H\30\16{\6Z\221H\42\7\25\37"
">W\134\266\14\366\7n\22\303\15A\212(D\220\62\10\21\244\14B\4!\204\214A\10!\23)c"
"\20\62\312\30\204\10\63\6!\302\10B\210\70\201\20\42N\30f\204!F\30\346\210\21\206\71\342\230#"
"\216\61\304\30C\12*\244\240B\12\42\206 b\10\42\206\240q\206\22H(\201\304\207\247\1XB\266"
"\14\366\7\217(BH\42\206 b\212!\210\224\202\12!\212\214\242\212 \214\204\302\222;\320\300\22K"
"\64\357<\324\24#\202,\62\212\42\204$R\12\42\206\34rJ)\210\24\222\312(\252|x\26\0Y"
"\60\266\14\366\7\216\254\42\212\42\204\244B\12\42\206 b\212!\210\30\202\12!\212\20\242\212 \214\10"
"\322H\30\16\275\363L,\221H\372\357\303\363\0Z\63\266\14\366\7\360\1Q\36\20\345\1Q\36\10\222"
"D\22K\244b\211$\226H\305\22I,\260D\22\13,\261\300\22\37\20\344\201A\36\30\344\201\361\341"
"]\0[\23\266\14\366n\251\227\210\244\377\377\77\331R\357C\10\0\134+\266\14\66\21\262H\42\213$"
"\262H\42\213$\262Hj\22I&\221d\22Id\221D\26Id\221D\26IM\42\311\14\37\36\1"
"]\20\266\14vn\251'\351\377\377_\352\373\220\2^!\266\14\366\7WL\42I\64\357<\324\210 "
"\213\14\262\10!\211\24\222\210!I\34\361\341\377\17\2_\26\266\14\366\207\377\377\247\36 \343\1\62\36"
" \343\1\362!\3\0`\33\266\14\266\11UPA\307$\222\310\22\213,\261\310\42\251\71Q\361\341\377"
"g\0a\60\266\14\366\207\217\236\266\222C.\15S$\325Rj\347\231\7\202)\207\224\202H!\211\24"
"\202J)\345\230\7\202y \34\25H\62\203|x\30\0b;\266\14\66.\221H\372\215\242HH\350"
"\235\7\202\61\305\224rJ!\251\20\222\12!\212\20\242\10!\212\20\242\10!\212\20\222\12)\210\24c"
"Jy \230w\206Hh\220\362\341u\0c(\266\14\366\207\257\32\247\224;\17\4S\225\202\206!I"
"\230\22\211\244\311\42\211,H\240b\310y \34\247\224\63\37\36\7d;\266\14\366\7\207H\372\251\62"
"\10J\201\234g\36\10\245\30S\10*\244\240BH*\204(B\210\42\204(B\210\42\244\240B\12*"
"\245\234R,\363@\70\17\245@T\31\344\303\273\0e,\266\14\366\207\217\236\266TC\317T\206 b"
"H\42\344\201A\36\30\344\201A\36\30\204H\42\253\24\216\61\344<\344\322r\346\303\343\0f\35\266\14"
"\366\7\302\70\265Xj\250\230\201\312\11\211H\312\71\344cD\322\377\367\341\23\0g=\266\14\366\207o"
"\26R\314\3\241< \10!j\224R\16}\247\224r\314(\251\251\265\324\42a\64\42[z \234\7"
"\202y@\20\222\312 \213\14\262\310(\251\214\7Fy \34\267\220\7h<\266\14v.\221H\372\215"
"\242\210@\210\4u\336\71\244\30c\210)\207\30\202\210!\210\30\202\210!\210\30\202\210!\210\30\202\210"
"!\210\30\202\210!\210\30\202\210!\210\30\202\310\207\207\1i\30\266\14\366\7`\310\22+\71>$S"
"\313I\372\277\326R\357\303\323\0j\37\266\14\366\7d\310\22+\71>\364\230\342I\372\377\227\204)\210"
"\220\202\134bK\71\363A\0k\71\266\14v.\221H\372\241R\310)\206\230rH)\210\220\222\310("
"\212\210\262H(Lck\25Q\24!%\221R\20)\5\21S\16\71\305\20T\12A\206\220d>\274"
"\12\0l\21\266\14vVL'\351\377\377\330;\277\17/\3m@\266\14\366\207\257\221PF!+\234"
"\361\0\31\17\24QF\21\325 \204\10B(A\10%\10\241\4!\224 \204\22\204P\202\20J\20B"
"\11B(A\10%\10\241\4!\224 \204\22\204P\37\236\5n:\266\14\366\207\357\221Q\24\21\10\275"
"\363\316!\305\224CL\71\304\20D\14A\304\20D\14A\304\20D\14A\304\20D\14A\304\20D\14"
"A\304\20D\14A\304\20D><\14\0o\62\266\14\366\207\257\32\247TC\357\224bJ\71\245\220T"
"FIe\220E\6Yd\220E\6Yd\24E\10I\244\224SL)\306<\324\324r\346\303\343\0p"
"=\266\14\366\207\317\221Q\24\11\11=\20\314\3\301\230bJ\71\245\220T\10I\205\20E\10Q\204\20"
"E\10Q\204\20E\10I\205\24D\212\61\245<\20\314;$$DFQD\322\367\301\1q\71\266\14"
"\366\207\217\32AP\12\344<\363@(\305\230BP!\5\25B\24!D\21B\24!D\21B\24!"
"%\221BP)\345\224b\231\7\302y(\5\242\312 \222~\30\0r\37\266\14\366\207\17\22R\22\21"
"\351<\20\314\3\301\34#\216\71\342\224X\42\221\364\277\17\37\1s,\266\14\366\207\217\232\306\222C\317"
"\24C\16A\343\24\24R\211\351)\227\340\221\305\10E\214P\244\224S\312\3\341\270\304\332\371\360:\0"
"t\35\266\14\366\207\234\220\364\332;\277E$\375\223\305\4U\212XL\261\245\232\371\360\66\0u;\266"
"\14\366\207\317\221D\12I\244\220D\12I\244\220D\12I\244\220D\12I\244\220D\12I\244\220D\12"
"I\244\220DJ\71\245\224SL)\306<\20\316C)\20U\6\371\360\60\0v\63\266\14\366\207\257\25"
"E\10Q\204\20E\12I\303\20DL\71\3\21C\20\61$\221\62\24!D\21\62\30\21\204\21A\32"
"\11\303!w\240\201E\22\71>|wH\266\14\366\207\217Q\202\60\42H\31\204\214Q\6!c\224A"
"\310 \243\14j\224A\215\62F\31\303\210Q\206\30a\210QH\230\304($Lb\24\22\204@\306\14"
"s\314\60\307\14sJ)\247\224\202H!\211\24\362\341i\0x\63\266\14\366\207\317\221DJ\71\305\24"
"C\20)D\221QT\21\204%\207\334\201%\232w\36j$\224U\4Q\205\220DJ\71\305\224R\20"
")$\225\17\357\2y<\266\14\366\207\317\225T\10I\244\220DJA\304\220CC\304\20D\12I\205"
"\20E\310Xd\20F\4aD\14\67\2q\347\35h`\221T$,\24\262\4!L-\325\320+\37"
"\24\0z&\266\14\366\207\357=\20\314\3\301<\20\314\213$\26X\213$\26X\27\13|@\220\7\6"
"y`\220\7\306\207w\1{$\266\14\366\7\342\264\304\324Z\253\300\22\211\244_$\357<\3\15<\262"
"H\372'K,r\255\305\224C\32\0|\16\266\14\366\7\200H\372\377\377\377\357\3}#\266\14\266\66"
"\20\271\324\224,\222\376d\221d\36h\336q\310\221H$\375\213e)\246Xj\347\3\1\0~\31\266"
"\14\366\207/\232\23\214\42d<\60\306\3\303\210\202`\371\360\377\303\0\0\0\0\4\377\377\0";
/*
Fontname: open_iconic_arrow_2x
Copyright: https://github.com/iconic/open-iconic, SIL OPEN FONT LICENSE
Glyphs: 28/28
BBX Build Mode: 0
*/
const uint8_t u8g2_font_open_iconic_arrow_2x_t[644] =
"\34\0\4\4\5\5\4\4\6\20\20\0\0\16\0\16\0\0\17\0\0\2g@\17\352i\302$P\376\221"
"\12\64\246\310\11\2A\22O%\303\24Z\360X\242\17^\20\36-<(\0B\22O!\303\32\134\364"
"`\22\17\236\222\35,:\20\0C\17\352)\302$\216\224\31\24\212\4\312\77\2D\37\20\42\302eP"
"\25!\62\205\212\24*a\210#\304E\17\222 F\244P\231\42\245\24\232\2E \20\42\302ePU"
"\11\63E\216\220\71Ah-a\302e\15\241 s\244\310\231\22\246\24\232\2F\37\20\42\302eP\225"
"\211\62G\212\234!\201\310laj\27\221\70C\344H\31\23\245\24\232\2G\37\20\42\302ePU\221"
"\62\205\212\20#A\360haD\34\231(T\244P\31B\244\24\232\2H\21\12.\302C\214\376\215\212"
"$\207\212\15\14\4\0I\23P\341\302\25\134\364`\27\17\36\204xBz\270P\0J\23P\341\302*"
"|\64\221\27\17\36\204p<Zx(\0K\21\12.\302\24pX\241#)\324\20\243\177\3\0L\16"
"\356d\303\340\202\215*t&\311\12\3M\24\307u\302\26J\320\30\42%\36\224\60R\206\320(a\1"
"N\25\307q\302\20L\324 \62EL<(Q\204\314 Q\301\0O\15\356$\303&\226\244\71Tj"
"X\70P\24.%\303!P\4\261D%\212\224Q\205\316$Ya\0Q\20\311m\302&\214P\231:"
"*UW\304D\0R\17\311m\302!\214T=*SG\304\204\1S\24.%\303&\226\244\71Tj"
"\212\224(\224\214\204@\21\0T\23\20\42\302F\230^\252Ci\226\264x\230>x \0U\23\20\42"
"\302\360\201x\230\212&k\22\235J\302\364\14\0V\34\320\241\302\34\36\200\30\27/\204\12\21\32\36\302"
"\240B\204\212x\341F<\200\300\0W\32\220\241\302&\230\354hq\202\304\221\21\306L\14\71A\342D"
"\217%,\14\0X\37\20\42\302\302\210\221@A\2\205K$\314\210\70\42\344\204\30\23$\134BA\2"
"\5q\2\0Y$\17\42\302\34\134\304\270TF\306\214\20\64bH\260\262\203\211\226\34\42$\320\230\21"
"\42H\245+,:\10\0Z\30\220!\303\32\36\200\360\321\4S\61\351\206\324 q\202\4\206\12\17\0"
"[\34\320\241\302`\324X\30q&D-J!&\211\230`a\204\313P\220@A\34\1\0\0\0\4"
"\377\377\0";
/*
Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1
Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved.
Glyphs: 18/873
BBX Build Mode: 0
*/
const uint8_t u8g2_font_courB08_tn[199] =
"\22\0\3\3\3\4\2\3\4\6\11\0\376\6\376\7\377\0\0\0\0\0\252 \5\0\353\0*\11$\357"
"\212P$\241\0+\12-\353\12\206J\301\20\0,\7\233\345\221$\1-\5\15\357(.\5\212\351\20"
"/\14\304\347K\212\205b\241X\14\0\60\12=\351\231Hx\221L\0\61\10>\351\22\21u\62\62\11"
"=\351\231\250\211\264\34\63\14=\351\231\250I\206\24\311\4\0\64\14>\351\223\215\42ZlB\11\0\65"
"\12=\351\270Q\324F\26\0\66\14=\351\231Hh\24\11E\62\1\67\13=\351\270\310D\62\221L\4"
"\70\15=\351\231H(\222\211\204\42\231\0\71\14=\351\231H(\22\32E\62\1:\6\242\351\20\12\0"
"\0\0\4\377\377\0";
/*
Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1
Copyright: Public domain font. Share and enjoy.
Glyphs: 95/1003
BBX Build Mode: 0
*/
const uint8_t u8g2_font_7x13B_tr[1083] =
"_\0\3\3\3\4\3\5\4\6\15\0\376\11\376\11\0\1}\2\330\4\36 \5\0\356\7!\7J\303"
"\307\241D\42\10\235\332\207\204E\0#\20\315\302OR$r\230\244\34&I\221\10\0$\17N\302\227"
"\214\22\321F\223\250Dh\42\0%\17N\302\307H\22\251\4e\212\221JD\64&\17N\302\317H\242"
"\247\221$\62\251\210&\1'\7\42\327\307!\0(\14\314\302\227D$\21\251\211d\2)\15\314\302\207"
"L$\23\251\210$\42\0*\15\66\306O(&:\224d\241\10\0+\13\66\306\227Pt(\11E\0"
",\10\244\276\317\212\22\0-\6\16\316\207\1.\10\234\276\217\204\42\1/\14N\302\247\232P\246(\23"
"\12\1\60\16N\302\227,\24\21\361$\11\305D\0\61\13N\302\227l\24\21\352\311\0\62\16N\302\17"
"ED\22\212F\62\241\320\0\63\15N\302\207Q\246F\25\222$\24\0\64\15N\302\247lD\221\220H"
"\207\240\2\65\16N\302\307!(\254\210\204B\222\204\2\66\16N\302\17ED\24VDL\22\12\0\67"
"\15N\302\207QM(\23\312\204\62\0\70\16N\302\17E\304$\241\210\230$\24\0\71\16N\302\17E"
"\304$)\12I\22\12\0:\14\304\276\217\204\42\207I(\22\0;\13\304\276\217\204\42\236L\224\0<"
"\10N\302\247LW\35=\7&\312\207\35j>\11N\302\207T\67\35\1\77\16N\302\17ED\22\212"
"fr\230P\4@\17N\302\17%\266R\211L\252\61\11\5\0A\13N\302\17E\304t\30q\22B"
"\14N\302GE\304t\21\61]\0C\13N\302\17ED\324\223\204\2D\12N\302GE\304O\27\0"
"E\13N\302\307!\250X\21*\32F\13N\302\307!\250X\21j\4G\14N\302\17EDT)\61"
"I\12H\13N\302\207\210\323a\304I\0I\11N\302\207I\250O\6J\12N\302\247>\222$\24\0"
"K\17N\302\207lD\221\220f$\211\22-\0L\10N\302\207P\77\32M\13N\302Gpt\70\210"
"x\22N\15N\302\207\210T\251\34&M$\1O\13N\302\17E\304O\22\12\0P\13N\302GE"
"\304t\21j\4Q\14V\276\17E\304S\205\62\241\12R\15N\302GE\304t!I\224h\1S\16"
"N\302\17ED\224R\205$\11\5\0T\11N\302\207I\250\237\0U\12N\302\207\210\77I(\0V"
"\15N\302\207\210I\22\312D\23*\1W\13N\302\207\210\247\303A\64\14X\17N\302Gp$\11\205"
"h\62R\212h\30Y\14N\302\207\210$!\321\204:\1Z\12N\302\207QMG\241\1[\10\314\302"
"\207I\237\10\134\14N\302\207P*\224*J\205\2]\10\314\302\7I\237\14^\11&\326\227\214\42\32"
"\6_\7\26\276\307\241\0`\7\234\336\207L\1a\12\66\302\17Ur\42I\12b\13N\302\207P\261"
"\42\342t\1c\13\66\302\17EDT\222P\0d\12N\302\247\226\23'I\1e\14\66\302\17Et"
"\30\212$\24\0f\14N\302\327H\242(\243\11\265\1g\16F\272\317\22IB\221RD\22\12\0h"
"\13N\302\207P\261\42\342I\0i\12N\302\227P\16\32\352dj\14^\272\247:L\250#IB\1"
"k\15N\302\207P\23EB\42I\224\4l\10N\302\317P\77\31m\12\66\302\207Dr\70\61\11n"
"\11\66\302GE\304\223\0o\12\66\302\17E\304IB\1p\13F\272GE\304t\21*\2q\12F"
"\272\317\211IR\324\0r\11\66\302GED\324\10s\15\66\302\17E$\21KD\22\12\0t\14F"
"\302\217PV\22j\21M\0u\11\66\302\207\210'I\1v\13\66\302\207\210IB\242\211\0w\13\66"
"\302\207\210\351p\11E\0x\14\66\302\207\210$!QD$\1y\14F\272\207\210\223\244H\222P\0"
"z\12\66\302\207Q&\222\11\15{\14\314\302OI&\221ID\262\1|\7J\303\307\3\1}\15\314"
"\302\307L$\221Id\242\12\0~\11\36\332\217\350\20\222\0\0\0\0\4\377\377\0";
/////// INIT STATE ///////
static void wifi_scanner_app_init(SWiFiScannerApp* const app) {
app->m_context = Undefined;
@ -153,8 +385,8 @@ int16_t dBmtoPercentage(int16_t dBm) {
void DrawSignalStrengthBar(Canvas* canvas, int rssi, int x, int y, int width, int height) {
int16_t percents = dBmtoPercentage(rssi);
u8g2_DrawHLine(&canvas->fb, x, y, width);
u8g2_DrawHLine(&canvas->fb, x, y + height, width);
//u8g2_DrawHLine(&canvas->fb, x, y, width);
//u8g2_DrawHLine(&canvas->fb, x, y + height, width);
if(rssi != NA && height > 0) {
uint8_t barHeight = floor((height / 100.f) * percents);
@ -177,10 +409,8 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
const char* strError = "Something wrong";
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)*/,
(128 / 2) - (canvas_string_width(canvas, strError) / 2),
(64 / 2) /* - (canvas_current_font_height(canvas) / 2)*/,
strError);
} break;
case WaitingForModule:
@ -192,10 +422,8 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
const char* strConnectModule = "Attach WiFi scanner module";
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)*/,
(128 / 2) - (canvas_string_width(canvas, strConnectModule) / 2),
(64 / 2) /* - (canvas_current_font_height(canvas) / 2)*/,
strConnectModule);
}
#endif
@ -208,26 +436,19 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
const char* strInitializing = "Initializing...";
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),
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) - (canvas_current_font_height(canvas) / 2),
strInitializing);
}
} break;
case ScanMode: {
uint8_t offsetY = 0;
uint8_t offsetX = 0;
canvas_draw_frame(
canvas,
0,
0,
u8g2_GetDisplayWidth(&canvas->fb),
u8g2_GetDisplayHeight(&canvas->fb));
canvas_draw_frame(canvas, 0, 0, 128, 64);
//canvas_set_font(canvas, FontPrimary);
u8g2_SetFont(&canvas->fb, u8g2_font_7x13B_tr);
uint8_t fontHeight = u8g2_GetMaxCharHeight(&canvas->fb);
canvas_set_custom_u8g2_font(canvas, u8g2_font_7x13B_tr);
uint8_t fontHeight = canvas_current_font_height(canvas);
offsetX += 5;
offsetY += fontHeight;
@ -248,8 +469,8 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
furi_string_get_cstr(app->m_currentAccesspointDescription.m_bssid));
canvas_set_font(canvas, FontSecondary);
//u8g2_SetFont(&canvas->fb, u8g2_font_tinytim_tf);
fontHeight = u8g2_GetMaxCharHeight(&canvas->fb);
//canvas_set_custom_u8g2_font(canvas, u8g2_font_tinytim_tf);
fontHeight = canvas_current_font_height(canvas);
offsetY += fontHeight + 1;
@ -276,24 +497,20 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
offsetY += fontHeight;
offsetY -= fontHeight;
u8g2_SetFont(&canvas->fb, u8g2_font_courB08_tn);
canvas_set_custom_u8g2_font(canvas, u8g2_font_courB08_tn);
snprintf(
string,
sizeof(string),
"%d/%d",
app->m_currentIndexAccessPoint,
app->m_totalAccessPoints);
offsetX = u8g2_GetDisplayWidth(&canvas->fb) - canvas_string_width(canvas, string) - 5;
offsetX = 128 - canvas_string_width(canvas, string) - 5;
canvas_draw_str(canvas, offsetX, offsetY, string);
canvas_draw_frame(
canvas,
offsetX - 6,
offsetY - u8g2_GetMaxCharHeight(&canvas->fb) - 3,
u8g2_GetDisplayWidth(&canvas->fb),
u8g2_GetDisplayHeight(&canvas->fb));
canvas, offsetX - 6, offsetY - canvas_current_font_height(canvas) - 3, 128, 64);
u8g2_SetFont(&canvas->fb, u8g2_font_open_iconic_arrow_2x_t);
canvas_set_custom_u8g2_font(canvas, u8g2_font_open_iconic_arrow_2x_t);
if(app->m_currentIndexAccessPoint != app->m_totalAccessPoints) {
//canvas_draw_triangle(canvas, offsetX - 5 - 20, offsetY + 5, 4, 4, CanvasDirectionBottomToTop);
canvas_draw_str(canvas, offsetX - 0 - 35, offsetY + 5, "\x4C");
@ -308,25 +525,21 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
uint8_t offsetY = 0;
uint8_t offsetX = 0;
canvas_draw_frame(
canvas,
0,
0,
u8g2_GetDisplayWidth(&canvas->fb),
u8g2_GetDisplayHeight(&canvas->fb));
canvas_draw_frame(canvas, 0, 0, 128, 64);
//canvas_set_font(canvas, FontBigNumbers);
u8g2_SetFont(&canvas->fb, u8g2_font_inb27_mr);
uint8_t fontHeight = u8g2_GetMaxCharHeight(&canvas->fb);
//canvas_set_custom_u8g2_font(canvas, u8g2_font_inb27_mr);
canvas_set_custom_u8g2_font(canvas, u8g2_font_inb27_mr);
uint8_t fontHeight = canvas_current_font_height(canvas);
uint8_t fontWidth = u8g2_GetMaxCharWidth(&canvas->fb);
if(app->m_currentAccesspointDescription.m_rssi == NA) {
offsetX += floor(u8g2_GetDisplayWidth(&canvas->fb) / 2) - fontWidth - 10;
offsetX += floor(128 / 2) - fontWidth - 10;
offsetY += fontHeight - 5;
canvas_draw_str(canvas, offsetX, offsetY, "N/A");
} else {
offsetX += floor(u8g2_GetDisplayWidth(&canvas->fb) / 2) - 2 * fontWidth;
offsetX += floor(128 / 2) - 2 * fontWidth;
offsetY += fontHeight - 5;
char rssi[8];
@ -335,12 +548,12 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
}
//canvas_set_font(canvas, FontPrimary);
u8g2_SetFont(&canvas->fb, u8g2_font_7x13B_tr);
fontHeight = u8g2_GetMaxCharHeight(&canvas->fb);
canvas_set_custom_u8g2_font(canvas, u8g2_font_7x13B_tr);
fontHeight = canvas_current_font_height(canvas);
fontWidth = u8g2_GetMaxCharWidth(&canvas->fb);
offsetX = 5;
offsetY = u8g2_GetDisplayHeight(&canvas->fb) - 7 - fontHeight;
offsetY = 64 - 7 - fontHeight;
canvas_draw_str(
canvas,
offsetX,
@ -358,12 +571,7 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
DrawSignalStrengthBar(
canvas, app->m_currentAccesspointDescription.m_rssi, 5, 5, 12, 25);
DrawSignalStrengthBar(
canvas,
app->m_currentAccesspointDescription.m_rssi,
u8g2_GetDisplayWidth(&canvas->fb) - 5 - 12,
5,
12,
25);
canvas, app->m_currentAccesspointDescription.m_rssi, 128 - 5 - 12, 5, 12, 25);
} break;
case ScanAnimation: {
uint32_t currentTime = furi_get_tick();
@ -380,18 +588,15 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
canvas_draw_disc(
canvas,
offsetX + 30 + 25 * i,
u8g2_GetDisplayHeight(&canvas->fb) / 2 - 7,
64 / 2 - 7,
5 * (app->m_animtaionCounter == i ? mutliplier : 1));
}
u8g2_SetFont(&canvas->fb, u8g2_font_7x13B_tr);
canvas_set_custom_u8g2_font(canvas, u8g2_font_7x13B_tr);
//canvas_set_font(canvas, FontPrimary);
const char* message = "Scanning";
canvas_draw_str(
canvas,
u8g2_GetDisplayWidth(&canvas->fb) / 2 - canvas_string_width(canvas, message) / 2,
55,
message);
canvas, 128 / 2 - canvas_string_width(canvas, message) / 2, 55, message);
} break;
case MonitorAnimation: {
uint32_t currentTime = furi_get_tick();
@ -407,27 +612,24 @@ static void wifi_module_render_callback(Canvas* const canvas, void* ctx) {
canvas_draw_disc(
canvas,
offsetX + 30,
u8g2_GetDisplayHeight(&canvas->fb) / 2 - 7,
64 / 2 - 7,
5 * (app->m_animtaionCounter == 0 ? mutliplier : 1));
canvas_draw_disc(
canvas,
offsetX + 55,
u8g2_GetDisplayHeight(&canvas->fb) / 2 - 7,
64 / 2 - 7,
5 * (app->m_animtaionCounter == 1 ? mutliplier : 1));
canvas_draw_disc(
canvas,
offsetX + 80,
u8g2_GetDisplayHeight(&canvas->fb) / 2 - 7,
64 / 2 - 7,
5 * (app->m_animtaionCounter == 0 ? mutliplier : 1));
u8g2_SetFont(&canvas->fb, u8g2_font_7x13B_tr);
canvas_set_custom_u8g2_font(canvas, u8g2_font_7x13B_tr);
//canvas_set_font(canvas, FontPrimary);
const char* message = "Monitor Mode";
canvas_draw_str(
canvas,
u8g2_GetDisplayWidth(&canvas->fb) / 2 - canvas_string_width(canvas, message) / 2,
55,
message);
canvas, 128 / 2 - canvas_string_width(canvas, message) / 2, 55, message);
} break;
default:
break;

View file

@ -3036,13 +3036,13 @@ Function,-,subghz_protocol_decoder_power_smart_get_hash_data,uint8_t,void*
Function,-,subghz_protocol_decoder_power_smart_get_string,void,"void*, FuriString*"
Function,-,subghz_protocol_decoder_power_smart_reset,void,void*
Function,-,subghz_protocol_decoder_power_smart_serialize,SubGhzProtocolStatus,"void*, FlipperFormat*, SubGhzRadioPreset*"
Function,+,subghz_protocol_decoder_princeton_alloc,void*,SubGhzEnvironment*
Function,-,subghz_protocol_decoder_princeton_alloc,void*,SubGhzEnvironment*
Function,-,subghz_protocol_decoder_princeton_deserialize,SubGhzProtocolStatus,"void*, FlipperFormat*"
Function,+,subghz_protocol_decoder_princeton_feed,void,"void*, _Bool, uint32_t"
Function,+,subghz_protocol_decoder_princeton_free,void,void*
Function,+,subghz_protocol_decoder_princeton_get_hash_data,uint8_t,void*
Function,+,subghz_protocol_decoder_princeton_get_string,void,"void*, FuriString*"
Function,+,subghz_protocol_decoder_princeton_reset,void,void*
Function,-,subghz_protocol_decoder_princeton_feed,void,"void*, _Bool, uint32_t"
Function,-,subghz_protocol_decoder_princeton_free,void,void*
Function,-,subghz_protocol_decoder_princeton_get_hash_data,uint8_t,void*
Function,-,subghz_protocol_decoder_princeton_get_string,void,"void*, FuriString*"
Function,-,subghz_protocol_decoder_princeton_reset,void,void*
Function,-,subghz_protocol_decoder_princeton_serialize,SubGhzProtocolStatus,"void*, FlipperFormat*, SubGhzRadioPreset*"
Function,+,subghz_protocol_decoder_raw_alloc,void*,SubGhzEnvironment*
Function,+,subghz_protocol_decoder_raw_deserialize,SubGhzProtocolStatus,"void*, FlipperFormat*"
@ -3261,11 +3261,11 @@ Function,-,subghz_protocol_encoder_power_smart_deserialize,SubGhzProtocolStatus,
Function,-,subghz_protocol_encoder_power_smart_free,void,void*
Function,-,subghz_protocol_encoder_power_smart_stop,void,void*
Function,-,subghz_protocol_encoder_power_smart_yield,LevelDuration,void*
Function,+,subghz_protocol_encoder_princeton_alloc,void*,SubGhzEnvironment*
Function,-,subghz_protocol_encoder_princeton_alloc,void*,SubGhzEnvironment*
Function,-,subghz_protocol_encoder_princeton_deserialize,SubGhzProtocolStatus,"void*, FlipperFormat*"
Function,+,subghz_protocol_encoder_princeton_free,void,void*
Function,+,subghz_protocol_encoder_princeton_stop,void,void*
Function,+,subghz_protocol_encoder_princeton_yield,LevelDuration,void*
Function,-,subghz_protocol_encoder_princeton_free,void,void*
Function,-,subghz_protocol_encoder_princeton_stop,void,void*
Function,-,subghz_protocol_encoder_princeton_yield,LevelDuration,void*
Function,+,subghz_protocol_encoder_raw_alloc,void*,SubGhzEnvironment*
Function,+,subghz_protocol_encoder_raw_deserialize,SubGhzProtocolStatus,"void*, FlipperFormat*"
Function,+,subghz_protocol_encoder_raw_free,void,void*
@ -3457,7 +3457,7 @@ Function,-,u8g2_DrawExtendedUTF8,u8g2_uint_t,"u8g2_t*, u8g2_uint_t, u8g2_uint_t,
Function,-,u8g2_DrawFilledEllipse,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, uint8_t"
Function,-,u8g2_DrawFrame,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t"
Function,-,u8g2_DrawGlyph,u8g2_uint_t,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, uint16_t"
Function,+,u8g2_DrawHLine,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t"
Function,-,u8g2_DrawHLine,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t"
Function,-,u8g2_DrawHVLine,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, uint8_t"
Function,-,u8g2_DrawHorizontalBitmap,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, const uint8_t*"
Function,-,u8g2_DrawLine,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t"
@ -3493,7 +3493,7 @@ Function,-,u8g2_SetBufferCurrTileRow,void,"u8g2_t*, uint8_t"
Function,-,u8g2_SetClipWindow,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t"
Function,-,u8g2_SetDisplayRotation,void,"u8g2_t*, const u8g2_cb_t*"
Function,-,u8g2_SetDrawColor,void,"u8g2_t*, uint8_t"
Function,+,u8g2_SetFont,void,"u8g2_t*, const uint8_t*"
Function,-,u8g2_SetFont,void,"u8g2_t*, const uint8_t*"
Function,-,u8g2_SetFontDirection,void,"u8g2_t*, uint8_t"
Function,-,u8g2_SetFontMode,void,"u8g2_t*, uint8_t"
Function,-,u8g2_SetFontPosBaseline,void,u8g2_t*
@ -4531,7 +4531,7 @@ Function,-,uxTaskGetStackHighWaterMark,UBaseType_t,TaskHandle_t
Function,-,uxTaskGetStackHighWaterMark2,uint16_t,TaskHandle_t
Function,-,uxTaskGetSystemState,UBaseType_t,"TaskStatus_t*, const UBaseType_t, uint32_t*"
Function,-,uxTaskGetTaskNumber,UBaseType_t,TaskHandle_t
Function,+,uxTaskPriorityGet,UBaseType_t,const TaskHandle_t
Function,-,uxTaskPriorityGet,UBaseType_t,const TaskHandle_t
Function,-,uxTaskPriorityGetFromISR,UBaseType_t,const TaskHandle_t
Function,-,uxTaskResetEventItemValue,TickType_t,
Function,-,uxTimerGetReloadMode,UBaseType_t,TimerHandle_t
@ -5234,7 +5234,7 @@ Variable,-,u8g2_font_7x13B_mn,const uint8_t[],
Variable,-,u8g2_font_7x13B_mr,const uint8_t[],
Variable,-,u8g2_font_7x13B_tf,const uint8_t[],
Variable,-,u8g2_font_7x13B_tn,const uint8_t[],
Variable,+,u8g2_font_7x13B_tr,const uint8_t[],
Variable,-,u8g2_font_7x13B_tr,const uint8_t[],
Variable,-,u8g2_font_7x13O_mf,const uint8_t[],
Variable,-,u8g2_font_7x13O_mn,const uint8_t[],
Variable,-,u8g2_font_7x13O_mr,const uint8_t[],
@ -5438,7 +5438,7 @@ Variable,-,u8g2_font_chroma48medium8_8n,const uint8_t[],
Variable,-,u8g2_font_chroma48medium8_8r,const uint8_t[],
Variable,-,u8g2_font_chroma48medium8_8u,const uint8_t[],
Variable,-,u8g2_font_courB08_tf,const uint8_t[],
Variable,+,u8g2_font_courB08_tn,const uint8_t[],
Variable,-,u8g2_font_courB08_tn,const uint8_t[],
Variable,-,u8g2_font_courB08_tr,const uint8_t[],
Variable,-,u8g2_font_courB10_tf,const uint8_t[],
Variable,-,u8g2_font_courB10_tn,const uint8_t[],
@ -5788,7 +5788,7 @@ Variable,-,u8g2_font_inb24_mn,const uint8_t[],
Variable,-,u8g2_font_inb24_mr,const uint8_t[],
Variable,-,u8g2_font_inb27_mf,const uint8_t[],
Variable,-,u8g2_font_inb27_mn,const uint8_t[],
Variable,+,u8g2_font_inb27_mr,const uint8_t[],
Variable,-,u8g2_font_inb27_mr,const uint8_t[],
Variable,-,u8g2_font_inb30_mf,const uint8_t[],
Variable,-,u8g2_font_inb30_mn,const uint8_t[],
Variable,-,u8g2_font_inb30_mr,const uint8_t[],
@ -6265,7 +6265,7 @@ Variable,-,u8g2_font_open_iconic_app_4x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_app_6x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_app_8x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_arrow_1x_t,const uint8_t[],
Variable,+,u8g2_font_open_iconic_arrow_2x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_arrow_2x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_arrow_4x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_arrow_6x_t,const uint8_t[],
Variable,-,u8g2_font_open_iconic_arrow_8x_t,const uint8_t[],

1 entry status name type params
3036 Function - subghz_protocol_decoder_power_smart_get_string void void*, FuriString*
3037 Function - subghz_protocol_decoder_power_smart_reset void void*
3038 Function - subghz_protocol_decoder_power_smart_serialize SubGhzProtocolStatus void*, FlipperFormat*, SubGhzRadioPreset*
3039 Function + - subghz_protocol_decoder_princeton_alloc void* SubGhzEnvironment*
3040 Function - subghz_protocol_decoder_princeton_deserialize SubGhzProtocolStatus void*, FlipperFormat*
3041 Function + - subghz_protocol_decoder_princeton_feed void void*, _Bool, uint32_t
3042 Function + - subghz_protocol_decoder_princeton_free void void*
3043 Function + - subghz_protocol_decoder_princeton_get_hash_data uint8_t void*
3044 Function + - subghz_protocol_decoder_princeton_get_string void void*, FuriString*
3045 Function + - subghz_protocol_decoder_princeton_reset void void*
3046 Function - subghz_protocol_decoder_princeton_serialize SubGhzProtocolStatus void*, FlipperFormat*, SubGhzRadioPreset*
3047 Function + subghz_protocol_decoder_raw_alloc void* SubGhzEnvironment*
3048 Function + subghz_protocol_decoder_raw_deserialize SubGhzProtocolStatus void*, FlipperFormat*
3261 Function - subghz_protocol_encoder_power_smart_free void void*
3262 Function - subghz_protocol_encoder_power_smart_stop void void*
3263 Function - subghz_protocol_encoder_power_smart_yield LevelDuration void*
3264 Function + - subghz_protocol_encoder_princeton_alloc void* SubGhzEnvironment*
3265 Function - subghz_protocol_encoder_princeton_deserialize SubGhzProtocolStatus void*, FlipperFormat*
3266 Function + - subghz_protocol_encoder_princeton_free void void*
3267 Function + - subghz_protocol_encoder_princeton_stop void void*
3268 Function + - subghz_protocol_encoder_princeton_yield LevelDuration void*
3269 Function + subghz_protocol_encoder_raw_alloc void* SubGhzEnvironment*
3270 Function + subghz_protocol_encoder_raw_deserialize SubGhzProtocolStatus void*, FlipperFormat*
3271 Function + subghz_protocol_encoder_raw_free void void*
3457 Function - u8g2_DrawFilledEllipse void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, uint8_t
3458 Function - u8g2_DrawFrame void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t
3459 Function - u8g2_DrawGlyph u8g2_uint_t u8g2_t*, u8g2_uint_t, u8g2_uint_t, uint16_t
3460 Function + - u8g2_DrawHLine void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t
3461 Function - u8g2_DrawHVLine void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, uint8_t
3462 Function - u8g2_DrawHorizontalBitmap void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, const uint8_t*
3463 Function - u8g2_DrawLine void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t
3493 Function - u8g2_SetClipWindow void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t
3494 Function - u8g2_SetDisplayRotation void u8g2_t*, const u8g2_cb_t*
3495 Function - u8g2_SetDrawColor void u8g2_t*, uint8_t
3496 Function + - u8g2_SetFont void u8g2_t*, const uint8_t*
3497 Function - u8g2_SetFontDirection void u8g2_t*, uint8_t
3498 Function - u8g2_SetFontMode void u8g2_t*, uint8_t
3499 Function - u8g2_SetFontPosBaseline void u8g2_t*
4531 Function - uxTaskGetStackHighWaterMark2 uint16_t TaskHandle_t
4532 Function - uxTaskGetSystemState UBaseType_t TaskStatus_t*, const UBaseType_t, uint32_t*
4533 Function - uxTaskGetTaskNumber UBaseType_t TaskHandle_t
4534 Function + - uxTaskPriorityGet UBaseType_t const TaskHandle_t
4535 Function - uxTaskPriorityGetFromISR UBaseType_t const TaskHandle_t
4536 Function - uxTaskResetEventItemValue TickType_t
4537 Function - uxTimerGetReloadMode UBaseType_t TimerHandle_t
5234 Variable - u8g2_font_7x13B_mr const uint8_t[]
5235 Variable - u8g2_font_7x13B_tf const uint8_t[]
5236 Variable - u8g2_font_7x13B_tn const uint8_t[]
5237 Variable + - u8g2_font_7x13B_tr const uint8_t[]
5238 Variable - u8g2_font_7x13O_mf const uint8_t[]
5239 Variable - u8g2_font_7x13O_mn const uint8_t[]
5240 Variable - u8g2_font_7x13O_mr const uint8_t[]
5438 Variable - u8g2_font_chroma48medium8_8r const uint8_t[]
5439 Variable - u8g2_font_chroma48medium8_8u const uint8_t[]
5440 Variable - u8g2_font_courB08_tf const uint8_t[]
5441 Variable + - u8g2_font_courB08_tn const uint8_t[]
5442 Variable - u8g2_font_courB08_tr const uint8_t[]
5443 Variable - u8g2_font_courB10_tf const uint8_t[]
5444 Variable - u8g2_font_courB10_tn const uint8_t[]
5788 Variable - u8g2_font_inb24_mr const uint8_t[]
5789 Variable - u8g2_font_inb27_mf const uint8_t[]
5790 Variable - u8g2_font_inb27_mn const uint8_t[]
5791 Variable + - u8g2_font_inb27_mr const uint8_t[]
5792 Variable - u8g2_font_inb30_mf const uint8_t[]
5793 Variable - u8g2_font_inb30_mn const uint8_t[]
5794 Variable - u8g2_font_inb30_mr const uint8_t[]
6265 Variable - u8g2_font_open_iconic_app_6x_t const uint8_t[]
6266 Variable - u8g2_font_open_iconic_app_8x_t const uint8_t[]
6267 Variable - u8g2_font_open_iconic_arrow_1x_t const uint8_t[]
6268 Variable + - u8g2_font_open_iconic_arrow_2x_t const uint8_t[]
6269 Variable - u8g2_font_open_iconic_arrow_4x_t const uint8_t[]
6270 Variable - u8g2_font_open_iconic_arrow_6x_t const uint8_t[]
6271 Variable - u8g2_font_open_iconic_arrow_8x_t const uint8_t[]