Merge branch 'UNLEASHED' into 420

This commit is contained in:
RogueMaster
2022-11-23 20:59:05 -05:00
12 changed files with 94 additions and 140 deletions

View File

@@ -98,17 +98,6 @@ steps:
from_secret: dep_target_noanim
source: flipper-z-f7-update-${DRONE_TAG}n.tgz
- name: "Trigger update server reindex"
image: hfdj/fztools
pull: never
environment:
UPD_KEY:
from_secret: git_update_serv_token
UPD_URL:
from_secret: git_update_server_url
commands:
- curl -X POST -F 'key='$UPD_KEY'' $UPD_URL
- name: "Do Github release"
image: ddplugins/github-release
pull: never
@@ -129,6 +118,17 @@ steps:
- sha1
- crc32
- name: "Trigger update server reindex"
image: hfdj/fztools
pull: never
environment:
UPD_KEY:
from_secret: git_update_serv_token
UPD_URL:
from_secret: git_update_server_url
commands:
- curl -X POST -F 'key='$UPD_KEY'' $UPD_URL
- name: "Send files to telegram"
image: appleboy/drone-telegram
settings:
@@ -149,6 +149,9 @@ steps:
[-How to install firmware-](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)
[-Download latest extra apps pack-](https://download-directory.github.io/?url=https://github.com/xMasterX/unleashed-extra-pack/tree/main/apps)
[-Version without custom animations - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-${DRONE_TAG}n.tgz&channel=release-cfw&version=${DRONE_TAG}n)
@@ -175,14 +178,15 @@ steps:
[-How to install firmware-](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)
[-Download latest extra apps pack-](https://download-directory.github.io/?url=https://github.com/xMasterX/unleashed-extra-pack/tree/main/apps)
[-Version without custom animations - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-${DRONE_TAG}n.tgz&channel=release-cfw&version=${DRONE_TAG}n)
[-Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/${DRONE_TAG}/flipper-z-f7-update-${DRONE_TAG}.tgz&channel=release-cfw&version=${DRONE_TAG})"
trigger:
branch:
- release
event:
- tag

View File

@@ -1,49 +1,30 @@
### New changes
* API now 99% compatible with official firmware, that means all apps built on OFW can be used on unleashed!
* Also extra apps pack was updated, download latest by using link below
* Archive: Show loading popup on delete
* Docs -> PR: Fix link to "TOTP (Authenticator) config description" (by @pbek | PR #157)
* Reorder main menu - Applications now first item, clock moved 2 items up
* API: Add `value_index` to API symbols
* API: Furi Region Mocks, fix protocol dict funcs was disabled in API
* New animation L3_FlipperMustache_128x64 by @Svaarich
* Fix FlipperCity animation by @Svaarich
* CI/CD: Builds without custom animations now included in releases
* SubGHz: Fix magellan display issue
* SubGHz: Fix wrong error message in history
* SubGHz: Add frequencies 434.075, 434.390
* SubGHz: Frequency analyzer: Add counter, GUI fixes, allow Ok button - When signal is present (when frequency window shows black background)
* SubGHz: Frequency analyzer: move -+ in freq analyzer, swap up & down button
* SubGHz Remote: Cleanup code in unirf, fix issue #153
* Plugins: Remove `srand` calls
* Plugins: Fix DHT Monitor icon
* Plugins: RFID Fuzzer - Fix random crashes and improve stability
* Plugins: RFID Fuzzer - allow holding left right to change delay faster (hold TD button to add +10 or -10 to time delay)
* Plugins: Morse code cleanup text by pressing back
* Plugins: TOTP Update - "BadUSB" type key into pc mode [(by akopachov)](https://github.com/akopachov/flipper-zero_authenticator)
* Plugins: Update i2c Tools [(by NaejEL)](https://github.com/NaejEL/flipperzero-i2ctools)
* Plugins -> PR: Barcode generator: refactoring, ux improvements, implement EAN-8. (by @msvsergey | PR #154)
* Plugins -> PR: Fix HC-SR04 plugin naming (by @krolchonok | PR #161)
* Plugins: Added BH1750 - Lightmeter [(by oleksiikutuzov)](https://github.com/oleksiikutuzov/flipperzero-lightmeter)
* Plugins: Added iButton Fuzzer [(by xMasterX)](https://github.com/xMasterX/ibutton-fuzzer)
* OFW: BadUSB and Archive fixes
* OFW: iButton: Fix header "Saved!" message stays on other screens + proper popups reset
* OFW: Bug fixes and improvements: Furi, Input, CLI
* OFW: SubGhz: properly handle storage loss
* OFW: NFC - Force card types in extra actions
* OFW: (docs): bad path for furi core
* OFW: RPC: increase stack size, fix stack overflow
* OFW: fbt: 'target' field for apps; lib debugging support
* OFW: NFC: fix crash on MFC read
* OFW: Furi: show thread allocation balance for child threads
* OFW: Add Acurite 609TXC protocol to weather station
* OFW: DAP-Link: show error if usb is locked
* OFW: fbt: compile_db fixes
* OFW: Infrared: add Kaseikyo IR protocol
* OFW: WS: fix show negative temperature
* OFW: fbt: fix for launch_app
* OFW: Code cleanup: srand, PVS warnings
* OFW: fbt: fixes for ufbt pt3
* Plugins: SubGHz Bruteforcer -> Add support for Ansonic 12bit protocol (FM238)
* Plugins: Fix DTMF Dolphin -> Add forgotten scene and menu item
* Plugins: Update DTMF Dolphin [(by litui)](https://github.com/litui/dtmf_dolphin)
* Plugins: Update TOTP [(by akopachov)](https://github.com/akopachov/flipper-zero_authenticator)
* Plugins: iButton Fuzzer and RFID Fuzzer improvements
* Plugins: i2c tools fix name display
* Plugins: Add 3 new plugins BlackJack, Solitaire [(by teeebor)](https://github.com/teeebor/flipper_games) and HEX Viewer [(by QtRoS)](https://github.com/QtRoS/flipperzero-firmware)
* Plugins -> PR: Wifi marauder BT menus option (by @rf-bandit | PR #164)
* Plugins -> PR: Update i2c tools (New UI) (by @NaejEL | PR #171)
* Plugins -> PR: Fix htu21d falsely reading temp as humidity (by @GottZ | PR #175)
* SubGHz -> PR: GUI Fix - Allow setting RSSI trigger to beggining (by @TQMatvey | PR #180)
* SubGHz: Remove not widely used frequency from hopper
* SubGHz: Fix starline encoder
* SubGHz: Frequency Analyzer -> Save last trigger level
* SubGHz: Speedup subghz launch from favourites
* SubGHz: Add new freqs and modulation to user config
* Infrared: Update universal remote assets (by @Amec0e)
* CI/CD: Improvements, dev builds (can be found in this telegram channel -> https://t.me/kotnehleb)
* Power -> PR: Show battery percentile while charging (by @TQMatvey | PR #178)
* Docs -> PR: Some updates (by @lucemans | PR #169 and #170)
* CLI -> PR: Update cli_commands.c To add `src` / `source` command for people exploring cli (by @PharoahCoder | PR #176)
* OFW: Fix U2F HID vulnerability
* OFW: Core: thread allocation shortcut
* OFW: WS: add protocol GT-WT02
* OFW: SubGhz: add protocol "Ansonic"
* OFW: SubGhz: add protocol Nice_Flo 20bit
#### [🎲 Download latest extra apps pack](https://download-directory.github.io/?url=https://github.com/xMasterX/unleashed-extra-pack/tree/main/apps)

View File

@@ -5,6 +5,8 @@
#define TAG "SubghzFrequencyAnalyzerWorker"
#define SUBGHZ_FREQUENCY_ANALYZER_THRESHOLD -97.0f
static const uint8_t subghz_preset_ook_58khz[][2] = {
{CC1101_MDMCFG4, 0b11110111}, // Rx BW filter is 58.035714kHz
/* End */
@@ -70,7 +72,7 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
.frequency_coarse = 0, .rssi_coarse = 0, .frequency_fine = 0, .rssi_fine = 0};
float rssi = 0;
uint32_t frequency = 0;
float rssi_temp = -127.0f;
float rssi_temp = 0;
uint32_t frequency_temp = 0;
CC1101Status status;
@@ -195,7 +197,7 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
TAG, "=:%lu:%f", frequency_rssi.frequency_fine, (double)frequency_rssi.rssi_fine);
instance->sample_hold_counter = 20;
rssi_temp = (rssi_temp + frequency_rssi.rssi_fine) / 2;
rssi_temp = frequency_rssi.rssi_fine;
frequency_temp = frequency_rssi.frequency_fine;
if(instance->filVal) {
@@ -206,7 +208,10 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
// Deliver callback
if(instance->pair_callback) {
instance->pair_callback(
instance->context, frequency_rssi.frequency_fine, rssi_temp, true);
instance->context,
frequency_rssi.frequency_fine,
frequency_rssi.rssi_fine,
true);
}
} else if( // Deliver results coarse
(frequency_rssi.rssi_coarse > instance->trigger_level) &&
@@ -218,7 +223,7 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
(double)frequency_rssi.rssi_coarse);
instance->sample_hold_counter = 20;
rssi_temp = (rssi_temp + frequency_rssi.rssi_coarse) / 2;
rssi_temp = frequency_rssi.rssi_coarse;
frequency_temp = frequency_rssi.frequency_coarse;
if(instance->filVal) {
frequency_rssi.frequency_coarse =
@@ -228,12 +233,15 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
// Deliver callback
if(instance->pair_callback) {
instance->pair_callback(
instance->context, frequency_rssi.frequency_coarse, rssi_temp, true);
instance->context,
frequency_rssi.frequency_coarse,
frequency_rssi.rssi_coarse,
true);
}
} else {
if(instance->sample_hold_counter > 0) {
instance->sample_hold_counter--;
if(instance->sample_hold_counter == 15) {
if(instance->sample_hold_counter == 18) {
if(instance->pair_callback) {
instance->pair_callback(
instance->context, frequency_temp, rssi_temp, false);
@@ -241,8 +249,8 @@ static int32_t subghz_frequency_analyzer_worker_thread(void* context) {
}
} else {
instance->filVal = 0;
rssi_temp = -127.0f;
instance->pair_callback(instance->context, 0, 0, false);
if(instance->pair_callback)
instance->pair_callback(instance->context, 0, 0, false);
}
}
}
@@ -258,8 +266,12 @@ SubGhzFrequencyAnalyzerWorker* subghz_frequency_analyzer_worker_alloc(void* cont
furi_assert(context);
SubGhzFrequencyAnalyzerWorker* instance = malloc(sizeof(SubGhzFrequencyAnalyzerWorker));
instance->thread = furi_thread_alloc_ex(
"SubGhzFAWorker", 2048, subghz_frequency_analyzer_worker_thread, instance);
instance->thread = furi_thread_alloc();
furi_thread_set_name(instance->thread, "SubGhzFAWorker");
furi_thread_set_stack_size(instance->thread, 2048);
furi_thread_set_context(instance->thread, instance);
furi_thread_set_callback(instance->thread, subghz_frequency_analyzer_worker_thread);
SubGhz* subghz = context;
instance->setting = subghz->setting;
instance->trigger_level = subghz->last_settings->frequency_analyzer_trigger;

View File

@@ -3,8 +3,6 @@
#include <furi_hal.h>
#include "../subghz_i.h"
#define SUBGHZ_FREQUENCY_ANALYZER_THRESHOLD -97.0f
typedef struct SubGhzFrequencyAnalyzerWorker SubGhzFrequencyAnalyzerWorker;
typedef void (*SubGhzFrequencyAnalyzerWorkerPairCallback)(

View File

@@ -169,7 +169,7 @@ void subghz_frequency_analyzer_draw(Canvas* canvas, SubGhzFrequencyAnalyzerModel
// RSSI
canvas_draw_str(canvas, 33, 62, "RSSI");
subghz_frequency_analyzer_draw_rssi(
canvas, model->rssi, model->rssi_last, model->trigger, 57, 58);
canvas, model->rssi, model->rssi_last, model->trigger, 56, 57);
// Last detected frequency
subghz_frequency_analyzer_history_frequency_draw(canvas, model);

View File

@@ -609,7 +609,7 @@ int32_t blackjack_app(void* p) {
processing = localstate->processing;
}
} else {
FURI_LOG_D(APP_NAME, "osMessageQueue: event timeout");
//FURI_LOG_D(APP_NAME, "osMessageQueue: event timeout");
// event timeout
}
view_port_update(view_port);

View File

@@ -81,7 +81,7 @@ void draw_score(Canvas* const canvas, bool top, uint8_t amount) {
void draw_money(Canvas* const canvas, uint32_t score) {
canvas_set_font(canvas, FontSecondary);
char drawChar[10];
char drawChar[11];
uint32_t currAmount = score;
if(currAmount < 1000) {
snprintf(drawChar, sizeof(drawChar), "$%lu", currAmount);

View File

@@ -1,6 +1,6 @@
App(
appid="hex_viewer",
name="Hex Viewer",
name="HEX Viewer",
apptype=FlipperAppType.EXTERNAL,
entry_point="hex_viewer_app",
cdefines=["APP_HEX_VIEWER"],

View File

@@ -6,12 +6,8 @@
#include <gui/elements.h>
#include <dialogs/dialogs.h>
#include <storage/storage.h>
#include <stream/stream.h>
#include <stream/buffered_file_stream.h>
#include <lib/flipper_format/flipper_format.h>
#include <toolbox/stream/file_stream.h>
#define TAG "HexViewer"
@@ -54,7 +50,7 @@ static void render_callback(Canvas* canvas, void* ctx) {
elements_button_right(canvas, "Info");
int ROW_HEIGHT = 12;
int TOP_OFFSET = 10; // 24
int TOP_OFFSET = 10;
int LEFT_OFFSET = 3;
uint32_t line_count = hex_viewer->model->file_size / HEX_VIEWER_BYTES_PER_ROW;
@@ -113,7 +109,7 @@ static void input_callback(InputEvent* input_event, void* ctx) {
}
}
HexViewer* hex_viewer_alloc() {
static HexViewer* hex_viewer_alloc() {
HexViewer* instance = malloc(sizeof(HexViewer));
instance->model = malloc(sizeof(HexViewerModel));
@@ -135,7 +131,7 @@ HexViewer* hex_viewer_alloc() {
return instance;
}
void hex_viewer_free(HexViewer* instance) {
static void hex_viewer_free(HexViewer* instance) {
furi_record_close(RECORD_STORAGE);
gui_remove_view_port(instance->gui, instance->view_port);
@@ -152,44 +148,7 @@ void hex_viewer_free(HexViewer* instance) {
free(instance);
}
// bool hex_viewer_read_file2(HexViewer* hex_viewer, const char* file_path) {
// furi_assert(hex_viewer);
// furi_assert(file_path);
// memset(hex_viewer->model->file_bytes, 0x0, HEX_VIEWER_BUF_SIZE);
// Storage* storage = furi_record_open(RECORD_STORAGE);
// File* file = storage_file_alloc(storage);
// bool isOk = true;
// do {
// if(!storage_file_open(file, file_path, FSAM_READ, FSOM_OPEN_EXISTING)) {
// FURI_LOG_E(TAG, "Unable to open file: %s", file_path);
// isOk = false;
// break;
// };
// hex_viewer->model->file_size = storage_file_size(file);
// uint32_t offset = hex_viewer->model->line * HEX_VIEWER_BYTES_PER_ROW;
// if(!storage_file_seek(file, offset, true)) {
// FURI_LOG_E(TAG, "Unable to seek file: %s", file_path);
// isOk = false;
// break;
// }
// hex_viewer->model->read_bytes =
// storage_file_read(file, hex_viewer->model->file_bytes, HEX_VIEWER_BUF_SIZE);
// } while(false);
// storage_file_free(file);
// furi_record_close(RECORD_STORAGE);
// return isOk;
// }
bool hex_viewer_open_file(HexViewer* hex_viewer, const char* file_path) {
static bool hex_viewer_open_file(HexViewer* hex_viewer, const char* file_path) {
furi_assert(hex_viewer);
furi_assert(file_path);
@@ -210,9 +169,9 @@ bool hex_viewer_open_file(HexViewer* hex_viewer, const char* file_path) {
return isOk;
}
bool hex_viewer_read_file(HexViewer* hex_viewer) {
static bool hex_viewer_read_file(HexViewer* hex_viewer) {
furi_assert(hex_viewer);
// furi_assert(file_path);
furi_assert(hex_viewer->model->stream);
memset(hex_viewer->model->file_bytes, 0x0, HEX_VIEWER_BUF_SIZE);
bool isOk = true;

View File

@@ -540,7 +540,7 @@ int32_t solitaire_app(void* p) {
localstate->input = InputKeyMAX;
}
} else {
FURI_LOG_W(APP_NAME, "osMessageQueue: event timeout");
//FURI_LOG_W(APP_NAME, "osMessageQueue: event timeout");
// event timeout
}
if(hadChange || game_state->state == GameStateAnimate) view_port_update(view_port);

View File

@@ -365,8 +365,6 @@ int32_t esp8266_deauth_app(void* p) {
DEAUTH_APP_LOG_I("Mutex created");
app->m_rx_stream = furi_stream_buffer_alloc(1 * 1024, 1);
//app->m_notification = furi_record_open("notification");
ViewPort* view_port = view_port_alloc();
@@ -379,13 +377,7 @@ int32_t esp8266_deauth_app(void* p) {
//notification_message(app->notification, &sequence_set_only_blue_255);
// Enable uart listener
#if DISABLE_CONSOLE
furi_hal_console_disable();
#endif
furi_hal_uart_set_br(FuriHalUartIdUSART1, FLIPPERZERO_SERIAL_BAUD);
furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, uart_on_irq_cb, app);
DEAUTH_APP_LOG_I("UART Listener created");
app->m_rx_stream = furi_stream_buffer_alloc(1 * 1024, 1);
app->m_worker_thread = furi_thread_alloc();
furi_thread_set_name(app->m_worker_thread, "WiFiDeauthModuleUARTWorker");
@@ -395,6 +387,14 @@ int32_t esp8266_deauth_app(void* p) {
furi_thread_start(app->m_worker_thread);
DEAUTH_APP_LOG_I("UART thread allocated");
// Enable uart listener
#if DISABLE_CONSOLE
furi_hal_console_disable();
#endif
furi_hal_uart_set_br(FuriHalUartIdUSART1, FLIPPERZERO_SERIAL_BAUD);
furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, uart_on_irq_cb, app);
DEAUTH_APP_LOG_I("UART Listener created");
SPluginEvent event;
for(bool processing = true; processing;) {
FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);

View File

@@ -674,8 +674,6 @@ int32_t wifi_scanner_app(void* p) {
WIFI_APP_LOG_I("Mutex created");
app->m_rx_stream = furi_stream_buffer_alloc(1 * 1024, 1);
app->m_notification = furi_record_open("notification");
ViewPort* view_port = view_port_alloc();
@@ -688,13 +686,7 @@ int32_t wifi_scanner_app(void* p) {
//notification_message(app->notification, &sequence_set_only_blue_255);
// Enable uart listener
#if DISABLE_CONSOLE
furi_hal_console_disable();
#endif
furi_hal_uart_set_br(FuriHalUartIdUSART1, FLIPPERZERO_SERIAL_BAUD);
furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, uart_on_irq_cb, app);
WIFI_APP_LOG_I("UART Listener created");
app->m_rx_stream = furi_stream_buffer_alloc(1 * 1024, 1);
app->m_worker_thread = furi_thread_alloc();
furi_thread_set_name(app->m_worker_thread, "WiFiModuleUARTWorker");
@@ -704,6 +696,14 @@ int32_t wifi_scanner_app(void* p) {
furi_thread_start(app->m_worker_thread);
WIFI_APP_LOG_I("UART thread allocated");
// Enable uart listener
#if DISABLE_CONSOLE
furi_hal_console_disable();
#endif
furi_hal_uart_set_br(FuriHalUartIdUSART1, FLIPPERZERO_SERIAL_BAUD);
furi_hal_uart_set_irq_cb(FuriHalUartIdUSART1, uart_on_irq_cb, app);
WIFI_APP_LOG_I("UART Listener created");
// Because we assume that module was on before we launched the app. We need to ensure that module will be in initial state on app start
send_serial_command(ESerialCommand_Restart);