Skip to content

Commit

Permalink
Merge branch 'dev' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
xMasterX committed Dec 10, 2022
2 parents 9188bf0 + f73d286 commit bbe9f88
Show file tree
Hide file tree
Showing 61 changed files with 3,061 additions and 282 deletions.
27 changes: 10 additions & 17 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,11 @@
### New changes
* API: Version was changed due to breaking changes - from 8.x to 10.x - Extra pack was updated, download it by using link below ([- Download latest extra apps pack](https://download-directory.github.io/?url=https://github.com/xMasterX/unleashed-extra-pack/tree/main/apps))
* SubGHz: Improve signals visibility in history
* Infrared: Update universal remote assets **(TV universal remote now works much faster)** (by @Amec0e)
* Plugins: Weather Station -> Improved signal info dashboard, added signal age counter. (PR by @LY2NEO | #197) (Modified and improved by @xMasterX, new icons and UI changes recommendations by @Karator in OFW PR 2087)
* Plugins: Weather Station -> Oregon2 - add support for RTHN129
* Plugins: iButton Fuzzer -> change minimal delay (after @Tobirg successfully verified stability with lower delay)
* Plugins: iButton Fuzzer + RFID Fuzzer -> Attempt to fix crash when exiting from uids from file attack
* OFW: NFC bug fixes **(breaking change, affects API version)**
* OFW: UART echo: fix race conditions causing null pointer dereference
* OFW: File browser base folder **(breaking change, affects API version)**
* OFW: Change NFC emulation screens
* OFW: SubGhz: add RPC error
* OFW: FuriHal, Power, UnitTests: battery charging voltage limit API
* OFW: Fix logical error in storage script
* OFW: VCP session close fix
* OFW: Dolphin: new animation L2_Wake_up_128x64
* OFW: FuriHal: add i2c unit tests
* SubGHz: app launch times improved significantly, also setting_user file no longer overwritten by firmware updates, this update will remove this file (only this version, next ones will not touch it (if you skip this version file will be removed in any case on next update)), be sure to backup if you have custom changes in it!
Now this file is actually should be created by user and will be not removed every update!
* Plugins: Add POCSAG Pager [(by xMasterX & Shmuma)](https://github.com/xMasterX/flipper-pager)
* Misc fixes
* OFW: IR button overflow fix
* OFW: Weather Station: proper event flow for view redraw.
* OFW: Untangle NFC from Unit Tests

#### [🎲 Download latest extra apps pack](https://download-directory.github.io/?url=https://github.com/xMasterX/unleashed-extra-pack/tree/main/apps)

Expand All @@ -24,6 +14,7 @@
[-> Download qFlipper (official link)](https://flipperzero.one/update)

## Please support development of the project
* Boosty: https://boosty.to/mmxdev
* destream (100 EUR min): https://destream.net/live/MMX/donate
* cloudtips (only RU payments accepted): https://pay.cloudtips.ru/p/7b3e9d65
* YooMoney (only RU payments accepted): https://yoomoney.ru/fundraise/XA49mgQLPA0.221209
Expand All @@ -40,6 +31,8 @@

**Recommended option - Web Updater**

What means `n` in - `flipper-z-f7-update-(version)n.tgz` ? - that means this build comes without our custom animations, only official flipper animations

Self-update package (update from microSD) - `flipper-z-f7-update-(version).zip` or download `.tgz` for mobile app / qFlipper


2 changes: 2 additions & 0 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ Also check changelog in releases for latest updates!
- Star Line

## Please support development of the project
* Boosty: https://boosty.to/mmxdev
* destream (100 EUR min): https://destream.net/live/MMX/donate
* cloudtips (only RU payments accepted): https://pay.cloudtips.ru/p/7b3e9d65
* YooMoney (only RU payments accepted): https://yoomoney.ru/fundraise/XA49mgQLPA0.221209
Expand Down Expand Up @@ -109,6 +110,7 @@ Also check changelog in releases for latest updates!
- BH1750 - Lightmeter [(by oleksiikutuzov)](https://github.com/oleksiikutuzov/flipperzero-lightmeter)
- iButton Fuzzer [(by xMasterX)](https://github.com/xMasterX/ibutton-fuzzer)
- HEX Viewer [(by QtRoS)](https://github.com/QtRoS/flipper-zero-hex-viewer)
- POCSAG Pager [(by xMasterX & Shmuma)](https://github.com/xMasterX/flipper-pager)

Games:
- DOOM (fixed) [(by p4nic4ttack)](https://github.com/p4nic4ttack/doom-flipper-zero/)
Expand Down
7 changes: 5 additions & 2 deletions applications/debug/unit_tests/nfc/nfc_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include <lib/nfc/helpers/mf_classic_dict.h>
#include <lib/digital_signal/digital_signal.h>
#include <lib/nfc/nfc_device.h>
#include <applications/main/nfc/helpers/nfc_generators.h>
#include <lib/nfc/helpers/nfc_generators.h>

#include <lib/flipper_format/flipper_format_i.h>
#include <lib/toolbox/stream/file_stream.h>
Expand Down Expand Up @@ -102,7 +102,10 @@ static bool nfc_test_digital_signal_test_encode(

do {
// Read test data
if(!nfc_test_read_signal_from_file(file_name)) break;
if(!nfc_test_read_signal_from_file(file_name)) {
FURI_LOG_E(TAG, "Failed to read signal from file");
break;
}

// Encode signal
FURI_CRITICAL_ENTER();
Expand Down
10 changes: 5 additions & 5 deletions applications/main/infrared/infrared_brute_force.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,6 @@ InfraredBruteForce* infrared_brute_force_alloc() {
return brute_force;
}

void infrared_brute_force_clear_records(InfraredBruteForce* brute_force) {
furi_assert(!brute_force->is_started);
InfraredBruteForceRecordDict_reset(brute_force->records);
}

void infrared_brute_force_free(InfraredBruteForce* brute_force) {
furi_assert(!brute_force->is_started);
InfraredBruteForceRecordDict_clear(brute_force->records);
Expand Down Expand Up @@ -151,3 +146,8 @@ void infrared_brute_force_add_record(
InfraredBruteForceRecordDict_set_at(brute_force->records, key, value);
furi_string_free(key);
}

void infrared_brute_force_reset(InfraredBruteForce* brute_force) {
furi_assert(!brute_force->is_started);
InfraredBruteForceRecordDict_reset(brute_force->records);
}
2 changes: 1 addition & 1 deletion applications/main/infrared/infrared_brute_force.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ bool infrared_brute_force_start(
bool infrared_brute_force_is_started(InfraredBruteForce* brute_force);
void infrared_brute_force_stop(InfraredBruteForce* brute_force);
bool infrared_brute_force_send_next(InfraredBruteForce* brute_force);
void infrared_brute_force_clear_records(InfraredBruteForce* brute_force);
void infrared_brute_force_reset(InfraredBruteForce* brute_force);
void infrared_brute_force_add_record(
InfraredBruteForce* brute_force,
uint32_t index,
Expand Down
2 changes: 1 addition & 1 deletion applications/main/infrared/infrared_cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@ static void
} while(false);

furi_string_free(remote_path);
infrared_brute_force_clear_records(brute_force);
infrared_brute_force_reset(brute_force);
infrared_brute_force_free(brute_force);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,6 @@ void infrared_scene_universal_common_on_exit(void* context) {
Infrared* infrared = context;
ButtonPanel* button_panel = infrared->button_panel;
view_stack_remove_view(infrared->view_stack, button_panel_get_view(button_panel));
infrared_brute_force_clear_records(infrared->brute_force);
infrared_brute_force_reset(infrared->brute_force);
button_panel_reset(button_panel);
}
4 changes: 1 addition & 3 deletions applications/main/nfc/nfc_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <lib/nfc/nfc_device.h>
#include <lib/nfc/helpers/mf_classic_dict.h>
#include <lib/nfc/parsers/nfc_supported_card.h>
#include <lib/nfc/helpers/nfc_generators.h>

#include "views/dict_attack.h"
#include "views/detect_reader.h"
Expand All @@ -50,9 +51,6 @@ typedef enum {
NfcRpcStateEmulated,
} NfcRpcState;

// Forward declaration due to circular dependency
typedef struct NfcGenerator NfcGenerator;

struct Nfc {
NfcWorker* worker;
ViewDispatcher* view_dispatcher;
Expand Down
9 changes: 7 additions & 2 deletions applications/main/nfc/scenes/nfc_scene_generate_info.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "../nfc_i.h"
#include "../helpers/nfc_generators.h"
#include "lib/nfc/helpers/nfc_generators.h"

void nfc_scene_generate_info_dialog_callback(DialogExResult result, void* context) {
Nfc* nfc = context;
Expand Down Expand Up @@ -39,7 +39,12 @@ bool nfc_scene_generate_info_on_event(void* context, SceneManagerEvent event) {

if(event.type == SceneManagerEventTypeCustom) {
if(event.event == DialogExResultRight) {
scene_manager_next_scene(nfc->scene_manager, nfc->generator->next_scene);
// Switch either to NfcSceneMfClassicMenu or NfcSceneMfUltralightMenu
if(nfc->dev->dev_data.protocol == NfcDeviceProtocolMifareClassic) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneMfClassicMenu);
} else if(nfc->dev->dev_data.protocol == NfcDeviceProtocolMifareUl) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneMfUltralightMenu);
}
consumed = true;
}
}
Expand Down
2 changes: 1 addition & 1 deletion applications/main/nfc/scenes/nfc_scene_set_type.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "../nfc_i.h"
#include "../helpers/nfc_generators.h"
#include "lib/nfc/helpers/nfc_generators.h"

enum SubmenuIndex {
SubmenuIndexNFCA4,
Expand Down
53 changes: 48 additions & 5 deletions applications/main/subghz/subghz.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,11 +182,54 @@ SubGhz* subghz_alloc(bool alloc_for_tx_only) {

//init setting
subghz->setting = subghz_setting_alloc();
if(alloc_for_tx_only) {
subghz_setting_load(subghz->setting, EXT_PATH("subghz/assets/setting_user"), false);
} else {
subghz_setting_load(subghz->setting, EXT_PATH("subghz/assets/setting_user"), true);
}

subghz_setting_load(subghz->setting, EXT_PATH("subghz/assets/setting_user"));

// Custom Presets load without using config file

FlipperFormat* temp_fm_preset = flipper_format_string_alloc();
flipper_format_write_string_cstr(
temp_fm_preset,
(const char*)"Custom_preset_data",
(const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 04 11 83 10 67 15 24 18 18 19 16 1D 91 1C 00 1B 07 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00");
flipper_format_rewind(temp_fm_preset);
subghz_setting_load_custom_preset(subghz->setting, (const char*)"FM95", temp_fm_preset);

flipper_format_free(temp_fm_preset);

// #2-FSK 200khz BW / 135kHz Filter/ 15.86Khz Deviation + Ramping
FlipperFormat* temp_fm_preset2 = flipper_format_string_alloc();
flipper_format_write_string_cstr(
temp_fm_preset2,
(const char*)"Custom_preset_data",
(const char*)"02 0D 03 47 08 32 0B 06 15 32 14 00 13 00 12 00 11 32 10 A7 18 18 19 1D 1D 92 1C 00 1B 04 20 FB 22 17 21 B6 00 00 00 12 0E 34 60 C5 C1 C0");
flipper_format_rewind(temp_fm_preset2);
subghz_setting_load_custom_preset(subghz->setting, (const char*)"FM15k", temp_fm_preset2);

flipper_format_free(temp_fm_preset2);

// # HND - FM presets
FlipperFormat* temp_fm_preset3 = flipper_format_string_alloc();
flipper_format_write_string_cstr(
temp_fm_preset3,
(const char*)"Custom_preset_data",
(const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 04 11 36 10 69 15 32 18 18 19 16 1D 91 1C 00 1B 07 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00");
flipper_format_rewind(temp_fm_preset3);
subghz_setting_load_custom_preset(subghz->setting, (const char*)"HND_1", temp_fm_preset3);

flipper_format_free(temp_fm_preset3);

FlipperFormat* temp_fm_preset4 = flipper_format_string_alloc();
flipper_format_write_string_cstr(
temp_fm_preset4,
(const char*)"Custom_preset_data",
(const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 07 11 36 10 E9 15 32 18 18 19 16 1D 92 1C 40 1B 03 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00");
flipper_format_rewind(temp_fm_preset4);
subghz_setting_load_custom_preset(subghz->setting, (const char*)"HND_2", temp_fm_preset4);

flipper_format_free(temp_fm_preset4);

// custom presets loading - end

// Load last used values for Read, Read RAW, etc. or default
if(!alloc_for_tx_only) {
Expand Down
2 changes: 1 addition & 1 deletion applications/main/unirfremix/unirfremix_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -706,7 +706,7 @@ static void input_callback(InputEvent* input_event, void* ctx) {
void unirfremix_subghz_alloc(UniRFRemix* app) {
// load subghz presets
app->setting = subghz_setting_alloc();
subghz_setting_load(app->setting, EXT_PATH("subghz/assets/setting_user"), false);
subghz_setting_load(app->setting, EXT_PATH("subghz/assets/setting_user"));

// load mfcodes
app->environment = subghz_environment_alloc();
Expand Down
13 changes: 13 additions & 0 deletions applications/plugins/pocsag_pager/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
App(
appid="pocsag_pager",
name="POCSAG Pager",
apptype=FlipperAppType.PLUGIN,
entry_point="pocsag_pager_app",
cdefines=["APP_POCSAG_PAGER"],
requires=["gui"],
stack_size=4 * 1024,
order=50,
fap_icon="pocsag_pager_10px.png",
fap_category="Tools",
fap_icon_assets="images",
)
14 changes: 14 additions & 0 deletions applications/plugins/pocsag_pager/helpers/pocsag_pager_event.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#pragma once

typedef enum {
//PCSGCustomEvent
PCSGCustomEventStartId = 100,

PCSGCustomEventSceneSettingLock,

PCSGCustomEventViewReceiverOK,
PCSGCustomEventViewReceiverConfig,
PCSGCustomEventViewReceiverBack,
PCSGCustomEventViewReceiverOffDisplay,
PCSGCustomEventViewReceiverUnlock,
} PCSGCustomEvent;
49 changes: 49 additions & 0 deletions applications/plugins/pocsag_pager/helpers/pocsag_pager_types.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#pragma once

#include <furi.h>
#include <furi_hal.h>

#define PCSG_VERSION_APP "0.1"
#define PCSG_DEVELOPED "@xMasterX & @Shmuma"
#define PCSG_GITHUB "https://github.com/xMasterX/flipper-pager"

#define PCSG_KEY_FILE_VERSION 1
#define PCSG_KEY_FILE_TYPE "Flipper POCSAG Pager Key File"

/** PCSGRxKeyState state */
typedef enum {
PCSGRxKeyStateIDLE,
PCSGRxKeyStateBack,
PCSGRxKeyStateStart,
PCSGRxKeyStateAddKey,
} PCSGRxKeyState;

/** PCSGHopperState state */
typedef enum {
PCSGHopperStateOFF,
PCSGHopperStateRunnig,
PCSGHopperStatePause,
PCSGHopperStateRSSITimeOut,
} PCSGHopperState;

/** PCSGLock */
typedef enum {
PCSGLockOff,
PCSGLockOn,
} PCSGLock;

typedef enum {
POCSAGPagerViewVariableItemList,
POCSAGPagerViewSubmenu,
POCSAGPagerViewReceiver,
POCSAGPagerViewReceiverInfo,
POCSAGPagerViewWidget,
} POCSAGPagerView;

/** POCSAGPagerTxRx state */
typedef enum {
PCSGTxRxStateIDLE,
PCSGTxRxStateRx,
PCSGTxRxStateTx,
PCSGTxRxStateSleep,
} PCSGTxRxState;
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit bbe9f88

Please sign in to comment.