mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-17 20:19:43 -07:00
Merge branch '420' into MoreFAPs
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,11 +12,12 @@
|
||||
- To avoid Application errors and duplicates, delete /ext/apps before doing the RM firmware update
|
||||
- To avoid Animations missing, restore your /ext/dolphin after the RM firmware update
|
||||
- Known Issues: `Chess`
|
||||
- Last Synced/Checked [Unleashed/xMasterX](https://github.com/DarkFlippers/unleashed-firmware), changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2022-11-02 21:57 EST`
|
||||
- Last Synced/Checked [OFW](https://github.com/flipperdevices/flipperzero-firmware), changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2022-11-02 21:57 EST`
|
||||
- Last Synced/Checked [Unleashed/xMasterX](https://github.com/DarkFlippers/unleashed-firmware), changes in [changelog](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/blob/420/CHANGELOG.md): `2022-11-03 01:58 EST`
|
||||
- Last Synced/Checked [OFW](https://github.com/flipperdevices/flipperzero-firmware), changes in [commits](https://github.com/flipperdevices/flipperzero-firmware/commits/dev): `2022-11-03 01:58 EST`
|
||||
- Added: [DHT Monitor (By quen0n)](https://github.com/quen0n/FipperZero-DHT-Monitor)
|
||||
- Added some stupid breaks for default switch cases.
|
||||
- Updated: [IFTTT Virtual Button (By Ferrazzi)](https://github.com/Ferrazzi/FlipperZero_IFTTT_Virtual_Button) `Req: ESP8266 w/ IFTTT FW Flashed`
|
||||
- Fixes for slower animations to be MUCH faster
|
||||
|
||||
<details>
|
||||
<summary><B>TO DO / REMOVED</b></summary><br/>
|
||||
|
||||
@@ -541,12 +541,16 @@ static int32_t bad_usb_worker(void* context) {
|
||||
|
||||
} else if(worker_state == BadUsbStateNotConnected) { // State: USB not connected
|
||||
uint32_t flags = furi_thread_flags_wait(
|
||||
WorkerEvtEnd | WorkerEvtConnect, FuriFlagWaitAny, FuriWaitForever);
|
||||
WorkerEvtEnd | WorkerEvtConnect | WorkerEvtToggle,
|
||||
FuriFlagWaitAny,
|
||||
FuriWaitForever);
|
||||
furi_check((flags & FuriFlagError) == 0);
|
||||
if(flags & WorkerEvtEnd) {
|
||||
break;
|
||||
} else if(flags & WorkerEvtConnect) {
|
||||
worker_state = BadUsbStateIdle; // Ready to run
|
||||
} else if(flags & WorkerEvtToggle) {
|
||||
worker_state = BadUsbStateWillRun; // Will run when USB is connected
|
||||
}
|
||||
bad_usb->st.state = worker_state;
|
||||
|
||||
@@ -573,6 +577,31 @@ static int32_t bad_usb_worker(void* context) {
|
||||
}
|
||||
bad_usb->st.state = worker_state;
|
||||
|
||||
} else if(worker_state == BadUsbStateWillRun) { // State: start on connection
|
||||
uint32_t flags = furi_thread_flags_wait(
|
||||
WorkerEvtEnd | WorkerEvtConnect | WorkerEvtToggle,
|
||||
FuriFlagWaitAny,
|
||||
FuriWaitForever);
|
||||
furi_check((flags & FuriFlagError) == 0);
|
||||
if(flags & WorkerEvtEnd) {
|
||||
break;
|
||||
} else if(flags & WorkerEvtConnect) { // Start executing script
|
||||
DOLPHIN_DEED(DolphinDeedBadUsbPlayScript);
|
||||
delay_val = 0;
|
||||
bad_usb->buf_len = 0;
|
||||
bad_usb->st.line_cur = 0;
|
||||
bad_usb->defdelay = 0;
|
||||
bad_usb->repeat_cnt = 0;
|
||||
bad_usb->file_end = false;
|
||||
storage_file_seek(script_file, 0, true);
|
||||
// extra time for PC to recognize Flipper as keyboard
|
||||
furi_thread_flags_wait(0, FuriFlagWaitAny, 1500);
|
||||
worker_state = BadUsbStateRunning;
|
||||
} else if(flags & WorkerEvtToggle) { // Cancel scheduled execution
|
||||
worker_state = BadUsbStateNotConnected;
|
||||
}
|
||||
bad_usb->st.state = worker_state;
|
||||
|
||||
} else if(worker_state == BadUsbStateRunning) { // State: running
|
||||
uint16_t delay_cur = (delay_val > 1000) ? (1000) : (delay_val);
|
||||
uint32_t flags = furi_thread_flags_wait(
|
||||
|
||||
@@ -12,6 +12,7 @@ typedef enum {
|
||||
BadUsbStateInit,
|
||||
BadUsbStateNotConnected,
|
||||
BadUsbStateIdle,
|
||||
BadUsbStateWillRun,
|
||||
BadUsbStateRunning,
|
||||
BadUsbStateDelay,
|
||||
BadUsbStateDone,
|
||||
|
||||
@@ -45,10 +45,13 @@ static void bad_usb_draw_callback(Canvas* canvas, void* _model) {
|
||||
|
||||
canvas_draw_icon(canvas, 22, 24, &I_UsbTree_48x22);
|
||||
|
||||
if((model->state.state == BadUsbStateIdle) || (model->state.state == BadUsbStateDone)) {
|
||||
if((model->state.state == BadUsbStateIdle) || (model->state.state == BadUsbStateDone) ||
|
||||
(model->state.state == BadUsbStateNotConnected)) {
|
||||
elements_button_center(canvas, "Run");
|
||||
} else if((model->state.state == BadUsbStateRunning) || (model->state.state == BadUsbStateDelay)) {
|
||||
elements_button_center(canvas, "Stop");
|
||||
} else if(model->state.state == BadUsbStateWillRun) {
|
||||
elements_button_center(canvas, "Cancel");
|
||||
}
|
||||
|
||||
if((model->state.state == BadUsbStateNotConnected) ||
|
||||
@@ -59,8 +62,13 @@ static void bad_usb_draw_callback(Canvas* canvas, void* _model) {
|
||||
if(model->state.state == BadUsbStateNotConnected) {
|
||||
canvas_draw_icon(canvas, 4, 26, &I_Clock_18x18);
|
||||
canvas_set_font(canvas, FontPrimary);
|
||||
canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Connect");
|
||||
canvas_draw_str_aligned(canvas, 127, 43, AlignRight, AlignBottom, "to USB");
|
||||
canvas_draw_str_aligned(canvas, 127, 27, AlignRight, AlignBottom, "Connect");
|
||||
canvas_draw_str_aligned(canvas, 127, 39, AlignRight, AlignBottom, "to USB");
|
||||
} else if(model->state.state == BadUsbStateWillRun) {
|
||||
canvas_draw_icon(canvas, 4, 22, &I_Clock_18x18);
|
||||
canvas_set_font(canvas, FontPrimary);
|
||||
canvas_draw_str_aligned(canvas, 127, 27, AlignRight, AlignBottom, "Will run");
|
||||
canvas_draw_str_aligned(canvas, 127, 39, AlignRight, AlignBottom, "on connect");
|
||||
} else if(model->state.state == BadUsbStateFileError) {
|
||||
canvas_draw_icon(canvas, 4, 26, &I_Error_18x18);
|
||||
canvas_set_font(canvas, FontPrimary);
|
||||
|
||||
+5
-5
@@ -3,12 +3,12 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 54
|
||||
Active frames: 0
|
||||
Frames order: 0 0 0 0 1 1 1 2 2 3 4 4 5 6 7 7 8 8 9 10 10 10 11 11 11 11 11 11 12 12 13 13 14 14 15 15 15 15 15 16 16 17 18 18 18 18 18 18 18 18 18 18 18 18
|
||||
Active cycles: 0
|
||||
Passive frames: 10
|
||||
Active frames: 42
|
||||
Frames order: 11 11 12 13 14 15 14 13 12 11 0 1 1 1 2 2 3 4 4 5 6 7 7 8 8 9 10 10 10 11 11 11 11 11 11 12 12 13 13 14 14 15 15 15 15 15 16 16 17 18 18 18
|
||||
Active cycles: 1
|
||||
Frame rate: 6
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 0
|
||||
|
||||
@@ -3,12 +3,12 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 50
|
||||
Active frames: 0
|
||||
Passive frames: 10
|
||||
Active frames: 40
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
||||
Active cycles: 0
|
||||
Active cycles: 1
|
||||
Frame rate: 6
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 0
|
||||
|
||||
@@ -3,8 +3,8 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 47
|
||||
Active frames: 1
|
||||
Passive frames: 10
|
||||
Active frames: 38
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 46
|
||||
Active cycles: 1
|
||||
Frame rate: 5
|
||||
|
||||
+4
-4
@@ -3,12 +3,12 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 30
|
||||
Active frames: 0
|
||||
Passive frames: 10
|
||||
Active frames: 20
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
||||
Active cycles: 0
|
||||
Active cycles: 1
|
||||
Frame rate: 6
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 0
|
||||
|
||||
+5
-5
@@ -3,13 +3,13 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 100
|
||||
Active frames: 0
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 13 14 15 16 17 18 17 18 17 18 19 20 19 20 19 20 19 20 19 20 21 22 21 22 22 22 23 24 25 26 27 28 29 30 31 32 33 0 34 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38
|
||||
Active cycles: 0
|
||||
Passive frames: 9
|
||||
Active frames: 99
|
||||
Frames order: 0 1 2 3 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 13 14 15 16 17 18 17 18 17 18 19 20 19 20 19 20 19 20 19 20 21 22 21 22 22 22 23 24 25 26 27 28 29 30 31 32 33 0 34 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38
|
||||
Active cycles: 1
|
||||
Frame rate: 4
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 1
|
||||
|
||||
|
||||
Vendored
+15
-15
@@ -4,7 +4,7 @@ Version: 1
|
||||
Name: Haseo_Sharingan_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 2
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
@@ -50,20 +50,6 @@ Min level: 2
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
Name: L1_Halloween_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 3
|
||||
|
||||
Name: L1_Painting_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 5
|
||||
|
||||
Name: L1_Purple_rain_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
@@ -84,3 +70,17 @@ Max butthurt: 14
|
||||
Min level: 3
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
Name: L1_Painting_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
Name: L1_Halloween_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 5
|
||||
|
||||
@@ -3,12 +3,12 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 54
|
||||
Active frames: 0
|
||||
Frames order: 0 0 0 0 1 1 1 2 2 3 4 4 5 6 7 7 8 8 9 10 10 10 11 11 11 11 11 11 12 12 13 13 14 14 15 15 15 15 15 16 16 17 18 18 18 18 18 18 18 18 18 18 18 18
|
||||
Active cycles: 0
|
||||
Passive frames: 10
|
||||
Active frames: 42
|
||||
Frames order: 11 11 12 13 14 15 14 13 12 11 0 1 1 1 2 2 3 4 4 5 6 7 7 8 8 9 10 10 10 11 11 11 11 11 11 12 12 13 13 14 14 15 15 15 15 15 16 16 17 18 18 18
|
||||
Active cycles: 1
|
||||
Frame rate: 6
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 0
|
||||
|
||||
@@ -3,12 +3,12 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 50
|
||||
Active frames: 0
|
||||
Passive frames: 10
|
||||
Active frames: 40
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
||||
Active cycles: 0
|
||||
Active cycles: 1
|
||||
Frame rate: 6
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 0
|
||||
|
||||
@@ -3,9 +3,9 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 47
|
||||
Active frames: 0
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
||||
Passive frames: 10
|
||||
Active frames: 38
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 46
|
||||
Active cycles: 1
|
||||
Frame rate: 5
|
||||
Duration: 3600
|
||||
|
||||
@@ -3,12 +3,12 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 30
|
||||
Active frames: 0
|
||||
Passive frames: 10
|
||||
Active frames: 20
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
||||
Active cycles: 0
|
||||
Active cycles: 1
|
||||
Frame rate: 6
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 0
|
||||
|
||||
@@ -3,13 +3,13 @@ Version: 1
|
||||
|
||||
Width: 128
|
||||
Height: 64
|
||||
Passive frames: 100
|
||||
Active frames: 0
|
||||
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 13 14 15 16 17 18 17 18 17 18 19 20 19 20 19 20 19 20 19 20 21 22 21 22 22 22 23 24 25 26 27 28 29 30 31 32 33 0 34 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38
|
||||
Active cycles: 0
|
||||
Passive frames: 9
|
||||
Active frames: 99
|
||||
Frames order: 0 1 2 3 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 13 14 15 16 17 18 17 18 17 18 19 20 19 20 19 20 19 20 19 20 21 22 21 22 22 22 23 24 25 26 27 28 29 30 31 32 33 0 34 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38
|
||||
Active cycles: 1
|
||||
Frame rate: 4
|
||||
Duration: 3600
|
||||
Active cooldown: 0
|
||||
Active cooldown: 4
|
||||
|
||||
Bubble slots: 1
|
||||
|
||||
|
||||
@@ -50,20 +50,6 @@ Min level: 2
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
Name: L1_Halloween_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 14
|
||||
|
||||
Name: L1_Painting_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 5
|
||||
|
||||
Name: L1_Purple_rain_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
@@ -84,3 +70,17 @@ Max butthurt: 14
|
||||
Min level: 3
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
Name: L1_Painting_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 7
|
||||
|
||||
Name: L1_Halloween_128x64
|
||||
Min butthurt: 0
|
||||
Max butthurt: 14
|
||||
Min level: 1
|
||||
Max level: 30
|
||||
Weight: 5
|
||||
|
||||
Reference in New Issue
Block a user