Merge remote-tracking branch 'flipperdevices/dev' into ulcdict

This commit is contained in:
noproto
2025-08-17 17:54:56 -04:00
575 changed files with 16041 additions and 4749 deletions

102
.github/CODEOWNERS vendored
View File

@@ -1,69 +1,71 @@
# Who owns all the fish by default
* @skotopes @DrZlo13 @hedger @gsurkov
* @DrZlo13 @hedger @gsurkov
# Apps
/applications/debug/bt_debug_app/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/debug/accessor/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/battery_test_app/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/debug/bt_debug_app/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/debug/file_browser_test/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/lfrfid_debug/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/text_box_test/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/uart_echo/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/usb_mouse/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/usb_test/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/bt_debug_app/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/debug/accessor/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/battery_test_app/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/debug/bt_debug_app/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/debug/file_browser_test/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/lfrfid_debug/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/text_box_test/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/uart_echo/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/usb_mouse/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/debug/usb_test/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/archive/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/bad_usb/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/gpio/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/ibutton/ @skotopes @DrZlo13 @hedger @gsurkov
/applications/main/infrared/ @skotopes @DrZlo13 @hedger @gsurkov
/applications/main/nfc/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich @Astrrra
/applications/main/subghz/ @skotopes @DrZlo13 @hedger @gsurkov @Skorpionm
/applications/main/u2f/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/archive/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/bad_usb/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/gpio/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/main/ibutton/ @DrZlo13 @hedger @gsurkov
/applications/main/infrared/ @DrZlo13 @hedger @gsurkov
/applications/main/nfc/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/main/subghz/ @DrZlo13 @hedger @gsurkov @Skorpionm
/applications/main/u2f/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/bt/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/cli/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/crypto/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/desktop/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/dolphin/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/power/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/rpc/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/bt/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/cli/ @DrZlo13 @hedger @gsurkov @nminaylov @portasynthinca3
/applications/services/crypto/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/desktop/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/dolphin/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/power/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/rpc/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/bt_settings_app/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/desktop_settings/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/dolphin_passport/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/power_settings_app/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/bt_settings_app/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/services/desktop_settings/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/dolphin_passport/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/services/power_settings_app/ @DrZlo13 @hedger @gsurkov @gornekich
/applications/system/storage_move_to_sd/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/system/js_app/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/applications/system/storage_move_to_sd/ @DrZlo13 @hedger @gsurkov @nminaylov
/applications/system/js_app/ @DrZlo13 @hedger @gsurkov @nminaylov @portasynthinca3
/applications/debug/unit_tests/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov @gornekich @Astrrra @Skorpionm
/applications/debug/unit_tests/ @DrZlo13 @hedger @gsurkov @nminaylov @gornekich @Skorpionm
/applications/examples/example_thermo/ @skotopes @DrZlo13 @hedger @gsurkov
/applications/examples/example_thermo/ @DrZlo13 @hedger @gsurkov
# Firmware targets
/targets/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/targets/ @DrZlo13 @hedger @gsurkov @nminaylov
# Assets
/applications/main/infrared/resources/ @skotopes @DrZlo13 @hedger @gsurkov
/applications/main/infrared/resources/ @DrZlo13 @hedger @gsurkov
# Documentation
/documentation/ @skotopes @DrZlo13 @hedger @gsurkov @drunkbatya
/scripts/toolchain/ @skotopes @DrZlo13 @hedger @gsurkov @drunkbatya
/documentation/ @DrZlo13 @hedger @gsurkov @portasynthinca3
/scripts/toolchain/ @DrZlo13 @hedger @gsurkov
# Lib
/lib/stm32wb_copro/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/lib/digital_signal/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich
/lib/infrared/ @skotopes @DrZlo13 @hedger @gsurkov
/lib/lfrfid/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/lib/libusb_stm32/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/lib/mbedtls/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/lib/mjs/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/lib/nanopb/ @skotopes @DrZlo13 @hedger @gsurkov @nminaylov
/lib/nfc/ @skotopes @DrZlo13 @hedger @gsurkov @gornekich @Astrrra
/lib/one_wire/ @skotopes @DrZlo13 @hedger @gsurkov
/lib/subghz/ @skotopes @DrZlo13 @hedger @gsurkov @Skorpionm
/lib/stm32wb_copro/ @DrZlo13 @hedger @gsurkov @gornekich
/lib/digital_signal/ @DrZlo13 @hedger @gsurkov @gornekich
/lib/infrared/ @DrZlo13 @hedger @gsurkov
/lib/lfrfid/ @DrZlo13 @hedger @gsurkov @nminaylov
/lib/libusb_stm32/ @DrZlo13 @hedger @gsurkov @nminaylov
/lib/mbedtls/ @DrZlo13 @hedger @gsurkov @nminaylov
/lib/mjs/ @DrZlo13 @hedger @gsurkov @nminaylov @portasynthinca3
/lib/nanopb/ @DrZlo13 @hedger @gsurkov @nminaylov
/lib/nfc/ @DrZlo13 @hedger @gsurkov @gornekich
/lib/one_wire/ @DrZlo13 @hedger @gsurkov
/lib/subghz/ @DrZlo13 @hedger @gsurkov @Skorpionm
/lib/toolbox/ @DrZlo13 @hedger @gsurkov
/lib/toolbox/cli @DrZlo13 @hedger @gsurkov @portasynthinca3
# CI/CD
/.github/workflows/ @skotopes @DrZlo13 @hedger @gsurkov @drunkbatya
/.github/workflows/ @DrZlo13 @hedger @gsurkov

View File

@@ -12,6 +12,7 @@ env:
DEFAULT_TARGET: f7
FBT_TOOLCHAIN_PATH: /runner/_work
FBT_GIT_SUBMODULE_SHALLOW: 1
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
main:

View File

@@ -6,6 +6,7 @@ on:
env:
FBT_TOOLCHAIN_PATH: /runner/_work
FBT_GIT_SUBMODULE_SHALLOW: 1
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
compact:

View File

@@ -9,6 +9,7 @@ on:
env:
TARGETS: f7
DEFAULT_TARGET: f7
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
check-secret:
@@ -54,15 +55,13 @@ jobs:
fi
python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE"
- name: 'Generate documentation'
uses: mattnotmitt/doxygen-action@edge
env:
DOXY_SRC_ROOT: "${{ github.workspace }}"
DOXY_CONFIG_DIR: "${{ github.workspace }}/documentation/doxygen"
DOXY_OUTPUT_DIR: "${{ github.workspace }}/documentation/doxygen/build"
- name: install-doxygen
uses: AdarshRawat1/Install-Doxygen@v1.0
with:
working-directory: 'documentation/'
doxyfile-path: './doxygen/Doxyfile-awesome.cfg'
version: "1.12.0"
- name: 'Generate documentation'
run: ./fbt doxygen
- name: 'Upload documentation'
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/dev' && needs.check-secret.outputs.s3-valid-config == 'true' }}

View File

@@ -7,6 +7,7 @@ on:
env:
FBT_TOOLCHAIN_PATH: /runner/_work
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
merge_report:

View File

@@ -11,6 +11,7 @@ env:
DEFAULT_TARGET: f7
FBT_TOOLCHAIN_PATH: /runner/_work
FBT_GIT_SUBMODULE_SHALLOW: 1
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
analyse_c_cpp:

View File

@@ -5,64 +5,56 @@ on:
env:
TARGETS: f7
DEFAULT_TARGET: f7
FBT_TOOLCHAIN_PATH: /opt
FBT_TOOLCHAIN_PATH: /opt/
FBT_GIT_SUBMODULE_SHALLOW: 1
jobs:
run_units_on_bench:
runs-on: [self-hosted, FlipperZeroUnitTest]
runs-on: [ self-hosted, FlipperZeroTest ]
steps:
- name: 'Wipe workspace'
run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: ${{ github.event.pull_request.head.sha }}
- name: 'Get flipper from device manager (mock)'
id: device
run: |
echo "flipper=auto" >> $GITHUB_OUTPUT
- name: 'Flash unit tests firmware'
id: flashing
if: success()
timeout-minutes: 10
timeout-minutes: 5
run: |
./fbt resources firmware_latest flash SWD_TRANSPORT_SERIAL=2A0906016415303030303032 LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1
source scripts/toolchain/fbtenv.sh
./fbt resources firmware_latest flash LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1
- name: 'Wait for flipper and format ext'
id: format_ext
- name: 'Copy assets and unit data, reboot and wait for flipper'
id: copy
if: steps.flashing.outcome == 'success'
timeout-minutes: 5
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=120 await_flipper
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} format_ext
- name: 'Copy assets and unit data, reboot and wait for flipper'
id: copy
if: steps.format_ext.outcome == 'success'
timeout-minutes: 7
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=15 await_flipper
rm -rf build/latest/resources/dolphin
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} -f send build/latest/resources /ext
python3 scripts/power.py -p ${{steps.device.outputs.flipper}} reboot
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=15 await_flipper
python3 scripts/testops.py -t=15 await_flipper
python3 scripts/storage.py -f send build/latest/resources /ext
python3 scripts/storage.py -f send /region_data /ext/.int/.region_data
python3 scripts/power.py reboot
python3 scripts/testops.py -t=30 await_flipper
- name: 'Run units and validate results'
id: run_units
if: steps.copy.outcome == 'success'
timeout-minutes: 7
timeout-minutes: 5
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/testops.py run_units -p ${{steps.device.outputs.flipper}}
python3 scripts/testops.py run_units
- name: 'Upload test results'
if: failure() && steps.flashing.outcome == 'success' && steps.run_units.outcome != 'skipped'
uses: actions/upload-artifact@v4
with:
name: unit-tests_output
path: unit_tests*.txt
- name: 'Check GDB output'
if: failure() && steps.flashing.outcome == 'success'
run: |
./fbt gdb_trace_all SWD_TRANSPORT_SERIAL=2A0906016415303030303032 LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1
./fbt gdb_trace_all LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1

View File

@@ -1,73 +1,39 @@
name: 'Updater test'
on:
pull_request:
env:
TARGETS: f7
DEFAULT_TARGET: f7
FBT_TOOLCHAIN_PATH: /opt
FBT_TOOLCHAIN_PATH: /opt/
FBT_GIT_SUBMODULE_SHALLOW: 1
jobs:
test_updater_on_bench:
runs-on: [self-hosted, FlipperZeroUpdaterTest]
runs-on: [self-hosted, FlipperZeroTest ]
steps:
- name: 'Wipe workspace'
run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: false
ref: ${{ github.event.pull_request.head.sha }}
- name: 'Get flipper from device manager (mock)'
id: device
run: |
echo "flipper=auto" >> $GITHUB_OUTPUT
echo "stlink=0F020D026415303030303032" >> $GITHUB_OUTPUT
- name: 'Flashing target firmware'
id: first_full_flash
timeout-minutes: 10
timeout-minutes: 5
run: |
source scripts/toolchain/fbtenv.sh
./fbt flash_usb_full PORT=${{steps.device.outputs.flipper}} FORCE=1
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper
python3 scripts/testops.py -t=180 await_flipper
./fbt flash_usb_full FORCE=1
- name: 'Validating updater'
id: second_full_flash
timeout-minutes: 10
timeout-minutes: 5
if: success()
run: |
source scripts/toolchain/fbtenv.sh
./fbt flash_usb PORT=${{steps.device.outputs.flipper}} FORCE=1
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper
python3 scripts/testops.py -t=180 await_flipper
./fbt flash_usb FORCE=1
python3 scripts/testops.py -t=180 await_flipper
- name: 'Get last release tag'
id: release_tag
if: failure()
run: |
echo "tag=$(git tag -l --sort=-version:refname | grep -v "rc\|RC" | head -1)" >> $GITHUB_OUTPUT
- name: 'Wipe workspace'
run: find ./ -mount -maxdepth 1 -exec rm -rf {} \;
- name: 'Checkout latest release'
uses: actions/checkout@v4
if: failure()
with:
fetch-depth: 1
ref: ${{ steps.release_tag.outputs.tag }}
- name: 'Flash last release'
if: failure()
run: |
./fbt flash SWD_TRANSPORT_SERIAL=${{steps.device.outputs.stlink}} FORCE=1
- name: 'Wait for flipper and format ext'
if: failure()
run: |
source scripts/toolchain/fbtenv.sh
python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper
python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} format_ext