From bb9ba09b6d9363d2069ccb7361a4078c8e214503 Mon Sep 17 00:00:00 2001
From: MX <10697207+xMasterX@users.noreply.github.com>
Date: Fri, 14 Jul 2023 17:53:32 +0300
Subject: [PATCH 1/6] update docs
---
documentation/SubGHzRemotePlugin.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/documentation/SubGHzRemotePlugin.md b/documentation/SubGHzRemotePlugin.md
index cbdc0995b..59d4e0a32 100644
--- a/documentation/SubGHzRemotePlugin.md
+++ b/documentation/SubGHzRemotePlugin.md
@@ -2,7 +2,7 @@
# UPDATE!!!!!!
-## Now you can create and edit map files directly on flipper, go into Applications->Sub-GHz->Remote Maker
+## Now you can create and edit map files directly on flipper, go into Sub-GHz Remote and click back button
From 6afbd97d810c3351aa06deab478d9ab42fa5544b Mon Sep 17 00:00:00 2001
From: amec0e <88857687+amec0e@users.noreply.github.com>
Date: Fri, 14 Jul 2023 16:23:20 +0100
Subject: [PATCH 2/6] Update ac.ir
Renamed a few entries, added compatibility comment and added new Shivaki captures to ensure swing was and is off
---
assets/resources/infrared/assets/ac.ir | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/assets/resources/infrared/assets/ac.ir b/assets/resources/infrared/assets/ac.ir
index 0e4ced07d..df312151d 100644
--- a/assets/resources/infrared/assets/ac.ir
+++ b/assets/resources/infrared/assets/ac.ir
@@ -1,7 +1,7 @@
Filetype: IR library file
Version: 1
-# Last Updated 13th Jul, 2023
-# Last Checked 13th Jul, 2023
+# Last Updated 14th Jul, 2023
+# Last Checked 14th Jul, 2023
#
# Model: Electrolux EACM-16 HP/N3
name: Off
@@ -152,6 +152,7 @@ duty_cycle: 0.330000
data: 3013 1709 463 1085 462 1084 463 387 461 355 469 355 444 1084 463 387 461 378 436 1084 462 1084 487 355 469 1059 463 387 460 355 444 1083 463 1098 464 386 437 1083 463 1083 489 361 463 360 463 1082 464 361 462 376 462 1085 461 363 460 364 459 364 459 365 458 365 459 364 459 380 459 365 458 365 458 365 458 365 458 365 458 365 458 365 459 380 458 365 459 365 458 365 459 365 458 365 458 1089 458 365 458 380 459 1088 459 365 458 365 458 365 458 365 459 365 458 365 458 381 458 365 458 365 458 365 458 1089 458 365 458 365 458 365 458 381 458 365 458 365 458 365 458 365 458 365 458 365 458 365 458 381 457 366 457 366 457 366 457 366 457 366 458 365 458 366 457 381 458 366 458 366 457 366 457 366 457 366 457 366 457 366 457 381 458 366 457 366 457 366 457 366 457 366 457 366 457 366 457 382 457 366 457 366 457 366 457 366 457 366 457 367 457 366 457 382 457 367 456 1090 457 1090 456 1090 457 1090 457 1090 456 367 457 372 457
#
# Model: Olimpia Splendid OS-SEAMH09EI
+# Also compatible with Timberk, Royal Clima, Ballu
name: Dh
type: raw
frequency: 38000
@@ -337,7 +338,7 @@ frequency: 38000
duty_cycle: 0.330000
data: 503 365 500 364 501 366 499 365 500 364 502 25049 3535 1660 504 1228 503 390 474 391 473 393 471 1261 469 397 468 397 469 397 469 397 469 1264 468 398 468 1264 468 1264 468 398 468 1265 467 1265 467 1265 467 1265 467 1265 467 399 467 399 467 1266 466 399 467 400 466 400 466 400 466 423 443 423 443 401 465 423 442 424 442 424 442 1290 442 424 442 1290 442 424 442 424 441 424 442 1290 442 1291 441 425 441 424 442 425 441 425 441 1291 441 425 440 425 441 425 441 425 441 425 441 425 440 425 441 425 441 425 441 425 441 426 440 1292 440 1292 440 1292 440 426 440 426 440 1292 440 1293 439 1293 439 35480 3503 1696 467 1264 468 398 468 398 467 398 468 1265 467 398 467 399 467 399 466 399 467 1265 467 399 467 1266 466 1267 465 400 466 1290 442 1290 442 1290 442 1290 442 1290 442 424 442 424 442 1290 442 424 441 424 442 424 442 424 442 424 442 424 441 424 442 425 441 424 442 425 441 425 441 1291 441 425 441 425 441 425 441 425 440 1292 440 425 441 425 440 426 440 426 440 426 440 426 440 426 440 426 440 426 440 426 439 427 439 426 440 426 440 1293 439 427 439 427 439 427 438 427 439 428 438 1294 438 428 437 428 438 1295 437 1319 413 453 413 35480 3503 1696 468 1265 467 398 468 398 468 398 468 1265 467 398 468 399 466 399 467 399 467 1266 466 399 466 1267 465 1290 442 401 465 1290 442 1290 442 1290 442 1290 442 1290 442 424 442 424 441 1291 441 424 442 424 442 424 442 424 442 424 441 424 442 425 441 424 442 424 441 425 441 425 441 425 440 425 441 425 441 425 441 425 441 425 441 425 441 1292 440 426 440 426 440 1292 440 426 440 426 440 1293 439 426 440 426 440 1293 439 1293 439 1293 439 427 439 1294 438 427 438 427 439 427 438 428 438 428 438 428 438 428 438 453 413 429 437 453 413 1319 413 1320 412 1320 412 1320 412 454 412 1320 412 454 412 1321 411 1321 411 1321 411 1321 411 1321 411 455 410 455 411 455 411 455 410 456 410 456 410 456 410 481 384 481 385 482 383 482 383 483 358 507 359 1374 358 1374 358 508 358 508 358 508 358 509 357 509 357 535 331 535 331 535 330 535 330 536 330 1403 329 1403 329 563 302 564 301 564 302 564 301 565 301 591 274 619 246 593 273 620 245 620 245 621 245 673 189
#
-# Model: Mitsubishi SRK63HE.
+# Model: Mitsubishi Heavy Industries SRK63HE
name: Off
type: raw
frequency: 38000
@@ -585,44 +586,43 @@ frequency: 38000
duty_cycle: 0.330000
data: 8780 4015 578 1498 553 471 526 494 525 494 524 1520 525 495 523 498 522 499 521 502 522 497 522 499 522 500 521 1519 522 500 521 499 521 1520 546 1496 521 503 523 494 522 500 521 499 522 1520 521 499 522 499 522 502 522 1518 521 501 521 1522 522
#
-# Model: Shivaki General
+# Model: Shivaki SSA18002
name: Off
type: raw
frequency: 38000
duty_cycle: 0.330000
-data: 3163 1577 577 1009 579 1008 579 342 485 342 485 342 485 1033 579 339 462 342 485 1033 553 1034 552 342 485 1035 550 342 484 343 483 1039 547 1040 546 341 486 1041 546 1041 545 341 486 341 486 1041 545 341 486 340 487 1041 545 341 486 341 486 340 487 340 488 340 487 340 487 341 486 341 486 340 487 340 487 341 486 340 487 341 487 341 486 341 486 341 486 340 487 341 486 340 487 340 487 1041 545 341 486 341 486 1042 545 1041 545 341 486 340 487 340 487 340 487 340 487 341 486 1042 544 341 486 1042 544 341 486 341 486 341 486 341 486 341 486 341 486 341 486 341 486 1042 544 1042 544 1042 544 1042 544 340 488 341 486 341 486 341 486 341 486 341 486 341 486 341 486 341 486 340 487 340 487 341 487 341 486 341 486 341 487 341 486 341 486 341 486 341 486 341 486 341 486 341 486 341 486 341 486 340 487 341 486 341 487 341 486 341 487 341 486 341 486 340 487 1043 543 1043 544 341 486 1043 543 341 486 1043 543 1044 542 340 487 340 488
-#
+data: 3197 1545 581 1033 553 1006 606 338 463 342 485 339 488 1033 553 342 485 342 485 1034 551 1035 550 342 485 1037 548 342 485 340 487 1040 546 1040 546 340 487 1040 546 1040 546 340 487 340 488 1040 546 340 487 340 488 1040 546 340 487 340 487 340 487 342 485 340 487 340 487 340 487 342 485 342 485 342 485 340 487 342 485 340 487 340 487 342 485 342 485 342 485 342 485 340 488 342 485 1041 545 340 487 340 487 1041 545 1041 545 340 488 340 487 340 487 340 487 340 488 342 485 342 485 340 487 340 488 1041 545 340 487 340 487 342 486 342 485 340 487 340 487 340 487 340 487 342 485 341 486 1041 545 340 487 340 487 340 487 340 487 340 488 342 485 340 487 342 485 342 485 340 487 342 485 340 487 340 488 342 485 343 484 340 488 340 487 340 487 340 487 340 487 342 485 340 487 340 487 341 486 342 485 340 488 342 485 342 485 342 485 340 487 340 487 340 488 1042 544 340 487 340 487 340 487 340 487 340 487 340 487 340 488 342 485
name: Cool_hi
type: raw
frequency: 38000
duty_cycle: 0.330000
-data: 3193 1549 579 1007 580 1007 579 342 485 342 485 342 511 1007 579 338 463 342 485 1034 552 1034 551 342 484 1035 550 342 484 340 487 1039 547 1040 546 341 487 1041 545 1041 545 340 487 341 487 1041 545 341 486 340 487 1041 545 341 486 341 486 340 487 340 487 341 486 340 487 341 486 341 486 340 487 341 486 340 487 340 488 341 486 340 487 340 487 340 487 341 487 1041 545 340 487 340 487 1041 545 340 488 341 486 1042 544 1042 544 341 487 341 486 341 486 340 487 341 487 341 486 1042 544 1042 544 1042 544 1042 545 341 486 341 487 341 486 341 486 1042 545 341 486 1042 544 1042 544 1042 544 1042 544 341 487 341 486 340 487 341 486 341 486 340 487 341 486 340 487 341 486 341 486 341 486 341 486 341 487 341 486 341 486 341 486 340 488 341 486 341 486 341 486 341 486 341 486 340 488 341 486 341 486 341 487 341 486 341 486 341 486 1043 544 341 486 341 486 341 487 1043 543 341 486 341 486 341 486 341 486 1044 542 340 487 341 486 341 486
+data: 3139 1604 522 1063 523 1063 523 340 487 342 485 340 487 1063 523 342 485 340 487 1063 523 1062 523 342 484 1063 522 342 485 342 509 1041 520 1066 520 342 485 1067 519 1067 519 342 485 342 485 1067 519 342 485 342 485 1067 519 342 485 342 485 342 485 342 485 342 485 342 485 342 485 342 485 343 484 342 485 343 484 342 485 342 485 342 485 342 485 342 485 342 485 1068 518 342 485 342 485 1068 518 342 485 342 485 1068 518 1068 518 342 485 342 485 342 485 342 485 342 485 342 485 1068 518 1069 517 1068 518 1069 517 342 485 342 485 342 485 342 485 343 484 343 484 343 484 342 485 343 484 343 484 343 484 342 485 342 485 342 485 342 485 343 484 342 485 343 484 342 485 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 342 485 343 484 342 485 343 484 343 484 342 485 342 485 343 484 342 485 343 484 342 485 342 485 342 485 342 485 343 484 1093 493 1093 493 1094 492 342 485 1093 493 342 485 342 485 1094 492 1093 493
#
name: Heat_hi
type: raw
frequency: 38000
duty_cycle: 0.330000
-data: 3169 1547 579 1006 580 1006 580 342 485 342 485 342 484 1033 553 342 485 342 485 1033 552 1034 551 342 484 1035 550 342 484 342 485 1039 546 1040 546 342 485 1040 546 1040 546 342 485 343 484 1040 546 342 485 342 485 1040 546 342 486 342 485 343 484 342 485 343 484 342 485 342 485 342 485 343 484 342 485 342 485 342 485 343 484 342 485 342 485 342 485 342 485 1041 545 342 485 343 484 1041 545 342 485 343 484 1041 545 342 485 343 484 342 485 342 485 342 485 342 485 342 485 1041 545 342 485 343 484 342 485 342 485 342 485 343 484 342 485 1041 545 342 485 1041 545 1041 545 1041 545 1041 545 342 485 342 485 343 484 342 485 343 484 342 485 342 485 342 485 342 485 342 485 342 485 342 485 343 484 342 485 342 485 342 485 342 485 342 485 342 485 342 485 342 485 343 484 342 485 342 485 342 485 342 485 342 485 343 484 342 485 1042 544 343 484 343 484 342 485 1042 544 341 486 342 485 342 485 343 484 342 485 342 485 342 485 340 487
+data: 3192 1547 579 1009 577 1008 578 338 489 338 488 338 489 1010 576 338 489 338 489 1035 550 1036 549 339 488 1038 547 339 488 339 488 1040 546 1040 546 339 488 1040 546 1040 546 339 488 339 489 1040 546 339 488 339 489 1040 546 339 488 339 488 339 489 339 488 339 489 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 1041 545 339 489 339 488 1041 545 339 488 339 488 1041 545 339 488 339 489 339 488 339 488 339 488 339 489 339 488 1041 545 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 489 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 489 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 489 339 488 339 488 339 488 339 488 340 487 339 488 339 488 339 489 339 488 339 488 339 488 1042 544 1042 545 1042 544 339 488 1042 544 1042 544 1042 544 339 488 1042 544
#
name: Heat_lo
type: raw
frequency: 38000
duty_cycle: 0.330000
-data: 3162 1605 523 1064 522 1064 523 343 484 343 484 343 484 1063 523 343 484 343 484 1063 523 1063 523 343 484 1063 523 343 484 343 484 1065 521 1066 520 343 484 1068 518 1068 518 343 484 343 484 1068 518 343 484 343 484 1068 518 343 484 343 484 343 484 343 484 343 484 342 485 343 484 343 485 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 1068 518 343 484 343 484 1069 517 343 484 343 485 1069 517 343 484 343 484 343 485 343 484 343 484 343 484 343 485 343 484 343 484 343 484 1070 516 344 483 344 483 344 484 343 484 1070 517 344 483 1094 493 1070 517 1093 493 1094 492 344 483 343 484 343 484 343 484 343 484 343 484 343 485 343 484 343 484 343 484 344 483 343 484 344 483 343 484 344 483 343 484 344 483 343 484 343 484 344 483 344 483 343 484 343 484 344 483 343 484 343 484 343 484 344 483 343 484 1094 492 343 484 344 484 343 484 1094 492 1094 492 1094 492 1094 492 343 484 344 483 343 484 343 484 344 483
+data: 3194 1546 580 1006 580 1005 581 341 485 341 511 337 465 1032 554 341 486 339 488 1033 552 1033 552 341 485 1035 550 339 487 339 487 1039 546 1039 547 339 488 1040 546 1040 546 339 488 339 488 1040 546 339 488 339 488 1040 546 339 488 340 487 339 488 339 488 339 488 339 488 339 488 340 487 339 488 339 488 339 488 339 488 340 487 339 488 339 488 339 488 339 488 1040 546 339 488 339 488 1040 546 339 488 340 487 1040 546 339 488 340 487 339 488 339 488 340 487 339 488 340 487 340 487 340 487 339 488 1041 545 340 487 340 487 339 488 340 487 340 487 339 488 340 487 340 487 340 487 340 487 339 488 340 487 340 487 339 488 339 488 339 488 339 488 339 488 340 487 340 487 339 488 339 488 340 487 339 488 340 487 340 487 339 488 340 487 340 487 340 487 340 487 340 487 340 487 339 488 339 488 340 487 339 488 340 487 340 487 339 488 339 488 339 488 340 487 1042 544 340 487 1042 544 340 487 339 488 340 487 340 487 1042 544 1042 544
#
name: Cool_lo
type: raw
frequency: 38000
duty_cycle: 0.330000
-data: 3138 1604 523 1063 523 1063 523 343 484 343 484 343 484 1063 523 343 484 343 484 1062 523 1063 523 343 484 1063 522 343 484 343 484 1065 521 1066 519 343 484 1067 519 1067 519 343 484 343 484 1067 519 343 484 343 484 1067 519 343 484 343 484 343 484 343 484 343 484 343 484 343 484 342 485 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 1068 518 343 484 343 484 1068 518 343 484 343 484 1068 518 1068 518 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 1067 519 343 484 343 484 343 484 343 484 1067 519 343 484 1067 519 1067 519 1068 518 1067 519 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 343 484 1068 518 343 484 343 484 343 484 1068 518 1068 518 343 484 343 484 1068 518 343 484 343 484 343 484 343 484
+data: 3197 1547 580 1005 581 1033 553 341 512 338 463 341 486 1033 553 339 488 339 488 1033 552 1034 552 341 485 1036 549 339 488 339 488 1039 547 1040 547 340 487 1040 546 1040 546 340 487 340 487 1040 546 340 488 340 487 1040 546 340 487 340 487 340 487 340 487 340 487 340 487 339 488 339 488 340 487 340 488 339 488 340 487 340 487 339 489 340 487 340 487 339 488 1041 545 339 489 339 488 1040 546 339 488 339 488 1041 545 1041 546 340 487 340 487 340 487 340 488 340 487 340 487 340 487 340 487 340 487 1041 545 340 487 340 487 339 488 339 488 339 489 339 488 340 487 340 487 340 487 340 487 340 487 340 487 339 488 340 487 340 488 340 487 340 487 340 487 340 487 340 487 340 488 340 487 340 487 340 487 340 487 340 487 340 487 340 487 339 488 340 488 339 488 340 487 340 487 339 488 340 487 340 487 340 487 340 488 340 487 340 487 340 487 339 488 340 487 1042 544 340 487 340 488 1042 544 340 487 340 488 340 487 1043 543 1043 543
#
name: Dh
type: raw
frequency: 38000
duty_cycle: 0.330000
-data: 3165 1578 549 1037 549 1037 550 342 485 343 484 343 513 1034 551 340 487 340 487 1035 551 1035 550 340 486 1037 548 341 485 341 485 1041 545 1041 545 341 486 1042 544 1042 544 340 487 341 486 1042 544 341 486 340 488 1042 544 341 487 341 486 341 486 341 461 343 509 341 487 341 461 343 484 343 510 341 486 341 461 343 484 343 509 341 462 343 509 341 462 343 484 1068 518 343 510 341 461 1068 518 343 484 343 484 343 484 1068 518 343 484 343 484 343 484 343 484 342 485 343 485 1068 518 1068 518 1068 518 343 485 343 484 343 485 343 484 343 484 343 484 343 484 343 484 1068 518 1068 518 1068 518 343 484 343 484 343 485 343 484 343 484 343 484 343 484 343 484 343 484 342 485 343 485 343 484 343 484 343 484 343 484 343 484 343 484 343 485 343 484 343 484 343 484 343 484 343 484 343 485 343 484 343 484 343 484 343 484 343 484 1070 516 343 484 343 484 343 484 1071 515 343 484 1094 492 343 484 343 484 343 485 344 483 343 484 343 484
+data: 3196 1545 581 1005 580 1008 604 337 464 338 488 338 489 1033 553 339 488 338 489 1033 552 1034 551 339 487 1036 549 339 488 339 488 1039 547 1039 547 340 487 1040 546 1040 546 339 488 339 488 1040 546 340 487 339 488 1040 546 339 488 339 488 339 488 339 488 339 488 339 488 340 487 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 340 487 339 488 1040 546 339 488 339 488 1040 546 339 488 339 488 339 488 1040 546 339 488 339 488 339 488 339 488 339 488 339 488 1040 546 1041 545 1041 545 340 487 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 340 487 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 340 487 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 339 488 340 487 339 488 339 488 340 487 339 488 1042 544 339 488 1042 544 339 488 339 488 339 488 339 488 1042 544 1042 544
#
-# Model: Mitsubishi MSZ-AP25VGK
+# Model: Mitsubishi Electric MSZ-AP25VGK
name: Off
type: raw
frequency: 38000
From 6870304a7393444c0bba7f67808e8da016cc6031 Mon Sep 17 00:00:00 2001
From: MX <10697207+xMasterX@users.noreply.github.com>
Date: Mon, 17 Jul 2023 20:37:30 +0300
Subject: [PATCH 3/6] Move subghz into internal memory
we have no free ram :((((
---
applications/main/subghz/application.fam | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/applications/main/subghz/application.fam b/applications/main/subghz/application.fam
index 759716065..946891a4a 100644
--- a/applications/main/subghz/application.fam
+++ b/applications/main/subghz/application.fam
@@ -1,8 +1,9 @@
App(
appid="subghz",
name="Sub-GHz",
- apptype=FlipperAppType.MENUEXTERNAL,
+ apptype=FlipperAppType.APP,
targets=["f7"],
+ cdefines=["APP_SUBGHZ"],
entry_point="subghz_app",
requires=[
"gui",
@@ -26,6 +27,7 @@ App(
targets=["f7"],
apptype=FlipperAppType.STARTUP,
entry_point="subghz_on_system_start",
+ requires=["subghz"],
order=40,
)
From e2028eb731e69c62d5160c0570fac54f8a2bc8f4 Mon Sep 17 00:00:00 2001
From: MX <10697207+xMasterX@users.noreply.github.com>
Date: Mon, 17 Jul 2023 22:12:34 +0300
Subject: [PATCH 4/6] Fix menu
---
applications/main/subghz/application.fam | 2 +-
applications/services/loader/loader_menu.c | 36 ++++++++++++----------
2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/applications/main/subghz/application.fam b/applications/main/subghz/application.fam
index 946891a4a..7494e6fba 100644
--- a/applications/main/subghz/application.fam
+++ b/applications/main/subghz/application.fam
@@ -16,7 +16,7 @@ App(
],
icon="A_Sub1ghz_14",
stack_size=3 * 1024,
- order=10,
+ order=1,
fap_libs=["assets", "hwdrivers"],
fap_icon="icon.png",
fap_category="Sub-GHz",
diff --git a/applications/services/loader/loader_menu.c b/applications/services/loader/loader_menu.c
index 149fea72c..8277b6db0 100644
--- a/applications/services/loader/loader_menu.c
+++ b/applications/services/loader/loader_menu.c
@@ -94,7 +94,25 @@ static uint32_t loader_menu_exit(void* context) {
}
static void loader_menu_build_menu(LoaderMenuApp* app, LoaderMenu* menu) {
- size_t i;
+ size_t i = 0;
+
+ menu_add_item(
+ app->primary_menu,
+ LOADER_APPLICATIONS_NAME,
+ &A_Plugins_14,
+ i++,
+ loader_menu_applications_callback,
+ (void*)menu);
+
+ for(i = 0; i < FLIPPER_APPS_COUNT; i++) {
+ menu_add_item(
+ app->primary_menu,
+ FLIPPER_APPS[i].name,
+ FLIPPER_APPS[i].icon,
+ i,
+ loader_menu_apps_callback,
+ (void*)menu);
+ }
for(i = 0; i < FLIPPER_EXTERNAL_APPS_COUNT; i++) {
menu_add_item(
@@ -106,24 +124,8 @@ static void loader_menu_build_menu(LoaderMenuApp* app, LoaderMenu* menu) {
(void*)menu);
}
- for(i = 0; i < FLIPPER_APPS_COUNT; i++) {
- menu_add_item(
- app->primary_menu,
- FLIPPER_APPS[i].name,
- FLIPPER_APPS[i].icon,
- i,
- loader_menu_apps_callback,
- (void*)menu);
- }
menu_add_item(
app->primary_menu, "Settings", &A_Settings_14, i++, loader_menu_switch_to_settings, app);
- menu_add_item(
- app->primary_menu,
- LOADER_APPLICATIONS_NAME,
- &A_Plugins_14,
- i++,
- loader_menu_applications_callback,
- (void*)menu);
};
static void loader_menu_build_submenu(LoaderMenuApp* app, LoaderMenu* loader_menu) {
From bb6d3cb79637615b23ee6a20b52ba75e333a5473 Mon Sep 17 00:00:00 2001
From: MX <10697207+xMasterX@users.noreply.github.com>
Date: Tue, 18 Jul 2023 02:53:30 +0300
Subject: [PATCH 5/6] NRF24 plugins updates
Updates by Sil333033 with some changes, furi_hal speaker direct calls was removed and replaced with notification service to avoid bypassing of user set silent mode
---
.../external/mousejacker/lib/nrf24/nrf24.c | 10 +++
.../external/mousejacker/lib/nrf24/nrf24.h | 7 ++
.../external/mousejacker/mousejacker.c | 70 +++++++++----------
.../external/mousejacker/mousejacker_ducky.h | 1 +
.../external/nrfsniff/lib/nrf24/nrf24.c | 10 +++
.../external/nrfsniff/lib/nrf24/nrf24.h | 7 ++
applications/external/nrfsniff/nrfsniff.c | 25 ++++---
7 files changed, 85 insertions(+), 45 deletions(-)
diff --git a/applications/external/mousejacker/lib/nrf24/nrf24.c b/applications/external/mousejacker/lib/nrf24/nrf24.c
index 8b3776445..67c5dde1c 100644
--- a/applications/external/mousejacker/lib/nrf24/nrf24.c
+++ b/applications/external/mousejacker/lib/nrf24/nrf24.c
@@ -517,4 +517,14 @@ uint8_t nrf24_find_channel(
}
return ch;
+}
+
+bool nrf24_check_connected(FuriHalSpiBusHandle* handle) {
+ uint8_t status = nrf24_status(handle);
+
+ if(status != 0x00) {
+ return true;
+ } else {
+ return false;
+ }
}
\ No newline at end of file
diff --git a/applications/external/mousejacker/lib/nrf24/nrf24.h b/applications/external/mousejacker/lib/nrf24/nrf24.h
index 3cfcfe089..046784bc7 100644
--- a/applications/external/mousejacker/lib/nrf24/nrf24.h
+++ b/applications/external/mousejacker/lib/nrf24/nrf24.h
@@ -361,6 +361,13 @@ void int32_to_bytes(uint32_t val, uint8_t* out, bool bigendian);
*/
uint32_t bytes_to_int32(uint8_t* bytes, bool bigendian);
+/** Check if the nrf24 is connected
+ * @param handle - pointer to FuriHalSpiHandle
+ *
+ * @return true if connected, otherwise false
+*/
+bool nrf24_check_connected(FuriHalSpiBusHandle* handle);
+
#ifdef __cplusplus
}
#endif
\ No newline at end of file
diff --git a/applications/external/mousejacker/mousejacker.c b/applications/external/mousejacker/mousejacker.c
index ce93aa996..6c5ec8c7f 100644
--- a/applications/external/mousejacker/mousejacker.c
+++ b/applications/external/mousejacker/mousejacker.c
@@ -9,15 +9,14 @@
#include
#include
#include
+#include
#include "mousejacker_ducky.h"
#include
#define TAG "mousejacker"
#define LOGITECH_MAX_CHANNEL 85
-#define NRFSNIFF_APP_PATH_FOLDER "/ext/nrfsniff"
-#define NRFSNIFF_APP_PATH_EXTENSION ".txt"
-#define NRFSNIFF_APP_FILENAME "addresses.txt"
-#define MOUSEJACKER_APP_PATH_FOLDER "/ext/mousejacker"
+#define NRFSNIFF_APP_PATH_FOLDER_ADDRESSES EXT_PATH("apps_data/nrf24sniff/addresses.txt")
+#define LOCAL_BADUSB_FOLDER EXT_PATH("badusb")
#define MOUSEJACKER_APP_PATH_EXTENSION ".txt"
#define MAX_ADDRS 100
@@ -32,12 +31,13 @@ typedef struct {
} PluginEvent;
uint8_t addrs_count = 0;
-uint8_t addr_idx = 0;
+int8_t addr_idx = 0;
uint8_t loaded_addrs[MAX_ADDRS][6]; // first byte is rate, the rest are the address
char target_fmt_text[] = "Target addr: %s";
char target_address_str[12] = "None";
char target_text[30];
+char index_text[30];
static void render_callback(Canvas* const canvas, void* ctx) {
furi_assert(ctx);
@@ -53,8 +53,15 @@ static void render_callback(Canvas* const canvas, void* ctx) {
snprintf(target_text, sizeof(target_text), target_fmt_text, target_address_str);
canvas_draw_str_aligned(canvas, 7, 10, AlignLeft, AlignBottom, target_text);
canvas_draw_str_aligned(canvas, 22, 20, AlignLeft, AlignBottom, "<- select address ->");
- canvas_draw_str_aligned(canvas, 10, 30, AlignLeft, AlignBottom, "Press Ok button to ");
- canvas_draw_str_aligned(canvas, 10, 40, AlignLeft, AlignBottom, "browse for ducky script");
+ snprintf(
+ index_text, sizeof(index_text), "Address index: %d/%d", addr_idx + 1, addrs_count);
+ canvas_draw_str_aligned(canvas, 10, 30, AlignLeft, AlignBottom, index_text);
+ canvas_draw_str_aligned(canvas, 10, 40, AlignLeft, AlignBottom, "Press Ok button to ");
+ canvas_draw_str_aligned(canvas, 10, 50, AlignLeft, AlignBottom, "browse for ducky script");
+ if(!plugin_state->is_nrf24_connected) {
+ canvas_draw_str_aligned(
+ canvas, 10, 60, AlignLeft, AlignBottom, "Connect NRF24 to GPIO!");
+ }
} else if(plugin_state->addr_err) {
canvas_draw_str_aligned(
canvas, 10, 10, AlignLeft, AlignBottom, "Error: No nrfsniff folder");
@@ -94,6 +101,7 @@ static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queu
static void mousejacker_state_init(PluginState* const plugin_state) {
plugin_state->is_thread_running = false;
+ plugin_state->is_nrf24_connected = true;
}
static void hexlify(uint8_t* in, uint8_t size, char* out) {
@@ -107,7 +115,7 @@ static bool open_ducky_script(Stream* stream, PluginState* plugin_state) {
bool result = false;
FuriString* path;
path = furi_string_alloc();
- furi_string_set(path, MOUSEJACKER_APP_PATH_FOLDER);
+ furi_string_set(path, LOCAL_BADUSB_FOLDER);
DialogsFileBrowserOptions browser_options;
dialog_file_browser_set_basic_options(
@@ -132,27 +140,17 @@ static bool open_ducky_script(Stream* stream, PluginState* plugin_state) {
}
static bool open_addrs_file(Stream* stream) {
- DialogsApp* dialogs = furi_record_open("dialogs");
bool result = false;
FuriString* path;
path = furi_string_alloc();
- furi_string_set(path, NRFSNIFF_APP_PATH_FOLDER);
+ furi_string_set(path, NRFSNIFF_APP_PATH_FOLDER_ADDRESSES);
- DialogsFileBrowserOptions browser_options;
- dialog_file_browser_set_basic_options(
- &browser_options, NRFSNIFF_APP_PATH_EXTENSION, &I_sub1_10px);
- browser_options.hide_ext = false;
-
- bool ret = dialog_file_browser_show(dialogs, path, path, &browser_options);
-
- furi_record_close("dialogs");
- if(ret) {
- if(!file_stream_open(stream, furi_string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) {
- FURI_LOG_D(TAG, "Cannot open file \"%s\"", furi_string_get_cstr(path));
- } else {
- result = true;
- }
+ if(!file_stream_open(stream, furi_string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) {
+ FURI_LOG_D(TAG, "Cannot open file \"%s\"", furi_string_get_cstr(path));
+ } else {
+ result = true;
}
+
furi_string_free(path);
return result;
}
@@ -277,12 +275,6 @@ static int32_t mj_worker_thread(void* ctx) {
return 0;
}
-void start_mjthread(PluginState* plugin_state) {
- if(!plugin_state->is_thread_running) {
- furi_thread_start(plugin_state->mjthread);
- }
-}
-
int32_t mousejacker_app(void* p) {
UNUSED(p);
FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent));
@@ -297,6 +289,8 @@ int32_t mousejacker_app(void* p) {
return 255;
}
+ NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
+
// Set system callbacks
ViewPort* view_port = view_port_alloc();
view_port_draw_callback_set(view_port, render_callback, plugin_state);
@@ -307,7 +301,6 @@ int32_t mousejacker_app(void* p) {
gui_add_view_port(gui, view_port, GuiLayerFullscreen);
plugin_state->storage = furi_record_open(RECORD_STORAGE);
- storage_common_mkdir(plugin_state->storage, MOUSEJACKER_APP_PATH_FOLDER);
plugin_state->file_stream = file_stream_alloc(plugin_state->storage);
plugin_state->mjthread = furi_thread_alloc();
@@ -344,21 +337,25 @@ int32_t mousejacker_app(void* p) {
case InputKeyRight:
if(!plugin_state->addr_err) {
addr_idx++;
- if(addr_idx > addrs_count) addr_idx = 0;
+ if(addr_idx >= addrs_count) addr_idx = 0;
hexlify(loaded_addrs[addr_idx] + 1, 5, target_address_str);
}
break;
case InputKeyLeft:
if(!plugin_state->addr_err) {
addr_idx--;
- if(addr_idx == 0) addr_idx = addrs_count - 1;
+ if(addr_idx < 0) addr_idx = addrs_count - 1;
hexlify(loaded_addrs[addr_idx] + 1, 5, target_address_str);
}
break;
case InputKeyOk:
if(!plugin_state->addr_err) {
- if(!plugin_state->is_thread_running) {
- start_mjthread(plugin_state);
+ if(!nrf24_check_connected(nrf24_HANDLE)) {
+ plugin_state->is_nrf24_connected = false;
+ view_port_update(view_port);
+ notification_message(notification, &sequence_error);
+ } else if(!plugin_state->is_thread_running) {
+ furi_thread_start(plugin_state->mjthread);
view_port_update(view_port);
}
}
@@ -388,6 +385,7 @@ int32_t mousejacker_app(void* p) {
view_port_enabled_set(view_port, false);
gui_remove_view_port(gui, view_port);
furi_record_close(RECORD_GUI);
+ furi_record_close(RECORD_NOTIFICATION);
furi_record_close(RECORD_STORAGE);
view_port_free(view_port);
furi_message_queue_free(event_queue);
@@ -395,4 +393,4 @@ int32_t mousejacker_app(void* p) {
free(plugin_state);
return 0;
-}
\ No newline at end of file
+}
diff --git a/applications/external/mousejacker/mousejacker_ducky.h b/applications/external/mousejacker/mousejacker_ducky.h
index e1a422ea7..01dc32c30 100644
--- a/applications/external/mousejacker/mousejacker_ducky.h
+++ b/applications/external/mousejacker/mousejacker_ducky.h
@@ -26,6 +26,7 @@ typedef struct {
bool addr_err;
bool is_thread_running;
bool is_ducky_running;
+ bool is_nrf24_connected;
bool close_thread_please;
Storage* storage;
FuriThread* mjthread;
diff --git a/applications/external/nrfsniff/lib/nrf24/nrf24.c b/applications/external/nrfsniff/lib/nrf24/nrf24.c
index 8b3776445..67c5dde1c 100644
--- a/applications/external/nrfsniff/lib/nrf24/nrf24.c
+++ b/applications/external/nrfsniff/lib/nrf24/nrf24.c
@@ -517,4 +517,14 @@ uint8_t nrf24_find_channel(
}
return ch;
+}
+
+bool nrf24_check_connected(FuriHalSpiBusHandle* handle) {
+ uint8_t status = nrf24_status(handle);
+
+ if(status != 0x00) {
+ return true;
+ } else {
+ return false;
+ }
}
\ No newline at end of file
diff --git a/applications/external/nrfsniff/lib/nrf24/nrf24.h b/applications/external/nrfsniff/lib/nrf24/nrf24.h
index 3cfcfe089..046784bc7 100644
--- a/applications/external/nrfsniff/lib/nrf24/nrf24.h
+++ b/applications/external/nrfsniff/lib/nrf24/nrf24.h
@@ -361,6 +361,13 @@ void int32_to_bytes(uint32_t val, uint8_t* out, bool bigendian);
*/
uint32_t bytes_to_int32(uint8_t* bytes, bool bigendian);
+/** Check if the nrf24 is connected
+ * @param handle - pointer to FuriHalSpiHandle
+ *
+ * @return true if connected, otherwise false
+*/
+bool nrf24_check_connected(FuriHalSpiBusHandle* handle);
+
#ifdef __cplusplus
}
#endif
\ No newline at end of file
diff --git a/applications/external/nrfsniff/nrfsniff.c b/applications/external/nrfsniff/nrfsniff.c
index 56bc33d05..39a9b68d4 100644
--- a/applications/external/nrfsniff/nrfsniff.c
+++ b/applications/external/nrfsniff/nrfsniff.c
@@ -10,11 +10,11 @@
#define LOGITECH_MAX_CHANNEL 85
#define COUNT_THRESHOLD 2
-#define DEFAULT_SAMPLE_TIME 8000
+#define DEFAULT_SAMPLE_TIME 4000
#define MAX_ADDRS 100
#define MAX_CONFIRMED 32
-#define NRFSNIFF_APP_PATH_FOLDER "/ext/nrfsniff"
+#define NRFSNIFF_APP_PATH_FOLDER STORAGE_APP_DATA_PATH_PREFIX
#define NRFSNIFF_APP_FILENAME "addresses.txt"
#define TAG "nrfsniff"
@@ -341,6 +341,7 @@ int32_t nrfsniff_app(void* p) {
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
Storage* storage = furi_record_open(RECORD_STORAGE);
+ storage_common_migrate(storage, EXT_PATH("nrfsniff"), NRFSNIFF_APP_PATH_FOLDER);
storage_common_mkdir(storage, NRFSNIFF_APP_PATH_FOLDER);
PluginEvent event;
@@ -387,13 +388,19 @@ int32_t nrfsniff_app(void* p) {
break;
case InputKeyOk:
// toggle sniffing
- sniffing_state = !sniffing_state;
- if(sniffing_state) {
- clear_cache();
- start_sniffing();
- start = furi_get_tick();
- } else
- wrap_up(storage, notification);
+ if(nrf24_check_connected(nrf24_HANDLE)) {
+ sniffing_state = !sniffing_state;
+ if(sniffing_state) {
+ clear_cache();
+ start_sniffing();
+ start = furi_get_tick();
+ } else {
+ wrap_up(storage, notification);
+ }
+ } else {
+ notification_message(notification, &sequence_error);
+ }
+
break;
case InputKeyBack:
if(event.input.type == InputTypeLong) processing = false;
From 12f7edb56a9385ad3227d09dec53786f54b3cfcf Mon Sep 17 00:00:00 2001
From: MX <10697207+xMasterX@users.noreply.github.com>
Date: Tue, 18 Jul 2023 02:59:45 +0300
Subject: [PATCH 6/6] Update changelog
---
CHANGELOG.md | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 93f9e6455..28e88d5ab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,17 +2,21 @@
* !!! **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** !!!
* This next text applies to you only **If you have copied any apps manually** into `apps` folder and don't know that you need to update those apps manually in same way you added them - 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!**
-----
+* SubGHz Remote: Merged SubGHz Remote and Remote maker in one app, **use back button to access remote maker** (by @gid9798 | PR #545)
* SubGHz: Port latest OFW external radio driver, fix issues (now you can make drivers for other radio chips) (by @gid9798 | PR #539 #536 #535 #534)
* GUI module: SubMenu fix vertical orientation (by @gid9798 | PR #543)
* Apps: After merge fixes (by @gid9798 | PR #537)
* Docs: Update docs for debug build and update vscode example, please remove `debug_pack` target if you had it in your workflow
-* Infrared: Updated universal remote assets (by @amec0e | PR #544)
+* Infrared: Updated universal remote assets (by @amec0e | PR #544 #546)
+* Plugins: NRF24 plugins -> Updates by @Sil333033 with some changes by @xMasterX -> furi_hal_speaker direct calls was removed and replaced with notification service to avoid bypassing of user set silent mode -> What was changed - NRF24 connection check added, app folders was moved (uses migrate, all done automatically), and mousejacker now uses badusb folder for badusb scripts
* Plugins: Added Camera Suite GPIO application for the ESP32-CAM module. [(by CodyTolene)](https://github.com/CodyTolene/Flipper-Zero-Camera-Suite) (PR #541)
* Plugins: Updated ESP32: WiFi Marauder companion plugin [(by 0xchocolate)](https://github.com/0xchocolate/flipperzero-wifi-marauder)
* Plugins: Updated **NFC Maker** plugin (make tags with URLs, Wifi and other things) [(by Willy-JL)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/external/nfc_maker)
* Plugins: Updated **Mifare Nested** [(by AloneLiberty)](https://github.com/AloneLiberty/FlipperNested)
* Plugins: Updated Lightmeter [(by oleksiikutuzov)](https://github.com/oleksiikutuzov/flipperzero-lightmeter)
* Plugins: Updated **Multi (RFID/iButton) Fuzzer** [(by @gid9798)](https://github.com/DarkFlippers/Multi_Fuzzer)
+* OFW: IButton: on delete scene key name not fully display if so long
+* OFW: Radio headers in SDK
* OFW: Loader: good looking error messages
* OFW: Desktop,Cli: add uptime info
* OFW: Archive and file browser fixes