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 May 28, 2023
2 parents 30f6da3 + 0d1fea9 commit ef5f6e2
Show file tree
Hide file tree
Showing 239 changed files with 20,123 additions and 5,670 deletions.
74 changes: 36 additions & 38 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,40 @@
### New changes
* **Warning! After installing, Desktop settings (Favoutite apps, PIN Code, AutoLock time..) will be resetted to default due to OFW changes, Please set your PIN code, Favourite apps again in Settings->Desktop**
* New way of changing device name -> **Now can be changed in Settings->Desktop** (by @xMasterX and @Willy-JL)
* Plugins: BadBT plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/main/bad_kb)
* Plugins: WiFi Marauder -> Added sniff pmkid on selected aps from 0.10.4 update (by @clipboard1)
* Plugins: SubGHz Bruteforcer -> Increase delay just a little bit to fix some cases when receiver will not get codes and decrease manual transmit delay
* Plugins: UART Terminal -> Fix crashes on plugin load with RX connected
* NFC: Mifare mini with SAK 0x89 support
* SubGHz: **CAME Atomo - Add manually support and custom buttons support**
* SubGHz: Fix crashes when deleting signals using right arrow button in `Read` mode
* SubGHz: Restore Rx indication after deletion after Memory is FULL (by @wosk | PR #464)
* SubGHz: **App refactoring** (OFW code ported + our code was refactored/cleaned up too) (by @gid9798 and @xMasterX | PR #461)
* SubGHz: Using scene manager functions in DecodeRAW (by @gid9798 | PR #462)
* SubGHz: Protocols and custom buttons refactoring (by @gid9798 | PR #465)
* SubGHz: Move `counter increase` setting out of debug, change max value
* GUI: Submenu locked elements (by @Willy-JL and @giacomoferretti)
* GUI: Text Input improvements, added cursor and ability to set minimal length (by @Willy-JL)
* BT API: Functions that allow to change bt mac address and device broadcasted name (by @Willy-JL and XFW contributors)
* Infrared: `External output` move out of debug and add power option for external modules
* Infrared: Updated universal remote assets (by @amec0e | PR #474)
* Extra pack: Some app fixes
* FBT: Fix vscode example config for debug builds - please run `./fbt vscode_dist` again if you had issues with debug builds size
* OFW PR 2316: NFC V support (by @g3gg0 & @nvx)
* OFW PR 2669: nfc: Fix MFUL tearing flags read (by @GMMan)
* OFW PR 2666: BadUSB: Add fr-FR-mac key layout (by @FelixLgr)
* OFW: api: added lib/nfc/protocols/nfc_util.h
* OFW: fix PIN retry count reset on reboot
* OFW: fbt: allow strings for fap_version field in app manifests
* OFW: Rpc: add desktop service. Desktop: refactor locking routine. **Now PIN lock is actually cannot be bypassed by reboot!** / **Desktop settings will be reset, please set your PIN and favourite apps again!**
* OFW: Part 2 of hooking C2 IPC
* OFW: ble: attempt to handle hardfaulted c2
* OFW: Add Mfkey32 application
* OFW: Added DigitalSequence and PulseReader
* OFW: Debug: revert cortex debug to lxml and drop DWT **(reapply your VSCode launch.json from example folder)**
* OFW: furi_crash: added C2 status; added fw-version gdb command
* OFW: Removed STM32CubeWB module
* OFW: API version in UI
* OFW: ufbt: deploying sample ufbt automation for new apps; added `source "ufbt -s env"` for toolchain access
* OFW: Fix storage.py exist_dir logic
* !!! **Warning! After installing, Desktop settings (Favoutite apps, PIN Code, AutoLock time..) will be resetted to default due to settings changes, Please set your PIN code, Favourite apps again in Settings->Desktop** !!!
* If you have copied any apps manually into `apps` folder - remove `apps` folder or that specific apps you copied on your microSD before installing this release to avoid issues due to OFW API version update! If you using regular builds or extra pack builds (e) without your manually added apps, all included apps will be installed automatically, no extra actions needed!
-----
* Desktop: **Show clock on main screen** (Enable in Settings->Desktop->Show Clock) (by @gid9798 | PR #484)
* SubGHz Remote: New plugin - Configurator (Remote Maker) - Now you can create and edit map files on flipper! (by @gid9798 | PR #487)
* SubGHz Remote: Full refactoring, app was re-made from scratch (by @gid9798)
* Archive: Fix rename, show error message to user
* API: Cleanup, mini refactoring of some apps (+6k of free flash space)
* LFRFID: Debug: Allow PSK RAW emulation in gui
* SubGHz: Security+ 2.0 -> add extra custom button `0x78` - Fixes issue #469
* SubGHz: Various fixes (by @gid9798)
* SubGHz: Fix counter settings in debug
* SubGHz: Move dangerous_settings check (by @gid9798 | PR #475)
* Misc: Move NFC plugins into NFC folder
* Misc: Name changer code moved to proper place, load after system startup + extra checks
* Plugins: Merge tiktok and ytshorts remote into one (by @Willy-JL)
* Plugins: NMEA GPS UART - stability fix
* Plugins: Port XFW keyboard with extra symbols to WiFi Marauder instead of using UART Term keyboard (thanks to @Willy-JL)
* Plugins: Moved from extra pack to main FW: Mifare Nested [(by AloneLiberty)](https://github.com/AloneLiberty/FlipperNested) - Works with PC and python app `FlipperNested`
* Plugins: Update TOTP (Authenticator) [(by akopachov)](https://github.com/akopachov/flipper-zero_authenticator) (+ Add option to set custom fonts)
* Plugins: Update NMEA GPS UART [(by ezod)](https://github.com/ezod/flipperzero-gps) (GLL support)
* Plugins: Update WiFi Marauder [(by 0xchocolate)](https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion)
* OFW PR 2680: RFID - Add support for Nexkey/Nexwatch (by @mauimauer)
* OFW: nfc: Mifare Ultralight C detection
* OFW: api: added toolbox/api_lock.h
* OFW: NFC: Add support for Gen4 "ultimate card" in Magic app
* OFW: desktop: Refactor favorites settings and allow app browser in selection
* OFW: Infrared: respect carrier frequency and duty cycle settings -> **Breaking API change, API version was changed from 26.x to 27.x**
* OFW: Desktop,Rpc: desktop status subscription
* OFW: Storage, common_rename: check that old path is exists
* OFW: Services: remove deallocator for persistent services
* OFW: Storage: common_rename is now POSIX compliant
* OFW: Removed user-specific data from tar artifacts
* OFW: fbt: Fix tar uid overflow when packaging
* OFW: fbt: Use union for old py (Fix builds if using older python versions)
* OFW: USB HID report timeout

#### [🎲 Download latest extra apps pack](https://github.com/xMasterX/all-the-plugins/archive/refs/heads/main.zip)

Expand Down
8 changes: 6 additions & 2 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Our Discord Community:
* Universal remote for Projectors, Fans, A/Cs and Audio(soundbars, etc.)
* Customizable Flipper name **Update! Now can be changed in Settings->Desktop** (by @xMasterX and @Willy-JL)
* Text Input UI element -> Cursor feature (by @Willy-JL)
- **BadBT** plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/main/bad_kb) - (See in Applications->Tools) - (aka BadUSB via Bluetooth)
- BadUSB -> Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout)
- Sub-GHz -> External CC1101 module support - [(by quen0n)](https://github.com/DarkFlippers/unleashed-firmware/pull/307)
- Sub-GHz -> `Add manually` menu extended with new protocols
Expand Down Expand Up @@ -145,7 +146,7 @@ You can support us by using links or addresses below:
- ESP32: WiFi Marauder companion plugin [(by 0xchocolate)](https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion) - Saving .pcap on flipper microSD [by tcpassos](https://github.com/tcpassos/flipperzero-firmware-with-wifi-marauder-companion) -> Only with custom marauder build (It is necessary to uncomment "#define WRITE_PACKETS_SERIAL" in configs.h (in marauder fw) and compile the firmware for the wifi board.) Or download precompiled build -> [Download esp32_marauder_ver_flipper_sd_serial.bin](https://github.com/justcallmekoko/ESP32Marauder/releases/latest)
- NRF24: Sniffer & MouseJacker (with changes) [(by mothball187)](https://github.com/mothball187/flipperzero-nrf24/tree/main/mousejacker)
- Simple Clock (timer by GMMan) [(original by CompaqDisc)](https://gist.github.com/CompaqDisc/4e329c501bd03c1e801849b81f48ea61)
- **Sub-GHz Remote** (UniversalRF Remix) [(by @darmiel & @xMasterX)](https://github.com/darmiel/flipper-playlist/tree/feat/unirf-protocols) (original by @ESurge)
- **Sub-GHz Remote** [(by @gid9798)](https://github.com/gid9798)
- Spectrum Analyzer (with changes) [(by jolcese)](https://github.com/jolcese/flipperzero-firmware/tree/spectrum/applications/spectrum_analyzer) - [Ultra Narrow mode & scan channels non-consecutively](https://github.com/theY4Kman/flipperzero-firmware/commits?author=theY4Kman)
- Metronome [(by panki27)](https://github.com/panki27/Metronome)
- DTMF Dolphin [(by litui)](https://github.com/litui/dtmf_dolphin)
Expand All @@ -164,7 +165,8 @@ You can support us by using links or addresses below:
- **ProtoView** [(by antirez)](https://github.com/antirez/protoview)
- **SWD Probe** [(by g3gg0)](https://github.com/g3gg0/flipper-swd_probe)
- IR Scope [(by kallanreed)](https://github.com/DarkFlippers/unleashed-firmware/pull/407)
- BadBT plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/main/bad_kb)
- **BadBT** plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/main/bad_kb) (See in Applications->Tools) - (aka BadUSB via Bluetooth)
- **Mifare Nested** [(by AloneLiberty)](https://github.com/AloneLiberty/FlipperNested) - Works with PC and python app `FlipperNested`

Games:
- DOOM (fixed) [(by p4nic4ttack)](https://github.com/p4nic4ttack/doom-flipper-zero/)
Expand Down Expand Up @@ -193,6 +195,8 @@ Games:

## [- How to change Flipper name](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/CustomFlipperName.md)

## [- How to use Mifare Nested plugin to recover keys](https://github.com/AloneLiberty/FlipperNested#how-to-use-it)

### **Sub-GHz**

## [- Transmission is blocked? - How to extend Sub-GHz frequency range](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/DangerousSettings.md)
Expand Down
2 changes: 1 addition & 1 deletion applications/external/doom/display.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ void drawVLine(uint8_t x, int8_t start_y, int8_t end_y, uint8_t intensity, Canva

void setupDisplay(Canvas* canvas) {
memset(zbuffer, 0xff, 128);
display_buf = (uint8_t*)canvas_get_buffer(canvas);
display_buf = (uint8_t*)canvas->fb.tile_buf_ptr;
//display_buf = u8g2_GetBufferPtr(&canvas->fb);
}

Expand Down
24 changes: 8 additions & 16 deletions applications/external/esp8266_deauth/esp8266_deauth.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
//#include <notification/notification_messages.h>
//#include <stdlib.h>

#include <u8g2.h>

#include "FlipperZeroWiFiDeauthModuleDefines.h"

#define DEAUTH_APP_DEBUG 0
Expand Down Expand Up @@ -154,10 +152,8 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
const char* strInitializing = "Something wrong";
canvas_draw_str(
canvas,
(u8g2_GetDisplayWidth(&canvas->fb) / 2) -
(canvas_string_width(canvas, strInitializing) / 2),
(u8g2_GetDisplayHeight(&canvas->fb) /
2) /* - (u8g2_GetMaxCharHeight(&canvas->fb) / 2)*/,
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) /* - (canvas_current_font_height(canvas) / 2)*/,
strInitializing);
} break;
case WaitingForModule:
Expand All @@ -170,10 +166,8 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
const char* strInitializing = "Attach WiFi Deauther module";
canvas_draw_str(
canvas,
(u8g2_GetDisplayWidth(&canvas->fb) / 2) -
(canvas_string_width(canvas, strInitializing) / 2),
(u8g2_GetDisplayHeight(&canvas->fb) /
2) /* - (u8g2_GetMaxCharHeight(&canvas->fb) / 2)*/,
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) /* - (canvas_current_font_height(canvas) / 2)*/,
strInitializing);
}
#endif
Expand All @@ -188,18 +182,16 @@ static void esp8266_deauth_module_render_callback(Canvas* const canvas, void* ct
const char* strInitializing = "Initializing...";
canvas_draw_str(
canvas,
(u8g2_GetDisplayWidth(&canvas->fb) / 2) -
(canvas_string_width(canvas, strInitializing) / 2),
(u8g2_GetDisplayHeight(&canvas->fb) / 2) -
(u8g2_GetMaxCharHeight(&canvas->fb) / 2),
(128 / 2) - (canvas_string_width(canvas, strInitializing) / 2),
(64 / 2) - (canvas_current_font_height(canvas) / 2),
strInitializing);
}
}
#endif // ENABLE_MODULE_POWER
break;
case ModuleActive: {
uint8_t* buffer = canvas_get_buffer(canvas);
app->m_canvasSize = canvas_get_buffer_size(canvas);
uint8_t* buffer = canvas->fb.tile_buf_ptr;
app->m_canvasSize = gui_get_framebuffer_size(app->m_gui);
memcpy(buffer, app->m_backBuffer, app->m_canvasSize);
} break;
default:
Expand Down
48 changes: 40 additions & 8 deletions applications/external/gps_nmea_uart/gps_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,19 @@ static void gps_uart_parse_nmea(GpsUart* gps_uart, char* line) {
}
} break;

case MINMEA_SENTENCE_GLL: {
struct minmea_sentence_gll frame;
if(minmea_parse_gll(&frame, line)) {
gps_uart->status.latitude = minmea_tocoord(&frame.latitude);
gps_uart->status.longitude = minmea_tocoord(&frame.longitude);
gps_uart->status.time_hours = frame.time.hours;
gps_uart->status.time_minutes = frame.time.minutes;
gps_uart->status.time_seconds = frame.time.seconds;

notification_message_block(gps_uart->notifications, &sequence_blink_red_10);
}
} break;

default:
break;
}
Expand All @@ -74,11 +87,8 @@ static void gps_uart_parse_nmea(GpsUart* gps_uart, char* line) {
static int32_t gps_uart_worker(void* context) {
GpsUart* gps_uart = (GpsUart*)context;

gps_uart->rx_stream = furi_stream_buffer_alloc(RX_BUF_SIZE * 5, 1);
size_t rx_offset = 0;

gps_uart_serial_init(gps_uart);

while(1) {
uint32_t events =
furi_thread_flags_wait(WORKER_ALL_RX_EVENTS, FuriFlagWaitAny, FuriWaitForever);
Expand All @@ -91,35 +101,53 @@ static int32_t gps_uart_worker(void* context) {
if(events & WorkerEvtRxDone) {
size_t len = 0;
do {
// receive serial bytes into rx_buf, starting at rx_offset from the start of the buffer
// the maximum we can receive is RX_BUF_SIZE - 1 - rx_offset
len = furi_stream_buffer_receive(
gps_uart->rx_stream,
gps_uart->rx_buf + rx_offset,
RX_BUF_SIZE - 1 - rx_offset,
0);
if(len > 0) {
// increase rx_offset by the number of bytes received, and null-terminate rx_buf
rx_offset += len;
gps_uart->rx_buf[rx_offset] = '\0';

// look for strings ending in newlines, starting at the start of rx_buf
char* line_current = (char*)gps_uart->rx_buf;
while(1) {
// skip null characters
while(*line_current == '\0' &&
line_current < (char*)gps_uart->rx_buf + rx_offset - 1) {
line_current++;
}

// find the next newline
char* newline = strchr(line_current, '\n');
if(newline) {
if(newline) // newline found
{
// put a null terminator in place of the newline, to delimit the line string
*newline = '\0';

// attempt to parse the line as a NMEA sentence
gps_uart_parse_nmea(gps_uart, line_current);

// move the cursor to the character after the newline
line_current = newline + 1;
} else {
if(line_current > (char*)gps_uart->rx_buf) {
} else // no more newlines found
{
if(line_current >
(char*)gps_uart->rx_buf) // at least one line was found
{
// clear parsed lines, and move any leftover bytes to the start of rx_buf
rx_offset = 0;
while(*line_current) {
while(
*line_current) // stop when the original rx_offset terminator is reached
{
gps_uart->rx_buf[rx_offset++] = *(line_current++);
}
}
break;
break; // go back to receiving bytes from the serial stream
}
}
}
Expand Down Expand Up @@ -148,13 +176,17 @@ void gps_uart_init_thread(GpsUart* gps_uart) {
gps_uart->status.time_minutes = 0;
gps_uart->status.time_seconds = 0;

gps_uart->rx_stream = furi_stream_buffer_alloc(RX_BUF_SIZE * 5, 1);

gps_uart->thread = furi_thread_alloc();
furi_thread_set_name(gps_uart->thread, "GpsUartWorker");
furi_thread_set_stack_size(gps_uart->thread, 1024);
furi_thread_set_context(gps_uart->thread, gps_uart);
furi_thread_set_callback(gps_uart->thread, gps_uart_worker);

furi_thread_start(gps_uart->thread);

gps_uart_serial_init(gps_uart);
}

void gps_uart_deinit_thread(GpsUart* gps_uart) {
Expand Down
Loading

0 comments on commit ef5f6e2

Please sign in to comment.