Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf9ca01621 | ||
|
|
86f5aae002 | ||
|
|
46f3a5c993 | ||
|
|
52015fb289 | ||
|
|
23ba62cd69 | ||
|
|
cd1e9d6945 | ||
|
|
c49b843096 | ||
|
|
0c35337bb7 | ||
|
|
e419b9865a | ||
|
|
a89cb55529 | ||
|
|
efa653c7cf | ||
|
|
07957617e5 | ||
|
|
903104239b | ||
|
|
291c5320bb | ||
|
|
edbc2f291e | ||
|
|
c32ee61a4f | ||
|
|
0995609391 | ||
|
|
29fef56be1 | ||
|
|
6a348dd304 | ||
|
|
32a96e580d | ||
|
|
54f03a39c2 | ||
|
|
a55189e2a4 | ||
|
|
14d10c0794 | ||
|
|
27818ccb1f | ||
|
|
0ebf26eff4 | ||
|
|
ac620e2b0e | ||
|
|
46115cdf6c | ||
|
|
f465c6edbb | ||
|
|
ad795ae7ef | ||
|
|
efff8d2f2e | ||
|
|
c9c9c74117 | ||
|
|
dc0f30dad9 | ||
|
|
38f261e23b | ||
|
|
cb1daaa4f1 | ||
|
|
b318b3e9ff | ||
|
|
117381e5a1 | ||
|
|
702cf5abc8 | ||
|
|
17011180d1 | ||
|
|
d85657b6b3 | ||
|
|
2fd01bb911 | ||
|
|
d23a892a16 | ||
|
|
16d06d75fe | ||
|
|
937a2204c1 | ||
|
|
aaf16ec0de | ||
|
|
cdd7c56b69 | ||
|
|
0fd985c67a | ||
|
|
e93606aa87 | ||
|
|
3933a77b72 | ||
|
|
ab665809ce | ||
|
|
56c5670956 | ||
|
|
a5cf675561 | ||
|
|
c6bec5ef4f | ||
|
|
883d387246 | ||
|
|
951f35c356 | ||
|
|
4e05a0e631 | ||
|
|
17d497e21e | ||
|
|
d5b46ffefb | ||
|
|
9d2298114c | ||
|
|
b93a970647 | ||
|
|
c6265ea29b | ||
|
|
8e0a81b89d | ||
|
|
6f39fd4803 | ||
|
|
41d10f9b3d | ||
|
|
1f97aa2e3c | ||
|
|
5b9038173b | ||
|
|
fde0a57595 | ||
|
|
3fb40944e6 | ||
|
|
e61cfa765a | ||
|
|
fd0dd6c324 | ||
|
|
8ff5e3c311 | ||
|
|
4974201851 | ||
|
|
b0b464e3fb | ||
|
|
57226fc902 | ||
|
|
cb9aee6422 | ||
|
|
b720fac88a | ||
|
|
22daa7cfc3 | ||
|
|
1c9fddf076 | ||
|
|
4380d9f156 | ||
|
|
a4da50c191 | ||
|
|
e881d69ab3 | ||
|
|
b041177398 | ||
|
|
f347d5a976 | ||
|
|
3a6da87288 | ||
|
|
5d94639d81 | ||
|
|
5dcfc48e10 | ||
|
|
20a95b2fec | ||
|
|
3605669cc5 | ||
|
|
fb1c28a0dd | ||
|
|
64a971e806 | ||
|
|
12db96a8ab | ||
|
|
4b50b8b70c | ||
|
|
0f24f8c105 | ||
|
|
238f39d0d8 | ||
|
|
4c3581735b | ||
|
|
689df5262d | ||
|
|
86c740d923 | ||
|
|
0aef017c15 | ||
|
|
cea3bc3b6a | ||
|
|
f3d08573a1 | ||
|
|
9e52a6eb6b | ||
|
|
faf669b457 | ||
|
|
e445b28d73 | ||
|
|
19e2eaa554 | ||
|
|
2571ad7f22 | ||
|
|
22a0870559 | ||
|
|
1c9d1f404a | ||
|
|
fabb1ccc2d | ||
|
|
6a432a93ad | ||
|
|
d2cca91ec8 | ||
|
|
6e483393e1 | ||
|
|
4dc688c25b | ||
|
|
585ce97358 | ||
|
|
592bf5f1ae | ||
|
|
a02aabbbda | ||
|
|
3365fc4fed | ||
|
|
a37ba6b815 | ||
|
|
ab1231667c | ||
|
|
fd7d8c1ea8 | ||
|
|
730bb318fb | ||
|
|
ce085b6895 | ||
|
|
f4c753b673 | ||
|
|
41191df7fd | ||
|
|
d5eb983caa | ||
|
|
853c609977 | ||
|
|
a900aef3e9 | ||
|
|
ed52f88a6c | ||
|
|
71ce73476b | ||
|
|
4f247a9e90 | ||
|
|
9f89d933da | ||
|
|
43b86fc17b | ||
|
|
03897a406e | ||
|
|
09a7668fe7 | ||
|
|
76fbf79bff | ||
|
|
bafe135a56 | ||
|
|
77b58feb92 | ||
|
|
57dafbc76d | ||
|
|
e116abaa9b | ||
|
|
fd9564e301 | ||
|
|
de133ebe09 | ||
|
|
fc03342591 | ||
|
|
bfdf60944f | ||
|
|
0290f601a0 | ||
|
|
2e5648f3f4 | ||
|
|
cffd268950 | ||
|
|
ddb85d034f | ||
|
|
55f770328c | ||
|
|
75a5334a9b | ||
|
|
696041410b | ||
|
|
72d3992092 | ||
|
|
c1d145c9cc | ||
|
|
6507bed882 | ||
|
|
2d8f3563f9 | ||
|
|
aa03d590d5 | ||
|
|
c1d1b654f2 | ||
|
|
6cd7812939 | ||
|
|
beb3c94790 | ||
|
|
d72836cdb8 | ||
|
|
fbae97706b | ||
|
|
7c7a0a6ab5 | ||
|
|
b9cc866a37 | ||
|
|
d68f1db025 | ||
|
|
13d88216e3 | ||
|
|
d6c2757f21 |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,15 @@
|
|||||||
|
## New Unleashed FW Dev Build
|
||||||
|
|
||||||
|
**Build** - (buildnum)
|
||||||
|
**Commit** - [(commitsha)](https://github.com/DarkFlippers/unleashed-firmware/commit/(commitsha))
|
||||||
|
### Sponsor our project -> [Patreon](https://patreon.com/mmxdev) or [Boosty](https://boosty.to/mmxdev)
|
||||||
|
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
|
||||||
|
|
||||||
|
### Install FW via Web Updater:
|
||||||
|
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz&target=f7&channel=dev-cfw&version=(buildnum)) > ` `
|
||||||
|
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz&target=f7&channel=dev-cfw&version=(buildnum)e) > `e`
|
||||||
|
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz&target=f7&channel=dev-cfw&version=(buildnum)c) > `c`
|
||||||
|
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
|
||||||
|
### Direct tgz download links:
|
||||||
|
[Default](https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz) > ` ` - [Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz) > `e` - [No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz) > `c`
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
**New Unleashed FW Dev Build**
|
||||||
|
|
||||||
|
**Build** - (buildnum)
|
||||||
|
**Commit** - [(commitsha)](https://github.com/DarkFlippers/unleashed-firmware/commit/(commitsha))
|
||||||
|
**Sponsor our project** -> [Patreon](https://patreon.com/mmxdev) or [Boosty](https://boosty.to/mmxdev)
|
||||||
|
|
||||||
|
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
|
||||||
|
|
||||||
|
**Install FW via Web Updater:**
|
||||||
|
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz&target=f7&channel=dev-cfw&version=(buildnum)) > ` `
|
||||||
|
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz&target=f7&channel=dev-cfw&version=(buildnum)e) > `e`
|
||||||
|
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz&target=f7&channel=dev-cfw&version=(buildnum)c) > `c`
|
||||||
|
|
||||||
|
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
|
||||||
|
|
||||||
|
**Direct tgz download links:**
|
||||||
|
[Default](https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz) > ` `
|
||||||
|
[Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz) > `e`
|
||||||
|
[No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz) > `c`
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
FROM ubuntu:hirsute
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
|
||||||
|
ca-certificates \
|
||||||
|
git \
|
||||||
|
wget \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
COPY entrypoint.sh /
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
bash
|
||||||
|
else
|
||||||
|
echo "Running $1"
|
||||||
|
set -ex
|
||||||
|
bash -c "$1"
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
## New Unleashed firmware released!
|
||||||
|
|
||||||
|
**Version:** (releasever)
|
||||||
|
**Github:** [Release](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/(releasever))
|
||||||
|
### Sponsor our project -> [Patreon](https://patreon.com/mmxdev) or [Boosty](https://boosty.to/mmxdev)
|
||||||
|
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
|
||||||
|
|
||||||
|
### Install FW via Web Updater:
|
||||||
|
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz&target=f7&channel=release-cfw&version=(releasever)) > ` `
|
||||||
|
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz&target=f7&channel=release-cfw&version=(releasever)e) > `e`
|
||||||
|
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz&target=f7&channel=release-cfw&version=(releasever)c) > `c`
|
||||||
|
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
|
||||||
|
### Direct tgz download links:
|
||||||
|
[Default](https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz) > ` ` - [Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz) > `e` - [No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz) > `c`
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
**New Unleashed firmware released**
|
||||||
|
|
||||||
|
**Version:** (releasever)
|
||||||
|
**Github:** [Release](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/(releasever))
|
||||||
|
**Sponsor our project** -> [Patreon](https://patreon.com/mmxdev) or [Boosty](https://boosty.to/mmxdev)
|
||||||
|
|
||||||
|
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
|
||||||
|
|
||||||
|
**Install FW via Web Updater:**
|
||||||
|
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz&target=f7&channel=release-cfw&version=(releasever)) > ` `
|
||||||
|
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz&target=f7&channel=release-cfw&version=(releasever)e) > `e`
|
||||||
|
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz&target=f7&channel=release-cfw&version=(releasever)c) > `c`
|
||||||
|
|
||||||
|
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
|
||||||
|
|
||||||
|
**Direct tgz download links:**
|
||||||
|
[Default](https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz) > ` `
|
||||||
|
[Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz) > `e`
|
||||||
|
[No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz) > `c`
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,14 @@
|
|||||||
|
Filetype: Flipper Animation
|
||||||
|
Version: 1
|
||||||
|
|
||||||
|
Width: 128
|
||||||
|
Height: 64
|
||||||
|
Passive frames: 4
|
||||||
|
Active frames: 0
|
||||||
|
Frames order: 0 1 2 3
|
||||||
|
Active cycles: 0
|
||||||
|
Frame rate: 3
|
||||||
|
Duration: 3600
|
||||||
|
Active cooldown: 0
|
||||||
|
|
||||||
|
Bubble slots: 0
|
||||||
|
After Width: | Height: | Size: 858 B |
|
After Width: | Height: | Size: 855 B |
|
After Width: | Height: | Size: 872 B |
|
After Width: | Height: | Size: 861 B |
|
After Width: | Height: | Size: 853 B |
|
After Width: | Height: | Size: 851 B |
|
After Width: | Height: | Size: 852 B |
|
After Width: | Height: | Size: 856 B |
|
After Width: | Height: | Size: 850 B |
|
After Width: | Height: | Size: 851 B |
|
After Width: | Height: | Size: 860 B |
|
After Width: | Height: | Size: 857 B |
|
After Width: | Height: | Size: 863 B |
@@ -0,0 +1,23 @@
|
|||||||
|
Filetype: Flipper Animation
|
||||||
|
Version: 1
|
||||||
|
|
||||||
|
Width: 128
|
||||||
|
Height: 64
|
||||||
|
Passive frames: 10
|
||||||
|
Active frames: 18
|
||||||
|
Frames order: 0 1 2 1 0 1 2 1 0 1 2 3 4 5 6 5 4 7 2 8 9 10 11 10 9 10 11 12
|
||||||
|
Active cycles: 1
|
||||||
|
Frame rate: 2
|
||||||
|
Duration: 3600
|
||||||
|
Active cooldown: 7
|
||||||
|
|
||||||
|
Bubble slots: 1
|
||||||
|
|
||||||
|
Slot: 0
|
||||||
|
X: 11
|
||||||
|
Y: 19
|
||||||
|
Text: HAPPY\nHOLIDAYS!
|
||||||
|
AlignH: Right
|
||||||
|
AlignV: Center
|
||||||
|
StartFrame: 22
|
||||||
|
EndFrame: 27
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,14 @@
|
|||||||
|
Filetype: Flipper Animation
|
||||||
|
Version: 1
|
||||||
|
|
||||||
|
Width: 128
|
||||||
|
Height: 64
|
||||||
|
Passive frames: 4
|
||||||
|
Active frames: 0
|
||||||
|
Frames order: 0 1 2 3
|
||||||
|
Active cycles: 0
|
||||||
|
Frame rate: 2
|
||||||
|
Duration: 3600
|
||||||
|
Active cooldown: 0
|
||||||
|
|
||||||
|
Bubble slots: 0
|
||||||
|
After Width: | Height: | Size: 820 B |
|
After Width: | Height: | Size: 881 B |
|
After Width: | Height: | Size: 788 B |
|
After Width: | Height: | Size: 816 B |
|
After Width: | Height: | Size: 864 B |
|
After Width: | Height: | Size: 798 B |
|
After Width: | Height: | Size: 813 B |
|
After Width: | Height: | Size: 879 B |
|
After Width: | Height: | Size: 855 B |
|
After Width: | Height: | Size: 772 B |
|
After Width: | Height: | Size: 817 B |
|
After Width: | Height: | Size: 867 B |
|
After Width: | Height: | Size: 866 B |
|
After Width: | Height: | Size: 809 B |
|
After Width: | Height: | Size: 795 B |
|
After Width: | Height: | Size: 870 B |
|
After Width: | Height: | Size: 852 B |
|
After Width: | Height: | Size: 805 B |
|
After Width: | Height: | Size: 858 B |
|
After Width: | Height: | Size: 830 B |
|
After Width: | Height: | Size: 828 B |
|
After Width: | Height: | Size: 585 B |
|
After Width: | Height: | Size: 431 B |
|
After Width: | Height: | Size: 812 B |
|
After Width: | Height: | Size: 281 B |
|
After Width: | Height: | Size: 270 B |
|
After Width: | Height: | Size: 236 B |
|
After Width: | Height: | Size: 485 B |
|
After Width: | Height: | Size: 771 B |
|
After Width: | Height: | Size: 887 B |
|
After Width: | Height: | Size: 809 B |
|
After Width: | Height: | Size: 890 B |
|
After Width: | Height: | Size: 819 B |
|
After Width: | Height: | Size: 799 B |
|
After Width: | Height: | Size: 817 B |
|
After Width: | Height: | Size: 875 B |
|
After Width: | Height: | Size: 823 B |
@@ -0,0 +1,23 @@
|
|||||||
|
Filetype: Flipper Animation
|
||||||
|
Version: 1
|
||||||
|
|
||||||
|
Width: 128
|
||||||
|
Height: 64
|
||||||
|
Passive frames: 18
|
||||||
|
Active frames: 19
|
||||||
|
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
|
||||||
|
Active cycles: 1
|
||||||
|
Frame rate: 2
|
||||||
|
Duration: 3600
|
||||||
|
Active cooldown: 7
|
||||||
|
|
||||||
|
Bubble slots: 1
|
||||||
|
|
||||||
|
Slot: 0
|
||||||
|
X: 21
|
||||||
|
Y: 25
|
||||||
|
Text: AAAAaAAAAHHh!!
|
||||||
|
AlignH: Right
|
||||||
|
AlignV: Bottom
|
||||||
|
StartFrame: 30
|
||||||
|
EndFrame: 32
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
Filetype: Flipper Animation Manifest
|
||||||
|
Version: 1
|
||||||
|
|
||||||
|
Name: L1_Happy_holidays_128x64
|
||||||
|
Min butthurt: 0
|
||||||
|
Max butthurt: 14
|
||||||
|
Min level: 1
|
||||||
|
Max level: 3
|
||||||
|
Weight: 3
|
||||||
|
|
||||||
|
Name: L1_Sleigh_ride_128x64
|
||||||
|
Min butthurt: 0
|
||||||
|
Max butthurt: 14
|
||||||
|
Min level: 1
|
||||||
|
Max level: 3
|
||||||
|
Weight: 4
|
||||||
|
|
||||||
|
Name: L1_New_year_128x64
|
||||||
|
Min butthurt: 0
|
||||||
|
Max butthurt: 14
|
||||||
|
Min level: 1
|
||||||
|
Max level: 3
|
||||||
|
Weight: 4
|
||||||
|
|
||||||
|
Name: L1_Halloween_128x64
|
||||||
|
Min butthurt: 0
|
||||||
|
Max butthurt: 14
|
||||||
|
Min level: 1
|
||||||
|
Max level: 3
|
||||||
|
Weight: 4
|
||||||
@@ -0,0 +1,246 @@
|
|||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
AccessModifierOffset: -4
|
||||||
|
AlignAfterOpenBracket: AlwaysBreak
|
||||||
|
AlignArrayOfStructures: None
|
||||||
|
AlignConsecutiveAssignments:
|
||||||
|
Enabled: false
|
||||||
|
AcrossEmptyLines: false
|
||||||
|
AcrossComments: false
|
||||||
|
AlignCompound: false
|
||||||
|
AlignFunctionPointers: false
|
||||||
|
PadOperators: true
|
||||||
|
AlignConsecutiveBitFields:
|
||||||
|
Enabled: true
|
||||||
|
AcrossEmptyLines: true
|
||||||
|
AcrossComments: true
|
||||||
|
AlignCompound: false
|
||||||
|
AlignFunctionPointers: false
|
||||||
|
PadOperators: true
|
||||||
|
AlignConsecutiveDeclarations:
|
||||||
|
Enabled: false
|
||||||
|
AcrossEmptyLines: false
|
||||||
|
AcrossComments: false
|
||||||
|
AlignCompound: false
|
||||||
|
AlignFunctionPointers: false
|
||||||
|
PadOperators: true
|
||||||
|
AlignConsecutiveMacros:
|
||||||
|
Enabled: true
|
||||||
|
AcrossEmptyLines: false
|
||||||
|
AcrossComments: true
|
||||||
|
AlignCompound: true
|
||||||
|
AlignFunctionPointers: false
|
||||||
|
PadOperators: true
|
||||||
|
AlignConsecutiveShortCaseStatements:
|
||||||
|
Enabled: false
|
||||||
|
AcrossEmptyLines: false
|
||||||
|
AcrossComments: false
|
||||||
|
AlignCaseColons: false
|
||||||
|
AlignEscapedNewlines: Left
|
||||||
|
AlignOperands: Align
|
||||||
|
AlignTrailingComments:
|
||||||
|
Kind: Never
|
||||||
|
OverEmptyLines: 0
|
||||||
|
AllowAllArgumentsOnNextLine: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowBreakBeforeNoexceptSpecifier: Never
|
||||||
|
AllowShortBlocksOnASingleLine: Never
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortCompoundRequirementOnASingleLine: true
|
||||||
|
AllowShortEnumsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: None
|
||||||
|
AllowShortIfStatementsOnASingleLine: WithoutElse
|
||||||
|
AllowShortLambdasOnASingleLine: All
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: Yes
|
||||||
|
AttributeMacros:
|
||||||
|
- __capability
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: false
|
||||||
|
BitFieldColonSpacing: Both
|
||||||
|
BraceWrapping:
|
||||||
|
AfterCaseLabel: false
|
||||||
|
AfterClass: false
|
||||||
|
AfterControlStatement: Never
|
||||||
|
AfterEnum: false
|
||||||
|
AfterExternBlock: false
|
||||||
|
AfterFunction: false
|
||||||
|
AfterNamespace: false
|
||||||
|
AfterObjCDeclaration: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
BeforeCatch: false
|
||||||
|
BeforeElse: false
|
||||||
|
BeforeLambdaBody: false
|
||||||
|
BeforeWhile: false
|
||||||
|
IndentBraces: false
|
||||||
|
SplitEmptyFunction: true
|
||||||
|
SplitEmptyRecord: true
|
||||||
|
SplitEmptyNamespace: true
|
||||||
|
BreakAdjacentStringLiterals: true
|
||||||
|
BreakAfterAttributes: Leave
|
||||||
|
BreakAfterJavaFieldAnnotations: false
|
||||||
|
BreakArrays: true
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeConceptDeclarations: Always
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
BreakBeforeInlineASMColon: OnlyMultiline
|
||||||
|
BreakBeforeTernaryOperators: false
|
||||||
|
BreakConstructorInitializers: BeforeComma
|
||||||
|
BreakInheritanceList: BeforeColon
|
||||||
|
BreakStringLiterals: false
|
||||||
|
ColumnLimit: 99
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
CompactNamespaces: false
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
EmptyLineAfterAccessModifier: Never
|
||||||
|
EmptyLineBeforeAccessModifier: LogicalBlock
|
||||||
|
ExperimentalAutoDetectBinPacking: false
|
||||||
|
FixNamespaceComments: false
|
||||||
|
ForEachMacros:
|
||||||
|
- foreach
|
||||||
|
- Q_FOREACH
|
||||||
|
- BOOST_FOREACH
|
||||||
|
- M_EACH
|
||||||
|
IfMacros:
|
||||||
|
- KJ_IF_MAYBE
|
||||||
|
IncludeBlocks: Preserve
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
SortPriority: 0
|
||||||
|
CaseSensitive: false
|
||||||
|
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||||
|
Priority: 3
|
||||||
|
SortPriority: 0
|
||||||
|
CaseSensitive: false
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
SortPriority: 0
|
||||||
|
CaseSensitive: false
|
||||||
|
IncludeIsMainRegex: '(Test)?$'
|
||||||
|
IncludeIsMainSourceRegex: ''
|
||||||
|
IndentAccessModifiers: false
|
||||||
|
IndentCaseBlocks: false
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentExternBlock: AfterExternBlock
|
||||||
|
IndentGotoLabels: true
|
||||||
|
IndentPPDirectives: None
|
||||||
|
IndentRequiresClause: false
|
||||||
|
IndentWidth: 4
|
||||||
|
IndentWrappedFunctionNames: true
|
||||||
|
InsertBraces: false
|
||||||
|
InsertNewlineAtEOF: true
|
||||||
|
InsertTrailingCommas: None
|
||||||
|
IntegerLiteralSeparator:
|
||||||
|
Binary: 0
|
||||||
|
BinaryMinDigits: 0
|
||||||
|
Decimal: 0
|
||||||
|
DecimalMinDigits: 0
|
||||||
|
Hex: 0
|
||||||
|
HexMinDigits: 0
|
||||||
|
JavaScriptQuotes: Leave
|
||||||
|
JavaScriptWrapImports: true
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||||
|
KeepEmptyLinesAtEOF: false
|
||||||
|
LambdaBodyIndentation: Signature
|
||||||
|
LineEnding: DeriveLF
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: None
|
||||||
|
ObjCBinPackProtocolList: Auto
|
||||||
|
ObjCBlockIndentWidth: 4
|
||||||
|
ObjCBreakBeforeNestedBlockParam: true
|
||||||
|
ObjCSpaceAfterProperty: true
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
PackConstructorInitializers: BinPack
|
||||||
|
PenaltyBreakAssignment: 10
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 30
|
||||||
|
PenaltyBreakComment: 10
|
||||||
|
PenaltyBreakFirstLessLess: 0
|
||||||
|
PenaltyBreakOpenParenthesis: 0
|
||||||
|
PenaltyBreakScopeResolution: 500
|
||||||
|
PenaltyBreakString: 10
|
||||||
|
PenaltyBreakTemplateDeclaration: 10
|
||||||
|
PenaltyExcessCharacter: 100
|
||||||
|
PenaltyIndentedWhitespace: 0
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PointerAlignment: Left
|
||||||
|
PPIndentWidth: -1
|
||||||
|
QualifierAlignment: Leave
|
||||||
|
ReferenceAlignment: Pointer
|
||||||
|
ReflowComments: false
|
||||||
|
RemoveBracesLLVM: false
|
||||||
|
RemoveParentheses: Leave
|
||||||
|
RemoveSemicolon: true
|
||||||
|
RequiresClausePosition: OwnLine
|
||||||
|
RequiresExpressionIndentation: OuterScope
|
||||||
|
SeparateDefinitionBlocks: Leave
|
||||||
|
ShortNamespaceLines: 1
|
||||||
|
SkipMacroDefinitionBody: false
|
||||||
|
SortIncludes: Never
|
||||||
|
SortJavaStaticImport: Before
|
||||||
|
SortUsingDeclarations: Never
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterLogicalNot: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceAroundPointerQualifiers: Default
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeCaseColon: false
|
||||||
|
SpaceBeforeCpp11BracedList: false
|
||||||
|
SpaceBeforeCtorInitializerColon: true
|
||||||
|
SpaceBeforeInheritanceColon: true
|
||||||
|
SpaceBeforeJsonColon: false
|
||||||
|
SpaceBeforeParens: Never
|
||||||
|
SpaceBeforeParensOptions:
|
||||||
|
AfterControlStatements: false
|
||||||
|
AfterForeachMacros: false
|
||||||
|
AfterFunctionDefinitionName: false
|
||||||
|
AfterFunctionDeclarationName: false
|
||||||
|
AfterIfMacros: false
|
||||||
|
AfterOverloadedOperator: false
|
||||||
|
AfterPlacementOperator: true
|
||||||
|
AfterRequiresInClause: false
|
||||||
|
AfterRequiresInExpression: false
|
||||||
|
BeforeNonEmptyParentheses: false
|
||||||
|
SpaceBeforeRangeBasedForLoopColon: true
|
||||||
|
SpaceBeforeSquareBrackets: false
|
||||||
|
SpaceInEmptyBlock: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: Never
|
||||||
|
SpacesInContainerLiterals: false
|
||||||
|
SpacesInLineCommentPrefix:
|
||||||
|
Minimum: 1
|
||||||
|
Maximum: -1
|
||||||
|
SpacesInParens: Never
|
||||||
|
SpacesInParensOptions:
|
||||||
|
InCStyleCasts: false
|
||||||
|
InConditionalStatements: false
|
||||||
|
InEmptyParentheses: false
|
||||||
|
Other: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: c++20
|
||||||
|
StatementAttributeLikeMacros:
|
||||||
|
- Q_EMIT
|
||||||
|
StatementMacros:
|
||||||
|
- Q_UNUSED
|
||||||
|
- QT_REQUIRE_VERSION
|
||||||
|
TabWidth: 4
|
||||||
|
UseTab: Never
|
||||||
|
VerilogBreakBetweenInstancePorts: true
|
||||||
|
WhitespaceSensitiveMacros:
|
||||||
|
- STRINGIZE
|
||||||
|
- PP_STRINGIZE
|
||||||
|
- BOOST_PP_STRINGIZE
|
||||||
|
- NS_SWIFT_NAME
|
||||||
|
- CF_SWIFT_NAME
|
||||||
|
...
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
CompileFlags:
|
||||||
|
Add:
|
||||||
|
- -Wno-unknown-warning-option
|
||||||
|
- -Wno-format
|
||||||
|
Remove:
|
||||||
|
- -mword-relocations
|
||||||
|
CompilationDatabase: "./build/latest"
|
||||||
|
|
||||||
|
Completion:
|
||||||
|
HeaderInsertion: Never
|
||||||
|
|
||||||
|
Diagnostics:
|
||||||
|
ClangTidy:
|
||||||
|
FastCheckFilter: None
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
If:
|
||||||
|
PathMatch: .*\.h
|
||||||
|
Diagnostics:
|
||||||
|
UnusedIncludes: None
|
||||||
@@ -0,0 +1,526 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: "Release firmware"
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: "Update submodules"
|
||||||
|
image: alpine/git
|
||||||
|
commands:
|
||||||
|
- git submodule sync
|
||||||
|
- git -c protocol.version=2 submodule update --init --force --recursive --jobs 4
|
||||||
|
- git submodule foreach git config --local gc.auto 0
|
||||||
|
- git log -1 --format='%H'
|
||||||
|
|
||||||
|
- name: "Build clean"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
commands:
|
||||||
|
- export DIST_SUFFIX=${DRONE_TAG}c
|
||||||
|
- export WORKFLOW_BRANCH_OR_TAG=release-cfw
|
||||||
|
- export FORCE_NO_DIRTY=yes
|
||||||
|
- export FBT_GIT_SUBMODULE_SHALLOW=1
|
||||||
|
- rm -rf applications/main/clock_app/resources/apps/
|
||||||
|
- rm -rf build/
|
||||||
|
- rm -rf dist/
|
||||||
|
- rm -rf .sconsign.dblite
|
||||||
|
- ./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
- mkdir artifacts-clean
|
||||||
|
- mv dist/f7-C/* artifacts-clean/
|
||||||
|
- ls -laS artifacts-clean
|
||||||
|
- ls -laS artifacts-clean/f7-update-${DRONE_TAG}c
|
||||||
|
environment:
|
||||||
|
FBT_TOOLS_CUSTOM_LINK:
|
||||||
|
from_secret: fbt_link
|
||||||
|
|
||||||
|
- name: "Build default"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
commands:
|
||||||
|
- export DIST_SUFFIX=${DRONE_TAG}
|
||||||
|
- export WORKFLOW_BRANCH_OR_TAG=release-cfw
|
||||||
|
- export FORCE_NO_DIRTY=yes
|
||||||
|
- export FBT_GIT_SUBMODULE_SHALLOW=1
|
||||||
|
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
|
||||||
|
- tar zxf all-the-apps-base.tgz
|
||||||
|
- mkdir -p applications/main/clock_app/resources/apps
|
||||||
|
- mkdir -p applications/main/clock_app/resources/apps_data
|
||||||
|
- cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
|
||||||
|
- cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
|
||||||
|
- rm -rf base_pack_build
|
||||||
|
- rm -rf all-the-apps-base.tgz
|
||||||
|
- rm -f build/f7-firmware-C/toolbox/version.*
|
||||||
|
- ./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
- mkdir artifacts-default
|
||||||
|
- mv dist/f7-C/* artifacts-default/
|
||||||
|
- ls -laS artifacts-default
|
||||||
|
- ls -laS artifacts-default/f7-update-${DRONE_TAG}
|
||||||
|
environment:
|
||||||
|
FBT_TOOLS_CUSTOM_LINK:
|
||||||
|
from_secret: fbt_link
|
||||||
|
|
||||||
|
- name: "Build with extra apps"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
commands:
|
||||||
|
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-extra.tgz
|
||||||
|
- tar zxf all-the-apps-extra.tgz
|
||||||
|
- mkdir -p applications/main/clock_app/resources/apps
|
||||||
|
- cp -R extra_pack_build/artifacts-extra/* applications/main/clock_app/resources/apps/
|
||||||
|
- rm -rf extra_pack_build
|
||||||
|
- export DIST_SUFFIX=${DRONE_TAG}e
|
||||||
|
- export WORKFLOW_BRANCH_OR_TAG=release-cfw
|
||||||
|
- export FORCE_NO_DIRTY=yes
|
||||||
|
- export FBT_GIT_SUBMODULE_SHALLOW=1
|
||||||
|
- rm -f build/f7-firmware-C/toolbox/version.*
|
||||||
|
- ./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
- mkdir artifacts-extra-apps
|
||||||
|
- mv dist/f7-C/* artifacts-extra-apps/
|
||||||
|
- ls -laS artifacts-extra-apps
|
||||||
|
- ls -laS artifacts-extra-apps/f7-update-${DRONE_TAG}e
|
||||||
|
- sed -i 's/(version)/'${DRONE_TAG}'/g' CHANGELOG.md
|
||||||
|
- echo '# Install FW via Web Updater:' >> CHANGELOG.md
|
||||||
|
- echo '### [Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/${DRONE_TAG}/flipper-z-f7-update-'${DRONE_TAG}'.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}') > ` `' >> CHANGELOG.md
|
||||||
|
- echo '' >> CHANGELOG.md
|
||||||
|
- echo '### [Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}'e) > `e`' >> CHANGELOG.md
|
||||||
|
- echo '' >> CHANGELOG.md
|
||||||
|
- echo '### [No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'c.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}'c) > `c`' >> CHANGELOG.md
|
||||||
|
environment:
|
||||||
|
FBT_TOOLS_CUSTOM_LINK:
|
||||||
|
from_secret: fbt_link
|
||||||
|
|
||||||
|
- name: "Bundle self-update packages"
|
||||||
|
image: joshkeegan/zip
|
||||||
|
commands:
|
||||||
|
- cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.tgz .
|
||||||
|
- cp artifacts-clean/flipper-z-f7-update-${DRONE_TAG}c.tgz .
|
||||||
|
- cp artifacts-default/flipper-z-f7-update-${DRONE_TAG}.tgz .
|
||||||
|
- zip -r artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.zip artifacts-extra-apps/f7-update-${DRONE_TAG}e
|
||||||
|
- zip -r artifacts-clean/flipper-z-f7-update-${DRONE_TAG}c.zip artifacts-clean/f7-update-${DRONE_TAG}c
|
||||||
|
- zip -r artifacts-default/flipper-z-f7-update-${DRONE_TAG}.zip artifacts-default/f7-update-${DRONE_TAG}
|
||||||
|
- tar czpf artifacts-default/flipper-z-any-scripts-${DRONE_TAG}.tgz scripts
|
||||||
|
- rm -rf artifacts-extra-apps/f7-update-${DRONE_TAG}
|
||||||
|
- rm -rf artifacts-clean/f7-update-${DRONE_TAG}
|
||||||
|
- rm -rf artifacts-default/f7-update-${DRONE_TAG}
|
||||||
|
- ls -laS artifacts-extra-apps
|
||||||
|
- ls -laS artifacts-clean
|
||||||
|
- ls -laS artifacts-default
|
||||||
|
- mv artifacts-default/ ${DRONE_TAG}
|
||||||
|
- ls -laS ${DRONE_TAG}
|
||||||
|
|
||||||
|
- name: "Upload default to updates srv"
|
||||||
|
image: appleboy/drone-scp:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
target:
|
||||||
|
from_secret: dep_target_new
|
||||||
|
source:
|
||||||
|
- ${DRONE_TAG}/*.tgz
|
||||||
|
- ${DRONE_TAG}/*.zip
|
||||||
|
- ${DRONE_TAG}/*.json
|
||||||
|
- ${DRONE_TAG}/*.elf
|
||||||
|
- ${DRONE_TAG}/*.dfu
|
||||||
|
- ${DRONE_TAG}/*.bin
|
||||||
|
|
||||||
|
- name: "Upload extra apps version to updates srv"
|
||||||
|
image: appleboy/drone-scp:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
target:
|
||||||
|
from_secret: dep_target_extra
|
||||||
|
source: flipper-z-f7-update-${DRONE_TAG}e.tgz
|
||||||
|
|
||||||
|
- name: "Upload clean version to updates srv"
|
||||||
|
image: appleboy/drone-scp:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
target:
|
||||||
|
from_secret: dep_target_extra
|
||||||
|
source: flipper-z-f7-update-${DRONE_TAG}c.tgz
|
||||||
|
|
||||||
|
- name: "Do Github release"
|
||||||
|
image: ddplugins/github-release
|
||||||
|
pull: never
|
||||||
|
settings:
|
||||||
|
github_url: https://github.com
|
||||||
|
repo_owner:
|
||||||
|
from_secret: github_repoowner
|
||||||
|
api_key:
|
||||||
|
from_secret: github_apikey
|
||||||
|
files:
|
||||||
|
- ${DRONE_TAG}/*.tgz
|
||||||
|
- ${DRONE_TAG}/*.zip
|
||||||
|
- artifacts-extra-apps/*.tgz
|
||||||
|
- artifacts-clean/*.tgz
|
||||||
|
title: ${DRONE_TAG}
|
||||||
|
note: CHANGELOG.md
|
||||||
|
checksum:
|
||||||
|
- md5
|
||||||
|
- sha1
|
||||||
|
- crc32
|
||||||
|
|
||||||
|
- name: "Trigger update server reindex"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
environment:
|
||||||
|
UPD_KEY:
|
||||||
|
from_secret: git_update_serv_token
|
||||||
|
UPD_URL:
|
||||||
|
from_secret: git_update_server_url
|
||||||
|
commands:
|
||||||
|
- curl -X POST -F 'key='$UPD_KEY'' $UPD_URL
|
||||||
|
|
||||||
|
- name: "Send discord notification"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
environment:
|
||||||
|
DISCORD_WEBHOOK:
|
||||||
|
from_secret: dis_release_webhook
|
||||||
|
commands:
|
||||||
|
- wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
|
||||||
|
- chmod +x ./discord.sh
|
||||||
|
- sed -n '/## Main changes/,/## Other changes/p' CHANGELOG.md | sed -e 's/## Main changes//' -e 's/## Other changes//' > changelogcut.txt
|
||||||
|
- head -c 1200 changelogcut.txt > changelogcutfin.txt
|
||||||
|
- truncate -s -1 changelogcutfin.txt
|
||||||
|
- tail -c +2 changelogcutfin.txt > changelogready.txt
|
||||||
|
- rm -f changelogcut.txt
|
||||||
|
- rm -f changelogcutfin.txt
|
||||||
|
- echo '' >> changelogready.txt
|
||||||
|
- echo '## [Read full changelog](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/'${DRONE_TAG}')' >> changelogready.txt
|
||||||
|
- sed -i 's/(releasever)/'${DRONE_TAG}'/g' .ci_files/release_msg_discord.txt
|
||||||
|
- sed -i 's/(releasever)/'${DRONE_TAG}'/g' .ci_files/release_msg_telegram.txt
|
||||||
|
- cp .ci_files/release_msg_telegram.txt tg_release_message.tpl
|
||||||
|
- ./discord.sh --title "Main changes" --description "$(jq -Rs . <changelogready.txt | cut -c 2- | rev | cut -c 2- | rev)" --timestamp --text "$(jq -Rs . <.ci_files/release_msg_discord.txt | cut -c 2- | rev | cut -c 2- | rev)"
|
||||||
|
|
||||||
|
- name: "Send notification to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid
|
||||||
|
format: markdown
|
||||||
|
message_file: tg_release_message.tpl
|
||||||
|
|
||||||
|
- name: "Send default build to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid
|
||||||
|
format: markdown
|
||||||
|
message: "Default build:"
|
||||||
|
document:
|
||||||
|
- ${DRONE_TAG}/flipper-z-f7-update-${DRONE_TAG}.tgz
|
||||||
|
|
||||||
|
- name: "Send clean build to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid
|
||||||
|
format: markdown
|
||||||
|
message: "Build with only main apps:"
|
||||||
|
document:
|
||||||
|
- flipper-z-f7-update-${DRONE_TAG}c.tgz
|
||||||
|
|
||||||
|
- name: "Send extra pack build to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid
|
||||||
|
format: markdown
|
||||||
|
message: "Build with extra apps:"
|
||||||
|
document:
|
||||||
|
- flipper-z-f7-update-${DRONE_TAG}e.tgz
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
|
||||||
|
node:
|
||||||
|
typ: dev2
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: "Dev build"
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: "Update submodules"
|
||||||
|
image: alpine/git
|
||||||
|
commands:
|
||||||
|
- git submodule sync
|
||||||
|
- git -c protocol.version=2 submodule update --init --force --recursive --jobs 4
|
||||||
|
- git submodule foreach git config --local gc.auto 0
|
||||||
|
- git log -1 --format='%H'
|
||||||
|
|
||||||
|
- name: "Build dev clean"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
commands:
|
||||||
|
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}c
|
||||||
|
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw
|
||||||
|
- export FORCE_NO_DIRTY=yes
|
||||||
|
- export FBT_GIT_SUBMODULE_SHALLOW=1
|
||||||
|
- rm -rf applications/main/clock_app/resources/apps/
|
||||||
|
- rm -rf build/
|
||||||
|
- rm -rf dist/
|
||||||
|
- rm -rf .sconsign.dblite
|
||||||
|
- ./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
- mkdir artifacts-clean
|
||||||
|
- mv dist/f7-C/* artifacts-clean/
|
||||||
|
- ls -laS artifacts-clean
|
||||||
|
- ls -laS artifacts-clean/f7-update-${DRONE_BUILD_NUMBER}c
|
||||||
|
environment:
|
||||||
|
FBT_TOOLS_CUSTOM_LINK:
|
||||||
|
from_secret: fbt_link
|
||||||
|
|
||||||
|
|
||||||
|
- name: "Build dev default"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
commands:
|
||||||
|
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}
|
||||||
|
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw
|
||||||
|
- export FORCE_NO_DIRTY=yes
|
||||||
|
- export FBT_GIT_SUBMODULE_SHALLOW=1
|
||||||
|
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
|
||||||
|
- tar zxf all-the-apps-base.tgz
|
||||||
|
- mkdir -p applications/main/clock_app/resources/apps
|
||||||
|
- mkdir -p applications/main/clock_app/resources/apps_data
|
||||||
|
- cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
|
||||||
|
- cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
|
||||||
|
- rm -rf base_pack_build
|
||||||
|
- rm -rf all-the-apps-base.tgz
|
||||||
|
- rm -f build/f7-firmware-C/toolbox/version.*
|
||||||
|
- ./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
- mkdir artifacts-default
|
||||||
|
- mv dist/f7-C/* artifacts-default/
|
||||||
|
- ls -laS artifacts-default
|
||||||
|
- ls -laS artifacts-default/f7-update-${DRONE_BUILD_NUMBER}
|
||||||
|
environment:
|
||||||
|
FBT_TOOLS_CUSTOM_LINK:
|
||||||
|
from_secret: fbt_link
|
||||||
|
|
||||||
|
- name: "Build dev with extra apps"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
commands:
|
||||||
|
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-extra.tgz
|
||||||
|
- tar zxf all-the-apps-extra.tgz
|
||||||
|
- mkdir -p applications/main/clock_app/resources/apps
|
||||||
|
- cp -R extra_pack_build/artifacts-extra/* applications/main/clock_app/resources/apps/
|
||||||
|
- rm -rf extra_pack_build
|
||||||
|
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}e
|
||||||
|
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw
|
||||||
|
- export FORCE_NO_DIRTY=yes
|
||||||
|
- export FBT_GIT_SUBMODULE_SHALLOW=1
|
||||||
|
- rm -f build/f7-firmware-C/toolbox/version.*
|
||||||
|
- ./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
- mkdir artifacts-extra-apps
|
||||||
|
- mv dist/f7-C/* artifacts-extra-apps/
|
||||||
|
- ls -laS artifacts-extra-apps
|
||||||
|
- ls -laS artifacts-extra-apps/f7-update-${DRONE_BUILD_NUMBER}e
|
||||||
|
environment:
|
||||||
|
FBT_TOOLS_CUSTOM_LINK:
|
||||||
|
from_secret: fbt_link
|
||||||
|
|
||||||
|
- name: "Bundle self-update packages"
|
||||||
|
image: joshkeegan/zip
|
||||||
|
commands:
|
||||||
|
- cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz .
|
||||||
|
- cp artifacts-clean/flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz .
|
||||||
|
- cp artifacts-default/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz .
|
||||||
|
- rm -rf artifacts-default/f7-update-${DRONE_BUILD_NUMBER}
|
||||||
|
- ls -laS artifacts-default
|
||||||
|
- mv artifacts-default/ dev
|
||||||
|
- ls -laS dev
|
||||||
|
|
||||||
|
- name: "Clean dev folder"
|
||||||
|
image: appleboy/drone-ssh:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
command_timeout: 30s
|
||||||
|
script:
|
||||||
|
- cd web/unleashedflip.com/public_html/fw/dev && rm -f ./*
|
||||||
|
|
||||||
|
- name: "Upload default to updates srv"
|
||||||
|
image: appleboy/drone-scp:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
target:
|
||||||
|
from_secret: dep_target_new
|
||||||
|
source:
|
||||||
|
- dev/*.tgz
|
||||||
|
- dev/*.zip
|
||||||
|
- dev/*.json
|
||||||
|
- dev/*.elf
|
||||||
|
- dev/*.dfu
|
||||||
|
- dev/*.bin
|
||||||
|
|
||||||
|
- name: "Upload extra apps version to updates srv"
|
||||||
|
image: appleboy/drone-scp:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
target:
|
||||||
|
from_secret: dep_target_extra
|
||||||
|
source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz
|
||||||
|
|
||||||
|
- name: "Upload clean version to updates srv"
|
||||||
|
image: appleboy/drone-scp:linux-amd64
|
||||||
|
settings:
|
||||||
|
host:
|
||||||
|
from_secret: dep_host
|
||||||
|
username:
|
||||||
|
from_secret: dep_user
|
||||||
|
password:
|
||||||
|
from_secret: dep_passwd
|
||||||
|
port:
|
||||||
|
from_secret: dep_port
|
||||||
|
target:
|
||||||
|
from_secret: dep_target_extra
|
||||||
|
source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz
|
||||||
|
|
||||||
|
- name: "Trigger update server reindex"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
environment:
|
||||||
|
UPD_KEY:
|
||||||
|
from_secret: git_update_serv_token
|
||||||
|
UPD_URL:
|
||||||
|
from_secret: git_update_server_url
|
||||||
|
commands:
|
||||||
|
- curl -X POST -F 'key='$UPD_KEY'' $UPD_URL
|
||||||
|
|
||||||
|
- name: "Send discord notification"
|
||||||
|
image: hfdj/fztools
|
||||||
|
pull: never
|
||||||
|
environment:
|
||||||
|
DISCORD_WEBHOOK:
|
||||||
|
from_secret: dis_dev_webhook
|
||||||
|
commands:
|
||||||
|
- wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
|
||||||
|
- chmod +x ./discord.sh
|
||||||
|
- sed -n '/## Main changes/,/## Other changes/p' CHANGELOG.md | sed -e 's/## Main changes//' -e 's/## Other changes//' > changelogcut.txt
|
||||||
|
- head -c 1200 changelogcut.txt > changelogcutfin.txt
|
||||||
|
- truncate -s -1 changelogcutfin.txt
|
||||||
|
- tail -c +2 changelogcutfin.txt > changelogready.txt
|
||||||
|
- rm -f changelogcut.txt
|
||||||
|
- rm -f changelogcutfin.txt
|
||||||
|
- echo '' >> changelogready.txt
|
||||||
|
- echo '## [Read full changelog](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md)' >> changelogready.txt
|
||||||
|
- sed -i 's/(buildnum)/'${DRONE_BUILD_NUMBER}'/g' .ci_files/devbuild_msg_discord.txt
|
||||||
|
- sed -i 's/(commitsha)/'${DRONE_COMMIT_SHA}'/g' .ci_files/devbuild_msg_discord.txt
|
||||||
|
- sed -i 's/(buildnum)/'${DRONE_BUILD_NUMBER}'/g' .ci_files/devbuild_msg_telegram.txt
|
||||||
|
- sed -i 's/(commitsha)/'${DRONE_COMMIT_SHA}'/g' .ci_files/devbuild_msg_telegram.txt
|
||||||
|
- cp .ci_files/devbuild_msg_telegram.txt tg_dev_message.tpl
|
||||||
|
- ./discord.sh --title "Changelog" --description "$(jq -Rs . <changelogready.txt | cut -c 2- | rev | cut -c 2- | rev)" --timestamp --text "$(jq -Rs . <.ci_files/devbuild_msg_discord.txt | cut -c 2- | rev | cut -c 2- | rev)"
|
||||||
|
|
||||||
|
- name: "Send message to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid_dev
|
||||||
|
format: markdown
|
||||||
|
message_file: tg_dev_message.tpl
|
||||||
|
|
||||||
|
- name: "Send default build to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid_dev
|
||||||
|
format: markdown
|
||||||
|
message: "Default Build:"
|
||||||
|
document:
|
||||||
|
- dev/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz
|
||||||
|
|
||||||
|
- name: "Send clean build to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid_dev
|
||||||
|
format: markdown
|
||||||
|
message: "Clean (Main apps only) Build:"
|
||||||
|
document:
|
||||||
|
- flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz
|
||||||
|
|
||||||
|
- name: "Send extra pack build to telegram"
|
||||||
|
image: appleboy/drone-telegram
|
||||||
|
settings:
|
||||||
|
token:
|
||||||
|
from_secret: tgtoken
|
||||||
|
to:
|
||||||
|
from_secret: tgid_dev
|
||||||
|
format: markdown
|
||||||
|
message: "Build with extra apps:"
|
||||||
|
document:
|
||||||
|
- flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- dev
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
|
node:
|
||||||
|
typ: dev2
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
charset = utf-8
|
||||||
|
|
||||||
|
[*.{cpp,h,c,py,sh}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
* text=auto eol=lf
|
||||||
|
*.bat eol=crlf
|
||||||
|
*.ps1 eol=crlf
|
||||||
|
*.cmd eol=crlf
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Default
|
||||||
|
* ARF Crew
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
name: Bug Report
|
||||||
|
description: Report a bug in Flipper-ARF firmware.
|
||||||
|
labels: ["bug"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for reporting a bug in Flipper-ARF. Please fill in as much detail as possible.
|
||||||
|
- type: input
|
||||||
|
id: firmware-version
|
||||||
|
attributes:
|
||||||
|
label: Firmware version
|
||||||
|
description: "ARF version or git commit hash."
|
||||||
|
placeholder: "e.g. ARF 0.1.2 or commit abc1234"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: hardware
|
||||||
|
attributes:
|
||||||
|
label: Hardware setup
|
||||||
|
description: "Which hardware configuration are you using?"
|
||||||
|
options:
|
||||||
|
- Flipper Zero (stock)
|
||||||
|
- Flipper Zero (modded antenna)
|
||||||
|
- Flipper Zero + external CC1101
|
||||||
|
- Other (describe below)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: protocol
|
||||||
|
attributes:
|
||||||
|
label: Protocol affected
|
||||||
|
description: "Which protocol is affected, if applicable?"
|
||||||
|
placeholder: "e.g. Kia V3/V4, PSA GROUP, Keeloq, Fiat Mystery"
|
||||||
|
- type: input
|
||||||
|
id: frequency
|
||||||
|
attributes:
|
||||||
|
label: Frequency & modulation
|
||||||
|
description: "RF frequency and modulation used, if relevant."
|
||||||
|
placeholder: "e.g. 433.92 MHz AM"
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Bug description
|
||||||
|
description: "A clear and concise description of the bug."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: repro
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: "How can this bug be reproduced?"
|
||||||
|
placeholder: |
|
||||||
|
1. Open SubGhz app
|
||||||
|
2. Load saved .sub file
|
||||||
|
3. Press Send
|
||||||
|
4. Observe error / unexpected behavior
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected
|
||||||
|
attributes:
|
||||||
|
label: Expected vs actual behavior
|
||||||
|
description: "What did you expect to happen, and what actually happened?"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Logs / screenshots
|
||||||
|
description: "Attach debug logs (via serial CLI) or screenshots if available."
|
||||||
|
render: Text
|
||||||
|
- type: textarea
|
||||||
|
id: anything-else
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: "Any other information that might help (vehicle model, .sub file contents, etc.)."
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
name: Feature Request
|
||||||
|
description: Suggest a new feature or improvement for Flipper-ARF.
|
||||||
|
labels: ["feature request"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for suggesting a feature for Flipper-ARF. Please describe your idea in detail.
|
||||||
|
- type: dropdown
|
||||||
|
id: category
|
||||||
|
attributes:
|
||||||
|
label: Category
|
||||||
|
description: "What area does this feature fall under?"
|
||||||
|
options:
|
||||||
|
- New protocol
|
||||||
|
- Protocol improvement
|
||||||
|
- UI / UX
|
||||||
|
- Build system / tooling
|
||||||
|
- Other
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: manufacturer
|
||||||
|
attributes:
|
||||||
|
label: Manufacturer / protocol
|
||||||
|
description: "Which manufacturer or protocol is this related to, if applicable?"
|
||||||
|
placeholder: "e.g. Toyota, Renault, Keeloq"
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: "Describe the feature you're suggesting."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: use-case
|
||||||
|
attributes:
|
||||||
|
label: Use case
|
||||||
|
description: "Why is this needed? What problem does it solve?"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: anything-else
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: "Any references, datasheets, links, or examples that support this request."
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
name: Protocol / Algorithm Submission
|
||||||
|
description: Submit a new protocol decoder, encoder, or cipher implementation.
|
||||||
|
labels: ["protocol", "contribution"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Use this template to submit a new protocol implementation or algorithm for inclusion in Flipper-ARF.
|
||||||
|
Include as much technical detail as possible — timing, frame structure, cipher type, and test captures.
|
||||||
|
- type: input
|
||||||
|
id: protocol-name
|
||||||
|
attributes:
|
||||||
|
label: Protocol name
|
||||||
|
description: "Name for the protocol (as it should appear in the firmware)."
|
||||||
|
placeholder: "e.g. Renault V2, Opel Corsa, Nissan V0"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: manufacturer
|
||||||
|
attributes:
|
||||||
|
label: Manufacturer / vehicle
|
||||||
|
description: "Which manufacturer or vehicles use this protocol?"
|
||||||
|
placeholder: "e.g. Renault Clio 2010-2018, Opel/Vauxhall Corsa D"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: frequency
|
||||||
|
attributes:
|
||||||
|
label: Frequency & modulation
|
||||||
|
description: "RF frequency and modulation type."
|
||||||
|
placeholder: "e.g. 433.92 MHz FM (FSK)"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: encoding
|
||||||
|
attributes:
|
||||||
|
label: Encoding
|
||||||
|
description: "How are bits encoded in the RF signal?"
|
||||||
|
options:
|
||||||
|
- PWM (Pulse Width Modulation)
|
||||||
|
- Manchester
|
||||||
|
- Differential Manchester
|
||||||
|
- OOK raw
|
||||||
|
- Other (describe in frame structure)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: timing
|
||||||
|
attributes:
|
||||||
|
label: Timing parameters
|
||||||
|
description: "Provide timing values for the protocol."
|
||||||
|
placeholder: |
|
||||||
|
te_short: 400 us
|
||||||
|
te_long: 800 us
|
||||||
|
te_delta: 150 us
|
||||||
|
Preamble: 16 pairs of alternating short pulses
|
||||||
|
Sync: 1200 us HIGH
|
||||||
|
Gap: 10000 us between bursts
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: frame-structure
|
||||||
|
attributes:
|
||||||
|
label: Frame structure
|
||||||
|
description: "Describe the bit layout — field positions, sizes, fixed vs rolling parts."
|
||||||
|
placeholder: |
|
||||||
|
Total bits: 68
|
||||||
|
Bits 0-31: Encrypted (KeeLoq)
|
||||||
|
Bits 32-59: Serial (28 bits)
|
||||||
|
Bits 60-63: Button code (4 bits)
|
||||||
|
Bits 64-67: CRC (4 bits, XOR of nibbles)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: cipher
|
||||||
|
attributes:
|
||||||
|
label: Cipher / rolling code type
|
||||||
|
description: "What cipher or rolling code scheme does this protocol use?"
|
||||||
|
options:
|
||||||
|
- None (static code)
|
||||||
|
- KeeLoq
|
||||||
|
- AES
|
||||||
|
- TEA / XTEA
|
||||||
|
- Hitag2
|
||||||
|
- Custom / proprietary
|
||||||
|
- Unknown (needs analysis)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: status
|
||||||
|
attributes:
|
||||||
|
label: Implementation status
|
||||||
|
description: "How far along is the implementation?"
|
||||||
|
options:
|
||||||
|
- Concept only (analysis / documentation)
|
||||||
|
- Decoder working
|
||||||
|
- Encoder working
|
||||||
|
- Both decoder and encoder working
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: captures
|
||||||
|
attributes:
|
||||||
|
label: Test captures
|
||||||
|
description: "Paste .sub file contents or raw pulse data for validation. Attach files if too large."
|
||||||
|
render: Text
|
||||||
|
- type: textarea
|
||||||
|
id: references
|
||||||
|
attributes:
|
||||||
|
label: References
|
||||||
|
description: "Links to datasheets, research papers, FCC filings, or related projects."
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
name: Key Recording Submission
|
||||||
|
description: Contribute captured keyfob recordings for protocol analysis.
|
||||||
|
labels: ["recording", "data"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Use this template to submit captured keyfob recordings (.sub files or raw data).
|
||||||
|
These recordings help with protocol reverse engineering, decoder validation, and cipher analysis.
|
||||||
|
|
||||||
|
**Tips for useful captures:**
|
||||||
|
- Record 10+ sequential presses per button without long gaps
|
||||||
|
- Note the exact button pressed for each capture
|
||||||
|
- If possible, capture from multiple buttons on the same fob
|
||||||
|
- Include the vehicle make, model, and year
|
||||||
|
- type: input
|
||||||
|
id: vehicle
|
||||||
|
attributes:
|
||||||
|
label: Vehicle / device
|
||||||
|
description: "Make, model, year, and any relevant trim info."
|
||||||
|
placeholder: "e.g. 2015 Fiat Panda 1.2 Pop"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: protocol
|
||||||
|
attributes:
|
||||||
|
label: Protocol (if known)
|
||||||
|
description: "Which protocol was detected, or select Unknown if not yet identified."
|
||||||
|
options:
|
||||||
|
- Unknown / new protocol
|
||||||
|
- VAG GROUP
|
||||||
|
- Cayenne
|
||||||
|
- PSA GROUP
|
||||||
|
- Ford V0
|
||||||
|
- Fiat SpA
|
||||||
|
- Fiat Mystery
|
||||||
|
- Subaru
|
||||||
|
- Siemens (Mazda)
|
||||||
|
- Kia V0
|
||||||
|
- Kia V1
|
||||||
|
- Kia V2
|
||||||
|
- Kia V3/V4
|
||||||
|
- Kia V5
|
||||||
|
- Kia V6
|
||||||
|
- Suzuki
|
||||||
|
- Mitsubishi V0
|
||||||
|
- Keeloq
|
||||||
|
- Other (specify below)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: frequency
|
||||||
|
attributes:
|
||||||
|
label: Frequency & modulation used
|
||||||
|
description: "The frequency and modulation setting used during capture."
|
||||||
|
placeholder: "e.g. 433.92 MHz AM650"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: buttons
|
||||||
|
attributes:
|
||||||
|
label: Button / function
|
||||||
|
description: "Which buttons were recorded and what they do."
|
||||||
|
placeholder: "e.g. Lock (Btn A), Unlock (Btn B), Trunk (Btn C)"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: num-captures
|
||||||
|
attributes:
|
||||||
|
label: Number of captures
|
||||||
|
description: "How many presses were recorded per button?"
|
||||||
|
placeholder: "e.g. 10 sequential presses per button"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
id: capture-method
|
||||||
|
attributes:
|
||||||
|
label: Capture method
|
||||||
|
description: "How were the signals captured?"
|
||||||
|
options:
|
||||||
|
- SubGhz Read RAW
|
||||||
|
- SubGhz decoded (saved .sub)
|
||||||
|
- External SDR (HackRF, RTL-SDR, etc.)
|
||||||
|
- Other
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: capture-data
|
||||||
|
attributes:
|
||||||
|
label: Capture data
|
||||||
|
description: "Paste .sub file contents here, or attach files. For multiple files, use separate code blocks labeled by button."
|
||||||
|
render: Text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: notes
|
||||||
|
attributes:
|
||||||
|
label: Notes
|
||||||
|
description: "Any observations — counter gaps, time between captures, battery changes, multiple fobs, etc."
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: true
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
## Summary
|
||||||
|
|
||||||
|
<!-- What changed and why? Keep it concise. -->
|
||||||
|
|
||||||
|
## Protocol(s) affected
|
||||||
|
|
||||||
|
<!-- Which protocol(s) does this PR touch? e.g. Kia V3/V4, PSA GROUP, none -->
|
||||||
|
|
||||||
|
## Type of change
|
||||||
|
|
||||||
|
- [ ] Bug fix
|
||||||
|
- [ ] New protocol
|
||||||
|
- [ ] Protocol improvement (encoder/decoder/display)
|
||||||
|
- [ ] Build system / infrastructure
|
||||||
|
- [ ] Other
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
<!-- How was this verified? Include hardware used, captures tested, etc. -->
|
||||||
|
|
||||||
|
## Checklist
|
||||||
|
|
||||||
|
- [ ] Built with `./fbt COMPACT=1 DEBUG=0 updater_package` (no errors)
|
||||||
|
- [ ] Flashed and tested on Flipper Zero
|
||||||
|
- [ ] No regressions in other protocols
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
name: Build Dev Firmware
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build firmware
|
||||||
|
run: |
|
||||||
|
export DIST_SUFFIX=Flipper-ARF
|
||||||
|
chmod +x fbt
|
||||||
|
./fbt COMPACT=1 DEBUG=0 updater_package
|
||||||
|
|
||||||
|
- name: Generate tag name
|
||||||
|
id: tag
|
||||||
|
run: echo "TAG=dev-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Detect firmware updater
|
||||||
|
id: firmware
|
||||||
|
run: |
|
||||||
|
DIR=$(ls -d dist/f7-* | head -n 1)
|
||||||
|
FILE="$DIR/flipper-z-f7-update-Flipper-ARF.tgz"
|
||||||
|
|
||||||
|
if [ ! -f "$FILE" ]; then
|
||||||
|
echo "Firmware file not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "FILE=$FILE" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: ${{ steps.tag.outputs.TAG }}
|
||||||
|
name: Dev Build ${{ steps.tag.outputs.TAG }}
|
||||||
|
files: ${{ steps.firmware.outputs.FILE }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
# For most projects, this workflow file will not need changing; you simply need
|
||||||
|
# to commit it to your repository.
|
||||||
|
#
|
||||||
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
|
# or to provide custom queries or build logic.
|
||||||
|
#
|
||||||
|
# ******** NOTE ********
|
||||||
|
# We have attempted to detect the languages in your repository. Please check
|
||||||
|
# the `language` matrix defined below to confirm you have the correct set of
|
||||||
|
# supported CodeQL languages.
|
||||||
|
#
|
||||||
|
name: "CodeQL"
|
||||||
|
run-name: "CodeQL Analyze ${{ github.ref_name }} by @${{ github.ACTOR }}"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["dev"]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||||
|
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||||
|
# - https://gh.io/supported-runners-and-hardware-resources
|
||||||
|
# - https://gh.io/using-larger-runners
|
||||||
|
# Consider using larger runners for possible analysis time improvements.
|
||||||
|
runs-on: [ "ubuntu-latest" ]
|
||||||
|
timeout-minutes: 60
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: ["cpp"]
|
||||||
|
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]
|
||||||
|
# Use only 'java' to analyze code written in Java, Kotlin or both
|
||||||
|
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
|
||||||
|
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||||
|
env:
|
||||||
|
PATH_SARIF_DIR: ".github/results.sarif"
|
||||||
|
PATH_SARIF_FILE: ".github/results.sarif/${{ matrix.language }}.sarif"
|
||||||
|
FBT_NO_SYNC: 0
|
||||||
|
DIST_SUFFIX: "codeql"
|
||||||
|
WORKFLOW_BRANCH_OR_TAG: release-cfw
|
||||||
|
LANG_CATEGORY: "/language:${{matrix.language}}"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Firmware Files
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
clean: "true"
|
||||||
|
submodules: "true"
|
||||||
|
fetch-depth: "0"
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v2
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
setup-python-dependencies: true
|
||||||
|
|
||||||
|
- name: Resolve CodeQL Build Env
|
||||||
|
uses: github/codeql-action/resolve-environment@v2
|
||||||
|
with:
|
||||||
|
language: ${{ matrix.language }}
|
||||||
|
#debug: true
|
||||||
|
|
||||||
|
- name: Build Firmware
|
||||||
|
shell: bash
|
||||||
|
if: ${{ success() }}
|
||||||
|
run: |
|
||||||
|
./fbt COMPACT=1 DEBUG=0 FBT_NO_SYNC=${{ env.FBT_NO_SYNC }}
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v2
|
||||||
|
if: ${{ success() }}
|
||||||
|
with:
|
||||||
|
threads: 4
|
||||||
|
category: "${{ env.LANG_CATEGORY }}"
|
||||||
|
output: "${{ env.PATH_SARIF_DIR }}"
|
||||||
|
upload-database: false
|
||||||
|
upload: "failure-only" # disable the upload here - we will upload in a different action
|
||||||
|
|
||||||
|
- name: Filter dirs for SARIF
|
||||||
|
uses: advanced-security/filter-sarif@v1
|
||||||
|
if: ${{ success() }}
|
||||||
|
with:
|
||||||
|
# filter out all test files unless they contain a sql-injection vulnerability
|
||||||
|
patterns: |
|
||||||
|
-build/**
|
||||||
|
-dist/**
|
||||||
|
-toolchain/**
|
||||||
|
-lib/**
|
||||||
|
input: "${{ env.PATH_SARIF_FILE }}"
|
||||||
|
output: "${{ env.PATH_SARIF_FILE }}"
|
||||||
|
|
||||||
|
- name: Upload CodeQL SARIF
|
||||||
|
uses: github/codeql-action/upload-sarif@v2
|
||||||
|
if: ${{ success() }}
|
||||||
|
with:
|
||||||
|
category: "${{ env.LANG_CATEGORY }}"
|
||||||
|
sarif_file: "${{ env.PATH_SARIF_FILE }}"
|
||||||
|
|
||||||
|
# optional: for debugging the uploaded sarif
|
||||||
|
# - name: Upload loc as a Build Artifact
|
||||||
|
# uses: actions/upload-artifact@v3
|
||||||
|
# with:
|
||||||
|
# name: sarif-results
|
||||||
|
# path: sarif-results
|
||||||
|
# retention-days: 1
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
*~
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*.gdb_history
|
||||||
|
*.old
|
||||||
|
|
||||||
|
|
||||||
|
# LSP
|
||||||
|
.cache
|
||||||
|
compile_commands.json
|
||||||
|
|
||||||
|
# JetBrains IDEs
|
||||||
|
.idea/
|
||||||
|
.claude/
|
||||||
|
# Sublime Text
|
||||||
|
.sublime-project.sublime-workspace
|
||||||
|
|
||||||
|
# Python VirtEnvironments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
|
||||||
|
# Python Byte-compiled / optimized files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.pickle
|
||||||
|
|
||||||
|
.obj/
|
||||||
|
bindings/
|
||||||
|
.DS_Store
|
||||||
|
.mxproject
|
||||||
|
Brewfile.lock.json
|
||||||
|
|
||||||
|
# Kate
|
||||||
|
.kateproject
|
||||||
|
.kateconfig
|
||||||
|
|
||||||
|
# kde
|
||||||
|
.directory
|
||||||
|
null.d
|
||||||
|
|
||||||
|
# SCons
|
||||||
|
.sconsign.dblite
|
||||||
|
|
||||||
|
|
||||||
|
# bundle output
|
||||||
|
/dist
|
||||||
|
/artifacts-default
|
||||||
|
/artifacts-ofw-anims
|
||||||
|
/artifacts-rgb-patch
|
||||||
|
/artifacts-extra-apps
|
||||||
|
/artifacts-clean
|
||||||
|
|
||||||
|
# SCons build dir
|
||||||
|
/build
|
||||||
|
|
||||||
|
# Toolchain
|
||||||
|
/toolchain
|
||||||
|
|
||||||
|
# openocd output file
|
||||||
|
openocd.log
|
||||||
|
|
||||||
|
# PVS Studio temporary files
|
||||||
|
.PVS-Studio/
|
||||||
|
PVS-Studio.log
|
||||||
|
*.PVS-Studio.*
|
||||||
|
|
||||||
|
.gdbinit
|
||||||
|
|
||||||
|
/fbt_options_local.py
|
||||||
|
|
||||||
|
# JS packages
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# cli_perf script output in case of errors
|
||||||
|
/block.bin
|
||||||
|
/return_block.bin
|
||||||
|
/RE-mario-full
|
||||||
|
|
||||||
|
#companion app
|
||||||
|
/companion
|
||||||
|
/Flipper-Android-App
|
||||||
|
|
||||||
|
#WIP not ready to push protocols
|
||||||
|
|
||||||
|
lib/subghz/protocols/subghz_protocol_honda_pandora.c
|
||||||
|
lib/subghz/protocols/honda_rolling.c
|
||||||
|
lib/subghz/protocols/honda_rolling.h
|
||||||
|
lib/subghz/protocols/honda_pandora.c
|
||||||
|
lib/subghz/protocols/honda_pandora.h
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
[submodule "lib/mlib"]
|
||||||
|
path = lib/mlib
|
||||||
|
url = https://github.com/P-p-H-d/mlib.git
|
||||||
|
[submodule "lib/nanopb"]
|
||||||
|
path = lib/nanopb
|
||||||
|
url = https://github.com/nanopb/nanopb.git
|
||||||
|
[submodule "assets/protobuf"]
|
||||||
|
path = assets/protobuf
|
||||||
|
url = https://github.com/flipperdevices/flipperzero-protobuf.git
|
||||||
|
shallow = false
|
||||||
|
[submodule "lib/libusb_stm32"]
|
||||||
|
path = lib/libusb_stm32
|
||||||
|
url = https://github.com/flipperdevices/libusb_stm32.git
|
||||||
|
[submodule "lib/FreeRTOS-Kernel"]
|
||||||
|
path = lib/FreeRTOS-Kernel
|
||||||
|
url = https://github.com/FreeRTOS/FreeRTOS-Kernel.git
|
||||||
|
[submodule "lib/microtar"]
|
||||||
|
path = lib/microtar
|
||||||
|
url = https://github.com/amachronic/microtar.git
|
||||||
|
[submodule "lib/mbedtls"]
|
||||||
|
path = lib/mbedtls
|
||||||
|
url = https://github.com/Mbed-TLS/mbedtls.git
|
||||||
|
[submodule "lib/heatshrink"]
|
||||||
|
path = lib/heatshrink
|
||||||
|
url = https://github.com/flipperdevices/heatshrink.git
|
||||||
|
[submodule "lib/st_cmsis_device_wb"]
|
||||||
|
path = lib/stm32wb_cmsis
|
||||||
|
url = https://github.com/STMicroelectronics/cmsis_device_wb
|
||||||
|
[submodule "lib/stm32wbxx_hal_driver"]
|
||||||
|
path = lib/stm32wb_hal
|
||||||
|
url = https://github.com/STMicroelectronics/stm32wbxx_hal_driver
|
||||||
|
[submodule "lib/stm32wb_copro"]
|
||||||
|
path = lib/stm32wb_copro
|
||||||
|
url = https://github.com/flipperdevices/stm32wb_copro.git
|
||||||
|
[submodule "subghz_remote"]
|
||||||
|
path = applications/main/subghz_remote
|
||||||
|
url = https://github.com/DarkFlippers/SubGHz_Remote.git
|
||||||
|
branch = ufw_main_app
|
||||||
|
[submodule "applications/main/flipperzero-subbrute"]
|
||||||
|
path = applications/main/flipperzero-subbrute
|
||||||
|
url = https://github.com/lupettohf/flipperzero-subbrute
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# MLib macros we can't do much about.
|
||||||
|
//-V:M_LET:1048,1044
|
||||||
|
//-V:M_EACH:1048,1044
|
||||||
|
//-V:ARRAY_DEF:760,747,568,776,729,712,654,1103
|
||||||
|
//-V:LIST_DEF:760,747,568,712,729,654,776,1103
|
||||||
|
//-V:LIST_DUAL_PUSH_DEF:524,760,774
|
||||||
|
//-V:BPTREE_DEF2:779,1086,557,773,512
|
||||||
|
//-V:DICT_DEF2:779,524,776,760,1044,1001,729,590,568,747,685,1103
|
||||||
|
//-V:ALGO_DEF:1048,747,1044
|
||||||
|
//-V:TUPLE_DEF2:524,590,1001,760
|
||||||
|
//-V:DEQUE_DEF:658,747,760
|
||||||
|
|
||||||
|
# Non-severe malloc/null pointer deref warnings
|
||||||
|
//-V::522:2,3
|
||||||
|
|
||||||
|
# Warning about headers with copyleft license
|
||||||
|
//-V::1042
|
||||||
|
|
||||||
|
# Potentially null argument warnings
|
||||||
|
//-V:memset:575
|
||||||
|
//-V:memcpy:575
|
||||||
|
//-V:memcmp:575
|
||||||
|
//-V:strlen:575
|
||||||
|
//-V:strcpy:575
|
||||||
|
//-V:strncpy:575
|
||||||
|
//-V:strchr:575
|
||||||
|
|
||||||
|
# For loop warning on M_FOREACH
|
||||||
|
//-V:for:1044
|
||||||
|
|
||||||
|
# Bitwise OR
|
||||||
|
//-V:bit:792
|
||||||
|
|
||||||
|
# Do not complain about similar code
|
||||||
|
//-V::525
|
||||||
|
|
||||||
|
# Common embedded development pointer operations
|
||||||
|
//-V::566
|
||||||
|
//-V::1032
|
||||||
|
|
||||||
|
# Warnings about length mismatch
|
||||||
|
//-V:property_value_out:666
|
||||||
|
|
||||||
|
# Model-related warnings
|
||||||
|
//-V:with_view_model:1044,1048
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
//V_EXCLUDE_PATH applications/examples/
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
--ignore-ccache -C gccarm --rules-config .pvsconfig -e lib/cmsis_core -e lib/fatfs -e lib/fnv1a-hash -e lib/FreeRTOS-Kernel -e lib/heatshrink -e lib/libusb_stm32 -e lib/mbedtls -e lib/microtar -e lib/mlib -e lib/stm32wb_cmsis -e lib/stm32wb_copro -e lib/stm32wb_hal -e lib/u8g2 -e lib/nanopb -e lib/mjs -e */arm-none-eabi/*
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"folders":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"path": ".",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"LSP": {
|
||||||
|
"clangd": {
|
||||||
|
"enabled": true,
|
||||||
|
"initializationOptions": {
|
||||||
|
// Set `"binary": "custom",` option in LSP-clangd config to use toolchain clangd
|
||||||
|
"custom_command": ["toolchain/current/bin/clangd"],
|
||||||
|
"clangd.compile-commands-dir": "build/latest",
|
||||||
|
"clangd.header-insertion": "never",
|
||||||
|
"clangd.query-driver": "**/arm-none-eabi-*",
|
||||||
|
"clangd.clang-tidy": true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Visual Studio Code workspace for Flipper Zero {#vscode}
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
* To start developing with VSCode, run `./fbt vscode_dist` in project root. _That should only be done once_
|
||||||
|
* After that, open firmware folder in VSCode: "File" > "Open folder"
|
||||||
|
|
||||||
|
For more details on fbt, see [fbt docs](../documentation/fbt.md).
|
||||||
|
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
Commands for building firmware are invoked through Build menu: Ctrl+Shift+B.
|
||||||
|
|
||||||
|
To attach a debugging session, first build and flash firmware, then choose your debug probe in Debug menu (Ctrl+Shift+D).
|
||||||
|
|
||||||
|
Note that you have to detach debugging session before rebuilding and re-flashing firmware.
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Protocol name allowlist filter: in Receiver Config, a new "Proto Filter"
|
||||||
|
field accepts a comma-separated list of protocol names (e.g. "Ford V2,VAG").
|
||||||
|
When set, the receiver ignores all decoded signals that are not in the list,
|
||||||
|
reducing RAM usage and increasing the chance of capturing the target protocol.
|
||||||
|
Leave empty to disable (default behavior, all protocols accepted).
|
||||||
|
Setting is persisted in last_subghz.settings under the ProtocolFilter key.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Protocol Filter: replaced free-text input with a dedicated protocol list
|
||||||
|
scene (Proto Filter in Receiver Config). All registered protocols are shown
|
||||||
|
as toggleable items (--- / ONLY). Selecting one or more protocols restricts
|
||||||
|
the receiver to only show those; leaving all as --- disables the filter.
|
||||||
|
The active count is shown inline in Receiver Config ("N set" or "All").
|
||||||
|
Filter is persisted across sessions and cleared by Reset to default.
|
||||||