From 94f440d286001c1d7b1096f01658a6605c87abb4 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Wed, 24 Aug 2022 03:55:13 +0300 Subject: [PATCH 1/3] update readme/changelog & some fixes --- CHANGELOG.md | 20 ++++++++++++------ ReadMe.md | 5 ++++- .../desktop/views/desktop_view_slideshow.c | 4 ++-- applications/picopass/picopass_worker.c | 2 +- applications/unirfremix/application.fam | 2 +- assets/slideshow/update_default/frame_00.png | Bin 2211 -> 2958 bytes .../{UniRFRemix.md => SubGHzRemotePlugin.md} | 0 7 files changed, 22 insertions(+), 11 deletions(-) rename documentation/{UniRFRemix.md => SubGHzRemotePlugin.md} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f48929ac..64ed851a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,18 @@ ### New changes -* Wifi Marauder app update (by @0xchocolate) -* Updated Universal remote assets (by @Amec0e) -* Fixed music player -* Fixed typos in subghz encoders -* OFW: New NFC info screens -* OFW: U2F fixes +* New universal remote for projectors +* OFW: New LF-RFID subsystem (New protocols, Animal tags support) +* Updated universal remote assets (by @Amec0e) +* Renamed UniRF Remix -> Sub-GHz Remote +* Replaced Hex/Dec converter with Multi Converter plugin [(by theisolinearchip)](https://github.com/theisolinearchip/flipperzero_stuff) +* New update screen, readme pictures (by @Svaarich) +* Fixed crash if Center button is pressed on the "update success" screen via screensharing +* Temporary disabled one log call in picopass plugin to fix crash/freeze on Read screen +* OFW: Picopass load/info/delete +* OFW: SubGhz: add protocol Magellen +* OFW: Fix mifare ultralight/ntag unlock +* OFW: Dolphin level thresholds update +* OFW: Add MFC 1/4K 4/7bUID to "Add Manually" +* OFW: Other fixes and changes **Note: Prefer installing using web updater or by self update package, all needed assets will be installed** diff --git a/ReadMe.md b/ReadMe.md index 222572381..b9cc9e257 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -32,6 +32,9 @@ Our Discord Community: * Picopass/iClass plugin included in releases * Recompiled IR TV Universal Remote for ALL buttons * Universal A/C and Audio(soundbars, etc.) remote +* Universal remote for Projectors +* BadUSB keyboard layouts +* Customizable Flipper name * Other small fixes and changes throughout See changelog in releases for latest updates! @@ -88,7 +91,7 @@ See changelog in releases for latest updates! ### **Plugins** -## [- Configure UniversalRF Remix App](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/UniRFRemix.md) +## [- Configure Sub-GHz Remote App](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/SubGHzRemotePlugin.md) ## [- Barcode Generator](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/BarcodeGenerator.md) diff --git a/applications/desktop/views/desktop_view_slideshow.c b/applications/desktop/views/desktop_view_slideshow.c index 58a8f6d0c..3462d2f08 100644 --- a/applications/desktop/views/desktop_view_slideshow.c +++ b/applications/desktop/views/desktop_view_slideshow.c @@ -61,9 +61,9 @@ static bool desktop_view_slideshow_input(InputEvent* event, void* context) { furi_timer_start(instance->timer, DESKTOP_SLIDESHOW_POWEROFF_SHORT); } else if(event->type == InputTypeRelease) { furi_timer_stop(instance->timer); - if(!slideshow_is_one_page(model->slideshow)) { + /*if(!slideshow_is_one_page(model->slideshow)) { furi_timer_start(instance->timer, DESKTOP_SLIDESHOW_POWEROFF_LONG); - } + }*/ } } view_commit_model(instance->view, update_view); diff --git a/applications/picopass/picopass_worker.c b/applications/picopass/picopass_worker.c index 88df8d45b..560548a18 100644 --- a/applications/picopass/picopass_worker.c +++ b/applications/picopass/picopass_worker.c @@ -105,7 +105,7 @@ ReturnCode picopass_detect_card(int timeout) { err = rfalPicoPassPollerCheckPresence(); if(err != ERR_RF_COLLISION) { - FURI_LOG_E(TAG, "rfalPicoPassPollerCheckPresence error %d", err); + //FURI_LOG_E(TAG, "rfalPicoPassPollerCheckPresence error %d", err); return err; } diff --git a/applications/unirfremix/application.fam b/applications/unirfremix/application.fam index dd3a85fe2..fd3553947 100644 --- a/applications/unirfremix/application.fam +++ b/applications/unirfremix/application.fam @@ -9,6 +9,6 @@ App( "dialogs", ], icon="A_UniRFRemix_14", - stack_size=2 * 1024, + stack_size=4 * 1024, order=11, ) diff --git a/assets/slideshow/update_default/frame_00.png b/assets/slideshow/update_default/frame_00.png index 385fbbe061539ecd682922a07996d5b5ad23bfd9..bf70b363eb9c4d45dcac884925197841f3fb102f 100644 GIT binary patch literal 2958 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 Date: Thu, 25 Aug 2022 00:41:59 +1000 Subject: [PATCH 2/3] LFRFID RC fixes (#1652) * lfrid: fix write validation * lfrid app: restore key data after write --- applications/lfrfid/scene/lfrfid_app_scene_write.cpp | 9 +++++++++ lib/lfrfid/lfrfid_worker_modes.c | 12 ++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/applications/lfrfid/scene/lfrfid_app_scene_write.cpp b/applications/lfrfid/scene/lfrfid_app_scene_write.cpp index 8e04d8e8d..39e0630e7 100644 --- a/applications/lfrfid/scene/lfrfid_app_scene_write.cpp +++ b/applications/lfrfid/scene/lfrfid_app_scene_write.cpp @@ -35,6 +35,11 @@ void LfRfidAppSceneWrite::on_enter(LfRfidApp* app, bool /* need_restore */) { popup->set_icon(0, 3, &I_RFIDDolphinSend_97x61); app->view_controller.switch_to(); + + size_t size = protocol_dict_get_data_size(app->dict, app->protocol_id); + app->old_key_data = (uint8_t*)malloc(size); + protocol_dict_get_data(app->dict, app->protocol_id, app->old_key_data, size); + lfrfid_worker_start_thread(app->lfworker); lfrfid_worker_write_start( app->lfworker, (LFRFIDProtocol)app->protocol_id, lfrfid_write_callback, app); @@ -76,4 +81,8 @@ void LfRfidAppSceneWrite::on_exit(LfRfidApp* app) { app->view_controller.get()->clean(); lfrfid_worker_stop(app->lfworker); lfrfid_worker_stop_thread(app->lfworker); + + size_t size = protocol_dict_get_data_size(app->dict, app->protocol_id); + protocol_dict_set_data(app->dict, app->protocol_id, app->old_key_data, size); + free(app->old_key_data); } diff --git a/lib/lfrfid/lfrfid_worker_modes.c b/lib/lfrfid/lfrfid_worker_modes.c index f41a7194a..33683589c 100644 --- a/lib/lfrfid/lfrfid_worker_modes.c +++ b/lib/lfrfid/lfrfid_worker_modes.c @@ -522,9 +522,17 @@ static void lfrfid_worker_mode_write_process(LFRFIDWorker* worker) { &read_result); if(state == LFRFIDWorkerReadOK) { - protocol_dict_get_data(worker->protocols, protocol, read_data, data_size); + bool read_success = false; - if(memcmp(read_data, verify_data, data_size) == 0) { + if(read_result == protocol) { + protocol_dict_get_data(worker->protocols, protocol, read_data, data_size); + + if(memcmp(read_data, verify_data, data_size) == 0) { + read_success = true; + } + } + + if(read_success) { if(worker->write_cb) { worker->write_cb(LFRFIDWorkerWriteOK, worker->cb_ctx); } From ce7b943793926ba7cffa914942f91c8791396595 Mon Sep 17 00:00:00 2001 From: Skorpionm <85568270+Skorpionm@users.noreply.github.com> Date: Wed, 24 Aug 2022 19:14:27 +0400 Subject: [PATCH 3/3] [FL-2764] SubGhz: fix CAME, Chamberlain potocol (#1650) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * SubGhz: fix guard time CAME potocol * SubGhz: fix file upload Chamberlain * Github: fix spelling Co-authored-by: あく --- .github/workflows/amap_analyse.yml | 2 +- .github/workflows/build.yml | 2 +- lib/subghz/protocols/came.c | 11 +++++++---- lib/subghz/protocols/chamberlain_code.c | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/amap_analyse.yml b/.github/workflows/amap_analyse.yml index 3443771dd..a87857e74 100644 --- a/.github/workflows/amap_analyse.yml +++ b/.github/workflows/amap_analyse.yml @@ -86,7 +86,7 @@ jobs: ${{ secrets.RSYNC_DEPLOY_USER }}@${{ secrets.RSYNC_DEPLOY_HOST }}:"${{ secrets.RSYNC_DEPLOY_BASE_PATH }}${{steps.names.outputs.branch-name}}/" artifacts/; rm ./deploy_key; - - name: 'Make .map file analyse' + - name: 'Make .map file analyze' run: | cd artifacts/ /Applications/amap/Contents/MacOS/amap -f flipper-z-f7-firmware-${{steps.names.outputs.suffix}}.elf.map diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7eeb5c22b..3fe733caa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -93,7 +93,7 @@ jobs: rm -rf artifacts/${BUNDLE_NAME} done - - name: "Check for uncommited changes" + - name: "Check for uncommitted changes" run: | git diff --exit-code diff --git a/lib/subghz/protocols/came.c b/lib/subghz/protocols/came.c index 37048017e..726461d4d 100644 --- a/lib/subghz/protocols/came.c +++ b/lib/subghz/protocols/came.c @@ -112,8 +112,11 @@ static bool subghz_protocol_encoder_came_get_upload(SubGhzProtocolEncoderCame* i instance->encoder.size_upload = size_upload; } //Send header - instance->encoder.upload[index++] = - level_duration_make(false, (uint32_t)subghz_protocol_came_const.te_short * 36); + instance->encoder.upload[index++] = level_duration_make( + false, + ((instance->generic.data_count_bit == subghz_protocol_came_const.min_count_bit_for_found) ? + (uint32_t)subghz_protocol_came_const.te_short * 39 : + (uint32_t)subghz_protocol_came_const.te_short * 76)); //Send start bit instance->encoder.upload[index++] = level_duration_make(true, (uint32_t)subghz_protocol_came_const.te_short); @@ -213,8 +216,8 @@ void subghz_protocol_decoder_came_feed(void* context, bool level, uint32_t durat SubGhzProtocolDecoderCame* instance = context; switch(instance->decoder.parser_step) { case CameDecoderStepReset: - if((!level) && (DURATION_DIFF(duration, subghz_protocol_came_const.te_short * 51) < - subghz_protocol_came_const.te_delta * 51)) { //Need protocol 36 te_short + if((!level) && (DURATION_DIFF(duration, subghz_protocol_came_const.te_short * 56) < + subghz_protocol_came_const.te_delta * 47)) { //Found header CAME instance->decoder.parser_step = CameDecoderStepFoundStartBit; } diff --git a/lib/subghz/protocols/chamberlain_code.c b/lib/subghz/protocols/chamberlain_code.c index 6c99d8451..51f2bcd32 100644 --- a/lib/subghz/protocols/chamberlain_code.c +++ b/lib/subghz/protocols/chamberlain_code.c @@ -215,7 +215,7 @@ bool subghz_protocol_encoder_chamb_code_deserialize(void* context, FlipperFormat FURI_LOG_E(TAG, "Deserialize error"); break; } - if(instance->generic.data_count_bit < + if(instance->generic.data_count_bit > subghz_protocol_chamb_code_const.min_count_bit_for_found) { FURI_LOG_E(TAG, "Wrong number of bits in key"); break; @@ -441,7 +441,7 @@ bool subghz_protocol_decoder_chamb_code_deserialize(void* context, FlipperFormat if(!subghz_block_generic_deserialize(&instance->generic, flipper_format)) { break; } - if(instance->generic.data_count_bit < + if(instance->generic.data_count_bit > subghz_protocol_chamb_code_const.min_count_bit_for_found) { FURI_LOG_E(TAG, "Wrong number of bits in key"); break;