MX 2 лет назад
Родитель
Сommit
12d4dbebe9
80 измененных файлов с 461 добавлено и 175 удалено
  1. BIN
      base_pack/arkanoid/img/1.png
  2. BIN
      base_pack/arkanoid/img/2.png
  3. 22 0
      base_pack/barcode_gen/encoding_tables/codabar_encodings.txt
  4. 202 0
      base_pack/barcode_gen/encoding_tables/code128_encodings.txt
  5. 106 0
      base_pack/barcode_gen/encoding_tables/code128c_encodings.txt
  6. 44 0
      base_pack/barcode_gen/encoding_tables/code39_encodings.txt
  7. BIN
      base_pack/barcode_gen/img/1.png
  8. BIN
      base_pack/barcode_gen/img/2.png
  9. BIN
      base_pack/barcode_gen/img/3.png
  10. BIN
      base_pack/barcode_gen/img/Codabar Data Example.png
  11. BIN
      base_pack/barcode_gen/img/Creating Barcode.png
  12. BIN
      base_pack/barcode_gen/img/Flipper Barcode.png
  13. BIN
      base_pack/barcode_gen/img/Flipper Box Barcode.png
  14. BIN
      base_pack/bomberduck/img/1.png
  15. BIN
      base_pack/bomberduck/img/2.png
  16. 1 1
      base_pack/dtmf_dolphin/application.fam
  17. BIN
      base_pack/dtmf_dolphin/img/1.png
  18. BIN
      base_pack/dtmf_dolphin/img/2.png
  19. BIN
      base_pack/dtmf_dolphin/img/3.png
  20. BIN
      base_pack/dtmf_dolphin/phone.png
  21. BIN
      base_pack/flappy_bird/img/1.png
  22. BIN
      base_pack/flappy_bird/img/2.png
  23. BIN
      base_pack/game15/img/1.png
  24. 7 0
      base_pack/game_2048/README-catalog.md
  25. 2 2
      base_pack/game_2048/application.fam
  26. BIN
      base_pack/game_2048/img/1.png
  27. BIN
      base_pack/game_2048/img/2.png
  28. 29 23
      base_pack/gps_nmea_uart/README.md
  29. 1 1
      base_pack/gps_nmea_uart/gps_uart.h
  30. BIN
      base_pack/gps_nmea_uart/img/1.png
  31. BIN
      base_pack/gps_nmea_uart/img/2.png
  32. BIN
      base_pack/gps_nmea_uart/img/3.png
  33. BIN
      base_pack/heap_defence_game/img/1.png
  34. BIN
      base_pack/heap_defence_game/img/2.png
  35. 1 1
      base_pack/hex_viewer/application.fam
  36. BIN
      base_pack/hex_viewer/img/1.png
  37. BIN
      base_pack/hex_viewer/img/2.png
  38. 1 2
      base_pack/ir_scope/application.fam
  39. BIN
      base_pack/ir_scope/img/1.png
  40. BIN
      base_pack/metronome/img/1.png
  41. BIN
      base_pack/metronome/img/2.png
  42. BIN
      base_pack/minesweeper/img/1.png
  43. BIN
      base_pack/minesweeper/img/2.png
  44. BIN
      base_pack/morse_code/img/1.png
  45. BIN
      base_pack/multi_converter/img/1.png
  46. BIN
      base_pack/multi_converter/img/2.png
  47. BIN
      base_pack/multi_converter/img/3.png
  48. BIN
      base_pack/multi_converter/img/4.png
  49. 18 0
      base_pack/pocsag_pager/README.md
  50. BIN
      base_pack/pocsag_pager/img/1.png
  51. BIN
      base_pack/pocsag_pager/img/2.png
  52. BIN
      base_pack/pocsag_pager/img/3.png
  53. 12 142
      base_pack/protoview/README.md
  54. BIN
      base_pack/protoview/img/1.png
  55. BIN
      base_pack/protoview/img/2.png
  56. BIN
      base_pack/protoview/img/3.png
  57. BIN
      base_pack/sentry_safe/img/1.png
  58. BIN
      base_pack/sentry_safe/img/2.png
  59. 7 0
      base_pack/spectrum_analyzer/README.md
  60. BIN
      base_pack/spectrum_analyzer/img/1.png
  61. BIN
      base_pack/spectrum_analyzer/img/2.png
  62. BIN
      base_pack/spectrum_analyzer/img/3.png
  63. BIN
      base_pack/swd_probe/img/1.png
  64. BIN
      base_pack/tetris_game/img/1.png
  65. BIN
      base_pack/tetris_game/img/2.png
  66. BIN
      base_pack/tetris_game/img/3.png
  67. 1 1
      base_pack/text_viewer/application.fam
  68. BIN
      base_pack/text_viewer/img/1.png
  69. BIN
      base_pack/text_viewer/img/2.png
  70. BIN
      base_pack/tictactoe_game/img/1.png
  71. 5 0
      base_pack/uart_terminal/README-catalog.md
  72. 2 2
      base_pack/uart_terminal/application.fam
  73. BIN
      base_pack/uart_terminal/img/1.png
  74. BIN
      base_pack/uart_terminal/img/2.png
  75. BIN
      base_pack/uart_terminal/img/3.png
  76. BIN
      base_pack/wav_player/img/1.png
  77. BIN
      base_pack/wav_player/img/2.png
  78. BIN
      base_pack/wav_player/img/3.png
  79. BIN
      base_pack/zombiez/img/1.png
  80. BIN
      base_pack/zombiez/img/2.png

BIN
base_pack/arkanoid/img/1.png


BIN
base_pack/arkanoid/img/2.png


+ 22 - 0
base_pack/barcode_gen/encoding_tables/codabar_encodings.txt

@@ -0,0 +1,22 @@
+# alternates between bars and spaces, always begins with bar
+# 0 for narrow, 1 for wide
+0: 0000011
+1: 0000110
+2: 0001001
+3: 1100000
+4: 0010010
+5: 1000010
+6: 0100001
+7: 0100100
+8: 0110000
+9: 1001000
+-: 0001100
+$: 0011000
+:: 1000101
+/: 1010001
+.: 1010100
++: 0010101
+A: 0011010
+B: 0101001
+C: 0001011
+D: 0001110

+ 202 - 0
base_pack/barcode_gen/encoding_tables/code128_encodings.txt

@@ -0,0 +1,202 @@
+ : 00
+!: 01
+": 02
+#: 03
+$: 04
+%: 05
+&: 06
+': 07
+(: 08
+): 09
+*: 10
++: 11
+,: 12
+-: 13
+.: 14
+/: 15
+0: 16
+1: 17
+2: 18
+3: 19
+4: 20
+5: 21
+6: 22
+7: 23
+8: 24
+9: 25
+:: 26
+;: 27
+<: 28
+=: 29
+>: 30
+?: 31
+@: 32
+A: 33
+B: 34
+C: 35
+D: 36
+E: 37
+F: 38
+G: 39
+H: 40
+I: 41
+J: 42
+K: 43
+L: 44
+M: 45
+N: 46
+O: 47
+P: 48
+Q: 49
+R: 50
+S: 51
+T: 52
+U: 53
+V: 54
+W: 55
+X: 56
+Y: 57
+Z: 58
+[: 59
+\: 60
+]: 61
+^: 62
+_: 63
+`: 64
+a: 65
+b: 66
+c: 67
+d: 68
+e: 69
+f: 70
+g: 71
+h: 72
+i: 73
+j: 74
+k: 75
+l: 76
+m: 77
+n: 78
+o: 79
+p: 80
+q: 81
+r: 82
+s: 83
+t: 84
+u: 85
+v: 86
+w: 87
+x: 88
+y: 89
+z: 90
+{: 91
+|: 92
+}: 93
+~: 94
+
+00: 11011001100
+01: 11001101100
+02: 11001100110
+03: 10010011000
+04: 10010001100
+05: 10001001100
+06: 10011001000
+07: 10011000100
+08: 10001100100
+09: 11001001000
+10: 11001000100
+11: 11000100100
+12: 10110011100
+13: 10011011100
+14: 10011001110
+15: 10111001100
+16: 10011101100
+17: 10011100110
+18: 11001110010
+19: 11001011100
+20: 11001001110
+21: 11011100100
+22: 11001110100
+23: 11101101110
+24: 11101001100
+25: 11100101100
+26: 11100100110
+27: 11101100100
+28: 11100110100
+29: 11100110010
+30: 11011011000
+31: 11011000110
+32: 11000110110
+33: 10100011000
+34: 10001011000
+35: 10001000110
+36: 10110001000
+37: 10001101000
+38: 10001100010
+39: 11010001000
+40: 11000101000
+41: 11000100010
+42: 10110111000
+43: 10110001110
+44: 10001101110
+45: 10111011000
+46: 10111000110
+47: 10001110110
+48: 11101110110
+49: 11010001110
+50: 11000101110
+51: 11011101000
+52: 11011100010
+53: 11011101110
+54: 11101011000
+55: 11101000110
+56: 11100010110
+57: 11101101000
+58: 11101100010
+59: 11100011010
+60: 11101111010
+61: 11001000010
+62: 11110001010
+63: 10100110000
+64: 10100001100
+65: 10010110000
+66: 10010000110
+67: 10000101100
+68: 10000100110
+69: 10110010000
+70: 10110000100
+71: 10011010000
+72: 10011000010
+73: 10000110100
+74: 10000110010
+75: 11000010010
+76: 11001010000
+77: 11110111010
+78: 11000010100
+79: 10001111010
+80: 10100111100
+81: 10010111100
+82: 10010011110
+83: 10111100100
+84: 10011110100
+85: 10011110010
+86: 11110100100
+87: 11110010100
+88: 11110010010
+89: 11011011110
+90: 11011110110
+91: 11110110110
+92: 10101111000
+93: 10100011110
+94: 10001011110
+95: 10111101000
+96: 10111100010
+97: 11110101000
+98: 11110100010
+99: 10111011110
+100: 10111101110
+101: 11101011110
+102: 11110101110
+103: 11010000100
+104: 11010010000
+105: 11010011100

+ 106 - 0
base_pack/barcode_gen/encoding_tables/code128c_encodings.txt

@@ -0,0 +1,106 @@
+00: 11011001100
+01: 11001101100
+02: 11001100110
+03: 10010011000
+04: 10010001100
+05: 10001001100
+06: 10011001000
+07: 10011000100
+08: 10001100100
+09: 11001001000
+10: 11001000100
+11: 11000100100
+12: 10110011100
+13: 10011011100
+14: 10011001110
+15: 10111001100
+16: 10011101100
+17: 10011100110
+18: 11001110010
+19: 11001011100
+20: 11001001110
+21: 11011100100
+22: 11001110100
+23: 11101101110
+24: 11101001100
+25: 11100101100
+26: 11100100110
+27: 11101100100
+28: 11100110100
+29: 11100110010
+30: 11011011000
+31: 11011000110
+32: 11000110110
+33: 10100011000
+34: 10001011000
+35: 10001000110
+36: 10110001000
+37: 10001101000
+38: 10001100010
+39: 11010001000
+40: 11000101000
+41: 11000100010
+42: 10110111000
+43: 10110001110
+44: 10001101110
+45: 10111011000
+46: 10111000110
+47: 10001110110
+48: 11101110110
+49: 11010001110
+50: 11000101110
+51: 11011101000
+52: 11011100010
+53: 11011101110
+54: 11101011000
+55: 11101000110
+56: 11100010110
+57: 11101101000
+58: 11101100010
+59: 11100011010
+60: 11101111010
+61: 11001000010
+62: 11110001010
+63: 10100110000
+64: 10100001100
+65: 10010110000
+66: 10010000110
+67: 10000101100
+68: 10000100110
+69: 10110010000
+70: 10110000100
+71: 10011010000
+72: 10011000010
+73: 10000110100
+74: 10000110010
+75: 11000010010
+76: 11001010000
+77: 11110111010
+78: 11000010100
+79: 10001111010
+80: 10100111100
+81: 10010111100
+82: 10010011110
+83: 10111100100
+84: 10011110100
+85: 10011110010
+86: 11110100100
+87: 11110010100
+88: 11110010010
+89: 11011011110
+90: 11011110110
+91: 11110110110
+92: 10101111000
+93: 10100011110
+94: 10001011110
+95: 10111101000
+96: 10111100010
+97: 11110101000
+98: 11110100010
+99: 10111011110
+100: 10111101110
+101: 11101011110
+102: 11110101110
+103: 11010000100
+104: 11010010000
+105: 11010011100

+ 44 - 0
base_pack/barcode_gen/encoding_tables/code39_encodings.txt

@@ -0,0 +1,44 @@
+0: 000110100
+1: 100100001
+2: 001100001
+3: 101100000
+4: 000110001
+5: 100110000
+6: 001110000
+7: 000100101
+8: 100100100
+9: 001100100
+A: 100001001
+B: 001001001
+C: 101001000
+D: 000011001
+E: 100011000
+F: 001011000
+G: 000001101
+H: 100001100
+I: 001001100
+J: 000011100
+K: 100000011
+L: 001000011
+M: 101000010
+N: 000010011
+O: 100010010
+P: 001010010
+Q: 000000111
+R: 100000110
+S: 001000110
+T: 000010110
+U: 110000001
+V: 011000001
+W: 111000000
+X: 010010001
+Y: 110010000
+Z: 011010000
+-: 010000101
+.: 110000100
+ : 011000100
+*: 010010100
+$: 010101000
+/: 010100010
++: 010001010
+%: 000101010

BIN
base_pack/barcode_gen/img/1.png


BIN
base_pack/barcode_gen/img/2.png


BIN
base_pack/barcode_gen/img/3.png


BIN
base_pack/barcode_gen/img/Codabar Data Example.png


BIN
base_pack/barcode_gen/img/Creating Barcode.png


BIN
base_pack/barcode_gen/img/Flipper Barcode.png


BIN
base_pack/barcode_gen/img/Flipper Box Barcode.png


BIN
base_pack/bomberduck/img/1.png


BIN
base_pack/bomberduck/img/2.png


+ 1 - 1
base_pack/dtmf_dolphin/application.fam

@@ -13,6 +13,6 @@ App(
     order=20,
     fap_category="Tools",
     fap_author="@litui & @xMasterX",
-    fap_version="1.0",
+    fap_version="1.1",
     fap_description="DTMF (Dual-Tone Multi-Frequency) dialer, Bluebox, and Redbox.",
 )

BIN
base_pack/dtmf_dolphin/img/1.png


BIN
base_pack/dtmf_dolphin/img/2.png


BIN
base_pack/dtmf_dolphin/img/3.png


BIN
base_pack/dtmf_dolphin/phone.png


BIN
base_pack/flappy_bird/img/1.png


BIN
base_pack/flappy_bird/img/2.png


BIN
base_pack/game15/img/1.png


+ 7 - 0
base_pack/game_2048/README-catalog.md

@@ -0,0 +1,7 @@
+In this classic game, your objective is to collect the highest number of points by connecting identical numbers on the playing field.
+
+You can control the game using the Up, Down, Right, and Left buttons, which allow you to move all cells on the playing field simultaneously.
+
+Whenever you merge two identical numbers, their value doubles. For instance, combining 2 and 2 results in 4.
+
+The game ends when no further moves are possible. Exiting the game will save the current state of the game board.

+ 2 - 2
base_pack/game_2048/application.fam

@@ -11,6 +11,6 @@ App(
 	fap_icon="game_2048.png",
     fap_category="Games",
     fap_author="@eugene-kirzhanov",
-    fap_version="1.0",
-    fap_description="2048 Game",
+    fap_version="1.1",
+    fap_description="Play the port of the 2048 game on Flipper Zero.",
 )

BIN
base_pack/game_2048/img/1.png


BIN
base_pack/game_2048/img/2.png


+ 29 - 23
base_pack/gps_nmea_uart/README.md

@@ -1,40 +1,46 @@
 # GPS for Flipper Zero
 
-[Original link](https://github.com/ezod/flipperzero-gps)
+A simple Flipper Zero application for NMEA 0183 serial GPS modules, such as the
+- Adafruit Ultimate GPS Breakout.
 
-[Adafruit Ultimate GPS Breakout].
+Heavy lifting (NMEA parsing) provided by minmea.
 
-![ui](ui.png)
+## Usage
 
-Heavy lifting (NMEA parsing) provided by [minmea], which is included in this
-repository.
+This is a single-screen app, and a few interactions are provided via the
+hardware buttons:
 
-## Modifications made by @xMasterX
-- Ability to change baudrate using Up button, hold button to switch between baudrates (9600, 57600, 115200) (i set 57600 as default)
-- Ok button will set backlight to always on mode, to disable press ok button again (it will restore default settings after app exit too)
-- Long press Right button to change speed from knots to kilometers per hour
-- Exit from app using long press on back button instead of short press, may be useful in case you want to turn backlight on and accidentally click back
+- Long press the up button to change the **baud rate**. The default baud rate
+  is 9600, but 19200, 38400, 57600, and 115200 baud are also supported.
+- Long press the right button to change **speed units** from knots to
+  kilometers per hour.
+- Press the OK button to set the **backlight** to always on mode. Press it
+  again to disable.
+- Long press the back button to **exit** the app.
 
 ## Hardware Setup
 
 Connect the GPS module to power and the USART using GPIO pins 9 (3.3V), 11
 (GND), 13 (TX), and 14 (RX), as appropriate.
 
-![wiring](wiring.png)
 
+See the tutorial video - https://www.youtube.com/watch?v=5vSGFzEBp-k from
+Lab401 by RocketGod - https://github.com/RocketGod-git for a visual guide to
+the hardware setup.
 
-## Contributing
+## Confirmed Compatible Modules
 
-This project was a learning exercise and is more or less "complete" from my
-perspective, but I will happily accept pull requests that improve and enhance
-the functionality for others.
+* Adafruit Ultimate GPS Breakout
+* Beitian BN-180
+* Royaltek RBT-2100LP
+* u-blox NEO-6M
 
-Currently, the app only parses RMC and GGA sentences, and displays a subset of
-the data that fits on the screen. The UART is also hard-coded to 9600 baud.
-These limitations are largely driven by the GPS module I have to work with. A
-more elaborate UI with scrolling or multiple screens, as well as a configurable
-baud rate, may be useful for other GPS modules.
+If you have verified this application working with a module not listed here,
+please submit a PR adding it to the list.
 
-[Adafruit Ultimate GPS Breakout]: https://www.adafruit.com/product/746
-[minmea]: https://github.com/kosma/minmea
-[flipperzero-firmware]: https://github.com/flipperdevices/flipperzero-firmware
+## Links
+
+Original repo link - https://github.com/ezod/flipperzero-gps
+Adafruit Ultimate GPS Breakout: https://www.adafruit.com/product/746
+minmea: https://github.com/kosma/minmea
+u-blox NEO-6M: https://www.u-blox.com/en/product/neo-6-series

+ 1 - 1
base_pack/gps_nmea_uart/gps_uart.h

@@ -6,7 +6,7 @@
 #define RX_BUF_SIZE 1024
 
 static const int gps_baudrates[5] = {9600, 19200, 38400, 57600, 115200};
-static int current_gps_baudrate = 3;
+static int current_gps_baudrate = 0;
 
 typedef struct {
     bool valid;

BIN
base_pack/gps_nmea_uart/img/1.png


BIN
base_pack/gps_nmea_uart/img/2.png


BIN
base_pack/gps_nmea_uart/img/3.png


BIN
base_pack/heap_defence_game/img/1.png


BIN
base_pack/heap_defence_game/img/2.png


+ 1 - 1
base_pack/hex_viewer/application.fam

@@ -13,6 +13,6 @@ App(
     fap_category="Tools",
     fap_icon_assets="icons",
     fap_author="@QtRoS",
-    fap_version="1.0",
+    fap_version="1.1",
     fap_description="App allows to view various files as HEX.",
 )

BIN
base_pack/hex_viewer/img/1.png


BIN
base_pack/hex_viewer/img/2.png


+ 1 - 2
base_pack/ir_scope/application.fam

@@ -3,12 +3,11 @@ App(
     name="IR Scope",
     apptype=FlipperAppType.EXTERNAL,
     entry_point="ir_scope_app",
-    cdefines=["APP_IR_SCOPE"],
     requires=["gui"],
     stack_size=2 * 1024,
     fap_icon="ir_scope.png",
     fap_category="Infrared",
     fap_author="@kallanreed",
-    fap_version="1.0",
+    fap_version="1.2",
     fap_description="App allows to see incoming IR signals.",
 )

BIN
base_pack/ir_scope/img/1.png


BIN
base_pack/metronome/img/1.png


BIN
base_pack/metronome/img/2.png


BIN
base_pack/minesweeper/img/1.png


BIN
base_pack/minesweeper/img/2.png


BIN
base_pack/morse_code/img/1.png


BIN
base_pack/multi_converter/img/1.png


BIN
base_pack/multi_converter/img/2.png


BIN
base_pack/multi_converter/img/3.png


BIN
base_pack/multi_converter/img/4.png


+ 18 - 0
base_pack/pocsag_pager/README.md

@@ -0,0 +1,18 @@
+# Flipper POCSAG Receiver plugin
+
+App can capture POCSAG 1200 messages using internal or external CC1101 module
+
+Plugin based on Weather Station - https://github.com/flipperdevices/flipperzero-firmware/tree/dev/applications/plugins/weather_station
+
+Protocol implementation made by @Shmuma
+Icons by @Svaarich
+
+Includes new FM preset built into code - 2FSK with 9.5KHz freq deviation.
+
+Default frequency is set to DAPNET - 439987500
+
+To add new presets and frequencies create file - yourMicroSD/pocsag/settings.txt
+And put THIS - https://github.com/flipperdevices/flipperzero-firmware/blob/dev/assets/resources/subghz/assets/setting_user.example file contents into it, and edit this example for yourself, add needed frequencies
+
+
+All contributions are welcome!

BIN
base_pack/pocsag_pager/img/1.png


BIN
base_pack/pocsag_pager/img/2.png


BIN
base_pack/pocsag_pager/img/3.png


+ 12 - 142
base_pack/protoview/README.md

@@ -1,11 +1,8 @@
-ProtoView is a digital signal detection, visualization, editing and reply tool for the [Flipper Zero](https://flipperzero.one/). The Flipper default application, called Subghz, is able to identify certain RF protocols, but when the exact protocol is not implemented (and there are many undocumented and unimplemented ones, such as the ones in use in TPMS systems, car keys and many others), the curious person is left wondering what the device is sending at all. Using ProtoView she or he can visualize the high and low pulses like in the example image below (showing a TPMS signal produced by a Renault tire):
-
-![ProtoView screenshot raw signal](/images/protoview_1.jpg)
-
+ProtoView is a digital signal detection, visualization, editing and reply tool for the Flipper Zero. The Flipper default application, called Subghz, is able to identify certain RF protocols, but when the exact protocol is not implemented (and there are many undocumented and unimplemented ones, such as the ones in use in TPMS systems, car keys and many others), the curious person is left wondering what the device is sending at all. Using ProtoView she or he can visualize the high and low pulses  
 This is often enough to make an initial idea about the encoding used
 and if the selected modulation is correct. For example, in the signal above
 you can see a set of regular pulses and gaps used for synchronization, and then
-a sequence of bits encoded in [Manchester](https://en.wikipedia.org/wiki/Manchester_code) line code. If you study these things for five minutes, you'll find yourself able to decode the bits with naked eyes.
+a sequence of bits encoded in Manchester - https://en.wikipedia.org/wiki/Manchester_code line code. If you study these things for five minutes, you'll find yourself able to decode the bits with naked eyes.
 
 ## Decoding capabilities
 
@@ -15,13 +12,12 @@ Other than showing the raw signal, ProtoView is able to decode a few interesting
 * Microchip HSC200/300/301 Keeloq protocol.
 * Oregon thermometer protocol 2.
 * PT2262, SC5262 based remotes.
-* ... more will be implemented soon, hopefully. Send PRs :)
+* ... more will be implemented soon, hopefully. Send PRs
 
-![ProtoView screenshot Renault TPMS data](/images/protoview_2.jpg)
 
 The app implements a framework that makes adding and experimenting with new
-protocols very simple. Check the `protocols` directory to see how the
-API works, or read the full documentation at the end of this `README` file.
+protocols very simple. Check the (protocols) directory to see how the
+API works, or read the full documentation at the end of (README) file.
 The gist of it is that the decoder receives the signal already converted into
 a bitmap, where each bit represents a short pulse duration. Then there are
 functions to seek specific sync/preamble sequences inside the bitmap, to decode
@@ -44,9 +40,9 @@ values.
 ## A well-documented app for the Flipper
 
 The secondary goal of ProtoView is to provide a well-documented application for the Flipper (even if ProtoView is a pretty atypical application: it doesn't make use of the standard widgets and other abstractions provided by the framework).
-Most apps dealing with the *subghz subsystem* of the Flipper (the abstraction used to work with the [CC1101 chip](https://www.ti.com/product/CC1101)) tend to be complicated and completely undocumented.
+Most apps dealing with the *subghz subsystem* of the Flipper (the abstraction used to work with the CC1101 chip - https://www.ti.com/product/CC1101) tend to be complicated and completely undocumented.
 Unfortunately, this is also true for the firmware of the device.
-It's a shame, because especially in the case of code that talks with hardware peripherals there are tons of assumptions and hard-gained lessons that can [only be captured by comments and are in the code only implicitly](http://antirez.com/news/124).
+It's a shame, because especially in the case of code that talks with hardware peripherals there are tons of assumptions and hard-gained lessons that can only be captured by comments and are in the code only implicitly - http://antirez.com/news/124
 
 However, the Flipper firmware source code is well written even if it
 lacks comments and documentation (and sometimes makes use of abstractions more convoluted than needed), so it is possible to make some ideas of how things work just grepping inside. In order to develop this application, I ended reading most parts of the firmware of the device.
@@ -97,8 +93,8 @@ with the right arrow will show information about the decoded signal.
 In the bottom-right corner the application displays an amount of time
 in microseconds. This is the average length of the shortest pulse length
 detected among the three classes. Usually the *data rate* of the protocol
-is something like `1000000/this-number*2`, but it depends on the encoding
-and could actually be `1000000/this-number*N` with `N > 2` (here 1000000
+is something like (1000000/this-number*2), but it depends on the encoding
+and could actually be (1000000/this-number*N) with (N > 2) (here 1000000
 is the number of microseconds in one second, and N is the number of clock
 cycles needed to represent a bit).
 
@@ -107,7 +103,7 @@ cycles needed to represent a bit).
 If a signal was detected, the info view will show the details about the signal. If the signal has more data that a single screen can fit, pressing OK will show the next fields. Pressing DOWN will go to a sub-view with an oscilloscope-alike representation of the signal, from there you can:
 
 1. Resend the signal, by pressing OK.
-2. Save the signal as `.sub` file, by long pressing OK.
+2. Save the signal as (.sub) file, by long pressing OK.
 
 When resending, you can select a different frequency and modulation if you
 wish.
@@ -144,132 +140,6 @@ RF chip, the CC1101, is receiving. This will makes very easy to understand
 if a given frequency is targeted by something other than noise. This mode is
 fun to watch, resembling an old CRT TV set.
 
-# Installing the app from source
-
-* Download the Flipper Zero dev kit and build it:
-```
-mkdir -p ~/flipperZero/official/
-cd ~/flipperZero/official/
-git clone --recursive  https://github.com/flipperdevices/flipperzero-firmware.git  ./
-./fbt
-```
-* Copy this application folder in `official/applications_user`.
-* Connect your Flipper via USB.
-* Build and install with: `./fbt launch_app APPSRC=protoview`.
-
-# Installing the binary file (no build needed)
-
-Drop the `protoview.fap` file you can find in the `binaries` folder into the
-following Flipper Zero location:
-
-    /ext/apps/Tools
-
-The `ext` part means that we are in the SD card. So if you don't want
-to use the Android (or other) application to upload the file,
-you can just take out the SD card, insert it in your computer,
-copy the fine into `apps/Tools`, and that's it.
-
-# Protocols decoders API
-
-Writing a protocol decoder is not hard, and requires to write three
-different methods.
-
-1. `decode()`. This is mandatory, and is used in order to turn a known signal into a set of fields containing certain informations. For instance for a thermometer sending data via RF, a raw message will be decoded into fields like temperature, humidity, station ID and so forth.
-2. `get_fields()`. Optional, only needed if the protocol supports creating and editing signals. This method just returns the fields names, types and defaults. The app will use this list in order to allow the user to set values. The populated fields will be passed to the `build_message()` method later.
-3. `build_message()`. This method gets a set of fields representing the parameters of the protocol, as set by the user, and will create a low level signal composed of pulses and gaps of specific durations.
-
-## `decode()` method
-
-    bool decode(uint8_t *bits, uint32_t numbytes, uint32_t numbits, ProtoViewMsgInfo *info);
-
-The method gets a bitmap `bits` long `numbytes` bytes but actually containing `bumbits` valid bits. Each bit represents a pulse of gap of the duration of the shortest time detected in the protocol (this is often called *te*, in the RF protocols jargon). So, for instance, if a signal is composed of pulses and gaps of around 500 and 1000 microseconds, each bit in the bitmap will represent 500 microseconds.
-
-Continuing with the example above, if the received signal was composed of a 1000 microseconds gap, then a 500 microsecond pulse, then a 500 microsecond gap and finally a 1000 microseconds pulse, its bitmap representation will be:
-
-    001011
-
-To access the bitmap, the decoder can use the following API:
-
-    bool bitmap_get(uint8_t *b, uint32_t blen, uint32_t bitpos);
-
-The `blen` parameter will be set to what the decode method gets
-as `numbytes`, and is used to prevent overflows. This way if `bitpos`
-is out of range, nothing bad happens.
-
-There are function to match and seek specific patterns inside the signal:
-
-    bool bitmap_match_bits(uint8_t *b, uint32_t blen, uint32_t bitpos, const char *bits);
-    uint32_t bitmap_seek_bits(uint8_t *b, uint32_t blen, uint32_t startpos, uint32_t maxbits, const char *bits);
-
-Finally, there are functions to convert from different line codes:
-
-    uint32_t convert_from_line_code(uint8_t *buf, uint64_t buflen, uint8_t *bits, uint32_t len, uint32_t offset, const char *zero_pattern, const char *one_pattern);
-    uint32_t convert_from_diff_manchester(uint8_t *buf, uint64_t buflen, uint8_t *bits, uint32_t len, uint32_t off, bool previous);
-
-This method can also access the short pulse duration by inspecting the
-`info->short_pulse_dur` field (in microseconds).
-
-Please check the `b4b1.c` file for an easy to understand example of the decoder implementation.
-
-If the decoder actually detected a message, it will return `true` and will return a set of fields, like thata:
-
-    fieldset_add_bytes(info->fieldset,"id",d,5);
-    fieldset_add_uint(info->fieldset,"button",d[2]&0xf,4);
-
-## `get_fields()` method.
-
-    static void get_fields(ProtoViewFieldSet *fieldset);
-
-This method will be basically a copy of the final part of `decode()`, as
-it also needs to return the set of fields this protocol is composed of.
-However instead of returning the values of an actual decoded message, it
-will just provide their default values for the signal creator view.
-
-Note that the `build_message()` method is guaranteed to receive the
-same exact fields in the same exact order.
-
-## `build_message()` method.
-
-    void build_message(RawSamplesBuffer *samples, ProtoViewFieldSet *fs);
-
-This method is responsible of creating a signal from scratch, by
-appending gaps and pulses of the specific duration into `samples`
-using the following API:
-
-    raw_samples_add(RawSamplesBuffer *samples, bool level, uint32_t duration);
-
-Level can be true (pules) or false (gap). Duration is in microseconds.
-The method receives a set of fields in `fs`. Each field is accessible
-directly accessing `fs->fields[... field index ...]`, where the field
-index is 0, 1, 2, ... in the same order as `get_fields()` returned the
-fields.
-
-For now, you can access the fields in the raw way, by getting the
-values directly from the data structure representing each field:
-
-```
-typedef struct {
-    ProtoViewFieldType type;
-    uint32_t len;       // Depends on type:
-                        // Bits for integers (signed,unsigned,binary,hex).
-                        // Number of characters for strings.
-                        // Number of nibbles for bytes (1 for each 4 bits).
-                        // Number of digits after dot for floats.
-    char *name;         // Field name.
-    union {
-        char *str;          // String type.
-        int64_t value;      // Signed integer type.
-        uint64_t uvalue;    // Unsigned integer type.
-        uint8_t *bytes;     // Raw bytes type.
-        float fvalue;       // Float type.
-    };
-} ProtoViewField;
-
-```
-
-However later the app will likely provide a set of macros to do it
-in a more future-proof way.
-
 # License
 
 The code is released under the BSD license.
@@ -280,10 +150,10 @@ This application is only provided as an educational tool. The author is not liab
 
 # Credits
 
-A big thank you to the RTL433 author, [Benjamin Larsson](https://github.com/merbanan). I used the code and tools he developed in many ways:
+A big thank you to the RTL433 author, Benjamin Larsson - https://github.com/merbanan I used the code and tools he developed in many ways:
 * To capture TPMS data with rtl433 and save to a file, to later play the IQ files and speedup the development.
 * As a sourve of documentation for protocols.
-* As an awesome way to visualize and understand protocols, via [these great web tools](https://triq.org/).
+* As an awesome way to visualize and understand protocols, via these great web tools - https://triq.org/
 * To have tons of fun with RTLSDR in general, now and in the past.
 
 The application icon was designed by Stefano Liuzzo.

BIN
base_pack/protoview/img/1.png


BIN
base_pack/protoview/img/2.png


BIN
base_pack/protoview/img/3.png


BIN
base_pack/sentry_safe/img/1.png


BIN
base_pack/sentry_safe/img/2.png


+ 7 - 0
base_pack/spectrum_analyzer/README.md

@@ -0,0 +1,7 @@
+This application allows you to plot a chart showing the relationship between amplitude and frequency, detecting nearby signal sources. If there is a nearby source broadcasting a signal at the observed frequency, the graph will go up sharply.
+
+The app has the following controls:
+
+- The OK button adjusts the width of the spectrum.
+- The Up and Down buttons zoom in and out.
+- The Left and Right buttons switch between different frequency bands.

BIN
base_pack/spectrum_analyzer/img/1.png


BIN
base_pack/spectrum_analyzer/img/2.png


BIN
base_pack/spectrum_analyzer/img/3.png


BIN
base_pack/swd_probe/img/1.png


BIN
base_pack/tetris_game/img/1.png


BIN
base_pack/tetris_game/img/2.png


BIN
base_pack/tetris_game/img/3.png


+ 1 - 1
base_pack/text_viewer/application.fam

@@ -13,6 +13,6 @@ App(
     fap_category="Tools",
     fap_icon_assets="icons",
     fap_author="@kowalski7cc & @kyhwana",
-    fap_version="1.0",
+    fap_version="1.1",
     fap_description="Text viewer application",
 )

BIN
base_pack/text_viewer/img/1.png


BIN
base_pack/text_viewer/img/2.png


BIN
base_pack/tictactoe_game/img/1.png


+ 5 - 0
base_pack/uart_terminal/README-catalog.md

@@ -0,0 +1,5 @@
+The UART Terminal application allows you to use UART (Universal Asynchronous Receiver-Transmitter) even without a computer, only with your Flipper Zero:
+
+1. On your Flipper Zero, run the UART Terminal app.
+2. Connect your Flipper Zero to a device that uses the UART  protocol for communication.
+3. Select the desired communication frequency. After that, you can start reading and writing data directly from the application.

+ 2 - 2
base_pack/uart_terminal/application.fam

@@ -10,6 +10,6 @@ App(
     fap_category="GPIO",
     fap_icon_assets="assets",
     fap_author="@cool4uma & (some fixes by @xMasterX)",
-    fap_version="1.0",
-    fap_description="App to control various devices via UART interface.",
+    fap_version="1.1",
+    fap_description="Control various devices via the Flipper Zero UART interface.",
 )

BIN
base_pack/uart_terminal/img/1.png


BIN
base_pack/uart_terminal/img/2.png


BIN
base_pack/uart_terminal/img/3.png


BIN
base_pack/wav_player/img/1.png


BIN
base_pack/wav_player/img/2.png


BIN
base_pack/wav_player/img/3.png


BIN
base_pack/zombiez/img/1.png


BIN
base_pack/zombiez/img/2.png