Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gornek/merge dev #2827

Merged
merged 89 commits into from
Jul 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
c496962
fix typo in FuriHalDebuging.md (#2667)
end-me-please May 14, 2023
8d1f5b0
[FL-3317] fbt: allow strings for fap_version field in app manifests (…
hedger May 14, 2023
341cd5e
[FL-3312] fix PIN retry count reset on reboot (#2671)
skotopes May 14, 2023
9dedcd0
api: added lib/nfc/protocols/nfc_util.h (#2674)
hedger May 15, 2023
d062ce7
Add new indexer (#2681)
drunkbatya May 19, 2023
d9fc408
fbt: Use union for old py (#2685)
xMasterX May 21, 2023
5f1ac6e
fbt: Fix tar uid overflow when packaging (#2689)
GMMan May 22, 2023
a821a2f
[FL-3328] Removed user-specific data from tar artifacts (#2691)
hedger May 23, 2023
711f0fe
[FL-3327] Storage: common_rename is now POSIX compliant (#2693)
DrZlo13 May 23, 2023
3217f28
Services: remove deallocator for persistent services (#2692)
skotopes May 23, 2023
88f0b63
Storage, common_rename: check that old path is exists (#2698)
DrZlo13 May 25, 2023
080324f
[FL-3315] Desktop,Rpc: desktop status subscription (#2696)
skotopes May 25, 2023
faa14cf
:sparkles: Add fr-FR-mac key layout (#2666)
FelixLgr May 25, 2023
ed1ebf9
[FL-3322] Infrared: respect carrier frequency and duty cycle settings…
gsurkov May 25, 2023
12dc5b1
USB HID report timeout (#2682)
nminaylov May 25, 2023
a472ff7
Add Airwell Prime DCI Series and match file style (#2686)
minchogaydarov May 25, 2023
77bb997
desktop: Refactor favorites settings and allow app browser in selecti…
GMMan May 25, 2023
490447b
NFC: Add support for Gen4 "ultimate card" in Magic app (#2238)
nullableVoidPtr May 25, 2023
5a7cd20
nfc: Fix MFUL tearing flags read (#2669)
GMMan May 26, 2023
4f054ed
api: added toolbox/api_lock.h (#2702)
hedger May 26, 2023
cce0485
Update ac.ir (#2701)
technobulb May 26, 2023
5f52382
nfc: Mifare Ultralight C detection (#2668)
GMMan May 26, 2023
44426c7
[LRFID] Add support for Nexkey/Nexwatch (#2680)
mauimauer May 29, 2023
f9390e0
Add Carrier 42QHB12D8S (#2707)
minchogaydarov May 29, 2023
66961da
BadUSB: script execution pause (#2700)
nminaylov May 29, 2023
363f555
Implement support for reading Opal card (Sydney, Australia) (#2683)
micolous May 29, 2023
3de856f
[FL-3295] FuriHal: add bus abstraction (#2614)
skotopes May 29, 2023
8d2ea14
[FL-3330] fbt: added hooks for build & dist environments; added FW_OR…
hedger May 29, 2023
a76c189
[FL-3335] Dolphin: new animation (#2713)
skotopes May 30, 2023
d09c59f
[FL-3340] SubGhz: fix flipper crashes after exiting broadcast blockin…
Skorpionm May 31, 2023
86a6448
NFC: Fix gen1 writing with invalid BCC (lost fix from PR #2511) (#2710)
AloneLiberty May 31, 2023
3a7203e
Update dolphin.py (#2717)
ZoeMeetAgain Jun 1, 2023
1d7966f
NFC: fix MFC timings (#2719)
gornekich Jun 1, 2023
d9a9fa0
FuriHal: disable bus re-initialization on early init and extra assert…
skotopes Jun 2, 2023
72ad22b
[DEVOPS-18]: Add map file parser, mariadb inserter (#2732)
drunkbatya Jun 5, 2023
1e512b6
[FL-3293] FuriHal: add system setting to device info, bump device inf…
skotopes Jun 6, 2023
76c70bd
[FL-3316] Settings: add contrast adjustment (#2737)
skotopes Jun 6, 2023
b0555d9
[FL-3213] f7: add PB9 to debug pins (#2738)
skotopes Jun 6, 2023
61394b8
[FL-3352] Dolphin: new animation (#2735)
skotopes Jun 6, 2023
a284d21
[FL-2872] Remove unused resources (#2740)
Astrrra Jun 6, 2023
e4a2e9a
Serial_CLI: Fixing serial cli logger error so it sounds more concise …
DXVVAY Jun 6, 2023
3e1f209
Furi: smaller critical enter and critical exit macro (#2716)
DrZlo13 Jun 6, 2023
dbd48a0
[FL-3331] SubGhz: add subghz_protocol_registry external API (#2712)
Skorpionm Jun 6, 2023
6f6ead1
[FL-3045] Fix core2 permisions (#2742)
drunkbatya Jun 6, 2023
754e640
[FL-3246] fbt, ufbt: added checks for appid in app manifests(#2720)
hedger Jun 7, 2023
09fae62
Map parser licence description (#2739)
glebmashanov Jun 7, 2023
436194e
[FL-3346] fbt: added Flipper selection when multiple are connected ov…
hedger Jun 8, 2023
c186d2b
added ISO15693 (NfcV) reading, saving, emulating and revealing from p…
g3gg0 Jun 8, 2023
3226254
[FL-3351] github: re-enabled f18 build (#2743)
hedger Jun 8, 2023
e5343fd
Scripts: WiFi board updater (#2625)
DrZlo13 Jun 8, 2023
e3e64e5
[FL-3267] ble: refactored bt gatt characteristics setup (#2587)
hedger Jun 8, 2023
1c306a0
[FL-3359] github: added debugapps artifact; packaging resources per-t…
hedger Jun 8, 2023
bff5921
FuriHal: always clock SMPS from HSI (#2643)
skotopes Jun 8, 2023
62939dd
Core2, SRAM2: provide safety gap (#2754)
DrZlo13 Jun 9, 2023
0e4344a
Services: simplify api (#2540)
DrZlo13 Jun 9, 2023
49d842e
weather_station: add oregon3 with THGR221 (#2748)
clashlab Jun 9, 2023
2312fe5
[FL-3361] fbt: stable build dates (#2751)
hedger Jun 9, 2023
4900e8b
[FL-3284] Fix reading Mifare Classic cards with unusual access condit…
Astrrra Jun 9, 2023
392bd3c
FuriHal: remove clock startup time tracking from clean builds (#2764)
skotopes Jun 13, 2023
b6dbf25
furi_hal_nfc: fix rfalTransceiveBitsBlockingTx's 4th argument to bits…
leommxj Jun 14, 2023
5334a0a
[FL-3376] Fixed GATT attribute order (#2776)
hedger Jun 15, 2023
4ddfe05
Debug: sync apps on attach, makes it possible to debug already starte…
skotopes Jun 16, 2023
761a14e
[FL-2837][FL-3270] Loader refaptoring: second encounter (#2779)
DrZlo13 Jun 23, 2023
168fa72
[FL-3373] Scroll acceleration (#2784)
Astrrra Jun 27, 2023
75354ec
fix: make `dialog_file_browser_set_basic_options` initialize all fiel…
JarvisCraft Jun 27, 2023
0a5508a
Fix M*LIB usage (#2762)
P-p-H-d Jun 27, 2023
e680cf5
Actions: unit_test and updater timeouts (#2807)
doomwastaken Jun 27, 2023
92c1bb8
LF-RFID debug: make it work (#2793)
DrZlo13 Jun 28, 2023
645a7c5
[FL-3386] Fast FAP Loader (#2790)
DrZlo13 Jun 28, 2023
e52fdcf
[FL-3388] NFC/RFID detector (#2795)
Skorpionm Jun 28, 2023
ee96e34
Fix furi_hal_bus related crashes in plugins (#2799)
xMasterX Jun 28, 2023
6f1c46e
Fix fr-FR-mac keylayout (#2809)
FelixLgr Jun 28, 2023
bf975ad
Fix roll-over in file browser and archive (#2811)
Astrrra Jun 28, 2023
a595231
Add Mitsubishi MSZ-AP25VGK universal ac remote (#2800)
minchogaydarov Jun 28, 2023
dcf1059
Added Power Button for an unknown Sharp Model (#2787)
m0veax Jun 28, 2023
feebf2c
NFC: Improvements to NFC Magic app (#2760)
AloneLiberty Jun 28, 2023
d1c27b6
Keynote with vertical layout (#2794)
Kami-no Jun 28, 2023
c10c456
SLIX2 emulation support / practical use for Dymo printers (#2783)
g3gg0 Jun 28, 2023
e5ae3e2
NFC: Fix key invalidation logic (#2782)
AloneLiberty Jun 29, 2023
95c1585
[FL-3211][FL-3212] Debug apps: speaker, uart_echo with baudrate (#2812)
DrZlo13 Jun 29, 2023
5d40193
increased timeouts (#2816)
doomwastaken Jun 29, 2023
6d9de25
Furi,FuriHal: various improvements (#2819)
skotopes Jun 30, 2023
8c93695
[FL-3375] SubGhz: add CC1101 module external (#2747)
Skorpionm Jun 30, 2023
88f8f68
fix width of submenu items on Vertical orientation (#2306)
gebeto Jun 30, 2023
e7bd547
SubGHz: properly working with missing external driver (#2821)
DrZlo13 Jun 30, 2023
5e8cd9c
Merge remote-tracking branch 'origin/dev' into gornek/nfc_refactoring
gornekich Jul 1, 2023
aeac53c
all: revert incorrect changes
gornekich Jul 1, 2023
0bbdb7b
nfc app: apply correct changes
gornekich Jul 1, 2023
f1b67f9
nfc: build fixes
gornekich Jul 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ jobs:
- name: 'Flash unit tests firmware'
id: flashing
if: success()
timeout-minutes: 10
run: |
./fbt flash OPENOCD_ADAPTER_SERIAL=2A0906016415303030303032 FIRMWARE_APP_SET=unit_tests FORCE=1

- name: 'Wait for flipper and format ext'
id: format_ext
if: steps.flashing.outcome == 'success'
timeout-minutes: 5
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/testing/await_flipper.py ${{steps.device.outputs.flipper}}
Expand All @@ -43,6 +45,7 @@ jobs:
- name: 'Copy assets and unit data, reboot and wait for flipper'
id: copy
if: steps.format_ext.outcome == 'success'
timeout-minutes: 5
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} -f send assets/resources /ext
Expand All @@ -53,7 +56,7 @@ jobs:
- name: 'Run units and validate results'
id: run_units
if: steps.copy.outcome == 'success'
timeout-minutes: 2.5
timeout-minutes: 7
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/testing/units.py ${{steps.device.outputs.flipper}}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/updater_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,15 @@ jobs:

- name: 'Flashing target firmware'
id: first_full_flash
timeout-minutes: 10
run: |
source scripts/toolchain/fbtenv.sh
./fbt flash_usb_full PORT=${{steps.device.outputs.flipper}} FORCE=1
python3 scripts/testing/await_flipper.py ${{steps.device.outputs.flipper}}

- name: 'Validating updater'
id: second_full_flash
timeout-minutes: 10
if: success()
run: |
source scripts/toolchain/fbtenv.sh
Expand Down
2 changes: 1 addition & 1 deletion CODING_STYLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Almost everything in flipper firmware is built around this concept.
# C coding style

- Tab is 4 spaces
- Use `fbt format` to reformat source code and check style guide before commit
- Use `./fbt format` to reformat source code and check style guide before commit

## Naming

Expand Down
1 change: 0 additions & 1 deletion applications/ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ Applications for main Flipper menu.

- `archive` - Archive and file manager
- `bad_usb` - Bad USB application
- `fap_loader` - External applications loader
- `gpio` - GPIO application: includes USART bridge and GPIO control
- `ibutton` - iButton application, onewire keys and more
- `infrared` - Infrared application, controls your IR devices
Expand Down
1 change: 1 addition & 0 deletions applications/debug/application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ App(
"display_test",
"text_box_test",
"file_browser_test",
"speaker_debug",
],
)
10 changes: 10 additions & 0 deletions applications/debug/crash_test/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
App(
appid="crash_test",
name="Crash Test",
apptype=FlipperAppType.DEBUG,
entry_point="crash_test_app",
cdefines=["APP_CRASH_TEST"],
requires=["gui"],
stack_size=1 * 1024,
fap_category="Debug",
)
128 changes: 128 additions & 0 deletions applications/debug/crash_test/crash_test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
#include <furi_hal.h>
#include <furi.h>

#include <gui/gui.h>
#include <gui/view_dispatcher.h>
#include <gui/modules/submenu.h>

#define TAG "CrashTest"

typedef struct {
Gui* gui;
ViewDispatcher* view_dispatcher;
Submenu* submenu;
} CrashTest;

typedef enum {
CrashTestViewSubmenu,
} CrashTestView;

typedef enum {
CrashTestSubmenuCheck,
CrashTestSubmenuCheckMessage,
CrashTestSubmenuAssert,
CrashTestSubmenuAssertMessage,
CrashTestSubmenuCrash,
CrashTestSubmenuHalt,
} CrashTestSubmenu;

static void crash_test_submenu_callback(void* context, uint32_t index) {
CrashTest* instance = (CrashTest*)context;
UNUSED(instance);

switch(index) {
case CrashTestSubmenuCheck:
furi_check(false);
break;
case CrashTestSubmenuCheckMessage:
furi_check(false, "Crash test: furi_check with message");
break;
case CrashTestSubmenuAssert:
furi_assert(false);
break;
case CrashTestSubmenuAssertMessage:
furi_assert(false, "Crash test: furi_assert with message");
break;
case CrashTestSubmenuCrash:
furi_crash("Crash test: furi_crash");
break;
case CrashTestSubmenuHalt:
furi_halt("Crash test: furi_halt");
break;
default:
furi_crash("Programming error");
}
}

static uint32_t crash_test_exit_callback(void* context) {
UNUSED(context);
return VIEW_NONE;
}

CrashTest* crash_test_alloc() {
CrashTest* instance = malloc(sizeof(CrashTest));

View* view = NULL;

instance->gui = furi_record_open(RECORD_GUI);
instance->view_dispatcher = view_dispatcher_alloc();
view_dispatcher_enable_queue(instance->view_dispatcher);
view_dispatcher_attach_to_gui(
instance->view_dispatcher, instance->gui, ViewDispatcherTypeFullscreen);

// Menu
instance->submenu = submenu_alloc();
view = submenu_get_view(instance->submenu);
view_set_previous_callback(view, crash_test_exit_callback);
view_dispatcher_add_view(instance->view_dispatcher, CrashTestViewSubmenu, view);
submenu_add_item(
instance->submenu, "Check", CrashTestSubmenuCheck, crash_test_submenu_callback, instance);
submenu_add_item(
instance->submenu,
"Check with message",
CrashTestSubmenuCheckMessage,
crash_test_submenu_callback,
instance);
submenu_add_item(
instance->submenu, "Assert", CrashTestSubmenuAssert, crash_test_submenu_callback, instance);
submenu_add_item(
instance->submenu,
"Assert with message",
CrashTestSubmenuAssertMessage,
crash_test_submenu_callback,
instance);
submenu_add_item(
instance->submenu, "Crash", CrashTestSubmenuCrash, crash_test_submenu_callback, instance);
submenu_add_item(
instance->submenu, "Halt", CrashTestSubmenuHalt, crash_test_submenu_callback, instance);

return instance;
}

void crash_test_free(CrashTest* instance) {
view_dispatcher_remove_view(instance->view_dispatcher, CrashTestViewSubmenu);
submenu_free(instance->submenu);

view_dispatcher_free(instance->view_dispatcher);
furi_record_close(RECORD_GUI);

free(instance);
}

int32_t crash_test_run(CrashTest* instance) {
view_dispatcher_switch_to_view(instance->view_dispatcher, CrashTestViewSubmenu);
view_dispatcher_run(instance->view_dispatcher);
return 0;
}

int32_t crash_test_app(void* p) {
UNUSED(p);

CrashTest* instance = crash_test_alloc();

int32_t ret = crash_test_run(instance);

crash_test_free(instance);

return ret;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ static void comparator_trigger_callback(bool level, void* comp_ctx) {
furi_hal_gpio_write(&gpio_ext_pa7, !level);
}

void lfrfid_debug_view_tune_callback(void* context) {
LfRfidDebug* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, 0xBA);
}

void lfrfid_debug_scene_tune_on_enter(void* context) {
LfRfidDebug* app = context;

Expand All @@ -16,6 +21,8 @@ void lfrfid_debug_scene_tune_on_enter(void* context) {

furi_hal_rfid_tim_read_start(125000, 0.5);

lfrfid_debug_view_tune_set_callback(app->tune_view, lfrfid_debug_view_tune_callback, app);

view_dispatcher_switch_to_view(app->view_dispatcher, LfRfidDebugViewTune);
}

Expand Down
44 changes: 31 additions & 13 deletions applications/debug/lfrfid_debug/views/lfrfid_debug_view_tune.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ typedef struct {
uint32_t ARR;
uint32_t CCR;
int pos;
void (*update_callback)(void* context);
void* update_context;
} LfRfidTuneViewModel;

static void lfrfid_debug_view_tune_draw_callback(Canvas* canvas, void* _model) {
Expand Down Expand Up @@ -151,6 +153,18 @@ static bool lfrfid_debug_view_tune_input_callback(InputEvent* event, void* conte
consumed = false;
break;
}

if(event->key == InputKeyLeft || event->key == InputKeyRight) {
with_view_model(
tune_view->view,
LfRfidTuneViewModel * model,
{
if(model->update_callback) {
model->update_callback(model->update_context);
}
},
false);
}
}

return consumed;
Expand All @@ -161,19 +175,7 @@ LfRfidTuneView* lfrfid_debug_view_tune_alloc() {
tune_view->view = view_alloc();
view_set_context(tune_view->view, tune_view);
view_allocate_model(tune_view->view, ViewModelTypeLocking, sizeof(LfRfidTuneViewModel));

with_view_model(
tune_view->view,
LfRfidTuneViewModel * model,
{
model->dirty = true;
model->fine = false;
model->ARR = 511;
model->CCR = 255;
model->pos = 0;
},
true);

lfrfid_debug_view_tune_clean(tune_view);
view_set_draw_callback(tune_view->view, lfrfid_debug_view_tune_draw_callback);
view_set_input_callback(tune_view->view, lfrfid_debug_view_tune_input_callback);

Expand All @@ -199,6 +201,8 @@ void lfrfid_debug_view_tune_clean(LfRfidTuneView* tune_view) {
model->ARR = 511;
model->CCR = 255;
model->pos = 0;
model->update_callback = NULL;
model->update_context = NULL;
},
true);
}
Expand Down Expand Up @@ -232,3 +236,17 @@ uint32_t lfrfid_debug_view_tune_get_ccr(LfRfidTuneView* tune_view) {

return result;
}

void lfrfid_debug_view_tune_set_callback(
LfRfidTuneView* tune_view,
void (*callback)(void* context),
void* context) {
with_view_model(
tune_view->view,
LfRfidTuneViewModel * model,
{
model->update_callback = callback;
model->update_context = context;
},
false);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,8 @@ bool lfrfid_debug_view_tune_is_dirty(LfRfidTuneView* tune_view);
uint32_t lfrfid_debug_view_tune_get_arr(LfRfidTuneView* tune_view);

uint32_t lfrfid_debug_view_tune_get_ccr(LfRfidTuneView* tune_view);

void lfrfid_debug_view_tune_set_callback(
LfRfidTuneView* tune_view,
void (*callback)(void* context),
void* context);
11 changes: 11 additions & 0 deletions applications/debug/speaker_debug/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
App(
appid="speaker_debug",
name="Speaker Debug",
apptype=FlipperAppType.DEBUG,
entry_point="speaker_debug_app",
requires=["gui", "notification"],
stack_size=2 * 1024,
order=10,
fap_category="Debug",
fap_libs=["music_worker"],
)
Loading