From ecc4bdde4b05e41cff84a434ebf0975c977796b0 Mon Sep 17 00:00:00 2001 From: RogueMaster Date: Sat, 26 Nov 2022 17:15:03 -0500 Subject: [PATCH] app upd + fmt --- applications/plugins/hex_viewer/hex_viewer.c | 61 +++++++++--------- applications/plugins/nrf24scan/README.md | 9 ++- .../plugins/nrf24scan/Screenshot-1.png | Bin 2126 -> 2345 bytes .../plugins/nrf24scan/Screenshot-3.png | Bin 0 -> 2064 bytes .../plugins/nrf24scan/Screenshot-4.png | Bin 0 -> 1436 bytes applications/plugins/nrf24scan/addr.txt | 10 +-- applications/plugins/nrf24scan/addr1.txt | 6 +- applications/plugins/nrf24scan/addr_sniff.txt | 8 +-- .../plugins/nrf24scan/lib/nrf24/nrf24.c | 16 +++-- .../plugins/nrf24scan/lib/nrf24/nrf24.h | 4 +- applications/plugins/nrf24scan/nrf24scan.c | 5 +- 11 files changed, 65 insertions(+), 54 deletions(-) create mode 100644 applications/plugins/nrf24scan/Screenshot-3.png create mode 100644 applications/plugins/nrf24scan/Screenshot-4.png diff --git a/applications/plugins/hex_viewer/hex_viewer.c b/applications/plugins/hex_viewer/hex_viewer.c index 1ac3923e8..50c34d634 100644 --- a/applications/plugins/hex_viewer/hex_viewer.c +++ b/applications/plugins/hex_viewer/hex_viewer.c @@ -16,14 +16,14 @@ #define HEX_VIEWER_APP_PATH_FOLDER "/any" #define HEX_VIEWER_APP_EXTENSION "*" -#define HEX_VIEWER_BYTES_PER_ROW 4 -#define HEX_VIEWER_ROW_COUNT 4 -#define HEX_VIEWER_BUF_SIZE (HEX_VIEWER_BYTES_PER_ROW * HEX_VIEWER_ROW_COUNT) +#define HEX_VIEWER_BYTES_PER_LINE 4u +#define HEX_VIEWER_LINES_ON_SCREEN 4u +#define HEX_VIEWER_BUF_SIZE (HEX_VIEWER_LINES_ON_SCREEN * HEX_VIEWER_BYTES_PER_LINE) typedef struct { - uint8_t file_bytes[HEX_VIEWER_ROW_COUNT][HEX_VIEWER_ROW_COUNT]; - uint32_t line; - uint32_t read_bytes; + uint8_t file_bytes[HEX_VIEWER_LINES_ON_SCREEN][HEX_VIEWER_BYTES_PER_LINE]; + uint32_t file_offset; + uint32_t file_read_bytes; uint32_t file_size; Stream* stream; bool mode; // Print address or content @@ -54,27 +54,28 @@ static void render_callback(Canvas* canvas, void* ctx) { int TOP_OFFSET = 10; int LEFT_OFFSET = 3; - uint32_t line_count = hex_viewer->model->file_size / HEX_VIEWER_BYTES_PER_ROW; - if(hex_viewer->model->file_size % HEX_VIEWER_BYTES_PER_ROW != 0) line_count += 1; - if(line_count > HEX_VIEWER_ROW_COUNT) { + uint32_t line_count = hex_viewer->model->file_size / HEX_VIEWER_BYTES_PER_LINE; + if(hex_viewer->model->file_size % HEX_VIEWER_BYTES_PER_LINE != 0) line_count += 1; + uint32_t first_line_on_screen = hex_viewer->model->file_offset / HEX_VIEWER_BYTES_PER_LINE; + if(line_count > HEX_VIEWER_LINES_ON_SCREEN) { uint8_t width = canvas_width(canvas); elements_scrollbar_pos( canvas, width, 0, - ROW_HEIGHT * HEX_VIEWER_ROW_COUNT, - hex_viewer->model->line, - line_count - (HEX_VIEWER_ROW_COUNT - 1)); + ROW_HEIGHT * HEX_VIEWER_LINES_ON_SCREEN, + first_line_on_screen, // TODO + line_count - (HEX_VIEWER_LINES_ON_SCREEN - 1)); } char temp_buf[32]; - uint32_t row_iters = hex_viewer->model->read_bytes / HEX_VIEWER_BYTES_PER_ROW; - if(hex_viewer->model->read_bytes % HEX_VIEWER_BYTES_PER_ROW != 0) row_iters += 1; + uint32_t row_iters = hex_viewer->model->file_read_bytes / HEX_VIEWER_BYTES_PER_LINE; + if(hex_viewer->model->file_read_bytes % HEX_VIEWER_BYTES_PER_LINE != 0) row_iters += 1; for(uint32_t i = 0; i < row_iters; ++i) { - uint32_t bytes_left_per_row = hex_viewer->model->read_bytes - i * HEX_VIEWER_BYTES_PER_ROW; - if(bytes_left_per_row > HEX_VIEWER_BYTES_PER_ROW) - bytes_left_per_row = HEX_VIEWER_BYTES_PER_ROW; + uint32_t bytes_left_per_row = + hex_viewer->model->file_read_bytes - i * HEX_VIEWER_BYTES_PER_LINE; + bytes_left_per_row = MIN(bytes_left_per_row, HEX_VIEWER_BYTES_PER_LINE); if(hex_viewer->model->mode) { memcpy(temp_buf, hex_viewer->model->file_bytes[i], bytes_left_per_row); @@ -85,8 +86,8 @@ static void render_callback(Canvas* canvas, void* ctx) { canvas_set_font(canvas, FontKeyboard); canvas_draw_str(canvas, LEFT_OFFSET, TOP_OFFSET + i * ROW_HEIGHT, temp_buf); } else { - int addr = (i + hex_viewer->model->line) * HEX_VIEWER_BYTES_PER_ROW; - snprintf(temp_buf, 32, "%04X", addr); + uint32_t addr = hex_viewer->model->file_offset + i * HEX_VIEWER_BYTES_PER_LINE; + snprintf(temp_buf, 32, "%04lX", addr); canvas_set_font(canvas, FontKeyboard); canvas_draw_str(canvas, LEFT_OFFSET, TOP_OFFSET + i * ROW_HEIGHT, temp_buf); @@ -105,7 +106,7 @@ static void render_callback(Canvas* canvas, void* ctx) { static void input_callback(InputEvent* input_event, void* ctx) { HexViewer* hex_viewer = ctx; - if(input_event->type == InputTypeShort) { + if(input_event->type == InputTypeShort || input_event->type == InputTypeRepeat) { furi_message_queue_put(hex_viewer->input_queue, input_event, 0); } } @@ -173,19 +174,20 @@ static bool hex_viewer_open_file(HexViewer* hex_viewer, const char* file_path) { static bool hex_viewer_read_file(HexViewer* hex_viewer) { furi_assert(hex_viewer); furi_assert(hex_viewer->model->stream); + furi_assert(hex_viewer->model->file_offset % HEX_VIEWER_BYTES_PER_LINE == 0); memset(hex_viewer->model->file_bytes, 0x0, HEX_VIEWER_BUF_SIZE); bool isOk = true; do { - uint32_t offset = hex_viewer->model->line * HEX_VIEWER_BYTES_PER_ROW; + uint32_t offset = hex_viewer->model->file_offset; if(!stream_seek(hex_viewer->model->stream, offset, true)) { FURI_LOG_E(TAG, "Unable to seek stream"); isOk = false; break; } - hex_viewer->model->read_bytes = stream_read( + hex_viewer->model->file_read_bytes = stream_read( hex_viewer->model->stream, (uint8_t*)hex_viewer->model->file_bytes, HEX_VIEWER_BUF_SIZE); @@ -233,19 +235,18 @@ int32_t hex_viewer_app(void* p) { break; } else if(input.key == InputKeyUp) { furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk); - if(hex_viewer->model->line > 0) { - hex_viewer->model->line--; - + if(hex_viewer->model->file_offset > 0) { + hex_viewer->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE; if(!hex_viewer_read_file(hex_viewer)) break; } furi_mutex_release(hex_viewer->mutex); } else if(input.key == InputKeyDown) { furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk); - uint32_t cur_pos = hex_viewer->model->line * HEX_VIEWER_BYTES_PER_ROW + - hex_viewer->model->read_bytes; + uint32_t last_byte_on_screen = + hex_viewer->model->file_offset + hex_viewer->model->file_read_bytes; - if(hex_viewer->model->file_size > cur_pos) { - hex_viewer->model->line++; + if(hex_viewer->model->file_size > last_byte_on_screen) { + hex_viewer->model->file_offset += HEX_VIEWER_BYTES_PER_LINE; if(!hex_viewer_read_file(hex_viewer)) break; } furi_mutex_release(hex_viewer->mutex); @@ -265,7 +266,7 @@ int32_t hex_viewer_app(void* p) { DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS); DialogMessage* message = dialog_message_alloc(); - dialog_message_set_header(message, "Hex Viewer v1.0", 16, 2, AlignLeft, AlignTop); + dialog_message_set_header(message, "Hex Viewer v1.1", 16, 2, AlignLeft, AlignTop); dialog_message_set_icon(message, &I_hex_10px, 3, 2); dialog_message_set_text( message, furi_string_get_cstr(buffer), 3, 16, AlignLeft, AlignTop); diff --git a/applications/plugins/nrf24scan/README.md b/applications/plugins/nrf24scan/README.md index 51d7bc8e4..7754a7c90 100644 --- a/applications/plugins/nrf24scan/README.md +++ b/applications/plugins/nrf24scan/README.md @@ -1,4 +1,4 @@ -# Scanner NRF24 scanner with logging and resend ability for Flipper Zero +# NRF24 scanner with logging and resend ability for Flipper Zero An [NRF24](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) driver for the [Flipper Zero](https://flipperzero.one/) device. The NRF24 is a popular line of 2.4GHz radio transceivers from Nordic Semiconductors. This library is not currently complete, but functional. @@ -29,6 +29,12 @@ Long press OK - view addresses.

+
+ +
+ +
+
## PinOut from from NoComp/Frog @@ -45,3 +51,4 @@ IRQ/8 is left disconnected on nrf24l01 ![NRF_Pins](https://user-images.githubusercontent.com/57457139/178093717-39effd5c-ebe2-4253-b13c-70517d7902f9.png) If the nRF module is acting a bit flakey, try adding a capacitor to the vcc/gnd lines! I've not tried the Plus model so it may have a bigger need for a cap. Otherwise, I haven't had any major issues. Anything from a 3.3 uF to 10 uF should do. (Watch your positive/negative placement! Negative to ground.) I learned if you wanna get fancy, include a 0.1 uF cap in parallel. The 3.3 uF to 10 uF will respond to slow freq changes while the 0.1 uF will respond to the high freq switching spikes that the larger one cannot. That said, a single 10 uF will likely suffice for the Mousejack attack. ¯\\\_(ツ)_/¯ ![NRF_Capacitor](https://user-images.githubusercontent.com/57457139/178169959-d030f9a6-d2ac-46af-af8b-470ff092c8a7.jpg) + diff --git a/applications/plugins/nrf24scan/Screenshot-1.png b/applications/plugins/nrf24scan/Screenshot-1.png index 8f7aca2a58ac463d853a1b3c8c316f617c1c6e7a..082e7d5aff7efd158731aa9809a3cd672bc8246f 100644 GIT binary patch literal 2345 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 TCrKFN-3RjZ3^>I+8FlsF5slzD literal 2126 zcmZuz2~bm46n!D0z!dD%)(VO^c4)QMBG63HEKnB^R1guYfS{$Cl2C=FtT7Om5w!@d zWep~bMkGX%h%70^BswaL3jIhzkg`P0G)MwTH5&*1BnEshR@85a<-FNOe=iUF$ z?T!p{ck^-s0Jw*5-?|3?C&wcSxV#=BUhUuD7+ll0@23FZaqsnwDqH8V8~_&(zV)lU zIhQ7eqc0AwdEdDwi(3(>sovIQy~(P#yzr^T{kVz_hAD*hG|v=Y;mDTFf&#lmgQnwx z;}!!tW&sFUg97hH0C4&}051Q3sHPYJ!ExnJ+w?*~m5BH_^Bqi0tllb5c_m_5Zs~5Q!ka;zn?fI zEY9u7$Kq3}UyfXlmMFOeSnEtPyk)W+#2J?m$0Z0>q@>9jPFN09?sA^3xj1)ah&x`I z$D=N-8f?VHFuXYcY<7K9jBJ!U@|+{0_wwtGGKJUWmQ<#Y)yT^`wvLv|+6rY!vQ{GO zD0kUzs8~cHIeox)$PBvJPQbJyko5TrIDvUmzXcrwJ zoXCc>$?Wn9xgfWlJfcg9p-c~?9Gw_b)Q>W33=2wJ2jMD-M{lQmBcX;Wd?o|uuBXrF z+Oaj7_PZ}_+70DyZ!~{h-}(gfvKHYCGv&#hBGDw#Y$MO)XL=(Zqpr9z=rxgHCn}(R zmgU!$`Inxz4uV42%~4ddRuW7_t}tshCVCBW{1F1-#wQ=ldN;mxVS21IIZ_iQIS8#EBUkV#e%^JmC_j-wUJ>$m>j{bu;lA&nb(cD_ldBYAy6wSfHOU^d(c0y7Ag3{fhESIfUEi=FMJ@u}XN# z0ZaS%c&Q#0c@-jhkcUd_GZZA4TWb7Sy=2l%{&^P75{BRL)UfgNFl@#h$z`62O^c@> zjPp;g*#RGR|6v6EVxYaCaP;1YrOnh=ZsG7)7uL|uJQM&i<*o)zSJl4LIGlShTDa*ACRnLwf)UvGq(;IX)5p0 z(@=bi0Yalmm4rLB)Nv7w17xV^J3X<*TO%&!n$xX{v zR~5?5#hV0qlf!1Xr93h@smD@TBT+kNw6ba%tBW9rKm=JHx-F0qSF;wS=h+)oE6?^S z9ImkrMGGYQJQItE>zW)I2xSgphqm0tL*UenWWY8ZNR8F+$BT>%rD44K3$7ij^!hux zzqKMs8W_x0Wu0NQ{9LEKbN@p~zC4-NZKg;So%N*YulhLSP&T_H>KtSsJjwlOsjV}6 z<>0SZyLtNaaZnd*Npn9a%MappDlUJyX{x=%I<%zkc&A)c7D_vMT~5jA$i=9u+_2N_ zN+y(1WKcc*tcj{&vudB&%Wbe;Y?IT;1z58@d*yN+RGfo(a2bl{eW}&KNs9s!oIQL$ Ra{M5G@NJP>`I`@({0E_IZXW;u diff --git a/applications/plugins/nrf24scan/Screenshot-3.png b/applications/plugins/nrf24scan/Screenshot-3.png new file mode 100644 index 0000000000000000000000000000000000000000..651052350dba0ffffe11adc42b635e963c81ddcd GIT binary patch literal 2064 zcma)7X;4#F7`;hYR0eS9fFeR1cR>)uAQF;bT@X|Vi=si0nyFY)q%=e%2_bE5T_%89 z!4fsWA_FR0E65TE;1VbTp@509+C~lVfUt$glF(%I$Hia$@#emnckg%4Io~X)V89XL)0z$(G;p!!Z@&jVok#BcBJ(DS!P zdc)7Y^;mA)cBbvcU$cK+Du|PP@phe0wuI}ki+yRB)f%=vlVWLCk-zpHTeL1 zxfF28`cs|PsK9+-SLo|+Yc+hu45h`>7g6@iM6hE!UtM4J5y%Gp4g1njrPD67S%Ih}-hn|P zC~WZ67ac^}02PHb>eP_Q)OnoaC`E&|mShyTU1&9LlVg-_qfqjX0rqm3#;ARy&#Tw8)xR&y?#RO{Qq zcP&H&c9tOEE*dN`urufvM+G<}LEdI+`br29kNsm)Nj#dX4*f{UpkK_Zm38^*DHYEg zH0MASj?AIhLtR7y@}V08Jnuk7BA7Ce1yy)ZVM9iGrbA?t_g^Cw(at%qm1#^VP9EF4 zqDrj`6Gy)ZbNtv+gAtCD*^vEc*vc}wwguTL%L9_Bc`e73D7kg$;9$SjZ&w~&@FXP7W_(I}?^d2t3h(&2r9@aIH3?XSR{`H*4UH?U}^+pp(mBnQLF3;LgcE)o5n0ylcTNy)I(@V zFw}vA+pO383Z1i-qnR;+4&wLdax zgvrOzP^tX%l&0zrrAp&Prb2Wi95P?((7`<0qMaH@%H&gdrXUXvKo~{nHIjt#hc7rX zTi-M@jGubf(!Yp$XgrCVkvx_`LuC{_R9W5&g49Fi_Vm4+Y6@o|fg`45s$>#9>|^{f z$%d@C5NO;(uwzb`4HPkMM=6uWas8NMGu45~(Z9d15+z5UQr0?oUW4VNuRA}Flz=GolPO2V z{#Q_kA8rvn<@_yKAGHv4B|Suyc`}h72t#i|1_si;x*$7hO)7jYNY@u(b`%$&iWT2%5A1 z!%zCmjZ&1Vo5QYsWV+NzSgyt!<%r#b=)LxW#LmjPV%RIO&e{CPv8KpL9x)ElHgo#g zyZmtr#JMWm>63{P0%id=i9BC7XhEATAF5PlNJUTa-s2iG_F+hj$Xsk`>!Z;up)M4g zBq0>v7K$e*c<*hlnUEo@HJIOO9}P$| zYE8-aCr?tX78QwL-v4~ywM9H($4++qumkqWV;izmT%1>699lK1r4&lLnJ#q}umHH2 zZT-R6)m#G9?9PW%KLxQQGIrX`1VEqSuSX_vwGg31eUgWMU9d1yZZ48SekF`)3~iU&Fn2`9Hn)+%~gC862iC zFt~6sI9z!pcOY`}uivX*poe7e%D)WTZdnD}y_P#5`~BHgb%O#CB-x`p z;tNi4k>Yb`7-jwZIpO&`$?D^KE8lYR$Q(tO@#^cp{);x{Y0s=@>7TdAGTZxg@3wz? zwide|XE>k03h@xoUtfRyoM5?l=V#g8XAg|+AJ6+O7G8aS?R>@^;z-WBYTJ-sC;xx; z`uZu0_XXEa|IRw^EW)O&SCJ0$%dYKhpSbzi%dOv8&!r-a-+D{9;{2cTXFm<1=bQe2 zS@{L%`MtMxM#r=7;6t+D=p8Zg{eS+w`RVdGTjv`T_@YME;>vfw|9t;D zo_#jRKW}RF>KD`X6od=E-YVWS^SyD;y2Y=#&!-{8OK)s$xc4*fM`_KYs2%%0@E{w# zpZSLI`MbvA-*grfS3cu6iDU$)08m2keamiOH0y5v4gLo)(e>xuW8)vpLP~~W#nBB& z=?$9fh@e(HeeV25^0&x07Pfmx)~$WVc;-yg_H&i#=k8j~PP=#Q{(tp#`X~XhesSCh zng9FJ)=dO@Fd5;&t*;{;jBEV=#LWNqclW-6cvKHsytXvhmt42*VyVgf_Vmq6;Oqf% z=d4@&3CHGH?gQq9hf<91k^N>IL!RG=@cxKYvZ9_**X^K$`Omp-z~Yv{)78&qol`;+ E05BoZMF0Q* literal 0 HcmV?d00001 diff --git a/applications/plugins/nrf24scan/addr.txt b/applications/plugins/nrf24scan/addr.txt index 0e24b1c44..a79064baf 100644 --- a/applications/plugins/nrf24scan/addr.txt +++ b/applications/plugins/nrf24scan/addr.txt @@ -1,5 +1,5 @@ -1 -120 -C8C801 -C8C802 -03 +Rate: 1 +Ch: 120 +P0: C8C801 +P1: C8C802 +P2: 03 diff --git a/applications/plugins/nrf24scan/addr1.txt b/applications/plugins/nrf24scan/addr1.txt index 8ad9c5fd7..5a10c4298 100644 --- a/applications/plugins/nrf24scan/addr1.txt +++ b/applications/plugins/nrf24scan/addr1.txt @@ -1,3 +1,3 @@ -1 -120 -C8C8E5 +Rate: 1 +Ch: 120 +P0: C8C8E5 diff --git a/applications/plugins/nrf24scan/addr_sniff.txt b/applications/plugins/nrf24scan/addr_sniff.txt index 6f1a699c7..f95f8eeff 100644 --- a/applications/plugins/nrf24scan/addr_sniff.txt +++ b/applications/plugins/nrf24scan/addr_sniff.txt @@ -1,4 +1,4 @@ -1 -0 -0055 -00AA +Rate: 1 +Ch: 0 +P0: 0055 +P1: 00AA diff --git a/applications/plugins/nrf24scan/lib/nrf24/nrf24.c b/applications/plugins/nrf24scan/lib/nrf24/nrf24.c index 4c344c742..7751175b0 100644 --- a/applications/plugins/nrf24scan/lib/nrf24/nrf24.c +++ b/applications/plugins/nrf24scan/lib/nrf24/nrf24.c @@ -1,3 +1,5 @@ +// Modified by vad7, 25.11.2022 +// #include "nrf24.h" #include #include @@ -176,9 +178,10 @@ uint8_t nrf24_set_dst_mac(FuriHalSpiBusHandle* handle, uint8_t* mac, uint8_t siz return status; } -uint8_t nrf24_get_packetlen(FuriHalSpiBusHandle* handle) { +uint8_t nrf24_get_packetlen(FuriHalSpiBusHandle* handle, uint8_t pipe) { uint8_t len = 0; - nrf24_read_reg(handle, RX_PW_P0, &len, 1); + if(pipe > 5) pipe = 0; + nrf24_read_reg(handle, RX_PW_P0 + pipe, &len, 1); return len; } @@ -188,8 +191,7 @@ uint8_t nrf24_set_packetlen(FuriHalSpiBusHandle* handle, uint8_t len) { return status; } -uint8_t - nrf24_rxpacket(FuriHalSpiBusHandle* handle, uint8_t* packet, uint8_t* packetsize, bool full) { +uint8_t nrf24_rxpacket(FuriHalSpiBusHandle* handle, uint8_t* packet, uint8_t* packetsize, bool full) { uint8_t status = 0; uint8_t size = 0; uint8_t tx_pl_wid[] = {R_RX_PL_WID, 0}; @@ -201,12 +203,12 @@ uint8_t if(status & 0x40) { if(full) - size = nrf24_get_packetlen(handle); + size = nrf24_get_packetlen(handle, (status >> 1) & 7); else { nrf24_spi_trx(handle, tx_pl_wid, rx_pl_wid, 2, nrf24_TIMEOUT); size = rx_pl_wid[1]; } - + if(size > 32) size = 32; tx_cmd[0] = R_RX_PAYLOAD; nrf24_spi_trx(handle, tx_cmd, tmp_packet, size + 1, nrf24_TIMEOUT); nrf24_write_reg(handle, REG_STATUS, 0x50); // clear RX_DR, MAX_RT. @@ -277,7 +279,7 @@ uint8_t nrf24_set_rx_mode(FuriHalSpiBusHandle* handle) { status = nrf24_write_reg(handle, REG_CONFIG, cfg); //nr204_write_reg(REG_EN_RXADDR, 0x03) // Set RX Pipe 0 and 1 furi_hal_gpio_write(nrf24_CE_PIN, true); - furi_delay_ms(2000); + furi_delay_ms(2); return status; } diff --git a/applications/plugins/nrf24scan/lib/nrf24/nrf24.h b/applications/plugins/nrf24scan/lib/nrf24/nrf24.h index 28cf8782b..8ff1ab27e 100644 --- a/applications/plugins/nrf24scan/lib/nrf24/nrf24.h +++ b/applications/plugins/nrf24scan/lib/nrf24/nrf24.h @@ -150,10 +150,10 @@ uint8_t nrf24_flush_tx(FuriHalSpiBusHandle* handle); /** Gets the RX packet length in data pipe 0 * * @param handle - pointer to FuriHalSpiHandle - * + * pipe - pipe index (0..5) * @return packet length in data pipe 0 */ -uint8_t nrf24_get_packetlen(FuriHalSpiBusHandle* handle); +uint8_t nrf24_get_packetlen(FuriHalSpiBusHandle* handle, uint8_t pipe); /** Sets the RX packet length in data pipe 0 * diff --git a/applications/plugins/nrf24scan/nrf24scan.c b/applications/plugins/nrf24scan/nrf24scan.c index a8693656a..4fc6a1dcf 100644 --- a/applications/plugins/nrf24scan/nrf24scan.c +++ b/applications/plugins/nrf24scan/nrf24scan.c @@ -18,7 +18,7 @@ #define MAX_ADDR 6 #define SCAN_APP_PATH_FOLDER "/ext/nrf24scan" -#define ADDR_FILENAME \ +#define ADDR_FILENAME \ "addr.txt" // File format (1 parameter per line): \ // Rate: 0/1/2 - rate in Mbps (=0.25/1/2) \ // Ch: 0..125 - default channel \ @@ -869,6 +869,7 @@ int32_t nrf24scan_app(void* p) { if(what_doing == 1 && key_press_seq_ok != event.input.sequence) { // Send nrf24_send_packet(); } + key_press_seq_ok--; } break; case InputKeyBack: @@ -914,4 +915,4 @@ int32_t nrf24scan_app(void* p) { if(APP->log_arr) free(APP->log_arr); free(APP); return 0; -} \ No newline at end of file +}