diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 1b076ebc1..a1626c2cd 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,15 +1 @@
-# Lines starting with '#' are comments.
-# Each line is a file pattern followed by one or more owners.
-
-# More details are here: https://help.github.com/articles/about-codeowners/
-
-# The '*' pattern is global owners.
-
-# Order is important. The last matching pattern has the most precedence.
-# The folders are ordered as follows:
-
-# In each subsection folders are ordered first by depth, then alphabetically.
-# This should make it easy to add new rules without breaking existing ones.
-
-# Global rule:
-* @ClaraCrazy
+* @Willy-JL @Sil333033
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index b70b073d7..a9c2e81cc 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,13 +1,2 @@
-# These are supported funding model platforms
-
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: crazyco
-open_collective: # Replace with a single Open Collective username
-ko_fi: # Replace with a single Ko-fi username
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
-custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+ko_fi: willyjl
+custom: ["https://bunq.me/WillyJL", "https://paypal.me/willyjl1"]
diff --git a/.github/assets/badkb.png b/.github/assets/badkb.png
new file mode 100644
index 000000000..dd2e08131
Binary files /dev/null and b/.github/assets/badkb.png differ
diff --git a/.github/assets/logo.png b/.github/assets/logo.png
new file mode 100644
index 000000000..c9499ce07
Binary files /dev/null and b/.github/assets/logo.png differ
diff --git a/.github/assets/packs-done.png b/.github/assets/packs-done.png
new file mode 100644
index 000000000..8e10de573
Binary files /dev/null and b/.github/assets/packs-done.png differ
diff --git a/.github/assets/packs-folder.png b/.github/assets/packs-folder.png
new file mode 100644
index 000000000..13ba6a94a
Binary files /dev/null and b/.github/assets/packs-folder.png differ
diff --git a/.github/assets/packs-select.png b/.github/assets/packs-select.png
new file mode 100644
index 000000000..4aaadb86e
Binary files /dev/null and b/.github/assets/packs-select.png differ
diff --git a/.github/assets/settings.png b/.github/assets/settings.png
new file mode 100644
index 000000000..bd72696f7
Binary files /dev/null and b/.github/assets/settings.png differ
diff --git a/.github/workflow_data/devbuild.py b/.github/workflow_data/devbuild.py
index 3a2d8facc..2f00e8a87 100644
--- a/.github/workflow_data/devbuild.py
+++ b/.github/workflow_data/devbuild.py
@@ -5,26 +5,21 @@ import requests
import json
import os
-dev_share = os.environ["NC_HOST"] + "s/sGHsQB94a9x5CRs/download?path=/&files={files}"
+dev_share_id = ""
+dev_share = os.environ["NC_HOST"] + f"s/{dev_share_id}/download?path=/&files={{files}}"
if __name__ == "__main__":
with open(os.environ["GITHUB_EVENT_PATH"], "r") as f:
event = json.load(f)
client = nextcloud_client.Client(os.environ["NC_HOST"])
- _session = requests.session
- def session(*args, **kwargs):
- s = _session(*args, **kwargs)
- s.headers["User-Agent"] = os.environ["NC_USERAGENT"]
- return s
- requests.session = session
client.login(os.environ["NC_USER"], os.environ["NC_PASS"])
for file in (
os.environ["ARTIFACT_TGZ"],
os.environ["ARTIFACT_SDK"],
):
- path = f"XFW-Dev/{file}"
+ path = f"MNTM-Dev/{file}"
# try:
# client.delete(path)
# except Exception:
@@ -38,7 +33,7 @@ if __name__ == "__main__":
"content": None,
"embeds": [
{
- "title": "Devbuild infos:",
+ "title": "New Devbuild:",
"description": "",
"url": "",
"color": 16734443,
@@ -58,12 +53,12 @@ if __name__ == "__main__":
],
"author": {
"name": "Build Succeeded!",
- "icon_url": "https://cdn.discordapp.com/emojis/1080005692485795930.png"
- },
- "footer": {
- "text": "Build go brrrr",
- "icon_url": "https://cdn.discordapp.com/emojis/1059798228725403719.png"
+ # "icon_url": ""
},
+ # "footer": {
+ # "text": "Build go brrrr",
+ # "icon_url": ""
+ # },
"timestamp": dt.datetime.utcnow().isoformat()
}
],
diff --git a/.github/workflow_data/hotfix.py b/.github/workflow_data/hotfix.py
deleted file mode 100644
index 91a60868f..000000000
--- a/.github/workflow_data/hotfix.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/env python
-import datetime as dt
-import requests
-import pathlib
-import json
-import sys
-import os
-import re
-
-if __name__ == "__main__":
- with open(os.environ["GITHUB_EVENT_PATH"], "r") as f:
- event = json.load(f)
-
- release = requests.get(
- event["repository"]["releases_url"].rsplit("{/")[0] + "/latest",
- headers={
- "Accept": "application/vnd.github.v3+json",
- "Authorization": f"token {os.environ['GITHUB_TOKEN']}"
- }
- ).json()
-
- artifacts = {
- os.environ['ARTIFACT_TGZ']: "application/gzip",
- os.environ['ARTIFACT_ZIP']: "application/zip",
- os.environ['ARTIFACT_SDK']: "application/zip",
- }
-
- for asset in release["assets"]:
- req = requests.delete(
- asset["url"],
- headers={
- "Accept": "application/vnd.github.v3+json",
- "Authorization": f"token {os.environ['GITHUB_TOKEN']}"
- }
- )
- if not req.ok:
- print(f"{req.url = }\n{req.status_code = }\n{req.content = }")
- sys.exit(1)
-
- for artifact, mediatype in artifacts.items():
- req = requests.post(
- release["upload_url"].rsplit("{?", 1)[0],
- headers={
- "Accept": "application/vnd.github.v3+json",
- "Authorization": f"token {os.environ['GITHUB_TOKEN']}",
- "Content-Type": mediatype
- },
- params={
- "name": artifact
- },
- data=pathlib.Path(artifact).read_bytes()
- )
- if not req.ok:
- print(f"{req.url = }\n{req.status_code = }\n{req.content = }")
- sys.exit(1)
-
- hotfix_time = dt.datetime.now().strftime(r"%d-%m-%Y %H:%M")
- hotfix_desc = event['pull_request']['body']
- hotfix = f"- `{hotfix_time}`: {hotfix_desc}\n"
-
- body = release["body"]
- body = re.sub(
- r"(https://github\.com/Flipper-XFW/Xtreme-Firmware/releases/download/[A-Za-z0-9_-]+?/)[A-Za-z0-9_-]+",
- r"\1" + os.environ['VERSION_TAG'],
- body
- )
- body = body.replace("", "")
- insert = body.find("\n [//]: \n")
- body = body[:insert] + hotfix + body[insert:]
-
- req = requests.patch(
- release["url"],
- headers={
- "Accept": "application/vnd.github.v3+json",
- "Authorization": f"token {os.environ['GITHUB_TOKEN']}"
- },
- json={
- "body": body
- }
- )
- if not req.ok:
- print(f"{req.url = }\n{req.status_code = }\n{req.content = }")
- sys.exit(1)
-
- changelog = body.split("## 🚀 Changelog", 1)[1]
- with open(os.environ["ARTIFACT_TGZ"].removesuffix(".tgz") + ".md", "w") as f:
- f.write(changelog.strip() + "\n\n")
diff --git a/.github/workflow_data/release.md b/.github/workflow_data/release.md
index f3fdab973..f556bfb57 100644
--- a/.github/workflow_data/release.md
+++ b/.github/workflow_data/release.md
@@ -1,30 +1,32 @@
## ⬇️ Download
->### [🖥️ Web Updater (chrome)](https://flipper-xtre.me/update) [recommended]
+>### [🖥️ Web Updater (chrome)](https://momentum-fw.dev/update) [recommended]
->### [🐬 qFlipper Package (.tgz)](https://github.com/Flipper-XFW/Xtreme-Firmware/releases/download/{VERSION_TAG}/{ARTIFACT_TGZ})
+>### [🐬 qFlipper Package (.tgz)](https://github.com/Next-Flip/Momentum-Firmware/releases/download/{VERSION_TAG}/{ARTIFACT_TGZ})
->### [📦 Zipped Archive (.zip)](https://github.com/Flipper-XFW/Xtreme-Firmware/releases/download/{VERSION_TAG}/{ARTIFACT_ZIP})
+>### [📦 Zipped Archive (.zip)](https://github.com/Next-Flip/Momentum-Firmware/releases/download/{VERSION_TAG}/{ARTIFACT_ZIP})
-**Check the [install guide](https://github.com/Flipper-XFW/Xtreme-Firmware#install) if you're not sure, or [join our Discord](https://discord.gg/flipper-xtreme) if you have questions or encounter issues!**
+**Check the [install guide](https://github.com/Next-Flip/Momentum-Firmware#install) if you're not sure, or [join our Discord](https://discord.gg/momentum) if you have questions or encounter issues!**
## ❤️ Support
-If you like what you're seeing, **please consider donating to us**. We won't ever put this behind a paywall, but we'd still appreciate a few bucks!
+If you enjoy the firmware, please consider donating to the team, or sharing it with others! :D
-- **[Patreon](https://patreon.com/CynthiaLabs)**: ❤️ Account needed, subscription with perks across my entire org.
-- **[Wire-transfer](https://bunq.me/ClaraK)**: No account needed, one-time
-- **[Paypal](https://paypal.me/RdX2020)**: Account needed, one-time
-- **[ko-fi](https://ko-fi.com/cynthialabs)**: No account needed, one-time
-- **Monero**: `41kyWeeoVdK4quzQ4M9ikVGs6tCQCLfdx8jLExTNsAu2SF1QAyDqRdjfGM6EL8L9NpXwt89HJeAoGf1aoArk7nDr4AMMV4T`
+> **[Ko-fi](https://ko-fi.com/willyjl)**: One-off or Recurring, No signup required
-**Thanks for all your support <3**
+> **[Bank transfer](https://bunq.me/WillyJL)**: One-off, No signup required
+
+> **[PayPal](https://paypal.me/willyjl1)**: One-off, Signup required
+
+> **BCH**: `1EnCi1HF8Jw6m2dWSUwHLbCRbVBCQSyDKm`
+
+> **ETH**: `0x90b8284c3eba44108427e3148ff8efa0ae7a61a8`
+
+> **BTC**: `1EnCi1HF8Jw6m2dWSUwHLbCRbVBCQSyDKm`
+
+> **SHIB**: `0x90b8284c3eba44108427e3148ff8efa0ae7a61a8`
+
+> **DOGE**: `DNUdUqtmWaAiJ6yoV6hRNEh6Nn1Tg4Aorr`
+
+**Thank you <3**
## 🚀 Changelog
{CHANGELOG}
-
-
diff --git a/.github/workflow_data/version.sh b/.github/workflow_data/version.sh
index 7803bd3e9..2e98c4b04 100644
--- a/.github/workflow_data/version.sh
+++ b/.github/workflow_data/version.sh
@@ -6,8 +6,8 @@ import json
import os
with open(os.environ["GITHUB_EVENT_PATH"], "r") as f:
event = json.load(f)
-version = int(event["pull_request"]["title"].removeprefix("V").removesuffix(" Release").removesuffix(" Hotfix"))
+version = int(event["pull_request"]["title"].removeprefix("V").removesuffix(" Release")
date = dt.datetime.now().strftime("%d%m%Y")
-print(f"XFW-{version:04}_{date}", end="")
+print(f"MNTM-{version:03}_{date}", end="")
''')"
echo "VERSION_TAG=${VERSION_TAG}" >> $GITHUB_ENV
diff --git a/.github/workflow_data/webupdater.py b/.github/workflow_data/webupdater.py
index e9a861aaa..b30fc17fe 100644
--- a/.github/workflow_data/webupdater.py
+++ b/.github/workflow_data/webupdater.py
@@ -5,16 +5,10 @@ import os
if __name__ == "__main__":
client = nextcloud_client.Client(os.environ["NC_HOST"])
- _session = requests.session
- def session(*args, **kwargs):
- s = _session(*args, **kwargs)
- s.headers["User-Agent"] = os.environ["NC_USERAGENT"]
- return s
- requests.session = session
client.login(os.environ["NC_USER"], os.environ["NC_PASS"])
file = os.environ["ARTIFACT_TGZ"]
- path = f"XFW-Updater/{file}"
+ path = f"MNTM-Release/{file}"
try:
client.delete(path)
except Exception:
@@ -34,7 +28,7 @@ if __name__ == "__main__":
os.environ['ARTIFACT_TGZ'],
os.environ['ARTIFACT_TGZ'].removesuffix(".tgz") + ".md"
)
- for file in client.list("XFW-Updater"):
+ for file in client.list("MNTM-Release"):
if file.name.startswith(version) and file.name not in files:
try:
client.delete(file.path)
diff --git a/.github/workflows/hotfix.yml b/.github/workflows/hotfix.yml
deleted file mode 100644
index 2357afd4d..000000000
--- a/.github/workflows/hotfix.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-name: "Hotfix"
-
-on:
- pull_request_review:
- types: [submitted]
-
-env:
- TARGETS: f7
- DEFAULT_TARGET: f7
-
-jobs:
- hotfix:
- if: |
- github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name &&
- endsWith(github.event.pull_request.title, ' Hotfix') &&
- github.event.review.author_association == 'OWNER' &&
- startsWith(github.event.pull_request.title, 'V') &&
- github.event.pull_request.base.ref == 'main' &&
- github.event.pull_request.head.ref == 'dev' &&
- github.event.pull_request.state == 'open' &&
- github.event.pull_request.draft == false &&
- github.event.review.state == 'APPROVED'
- runs-on: ubuntu-latest
- permissions:
- contents: write
- steps:
-
- - name: 'Checkout code'
- uses: actions/checkout@v3
- with:
- fetch-depth: 0
- ref: ${{ github.event.pull_request.head.sha }}
-
- - name: "Read version tag"
- run: bash .github/workflow_data/version.sh
-
- - name: 'Build the firmware'
- run: |
- set -e
- for TARGET in ${TARGETS}; do
- TARGET_HW="$(echo "${TARGET}" | sed 's/f//')"; \
- ./fbt TARGET_HW=$TARGET_HW DIST_SUFFIX=$VERSION_TAG updater_package
- done
-
- - name: "Check for uncommitted changes"
- run: |
- git diff --exit-code
-
- - name: "Make tgz, zip and sdk"
- run: bash .github/workflow_data/package.sh
-
- - name: "Upload hotfix"
- env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- run: |
- python -m pip install requests
- python .github/workflow_data/hotfix.py
-
- - name: "Upload to webupdater"
- env:
- NC_HOST: "https://cloud.cynthialabs.net/"
- NC_USERAGENT: "${{ secrets.NC_USERAGENT }}"
- NC_USER: "${{ secrets.NC_USER }}"
- NC_PASS: "${{ secrets.NC_PASS }}"
- run: |
- python -m pip install pyncclient
- python .github/workflow_data/webupdater.py
-
- - name: "Merge pull request"
- uses: "pascalgn/automerge-action@v0.15.6"
- env:
- MERGE_LABELS: ""
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/webhook.yml b/.github/workflows/webhook.yml
index 6ea140c62..1de0b1de2 100644
--- a/.github/workflows/webhook.yml
+++ b/.github/workflows/webhook.yml
@@ -13,7 +13,6 @@ on:
workflow_run:
workflows:
- "Build"
- - "Hotfix"
- "Lint"
- "Release"
- "SonarCloud"
diff --git a/.gitmodules b/.gitmodules
index 0dd8d045e..642cd8979 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,6 @@
[submodule "applications/external"]
path = applications/external
- url = https://github.com/Flipper-XFW/Xtreme-Apps.git
+ url = https://github.com/Next-Flip/Momentum-Apps.git
[submodule "lib/mlib"]
path = lib/mlib
url = https://github.com/P-p-H-d/mlib.git
diff --git a/ReadMe.md b/ReadMe.md
index c1ee8b816..6d64ebf9b 100644
--- a/ReadMe.md
+++ b/ReadMe.md
@@ -1,81 +1,68 @@
-XFW - Xtreme Firmware for the Flipper Zero
-
-
+
+
for Flipper Zero
-This firmware is an extensive overhaul of the [Official Firmware](https://github.com/flipperdevices/flipperzero-firmware), and also features most of the awesome code-bits from [Unleashed](https://github.com/DarkFlippers/unleashed-firmware).
+This custom firmware is based on the [Official Firmware](https://github.com/flipperdevices/flipperzero-firmware), and features most of the awesome features from [Unleashed](https://github.com/DarkFlippers/unleashed-firmware). It is a direct continuation of the Xtreme firmware, built by the same (and only) developers who made that project special, until being unfairly thrown out.
-----
-What makes it special?
+Modus Operandi:
-We have spent many hours perfecting this code even further, and getting the most out of it.
-
-The goal of this Firmware is to regularly bring out amazing updates based on what the community wants, with an actual understanding of whats going on. Fixing bugs that are regularly talked about, broadening the capabilities of the Flipper with new exciting functionality, and most importantly, ensuring the easiest user experience possible.
+The goal of this firmware is to constantly push the bounds of what is possible with Flipper Zero, driving the innovation of many new groundbreaking features, while maintaining the easiest and most customizable user experience of any firmware. Fixing bugs promptly and ensuring a stable and compatible system is also of our utmost importance.
-- Feature-rich: We include all commonly found apps in the firmware, as long as they work.
+- Feature-rich: We include all third-party features and apps as long as they fulfill a useful purpose and they work correctly, aswell as implement ourselves many new exciting functionalities.
-- Stable: Many hours have been spent rewriting core parts of the Flipper's firmware as well as some of its apps to ensure stability. A task that was long needed on all Firmware, so we tackled it right away.
+- Stable: We ensure the most stable experience possible by having an actual understanding of what's going on, and proactively making all tweaks and additions backwards-, and inter-, compatible.
-- Customizable: Dont like the Animations, want to turn on/off the Home screen icons (battery, SD card etc), change the flippers name or anything like that? You absolutely can. No need to mess with code or deal with weird manifest files. Its all done with an App.
+- Customizable: You can tweak just about everything you see: add/remove apps from the menu, change the animations, replace icon graphics, change your Flipper's name, change how the main menu looks, setup different keybinds like never before, and so much more. All on-device, with no complicated configuration.
-Note, the below mentioned changes are only a few things we did. For a full list check [down here](https://github.com/Flipper-XFW/Xtreme-Firmware#List-of-Changes)
+Note that mentioned below are only a few of our staple additions to the firmware. For a full list check [down here](https://github.com/Next-Flip/Momentum-Firmware#List-of-Changes).
-----
-Xtreme Settings:
+Momentum Settings:
-We wrote a powerful yet easy-to-use application specifically for our Firmware, that gives you easy-access to most of the fancy things we implemented:
+We offer a powerful and easy-to-use application tailor-made for our firmware, that lets you configure everything you could dream of, and more:
-
-
-
+
-- Interface: Customize every bit of your Flipper, from the desktop animations, to the main menu apps, lockscreen style etc.
+- Interface: Tweak every part of your Flipper, from the desktop animations, to the main menu, lockscreen behavior, file browser, etc.
-- Protocols: Here you can configure BadKB, manage custom Subghz frequencies, and setup the GPIO pins mappings.
+- Protocols: Configure SubGhz settings, add/remove custom frequencies, and setup which GPIO pins are used by different external modules.
-- Misc: All the other options that don't fit elsewhere. Change your Flipper's name, xp level, and configure the RGB backlight.
+- Misc: Everything else that doesn't fit the previous categories. Change your Flipper's name, XP level, screen options, and configure the RGB backlight.
-----
-Animations / Asset Packs:
- Want to try some asset packs? Check here
-
-
+Animations / Asset Packs:
-We created our own improved Animation / Asset system that lets you create and cycle through your own `Asset Packs` with only a few button presses, allowing you to easily load custom Animations, Icons and Fonts like never before.
+We created our own improved Animation / Asset system that lets you create and cycle through your own `Asset Packs` with only a few button presses, allowing you to easily load custom Animations, Icons and Fonts like never before. Think of it as a Theme system that's never been easier.
-
-You can easily create your own pack, or find some user made ones on our website or on discord. Check here for a tutorial on creating your own. Essentially, each Asset Pack can configure its own Anims, Icons & Fonts.
+
+You can easily create your own pack, or find some community-made ones on our website or on Discord. Check here for a tutorial on creating your own. Essentially, each Asset Pack can configure its own Anims, Icons & Fonts.
-
-Once you have some packs, upload them to your Flipper in SD/asset_packs (if you did this right you should see SD/asset_packs/PackName/Anims and/or SD/asset_packs/PackName/Icons).
+
+Once you have some asset packs, upload them to your Flipper in SD/asset_packs (if you did this right you should see SD/asset_packs/PackName/Anims and/or SD/asset_packs/PackName/Icons). Alternatively, install directly using the website.
-
-After installing the packs to Flipper, hit the Arrow UP button on the main menu and go to Xtreme Settings. Here choose which pack you want and tweak the other settings how you prefer, then press back to reboot and enjoy your newly fully customized Flipper!
+
+After installing the packs to Flipper, hit the Arrow Up button on the main menu and go to Momentum Settings > Interface > Graphics. Here choose which asset pack you want and tweak the other settings how you prefer, then exit the app to reboot and enjoy your fully customized Flipper!
@@ -83,45 +70,41 @@ After installing the packs to Flipper, hit the Arrow UP button on t
Bad Keyboard:
-
-
-BadUSB is a wonderful app, but it lacks bluetooth capabilities. Now some might argue that its useless as you will always need authentication from both sides, but what if I told you that we found a solution to this problem?
-
-Bad-KB allows you to toggle between USB and Bluetooth mode for your attacks. In Bluetooth mode it allows you to spoof the name & MAC of the device to whatever you want. Being a JBL speaker or a wireless razer keyboard is easily doable, allowing you to trick people so you can run your payloads without needing a cable at hand.
+
+BadUSB is a great app, but it lacks Bluetooth connectivity. Bad-KB allows you to toggle between USB and Bluetooth mode for your attacks.
------
-
-Levels:
+In Bluetooth mode it allows you to spoof the display name and MAC address of the device to whatever you want. Showing up as a portable speaker or a wireless keyboard is easily doable, allowing you to get the attention of your target without needing a cable at hand.
-This Firmware has 30 levels, not just the basic 3 the official one has.
-
-With this new system in place, it allows for some cool stuff like locking animations behind a certain level. This can be done fairly easy: The idle_animations are tied to the level system. Specifically, the `Min level` variable of your manifest file is used here. Each level you reach, unlocks a new animation. The higher your level, the more animations people can see.
+In USB mode it also enables additional functionality to spoof the manufacturer and product names, as well as vendor and product IDs (VID/PID).
-----
List of changes:
-There are too many to name them all, this is a **non-comprehensive** list of the **most notable from an end-user perspective**. For a more detailed list, read through the [**changelogs**](https://github.com/Flipper-XFW/Xtreme-Firmware/releases) and commits/code. Also, you can find a **feature comparison with other firmwares** on [our website](https://flipper-xtre.me/#features).
+There are too many to name them all, this is a **non-comprehensive** list of the **most notable from an end-user perspective**. For a more detailed list, you can read through the [**changelogs**](https://github.com/Next-Flip/Momentum-Firmware/releases) and commits/code. Also, you can find a **feature comparison with other firmwares** on [our website](https://momentum-fw.dev/#features).
Note that this repo is always updated with the great work from our friends at [Unleashed](https://github.com/DarkFlippers/unleashed-firmware) and the latest changes from [OFW](https://github.com/flipperdevices/flipperzero-firmware). Below are mentioned only **our** changes that we can actually be credited for, so make sure to check their fantastic additions aswell. And a huge thank you to both teams!
```txt
[Added]
-- Xtreme App (Easy configuration of most features exclusive to Xtreme)
+- Momentum App (Easy configuration of features and behavior of the firmware)
- Asset Packs (Unparalleled theming and customization)
- More UI customization, redesigns and optimizations
- Bad-Keyboard App
- BLE Spam App
+- NFC Maker App
- Wardriver App
- File Search across SD Card
-- Easy spoofing (Name, Mac, Serial)
- Additional NFC parsers and protocols
- Subdriving (saving GPS coordinates for Sub-GHz)
+- Easy spoofing (Name, MAC address, Serial number)
- Enhanced RGB Backlight modes (Full customization & Rainbow mode)
- File management on device (Cut, Copy, Paste, Show, New Dir, etc.)
+- Remember Infrared GPIO settings and add IR Blaster support in apps
- Advanced Security measures (Lock on Boot, reset on false pins, etc.)
-- Remember Infrared GPIO and IR Blaster auto-detection + support in apps
+- Disk Image management (Mount and view image contents, open in Mass Storage)
+- Extended JavaScript API (Support for UsbDisk/Mass Storage, File operations)
```
```txt
[Updated]
@@ -129,12 +112,12 @@ Note that this repo is always updated with the great work from our friends at [U
- Enhanced WiFi support for easiest setup ever
- Extended keyboard with cursor movevent and symbols
- File Browser with Sorting, More supported File Types
-- Advanced and optimized Level System (Read more above)
-- Storage backend with instant rename and more optimizations
+- Advanced and optimized Level System (Up to 30 levels)
- Desktop Keybind system for full key and press/hold remapping
+- Storage backend with instant rename and virtual mounting for disk images
- Weather Station, POCSAG, TPMS protocols and more integrated into Sub-GHz
- Expanded Sub-GHz App (Duplicate detection & Ignore, Autosave, History improvements)
-- Improved Error Messages (Showing actual root)
+- Improved Error Messages (Showing source file paths)
```
```txt
[Removed]
@@ -148,26 +131,27 @@ Note that this repo is always updated with the great work from our friends at [U
Install:
-There are 3 methods to install Xtreme, we recommend you use the **Web Updater**, but choose whichever one you prefer:
+There are 3 methods to install Momentum, we recommend you use the **Web Updater**, but choose whichever one you prefer:
> Web Updater (Chrome)
-> - Open the latest release page and click on the
Web Updater link
> - Make sure qFlipper is closed
+> - Open the Web Updater
> - Click
Connect and select your Flipper from the list
> - Click
Flash and wait for the update to complete
>
> qFlipper Package (.tgz)
-> - Download the qFlipper package (.tgz) from the latest release page
+> - Download the qFlipper package (.tgz) from the latest release page
+> - Make sure the
WebUpdater and lab.flipper.net are closed
> - Open qFlipper and connect your Flipper
> - Click
Install from file
> - Select the .tgz you downloaded and wait for the update to complete
>
> Zipped Archive (.zip)
-> - Download the zipped archive (.zip) from the latest release page
+> - Download the zipped archive (.zip) from the latest release page
> - Extract the archive. This is now your new Firmware folder
> - Open qFlipper, head to
SD/update and simply move the firmware folder there
> - On the Flipper, hit the
Arrow Down button, this will get you to the file menu. In there simply search for your updates folder
@@ -180,13 +164,10 @@ There are 3 methods to install Xtreme, we recommend you use the **Web Updater**,
Build it yourself:
-> **Warning**
-> We will not give basic support for compiling in our server. This is intended for people that already *know* what they are doing!
-
```bash
-To download the needed tools:
-$ git clone --recursive --jobs 8 https://github.com/Flipper-XFW/Xtreme-Firmware.git
-$ cd Xtreme-Firmware/
+To download the repository:
+$ git clone --recursive --jobs 8 https://github.com/Next-Flip/Momentum-Firmware.git
+$ cd Momentum-Firmware/
To flash directly to the Flipper (Needs to be connected via USB, qFlipper closed)
$ ./fbt flash_usb_full
@@ -201,25 +182,32 @@ $ ./fbt launch APPSRC=your_appid
----
Stargazers over time
-[](https://starchart.cc/Flipper-XFW/Xtreme-Firmware)
+[](https://starchart.cc/Next-Flip/Momentum-Firmware)
-----
+
## ❤️ Support
-If you like what you're seeing, **please consider donating to us**. We won't ever put this behind a paywall, but we'd still appreciate a few bucks!
+If you enjoy the firmware, please consider donating to the team, or sharing it with others! :D
-- **[Patreon](https://patreon.com/crazyco)**: ❤️ Account needed, subscription with perks across my entire org.
-- **[Wire-transfer](https://bunq.me/ClaraK)**: No account needed, one-time
-- **[Paypal](https://paypal.me/ClaraCrazy)**: Account needed, one-time
-- **[ko-fi](https://ko-fi.com/cynthialabs)**: No account needed, one-time
-- **Monero**: `41kyWeeoVdK4quzQ4M9ikVGs6tCQCLfdx8jLExTNsAu2SF1QAyDqRdjfGM6EL8L9NpXwt89HJeAoGf1aoArk7nDr4AMMV4T`
+> **[Ko-fi](https://ko-fi.com/willyjl)**: One-off or Recurring, No signup required
-**Thanks for all your support <3**
+> **[Bank transfer](https://bunq.me/WillyJL)**: One-off, No signup required
-----
- "What we do for ourselves dies with us. What we do for others and the world remains and is immortal.” ― Albert Pine
+> **[PayPal](https://paypal.me/willyjl1)**: One-off, Signup required
+
+> **BCH**: `1EnCi1HF8Jw6m2dWSUwHLbCRbVBCQSyDKm`
+
+> **ETH**: `0x90b8284c3eba44108427e3148ff8efa0ae7a61a8`
+
+> **BTC**: `1EnCi1HF8Jw6m2dWSUwHLbCRbVBCQSyDKm`
+
+> **SHIB**: `0x90b8284c3eba44108427e3148ff8efa0ae7a61a8`
+
+> **DOGE**: `DNUdUqtmWaAiJ6yoV6hRNEh6Nn1Tg4Aorr`
+
+**Thank you <3**
diff --git a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c
index 75d6c2b1b..9dc333a7e 100644
--- a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c
+++ b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c
@@ -225,15 +225,15 @@ bool subghz_device_cc1101_ext_alloc(SubGhzDeviceConf* conf) {
subghz_device_cc1101_ext->async_rx.capture_delta_duration = 0;
subghz_device_cc1101_ext->spi_bus_handle =
- (xtreme_settings.spi_cc1101_handle == SpiDefault ?
+ (momentum_settings.spi_cc1101_handle == SpiDefault ?
&furi_hal_spi_bus_handle_external :
&furi_hal_spi_bus_handle_external_extra);
// this is needed if multiple SPI devices are connected to the same bus but with different CS pins
- if(xtreme_settings.spi_cc1101_handle == SpiDefault && !furi_hal_subghz_get_ext_power_amp()) {
+ if(momentum_settings.spi_cc1101_handle == SpiDefault && !furi_hal_subghz_get_ext_power_amp()) {
furi_hal_gpio_init_simple(&gpio_ext_pc3, GpioModeOutputPushPull);
furi_hal_gpio_write(&gpio_ext_pc3, true);
- } else if(xtreme_settings.spi_cc1101_handle == SpiExtra) {
+ } else if(momentum_settings.spi_cc1101_handle == SpiExtra) {
furi_hal_gpio_init_simple(&gpio_ext_pa4, GpioModeOutputPushPull);
furi_hal_gpio_write(&gpio_ext_pa4, true);
}
@@ -254,9 +254,9 @@ void subghz_device_cc1101_ext_free() {
furi_hal_spi_bus_handle_deinit(subghz_device_cc1101_ext->spi_bus_handle);
// resetting the CS pins to floating
- if(xtreme_settings.spi_nrf24_handle == SpiDefault || subghz_device_cc1101_ext->power_amp) {
+ if(momentum_settings.spi_nrf24_handle == SpiDefault || subghz_device_cc1101_ext->power_amp) {
furi_hal_gpio_init_simple(&gpio_ext_pc3, GpioModeAnalog);
- } else if(xtreme_settings.spi_nrf24_handle == SpiExtra) {
+ } else if(momentum_settings.spi_nrf24_handle == SpiExtra) {
furi_hal_gpio_init_simple(&gpio_ext_pa4, GpioModeAnalog);
}
diff --git a/applications/drivers/subghz/cc1101_ext/cc1101_ext.h b/applications/drivers/subghz/cc1101_ext/cc1101_ext.h
index 9cd3ba346..31e740189 100644
--- a/applications/drivers/subghz/cc1101_ext/cc1101_ext.h
+++ b/applications/drivers/subghz/cc1101_ext/cc1101_ext.h
@@ -11,7 +11,7 @@
#include
#include
#include
-#include
+#include
#ifdef __cplusplus
extern "C" {
diff --git a/applications/external b/applications/external
index 58b9cb176..dae7906c1 160000
--- a/applications/external
+++ b/applications/external
@@ -1 +1 @@
-Subproject commit 58b9cb17697233b71a762fcdcd877c9e90b83173
+Subproject commit dae7906c1abb4fd6d4198669a84d92dd1902032b
diff --git a/applications/main/application.fam b/applications/main/application.fam
index 6514692f7..fdcb80735 100644
--- a/applications/main/application.fam
+++ b/applications/main/application.fam
@@ -11,7 +11,7 @@ App(
"subghz",
"bad_kb",
"u2f",
- "xtreme_app",
+ "momentum_app",
"archive",
"main_apps_on_start",
],
diff --git a/applications/main/archive/helpers/archive_browser.c b/applications/main/archive/helpers/archive_browser.c
index 6bf479ea3..dd9a323eb 100644
--- a/applications/main/archive/helpers/archive_browser.c
+++ b/applications/main/archive/helpers/archive_browser.c
@@ -553,7 +553,7 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) {
} else {
tab = (tab + 1) % ArchiveTabTotal;
}
- if(tab == ArchiveTabInternal && !xtreme_settings.show_internal_tab) continue;
+ if(tab == ArchiveTabInternal && !momentum_settings.show_internal_tab) continue;
break;
}
@@ -587,7 +587,7 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) {
// Hide dot files everywhere except Browser if in debug mode
bool hide_dot_files = !is_browser ? true :
tab == ArchiveTabInternal ? false :
- !xtreme_settings.show_hidden_files;
+ !momentum_settings.show_hidden_files;
archive_file_browser_set_path(
browser, browser->path, archive_get_tab_ext(tab), skip_assets, hide_dot_files);
tab_empty = false; // Empty check will be performed later
diff --git a/applications/main/archive/helpers/archive_favorites.h b/applications/main/archive/helpers/archive_favorites.h
index dfeb18e76..308355899 100644
--- a/applications/main/archive/helpers/archive_favorites.h
+++ b/applications/main/archive/helpers/archive_favorites.h
@@ -2,9 +2,8 @@
#include
-#define ARCHIVE_FAV_OLD_PATH EXT_PATH("favorites.txt")
-#define ARCHIVE_FAV_PATH CFG_PATH("favorites.txt")
-#define ARCHIVE_FAV_TEMP_PATH CFG_PATH("favorites.tmp")
+#define ARCHIVE_FAV_PATH ANY_PATH("favorites.txt")
+#define ARCHIVE_FAV_TEMP_PATH ANY_PATH("favorites.tmp")
uint16_t archive_favorites_count();
bool archive_favorites_read(void* context);
diff --git a/applications/main/archive/helpers/archive_files.h b/applications/main/archive/helpers/archive_files.h
index 0bcf66d65..61232f943 100644
--- a/applications/main/archive/helpers/archive_files.h
+++ b/applications/main/archive/helpers/archive_files.h
@@ -5,7 +5,7 @@
#include
#include
#include "toolbox/path.h"
-#include
+#include
#define FAP_MANIFEST_MAX_ICON_SIZE 32
@@ -87,7 +87,7 @@ static void ArchiveFile_t_clear(ArchiveFile_t* obj) {
}
static int ArchiveFile_t_cmp(const ArchiveFile_t* a, const ArchiveFile_t* b) {
- if(xtreme_settings.sort_dirs_first) {
+ if(momentum_settings.sort_dirs_first) {
if(a->type == ArchiveFileTypeFolder && b->type != ArchiveFileTypeFolder) {
return -1;
}
diff --git a/applications/main/archive/helpers/favorite_timeout.c b/applications/main/archive/helpers/favorite_timeout.c
index 66bd363e9..4df9dbd46 100644
--- a/applications/main/archive/helpers/favorite_timeout.c
+++ b/applications/main/archive/helpers/favorite_timeout.c
@@ -1,5 +1,5 @@
#include "archive_helpers_ext.h"
-#include
+#include
bool process_favorite_launch(char** args) {
if(*args && strlen(*args) > 4 && strncmp(*args, "fav/", 4) == 0) {
@@ -17,7 +17,7 @@ void favorite_timeout_callback(void* _ctx) {
}
void favorite_timeout_run(ViewDispatcher* view_dispatcher, SceneManager* scene_manager) {
- uint32_t timeout = xtreme_settings.favorite_timeout;
+ uint32_t timeout = momentum_settings.favorite_timeout;
if(timeout == 0) {
view_dispatcher_run(view_dispatcher);
return;
diff --git a/applications/main/archive/scenes/archive_scene_search.c b/applications/main/archive/scenes/archive_scene_search.c
index 1d821f684..637bee39e 100644
--- a/applications/main/archive/scenes/archive_scene_search.c
+++ b/applications/main/archive/scenes/archive_scene_search.c
@@ -41,7 +41,7 @@ uint32_t archive_scene_search_dirwalk(void* context) {
uint32_t count = 1;
DirWalk* dir_walk = dir_walk_alloc(furi_record_open(RECORD_STORAGE));
const char* ignore[] = {
- XTREME_ASSETS_PATH,
+ ASSET_PACKS_PATH,
BASE_ANIMATION_DIR,
};
dir_walk_set_recurse_filter(dir_walk, ignore, COUNT_OF(ignore));
diff --git a/applications/main/bad_kb/bad_kb_app.c b/applications/main/bad_kb/bad_kb_app.c
index d18ac09c2..081a5dfe8 100644
--- a/applications/main/bad_kb/bad_kb_app.c
+++ b/applications/main/bad_kb/bad_kb_app.c
@@ -3,7 +3,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include "helpers/ducky_script_i.h"
@@ -267,11 +267,11 @@ void bad_kb_config_refresh(BadKbApp* app) {
scene_manager_previous_scene(app->scene_manager);
// Update settings
- if(xtreme_settings.bad_bt != app->is_bt ||
- xtreme_settings.bad_bt_remember != app->bt_remember) {
- xtreme_settings.bad_bt = app->is_bt;
- xtreme_settings.bad_bt_remember = app->bt_remember;
- xtreme_settings_save();
+ if(momentum_settings.bad_bt != app->is_bt ||
+ momentum_settings.bad_bt_remember != app->bt_remember) {
+ momentum_settings.bad_bt = app->is_bt;
+ momentum_settings.bad_bt_remember = app->bt_remember;
+ momentum_settings_save();
}
}
@@ -308,8 +308,8 @@ BadKbApp* bad_kb_app_alloc(char* arg) {
Bt* bt = furi_record_open(RECORD_BT);
app->bt = bt;
app->bt->suppress_pin_screen = true;
- app->is_bt = xtreme_settings.bad_bt;
- app->bt_remember = xtreme_settings.bad_bt_remember;
+ app->is_bt = momentum_settings.bad_bt;
+ app->bt_remember = momentum_settings.bad_bt_remember;
bad_kb_config_adjust(&app->config);
// Save prev config
diff --git a/applications/main/bad_kb/resources/badkb/demo_android.txt b/applications/main/bad_kb/resources/badkb/demo_android.txt
index 3cad57454..b79c93dca 100644
--- a/applications/main/bad_kb/resources/badkb/demo_android.txt
+++ b/applications/main/bad_kb/resources/badkb/demo_android.txt
@@ -6,7 +6,7 @@ ENTER
DELAY 1000
CTRL l
DELAY 100
-STRING https://github.com/Flipper-XFW/Xtreme-Firmware
+STRING https://github.com/Next-Flip/Momentum-Firmware
DELAY 100
ENTER
DELAY 500
diff --git a/applications/main/bad_kb/resources/badkb/demo_ios.txt b/applications/main/bad_kb/resources/badkb/demo_ios.txt
index c6beb2f4e..169b769e7 100644
--- a/applications/main/bad_kb/resources/badkb/demo_ios.txt
+++ b/applications/main/bad_kb/resources/badkb/demo_ios.txt
@@ -4,7 +4,7 @@ GUI h
DELAY 1000
GUI SPACE
DELAY 250
-STRING https://github.com/Flipper-XFW/Xtreme-Firmware
+STRING https://github.com/Next-Flip/Momentum-Firmware
DELAY 75
TAB
DELAY 75
diff --git a/applications/main/bad_kb/scenes/bad_kb_scene_config.c b/applications/main/bad_kb/scenes/bad_kb_scene_config.c
index c3dabf0b8..ca5ec6400 100644
--- a/applications/main/bad_kb/scenes/bad_kb_scene_config.c
+++ b/applications/main/bad_kb/scenes/bad_kb_scene_config.c
@@ -1,7 +1,7 @@
#include "../bad_kb_app_i.h"
#include "furi_hal_power.h"
#include "furi_hal_usb.h"
-#include
+#include
enum VarItemListIndex {
VarItemListIndexKeyboardLayout,
diff --git a/applications/main/bad_kb/scenes/bad_kb_scene_file_select.c b/applications/main/bad_kb/scenes/bad_kb_scene_file_select.c
index de68d2260..884682685 100644
--- a/applications/main/bad_kb/scenes/bad_kb_scene_file_select.c
+++ b/applications/main/bad_kb/scenes/bad_kb_scene_file_select.c
@@ -15,7 +15,7 @@ static bool bad_kb_file_select(BadKbApp* bad_kb) {
dialog_message_set_text(
message,
"A badusb folder was found!\n"
- "XFW uses the badkb folder.\n"
+ "Momentum uses the badkb folder.\n"
"Want to transfer the files?",
64,
32,
diff --git a/applications/main/bad_kb/views/bad_kb_view.c b/applications/main/bad_kb/views/bad_kb_view.c
index 11cf32aee..5f1a8bdda 100644
--- a/applications/main/bad_kb/views/bad_kb_view.c
+++ b/applications/main/bad_kb/views/bad_kb_view.c
@@ -4,7 +4,7 @@
#include
#include
#include
-#include
+#include
#include
#define MAX_NAME_LEN 64
@@ -57,11 +57,7 @@ static void bad_kb_draw_callback(Canvas* canvas, void* _model) {
if((state == BadKbStateIdle) || (state == BadKbStateDone) ||
(state == BadKbStateNotConnected)) {
- if(xtreme_assets.is_nsfw) {
- elements_button_center(canvas, "Cum");
- } else {
- elements_button_center(canvas, "Run");
- }
+ elements_button_center(canvas, "Run");
elements_button_left(canvas, "Config");
} else if((state == BadKbStateRunning) || (state == BadKbStateDelay)) {
elements_button_center(canvas, "Stop");
@@ -80,21 +76,12 @@ static void bad_kb_draw_callback(Canvas* canvas, void* _model) {
if(state == BadKbStateNotConnected) {
canvas_draw_icon(canvas, 4, 26, &I_Clock_18x18);
canvas_set_font(canvas, FontPrimary);
- if(xtreme_assets.is_nsfw) {
- canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Plug me");
- canvas_draw_str_aligned(canvas, 127, 43, AlignRight, AlignBottom, "in, Daddy");
- } else {
- canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Connect to");
- canvas_draw_str_aligned(canvas, 127, 43, AlignRight, AlignBottom, "a device");
- }
+ canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Connect to");
+ canvas_draw_str_aligned(canvas, 127, 43, AlignRight, AlignBottom, "a device");
} else if(state == BadKbStateWillRun) {
canvas_draw_icon(canvas, 4, 26, &I_Clock_18x18);
canvas_set_font(canvas, FontPrimary);
- if(xtreme_assets.is_nsfw) {
- canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Will cum");
- } else {
- canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Will run");
- }
+ canvas_draw_str_aligned(canvas, 127, 31, AlignRight, AlignBottom, "Will run");
canvas_draw_str_aligned(canvas, 127, 43, AlignRight, AlignBottom, "on connect");
} else if(state == BadKbStateFileError) {
canvas_draw_icon(canvas, 4, 26, &I_Error_18x18);
diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_emulate.c b/applications/main/lfrfid/scenes/lfrfid_scene_emulate.c
index c87ebc1c9..dc5b0e01f 100644
--- a/applications/main/lfrfid/scenes/lfrfid_scene_emulate.c
+++ b/applications/main/lfrfid/scenes/lfrfid_scene_emulate.c
@@ -1,6 +1,6 @@
#include "../lfrfid_i.h"
-#include
+#include
FuriTimer* timer_auto_exit = NULL;
@@ -35,7 +35,8 @@ void lfrfid_scene_emulate_on_enter(void* context) {
timer_auto_exit =
furi_timer_alloc(lfrfid_scene_emulate_popup_callback, FuriTimerTypeOnce, app);
furi_timer_start(
- timer_auto_exit, xtreme_settings.favorite_timeout * furi_kernel_get_tick_frequency());
+ timer_auto_exit,
+ momentum_settings.favorite_timeout * furi_kernel_get_tick_frequency());
}
view_dispatcher_switch_to_view(app->view_dispatcher, LfRfidViewPopup);
diff --git a/applications/main/xtreme_app/application.fam b/applications/main/momentum_app/application.fam
similarity index 61%
rename from applications/main/xtreme_app/application.fam
rename to applications/main/momentum_app/application.fam
index cffd382b6..e4b228396 100644
--- a/applications/main/xtreme_app/application.fam
+++ b/applications/main/momentum_app/application.fam
@@ -1,11 +1,11 @@
App(
- appid="xtreme_app",
- name="Xtreme",
+ appid="momentum_app",
+ name="Momentum",
apptype=FlipperAppType.MENUEXTERNAL,
- entry_point="xtreme_app",
+ entry_point="momentum_app",
stack_size=2 * 1024,
flags=["InsomniaSafe"],
- icon="A_Xtreme_14",
+ icon="A_Momentum_14",
order=90,
fap_icon="icon.png",
fap_category="assets",
diff --git a/applications/main/xtreme_app/icon.png b/applications/main/momentum_app/icon.png
similarity index 100%
rename from applications/main/xtreme_app/icon.png
rename to applications/main/momentum_app/icon.png
diff --git a/applications/main/xtreme_app/xtreme_app.c b/applications/main/momentum_app/momentum_app.c
similarity index 78%
rename from applications/main/xtreme_app/xtreme_app.c
rename to applications/main/momentum_app/momentum_app.c
index 5e0ce4c08..3692b08ae 100644
--- a/applications/main/xtreme_app/xtreme_app.c
+++ b/applications/main/momentum_app/momentum_app.c
@@ -1,8 +1,8 @@
-#include "xtreme_app.h"
+#include "momentum_app.h"
-static bool xtreme_app_custom_event_callback(void* context, uint32_t event) {
+static bool momentum_app_custom_event_callback(void* context, uint32_t event) {
furi_assert(context);
- XtremeApp* app = context;
+ MomentumApp* app = context;
return scene_manager_handle_custom_event(app->scene_manager, event);
}
@@ -11,12 +11,12 @@ void callback_reboot(void* context) {
power_reboot(PowerBootModeNormal);
}
-bool xtreme_app_apply(XtremeApp* app) {
+bool momentum_app_apply(MomentumApp* app) {
Storage* storage = furi_record_open(RECORD_STORAGE);
if(app->save_mainmenu_apps) {
Stream* stream = file_stream_alloc(storage);
- if(file_stream_open(stream, XTREME_MENU_PATH, FSAM_READ_WRITE, FSOM_CREATE_ALWAYS)) {
+ if(file_stream_open(stream, MAINMENU_APPS_PATH, FSAM_READ_WRITE, FSOM_CREATE_ALWAYS)) {
stream_write_format(stream, "MenuAppList Version %u\n", 0);
CharList_it_t it;
CharList_it(it, app->mainmenu_app_exes);
@@ -116,7 +116,7 @@ bool xtreme_app_apply(XtremeApp* app) {
}
if(app->save_settings) {
- xtreme_settings_save();
+ momentum_settings_save();
}
if(app->show_slideshow) {
@@ -128,30 +128,30 @@ bool xtreme_app_apply(XtremeApp* app) {
popup_set_context(app->popup, app);
popup_set_timeout(app->popup, 1000);
popup_enable_timeout(app->popup);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewPopup);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewPopup);
return true;
} else if(app->apply_pack) {
- xtreme_assets_free();
+ asset_packs_free();
popup_set_header(app->popup, "Reloading...", 64, 26, AlignCenter, AlignCenter);
popup_set_text(app->popup, "Applying asset pack...", 64, 40, AlignCenter, AlignCenter);
popup_set_callback(app->popup, NULL);
popup_set_context(app->popup, NULL);
popup_set_timeout(app->popup, 0);
popup_disable_timeout(app->popup);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewPopup);
- xtreme_assets_init();
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewPopup);
+ asset_packs_init();
}
furi_record_close(RECORD_STORAGE);
return false;
}
-static bool xtreme_app_back_event_callback(void* context) {
+static bool momentum_app_back_event_callback(void* context) {
furi_assert(context);
- XtremeApp* app = context;
+ MomentumApp* app = context;
- if(!scene_manager_has_previous_scene(app->scene_manager, XtremeAppSceneStart)) {
- if(xtreme_app_apply(app)) {
+ if(!scene_manager_has_previous_scene(app->scene_manager, MomentumAppSceneStart)) {
+ if(momentum_app_apply(app)) {
return true;
}
}
@@ -159,22 +159,22 @@ static bool xtreme_app_back_event_callback(void* context) {
return scene_manager_handle_back_event(app->scene_manager);
}
-XtremeApp* xtreme_app_alloc() {
- XtremeApp* app = malloc(sizeof(XtremeApp));
+MomentumApp* momentum_app_alloc() {
+ MomentumApp* app = malloc(sizeof(MomentumApp));
app->gui = furi_record_open(RECORD_GUI);
app->dialogs = furi_record_open(RECORD_DIALOGS);
app->notification = furi_record_open(RECORD_NOTIFICATION);
// View Dispatcher and Scene Manager
app->view_dispatcher = view_dispatcher_alloc();
- app->scene_manager = scene_manager_alloc(&xtreme_app_scene_handlers, app);
+ app->scene_manager = scene_manager_alloc(&momentum_app_scene_handlers, app);
view_dispatcher_enable_queue(app->view_dispatcher);
view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
view_dispatcher_set_custom_event_callback(
- app->view_dispatcher, xtreme_app_custom_event_callback);
+ app->view_dispatcher, momentum_app_custom_event_callback);
view_dispatcher_set_navigation_event_callback(
- app->view_dispatcher, xtreme_app_back_event_callback);
+ app->view_dispatcher, momentum_app_back_event_callback);
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
@@ -182,27 +182,28 @@ XtremeApp* xtreme_app_alloc() {
app->var_item_list = variable_item_list_alloc();
view_dispatcher_add_view(
app->view_dispatcher,
- XtremeAppViewVarItemList,
+ MomentumAppViewVarItemList,
variable_item_list_get_view(app->var_item_list));
app->submenu = submenu_alloc();
view_dispatcher_add_view(
- app->view_dispatcher, XtremeAppViewSubmenu, submenu_get_view(app->submenu));
+ app->view_dispatcher, MomentumAppViewSubmenu, submenu_get_view(app->submenu));
app->text_input = text_input_alloc();
view_dispatcher_add_view(
- app->view_dispatcher, XtremeAppViewTextInput, text_input_get_view(app->text_input));
+ app->view_dispatcher, MomentumAppViewTextInput, text_input_get_view(app->text_input));
app->byte_input = byte_input_alloc();
view_dispatcher_add_view(
- app->view_dispatcher, XtremeAppViewByteInput, byte_input_get_view(app->byte_input));
+ app->view_dispatcher, MomentumAppViewByteInput, byte_input_get_view(app->byte_input));
app->popup = popup_alloc();
- view_dispatcher_add_view(app->view_dispatcher, XtremeAppViewPopup, popup_get_view(app->popup));
+ view_dispatcher_add_view(
+ app->view_dispatcher, MomentumAppViewPopup, popup_get_view(app->popup));
app->dialog_ex = dialog_ex_alloc();
view_dispatcher_add_view(
- app->view_dispatcher, XtremeAppViewDialogEx, dialog_ex_get_view(app->dialog_ex));
+ app->view_dispatcher, MomentumAppViewDialogEx, dialog_ex_get_view(app->dialog_ex));
// Settings init
@@ -211,9 +212,9 @@ XtremeApp* xtreme_app_alloc() {
Storage* storage = furi_record_open(RECORD_STORAGE);
File* folder = storage_file_alloc(storage);
FileInfo info;
- char* name = malloc(XTREME_ASSETS_PACK_NAME_LEN);
- if(storage_dir_open(folder, XTREME_ASSETS_PATH)) {
- while(storage_dir_read(folder, &info, name, XTREME_ASSETS_PACK_NAME_LEN)) {
+ char* name = malloc(ASSET_PACKS_NAME_LEN);
+ if(storage_dir_open(folder, ASSET_PACKS_PATH)) {
+ while(storage_dir_read(folder, &info, name, ASSET_PACKS_NAME_LEN)) {
if(info.flags & FSF_DIRECTORY) {
char* copy = strdup(name);
size_t idx = 0;
@@ -227,7 +228,7 @@ XtremeApp* xtreme_app_alloc() {
if(app->asset_pack_index != 0) {
if(idx < app->asset_pack_index) app->asset_pack_index++;
} else {
- if(strcmp(copy, xtreme_settings.asset_pack) == 0)
+ if(strcmp(copy, momentum_settings.asset_pack) == 0)
app->asset_pack_index = idx + 1;
}
}
@@ -240,7 +241,7 @@ XtremeApp* xtreme_app_alloc() {
CharList_init(app->mainmenu_app_exes);
Stream* stream = file_stream_alloc(storage);
FuriString* line = furi_string_alloc();
- if(file_stream_open(stream, XTREME_MENU_PATH, FSAM_READ, FSOM_OPEN_EXISTING)) {
+ if(file_stream_open(stream, MAINMENU_APPS_PATH, FSAM_READ, FSOM_OPEN_EXISTING)) {
stream_read_line(stream, line);
while(stream_read_line(stream, line)) {
furi_string_replace_all(line, "\r", "");
@@ -301,27 +302,35 @@ XtremeApp* xtreme_app_alloc() {
app->dolphin_angry = stats.butthurt;
furi_record_close(RECORD_DOLPHIN);
- app->version_tag =
- furi_string_alloc_printf("%s %s", version_get_version(NULL), version_get_builddate(NULL));
+ if(strcmp(version_get_version(NULL), "MNTM-DEV") == 0) {
+ app->version_tag = furi_string_alloc_printf("%s ", version_get_version(NULL));
+ const char* sha = version_get_githash(NULL);
+ for(size_t i = 0; i < strlen(sha); ++i) {
+ furi_string_push_back(app->version_tag, toupper(sha[i]));
+ }
+ } else {
+ app->version_tag = furi_string_alloc_printf(
+ "%s %s", version_get_version(NULL), version_get_builddate(NULL));
+ }
return app;
}
-void xtreme_app_free(XtremeApp* app) {
+void momentum_app_free(MomentumApp* app) {
furi_assert(app);
// Gui modules
- view_dispatcher_remove_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_remove_view(app->view_dispatcher, MomentumAppViewVarItemList);
variable_item_list_free(app->var_item_list);
- view_dispatcher_remove_view(app->view_dispatcher, XtremeAppViewSubmenu);
+ view_dispatcher_remove_view(app->view_dispatcher, MomentumAppViewSubmenu);
submenu_free(app->submenu);
- view_dispatcher_remove_view(app->view_dispatcher, XtremeAppViewTextInput);
+ view_dispatcher_remove_view(app->view_dispatcher, MomentumAppViewTextInput);
text_input_free(app->text_input);
- view_dispatcher_remove_view(app->view_dispatcher, XtremeAppViewByteInput);
+ view_dispatcher_remove_view(app->view_dispatcher, MomentumAppViewByteInput);
byte_input_free(app->byte_input);
- view_dispatcher_remove_view(app->view_dispatcher, XtremeAppViewPopup);
+ view_dispatcher_remove_view(app->view_dispatcher, MomentumAppViewPopup);
popup_free(app->popup);
- view_dispatcher_remove_view(app->view_dispatcher, XtremeAppViewDialogEx);
+ view_dispatcher_remove_view(app->view_dispatcher, MomentumAppViewDialogEx);
dialog_ex_free(app->dialog_ex);
// View Dispatcher and Scene Manager
@@ -357,11 +366,11 @@ void xtreme_app_free(XtremeApp* app) {
free(app);
}
-extern int32_t xtreme_app(void* p) {
+extern int32_t momentum_app(void* p) {
UNUSED(p);
- XtremeApp* app = xtreme_app_alloc();
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneStart);
+ MomentumApp* app = momentum_app_alloc();
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneStart);
view_dispatcher_run(app->view_dispatcher);
- xtreme_app_free(app);
+ momentum_app_free(app);
return 0;
}
diff --git a/applications/main/xtreme_app/xtreme_app.h b/applications/main/momentum_app/momentum_app.h
similarity index 82%
rename from applications/main/xtreme_app/xtreme_app.h
rename to applications/main/momentum_app/momentum_app.h
index fecda9696..67981177a 100644
--- a/applications/main/xtreme_app/xtreme_app.h
+++ b/applications/main/momentum_app/momentum_app.h
@@ -16,7 +16,7 @@
#include
#include
#include
-#include "scenes/xtreme_app_scene.h"
+#include "scenes/momentum_app_scene.h"
#include "dolphin/helpers/dolphin_state.h"
#include "dolphin/dolphin.h"
#include "dolphin/dolphin_i.h"
@@ -27,10 +27,8 @@
#include
#include
#include
-#include
-#include
-
-#define XTREME_SUBGHZ_FREQ_BUFFER_SIZE 7
+#include
+#include
ARRAY_DEF(CharList, char*)
@@ -57,7 +55,7 @@ typedef struct {
uint8_t subghz_static_index;
FrequencyList_t subghz_hopper_freqs;
uint8_t subghz_hopper_index;
- char subghz_freq_buffer[XTREME_SUBGHZ_FREQ_BUFFER_SIZE];
+ char subghz_freq_buffer[7];
bool subghz_extend;
RgbColor lcd_color;
char device_name[FURI_HAL_VERSION_ARRAY_NAME_LENGTH];
@@ -76,15 +74,15 @@ typedef struct {
bool apply_pack;
bool show_slideshow;
bool require_reboot;
-} XtremeApp;
+} MomentumApp;
typedef enum {
- XtremeAppViewVarItemList,
- XtremeAppViewSubmenu,
- XtremeAppViewTextInput,
- XtremeAppViewByteInput,
- XtremeAppViewPopup,
- XtremeAppViewDialogEx,
-} XtremeAppView;
+ MomentumAppViewVarItemList,
+ MomentumAppViewSubmenu,
+ MomentumAppViewTextInput,
+ MomentumAppViewByteInput,
+ MomentumAppViewPopup,
+ MomentumAppViewDialogEx,
+} MomentumAppView;
-bool xtreme_app_apply(XtremeApp* app);
+bool momentum_app_apply(MomentumApp* app);
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene.c b/applications/main/momentum_app/scenes/momentum_app_scene.c
new file mode 100644
index 000000000..26645612c
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene.c
@@ -0,0 +1,30 @@
+#include "momentum_app_scene.h"
+
+// Generate scene on_enter handlers array
+#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_enter,
+void (*const momentum_app_on_enter_handlers[])(void*) = {
+#include "momentum_app_scene_config.h"
+};
+#undef ADD_SCENE
+
+// Generate scene on_event handlers array
+#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_event,
+bool (*const momentum_app_on_event_handlers[])(void* context, SceneManagerEvent event) = {
+#include "momentum_app_scene_config.h"
+};
+#undef ADD_SCENE
+
+// Generate scene on_exit handlers array
+#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_exit,
+void (*const momentum_app_on_exit_handlers[])(void* context) = {
+#include "momentum_app_scene_config.h"
+};
+#undef ADD_SCENE
+
+// Initialize scene handlers configuration structure
+const SceneManagerHandlers momentum_app_scene_handlers = {
+ .on_enter_handlers = momentum_app_on_enter_handlers,
+ .on_event_handlers = momentum_app_on_event_handlers,
+ .on_exit_handlers = momentum_app_on_exit_handlers,
+ .scene_num = MomentumAppSceneNum,
+};
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene.h b/applications/main/momentum_app/scenes/momentum_app_scene.h
similarity index 65%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene.h
rename to applications/main/momentum_app/scenes/momentum_app_scene.h
index d7f19abac..e24005873 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene.h
+++ b/applications/main/momentum_app/scenes/momentum_app_scene.h
@@ -3,27 +3,27 @@
#include
// Generate scene id and total number
-#define ADD_SCENE(prefix, name, id) XtremeAppScene##id,
+#define ADD_SCENE(prefix, name, id) MomentumAppScene##id,
typedef enum {
-#include "xtreme_app_scene_config.h"
- XtremeAppSceneNum,
-} XtremeAppScene;
+#include "momentum_app_scene_config.h"
+ MomentumAppSceneNum,
+} MomentumAppScene;
#undef ADD_SCENE
-extern const SceneManagerHandlers xtreme_app_scene_handlers;
+extern const SceneManagerHandlers momentum_app_scene_handlers;
// Generate scene on_enter handlers declaration
#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_enter(void*);
-#include "xtreme_app_scene_config.h"
+#include "momentum_app_scene_config.h"
#undef ADD_SCENE
// Generate scene on_event handlers declaration
#define ADD_SCENE(prefix, name, id) \
bool prefix##_scene_##name##_on_event(void* context, SceneManagerEvent event);
-#include "xtreme_app_scene_config.h"
+#include "momentum_app_scene_config.h"
#undef ADD_SCENE
// Generate scene on_exit handlers declaration
#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_exit(void* context);
-#include "xtreme_app_scene_config.h"
+#include "momentum_app_scene_config.h"
#undef ADD_SCENE
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_config.h b/applications/main/momentum_app/scenes/momentum_app_scene_config.h
new file mode 100644
index 000000000..edf216614
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_config.h
@@ -0,0 +1,21 @@
+ADD_SCENE(momentum_app, start, Start)
+ADD_SCENE(momentum_app, interface, Interface)
+ADD_SCENE(momentum_app, interface_graphics, InterfaceGraphics)
+ADD_SCENE(momentum_app, interface_mainmenu, InterfaceMainmenu)
+ADD_SCENE(momentum_app, interface_mainmenu_add, InterfaceMainmenuAdd)
+ADD_SCENE(momentum_app, interface_mainmenu_add_main, InterfaceMainmenuAddMain)
+ADD_SCENE(momentum_app, interface_mainmenu_reset, InterfaceMainmenuReset)
+ADD_SCENE(momentum_app, interface_lockscreen, InterfaceLockscreen)
+ADD_SCENE(momentum_app, interface_statusbar, InterfaceStatusbar)
+ADD_SCENE(momentum_app, interface_filebrowser, InterfaceFilebrowser)
+ADD_SCENE(momentum_app, protocols, Protocols)
+ADD_SCENE(momentum_app, protocols_freqs, ProtocolsFreqs)
+ADD_SCENE(momentum_app, protocols_freqs_static, ProtocolsFreqsStatic)
+ADD_SCENE(momentum_app, protocols_freqs_hopper, ProtocolsFreqsHopper)
+ADD_SCENE(momentum_app, protocols_freqs_add, ProtocolsFreqsAdd)
+ADD_SCENE(momentum_app, protocols_gpio, ProtocolsGpio)
+ADD_SCENE(momentum_app, misc, Misc)
+ADD_SCENE(momentum_app, misc_screen, MiscScreen)
+ADD_SCENE(momentum_app, misc_screen_color, MiscScreenColor)
+ADD_SCENE(momentum_app, misc_dolphin, MiscDolphin)
+ADD_SCENE(momentum_app, misc_rename, MiscRename)
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface.c
new file mode 100644
index 000000000..c6877ab48
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface.c
@@ -0,0 +1,90 @@
+#include "../momentum_app.h"
+
+enum VarItemListIndex {
+ VarItemListIndexGraphics,
+ VarItemListIndexMainmenu,
+ VarItemListIndexLockscreen,
+ VarItemListIndexStatusbar,
+ VarItemListIndexFileBrowser,
+};
+
+void momentum_app_scene_interface_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ view_dispatcher_send_custom_event(app->view_dispatcher, index);
+}
+
+void momentum_app_scene_interface_on_enter(void* context) {
+ MomentumApp* app = context;
+ VariableItemList* var_item_list = app->var_item_list;
+ VariableItem* item;
+
+ item = variable_item_list_add(var_item_list, "Graphics", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ item = variable_item_list_add(var_item_list, "Mainmenu", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ item = variable_item_list_add(var_item_list, "Lockscreen", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ item = variable_item_list_add(var_item_list, "Statusbar", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ item = variable_item_list_add(var_item_list, "File Browser", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ variable_item_list_set_enter_callback(
+ var_item_list, momentum_app_scene_interface_var_item_list_callback, app);
+
+ variable_item_list_set_selected_item(
+ var_item_list,
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneInterface));
+
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
+}
+
+bool momentum_app_scene_interface_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneInterface, event.event);
+ consumed = true;
+ switch(event.event) {
+ case VarItemListIndexGraphics:
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceGraphics, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceGraphics);
+ break;
+ case VarItemListIndexMainmenu:
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceMainmenu, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceMainmenu);
+ break;
+ case VarItemListIndexLockscreen:
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceLockscreen, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceLockscreen);
+ break;
+ case VarItemListIndexStatusbar:
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceStatusbar, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceStatusbar);
+ break;
+ case VarItemListIndexFileBrowser:
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceFilebrowser, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceFilebrowser);
+ break;
+ default:
+ break;
+ }
+ }
+
+ return consumed;
+}
+
+void momentum_app_scene_interface_on_exit(void* context) {
+ MomentumApp* app = context;
+ variable_item_list_reset(app->var_item_list);
+}
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c
new file mode 100644
index 000000000..0a3f98b12
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c
@@ -0,0 +1,124 @@
+#include "../momentum_app.h"
+
+enum VarItemListIndex {
+ VarItemListIndexSortDirsFirst,
+ VarItemListIndexShowHiddenFiles,
+ VarItemListIndexShowInternalTab,
+ VarItemListIndexFavoriteTimeout,
+};
+
+void momentum_app_scene_interface_filebrowser_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ view_dispatcher_send_custom_event(app->view_dispatcher, index);
+}
+
+static void momentum_app_scene_interface_filebrowser_sort_dirs_first_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.sort_dirs_first = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_filebrowser_show_hidden_files_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.show_hidden_files = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_filebrowser_show_internal_tab_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.show_internal_tab = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_filebrowser_favorite_timeout_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ uint32_t value = variable_item_get_current_value_index(item);
+ char text[6];
+ snprintf(text, sizeof(text), "%lu S", value);
+ variable_item_set_current_value_text(item, value ? text : "OFF");
+ momentum_settings.favorite_timeout = value;
+ app->save_settings = true;
+}
+
+void momentum_app_scene_interface_filebrowser_on_enter(void* context) {
+ MomentumApp* app = context;
+ VariableItemList* var_item_list = app->var_item_list;
+ VariableItem* item;
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Folders Above Files",
+ 2,
+ momentum_app_scene_interface_filebrowser_sort_dirs_first_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.sort_dirs_first);
+ variable_item_set_current_value_text(item, momentum_settings.sort_dirs_first ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Hidden Files",
+ 2,
+ momentum_app_scene_interface_filebrowser_show_hidden_files_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.show_hidden_files);
+ variable_item_set_current_value_text(item, momentum_settings.show_hidden_files ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Internal Tab",
+ 2,
+ momentum_app_scene_interface_filebrowser_show_internal_tab_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.show_internal_tab);
+ variable_item_set_current_value_text(item, momentum_settings.show_internal_tab ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Favorite Timeout",
+ 61,
+ momentum_app_scene_interface_filebrowser_favorite_timeout_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.favorite_timeout);
+ char text[4];
+ snprintf(text, sizeof(text), "%lu S", momentum_settings.favorite_timeout);
+ variable_item_set_current_value_text(item, momentum_settings.favorite_timeout ? text : "OFF");
+
+ variable_item_list_set_enter_callback(
+ var_item_list, momentum_app_scene_interface_filebrowser_var_item_list_callback, app);
+
+ variable_item_list_set_selected_item(
+ var_item_list,
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneInterfaceFilebrowser));
+
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
+}
+
+bool momentum_app_scene_interface_filebrowser_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceFilebrowser, event.event);
+ consumed = true;
+ switch(event.event) {
+ default:
+ break;
+ }
+ }
+
+ return consumed;
+}
+
+void momentum_app_scene_interface_filebrowser_on_exit(void* context) {
+ MomentumApp* app = context;
+ variable_item_list_reset(app->var_item_list);
+}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_graphics.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics.c
similarity index 53%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_interface_graphics.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics.c
index f0f77b9f5..a1492a855 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_graphics.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics.c
@@ -1,31 +1,26 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexAssetPack,
VarItemListIndexAnimSpeed,
VarItemListIndexCycleAnims,
VarItemListIndexUnlockAnims,
- VarItemListIndexCreditsAnim,
};
-void xtreme_app_scene_interface_graphics_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_graphics_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-static void xtreme_app_scene_interface_graphics_asset_pack_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_graphics_asset_pack_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(
item, index == 0 ? "Default" : *CharList_get(app->asset_pack_names, index - 1));
- variable_item_set_locked(
- variable_item_list_get(app->var_item_list, VarItemListIndexCreditsAnim),
- index != 0,
- "Credits\nare in\ndefault pack!");
strlcpy(
- xtreme_settings.asset_pack,
+ momentum_settings.asset_pack,
index == 0 ? "" : *CharList_get(app->asset_pack_names, index - 1),
- XTREME_ASSETS_PACK_NAME_LEN);
+ ASSET_PACKS_NAME_LEN);
app->asset_pack_index = index;
app->save_settings = true;
app->apply_pack = true;
@@ -59,11 +54,11 @@ const uint32_t anim_speed_values[COUNT_OF(anim_speed_names)] = {
275,
300,
};
-static void xtreme_app_scene_interface_graphics_anim_speed_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_graphics_anim_speed_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, anim_speed_names[index]);
- xtreme_settings.anim_speed = anim_speed_values[index];
+ momentum_settings.anim_speed = anim_speed_values[index];
app->save_settings = true;
}
@@ -101,32 +96,24 @@ const int32_t cycle_anims_values[COUNT_OF(cycle_anims_names)] = {
43200,
86400,
};
-static void xtreme_app_scene_interface_graphics_cycle_anims_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_graphics_cycle_anims_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, cycle_anims_names[index]);
- xtreme_settings.cycle_anims = cycle_anims_values[index];
+ momentum_settings.cycle_anims = cycle_anims_values[index];
app->save_settings = true;
}
-static void xtreme_app_scene_interface_graphics_unlock_anims_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_graphics_unlock_anims_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.unlock_anims = value;
+ momentum_settings.unlock_anims = value;
app->save_settings = true;
}
-static void xtreme_app_scene_interface_graphics_credits_anim_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.credits_anim = value;
- app->save_settings = true;
-}
-
-void xtreme_app_scene_interface_graphics_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_graphics_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
uint8_t value_index;
@@ -135,7 +122,7 @@ void xtreme_app_scene_interface_graphics_on_enter(void* context) {
var_item_list,
"Asset Pack",
CharList_size(app->asset_pack_names) + 1,
- xtreme_app_scene_interface_graphics_asset_pack_changed,
+ momentum_app_scene_interface_graphics_asset_pack_changed,
app);
variable_item_set_current_value_index(item, app->asset_pack_index);
variable_item_set_current_value_text(
@@ -148,10 +135,10 @@ void xtreme_app_scene_interface_graphics_on_enter(void* context) {
var_item_list,
"Anim Speed",
COUNT_OF(anim_speed_names),
- xtreme_app_scene_interface_graphics_anim_speed_changed,
+ momentum_app_scene_interface_graphics_anim_speed_changed,
app);
value_index = value_index_uint32(
- xtreme_settings.anim_speed, anim_speed_values, COUNT_OF(anim_speed_values));
+ momentum_settings.anim_speed, anim_speed_values, COUNT_OF(anim_speed_values));
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, anim_speed_names[value_index]);
@@ -159,10 +146,10 @@ void xtreme_app_scene_interface_graphics_on_enter(void* context) {
var_item_list,
"Cycle Anims",
COUNT_OF(cycle_anims_names),
- xtreme_app_scene_interface_graphics_cycle_anims_changed,
+ momentum_app_scene_interface_graphics_cycle_anims_changed,
app);
value_index = value_index_int32(
- xtreme_settings.cycle_anims, cycle_anims_values, COUNT_OF(cycle_anims_values));
+ momentum_settings.cycle_anims, cycle_anims_values, COUNT_OF(cycle_anims_values));
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, cycle_anims_names[value_index]);
@@ -170,38 +157,28 @@ void xtreme_app_scene_interface_graphics_on_enter(void* context) {
var_item_list,
"Unlock Anims",
2,
- xtreme_app_scene_interface_graphics_unlock_anims_changed,
+ momentum_app_scene_interface_graphics_unlock_anims_changed,
app);
- variable_item_set_current_value_index(item, xtreme_settings.unlock_anims);
- variable_item_set_current_value_text(item, xtreme_settings.unlock_anims ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Credits Anim",
- 2,
- xtreme_app_scene_interface_graphics_credits_anim_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.credits_anim);
- variable_item_set_current_value_text(item, xtreme_settings.credits_anim ? "ON" : "OFF");
- variable_item_set_locked(item, app->asset_pack_index != 0, "Credits\nare in\ndefault pack!");
+ variable_item_set_current_value_index(item, momentum_settings.unlock_anims);
+ variable_item_set_current_value_text(item, momentum_settings.unlock_anims ? "ON" : "OFF");
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_interface_graphics_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_interface_graphics_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterfaceGraphics));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneInterfaceGraphics));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_interface_graphics_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_interface_graphics_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceGraphics, event.event);
+ app->scene_manager, MomentumAppSceneInterfaceGraphics, event.event);
consumed = true;
switch(event.event) {
default:
@@ -212,7 +189,7 @@ bool xtreme_app_scene_interface_graphics_on_event(void* context, SceneManagerEve
return consumed;
}
-void xtreme_app_scene_interface_graphics_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_graphics_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c
new file mode 100644
index 000000000..ff39fbfe6
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c
@@ -0,0 +1,234 @@
+#include "../momentum_app.h"
+
+enum VarItemListIndex {
+ VarItemListIndexLockOnBoot,
+ VarItemListIndexFormatOn10BadPins,
+ VarItemListIndexPinUnlockFromApp,
+ VarItemListIndexShowTime,
+ VarItemListIndexShowSeconds,
+ VarItemListIndexShowDate,
+ VarItemListIndexShowStatusbar,
+ VarItemListIndexUnlockPrompt,
+};
+
+void momentum_app_scene_interface_lockscreen_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ view_dispatcher_send_custom_event(app->view_dispatcher, index);
+}
+
+static void momentum_app_scene_interface_lockscreen_lock_on_boot_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lock_on_boot = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_lockscreen_bad_pins_format_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.bad_pins_format = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.allow_locked_rpc_commands = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_lockscreen_lockscreen_poweroff_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_poweroff = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_lockscreen_lockscreen_time_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_time = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_lockscreen_lockscreen_seconds_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_seconds = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_lockscreen_lockscreen_date_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_date = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_lockscreen_lockscreen_statusbar_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_statusbar = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_lockscreen_lockscreen_prompt_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_prompt = value;
+ app->save_settings = true;
+}
+
+static void
+ momentum_app_scene_interface_lockscreen_lockscreen_transparent_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.lockscreen_transparent = value;
+ app->save_settings = true;
+}
+
+void momentum_app_scene_interface_lockscreen_on_enter(void* context) {
+ MomentumApp* app = context;
+ VariableItemList* var_item_list = app->var_item_list;
+ VariableItem* item;
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Lock on Boot",
+ 2,
+ momentum_app_scene_interface_lockscreen_lock_on_boot_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lock_on_boot);
+ variable_item_set_current_value_text(item, momentum_settings.lock_on_boot ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Format on 10 Bad PINs",
+ 2,
+ momentum_app_scene_interface_lockscreen_bad_pins_format_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.bad_pins_format);
+ variable_item_set_current_value_text(item, momentum_settings.bad_pins_format ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Allow RPC While Locked",
+ 2,
+ momentum_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_commands);
+ variable_item_set_current_value_text(
+ item, momentum_settings.allow_locked_rpc_commands ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Allow Poweroff",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_poweroff_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_poweroff);
+ variable_item_set_current_value_text(
+ item, momentum_settings.lockscreen_poweroff ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Time",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_time_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_time);
+ variable_item_set_current_value_text(item, momentum_settings.lockscreen_time ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Seconds",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_seconds_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_seconds);
+ variable_item_set_current_value_text(
+ item, momentum_settings.lockscreen_seconds ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Date",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_date_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_date);
+ variable_item_set_current_value_text(item, momentum_settings.lockscreen_date ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Statusbar",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_statusbar_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_statusbar);
+ variable_item_set_current_value_text(
+ item, momentum_settings.lockscreen_statusbar ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Unlock Prompt",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_prompt_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_prompt);
+ variable_item_set_current_value_text(item, momentum_settings.lockscreen_prompt ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Transparent (see animation)",
+ 2,
+ momentum_app_scene_interface_lockscreen_lockscreen_transparent_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.lockscreen_transparent);
+ variable_item_set_current_value_text(
+ item, momentum_settings.lockscreen_transparent ? "ON" : "OFF");
+
+ variable_item_list_set_enter_callback(
+ var_item_list, momentum_app_scene_interface_lockscreen_var_item_list_callback, app);
+
+ variable_item_list_set_selected_item(
+ var_item_list,
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneInterfaceLockscreen));
+
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
+}
+
+bool momentum_app_scene_interface_lockscreen_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceLockscreen, event.event);
+ consumed = true;
+ switch(event.event) {
+ default:
+ break;
+ }
+ }
+
+ return consumed;
+}
+
+void momentum_app_scene_interface_lockscreen_on_exit(void* context) {
+ MomentumApp* app = context;
+ variable_item_list_reset(app->var_item_list);
+}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c
similarity index 74%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c
index 1e8551f6b..628ca60bb 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexMenuStyle,
@@ -9,8 +9,8 @@ enum VarItemListIndex {
VarItemListIndexRemoveApp,
};
-void xtreme_app_scene_interface_mainmenu_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
@@ -24,16 +24,16 @@ const char* const menu_style_names[MenuStyleCount] = {
"Compact",
"Terminal",
};
-static void xtreme_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, menu_style_names[index]);
- xtreme_settings.menu_style = index;
+ momentum_settings.menu_style = index;
app->save_settings = true;
}
-static void xtreme_app_scene_interface_mainmenu_app_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_mainmenu_app_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
app->mainmenu_app_index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(
item, *CharList_get(app->mainmenu_app_labels, app->mainmenu_app_index));
@@ -43,8 +43,8 @@ static void xtreme_app_scene_interface_mainmenu_app_changed(VariableItem* item)
variable_item_set_item_label(item, label);
}
-static void xtreme_app_scene_interface_mainmenu_move_app_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_interface_mainmenu_move_app_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t idx = app->mainmenu_app_index;
size_t size = CharList_size(app->mainmenu_app_labels);
uint8_t dir = variable_item_get_current_value_index(item);
@@ -65,8 +65,8 @@ static void xtreme_app_scene_interface_mainmenu_move_app_changed(VariableItem* i
variable_item_set_current_value_index(item, 1);
}
-void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
@@ -74,16 +74,16 @@ void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
var_item_list,
"Menu Style",
MenuStyleCount,
- xtreme_app_scene_interface_mainmenu_menu_style_changed,
+ momentum_app_scene_interface_mainmenu_menu_style_changed,
app);
- variable_item_set_current_value_index(item, xtreme_settings.menu_style);
- variable_item_set_current_value_text(item, menu_style_names[xtreme_settings.menu_style]);
+ variable_item_set_current_value_index(item, momentum_settings.menu_style);
+ variable_item_set_current_value_text(item, menu_style_names[momentum_settings.menu_style]);
variable_item_list_add(var_item_list, "Reset Menu", 0, NULL, app);
size_t count = CharList_size(app->mainmenu_app_labels);
item = variable_item_list_add(
- var_item_list, "App", count, xtreme_app_scene_interface_mainmenu_app_changed, app);
+ var_item_list, "App", count, momentum_app_scene_interface_mainmenu_app_changed, app);
if(count) {
app->mainmenu_app_index = CLAMP(app->mainmenu_app_index, count - 1, 0U);
char label[20];
@@ -100,7 +100,7 @@ void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
variable_item_list_add(var_item_list, "Add App", 0, NULL, app);
item = variable_item_list_add(
- var_item_list, "Move App", 3, xtreme_app_scene_interface_mainmenu_move_app_changed, app);
+ var_item_list, "Move App", 3, momentum_app_scene_interface_mainmenu_move_app_changed, app);
variable_item_set_current_value_text(item, "");
variable_item_set_current_value_index(item, 1);
variable_item_set_locked(item, count < 2, "Can't move\nwith less\nthan 2 apps!");
@@ -108,26 +108,26 @@ void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
variable_item_list_add(var_item_list, "Remove App", 0, NULL, app);
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_interface_mainmenu_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_interface_mainmenu_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterfaceMainmenu));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneInterfaceMainmenu));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_interface_mainmenu_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_interface_mainmenu_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceMainmenu, event.event);
+ app->scene_manager, MomentumAppSceneInterfaceMainmenu, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexResetMenu:
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceMainmenuReset);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceMainmenuReset);
break;
case VarItemListIndexRemoveApp:
if(!CharList_size(app->mainmenu_app_labels)) break;
@@ -161,7 +161,7 @@ bool xtreme_app_scene_interface_mainmenu_on_event(void* context, SceneManagerEve
break;
}
case VarItemListIndexAddApp:
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceMainmenuAdd);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceMainmenuAdd);
break;
default:
break;
@@ -171,7 +171,7 @@ bool xtreme_app_scene_interface_mainmenu_on_event(void* context, SceneManagerEve
return consumed;
}
-void xtreme_app_scene_interface_mainmenu_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c
similarity index 73%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c
index b45163ead..7c5ccaf17 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum SubmenuIndex {
SubmenuIndexMainApp,
@@ -18,13 +18,13 @@ static bool fap_selector_item_callback(
}
static void
- xtreme_app_scene_interface_mainmenu_add_submenu_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterfaceMainmenuAdd, index);
+ momentum_app_scene_interface_mainmenu_add_submenu_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneInterfaceMainmenuAdd, index);
switch(index) {
case SubmenuIndexMainApp:
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceMainmenuAddMain);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceMainmenuAddMain);
break;
case SubmenuIndexExternalApp: {
const DialogsFileBrowserOptions browser_options = {
@@ -53,7 +53,7 @@ static void
app->save_mainmenu_apps = true;
app->require_reboot = true;
scene_manager_search_and_switch_to_previous_scene(
- app->scene_manager, XtremeAppSceneInterfaceMainmenu);
+ app->scene_manager, MomentumAppSceneInterfaceMainmenu);
}
furi_string_free(temp_path);
break;
@@ -63,8 +63,8 @@ static void
}
}
-void xtreme_app_scene_interface_mainmenu_add_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_add_on_enter(void* context) {
+ MomentumApp* app = context;
Submenu* submenu = app->submenu;
submenu_set_header(submenu, "Add Menu App:");
@@ -73,20 +73,20 @@ void xtreme_app_scene_interface_mainmenu_add_on_enter(void* context) {
submenu,
"Main App",
SubmenuIndexMainApp,
- xtreme_app_scene_interface_mainmenu_add_submenu_callback,
+ momentum_app_scene_interface_mainmenu_add_submenu_callback,
app);
submenu_add_item(
submenu,
"External App",
SubmenuIndexExternalApp,
- xtreme_app_scene_interface_mainmenu_add_submenu_callback,
+ momentum_app_scene_interface_mainmenu_add_submenu_callback,
app);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewSubmenu);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewSubmenu);
}
-bool xtreme_app_scene_interface_mainmenu_add_on_event(void* context, SceneManagerEvent event) {
+bool momentum_app_scene_interface_mainmenu_add_on_event(void* context, SceneManagerEvent event) {
UNUSED(context);
bool consumed = false;
@@ -97,7 +97,7 @@ bool xtreme_app_scene_interface_mainmenu_add_on_event(void* context, SceneManage
return consumed;
}
-void xtreme_app_scene_interface_mainmenu_add_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_add_on_exit(void* context) {
+ MomentumApp* app = context;
submenu_reset(app->submenu);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add_main.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c
similarity index 57%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add_main.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c
index 93aa15ec5..3a8772ee3 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_add_main.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_add_main.c
@@ -1,8 +1,8 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
static void
- xtreme_app_scene_interface_mainmenu_add_main_submenu_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+ momentum_app_scene_interface_mainmenu_add_main_submenu_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
const char* name = (const char*)index;
CharList_push_back(app->mainmenu_app_exes, strdup(name));
@@ -11,11 +11,11 @@ static void
app->save_mainmenu_apps = true;
app->require_reboot = true;
scene_manager_search_and_switch_to_previous_scene(
- app->scene_manager, XtremeAppSceneInterfaceMainmenu);
+ app->scene_manager, MomentumAppSceneInterfaceMainmenu);
}
-void xtreme_app_scene_interface_mainmenu_add_main_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_add_main_on_enter(void* context) {
+ MomentumApp* app = context;
Submenu* submenu = app->submenu;
for(size_t i = 0; i < FLIPPER_APPS_COUNT; i++) {
@@ -23,7 +23,7 @@ void xtreme_app_scene_interface_mainmenu_add_main_on_enter(void* context) {
submenu,
FLIPPER_APPS[i].name,
(uint32_t)FLIPPER_APPS[i].name,
- xtreme_app_scene_interface_mainmenu_add_main_submenu_callback,
+ momentum_app_scene_interface_mainmenu_add_main_submenu_callback,
app);
}
for(size_t i = 0; i < FLIPPER_EXTERNAL_APPS_COUNT - 1; i++) {
@@ -31,14 +31,16 @@ void xtreme_app_scene_interface_mainmenu_add_main_on_enter(void* context) {
submenu,
FLIPPER_EXTERNAL_APPS[i].name,
(uint32_t)FLIPPER_EXTERNAL_APPS[i].name,
- xtreme_app_scene_interface_mainmenu_add_main_submenu_callback,
+ momentum_app_scene_interface_mainmenu_add_main_submenu_callback,
app);
}
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewSubmenu);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewSubmenu);
}
-bool xtreme_app_scene_interface_mainmenu_add_main_on_event(void* context, SceneManagerEvent event) {
+bool momentum_app_scene_interface_mainmenu_add_main_on_event(
+ void* context,
+ SceneManagerEvent event) {
UNUSED(context);
bool consumed = false;
@@ -49,7 +51,7 @@ bool xtreme_app_scene_interface_mainmenu_add_main_on_event(void* context, SceneM
return consumed;
}
-void xtreme_app_scene_interface_mainmenu_add_main_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_add_main_on_exit(void* context) {
+ MomentumApp* app = context;
submenu_reset(app->submenu);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_reset.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_reset.c
similarity index 64%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_reset.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_reset.c
index c797ff288..8c7cef91f 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_mainmenu_reset.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_reset.c
@@ -1,15 +1,15 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
-static void xtreme_app_scene_interface_mainmenu_reset_dialog_callback(
+static void momentum_app_scene_interface_mainmenu_reset_dialog_callback(
DialogExResult result,
void* context) {
- XtremeApp* app = context;
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, result);
}
-void xtreme_app_scene_interface_mainmenu_reset_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_reset_on_enter(void* context) {
+ MomentumApp* app = context;
DialogEx* dialog_ex = app->dialog_ex;
dialog_ex_set_header(dialog_ex, "Reset Menu Apps?", 64, 10, AlignCenter, AlignCenter);
@@ -19,23 +19,23 @@ void xtreme_app_scene_interface_mainmenu_reset_on_enter(void* context) {
dialog_ex_set_context(dialog_ex, app);
dialog_ex_set_result_callback(
- dialog_ex, xtreme_app_scene_interface_mainmenu_reset_dialog_callback);
+ dialog_ex, momentum_app_scene_interface_mainmenu_reset_dialog_callback);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewDialogEx);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewDialogEx);
}
-bool xtreme_app_scene_interface_mainmenu_reset_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_interface_mainmenu_reset_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
switch(event.event) {
case DialogExResultRight:
- storage_common_remove(furi_record_open(RECORD_STORAGE), XTREME_MENU_PATH);
+ storage_common_remove(furi_record_open(RECORD_STORAGE), MAINMENU_APPS_PATH);
furi_record_close(RECORD_STORAGE);
app->save_mainmenu_apps = false;
app->require_reboot = true;
- xtreme_app_apply(app);
+ momentum_app_apply(app);
break;
case DialogExResultLeft:
scene_manager_previous_scene(app->scene_manager);
@@ -50,8 +50,8 @@ bool xtreme_app_scene_interface_mainmenu_reset_on_event(void* context, SceneMana
return consumed;
}
-void xtreme_app_scene_interface_mainmenu_reset_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_interface_mainmenu_reset_on_exit(void* context) {
+ MomentumApp* app = context;
DialogEx* dialog_ex = app->dialog_ex;
dialog_ex_reset(dialog_ex);
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_statusbar.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_statusbar.c
new file mode 100644
index 000000000..618cc5f80
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_statusbar.c
@@ -0,0 +1,147 @@
+#include "../momentum_app.h"
+
+enum VarItemListIndex {
+ VarItemListIndexBatteryIcon,
+ VarItemListIndexShowClock,
+ VarItemListIndexStatusIcons,
+ VarItemListIndexBarBorders,
+ VarItemListIndexBarBackground,
+};
+
+void momentum_app_scene_interface_statusbar_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ view_dispatcher_send_custom_event(app->view_dispatcher, index);
+}
+
+const char* const battery_icon_names[BatteryIconCount] = {
+ "OFF",
+ "Bar",
+ "%",
+ "Inv. %",
+ "Retro 3",
+ "Retro 5",
+ "Bar %",
+};
+static void momentum_app_scene_interface_statusbar_battery_icon_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ uint8_t index = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, battery_icon_names[index]);
+ momentum_settings.battery_icon = index;
+ app->save_settings = true;
+ power_set_battery_icon_enabled(furi_record_open(RECORD_POWER), index != BatteryIconOff);
+ furi_record_close(RECORD_POWER);
+}
+
+static void momentum_app_scene_interface_statusbar_statusbar_clock_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.statusbar_clock = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_statusbar_status_icons_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.status_icons = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_statusbar_bar_borders_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.bar_borders = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_interface_statusbar_bar_background_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.bar_background = value;
+ app->save_settings = true;
+}
+
+void momentum_app_scene_interface_statusbar_on_enter(void* context) {
+ MomentumApp* app = context;
+ VariableItemList* var_item_list = app->var_item_list;
+ VariableItem* item;
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Battery Icon",
+ BatteryIconCount,
+ momentum_app_scene_interface_statusbar_battery_icon_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.battery_icon);
+ variable_item_set_current_value_text(item, battery_icon_names[momentum_settings.battery_icon]);
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Show Clock",
+ 2,
+ momentum_app_scene_interface_statusbar_statusbar_clock_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.statusbar_clock);
+ variable_item_set_current_value_text(item, momentum_settings.statusbar_clock ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Status Icons",
+ 2,
+ momentum_app_scene_interface_statusbar_status_icons_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.status_icons);
+ variable_item_set_current_value_text(item, momentum_settings.status_icons ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Bar Borders",
+ 2,
+ momentum_app_scene_interface_statusbar_bar_borders_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.bar_borders);
+ variable_item_set_current_value_text(item, momentum_settings.bar_borders ? "ON" : "OFF");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "Bar Background",
+ 2,
+ momentum_app_scene_interface_statusbar_bar_background_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.bar_background);
+ variable_item_set_current_value_text(item, momentum_settings.bar_background ? "ON" : "OFF");
+
+ variable_item_list_set_enter_callback(
+ var_item_list, momentum_app_scene_interface_statusbar_var_item_list_callback, app);
+
+ variable_item_list_set_selected_item(
+ var_item_list,
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneInterfaceStatusbar));
+
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
+}
+
+bool momentum_app_scene_interface_statusbar_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneInterfaceStatusbar, event.event);
+ consumed = true;
+ switch(event.event) {
+ default:
+ break;
+ }
+ }
+
+ return consumed;
+}
+
+void momentum_app_scene_interface_statusbar_on_exit(void* context) {
+ MomentumApp* app = context;
+ variable_item_list_reset(app->var_item_list);
+}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc.c b/applications/main/momentum_app/scenes/momentum_app_scene_misc.c
similarity index 54%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_misc.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_misc.c
index 8b74d2bb8..1cff3957f 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_misc.c
@@ -1,31 +1,31 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexScreen,
VarItemListIndexDolphin,
VarItemListIndexChangeDeviceName,
VarItemListIndexChargeCap,
- VarItemListIndexShowXtremeIntro,
+ VarItemListIndexShowMomentumIntro,
};
-void xtreme_app_scene_misc_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
#define CHARGE_CAP_INTV 5
-static void xtreme_app_scene_misc_charge_cap_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_charge_cap_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
char cap_str[6];
uint32_t value = (variable_item_get_current_value_index(item) + 1) * CHARGE_CAP_INTV;
snprintf(cap_str, 6, "%lu%%", value);
variable_item_set_current_value_text(item, cap_str);
- xtreme_settings.charge_cap = value;
+ momentum_settings.charge_cap = value;
app->save_settings = true;
}
-void xtreme_app_scene_misc_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
uint8_t value_index;
@@ -39,56 +39,56 @@ void xtreme_app_scene_misc_on_enter(void* context) {
variable_item_list_add(var_item_list, "Change Device Name", 0, NULL, app);
char cap_str[6];
- value_index = xtreme_settings.charge_cap / CHARGE_CAP_INTV;
+ value_index = momentum_settings.charge_cap / CHARGE_CAP_INTV;
snprintf(cap_str, 6, "%lu%%", (uint32_t)value_index * CHARGE_CAP_INTV);
item = variable_item_list_add(
var_item_list,
"Charge Cap",
100 / CHARGE_CAP_INTV,
- xtreme_app_scene_misc_charge_cap_changed,
+ momentum_app_scene_misc_charge_cap_changed,
app);
variable_item_set_current_value_index(item, value_index - 1);
variable_item_set_current_value_text(item, cap_str);
- variable_item_list_add(var_item_list, "Show Xtreme Intro", 0, NULL, app);
+ variable_item_list_add(var_item_list, "Show Momentum Intro", 0, NULL, app);
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_misc_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_misc_var_item_list_callback, app);
variable_item_list_set_selected_item(
- var_item_list, scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneMisc));
+ var_item_list, scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneMisc));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_misc_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_misc_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMisc, event.event);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneMisc, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexScreen:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMiscScreen, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneMiscScreen);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneMiscScreen, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneMiscScreen);
break;
case VarItemListIndexDolphin:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMiscDolphin, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneMiscDolphin);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneMiscDolphin, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneMiscDolphin);
break;
case VarItemListIndexChangeDeviceName:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMiscRename, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneMiscRename);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneMiscRename, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneMiscRename);
break;
- case VarItemListIndexShowXtremeIntro: {
+ case VarItemListIndexShowMomentumIntro: {
for(int i = 0; i < 10; i++) {
if(storage_common_copy(
furi_record_open(RECORD_STORAGE),
- EXT_PATH("dolphin/xfwfirstboot.bin"),
+ EXT_PATH("dolphin/firstboot.bin"),
EXT_PATH(".slideshow"))) {
app->show_slideshow = true;
- xtreme_app_apply(app);
+ momentum_app_apply(app);
break;
}
}
@@ -102,7 +102,7 @@ bool xtreme_app_scene_misc_on_event(void* context, SceneManagerEvent event) {
return consumed;
}
-void xtreme_app_scene_misc_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_dolphin.c b/applications/main/momentum_app/scenes/momentum_app_scene_misc_dolphin.c
similarity index 62%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_misc_dolphin.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_misc_dolphin.c
index 06881e629..49cbf0132 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_dolphin.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_misc_dolphin.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexDolphinLevel,
@@ -6,13 +6,13 @@ enum VarItemListIndex {
VarItemListIndexButthurtTimer,
};
-void xtreme_app_scene_misc_dolphin_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_dolphin_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-static void xtreme_app_scene_misc_dolphin_dolphin_level_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_dolphin_dolphin_level_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
app->dolphin_level = variable_item_get_current_value_index(item) + 1;
char level_str[4];
snprintf(level_str, 4, "%li", app->dolphin_level);
@@ -20,8 +20,8 @@ static void xtreme_app_scene_misc_dolphin_dolphin_level_changed(VariableItem* it
app->save_level = true;
}
-static void xtreme_app_scene_misc_dolphin_dolphin_angry_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_dolphin_dolphin_angry_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
app->dolphin_angry = variable_item_get_current_value_index(item);
char angry_str[4];
snprintf(angry_str, 4, "%li", app->dolphin_angry);
@@ -53,17 +53,17 @@ const uint32_t butthurt_timer_values[COUNT_OF(butthurt_timer_names)] = {
86400,
172800,
};
-static void xtreme_app_scene_misc_dolphin_butthurt_timer_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_dolphin_butthurt_timer_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, butthurt_timer_names[index]);
- xtreme_settings.butthurt_timer = butthurt_timer_values[index];
+ momentum_settings.butthurt_timer = butthurt_timer_values[index];
app->save_settings = true;
app->require_reboot = true;
}
-void xtreme_app_scene_misc_dolphin_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_dolphin_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
uint8_t value_index;
@@ -74,7 +74,7 @@ void xtreme_app_scene_misc_dolphin_on_enter(void* context) {
var_item_list,
"Dolphin Level",
DOLPHIN_LEVEL_COUNT + 1,
- xtreme_app_scene_misc_dolphin_dolphin_level_changed,
+ momentum_app_scene_misc_dolphin_dolphin_level_changed,
app);
variable_item_set_current_value_index(item, app->dolphin_level - 1);
variable_item_set_current_value_text(item, level_str);
@@ -85,7 +85,7 @@ void xtreme_app_scene_misc_dolphin_on_enter(void* context) {
var_item_list,
"Dolphin Angry",
BUTTHURT_MAX + 1,
- xtreme_app_scene_misc_dolphin_dolphin_angry_changed,
+ momentum_app_scene_misc_dolphin_dolphin_angry_changed,
app);
variable_item_set_current_value_index(item, app->dolphin_angry);
variable_item_set_current_value_text(item, angry_str);
@@ -94,29 +94,30 @@ void xtreme_app_scene_misc_dolphin_on_enter(void* context) {
var_item_list,
"Butthurt Timer",
COUNT_OF(butthurt_timer_names),
- xtreme_app_scene_misc_dolphin_butthurt_timer_changed,
+ momentum_app_scene_misc_dolphin_butthurt_timer_changed,
app);
value_index = value_index_uint32(
- xtreme_settings.butthurt_timer, butthurt_timer_values, COUNT_OF(butthurt_timer_values));
+ momentum_settings.butthurt_timer, butthurt_timer_values, COUNT_OF(butthurt_timer_values));
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, butthurt_timer_names[value_index]);
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_misc_dolphin_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_misc_dolphin_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneMiscDolphin));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneMiscDolphin));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_misc_dolphin_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_misc_dolphin_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMiscDolphin, event.event);
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneMiscDolphin, event.event);
consumed = true;
switch(event.event) {
default:
@@ -127,7 +128,7 @@ bool xtreme_app_scene_misc_dolphin_on_event(void* context, SceneManagerEvent eve
return consumed;
}
-void xtreme_app_scene_misc_dolphin_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_dolphin_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_rename.c b/applications/main/momentum_app/scenes/momentum_app_scene_misc_rename.c
similarity index 60%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_misc_rename.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_misc_rename.c
index dd01a60ca..5f0127dfd 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_rename.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_misc_rename.c
@@ -1,11 +1,11 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum TextInputIndex {
TextInputResultOk,
};
-static void xtreme_app_scene_misc_rename_text_input_callback(void* context) {
- XtremeApp* app = context;
+static void momentum_app_scene_misc_rename_text_input_callback(void* context) {
+ MomentumApp* app = context;
app->save_name = true;
app->require_reboot = true;
@@ -13,7 +13,7 @@ static void xtreme_app_scene_misc_rename_text_input_callback(void* context) {
}
static bool
- xtreme_app_scene_misc_rename_validator(const char* text, FuriString* error, void* context) {
+ momentum_app_scene_misc_rename_validator(const char* text, FuriString* error, void* context) {
UNUSED(context);
for(; *text; ++text) {
@@ -27,29 +27,29 @@ static bool
return true;
}
-void xtreme_app_scene_misc_rename_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_rename_on_enter(void* context) {
+ MomentumApp* app = context;
TextInput* text_input = app->text_input;
text_input_set_header_text(text_input, "Leave empty for default");
- text_input_set_validator(text_input, xtreme_app_scene_misc_rename_validator, NULL);
+ text_input_set_validator(text_input, momentum_app_scene_misc_rename_validator, NULL);
text_input_set_minimum_length(text_input, 0);
text_input_set_result_callback(
text_input,
- xtreme_app_scene_misc_rename_text_input_callback,
+ momentum_app_scene_misc_rename_text_input_callback,
app,
app->device_name,
FURI_HAL_VERSION_ARRAY_NAME_LENGTH,
true);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewTextInput);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewTextInput);
}
-bool xtreme_app_scene_misc_rename_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_misc_rename_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
@@ -66,7 +66,7 @@ bool xtreme_app_scene_misc_rename_on_event(void* context, SceneManagerEvent even
return consumed;
}
-void xtreme_app_scene_misc_rename_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_rename_on_exit(void* context) {
+ MomentumApp* app = context;
text_input_reset(app->text_input);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_screen.c b/applications/main/momentum_app/scenes/momentum_app_scene_misc_screen.c
similarity index 68%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_misc_screen.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_misc_screen.c
index ba5cae6d0..ef0d04468 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_screen.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_misc_screen.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexDarkMode,
@@ -13,20 +13,20 @@ enum VarItemListIndex {
VarItemListIndexRainbowSaturation,
};
-void xtreme_app_scene_misc_screen_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_screen_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-static void xtreme_app_scene_misc_screen_dark_mode_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_screen_dark_mode_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.dark_mode = value;
+ momentum_settings.dark_mode = value;
app->save_settings = true;
}
-static void xtreme_app_scene_misc_screen_hand_orient_changed(VariableItem* item) {
+static void momentum_app_scene_misc_screen_hand_orient_changed(VariableItem* item) {
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
if(value) {
@@ -49,29 +49,29 @@ static const struct {
{"White", {255, 192, 203}},
};
static const size_t lcd_sz = COUNT_OF(lcd_colors);
-static void xtreme_app_scene_misc_screen_lcd_color_changed(VariableItem* item, uint8_t led) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_screen_lcd_color_changed(VariableItem* item, uint8_t led) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, lcd_colors[index].name);
rgb_backlight_set_color(led, &lcd_colors[index].color);
app->save_backlight = true;
}
-static void xtreme_app_scene_misc_screen_lcd_color_0_changed(VariableItem* item) {
- xtreme_app_scene_misc_screen_lcd_color_changed(item, 0);
+static void momentum_app_scene_misc_screen_lcd_color_0_changed(VariableItem* item) {
+ momentum_app_scene_misc_screen_lcd_color_changed(item, 0);
}
-static void xtreme_app_scene_misc_screen_lcd_color_1_changed(VariableItem* item) {
- xtreme_app_scene_misc_screen_lcd_color_changed(item, 1);
+static void momentum_app_scene_misc_screen_lcd_color_1_changed(VariableItem* item) {
+ momentum_app_scene_misc_screen_lcd_color_changed(item, 1);
}
-static void xtreme_app_scene_misc_screen_lcd_color_2_changed(VariableItem* item) {
- xtreme_app_scene_misc_screen_lcd_color_changed(item, 2);
+static void momentum_app_scene_misc_screen_lcd_color_2_changed(VariableItem* item) {
+ momentum_app_scene_misc_screen_lcd_color_changed(item, 2);
}
static const struct {
uint8_t led;
VariableItemChangeCallback cb;
} lcd_cols[] = {
- {0, xtreme_app_scene_misc_screen_lcd_color_0_changed},
- {1, xtreme_app_scene_misc_screen_lcd_color_1_changed},
- {2, xtreme_app_scene_misc_screen_lcd_color_2_changed},
+ {0, momentum_app_scene_misc_screen_lcd_color_0_changed},
+ {1, momentum_app_scene_misc_screen_lcd_color_1_changed},
+ {2, momentum_app_scene_misc_screen_lcd_color_2_changed},
};
const char* const rainbow_lcd_names[RGBBacklightRainbowModeCount] = {
@@ -79,16 +79,16 @@ const char* const rainbow_lcd_names[RGBBacklightRainbowModeCount] = {
"Wave",
"Static",
};
-static void xtreme_app_scene_misc_screen_rainbow_lcd_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_screen_rainbow_lcd_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, rainbow_lcd_names[index]);
rgb_backlight_set_rainbow_mode(index);
app->save_backlight = true;
}
-static void xtreme_app_scene_misc_screen_rainbow_speed_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_screen_rainbow_speed_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item) + 1;
char str[4];
snprintf(str, sizeof(str), "%d", index);
@@ -129,16 +129,16 @@ const uint32_t rainbow_interval_values[COUNT_OF(rainbow_interval_names)] = {
4000,
5000,
};
-static void xtreme_app_scene_misc_screen_rainbow_interval_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_screen_rainbow_interval_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, rainbow_interval_names[index]);
rgb_backlight_set_rainbow_interval(rainbow_interval_values[index]);
app->save_backlight = true;
}
-static void xtreme_app_scene_misc_screen_rainbow_saturation_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_misc_screen_rainbow_saturation_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
uint8_t index = variable_item_get_current_value_index(item) + 1;
char str[4];
snprintf(str, sizeof(str), "%d", index);
@@ -147,25 +147,25 @@ static void xtreme_app_scene_misc_screen_rainbow_saturation_changed(VariableItem
app->save_backlight = true;
}
-void xtreme_app_scene_misc_screen_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_screen_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
uint8_t value_index;
item = variable_item_list_add(
- var_item_list, "Dark Mode", 2, xtreme_app_scene_misc_screen_dark_mode_changed, app);
- variable_item_set_current_value_index(item, xtreme_settings.dark_mode);
- variable_item_set_current_value_text(item, xtreme_settings.dark_mode ? "ON" : "OFF");
+ var_item_list, "Dark Mode", 2, momentum_app_scene_misc_screen_dark_mode_changed, app);
+ variable_item_set_current_value_index(item, momentum_settings.dark_mode);
+ variable_item_set_current_value_text(item, momentum_settings.dark_mode ? "ON" : "OFF");
item = variable_item_list_add(
- var_item_list, "Left Handed", 2, xtreme_app_scene_misc_screen_hand_orient_changed, app);
+ var_item_list, "Left Handed", 2, momentum_app_scene_misc_screen_hand_orient_changed, app);
bool value = furi_hal_rtc_is_flag_set(FuriHalRtcFlagHandOrient);
variable_item_set_current_value_index(item, value);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
item = variable_item_list_add(var_item_list, "RGB Backlight", 1, NULL, app);
- variable_item_set_current_value_text(item, xtreme_settings.rgb_backlight ? "ON" : "OFF");
+ variable_item_set_current_value_text(item, momentum_settings.rgb_backlight ? "ON" : "OFF");
RgbColor color;
for(size_t i = 0; i < COUNT_OF(lcd_cols); i++) {
@@ -188,38 +188,38 @@ void xtreme_app_scene_misc_screen_on_enter(void* context) {
snprintf(str, sizeof(str), "%02X%02X%02X", color.r, color.g, color.b);
variable_item_set_current_value_text(item, str);
}
- variable_item_set_locked(item, !xtreme_settings.rgb_backlight, "Needs RGB\nBacklight!");
+ variable_item_set_locked(item, !momentum_settings.rgb_backlight, "Needs RGB\nBacklight!");
}
item = variable_item_list_add(
var_item_list,
"Rainbow LCD",
RGBBacklightRainbowModeCount,
- xtreme_app_scene_misc_screen_rainbow_lcd_changed,
+ momentum_app_scene_misc_screen_rainbow_lcd_changed,
app);
value_index = rgb_backlight_get_rainbow_mode();
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, rainbow_lcd_names[value_index]);
- variable_item_set_locked(item, !xtreme_settings.rgb_backlight, "Needs RGB\nBacklight!");
+ variable_item_set_locked(item, !momentum_settings.rgb_backlight, "Needs RGB\nBacklight!");
item = variable_item_list_add(
var_item_list,
"Rainbow Speed",
25,
- xtreme_app_scene_misc_screen_rainbow_speed_changed,
+ momentum_app_scene_misc_screen_rainbow_speed_changed,
app);
value_index = rgb_backlight_get_rainbow_speed();
variable_item_set_current_value_index(item, value_index - 1);
char speed_str[4];
snprintf(speed_str, sizeof(speed_str), "%d", value_index);
variable_item_set_current_value_text(item, speed_str);
- variable_item_set_locked(item, !xtreme_settings.rgb_backlight, "Needs RGB\nBacklight!");
+ variable_item_set_locked(item, !momentum_settings.rgb_backlight, "Needs RGB\nBacklight!");
item = variable_item_list_add(
var_item_list,
"Rainbow Interval",
COUNT_OF(rainbow_interval_values),
- xtreme_app_scene_misc_screen_rainbow_interval_changed,
+ momentum_app_scene_misc_screen_rainbow_interval_changed,
app);
value_index = value_index_uint32(
rgb_backlight_get_rainbow_interval(),
@@ -227,41 +227,41 @@ void xtreme_app_scene_misc_screen_on_enter(void* context) {
COUNT_OF(rainbow_interval_values));
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, rainbow_interval_names[value_index]);
- variable_item_set_locked(item, !xtreme_settings.rgb_backlight, "Needs RGB\nBacklight!");
+ variable_item_set_locked(item, !momentum_settings.rgb_backlight, "Needs RGB\nBacklight!");
item = variable_item_list_add(
var_item_list,
"Rainbow Saturation",
255,
- xtreme_app_scene_misc_screen_rainbow_saturation_changed,
+ momentum_app_scene_misc_screen_rainbow_saturation_changed,
app);
value_index = rgb_backlight_get_rainbow_saturation();
variable_item_set_current_value_index(item, value_index - 1);
char saturation_str[4];
snprintf(saturation_str, sizeof(saturation_str), "%d", value_index);
variable_item_set_current_value_text(item, saturation_str);
- variable_item_set_locked(item, !xtreme_settings.rgb_backlight, "Needs RGB\nBacklight!");
+ variable_item_set_locked(item, !momentum_settings.rgb_backlight, "Needs RGB\nBacklight!");
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_misc_screen_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_misc_screen_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneMiscScreen));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneMiscScreen));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_misc_screen_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_misc_screen_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMiscScreen, event.event);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneMiscScreen, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexRgbBacklight: {
- bool change = xtreme_settings.rgb_backlight;
+ bool change = momentum_settings.rgb_backlight;
if(!change) {
DialogMessage* msg = dialog_message_alloc();
dialog_message_set_header(msg, "RGB Backlight", 64, 0, AlignCenter, AlignTop);
@@ -279,35 +279,35 @@ bool xtreme_app_scene_misc_screen_on_event(void* context, SceneManagerEvent even
dialog_message_free(msg);
}
if(change) {
- xtreme_settings.rgb_backlight = !xtreme_settings.rgb_backlight;
+ momentum_settings.rgb_backlight = !momentum_settings.rgb_backlight;
app->save_settings = true;
app->save_backlight = true;
notification_message(app->notification, &sequence_display_backlight_on);
- rgb_backlight_reconfigure(xtreme_settings.rgb_backlight);
+ rgb_backlight_reconfigure(momentum_settings.rgb_backlight);
variable_item_set_current_value_text(
variable_item_list_get(app->var_item_list, VarItemListIndexRgbBacklight),
- xtreme_settings.rgb_backlight ? "ON" : "OFF");
+ momentum_settings.rgb_backlight ? "ON" : "OFF");
for(size_t i = 0; i < COUNT_OF(lcd_cols); i++) {
variable_item_set_locked(
variable_item_list_get(app->var_item_list, VarItemListIndexLcdColor0 + i),
- !xtreme_settings.rgb_backlight,
+ !momentum_settings.rgb_backlight,
"Needs RGB\nBacklight!");
}
variable_item_set_locked(
variable_item_list_get(app->var_item_list, VarItemListIndexRainbowLcd),
- !xtreme_settings.rgb_backlight,
+ !momentum_settings.rgb_backlight,
"Needs RGB\nBacklight!");
variable_item_set_locked(
variable_item_list_get(app->var_item_list, VarItemListIndexRainbowSpeed),
- !xtreme_settings.rgb_backlight,
+ !momentum_settings.rgb_backlight,
"Needs RGB\nBacklight!");
variable_item_set_locked(
variable_item_list_get(app->var_item_list, VarItemListIndexRainbowInterval),
- !xtreme_settings.rgb_backlight,
+ !momentum_settings.rgb_backlight,
"Needs RGB\nBacklight!");
variable_item_set_locked(
variable_item_list_get(app->var_item_list, VarItemListIndexRainbowSaturation),
- !xtreme_settings.rgb_backlight,
+ !momentum_settings.rgb_backlight,
"Needs RGB\nBacklight!");
}
break;
@@ -317,9 +317,9 @@ bool xtreme_app_scene_misc_screen_on_event(void* context, SceneManagerEvent even
case VarItemListIndexLcdColor2:
scene_manager_set_scene_state(
app->scene_manager,
- XtremeAppSceneMiscScreenColor,
+ MomentumAppSceneMiscScreenColor,
event.event - VarItemListIndexLcdColor0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneMiscScreenColor);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneMiscScreenColor);
break;
default:
break;
@@ -329,7 +329,7 @@ bool xtreme_app_scene_misc_screen_on_event(void* context, SceneManagerEvent even
return consumed;
}
-void xtreme_app_scene_misc_screen_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_screen_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_screen_color.c b/applications/main/momentum_app/scenes/momentum_app_scene_misc_screen_color.c
similarity index 59%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_misc_screen_color.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_misc_screen_color.c
index 91d2421a0..a62dfa888 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_misc_screen_color.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_misc_screen_color.c
@@ -1,38 +1,38 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum ByteInputResult {
ByteInputResultOk,
};
-void xtreme_app_scene_misc_screen_color_byte_input_callback(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_screen_color_byte_input_callback(void* context) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, ByteInputResultOk);
}
-void xtreme_app_scene_misc_screen_color_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_screen_color_on_enter(void* context) {
+ MomentumApp* app = context;
ByteInput* byte_input = app->byte_input;
byte_input_set_header_text(byte_input, "Set LCD Color (#RRGGBB)");
rgb_backlight_get_color(
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneMiscScreenColor),
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneMiscScreenColor),
&app->lcd_color);
byte_input_set_result_callback(
byte_input,
- xtreme_app_scene_misc_screen_color_byte_input_callback,
+ momentum_app_scene_misc_screen_color_byte_input_callback,
NULL,
app,
(void*)&app->lcd_color,
sizeof(app->lcd_color));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewByteInput);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewByteInput);
}
-bool xtreme_app_scene_misc_screen_color_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_misc_screen_color_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
@@ -40,7 +40,7 @@ bool xtreme_app_scene_misc_screen_color_on_event(void* context, SceneManagerEven
switch(event.event) {
case ByteInputResultOk:
rgb_backlight_set_color(
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneMiscScreenColor),
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneMiscScreenColor),
&app->lcd_color);
app->save_backlight = true;
scene_manager_previous_scene(app->scene_manager);
@@ -53,8 +53,8 @@ bool xtreme_app_scene_misc_screen_color_on_event(void* context, SceneManagerEven
return consumed;
}
-void xtreme_app_scene_misc_screen_color_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_misc_screen_color_on_exit(void* context) {
+ MomentumApp* app = context;
byte_input_set_result_callback(app->byte_input, NULL, NULL, NULL, NULL, 0);
byte_input_set_header_text(app->byte_input, "");
}
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_protocols.c b/applications/main/momentum_app/scenes/momentum_app_scene_protocols.c
new file mode 100644
index 000000000..cbe69e46c
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_protocols.c
@@ -0,0 +1,124 @@
+#include "../momentum_app.h"
+
+enum VarItemListIndex {
+ VarItemListIndexBadkbMode,
+ VarItemListIndexBadbtRemember,
+ VarItemListIndexSubghzFreqs,
+ VarItemListIndexSubghzExtend,
+ VarItemListIndexGpioPins,
+};
+
+void momentum_app_scene_protocols_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ view_dispatcher_send_custom_event(app->view_dispatcher, index);
+}
+
+static void momentum_app_scene_protocols_bad_bt_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "BT" : "USB");
+ momentum_settings.bad_bt = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_protocols_bad_bt_remember_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "ON" : "OFF");
+ momentum_settings.bad_bt_remember = value;
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_protocols_subghz_extend_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ app->subghz_extend = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, app->subghz_extend ? "ON" : "OFF");
+ app->save_subghz = true;
+}
+
+static void momentum_app_scene_protocols_file_naming_prefix_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ bool value = variable_item_get_current_value_index(item);
+ variable_item_set_current_value_text(item, value ? "After" : "Before");
+ momentum_settings.file_naming_prefix_after = value;
+ app->save_settings = true;
+}
+
+void momentum_app_scene_protocols_on_enter(void* context) {
+ MomentumApp* app = context;
+ VariableItemList* var_item_list = app->var_item_list;
+ VariableItem* item;
+
+ item = variable_item_list_add(
+ var_item_list, "BadKB Mode", 2, momentum_app_scene_protocols_bad_bt_changed, app);
+ variable_item_set_current_value_index(item, momentum_settings.bad_bt);
+ variable_item_set_current_value_text(item, momentum_settings.bad_bt ? "BT" : "USB");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "BadBT Remember",
+ 2,
+ momentum_app_scene_protocols_bad_bt_remember_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.bad_bt_remember);
+ variable_item_set_current_value_text(item, momentum_settings.bad_bt_remember ? "ON" : "OFF");
+
+ item = variable_item_list_add(var_item_list, "SubGHz Freqs", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ item = variable_item_list_add(
+ var_item_list, "SubGHz Extend", 2, momentum_app_scene_protocols_subghz_extend_changed, app);
+ variable_item_set_current_value_index(item, app->subghz_extend);
+ variable_item_set_current_value_text(item, app->subghz_extend ? "ON" : "OFF");
+
+ item = variable_item_list_add(var_item_list, "GPIO Pins", 0, NULL, app);
+ variable_item_set_current_value_text(item, ">");
+
+ item = variable_item_list_add(
+ var_item_list,
+ "File Naming Prefix",
+ 2,
+ momentum_app_scene_protocols_file_naming_prefix_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.file_naming_prefix_after);
+ variable_item_set_current_value_text(
+ item, momentum_settings.file_naming_prefix_after ? "After" : "Before");
+
+ variable_item_list_set_enter_callback(
+ var_item_list, momentum_app_scene_protocols_var_item_list_callback, app);
+
+ variable_item_list_set_selected_item(
+ var_item_list,
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneProtocols));
+
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
+}
+
+bool momentum_app_scene_protocols_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneProtocols, event.event);
+ consumed = true;
+ switch(event.event) {
+ case VarItemListIndexSubghzFreqs:
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneProtocolsFreqs, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocolsFreqs);
+ break;
+ case VarItemListIndexGpioPins:
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneProtocolsGpio, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocolsGpio);
+ break;
+ default:
+ break;
+ }
+ }
+
+ return consumed;
+}
+
+void momentum_app_scene_protocols_on_exit(void* context) {
+ MomentumApp* app = context;
+ variable_item_list_reset(app->var_item_list);
+}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs.c b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs.c
similarity index 54%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs.c
index dfe77d26c..c67e76ee0 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexUseDefaults,
@@ -6,21 +6,21 @@ enum VarItemListIndex {
VarItemListIndexHopperFreqs,
};
-void xtreme_app_scene_protocols_freqs_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-static void xtreme_app_scene_protocols_freqs_use_defaults_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_protocols_freqs_use_defaults_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
app->subghz_use_defaults = value;
app->save_subghz_freqs = true;
}
-void xtreme_app_scene_protocols_freqs_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
@@ -28,7 +28,7 @@ void xtreme_app_scene_protocols_freqs_on_enter(void* context) {
var_item_list,
"Use Defaults",
2,
- xtreme_app_scene_protocols_freqs_use_defaults_changed,
+ momentum_app_scene_protocols_freqs_use_defaults_changed,
app);
variable_item_set_current_value_index(item, app->subghz_use_defaults);
variable_item_set_current_value_text(item, app->subghz_use_defaults ? "ON" : "OFF");
@@ -40,33 +40,33 @@ void xtreme_app_scene_protocols_freqs_on_enter(void* context) {
variable_item_set_current_value_text(item, ">");
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_protocols_freqs_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_protocols_freqs_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFreqs));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneProtocolsFreqs));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_protocols_freqs_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_protocols_freqs_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqs, event.event);
+ app->scene_manager, MomentumAppSceneProtocolsFreqs, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexStaticFreqs:
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqsStatic, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFreqsStatic);
+ app->scene_manager, MomentumAppSceneProtocolsFreqsStatic, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocolsFreqsStatic);
break;
case VarItemListIndexHopperFreqs:
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqsHopper, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFreqsHopper);
+ app->scene_manager, MomentumAppSceneProtocolsFreqsHopper, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocolsFreqsHopper);
break;
default:
break;
@@ -76,7 +76,7 @@ bool xtreme_app_scene_protocols_freqs_on_event(void* context, SceneManagerEvent
return consumed;
}
-void xtreme_app_scene_protocols_freqs_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_add.c b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_add.c
similarity index 67%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_add.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_add.c
index 314a69e1e..3481cb4fc 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_add.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_add.c
@@ -1,12 +1,12 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum TextInputResult {
TextInputResultOk,
TextInputResultError,
};
-static void xtreme_app_scene_protocols_freqs_add_text_input_callback(void* context) {
- XtremeApp* app = context;
+static void momentum_app_scene_protocols_freqs_add_text_input_callback(void* context) {
+ MomentumApp* app = context;
char* end;
uint32_t value = strtol(app->subghz_freq_buffer, &end, 0) * 1000;
@@ -15,7 +15,7 @@ static void xtreme_app_scene_protocols_freqs_add_text_input_callback(void* conte
return;
}
bool is_hopper =
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFreqsAdd);
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneProtocolsFreqsAdd);
if(is_hopper) {
FrequencyList_push_back(app->subghz_hopper_freqs, value);
} else {
@@ -25,32 +25,32 @@ static void xtreme_app_scene_protocols_freqs_add_text_input_callback(void* conte
view_dispatcher_send_custom_event(app->view_dispatcher, TextInputResultOk);
}
-void xtreme_app_scene_protocols_freqs_add_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_add_on_enter(void* context) {
+ MomentumApp* app = context;
TextInput* text_input = app->text_input;
text_input_set_header_text(text_input, "Ex: 123456 for 123.456 MHz");
- strlcpy(app->subghz_freq_buffer, "", XTREME_SUBGHZ_FREQ_BUFFER_SIZE);
+ strlcpy(app->subghz_freq_buffer, "", sizeof(app->subghz_freq_buffer));
text_input_set_result_callback(
text_input,
- xtreme_app_scene_protocols_freqs_add_text_input_callback,
+ momentum_app_scene_protocols_freqs_add_text_input_callback,
app,
app->subghz_freq_buffer,
- XTREME_SUBGHZ_FREQ_BUFFER_SIZE,
+ sizeof(app->subghz_freq_buffer),
true);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewTextInput);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewTextInput);
}
void callback_return(void* context) {
- XtremeApp* app = context;
+ MomentumApp* app = context;
scene_manager_previous_scene(app->scene_manager);
}
-bool xtreme_app_scene_protocols_freqs_add_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_protocols_freqs_add_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
@@ -67,7 +67,7 @@ bool xtreme_app_scene_protocols_freqs_add_on_event(void* context, SceneManagerEv
popup_set_context(app->popup, app);
popup_set_timeout(app->popup, 1000);
popup_enable_timeout(app->popup);
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewPopup);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewPopup);
break;
default:
break;
@@ -77,7 +77,7 @@ bool xtreme_app_scene_protocols_freqs_add_on_event(void* context, SceneManagerEv
return consumed;
}
-void xtreme_app_scene_protocols_freqs_add_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_add_on_exit(void* context) {
+ MomentumApp* app = context;
text_input_reset(app->text_input);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_hopper.c b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_hopper.c
similarity index 74%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_hopper.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_hopper.c
index 4dabdbeeb..aada8de42 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_hopper.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_hopper.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexHopperFrequency,
@@ -6,13 +6,15 @@ enum VarItemListIndex {
VarItemListIndexAddHopperFreq,
};
-void xtreme_app_scene_protocols_freqs_hopper_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_hopper_var_item_list_callback(
+ void* context,
+ uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-static void xtreme_app_scene_protocols_freqs_hopper_frequency_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_protocols_freqs_hopper_frequency_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
app->subghz_hopper_index = variable_item_get_current_value_index(item);
uint32_t value = *FrequencyList_get(app->subghz_hopper_freqs, app->subghz_hopper_index);
char text[10] = {0};
@@ -20,8 +22,8 @@ static void xtreme_app_scene_protocols_freqs_hopper_frequency_changed(VariableIt
variable_item_set_current_value_text(item, text);
}
-void xtreme_app_scene_protocols_freqs_hopper_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_hopper_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
@@ -29,7 +31,7 @@ void xtreme_app_scene_protocols_freqs_hopper_on_enter(void* context) {
var_item_list,
"Hopper Freq",
FrequencyList_size(app->subghz_hopper_freqs),
- xtreme_app_scene_protocols_freqs_hopper_frequency_changed,
+ momentum_app_scene_protocols_freqs_hopper_frequency_changed,
app);
app->subghz_hopper_index = 0;
variable_item_set_current_value_index(item, app->subghz_hopper_index);
@@ -47,22 +49,22 @@ void xtreme_app_scene_protocols_freqs_hopper_on_enter(void* context) {
variable_item_list_add(var_item_list, "Add Hopper Freq", 0, NULL, app);
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_protocols_freqs_hopper_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_protocols_freqs_hopper_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFreqsHopper));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneProtocolsFreqsHopper));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_protocols_freqs_hopper_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_protocols_freqs_hopper_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqsHopper, event.event);
+ app->scene_manager, MomentumAppSceneProtocolsFreqsHopper, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexRemoveHopperFreq:
@@ -100,8 +102,8 @@ bool xtreme_app_scene_protocols_freqs_hopper_on_event(void* context, SceneManage
break;
case VarItemListIndexAddHopperFreq:
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqsAdd, true);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFreqsAdd);
+ app->scene_manager, MomentumAppSceneProtocolsFreqsAdd, true);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocolsFreqsAdd);
break;
default:
break;
@@ -111,7 +113,7 @@ bool xtreme_app_scene_protocols_freqs_hopper_on_event(void* context, SceneManage
return consumed;
}
-void xtreme_app_scene_protocols_freqs_hopper_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_hopper_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_static.c b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_static.c
similarity index 74%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_static.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_static.c
index fdfcde35a..bf8870d11 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_freqs_static.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_freqs_static.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexStaticFrequency,
@@ -6,13 +6,15 @@ enum VarItemListIndex {
VarItemListIndexAddStaticFreq,
};
-void xtreme_app_scene_protocols_freqs_static_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_static_var_item_list_callback(
+ void* context,
+ uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-static void xtreme_app_scene_protocols_freqs_static_frequency_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
+static void momentum_app_scene_protocols_freqs_static_frequency_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
app->subghz_static_index = variable_item_get_current_value_index(item);
uint32_t value = *FrequencyList_get(app->subghz_static_freqs, app->subghz_static_index);
char text[10] = {0};
@@ -20,8 +22,8 @@ static void xtreme_app_scene_protocols_freqs_static_frequency_changed(VariableIt
variable_item_set_current_value_text(item, text);
}
-void xtreme_app_scene_protocols_freqs_static_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_static_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
@@ -29,7 +31,7 @@ void xtreme_app_scene_protocols_freqs_static_on_enter(void* context) {
var_item_list,
"Static Freq",
FrequencyList_size(app->subghz_static_freqs),
- xtreme_app_scene_protocols_freqs_static_frequency_changed,
+ momentum_app_scene_protocols_freqs_static_frequency_changed,
app);
app->subghz_static_index = 0;
variable_item_set_current_value_index(item, app->subghz_static_index);
@@ -47,22 +49,22 @@ void xtreme_app_scene_protocols_freqs_static_on_enter(void* context) {
variable_item_list_add(var_item_list, "Add Static Freq", 0, NULL, app);
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_protocols_freqs_static_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_protocols_freqs_static_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFreqsStatic));
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneProtocolsFreqsStatic));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_protocols_freqs_static_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_protocols_freqs_static_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqsStatic, event.event);
+ app->scene_manager, MomentumAppSceneProtocolsFreqsStatic, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexRemoveStaticFreq:
@@ -100,8 +102,8 @@ bool xtreme_app_scene_protocols_freqs_static_on_event(void* context, SceneManage
break;
case VarItemListIndexAddStaticFreq:
scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsFreqsAdd, false);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFreqsAdd);
+ app->scene_manager, MomentumAppSceneProtocolsFreqsAdd, false);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocolsFreqsAdd);
break;
default:
break;
@@ -111,7 +113,7 @@ bool xtreme_app_scene_protocols_freqs_static_on_event(void* context, SceneManage
return consumed;
}
-void xtreme_app_scene_protocols_freqs_static_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_protocols_freqs_static_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_protocols_gpio.c b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_gpio.c
new file mode 100644
index 000000000..061a2b364
--- /dev/null
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_protocols_gpio.c
@@ -0,0 +1,158 @@
+#include "../momentum_app.h"
+
+enum VarItemListIndex {
+ VarItemListIndexSpiCc1101Handle,
+ VarItemListIndexSpiNrf24Handle,
+ VarItemListIndexUartEspChannel,
+ VarItemListIndexUartNmeaChannel,
+ VarItemListIndexUartGeneralChannel,
+};
+
+#define SPI_DEFAULT "Default 4"
+#define SPI_EXTRA "Extra 7"
+#define UART_DEFAULT "Default 13,14"
+#define UART_EXTRA "Extra 15,16"
+
+void momentum_app_scene_protocols_gpio_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
+ view_dispatcher_send_custom_event(app->view_dispatcher, index);
+}
+
+static void momentum_app_scene_protocols_gpio_cc1101_handle_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ momentum_settings.spi_cc1101_handle =
+ variable_item_get_current_value_index(item) == 0 ? SpiDefault : SpiExtra;
+ variable_item_set_current_value_text(
+ item, momentum_settings.spi_cc1101_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_protocols_gpio_nrf24_handle_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ momentum_settings.spi_nrf24_handle =
+ variable_item_get_current_value_index(item) == 0 ? SpiDefault : SpiExtra;
+ variable_item_set_current_value_text(
+ item, momentum_settings.spi_nrf24_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_protocols_gpio_esp32_channel_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ momentum_settings.uart_esp_channel = variable_item_get_current_value_index(item) == 0 ?
+ FuriHalSerialIdUsart :
+ FuriHalSerialIdLpuart;
+ variable_item_set_current_value_text(
+ item,
+ momentum_settings.uart_esp_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_protocols_gpio_nmea_channel_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ momentum_settings.uart_nmea_channel = variable_item_get_current_value_index(item) == 0 ?
+ FuriHalSerialIdUsart :
+ FuriHalSerialIdLpuart;
+ variable_item_set_current_value_text(
+ item,
+ momentum_settings.uart_nmea_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
+ app->save_settings = true;
+}
+
+static void momentum_app_scene_protocols_gpio_general_channel_changed(VariableItem* item) {
+ MomentumApp* app = variable_item_get_context(item);
+ momentum_settings.uart_general_channel = variable_item_get_current_value_index(item) == 0 ?
+ FuriHalSerialIdUsart :
+ FuriHalSerialIdLpuart;
+ variable_item_set_current_value_text(
+ item,
+ momentum_settings.uart_general_channel == FuriHalSerialIdUsart ? UART_DEFAULT :
+ UART_EXTRA);
+ app->save_settings = true;
+}
+
+void momentum_app_scene_protocols_gpio_on_enter(void* context) {
+ MomentumApp* app = context;
+ VariableItemList* var_item_list = app->var_item_list;
+ VariableItem* item;
+
+ item = variable_item_list_add(
+ var_item_list,
+ "CC1101 SPI",
+ 2,
+ momentum_app_scene_protocols_gpio_cc1101_handle_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.spi_cc1101_handle);
+ variable_item_set_current_value_text(
+ item, momentum_settings.spi_cc1101_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
+
+ item = variable_item_list_add(
+ var_item_list, "NRF24 SPI", 2, momentum_app_scene_protocols_gpio_nrf24_handle_changed, app);
+ variable_item_set_current_value_index(item, momentum_settings.spi_nrf24_handle);
+ variable_item_set_current_value_text(
+ item, momentum_settings.spi_nrf24_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
+
+ item = variable_item_list_add(
+ var_item_list,
+ "ESP32/8266 UART",
+ 2,
+ momentum_app_scene_protocols_gpio_esp32_channel_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.uart_esp_channel);
+ variable_item_set_current_value_text(
+ item,
+ momentum_settings.uart_esp_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
+
+ item = variable_item_list_add(
+ var_item_list,
+ "NMEA GPS UART",
+ 2,
+ momentum_app_scene_protocols_gpio_nmea_channel_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.uart_nmea_channel);
+ variable_item_set_current_value_text(
+ item,
+ momentum_settings.uart_nmea_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
+
+ item = variable_item_list_add(
+ var_item_list,
+ "General UART",
+ 2,
+ momentum_app_scene_protocols_gpio_general_channel_changed,
+ app);
+ variable_item_set_current_value_index(item, momentum_settings.uart_general_channel);
+ variable_item_set_current_value_text(
+ item,
+ momentum_settings.uart_general_channel == FuriHalSerialIdUsart ? UART_DEFAULT :
+ UART_EXTRA);
+
+ variable_item_list_set_enter_callback(
+ var_item_list, momentum_app_scene_protocols_gpio_var_item_list_callback, app);
+
+ variable_item_list_set_selected_item(
+ var_item_list,
+ scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneProtocolsGpio));
+
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
+}
+
+bool momentum_app_scene_protocols_gpio_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
+ bool consumed = false;
+
+ if(event.type == SceneManagerEventTypeCustom) {
+ scene_manager_set_scene_state(
+ app->scene_manager, MomentumAppSceneProtocolsGpio, event.event);
+ consumed = true;
+ switch(event.event) {
+ default:
+ break;
+ }
+ }
+
+ return consumed;
+}
+
+void momentum_app_scene_protocols_gpio_on_exit(void* context) {
+ MomentumApp* app = context;
+ variable_item_list_reset(app->var_item_list);
+}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_start.c b/applications/main/momentum_app/scenes/momentum_app_scene_start.c
similarity index 51%
rename from applications/main/xtreme_app/scenes/xtreme_app_scene_start.c
rename to applications/main/momentum_app/scenes/momentum_app_scene_start.c
index 373902ff8..0e97acd4d 100644
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_start.c
+++ b/applications/main/momentum_app/scenes/momentum_app_scene_start.c
@@ -1,4 +1,4 @@
-#include "../xtreme_app.h"
+#include "../momentum_app.h"
enum VarItemListIndex {
VarItemListIndexInterface,
@@ -6,13 +6,13 @@ enum VarItemListIndex {
VarItemListIndexMisc,
};
-void xtreme_app_scene_start_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
+void momentum_app_scene_start_var_item_list_callback(void* context, uint32_t index) {
+ MomentumApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
-void xtreme_app_scene_start_on_enter(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_start_on_enter(void* context) {
+ MomentumApp* app = context;
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
@@ -28,33 +28,33 @@ void xtreme_app_scene_start_on_enter(void* context) {
variable_item_list_set_header(var_item_list, furi_string_get_cstr(app->version_tag));
variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_start_var_item_list_callback, app);
+ var_item_list, momentum_app_scene_start_var_item_list_callback, app);
variable_item_list_set_selected_item(
- var_item_list, scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneStart));
+ var_item_list, scene_manager_get_scene_state(app->scene_manager, MomentumAppSceneStart));
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
+ view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewVarItemList);
}
-bool xtreme_app_scene_start_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
+bool momentum_app_scene_start_on_event(void* context, SceneManagerEvent event) {
+ MomentumApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneStart, event.event);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneStart, event.event);
consumed = true;
switch(event.event) {
case VarItemListIndexInterface:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterface, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterface);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneInterface, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterface);
break;
case VarItemListIndexProtocols:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocols, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocols);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneProtocols, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneProtocols);
break;
case VarItemListIndexMisc:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneMisc, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneMisc);
+ scene_manager_set_scene_state(app->scene_manager, MomentumAppSceneMisc, 0);
+ scene_manager_next_scene(app->scene_manager, MomentumAppSceneMisc);
break;
default:
break;
@@ -64,7 +64,7 @@ bool xtreme_app_scene_start_on_event(void* context, SceneManagerEvent event) {
return consumed;
}
-void xtreme_app_scene_start_on_exit(void* context) {
- XtremeApp* app = context;
+void momentum_app_scene_start_on_exit(void* context) {
+ MomentumApp* app = context;
variable_item_list_reset(app->var_item_list);
}
diff --git a/applications/main/nfc/scenes/nfc_scene_emulate.c b/applications/main/nfc/scenes/nfc_scene_emulate.c
index 009bf674e..3f39db211 100644
--- a/applications/main/nfc/scenes/nfc_scene_emulate.c
+++ b/applications/main/nfc/scenes/nfc_scene_emulate.c
@@ -2,7 +2,7 @@
#include "nfc_app_i.h"
-#include
+#include
FuriTimer* timer_auto_exit = NULL;
@@ -22,7 +22,8 @@ void nfc_scene_emulate_on_enter(void* context) {
timer_auto_exit =
furi_timer_alloc(nfc_scene_emulate_timer_callback, FuriTimerTypeOnce, instance);
furi_timer_start(
- timer_auto_exit, xtreme_settings.favorite_timeout * furi_kernel_get_tick_frequency());
+ timer_auto_exit,
+ momentum_settings.favorite_timeout * furi_kernel_get_tick_frequency());
}
}
diff --git a/applications/main/subghz/helpers/subghz_gps.h b/applications/main/subghz/helpers/subghz_gps.h
index 7475cd2c0..f28cecb5f 100644
--- a/applications/main/subghz/helpers/subghz_gps.h
+++ b/applications/main/subghz/helpers/subghz_gps.h
@@ -1,8 +1,8 @@
#include
-#include
+#include
#include
-#define UART_CH (xtreme_settings.uart_nmea_channel)
+#define UART_CH (momentum_settings.uart_nmea_channel)
#define RX_BUF_SIZE 1024
diff --git a/applications/main/subghz/resources/subghz/assets/README.md b/applications/main/subghz/resources/subghz/assets/README.md
index e98ccba9c..ec58b8ef2 100644
--- a/applications/main/subghz/resources/subghz/assets/README.md
+++ b/applications/main/subghz/resources/subghz/assets/README.md
@@ -1,10 +1,10 @@
-#Sub-Ghz Frequencies in Xtreme
+#Sub-Ghz Frequencies in Momentum
Officially supported frequencies: 300-350 MHz, 387-467.75 MHz, and 779-928 MHz (from [CC1101 chip docs](https://www.ti.com/product/CC1101))
Unofficially supported frequencies: 281-361 MHz, 378-481 MHz, and 749-962 MHz (from [YARD Stick One/CC1111 Docs](https://greatscottgadgets.com/yardstickone/))
Currently no other Flipper firmware allows anything outside of the officially supported CC1101 specs without editing files that get overwritten with every update.
-Xtreme has these options easily togglable in the Xtreme Settings app.
+Momentum has these options easily togglable in the Momentum Settings app.
**NOTE: Operating outside supported frequencies can damage your amp and may not provide the same results as supported frequencies.
Please understand what you're doing if you transmit on unsupported frequencies as medical devices are licensed to operate there.**
diff --git a/applications/main/subghz/scenes/subghz_scene_transmitter.c b/applications/main/subghz/scenes/subghz_scene_transmitter.c
index dc1c83303..451ebd0f2 100644
--- a/applications/main/subghz/scenes/subghz_scene_transmitter.c
+++ b/applications/main/subghz/scenes/subghz_scene_transmitter.c
@@ -1,7 +1,7 @@
#include "../subghz_i.h"
#include "../views/transmitter.h"
#include
-#include
+#include
#include
@@ -75,7 +75,7 @@ void subghz_scene_transmitter_on_enter(void* context) {
scene_manager_handle_custom_event(
subghz->scene_manager, SubGhzCustomEventViewTransmitterSendStart);
furi_timer_start(
- subghz->timer, xtreme_settings.favorite_timeout * furi_kernel_get_tick_frequency());
+ subghz->timer, momentum_settings.favorite_timeout * furi_kernel_get_tick_frequency());
}
}
diff --git a/applications/main/subghz/subghz.c b/applications/main/subghz/subghz.c
index c743f90d6..1f4910e1d 100644
--- a/applications/main/subghz/subghz.c
+++ b/applications/main/subghz/subghz.c
@@ -6,7 +6,7 @@
#include
#include "subghz_i.h"
#include
-#include
+#include
#include "subghz_fap.h"
@@ -380,7 +380,7 @@ int32_t subghz_app(char* p) {
}
// Check argument and run corresponding scene
- bool is_favorite = process_favorite_launch(&p) && xtreme_settings.favorite_timeout;
+ bool is_favorite = process_favorite_launch(&p) && momentum_settings.favorite_timeout;
if(p && strlen(p)) {
uint32_t rpc_ctx = 0;
diff --git a/applications/main/u2f/scenes/u2f_scene_error.c b/applications/main/u2f/scenes/u2f_scene_error.c
index c48cf40da..f6e6413fe 100644
--- a/applications/main/u2f/scenes/u2f_scene_error.c
+++ b/applications/main/u2f/scenes/u2f_scene_error.c
@@ -1,5 +1,5 @@
#include "../u2f_app_i.h"
-#include
+#include
static void u2f_scene_error_event_callback(GuiButtonType result, InputType type, void* context) {
furi_assert(context);
diff --git a/applications/main/u2f/u2f_data.h b/applications/main/u2f/u2f_data.h
index 5c887ba1d..822357a33 100644
--- a/applications/main/u2f/u2f_data.h
+++ b/applications/main/u2f/u2f_data.h
@@ -9,8 +9,6 @@ extern "C" {
#define U2F_DATA_FOLDER EXT_PATH("u2f/")
#define U2F_CERT_FILE U2F_DATA_FOLDER "assets/cert.der"
#define U2F_CERT_KEY_FILE U2F_DATA_FOLDER "assets/cert_key.u2f"
-#define U2F_CNT_OLD_FILE INT_PATH(".cnt.u2f")
-#define U2F_KEY_OLD_FILE U2F_DATA_FOLDER "key.u2f"
#define U2F_CNT_FILE U2F_DATA_FOLDER "cnt.u2f"
#define U2F_KEY_FILE INT_PATH(".key.u2f")
diff --git a/applications/main/u2f/views/u2f_view.c b/applications/main/u2f/views/u2f_view.c
index 6487ca5f8..c24730f29 100644
--- a/applications/main/u2f/views/u2f_view.c
+++ b/applications/main/u2f/views/u2f_view.c
@@ -1,7 +1,7 @@
#include "u2f_view.h"
#include
#include
-#include
+#include
struct U2fView {
View* view;
@@ -21,56 +21,26 @@ static void u2f_view_draw_callback(Canvas* canvas, void* _model) {
if(model->display_msg == U2fMsgNotConnected) {
canvas_draw_icon(canvas, 22, 15, &I_Connect_me_62x31);
- if(xtreme_assets.is_nsfw) {
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Plug me in d-daddy");
- } else {
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Connect to a device");
- }
+ canvas_draw_str_aligned(canvas, 128 / 2, 3, AlignCenter, AlignTop, "Connect to a device");
} else if(model->display_msg == U2fMsgIdle) {
canvas_draw_icon(canvas, 22, 15, &I_Connected_62x31);
canvas_draw_str_aligned(canvas, 128 / 2, 3, AlignCenter, AlignTop, "Connected!");
} else if(model->display_msg == U2fMsgRegister) {
- if(xtreme_assets.is_nsfw) {
- elements_button_center(canvas, "CUM");
- canvas_draw_icon(canvas, 22, 15, &I_Auth_62x31);
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Press CUM to register");
- } else {
- elements_button_center(canvas, "OK");
- canvas_draw_icon(canvas, 22, 15, &I_Auth_62x31);
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Press OK to register");
- }
+ elements_button_center(canvas, "OK");
+ canvas_draw_icon(canvas, 22, 15, &I_Auth_62x31);
+ canvas_draw_str_aligned(canvas, 128 / 2, 3, AlignCenter, AlignTop, "Press OK to register");
} else if(model->display_msg == U2fMsgAuth) {
- if(xtreme_assets.is_nsfw) {
- elements_button_center(canvas, "CUM");
- canvas_draw_icon(canvas, 22, 15, &I_Auth_62x31);
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Press CUM to authenticate");
- } else {
- elements_button_center(canvas, "OK");
- canvas_draw_icon(canvas, 22, 15, &I_Auth_62x31);
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Press OK to authenticate");
- }
+ elements_button_center(canvas, "OK");
+ canvas_draw_icon(canvas, 22, 15, &I_Auth_62x31);
+ canvas_draw_str_aligned(
+ canvas, 128 / 2, 3, AlignCenter, AlignTop, "Press OK to authenticate");
} else if(model->display_msg == U2fMsgSuccess) {
canvas_draw_icon(canvas, 22, 15, &I_Connected_62x31);
- if(xtreme_assets.is_nsfw) {
- canvas_draw_str_aligned(canvas, 128 / 2, 3, AlignCenter, AlignTop, "Cum released~");
- } else {
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Authentication successful!");
- }
+ canvas_draw_str_aligned(
+ canvas, 128 / 2, 3, AlignCenter, AlignTop, "Authentication successful!");
} else if(model->display_msg == U2fMsgError) {
canvas_draw_icon(canvas, 22, 15, &I_Error_62x31);
- if(xtreme_assets.is_nsfw) {
- canvas_draw_str_aligned(canvas, 128 / 2, 3, AlignCenter, AlignTop, "Unable to cum");
- } else {
- canvas_draw_str_aligned(
- canvas, 128 / 2, 3, AlignCenter, AlignTop, "Certificate error");
- }
+ canvas_draw_str_aligned(canvas, 128 / 2, 3, AlignCenter, AlignTop, "Certificate error");
}
}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene.c b/applications/main/xtreme_app/scenes/xtreme_app_scene.c
deleted file mode 100644
index 5448bb85a..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "xtreme_app_scene.h"
-
-// Generate scene on_enter handlers array
-#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_enter,
-void (*const xtreme_app_on_enter_handlers[])(void*) = {
-#include "xtreme_app_scene_config.h"
-};
-#undef ADD_SCENE
-
-// Generate scene on_event handlers array
-#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_event,
-bool (*const xtreme_app_on_event_handlers[])(void* context, SceneManagerEvent event) = {
-#include "xtreme_app_scene_config.h"
-};
-#undef ADD_SCENE
-
-// Generate scene on_exit handlers array
-#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_exit,
-void (*const xtreme_app_on_exit_handlers[])(void* context) = {
-#include "xtreme_app_scene_config.h"
-};
-#undef ADD_SCENE
-
-// Initialize scene handlers configuration structure
-const SceneManagerHandlers xtreme_app_scene_handlers = {
- .on_enter_handlers = xtreme_app_on_enter_handlers,
- .on_event_handlers = xtreme_app_on_event_handlers,
- .on_exit_handlers = xtreme_app_on_exit_handlers,
- .scene_num = XtremeAppSceneNum,
-};
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_config.h b/applications/main/xtreme_app/scenes/xtreme_app_scene_config.h
deleted file mode 100644
index 16a9436ad..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-ADD_SCENE(xtreme_app, start, Start)
-ADD_SCENE(xtreme_app, interface, Interface)
-ADD_SCENE(xtreme_app, interface_graphics, InterfaceGraphics)
-ADD_SCENE(xtreme_app, interface_mainmenu, InterfaceMainmenu)
-ADD_SCENE(xtreme_app, interface_mainmenu_add, InterfaceMainmenuAdd)
-ADD_SCENE(xtreme_app, interface_mainmenu_add_main, InterfaceMainmenuAddMain)
-ADD_SCENE(xtreme_app, interface_mainmenu_reset, InterfaceMainmenuReset)
-ADD_SCENE(xtreme_app, interface_lockscreen, InterfaceLockscreen)
-ADD_SCENE(xtreme_app, interface_statusbar, InterfaceStatusbar)
-ADD_SCENE(xtreme_app, interface_filebrowser, InterfaceFilebrowser)
-ADD_SCENE(xtreme_app, protocols, Protocols)
-ADD_SCENE(xtreme_app, protocols_freqs, ProtocolsFreqs)
-ADD_SCENE(xtreme_app, protocols_freqs_static, ProtocolsFreqsStatic)
-ADD_SCENE(xtreme_app, protocols_freqs_hopper, ProtocolsFreqsHopper)
-ADD_SCENE(xtreme_app, protocols_freqs_add, ProtocolsFreqsAdd)
-ADD_SCENE(xtreme_app, protocols_gpio, ProtocolsGpio)
-ADD_SCENE(xtreme_app, misc, Misc)
-ADD_SCENE(xtreme_app, misc_screen, MiscScreen)
-ADD_SCENE(xtreme_app, misc_screen_color, MiscScreenColor)
-ADD_SCENE(xtreme_app, misc_dolphin, MiscDolphin)
-ADD_SCENE(xtreme_app, misc_rename, MiscRename)
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface.c
deleted file mode 100644
index a98ca56c5..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "../xtreme_app.h"
-
-enum VarItemListIndex {
- VarItemListIndexGraphics,
- VarItemListIndexMainmenu,
- VarItemListIndexLockscreen,
- VarItemListIndexStatusbar,
- VarItemListIndexFileBrowser,
-};
-
-void xtreme_app_scene_interface_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- view_dispatcher_send_custom_event(app->view_dispatcher, index);
-}
-
-void xtreme_app_scene_interface_on_enter(void* context) {
- XtremeApp* app = context;
- VariableItemList* var_item_list = app->var_item_list;
- VariableItem* item;
-
- item = variable_item_list_add(var_item_list, "Graphics", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- item = variable_item_list_add(var_item_list, "Mainmenu", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- item = variable_item_list_add(var_item_list, "Lockscreen", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- item = variable_item_list_add(var_item_list, "Statusbar", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- item = variable_item_list_add(var_item_list, "File Browser", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_interface_var_item_list_callback, app);
-
- variable_item_list_set_selected_item(
- var_item_list, scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterface));
-
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
-}
-
-bool xtreme_app_scene_interface_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
- bool consumed = false;
-
- if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterface, event.event);
- consumed = true;
- switch(event.event) {
- case VarItemListIndexGraphics:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterfaceGraphics, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceGraphics);
- break;
- case VarItemListIndexMainmenu:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterfaceMainmenu, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceMainmenu);
- break;
- case VarItemListIndexLockscreen:
- scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceLockscreen, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceLockscreen);
- break;
- case VarItemListIndexStatusbar:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterfaceStatusbar, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceStatusbar);
- break;
- case VarItemListIndexFileBrowser:
- scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceFilebrowser, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceFilebrowser);
- break;
- default:
- break;
- }
- }
-
- return consumed;
-}
-
-void xtreme_app_scene_interface_on_exit(void* context) {
- XtremeApp* app = context;
- variable_item_list_reset(app->var_item_list);
-}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c
deleted file mode 100644
index 99e2a19a5..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c
+++ /dev/null
@@ -1,122 +0,0 @@
-#include "../xtreme_app.h"
-
-enum VarItemListIndex {
- VarItemListIndexSortDirsFirst,
- VarItemListIndexShowHiddenFiles,
- VarItemListIndexShowInternalTab,
- VarItemListIndexFavoriteTimeout,
-};
-
-void xtreme_app_scene_interface_filebrowser_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- view_dispatcher_send_custom_event(app->view_dispatcher, index);
-}
-
-static void xtreme_app_scene_interface_filebrowser_sort_dirs_first_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.sort_dirs_first = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_filebrowser_show_hidden_files_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.show_hidden_files = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_filebrowser_show_internal_tab_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.show_internal_tab = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_filebrowser_favorite_timeout_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- uint32_t value = variable_item_get_current_value_index(item);
- char text[6];
- snprintf(text, sizeof(text), "%lu S", value);
- variable_item_set_current_value_text(item, value ? text : "OFF");
- xtreme_settings.favorite_timeout = value;
- app->save_settings = true;
-}
-
-void xtreme_app_scene_interface_filebrowser_on_enter(void* context) {
- XtremeApp* app = context;
- VariableItemList* var_item_list = app->var_item_list;
- VariableItem* item;
-
- item = variable_item_list_add(
- var_item_list,
- "Folders Above Files",
- 2,
- xtreme_app_scene_interface_filebrowser_sort_dirs_first_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.sort_dirs_first);
- variable_item_set_current_value_text(item, xtreme_settings.sort_dirs_first ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Show Hidden Files",
- 2,
- xtreme_app_scene_interface_filebrowser_show_hidden_files_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.show_hidden_files);
- variable_item_set_current_value_text(item, xtreme_settings.show_hidden_files ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Show Internal Tab",
- 2,
- xtreme_app_scene_interface_filebrowser_show_internal_tab_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.show_internal_tab);
- variable_item_set_current_value_text(item, xtreme_settings.show_internal_tab ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Favorite Timeout",
- 61,
- xtreme_app_scene_interface_filebrowser_favorite_timeout_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.favorite_timeout);
- char text[4];
- snprintf(text, sizeof(text), "%lu S", xtreme_settings.favorite_timeout);
- variable_item_set_current_value_text(item, xtreme_settings.favorite_timeout ? text : "OFF");
-
- variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_interface_filebrowser_var_item_list_callback, app);
-
- variable_item_list_set_selected_item(
- var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterfaceFilebrowser));
-
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
-}
-
-bool xtreme_app_scene_interface_filebrowser_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
- bool consumed = false;
-
- if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceFilebrowser, event.event);
- consumed = true;
- switch(event.event) {
- default:
- break;
- }
- }
-
- return consumed;
-}
-
-void xtreme_app_scene_interface_filebrowser_on_exit(void* context) {
- XtremeApp* app = context;
- variable_item_list_reset(app->var_item_list);
-}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c
deleted file mode 100644
index 670feb186..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c
+++ /dev/null
@@ -1,230 +0,0 @@
-#include "../xtreme_app.h"
-
-enum VarItemListIndex {
- VarItemListIndexLockOnBoot,
- VarItemListIndexFormatOn10BadPins,
- VarItemListIndexPinUnlockFromApp,
- VarItemListIndexShowTime,
- VarItemListIndexShowSeconds,
- VarItemListIndexShowDate,
- VarItemListIndexShowStatusbar,
- VarItemListIndexUnlockPrompt,
-};
-
-void xtreme_app_scene_interface_lockscreen_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- view_dispatcher_send_custom_event(app->view_dispatcher, index);
-}
-
-static void xtreme_app_scene_interface_lockscreen_lock_on_boot_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lock_on_boot = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_lockscreen_bad_pins_format_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.bad_pins_format = value;
- app->save_settings = true;
-}
-
-static void
- xtreme_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.allow_locked_rpc_commands = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_lockscreen_lockscreen_poweroff_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_poweroff = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_lockscreen_lockscreen_time_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_time = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_lockscreen_lockscreen_seconds_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_seconds = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_lockscreen_lockscreen_date_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_date = value;
- app->save_settings = true;
-}
-
-static void
- xtreme_app_scene_interface_lockscreen_lockscreen_statusbar_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_statusbar = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_lockscreen_lockscreen_prompt_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_prompt = value;
- app->save_settings = true;
-}
-
-static void
- xtreme_app_scene_interface_lockscreen_lockscreen_transparent_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.lockscreen_transparent = value;
- app->save_settings = true;
-}
-
-void xtreme_app_scene_interface_lockscreen_on_enter(void* context) {
- XtremeApp* app = context;
- VariableItemList* var_item_list = app->var_item_list;
- VariableItem* item;
-
- item = variable_item_list_add(
- var_item_list,
- "Lock on Boot",
- 2,
- xtreme_app_scene_interface_lockscreen_lock_on_boot_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lock_on_boot);
- variable_item_set_current_value_text(item, xtreme_settings.lock_on_boot ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Format on 10 Bad PINs",
- 2,
- xtreme_app_scene_interface_lockscreen_bad_pins_format_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.bad_pins_format);
- variable_item_set_current_value_text(item, xtreme_settings.bad_pins_format ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Allow RPC While Locked",
- 2,
- xtreme_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.allow_locked_rpc_commands);
- variable_item_set_current_value_text(
- item, xtreme_settings.allow_locked_rpc_commands ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Allow Poweroff",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_poweroff_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_poweroff);
- variable_item_set_current_value_text(item, xtreme_settings.lockscreen_poweroff ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Show Time",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_time_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_time);
- variable_item_set_current_value_text(item, xtreme_settings.lockscreen_time ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Show Seconds",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_seconds_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_seconds);
- variable_item_set_current_value_text(item, xtreme_settings.lockscreen_seconds ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Show Date",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_date_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_date);
- variable_item_set_current_value_text(item, xtreme_settings.lockscreen_date ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Show Statusbar",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_statusbar_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_statusbar);
- variable_item_set_current_value_text(
- item, xtreme_settings.lockscreen_statusbar ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Unlock Prompt",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_prompt_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_prompt);
- variable_item_set_current_value_text(item, xtreme_settings.lockscreen_prompt ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Transparent (see animation)",
- 2,
- xtreme_app_scene_interface_lockscreen_lockscreen_transparent_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.lockscreen_transparent);
- variable_item_set_current_value_text(
- item, xtreme_settings.lockscreen_transparent ? "ON" : "OFF");
-
- variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_interface_lockscreen_var_item_list_callback, app);
-
- variable_item_list_set_selected_item(
- var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterfaceLockscreen));
-
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
-}
-
-bool xtreme_app_scene_interface_lockscreen_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
- bool consumed = false;
-
- if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceLockscreen, event.event);
- consumed = true;
- switch(event.event) {
- default:
- break;
- }
- }
-
- return consumed;
-}
-
-void xtreme_app_scene_interface_lockscreen_on_exit(void* context) {
- XtremeApp* app = context;
- variable_item_list_reset(app->var_item_list);
-}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_statusbar.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_statusbar.c
deleted file mode 100644
index b29269631..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_statusbar.c
+++ /dev/null
@@ -1,147 +0,0 @@
-#include "../xtreme_app.h"
-
-enum VarItemListIndex {
- VarItemListIndexBatteryIcon,
- VarItemListIndexShowClock,
- VarItemListIndexStatusIcons,
- VarItemListIndexBarBorders,
- VarItemListIndexBarBackground,
-};
-
-void xtreme_app_scene_interface_statusbar_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- view_dispatcher_send_custom_event(app->view_dispatcher, index);
-}
-
-const char* const battery_icon_names[BatteryIconCount] = {
- "OFF",
- "Bar",
- "%",
- "Inv. %",
- "Retro 3",
- "Retro 5",
- "Bar %",
-};
-static void xtreme_app_scene_interface_statusbar_battery_icon_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- uint8_t index = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, battery_icon_names[index]);
- xtreme_settings.battery_icon = index;
- app->save_settings = true;
- power_set_battery_icon_enabled(furi_record_open(RECORD_POWER), index != BatteryIconOff);
- furi_record_close(RECORD_POWER);
-}
-
-static void xtreme_app_scene_interface_statusbar_statusbar_clock_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.statusbar_clock = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_statusbar_status_icons_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.status_icons = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_statusbar_bar_borders_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.bar_borders = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_interface_statusbar_bar_background_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.bar_background = value;
- app->save_settings = true;
-}
-
-void xtreme_app_scene_interface_statusbar_on_enter(void* context) {
- XtremeApp* app = context;
- VariableItemList* var_item_list = app->var_item_list;
- VariableItem* item;
-
- item = variable_item_list_add(
- var_item_list,
- "Battery Icon",
- BatteryIconCount,
- xtreme_app_scene_interface_statusbar_battery_icon_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.battery_icon);
- variable_item_set_current_value_text(item, battery_icon_names[xtreme_settings.battery_icon]);
-
- item = variable_item_list_add(
- var_item_list,
- "Show Clock",
- 2,
- xtreme_app_scene_interface_statusbar_statusbar_clock_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.statusbar_clock);
- variable_item_set_current_value_text(item, xtreme_settings.statusbar_clock ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Status Icons",
- 2,
- xtreme_app_scene_interface_statusbar_status_icons_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.status_icons);
- variable_item_set_current_value_text(item, xtreme_settings.status_icons ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Bar Borders",
- 2,
- xtreme_app_scene_interface_statusbar_bar_borders_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.bar_borders);
- variable_item_set_current_value_text(item, xtreme_settings.bar_borders ? "ON" : "OFF");
-
- item = variable_item_list_add(
- var_item_list,
- "Bar Background",
- 2,
- xtreme_app_scene_interface_statusbar_bar_background_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.bar_background);
- variable_item_set_current_value_text(item, xtreme_settings.bar_background ? "ON" : "OFF");
-
- variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_interface_statusbar_var_item_list_callback, app);
-
- variable_item_list_set_selected_item(
- var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterfaceStatusbar));
-
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
-}
-
-bool xtreme_app_scene_interface_statusbar_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
- bool consumed = false;
-
- if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneInterfaceStatusbar, event.event);
- consumed = true;
- switch(event.event) {
- default:
- break;
- }
- }
-
- return consumed;
-}
-
-void xtreme_app_scene_interface_statusbar_on_exit(void* context) {
- XtremeApp* app = context;
- variable_item_list_reset(app->var_item_list);
-}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols.c
deleted file mode 100644
index 1aa8ddb6d..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols.c
+++ /dev/null
@@ -1,123 +0,0 @@
-#include "../xtreme_app.h"
-
-enum VarItemListIndex {
- VarItemListIndexBadkbMode,
- VarItemListIndexBadbtRemember,
- VarItemListIndexSubghzFreqs,
- VarItemListIndexSubghzExtend,
- VarItemListIndexGpioPins,
-};
-
-void xtreme_app_scene_protocols_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- view_dispatcher_send_custom_event(app->view_dispatcher, index);
-}
-
-static void xtreme_app_scene_protocols_bad_bt_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "BT" : "USB");
- xtreme_settings.bad_bt = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_protocols_bad_bt_remember_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "ON" : "OFF");
- xtreme_settings.bad_bt_remember = value;
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_protocols_subghz_extend_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- app->subghz_extend = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, app->subghz_extend ? "ON" : "OFF");
- app->save_subghz = true;
-}
-
-static void xtreme_app_scene_protocols_file_naming_prefix_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- bool value = variable_item_get_current_value_index(item);
- variable_item_set_current_value_text(item, value ? "After" : "Before");
- xtreme_settings.file_naming_prefix_after = value;
- app->save_settings = true;
-}
-
-void xtreme_app_scene_protocols_on_enter(void* context) {
- XtremeApp* app = context;
- VariableItemList* var_item_list = app->var_item_list;
- VariableItem* item;
-
- item = variable_item_list_add(
- var_item_list, "BadKB Mode", 2, xtreme_app_scene_protocols_bad_bt_changed, app);
- variable_item_set_current_value_index(item, xtreme_settings.bad_bt);
- variable_item_set_current_value_text(item, xtreme_settings.bad_bt ? "BT" : "USB");
-
- item = variable_item_list_add(
- var_item_list,
- "BadBT Remember",
- 2,
- xtreme_app_scene_protocols_bad_bt_remember_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.bad_bt_remember);
- variable_item_set_current_value_text(item, xtreme_settings.bad_bt_remember ? "ON" : "OFF");
-
- item = variable_item_list_add(var_item_list, "SubGHz Freqs", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- item = variable_item_list_add(
- var_item_list, "SubGHz Extend", 2, xtreme_app_scene_protocols_subghz_extend_changed, app);
- variable_item_set_current_value_index(item, app->subghz_extend);
- variable_item_set_current_value_text(item, app->subghz_extend ? "ON" : "OFF");
-
- item = variable_item_list_add(var_item_list, "GPIO Pins", 0, NULL, app);
- variable_item_set_current_value_text(item, ">");
-
- item = variable_item_list_add(
- var_item_list,
- "File Naming Prefix",
- 2,
- xtreme_app_scene_protocols_file_naming_prefix_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.file_naming_prefix_after);
- variable_item_set_current_value_text(
- item, xtreme_settings.file_naming_prefix_after ? "After" : "Before");
-
- variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_protocols_var_item_list_callback, app);
-
- variable_item_list_set_selected_item(
- var_item_list, scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocols));
-
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
-}
-
-bool xtreme_app_scene_protocols_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
- bool consumed = false;
-
- if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocols, event.event);
- consumed = true;
- switch(event.event) {
- case VarItemListIndexSubghzFreqs:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsFreqs, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsFreqs);
- break;
- case VarItemListIndexGpioPins:
- scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneProtocolsGpio, 0);
- scene_manager_next_scene(app->scene_manager, XtremeAppSceneProtocolsGpio);
- break;
- default:
- break;
- }
- }
-
- return consumed;
-}
-
-void xtreme_app_scene_protocols_on_exit(void* context) {
- XtremeApp* app = context;
- variable_item_list_reset(app->var_item_list);
-}
diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_gpio.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_gpio.c
deleted file mode 100644
index 8f498011a..000000000
--- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_gpio.c
+++ /dev/null
@@ -1,152 +0,0 @@
-#include "../xtreme_app.h"
-
-enum VarItemListIndex {
- VarItemListIndexSpiCc1101Handle,
- VarItemListIndexSpiNrf24Handle,
- VarItemListIndexUartEspChannel,
- VarItemListIndexUartNmeaChannel,
- VarItemListIndexUartGeneralChannel,
-};
-
-#define SPI_DEFAULT "Default 4"
-#define SPI_EXTRA "Extra 7"
-#define UART_DEFAULT "Default 13,14"
-#define UART_EXTRA "Extra 15,16"
-
-void xtreme_app_scene_protocols_gpio_var_item_list_callback(void* context, uint32_t index) {
- XtremeApp* app = context;
- view_dispatcher_send_custom_event(app->view_dispatcher, index);
-}
-
-static void xtreme_app_scene_protocols_gpio_cc1101_handle_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- xtreme_settings.spi_cc1101_handle =
- variable_item_get_current_value_index(item) == 0 ? SpiDefault : SpiExtra;
- variable_item_set_current_value_text(
- item, xtreme_settings.spi_cc1101_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_protocols_gpio_nrf24_handle_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- xtreme_settings.spi_nrf24_handle =
- variable_item_get_current_value_index(item) == 0 ? SpiDefault : SpiExtra;
- variable_item_set_current_value_text(
- item, xtreme_settings.spi_nrf24_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_protocols_gpio_esp32_channel_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- xtreme_settings.uart_esp_channel = variable_item_get_current_value_index(item) == 0 ?
- FuriHalSerialIdUsart :
- FuriHalSerialIdLpuart;
- variable_item_set_current_value_text(
- item,
- xtreme_settings.uart_esp_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_protocols_gpio_nmea_channel_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- xtreme_settings.uart_nmea_channel = variable_item_get_current_value_index(item) == 0 ?
- FuriHalSerialIdUsart :
- FuriHalSerialIdLpuart;
- variable_item_set_current_value_text(
- item,
- xtreme_settings.uart_nmea_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
- app->save_settings = true;
-}
-
-static void xtreme_app_scene_protocols_gpio_general_channel_changed(VariableItem* item) {
- XtremeApp* app = variable_item_get_context(item);
- xtreme_settings.uart_general_channel = variable_item_get_current_value_index(item) == 0 ?
- FuriHalSerialIdUsart :
- FuriHalSerialIdLpuart;
- variable_item_set_current_value_text(
- item,
- xtreme_settings.uart_general_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
- app->save_settings = true;
-}
-
-void xtreme_app_scene_protocols_gpio_on_enter(void* context) {
- XtremeApp* app = context;
- VariableItemList* var_item_list = app->var_item_list;
- VariableItem* item;
-
- item = variable_item_list_add(
- var_item_list, "CC1101 SPI", 2, xtreme_app_scene_protocols_gpio_cc1101_handle_changed, app);
- variable_item_set_current_value_index(item, xtreme_settings.spi_cc1101_handle);
- variable_item_set_current_value_text(
- item, xtreme_settings.spi_cc1101_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
-
- item = variable_item_list_add(
- var_item_list, "NRF24 SPI", 2, xtreme_app_scene_protocols_gpio_nrf24_handle_changed, app);
- variable_item_set_current_value_index(item, xtreme_settings.spi_nrf24_handle);
- variable_item_set_current_value_text(
- item, xtreme_settings.spi_nrf24_handle == SpiDefault ? SPI_DEFAULT : SPI_EXTRA);
-
- item = variable_item_list_add(
- var_item_list,
- "ESP32/8266 UART",
- 2,
- xtreme_app_scene_protocols_gpio_esp32_channel_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.uart_esp_channel);
- variable_item_set_current_value_text(
- item,
- xtreme_settings.uart_esp_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
-
- item = variable_item_list_add(
- var_item_list,
- "NMEA GPS UART",
- 2,
- xtreme_app_scene_protocols_gpio_nmea_channel_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.uart_nmea_channel);
- variable_item_set_current_value_text(
- item,
- xtreme_settings.uart_nmea_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
-
- item = variable_item_list_add(
- var_item_list,
- "General UART",
- 2,
- xtreme_app_scene_protocols_gpio_general_channel_changed,
- app);
- variable_item_set_current_value_index(item, xtreme_settings.uart_general_channel);
- variable_item_set_current_value_text(
- item,
- xtreme_settings.uart_general_channel == FuriHalSerialIdUsart ? UART_DEFAULT : UART_EXTRA);
-
- variable_item_list_set_enter_callback(
- var_item_list, xtreme_app_scene_protocols_gpio_var_item_list_callback, app);
-
- variable_item_list_set_selected_item(
- var_item_list,
- scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsGpio));
-
- view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
-}
-
-bool xtreme_app_scene_protocols_gpio_on_event(void* context, SceneManagerEvent event) {
- XtremeApp* app = context;
- bool consumed = false;
-
- if(event.type == SceneManagerEventTypeCustom) {
- scene_manager_set_scene_state(
- app->scene_manager, XtremeAppSceneProtocolsGpio, event.event);
- consumed = true;
- switch(event.event) {
- default:
- break;
- }
- }
-
- return consumed;
-}
-
-void xtreme_app_scene_protocols_gpio_on_exit(void* context) {
- XtremeApp* app = context;
- variable_item_list_reset(app->var_item_list);
-}
diff --git a/applications/services/bt/bt_service/bt.h b/applications/services/bt/bt_service/bt.h
index d49b0b3ba..84e0e573c 100644
--- a/applications/services/bt/bt_service/bt.h
+++ b/applications/services/bt/bt_service/bt.h
@@ -86,17 +86,16 @@ void bt_keys_storage_set_default_path(Bt* bt);
bool bt_remote_rssi(Bt* bt, uint8_t* rssi);
-/**
- *
- * (Probably bad) way of opening the RPC connection, everywhereTM
-*/
-
+/** Open a new RPC connection
+ *
+ * @param bt Bt instance
+ */
void bt_open_rpc_connection(Bt* bt);
-/**
- *
- * Closing the RPC connection, everywhereTM
-*/
+/** Close the active RPC connection
+ *
+ * @param bt Bt instance
+ */
void bt_close_rpc_connection(Bt* bt);
#ifdef __cplusplus
diff --git a/applications/services/bt/bt_service/bt_i.h b/applications/services/bt/bt_service/bt_i.h
index 4fcc02aa1..933d493a9 100644
--- a/applications/services/bt/bt_service/bt_i.h
+++ b/applications/services/bt/bt_service/bt_i.h
@@ -19,7 +19,6 @@
#include
#include
-#define BT_KEYS_STORAGE_OLD_PATH INT_PATH(".bt.keys")
#define BT_KEYS_STORAGE_PATH CFG_PATH("bt.keys")
typedef enum {
diff --git a/applications/services/bt/bt_settings.h b/applications/services/bt/bt_settings.h
index cd6be60c4..380a0962e 100644
--- a/applications/services/bt/bt_settings.h
+++ b/applications/services/bt/bt_settings.h
@@ -7,7 +7,6 @@
extern "C" {
#endif
-#define BT_SETTINGS_OLD_PATH INT_PATH(".bt.settings")
#define BT_SETTINGS_PATH CFG_PATH("bt.settings")
typedef struct {
diff --git a/applications/services/cli/cli.c b/applications/services/cli/cli.c
index 1fe979e0c..e1e32222a 100644
--- a/applications/services/cli/cli.c
+++ b/applications/services/cli/cli.c
@@ -103,18 +103,26 @@ void cli_print_usage(const char* cmd, const char* usage, const char* arg) {
}
void cli_motd() {
- printf(
- "\033[0m\r\n"
- " ,-' \\_/ `\\\r\n"
- "\033[1;31m__\033[0m \033[1;31m__\033[37m_\033[0m ___ ___ ___ ( , |\r\n"
- "\033[1;31m\\\033[0m \033[1;31m\\/\033[0m \033[1;31m/\033[0m \033[1m|_ _ __ ___ _ __ ___ ___\033[0m / ___| | |_ _| `-.-'`-.-'/|_|\r\n"
- " \033[1;31m\\\033[0m \033[1;31m/\033[37m| __| \'__/ _ \\ \'_ ` _ \\ / _ \\\033[0m | | | | | | \\ / | |\r\n"
- " \033[1;31m/\033[0m \033[1;31m\\\033[37m| |_| | | __/ | | | | | __/\033[0m | |___| |___ | | |=[]=: / ,'\r\n"
- "\033[1;31m/_/\\_\\\033[37m\\__|_| \\___|_| |_| |_|\\___|\033[0m \\____|_____|___| / `\\ '\r\n"
- " : \\/ )\r\n"
- "Welcome to the \033[1;31mX\033[37mtreme\033[0m Command Line Interface! | / ;\r\n"
- "Visit \033[1;31mhttps://flipper-xtre.me/\033[0m for even more fun | / /"
- "\r\n");
+ printf("\r\n"
+ " _.-------.._ -,\r\n"
+ " .-\"```\"--..,,_/ /`-, -, \\ \r\n"
+ " .:\" /:/ /'\\ \\ ,_..., `. | |\r\n"
+ " / ,----/:/ /`\\ _\\~`_-\"` _;\r\n"
+ " ' / /`\"\"\"'\\ \\ \\.~`_-' ,-\"'/ \r\n"
+ " | | | 0 | | .-' ,/` /\r\n"
+ " | ,..\\ \\ ,.-\"` ,/` /\r\n"
+ " ; : `/`\"\"\\` ,/--==,/-----,\r\n"
+ " | `-...| -.___-Z:_______J...---;\r\n"
+ " : ` _-'\r\n"
+ " _L_ _ ___ ___ ___ ___ ____--\"`___ _ ___\r\n"
+ "| __|| | |_ _|| _ \\| _ \\| __|| _ \\ / __|| | |_ _|\r\n"
+ "| _| | |__ | | | _/| _/| _| | / | (__ | |__ | |\r\n"
+ "|_| |____||___||_| |_| |___||_|_\\ \\___||____||___|\r\n"
+ "\r\n"
+ "Welcome to Flipper Zero Command Line Interface!\r\n"
+ "Read the manual: https://docs.flipper.net/development/cli\r\n"
+ "Run `help` or `?` to list available commands\r\n"
+ "\r\n");
const Version* firmware_version = furi_hal_version_get_firmware_version();
if(firmware_version) {
diff --git a/applications/services/cli/cli_commands.c b/applications/services/cli/cli_commands.c
index dd3d92db0..8c22fb542 100644
--- a/applications/services/cli/cli_commands.c
+++ b/applications/services/cli/cli_commands.c
@@ -174,7 +174,7 @@ void cli_command_src(Cli* cli, FuriString* args, void* context) {
UNUSED(args);
UNUSED(context);
- printf("https://github.com/Flipper-XFW/Xtreme-Firmware");
+ printf("https://github.com/Next-Flip/Momentum-Firmware");
}
#define CLI_COMMAND_LOG_RING_SIZE 2048
diff --git a/applications/services/desktop/animations/animation_manager.c b/applications/services/desktop/animations/animation_manager.c
index 2130f4f82..2358dd8b6 100644
--- a/applications/services/desktop/animations/animation_manager.c
+++ b/applications/services/desktop/animations/animation_manager.c
@@ -13,14 +13,13 @@
#include "animation_storage.h"
#include "animation_manager.h"
-#include
+#include
#define TAG "AnimationManager"
#define HARDCODED_ANIMATION_NAME "L1_AnimationError_128x64"
#define NO_SD_ANIMATION_NAME "L1_NoSd_128x49"
#define BAD_BATTERY_ANIMATION_NAME "L1_BadBattery_128x47"
-#define CREDITS_ANIMATION_NAME "Credits_128x64"
#define NO_DB_ANIMATION_NAME "L0_NoDb_128x51"
#define BAD_SD_ANIMATION_NAME "L0_SdBad_128x51"
@@ -148,7 +147,7 @@ void animation_manager_check_blocking_process(AnimationManager* animation_manage
const StorageAnimationManifestInfo* manifest_info =
animation_storage_get_meta(animation_manager->current_animation);
bool valid = animation_manager_is_valid_idle_animation(
- manifest_info, &stats, xtreme_settings.unlock_anims);
+ manifest_info, &stats, momentum_settings.unlock_anims);
if(!valid) {
animation_manager_start_new_idle(animation_manager);
@@ -203,8 +202,8 @@ static void animation_manager_start_new_idle(AnimationManager* animation_manager
const BubbleAnimation* bubble_animation =
animation_storage_get_bubble_animation(animation_manager->current_animation);
animation_manager->state = AnimationManagerStateIdle;
- int32_t duration = (xtreme_settings.cycle_anims == 0) ? (bubble_animation->duration) :
- (xtreme_settings.cycle_anims);
+ int32_t duration = (momentum_settings.cycle_anims == 0) ? (bubble_animation->duration) :
+ (momentum_settings.cycle_anims);
furi_timer_start(
animation_manager->idle_animation_timer, (duration > 0) ? (duration * 1000) : 0);
}
@@ -389,8 +388,7 @@ static StorageAnimation*
uint32_t whole_weight = 0;
// Filter valid animations
- bool skip_credits = !xtreme_settings.credits_anim && xtreme_settings.asset_pack[0] == '\0';
- bool unlock = xtreme_settings.unlock_anims;
+ bool unlock = momentum_settings.unlock_anims;
StorageAnimationList_it_t it;
for(StorageAnimationList_it(it, animation_list); !StorageAnimationList_end_p(it);) {
StorageAnimation* storage_animation = *StorageAnimationList_ref(it);
@@ -401,9 +399,6 @@ static StorageAnimation*
if(strcmp(manifest_info->name, HARDCODED_ANIMATION_NAME) == 0) {
// Dont pick error anim randomly
valid = false;
- } else if(skip_credits && strcmp(manifest_info->name, CREDITS_ANIMATION_NAME) == 0) {
- // Dont pick credits anim if disabled
- valid = false;
}
if(valid) {
@@ -546,7 +541,7 @@ void animation_manager_load_and_continue_animation(AnimationManager* animation_m
const StorageAnimationManifestInfo* manifest_info =
animation_storage_get_meta(restore_animation);
bool valid = animation_manager_is_valid_idle_animation(
- manifest_info, &stats, xtreme_settings.unlock_anims);
+ manifest_info, &stats, momentum_settings.unlock_anims);
// Restore only if anim is valid and not the error anim
if(valid && strcmp(manifest_info->name, HARDCODED_ANIMATION_NAME) != 0) {
animation_manager_replace_current_animation(
@@ -561,9 +556,9 @@ void animation_manager_load_and_continue_animation(AnimationManager* animation_m
const BubbleAnimation* bubble_animation =
animation_storage_get_bubble_animation(
animation_manager->current_animation);
- int32_t duration = (xtreme_settings.cycle_anims == 0) ?
+ int32_t duration = (momentum_settings.cycle_anims == 0) ?
(bubble_animation->duration) :
- (xtreme_settings.cycle_anims);
+ (momentum_settings.cycle_anims);
furi_timer_start(
animation_manager->idle_animation_timer,
(duration > 0) ? (duration * 1000) : 0);
diff --git a/applications/services/desktop/animations/animation_storage.c b/applications/services/desktop/animations/animation_storage.c
index b96bef752..0c0fcad25 100644
--- a/applications/services/desktop/animations/animation_storage.c
+++ b/applications/services/desktop/animations/animation_storage.c
@@ -11,10 +11,10 @@
#include "animation_storage_i.h"
#include
#include
-#include
+#include
#define ANIMATION_META_FILE "meta.txt"
#define TAG "AnimationStorage"
-char ANIMATION_DIR[23 /*"/ext/asset_packs//Anims"*/ + XTREME_ASSETS_PACK_NAME_LEN + 1];
+char ANIMATION_DIR[23 /* /ext/asset_packs//Anims */ + ASSET_PACKS_NAME_LEN + 1];
char ANIMATION_MANIFEST_FILE[sizeof(ANIMATION_DIR) + 13 /*"/manifest.txt"*/];
static void animation_storage_free_bubbles(BubbleAnimation* animation);
@@ -25,10 +25,10 @@ static BubbleAnimation* animation_storage_load_animation(const char* name);
void animation_handler_select_manifest() {
FuriString* anim_dir = furi_string_alloc();
FuriString* manifest = furi_string_alloc();
- bool use_asset_pack = xtreme_settings.asset_pack[0] != '\0';
+ bool use_asset_pack = momentum_settings.asset_pack[0] != '\0';
if(use_asset_pack) {
furi_string_printf(
- anim_dir, "%s/%s/Anims", XTREME_ASSETS_PATH, xtreme_settings.asset_pack);
+ anim_dir, "%s/%s/Anims", ASSET_PACKS_PATH, momentum_settings.asset_pack);
furi_string_printf(manifest, "%s/manifest.txt", furi_string_get_cstr(anim_dir));
Storage* storage = furi_record_open(RECORD_STORAGE);
if(storage_common_stat(storage, furi_string_get_cstr(manifest), NULL) == FSE_OK) {
@@ -513,7 +513,7 @@ static BubbleAnimation* animation_storage_load_animation(const char* name) {
if(!flipper_format_read_uint32(ff, "Active cycles", &u32value, 1)) break; //-V779
animation->active_cycles = u32value;
if(!flipper_format_read_uint32(ff, "Frame rate", &u32value, 1)) break;
- uint32_t anim_speed = xtreme_settings.anim_speed;
+ uint32_t anim_speed = momentum_settings.anim_speed;
u32value = (u32value * anim_speed) / 100;
FURI_CONST_ASSIGN(animation->icon_animation.frame_rate, u32value < 1 ? 1 : u32value);
if(!flipper_format_read_uint32(ff, "Duration", &u32value, 1)) break;
diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c
index 5fcf4dd34..7fc52bd6b 100644
--- a/applications/services/desktop/desktop.c
+++ b/applications/services/desktop/desktop.c
@@ -11,7 +11,7 @@
#include
#include
#include
-#include
+#include
#include "animations/animation_manager.h"
#include "desktop/scenes/desktop_scene.h"
@@ -66,13 +66,13 @@ static void desktop_clock_reconfigure(Desktop* desktop) {
desktop_clock_update(desktop);
- if(xtreme_settings.statusbar_clock) {
+ if(momentum_settings.statusbar_clock) {
furi_timer_start(desktop->update_clock_timer, furi_ms_to_ticks(1000));
} else {
furi_timer_stop(desktop->update_clock_timer);
}
- view_port_enabled_set(desktop->clock_viewport, xtreme_settings.statusbar_clock);
+ view_port_enabled_set(desktop->clock_viewport, momentum_settings.statusbar_clock);
}
static void desktop_clock_draw_callback(Canvas* canvas, void* context) {
@@ -217,7 +217,7 @@ void desktop_lock(Desktop* desktop, bool pin_lock) {
Cli* cli = furi_record_open(RECORD_CLI);
cli_session_close(cli);
furi_record_close(RECORD_CLI);
- if(!xtreme_settings.allow_locked_rpc_commands) {
+ if(!momentum_settings.allow_locked_rpc_commands) {
Bt* bt = furi_record_open(RECORD_BT);
bt_close_rpc_connection(bt);
furi_record_close(RECORD_BT);
@@ -491,7 +491,7 @@ int32_t desktop_srv(void* p) {
scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain);
- if(xtreme_settings.lock_on_boot || furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock)) {
+ if(momentum_settings.lock_on_boot || furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock)) {
desktop_lock(desktop, true);
} else {
if(!loader_is_locked(desktop->loader)) {
diff --git a/applications/services/desktop/desktop_settings.h b/applications/services/desktop/desktop_settings.h
index 918cf81da..5f3581bf7 100644
--- a/applications/services/desktop/desktop_settings.h
+++ b/applications/services/desktop/desktop_settings.h
@@ -6,12 +6,10 @@
#include
#include
-#define DESKTOP_SETTINGS_OLD_PATH CFG_PATH("desktop.settings")
#define DESKTOP_SETTINGS_PATH INT_PATH(".desktop.settings")
#define DESKTOP_SETTINGS_MAGIC (0x17)
#define DESKTOP_SETTINGS_VER (11)
-#define DESKTOP_KEYBINDS_OLD_PATH CFG_PATH(".desktop.keybinds")
#define DESKTOP_KEYBINDS_PATH CFG_PATH("desktop.keybinds")
#define DESKTOP_KEYBINDS_MAGIC (0x14)
#define DESKTOP_KEYBINDS_VER (1)
diff --git a/applications/services/desktop/scenes/desktop_scene_fault.c b/applications/services/desktop/scenes/desktop_scene_fault.c
index 65f9425d4..a0ecefaab 100644
--- a/applications/services/desktop/scenes/desktop_scene_fault.c
+++ b/applications/services/desktop/scenes/desktop_scene_fault.c
@@ -1,7 +1,7 @@
#include
#include "../desktop_i.h"
-#include
+#include
#define DesktopFaultEventExit 0x00FF00FF
@@ -15,23 +15,13 @@ void desktop_scene_fault_on_enter(void* context) {
Popup* popup = desktop->hw_mismatch_popup;
popup_set_context(popup, desktop);
- if(xtreme_assets.is_nsfw) {
- popup_set_header(
- popup,
- "Slut passed out\n but is now back",
- 60,
- 14 + STATUS_BAR_Y_SHIFT,
- AlignCenter,
- AlignCenter);
- } else {
- popup_set_header(
- popup,
- "Flipper crashed\n but has been rebooted",
- 60,
- 14 + STATUS_BAR_Y_SHIFT,
- AlignCenter,
- AlignCenter);
- }
+ popup_set_header(
+ popup,
+ "Flipper crashed\n but has been rebooted",
+ 60,
+ 14 + STATUS_BAR_Y_SHIFT,
+ AlignCenter,
+ AlignCenter);
char* message = (char*)furi_hal_rtc_get_fault_data();
popup_set_text(popup, message, 60, 37 + STATUS_BAR_Y_SHIFT, AlignCenter, AlignCenter);
diff --git a/applications/services/desktop/scenes/desktop_scene_lock_menu.c b/applications/services/desktop/scenes/desktop_scene_lock_menu.c
index 8684d3d1e..df898a8f3 100644
--- a/applications/services/desktop/scenes/desktop_scene_lock_menu.c
+++ b/applications/services/desktop/scenes/desktop_scene_lock_menu.c
@@ -4,7 +4,7 @@
#include
#include
#include
-#include
+#include
#include "../desktop_i.h"
#include
@@ -43,9 +43,9 @@ void desktop_scene_lock_menu_save_settings(Desktop* desktop) {
notification_message_save_settings(desktop->lock_menu->notification);
desktop->lock_menu->save_notification = false;
}
- if(desktop->lock_menu->save_xtreme) {
- xtreme_settings_save();
- desktop->lock_menu->save_xtreme = false;
+ if(desktop->lock_menu->save_momentum) {
+ momentum_settings_save();
+ desktop->lock_menu->save_momentum = false;
}
if(desktop->lock_menu->save_bt) {
bt_settings_save(&desktop->lock_menu->bt->bt_settings);
@@ -120,9 +120,9 @@ bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent event) {
}
consumed = true;
break;
- case DesktopLockMenuEventXtreme:
+ case DesktopLockMenuEventMomentum:
desktop_scene_lock_menu_save_settings(desktop);
- loader_start_detached_with_gui_error(desktop->loader, "Xtreme", NULL);
+ loader_start_detached_with_gui_error(desktop->loader, "Momentum", NULL);
consumed = true;
break;
case DesktopLockMenuEventStealthModeOn:
diff --git a/applications/services/desktop/scenes/desktop_scene_locked.c b/applications/services/desktop/scenes/desktop_scene_locked.c
index 1f1384276..9d512bed0 100644
--- a/applications/services/desktop/scenes/desktop_scene_locked.c
+++ b/applications/services/desktop/scenes/desktop_scene_locked.c
@@ -13,7 +13,7 @@
#include "../views/desktop_view_locked.h"
#include "desktop_scene.h"
#include "desktop_scene_i.h"
-#include
+#include
#define TAG "DesktopSrv"
@@ -85,7 +85,7 @@ bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) {
if(event.type == SceneManagerEventTypeCustom) {
switch(event.event) {
case DesktopLockedEventOpenPowerOff: {
- if(xtreme_settings.lockscreen_poweroff) {
+ if(momentum_settings.lockscreen_poweroff) {
loader_start(desktop->loader, "Power", "off", NULL);
}
consumed = true;
diff --git a/applications/services/desktop/scenes/desktop_scene_pin_input.c b/applications/services/desktop/scenes/desktop_scene_pin_input.c
index c4b3f421d..45394643f 100644
--- a/applications/services/desktop/scenes/desktop_scene_pin_input.c
+++ b/applications/services/desktop/scenes/desktop_scene_pin_input.c
@@ -5,7 +5,7 @@
#include
#include
#include
-#include
+#include
#include "../desktop.h"
#include "../desktop_i.h"
@@ -57,7 +57,7 @@ static void desktop_scene_pin_input_done_callback(const PinCode* pin_code, void*
view_dispatcher_send_custom_event(desktop->view_dispatcher, DesktopPinInputEventUnlocked);
} else {
uint32_t pin_fails = furi_hal_rtc_get_pin_fails() + 1;
- if(pin_fails >= 10 && xtreme_settings.bad_pins_format) {
+ if(pin_fails >= 10 && momentum_settings.bad_pins_format) {
furi_hal_rtc_reset_registers();
furi_hal_rtc_set_flag(FuriHalRtcFlagStorageFormatInternal);
storage_sd_format(furi_record_open(RECORD_STORAGE));
diff --git a/applications/services/desktop/views/desktop_events.h b/applications/services/desktop/views/desktop_events.h
index 8409ea56a..13d92341b 100644
--- a/applications/services/desktop/views/desktop_events.h
+++ b/applications/services/desktop/views/desktop_events.h
@@ -58,5 +58,5 @@ typedef enum {
DesktopLockMenuEventSettings,
DesktopLockMenuEventLockKeypad,
DesktopLockMenuEventLockPinOff,
- DesktopLockMenuEventXtreme,
+ DesktopLockMenuEventMomentum,
} DesktopEvent;
diff --git a/applications/services/desktop/views/desktop_view_lock_menu.c b/applications/services/desktop/views/desktop_view_lock_menu.c
index d65e3e1ef..bf6643292 100644
--- a/applications/services/desktop/views/desktop_view_lock_menu.c
+++ b/applications/services/desktop/views/desktop_view_lock_menu.c
@@ -1,7 +1,7 @@
#include
#include
#include
-#include
+#include
#include
#include "../desktop_i.h"
@@ -20,7 +20,7 @@ typedef enum {
DesktopLockMenuIndexDarkMode,
DesktopLockMenuIndexLock,
DesktopLockMenuIndexBluetooth,
- DesktopLockMenuIndexXtreme,
+ DesktopLockMenuIndexMomentum,
DesktopLockMenuIndexBrightness,
DesktopLockMenuIndexVolume,
@@ -101,7 +101,7 @@ void desktop_lock_menu_draw_callback(Canvas* canvas, void* model) {
break;
case DesktopLockMenuIndexDarkMode:
icon = &I_CC_DarkMode_16x16;
- enabled = xtreme_settings.dark_mode;
+ enabled = momentum_settings.dark_mode;
break;
case DesktopLockMenuIndexLock:
icon = &I_CC_Lock_16x16;
@@ -110,8 +110,8 @@ void desktop_lock_menu_draw_callback(Canvas* canvas, void* model) {
icon = &I_CC_Bluetooth_16x16;
enabled = m->lock_menu->bt->bt_settings.enabled;
break;
- case DesktopLockMenuIndexXtreme:
- icon = &I_CC_Xtreme_16x16;
+ case DesktopLockMenuIndexMomentum:
+ icon = &I_CC_Momentum_16x16;
break;
case DesktopLockMenuIndexBrightness:
icon = &I_Pin_star_7x7;
@@ -287,8 +287,8 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) {
desktop_event = DesktopLockMenuEventSettings;
break;
case DesktopLockMenuIndexDarkMode:
- xtreme_settings.dark_mode = !xtreme_settings.dark_mode;
- lock_menu->save_xtreme = true;
+ momentum_settings.dark_mode = !momentum_settings.dark_mode;
+ lock_menu->save_momentum = true;
break;
case DesktopLockMenuIndexBluetooth:
lock_menu->bt->bt_settings.enabled = !lock_menu->bt->bt_settings.enabled;
@@ -299,8 +299,8 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) {
}
lock_menu->save_bt = true;
break;
- case DesktopLockMenuIndexXtreme:
- desktop_event = DesktopLockMenuEventXtreme;
+ case DesktopLockMenuIndexMomentum:
+ desktop_event = DesktopLockMenuEventMomentum;
break;
case DesktopLockMenuIndexVolume:
desktop_event = stealth_mode ? DesktopLockMenuEventStealthModeOff :
diff --git a/applications/services/desktop/views/desktop_view_lock_menu.h b/applications/services/desktop/views/desktop_view_lock_menu.h
index 78b981c50..0f8082021 100644
--- a/applications/services/desktop/views/desktop_view_lock_menu.h
+++ b/applications/services/desktop/views/desktop_view_lock_menu.h
@@ -19,7 +19,7 @@ struct DesktopLockMenuView {
NotificationApp* notification;
Bt* bt;
bool save_notification;
- bool save_xtreme;
+ bool save_momentum;
bool save_bt;
};
diff --git a/applications/services/desktop/views/desktop_view_locked.c b/applications/services/desktop/views/desktop_view_locked.c
index 24ebd760b..0b2ebb692 100644
--- a/applications/services/desktop/views/desktop_view_locked.c
+++ b/applications/services/desktop/views/desktop_view_locked.c
@@ -6,7 +6,7 @@
#include
#include
#include
-#include
+#include
#include
#include "../desktop_i.h"
@@ -92,14 +92,14 @@ void desktop_view_locked_draw_lockscreen(Canvas* canvas, void* m) {
snprintf(date_str, 14, "%.2d-%.2d-%.4d", datetime.day, datetime.month, datetime.year);
}
- if(!xtreme_settings.lockscreen_transparent) {
+ if(!momentum_settings.lockscreen_transparent) {
canvas_draw_icon(canvas, 0, 0 + y, &I_Lockscreen);
}
- if(xtreme_settings.lockscreen_time) {
+ if(momentum_settings.lockscreen_time) {
canvas_set_font(canvas, FontBigNumbers);
canvas_draw_str(canvas, 0, 64 + y, time_str);
int offset = canvas_string_width(canvas, time_str) + 2;
- if(xtreme_settings.lockscreen_seconds) {
+ if(momentum_settings.lockscreen_seconds) {
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 0 + offset, 64 + y, second_str);
offset += canvas_string_width(canvas, ":00") + 2;
@@ -109,12 +109,12 @@ void desktop_view_locked_draw_lockscreen(Canvas* canvas, void* m) {
canvas_draw_str(canvas, 0 + offset, 64 + y, meridian_str);
}
}
- if(xtreme_settings.lockscreen_date) {
+ if(momentum_settings.lockscreen_date) {
canvas_set_font(canvas, FontSecondary);
- canvas_draw_str(canvas, 0, 48 + y + 16 * !xtreme_settings.lockscreen_time, date_str);
+ canvas_draw_str(canvas, 0, 48 + y + 16 * !momentum_settings.lockscreen_time, date_str);
}
if(model->view_state == DesktopViewLockedStateLockedHintShown &&
- xtreme_settings.lockscreen_prompt) {
+ momentum_settings.lockscreen_prompt) {
canvas_set_font(canvas, FontSecondary);
if(model->pin_locked) {
elements_bubble_str(
diff --git a/applications/services/dolphin/dolphin.c b/applications/services/dolphin/dolphin.c
index d30c2ba02..e9ac4dc97 100644
--- a/applications/services/dolphin/dolphin.c
+++ b/applications/services/dolphin/dolphin.c
@@ -5,7 +5,7 @@
#include
#include
#include
-#include
+#include
#define DOLPHIN_LOCK_EVENT_FLAG (0x1)
#define TAG "Dolphin"
@@ -156,7 +156,7 @@ int32_t dolphin_srv(void* p) {
furi_record_create(RECORD_DOLPHIN, dolphin);
dolphin_state_load(dolphin->state);
- uint32_t butthurt_interval = xtreme_settings.butthurt_timer * 1000;
+ uint32_t butthurt_interval = momentum_settings.butthurt_timer * 1000;
if(butthurt_interval) furi_timer_restart(dolphin->butthurt_timer, butthurt_interval);
dolphin_update_clear_limits_timer_period(dolphin);
furi_timer_restart(dolphin->clear_limits_timer, HOURS_IN_TICKS(24));
diff --git a/applications/services/dolphin/helpers/dolphin_state.h b/applications/services/dolphin/helpers/dolphin_state.h
index 949f49ce0..8c4219861 100644
--- a/applications/services/dolphin/helpers/dolphin_state.h
+++ b/applications/services/dolphin/helpers/dolphin_state.h
@@ -9,7 +9,6 @@
extern "C" {
#endif
-#define DOLPHIN_STATE_OLD_PATH INT_PATH(".dolphin.state")
#define DOLPHIN_STATE_PATH CFG_PATH("dolphin.state")
extern const uint32_t DOLPHIN_LEVELS[];
diff --git a/applications/services/expansion/expansion_settings_filename.h b/applications/services/expansion/expansion_settings_filename.h
index 2ce48cf42..586f775c6 100644
--- a/applications/services/expansion/expansion_settings_filename.h
+++ b/applications/services/expansion/expansion_settings_filename.h
@@ -6,5 +6,4 @@
/**
* @brief File name used for expansion settings.
*/
-#define EXPANSION_SETTINGS_OLD_PATH INT_PATH(".expansion.settings")
#define EXPANSION_SETTINGS_PATH CFG_PATH("expansion.settings")
diff --git a/applications/services/gui/canvas.c b/applications/services/gui/canvas.c
index ff52c6090..5d2148785 100644
--- a/applications/services/gui/canvas.c
+++ b/applications/services/gui/canvas.c
@@ -5,7 +5,7 @@
#include
#include
#include
-#include
+#include
const CanvasFontParameters canvas_font_params[FontTotalNumber] = {
[FontPrimary] = {.leading_default = 12, .leading_min = 11, .height = 8, .descender = 2},
@@ -137,15 +137,15 @@ uint8_t canvas_current_font_width(const Canvas* canvas) {
const CanvasFontParameters* canvas_get_font_params(const Canvas* canvas, Font font) {
furi_assert(canvas);
furi_assert(font < FontTotalNumber);
- if(xtreme_assets.font_params[font]) {
- return xtreme_assets.font_params[font];
+ if(asset_packs.font_params[font]) {
+ return asset_packs.font_params[font];
}
return &canvas_font_params[font];
}
void canvas_clear(Canvas* canvas) {
furi_assert(canvas);
- if(xtreme_settings.dark_mode) {
+ if(momentum_settings.dark_mode) {
u8g2_FillBuffer(&canvas->fb);
} else {
u8g2_ClearBuffer(&canvas->fb);
@@ -154,7 +154,7 @@ void canvas_clear(Canvas* canvas) {
void canvas_set_color(Canvas* canvas, Color color) {
furi_assert(canvas);
- if(xtreme_settings.dark_mode) {
+ if(momentum_settings.dark_mode) {
if(color == ColorBlack) {
color = ColorWhite;
} else if(color == ColorWhite) {
@@ -176,8 +176,8 @@ void canvas_invert_color(Canvas* canvas) {
void canvas_set_font(Canvas* canvas, Font font) {
furi_assert(canvas);
u8g2_SetFontMode(&canvas->fb, 1);
- if(xtreme_assets.fonts[font]) {
- u8g2_SetFont(&canvas->fb, xtreme_assets.fonts[font]);
+ if(asset_packs.fonts[font]) {
+ u8g2_SetFont(&canvas->fb, asset_packs.fonts[font]);
return;
}
switch(font) {
diff --git a/applications/services/gui/gui.c b/applications/services/gui/gui.c
index 3359a9bc9..b17adc8e7 100644
--- a/applications/services/gui/gui.c
+++ b/applications/services/gui/gui.c
@@ -1,4 +1,4 @@
-#include
+#include
#include "gui_i.h"
#include
#include
@@ -97,7 +97,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
/* for support black theme - paint white area and
* draw icon with transparent white color
*/
- if(xtreme_settings.bar_background) {
+ if(momentum_settings.bar_background) {
canvas_set_color(gui->canvas, ColorWhite);
canvas_draw_box(gui->canvas, 1, 1, 9, 7);
canvas_draw_box(gui->canvas, 7, 3, 58, 6);
@@ -130,7 +130,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
width + 2,
GUI_STATUS_BAR_WORKAREA_HEIGHT + 2);
// Hide battery background
- if(xtreme_settings.bar_borders) {
+ if(momentum_settings.bar_borders) {
canvas_set_color(gui->canvas, ColorWhite);
canvas_draw_box(
gui->canvas, -1, 0, canvas_width(gui->canvas) + 1, canvas_height(gui->canvas));
@@ -139,7 +139,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
// ViewPort draw
canvas_frame_set(
gui->canvas,
- x - xtreme_settings.bar_borders,
+ x - momentum_settings.bar_borders,
GUI_STATUS_BAR_Y + 2,
width,
GUI_STATUS_BAR_WORKAREA_HEIGHT);
@@ -156,7 +156,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
right_used + 4,
GUI_STATUS_BAR_HEIGHT);
// Disable battery border
- if(xtreme_settings.bar_borders) {
+ if(momentum_settings.bar_borders) {
canvas_set_color(gui->canvas, ColorBlack);
canvas_draw_rframe(
gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas), 1);
@@ -176,7 +176,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
}
// Left side
- if(xtreme_settings.status_icons) {
+ if(momentum_settings.status_icons) {
x = 2;
ViewPortArray_it(it, gui->layers[GuiLayerStatusBarLeft]);
while(!ViewPortArray_end_p(it) && (right_used + left_used) < GUI_STATUS_BAR_WIDTH) {
@@ -191,7 +191,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
GUI_STATUS_BAR_Y + 1,
width + 2,
GUI_STATUS_BAR_WORKAREA_HEIGHT + 2);
- if(xtreme_settings.bar_borders) {
+ if(momentum_settings.bar_borders) {
canvas_set_color(gui->canvas, ColorWhite);
canvas_draw_box(
gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas));
@@ -217,7 +217,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
GUI_STATUS_BAR_Y + 1,
width + 2,
GUI_STATUS_BAR_WORKAREA_HEIGHT + 2);
- if(xtreme_settings.bar_borders) {
+ if(momentum_settings.bar_borders) {
canvas_set_color(gui->canvas, ColorWhite);
canvas_draw_box(
gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas));
@@ -234,7 +234,7 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) {
// Draw frame around icons on the left
if(left_used) {
canvas_frame_set(gui->canvas, 0, 0, left_used + 3, GUI_STATUS_BAR_HEIGHT);
- if(xtreme_settings.bar_borders) {
+ if(momentum_settings.bar_borders) {
canvas_draw_rframe(
gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas), 1);
canvas_draw_line(
@@ -291,7 +291,7 @@ static void gui_redraw(Gui* gui) {
bool need_attention =
(gui_view_port_find_enabled(gui->layers[GuiLayerWindow]) != 0 ||
gui_view_port_find_enabled(gui->layers[GuiLayerFullscreen]) != 0);
- if(xtreme_settings.lockscreen_statusbar) {
+ if(momentum_settings.lockscreen_statusbar) {
gui_redraw_status_bar(gui, need_attention);
}
} else {
diff --git a/applications/services/gui/modules/file_browser.c b/applications/services/gui/modules/file_browser.c
index bae35ab46..5c780730e 100644
--- a/applications/services/gui/modules/file_browser.c
+++ b/applications/services/gui/modules/file_browser.c
@@ -13,7 +13,7 @@
#include
#include "m-algo.h"
#include
-#include
+#include
#define LIST_ITEMS 5u
#define MAX_LEN_PX 110
@@ -85,7 +85,7 @@ static int BrowserItem_t_cmp(const BrowserItem_t* a, const BrowserItem_t* b) {
if(b->type == BrowserItemTypeBack) {
return 1;
}
- if(xtreme_settings.sort_dirs_first) {
+ if(momentum_settings.sort_dirs_first) {
if(a->type == BrowserItemTypeFolder && b->type != BrowserItemTypeFolder) {
return -1;
}
diff --git a/applications/services/gui/modules/menu.c b/applications/services/gui/modules/menu.c
index 99a589d2d..4fac392d8 100644
--- a/applications/services/gui/modules/menu.c
+++ b/applications/services/gui/modules/menu.c
@@ -9,7 +9,7 @@
#include
#include
#include
-#include
+#include
#include
struct Menu {
@@ -90,7 +90,7 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
MenuItem* item;
size_t shift_position;
FuriString* name = furi_string_alloc();
- switch(xtreme_settings.menu_style) {
+ switch(momentum_settings.menu_style) {
case MenuStyleList: {
for(uint8_t i = 0; i < 3; i++) {
canvas_set_font(canvas, i == 1 ? FontPrimary : FontSecondary);
@@ -403,7 +403,7 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
static bool menu_input_callback(InputEvent* event, void* context) {
Menu* menu = context;
bool consumed = true;
- if(xtreme_settings.menu_style == MenuStyleVertical &&
+ if(momentum_settings.menu_style == MenuStyleVertical &&
furi_hal_rtc_is_flag_set(FuriHalRtcFlagHandOrient)) {
if(event->key == InputKeyLeft) {
event->key = InputKeyRight;
@@ -612,7 +612,7 @@ static void menu_process_up(Menu* menu) {
size_t count = MenuItemArray_size(model->items);
size_t vertical_offset = model->vertical_offset;
- switch(xtreme_settings.menu_style) {
+ switch(momentum_settings.menu_style) {
case MenuStyleList:
case MenuStyleTerminal:
if(position > 0) {
@@ -663,7 +663,7 @@ static void menu_process_down(Menu* menu) {
size_t count = MenuItemArray_size(model->items);
size_t vertical_offset = model->vertical_offset;
- switch(xtreme_settings.menu_style) {
+ switch(momentum_settings.menu_style) {
case MenuStyleList:
case MenuStyleTerminal:
if(position < count - 1) {
@@ -714,7 +714,7 @@ static void menu_process_left(Menu* menu) {
size_t count = MenuItemArray_size(model->items);
size_t vertical_offset = model->vertical_offset;
- switch(xtreme_settings.menu_style) {
+ switch(momentum_settings.menu_style) {
case MenuStyleWii:
if(position < 2) {
if(count % 2) {
@@ -777,7 +777,7 @@ static void menu_process_right(Menu* menu) {
size_t count = MenuItemArray_size(model->items);
size_t vertical_offset = model->vertical_offset;
- switch(xtreme_settings.menu_style) {
+ switch(momentum_settings.menu_style) {
case MenuStyleWii:
if(count % 2) {
if(position == count - 1) {
diff --git a/applications/services/loader/loader.c b/applications/services/loader/loader.c
index d512fbce1..7c6369feb 100644
--- a/applications/services/loader/loader.c
+++ b/applications/services/loader/loader.c
@@ -3,7 +3,7 @@
#include
#include
#include
-#include
+#include
#include
#include
@@ -206,8 +206,8 @@ bool loader_menu_load_fap_meta(
static void loader_make_menu_file(Storage* storage) {
Stream* new = file_stream_alloc(storage);
- if(!storage_file_exists(storage, XTREME_MENU_PATH)) {
- if(file_stream_open(new, XTREME_MENU_PATH, FSAM_WRITE, FSOM_CREATE_ALWAYS)) {
+ if(!storage_file_exists(storage, MAINMENU_APPS_PATH)) {
+ if(file_stream_open(new, MAINMENU_APPS_PATH, FSAM_WRITE, FSOM_CREATE_ALWAYS)) {
stream_write_format(new, "MenuAppList Version %u\n", 0);
for(size_t i = 0; i < FLIPPER_APPS_COUNT; i++) {
stream_write_format(new, "%s\n", FLIPPER_APPS[i].name);
@@ -215,13 +215,14 @@ static void loader_make_menu_file(Storage* storage) {
for(size_t i = 0; i < FLIPPER_EXTERNAL_APPS_COUNT - 1; i++) {
stream_write_format(new, "%s\n", FLIPPER_EXTERNAL_APPS[i].name);
}
+ // Old additional external apps
Stream* old = file_stream_alloc(storage);
- if(file_stream_open(old, XTREME_MENU_OLD_PATH, FSAM_READ, FSOM_OPEN_EXISTING)) {
+ if(file_stream_open(old, CFG_PATH("xtreme_apps.txt"), FSAM_READ, FSOM_OPEN_EXISTING)) {
stream_copy(old, new, stream_size(old));
}
file_stream_close(old);
stream_free(old);
- storage_common_remove(storage, XTREME_MENU_OLD_PATH);
+ storage_common_remove(storage, CFG_PATH("xtreme_apps.txt"));
}
file_stream_close(new);
}
@@ -247,10 +248,10 @@ static Loader* loader_alloc() {
FuriString* line = furi_string_alloc();
FuriString* name = furi_string_alloc();
do {
- if(!file_stream_open(stream, XTREME_MENU_PATH, FSAM_READ_WRITE, FSOM_OPEN_EXISTING)) {
+ if(!file_stream_open(stream, MAINMENU_APPS_PATH, FSAM_READ_WRITE, FSOM_OPEN_EXISTING)) {
file_stream_close(stream);
loader_make_menu_file(storage);
- if(!file_stream_open(stream, XTREME_MENU_PATH, FSAM_READ_WRITE, FSOM_OPEN_EXISTING))
+ if(!file_stream_open(stream, MAINMENU_APPS_PATH, FSAM_READ_WRITE, FSOM_OPEN_EXISTING))
break;
}
@@ -259,9 +260,9 @@ static Loader* loader_alloc() {
sscanf(furi_string_get_cstr(line), "MenuAppList Version %lu", &version) != 1 ||
version > 0) {
file_stream_close(stream);
- storage_common_remove(storage, XTREME_MENU_PATH);
+ storage_common_remove(storage, MAINMENU_APPS_PATH);
loader_make_menu_file(storage);
- if(!file_stream_open(stream, XTREME_MENU_PATH, FSAM_READ_WRITE, FSOM_OPEN_EXISTING))
+ if(!file_stream_open(stream, MAINMENU_APPS_PATH, FSAM_READ_WRITE, FSOM_OPEN_EXISTING))
break;
if(!stream_read_line(stream, line) ||
sscanf(furi_string_get_cstr(line), "MenuAppList Version %lu", &version) != 1 ||
diff --git a/applications/services/notification/notification_app.h b/applications/services/notification/notification_app.h
index 71369e1c4..e6e0ec5cd 100644
--- a/applications/services/notification/notification_app.h
+++ b/applications/services/notification/notification_app.h
@@ -33,7 +33,6 @@ typedef struct {
#define NOTIFICATION_SETTINGS_VERSION 0x02
#define NOTIFICATION_SETTINGS_MAGIC 0x16
-#define NOTIFICATION_SETTINGS_OLD_PATH INT_PATH(".notification.settings")
#define NOTIFICATION_SETTINGS_PATH CFG_PATH("notification.settings")
typedef struct {
diff --git a/applications/services/power/power_service/power.c b/applications/services/power/power_service/power.c
index 991a102a6..6e5b5601c 100644
--- a/applications/services/power/power_service/power.c
+++ b/applications/services/power/power_service/power.c
@@ -2,7 +2,7 @@
#include
#include
-#include
+#include
#define POWER_OFF_TIMEOUT 90
#define TAG "Power"
@@ -16,7 +16,7 @@ void power_set_battery_icon_enabled(Power* power, bool is_enabled) {
void power_draw_battery_callback(Canvas* canvas, void* context) {
furi_assert(context);
Power* power = context;
- BatteryIcon battery_icon = xtreme_settings.battery_icon;
+ BatteryIcon battery_icon = momentum_settings.battery_icon;
if(battery_icon == BatteryIconOff) return;
canvas_draw_icon(canvas, 0, 0, &I_Battery_25x8);
@@ -367,7 +367,7 @@ Power* power_alloc() {
// Battery view port
power->battery_view_port = power_battery_view_port_alloc(power);
- power_set_battery_icon_enabled(power, xtreme_settings.battery_icon != BatteryIconOff);
+ power_set_battery_icon_enabled(power, momentum_settings.battery_icon != BatteryIconOff);
power->show_low_bat_level_message = true;
//Auto shutdown timer
@@ -486,7 +486,7 @@ static void power_check_battery_level_change(Power* power) {
}
static void power_check_charge_cap(Power* power) {
- uint32_t cap = xtreme_settings.charge_cap;
+ uint32_t cap = momentum_settings.charge_cap;
if(power->info.charge >= cap && cap < 100) {
if(!power->info.is_charge_capped) { // Suppress charging if charge reaches custom cap
power->info.is_charge_capped = true;
diff --git a/applications/services/power/power_settings.h b/applications/services/power/power_settings.h
index 78782e0e0..94bd5895c 100644
--- a/applications/services/power/power_settings.h
+++ b/applications/services/power/power_settings.h
@@ -3,7 +3,6 @@
#define POWER_SETTINGS_VER (1)
-#define POWER_SETTINGS_OLD_PATH INT_PATH(".power.settings")
#define POWER_SETTINGS_PATH CFG_PATH("power.settings")
#define POWER_SETTINGS_MAGIC (0x21)
diff --git a/applications/services/rpc/rpc.c b/applications/services/rpc/rpc.c
index 8cd3f69a8..9f9a2a8dd 100644
--- a/applications/services/rpc/rpc.c
+++ b/applications/services/rpc/rpc.c
@@ -15,7 +15,7 @@
#include
#include
#include
-#include
+#include
#include
@@ -386,7 +386,8 @@ static void rpc_session_thread_state_callback(FuriThreadState thread_state, void
}
RpcSession* rpc_session_open(Rpc* rpc, RpcOwner owner) {
- if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) && !xtreme_settings.allow_locked_rpc_commands)
+ if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) &&
+ !momentum_settings.allow_locked_rpc_commands)
return NULL;
furi_assert(rpc);
diff --git a/applications/settings/about/about.c b/applications/settings/about/about.c
index 38a3d5fe2..97f575ab6 100644
--- a/applications/settings/about/about.c
+++ b/applications/settings/about/about.c
@@ -173,7 +173,7 @@ static DialogMessageButton about_screen_fw_version(DialogsApp* dialogs, DialogMe
furi_hal_info_get_api_version(&api_major, &api_minor);
furi_string_cat_printf(
buffer,
- "%s %s\n%s F%d:%d.%d %s\nhttps://flipper-xtre.me/",
+ "%s %s\n%s F%d:%d.%d %s\nhttps://momentum-fw.dev/",
version_get_version(ver),
version_get_builddate(ver),
version_get_githash(ver),
diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c
index c4ac5ec56..3de7de546 100644
--- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c
+++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_keybinds_action_type.c
@@ -4,7 +4,7 @@
#include
#include
#include
-#include
+#include
static bool keybinds_fap_selector_item_callback(
FuriString* file_path,
@@ -47,7 +47,7 @@ static void
const DialogsFileBrowserOptions browser_options = {
.extension = extension,
.icon = &I_unknown_10px,
- .hide_dot_files = !xtreme_settings.show_hidden_files,
+ .hide_dot_files = !momentum_settings.show_hidden_files,
.skip_assets = true,
.hide_ext = hide_ext,
.item_loader_callback = keybinds_fap_selector_item_callback,
diff --git a/applications/settings/dolphin_passport/passport.c b/applications/settings/dolphin_passport/passport.c
index 4954318e7..abcc12fa5 100644
--- a/applications/settings/dolphin_passport/passport.c
+++ b/applications/settings/dolphin_passport/passport.c
@@ -6,7 +6,7 @@
#include
#include
#include "dolphin/dolphin.h"
-#include
+#include
#include "math.h"
typedef struct {
@@ -38,28 +38,15 @@ static void render_callback(Canvas* canvas, void* _ctx) {
const char* mood_str = NULL;
const Icon* portrait = NULL;
- if(xtreme_assets.is_nsfw) {
- if(stats->butthurt <= 4) {
- portrait = &I_passport_happy_46x49;
- mood_str = "Status: Wet";
- } else if(stats->butthurt <= 9) {
- portrait = &I_passport_okay_46x49;
- mood_str = "Status: Horny";
- } else {
- portrait = &I_passport_bad_46x49;
- mood_str = "Status: Desperate";
- }
+ if(stats->butthurt <= 4) {
+ portrait = &I_passport_happy_46x49;
+ mood_str = "Mood: Happy";
+ } else if(stats->butthurt <= 9) {
+ portrait = &I_passport_okay_46x49;
+ mood_str = "Mood: Okay";
} else {
- if(stats->butthurt <= 4) {
- portrait = &I_passport_happy_46x49;
- mood_str = "Mood: Happy";
- } else if(stats->butthurt <= 9) {
- portrait = &I_passport_okay_46x49;
- mood_str = "Mood: Okay";
- } else {
- portrait = &I_passport_bad_46x49;
- mood_str = "Mood: Angry";
- }
+ portrait = &I_passport_bad_46x49;
+ mood_str = "Mood: Angry";
}
uint32_t xp_progress = 0;
uint32_t xp_need = dolphin_state_xp_to_levelup(stats->icounter);
diff --git a/applications/settings/power_settings_app/scenes/power_settings_scene_power_off.c b/applications/settings/power_settings_app/scenes/power_settings_scene_power_off.c
index 8e1b20b83..805ae96ed 100644
--- a/applications/settings/power_settings_app/scenes/power_settings_scene_power_off.c
+++ b/applications/settings/power_settings_app/scenes/power_settings_scene_power_off.c
@@ -1,5 +1,5 @@
#include "../power_settings_app.h"
-#include
+#include
void power_settings_scene_power_off_dialog_callback(DialogExResult result, void* context) {
furi_assert(context);
@@ -12,13 +12,8 @@ void power_settings_scene_power_off_on_enter(void* context) {
DialogEx* dialog = app->dialog;
dialog_ex_set_header(dialog, "Turn Off Device?", 64, 2, AlignCenter, AlignTop);
- if(xtreme_assets.is_nsfw) {
- dialog_ex_set_text(
- dialog, " I will be\nwaiting for\n you master", 78, 16, AlignLeft, AlignTop);
- } else {
- dialog_ex_set_text(
- dialog, " I will be\nwaiting for\n you here", 78, 16, AlignLeft, AlignTop);
- }
+ dialog_ex_set_text(
+ dialog, " I will be\nwaiting for\n you here", 78, 16, AlignLeft, AlignTop);
dialog_ex_set_icon(dialog, 21, 13, &I_Cry_dolph_55x52);
dialog_ex_set_left_button_text(dialog, "Battery");
dialog_ex_set_right_button_text(dialog, "OFF");
diff --git a/applications/system/updater/util/update_task_worker_backup.c b/applications/system/updater/util/update_task_worker_backup.c
index c0a7624c4..07914a8ec 100644
--- a/applications/system/updater/util/update_task_worker_backup.c
+++ b/applications/system/updater/util/update_task_worker_backup.c
@@ -13,7 +13,7 @@
#include
#include
-#define XFWFIRSTBOOT_FLAG_PATH CFG_PATH("xfwfirstboot.flag")
+#define FIRSTBOOT_FLAG_PATH CFG_PATH("firstboot.flag")
#define TAG "UpdWorkerBackup"
@@ -205,15 +205,14 @@ static bool update_task_post_update(UpdateTask* update_task) {
update_task_set_progress(update_task, UpdateTaskStageSplashscreenInstall, 0);
FuriString* tmp_path;
tmp_path = furi_string_alloc_set(update_task->update_path);
- if(storage_common_stat(update_task->storage, XFWFIRSTBOOT_FLAG_PATH, NULL) ==
+ if(storage_common_stat(update_task->storage, FIRSTBOOT_FLAG_PATH, NULL) ==
FSE_NOT_EXIST) {
File* file = storage_file_alloc(update_task->storage);
- if(storage_file_open(
- file, XFWFIRSTBOOT_FLAG_PATH, FSAM_WRITE, FSOM_CREATE_ALWAYS)) {
+ if(storage_file_open(file, FIRSTBOOT_FLAG_PATH, FSAM_WRITE, FSOM_CREATE_ALWAYS)) {
storage_file_close(file);
}
storage_file_free(file);
- path_append(tmp_path, "xfwfirstboot.bin");
+ path_append(tmp_path, "firstboot.bin");
if(storage_common_stat(
update_task->storage, furi_string_get_cstr(tmp_path), NULL) != FSE_OK) {
furi_string_set(tmp_path, update_task->update_path);
diff --git a/applications/system/updater/views/updater_main.c b/applications/system/updater/views/updater_main.c
index 923168281..a3e5309f1 100644
--- a/applications/system/updater/views/updater_main.c
+++ b/applications/system/updater/views/updater_main.c
@@ -93,13 +93,13 @@ static void updater_main_draw_callback(Canvas* canvas, void* _model) {
canvas_draw_icon(canvas, 7, 54, &I_Ok_btn_9x9);
canvas_draw_icon(canvas, 75, 55, &I_Pin_back_arrow_10x8);
} else {
- canvas_draw_str_aligned(canvas, 82, 16, AlignCenter, AlignTop, "Xtreme FW");
canvas_set_font(canvas, FontSecondary);
- canvas_draw_str_aligned(canvas, 82, 6, AlignCenter, AlignTop, "Installing");
+ canvas_draw_str_aligned(canvas, 82, 5, AlignCenter, AlignTop, "Installing");
canvas_draw_str_aligned(
canvas, 64, 51, AlignCenter, AlignTop, furi_string_get_cstr(model->status));
canvas_draw_icon(canvas, 4, 5, &I_Updating_32x40);
- elements_progress_bar(canvas, 42, 29, 80, (float)model->progress / 100);
+ canvas_draw_icon(canvas, 50, 16, &I_Updating_Logo_62x15);
+ elements_progress_bar(canvas, 42, 36, 80, (float)model->progress / 100);
}
}
diff --git a/assets/dolphin/external/Credits_128x64/meta.txt b/assets/dolphin/external/Credits_128x64/meta.txt
deleted file mode 100644
index db8407dac..000000000
--- a/assets/dolphin/external/Credits_128x64/meta.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Filetype: Flipper Animation
-Version: 1
-
-Width: 128
-Height: 64
-Passive frames: 6
-Active frames: 0
-Frames order: 0 1 2 3 4 5
-Active cycles: 0
-Frame rate: 1
-Duration: 360
-Active cooldown: 0
-
-Bubble slots: 0
diff --git a/assets/dolphin/external/manifest.txt b/assets/dolphin/external/manifest.txt
index 4e9f9dffb..05a52b172 100644
--- a/assets/dolphin/external/manifest.txt
+++ b/assets/dolphin/external/manifest.txt
@@ -182,10 +182,3 @@ Max butthurt: 14
Min level: 26
Max level: 30
Weight: 4
-
-Name: Credits_128x64
-Min butthurt: 0
-Max butthurt: 14
-Min level: 6
-Max level: 30
-Weight: 1
diff --git a/assets/icons/Common/DFU_128x50.png b/assets/icons/Common/DFU_128x50.png
index 12dcb112a..951cdc198 100644
Binary files a/assets/icons/Common/DFU_128x50.png and b/assets/icons/Common/DFU_128x50.png differ
diff --git a/assets/dolphin/external/Credits_128x64/frame_3.png b/assets/icons/ControlCenter/CC_Momentum_16x16.png
similarity index 58%
rename from assets/dolphin/external/Credits_128x64/frame_3.png
rename to assets/icons/ControlCenter/CC_Momentum_16x16.png
index 5f7c5ea7b..164a13b2d 100644
Binary files a/assets/dolphin/external/Credits_128x64/frame_3.png and b/assets/icons/ControlCenter/CC_Momentum_16x16.png differ
diff --git a/assets/icons/ControlCenter/CC_Xtreme_16x16.png b/assets/icons/ControlCenter/CC_Xtreme_16x16.png
deleted file mode 100644
index 86dcb358c..000000000
Binary files a/assets/icons/ControlCenter/CC_Xtreme_16x16.png and /dev/null differ
diff --git a/assets/dolphin/external/Credits_128x64/frame_0.png b/assets/icons/MainMenu/Momentum_14/frame_01.png
similarity index 57%
rename from assets/dolphin/external/Credits_128x64/frame_0.png
rename to assets/icons/MainMenu/Momentum_14/frame_01.png
index 596818f9c..91973344f 100644
Binary files a/assets/dolphin/external/Credits_128x64/frame_0.png and b/assets/icons/MainMenu/Momentum_14/frame_01.png differ
diff --git a/assets/dolphin/external/Credits_128x64/frame_2.png b/assets/icons/MainMenu/Momentum_14/frame_02.png
similarity index 57%
rename from assets/dolphin/external/Credits_128x64/frame_2.png
rename to assets/icons/MainMenu/Momentum_14/frame_02.png
index 5dd36c99b..9044c637e 100644
Binary files a/assets/dolphin/external/Credits_128x64/frame_2.png and b/assets/icons/MainMenu/Momentum_14/frame_02.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_03.png b/assets/icons/MainMenu/Momentum_14/frame_03.png
new file mode 100644
index 000000000..9044c637e
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_03.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_04.png b/assets/icons/MainMenu/Momentum_14/frame_04.png
new file mode 100644
index 000000000..9044c637e
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_04.png differ
diff --git a/assets/dolphin/external/Credits_128x64/frame_5.png b/assets/icons/MainMenu/Momentum_14/frame_05.png
similarity index 56%
rename from assets/dolphin/external/Credits_128x64/frame_5.png
rename to assets/icons/MainMenu/Momentum_14/frame_05.png
index c63520565..6f5ff6860 100644
Binary files a/assets/dolphin/external/Credits_128x64/frame_5.png and b/assets/icons/MainMenu/Momentum_14/frame_05.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_06.png b/assets/icons/MainMenu/Momentum_14/frame_06.png
new file mode 100644
index 000000000..9044c637e
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_06.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_07.png b/assets/icons/MainMenu/Momentum_14/frame_07.png
new file mode 100644
index 000000000..6f5ff6860
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_07.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_08.png b/assets/icons/MainMenu/Momentum_14/frame_08.png
new file mode 100644
index 000000000..6f5ff6860
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_08.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_09.png b/assets/icons/MainMenu/Momentum_14/frame_09.png
new file mode 100644
index 000000000..7b0b82c5a
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_09.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_10.png b/assets/icons/MainMenu/Momentum_14/frame_10.png
new file mode 100644
index 000000000..ebcd408a6
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_10.png differ
diff --git a/assets/icons/MainMenu/Momentum_14/frame_11.png b/assets/icons/MainMenu/Momentum_14/frame_11.png
new file mode 100644
index 000000000..3a0377c7d
Binary files /dev/null and b/assets/icons/MainMenu/Momentum_14/frame_11.png differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_rate b/assets/icons/MainMenu/Momentum_14/frame_rate
similarity index 100%
rename from assets/icons/MainMenu/Xtreme_14/frame_rate
rename to assets/icons/MainMenu/Momentum_14/frame_rate
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_01.png b/assets/icons/MainMenu/Xtreme_14/frame_01.png
deleted file mode 100644
index bd77d092d..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_01.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_02.png b/assets/icons/MainMenu/Xtreme_14/frame_02.png
deleted file mode 100644
index 5ca6f6528..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_02.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_03.png b/assets/icons/MainMenu/Xtreme_14/frame_03.png
deleted file mode 100644
index 99ac840a2..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_03.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_04.png b/assets/icons/MainMenu/Xtreme_14/frame_04.png
deleted file mode 100644
index ec9d4d5b4..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_04.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_05.png b/assets/icons/MainMenu/Xtreme_14/frame_05.png
deleted file mode 100644
index 39f2d2979..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_05.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_06.png b/assets/icons/MainMenu/Xtreme_14/frame_06.png
deleted file mode 100644
index 782fc2854..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_06.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_07.png b/assets/icons/MainMenu/Xtreme_14/frame_07.png
deleted file mode 100644
index 5d56ce1fd..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_07.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_08.png b/assets/icons/MainMenu/Xtreme_14/frame_08.png
deleted file mode 100644
index a21cbb27c..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_08.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_09.png b/assets/icons/MainMenu/Xtreme_14/frame_09.png
deleted file mode 100644
index e2f07516a..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_09.png and /dev/null differ
diff --git a/assets/icons/MainMenu/Xtreme_14/frame_10.png b/assets/icons/MainMenu/Xtreme_14/frame_10.png
deleted file mode 100644
index a888dd8a7..000000000
Binary files a/assets/icons/MainMenu/Xtreme_14/frame_10.png and /dev/null differ
diff --git a/assets/icons/Update/Updating_32x40.png b/assets/icons/Update/Updating_32x40.png
index 3a1a6abb4..d8f7654b8 100644
Binary files a/assets/icons/Update/Updating_32x40.png and b/assets/icons/Update/Updating_32x40.png differ
diff --git a/assets/dolphin/external/Credits_128x64/frame_4.png b/assets/icons/Update/Updating_Logo_62x15.png
similarity index 56%
rename from assets/dolphin/external/Credits_128x64/frame_4.png
rename to assets/icons/Update/Updating_Logo_62x15.png
index 926ec7805..50a749368 100644
Binary files a/assets/dolphin/external/Credits_128x64/frame_4.png and b/assets/icons/Update/Updating_Logo_62x15.png differ
diff --git a/assets/slideshow/firstboot/frame_00.png b/assets/slideshow/firstboot/frame_00.png
new file mode 100644
index 000000000..f5d7475f7
Binary files /dev/null and b/assets/slideshow/firstboot/frame_00.png differ
diff --git a/assets/slideshow/xfwfirstboot/frame_01.png b/assets/slideshow/firstboot/frame_01.png
similarity index 100%
rename from assets/slideshow/xfwfirstboot/frame_01.png
rename to assets/slideshow/firstboot/frame_01.png
diff --git a/assets/slideshow/xfwfirstboot/frame_02.png b/assets/slideshow/firstboot/frame_02.png
similarity index 100%
rename from assets/slideshow/xfwfirstboot/frame_02.png
rename to assets/slideshow/firstboot/frame_02.png
diff --git a/assets/slideshow/xfwfirstboot/frame_03.png b/assets/slideshow/firstboot/frame_03.png
similarity index 100%
rename from assets/slideshow/xfwfirstboot/frame_03.png
rename to assets/slideshow/firstboot/frame_03.png
diff --git a/assets/dolphin/external/Credits_128x64/frame_1.png b/assets/slideshow/firstboot/frame_04.png
similarity index 55%
rename from assets/dolphin/external/Credits_128x64/frame_1.png
rename to assets/slideshow/firstboot/frame_04.png
index 169268873..770f29bf0 100644
Binary files a/assets/dolphin/external/Credits_128x64/frame_1.png and b/assets/slideshow/firstboot/frame_04.png differ
diff --git a/assets/slideshow/xfwfirstboot/frame_05.png b/assets/slideshow/firstboot/frame_05.png
similarity index 59%
rename from assets/slideshow/xfwfirstboot/frame_05.png
rename to assets/slideshow/firstboot/frame_05.png
index aeb0c2ebf..fdb1604ae 100644
Binary files a/assets/slideshow/xfwfirstboot/frame_05.png and b/assets/slideshow/firstboot/frame_05.png differ
diff --git a/assets/slideshow/xfwfirstboot/frame_06.png b/assets/slideshow/firstboot/frame_06.png
similarity index 60%
rename from assets/slideshow/xfwfirstboot/frame_06.png
rename to assets/slideshow/firstboot/frame_06.png
index 9966385fb..76ae4cdda 100644
Binary files a/assets/slideshow/xfwfirstboot/frame_06.png and b/assets/slideshow/firstboot/frame_06.png differ
diff --git a/assets/slideshow/update_default/frame_00.png b/assets/slideshow/update_default/frame_00.png
index 2a21d4b04..cdb9c3394 100644
Binary files a/assets/slideshow/update_default/frame_00.png and b/assets/slideshow/update_default/frame_00.png differ
diff --git a/assets/slideshow/xfwfirstboot/frame_00.png b/assets/slideshow/xfwfirstboot/frame_00.png
deleted file mode 100644
index 3dee7c7e0..000000000
Binary files a/assets/slideshow/xfwfirstboot/frame_00.png and /dev/null differ
diff --git a/assets/slideshow/xfwfirstboot/frame_04.png b/assets/slideshow/xfwfirstboot/frame_04.png
deleted file mode 100644
index d0b481738..000000000
Binary files a/assets/slideshow/xfwfirstboot/frame_04.png and /dev/null differ
diff --git a/fbt_options.py b/fbt_options.py
index ecc5fd449..2753844ec 100644
--- a/fbt_options.py
+++ b/fbt_options.py
@@ -4,7 +4,7 @@ import posixpath
# For more details on these options, run 'fbt -h'
-FIRMWARE_ORIGIN = "Xtreme"
+FIRMWARE_ORIGIN = "Momentum"
# Default hardware target
TARGET_HW = 7
@@ -18,8 +18,7 @@ DEBUG = 0
# Suffix to add to files when building distribution
# If OS environment has DIST_SUFFIX set, it will be used instead
-# How about we add the timestamp automatically. Solves some problems
-DIST_SUFFIX = f"XFW-DEV_@{subprocess.check_output(['git', 'rev-parse', '--short=7', 'HEAD']).decode().strip().upper()}"
+DIST_SUFFIX = f"MNTM-DEV_@{subprocess.check_output(['git', 'rev-parse', '--short=7', 'HEAD']).decode().strip().upper()}"
# Coprocessor firmware
COPRO_OB_DATA = "scripts/ob.data"
diff --git a/furi/flipper.c b/furi/flipper.c
index 30fc302f0..8b1c65d5d 100644
--- a/furi/flipper.c
+++ b/furi/flipper.c
@@ -42,8 +42,8 @@ static void flipper_print_version(const char* target, const Version* version) {
#include
#include
#include
-#include
-#include
+#include
+#include
void flipper_migrate_files() {
Storage* storage = furi_record_open(RECORD_STORAGE);
@@ -51,44 +51,49 @@ void flipper_migrate_files() {
// Revert cringe
FURI_LOG_I(TAG, "Migrate: Remove unused files");
storage_common_remove(storage, INT_PATH(".passport.settings"));
- storage_common_remove(storage, INT_PATH(".region_data"));
- // Migrate files (use copy+remove to not overwrite dst but still delete src)
- FURI_LOG_I(TAG, "Migrate: Renames on external");
- storage_common_copy(storage, ARCHIVE_FAV_OLD_PATH, ARCHIVE_FAV_PATH);
- storage_common_remove(storage, ARCHIVE_FAV_OLD_PATH);
- storage_common_copy(storage, DESKTOP_KEYBINDS_OLD_PATH, DESKTOP_KEYBINDS_PATH);
- storage_common_remove(storage, DESKTOP_KEYBINDS_OLD_PATH);
- // Int -> Ext
- FURI_LOG_I(TAG, "Migrate: Internal to External");
- storage_common_copy(storage, BT_SETTINGS_OLD_PATH, BT_SETTINGS_PATH);
- storage_common_remove(storage, BT_SETTINGS_OLD_PATH);
- storage_common_copy(storage, DOLPHIN_STATE_OLD_PATH, DOLPHIN_STATE_PATH);
- storage_common_remove(storage, DOLPHIN_STATE_OLD_PATH);
- storage_common_copy(storage, POWER_SETTINGS_OLD_PATH, POWER_SETTINGS_PATH);
- storage_common_remove(storage, POWER_SETTINGS_OLD_PATH);
- storage_common_copy(storage, BT_KEYS_STORAGE_OLD_PATH, BT_KEYS_STORAGE_PATH);
- storage_common_remove(storage, BT_KEYS_STORAGE_OLD_PATH);
- storage_common_copy(storage, EXPANSION_SETTINGS_OLD_PATH, EXPANSION_SETTINGS_PATH);
- storage_common_remove(storage, EXPANSION_SETTINGS_OLD_PATH);
- // storage_common_copy(storage, NOTIFICATION_SETTINGS_OLD_PATH, NOTIFICATION_SETTINGS_PATH); // Not compatible anyway
- storage_common_remove(storage, NOTIFICATION_SETTINGS_OLD_PATH);
- // Ext -> Int
- FURI_LOG_I(TAG, "Migrate: External to Internal");
- storage_common_copy(storage, DESKTOP_SETTINGS_OLD_PATH, DESKTOP_SETTINGS_PATH);
- storage_common_remove(storage, DESKTOP_SETTINGS_OLD_PATH);
+ // Migrate files
+ FURI_LOG_I(TAG, "Migrate: Rename old paths");
+ const struct {
+ const char* src;
+ const char* dst;
+ bool delete;
+ } renames[] = {
+ // Renames on ext
+ {CFG_PATH("favorites.txt"), ARCHIVE_FAV_PATH, true}, // Adapt to OFW/UL
+ {CFG_PATH(".desktop.keybinds"), DESKTOP_KEYBINDS_PATH, true}, // Old naming
+ {CFG_PATH("xtreme_menu.txt"), MAINMENU_APPS_PATH, false}, // Keep both
+ {CFG_PATH("xtreme_settings.txt"), MOMENTUM_SETTINGS_PATH, false}, // Keep both
+ // Int -> Ext
+ {INT_PATH(".bt.settings"), BT_SETTINGS_PATH, true},
+ {INT_PATH(".dolphin.state"), DOLPHIN_STATE_PATH, true},
+ {INT_PATH(".power.settings"), POWER_SETTINGS_PATH, true},
+ {INT_PATH(".bt.keys"), BT_KEYS_STORAGE_PATH, true},
+ {INT_PATH(".expansion.settings"), EXPANSION_SETTINGS_PATH, true},
+ {INT_PATH(".notification.settings"), NOTIFICATION_SETTINGS_PATH, true},
+ // Ext -> Int
+ {CFG_PATH("desktop.settings"), DESKTOP_SETTINGS_PATH, true},
+ };
+ for(size_t i = 0; i < COUNT_OF(renames); ++i) {
+ // Use copy+remove to not overwrite dst but still delete src
+ storage_common_copy(storage, renames[i].src, renames[i].dst);
+ if(renames[i].delete) {
+ storage_common_remove(storage, renames[i].src);
+ }
+ }
// Special care for U2F
FURI_LOG_I(TAG, "Migrate: U2F");
FileInfo file_info;
- if(storage_common_stat(storage, U2F_CNT_OLD_FILE, &file_info) == FSE_OK &&
+ if(storage_common_stat(storage, INT_PATH(".cnt.u2f"), &file_info) == FSE_OK &&
file_info.size > 200) { // Is on Int and has content
- storage_common_rename(storage, U2F_CNT_OLD_FILE, U2F_CNT_FILE); // Int -> Ext
+ storage_common_rename(storage, INT_PATH(".cnt.u2f"), U2F_CNT_FILE); // Int -> Ext
}
- storage_common_copy(storage, U2F_KEY_OLD_FILE, U2F_KEY_FILE); // Ext -> Int
+ storage_common_copy(storage, U2F_DATA_FOLDER "key.u2f", U2F_KEY_FILE); // Ext -> Int
+ // Asset packs migrate, merges together
FURI_LOG_I(TAG, "Migrate: Asset Packs");
- storage_common_migrate(storage, XTREME_ASSETS_OLD_PATH, XTREME_ASSETS_PATH);
+ storage_common_migrate(storage, EXT_PATH("dolphin_custom"), ASSET_PACKS_PATH);
furi_record_close(RECORD_STORAGE);
}
@@ -98,7 +103,7 @@ static void flipper_boot_status(Canvas* canvas, const char* text) {
canvas_reset(canvas);
canvas_draw_str_aligned(canvas, 64, 40, AlignCenter, AlignCenter, text);
canvas_set_font(canvas, FontPrimary);
- canvas_draw_str_aligned(canvas, 64, 24, AlignCenter, AlignCenter, "Xtreme is Booting");
+ canvas_draw_str_aligned(canvas, 64, 24, AlignCenter, AlignCenter, "Momentum is Booting");
canvas_commit(canvas);
}
#endif
@@ -138,12 +143,12 @@ void flipper_init() {
flipper_boot_status(canvas, "Starting Namespoof");
namespoof_init();
- flipper_boot_status(canvas, "Loading Xtreme Settings");
- xtreme_settings_load();
+ flipper_boot_status(canvas, "Loading Momentum Settings");
+ momentum_settings_load();
furi_hal_light_sequence("rgb RB");
- flipper_boot_status(canvas, "Loading Xtreme Assets");
- xtreme_assets_init();
+ flipper_boot_status(canvas, "Loading Asset Packs");
+ asset_packs_init();
} else {
FURI_LOG_I(TAG, "Special boot, skipping optional components");
}
diff --git a/lib/SConscript b/lib/SConscript
index 8bd714637..84247d53c 100644
--- a/lib/SConscript
+++ b/lib/SConscript
@@ -42,7 +42,7 @@ libs = env.BuildModules(
"mjs",
"nanopb",
"update_util",
- "xtreme",
+ "momentum",
"heatshrink",
"ble_profile",
"bit_lib",
diff --git a/lib/xtreme/SConscript b/lib/momentum/SConscript
similarity index 81%
rename from lib/xtreme/SConscript
rename to lib/momentum/SConscript
index cbbab2f3f..19b880412 100644
--- a/lib/xtreme/SConscript
+++ b/lib/momentum/SConscript
@@ -3,14 +3,14 @@ Import("env")
env.Append(
SDK_HEADERS=[
File("../../icons/assets_icons.h"),
- File("xtreme.h"),
+ File("momentum.h"),
],
LINT_SOURCES=[
Dir("."),
],
)
-libenv = env.Clone(FW_LIB_NAME="xtreme")
+libenv = env.Clone(FW_LIB_NAME="momentum")
libenv.ApplyLibFlags()
sources = libenv.GlobRecursive("*.c")
diff --git a/lib/xtreme/assets.c b/lib/momentum/assets.c
similarity index 86%
rename from lib/xtreme/assets.c
rename to lib/momentum/assets.c
index f566d3b74..f17104780 100644
--- a/lib/xtreme/assets.c
+++ b/lib/momentum/assets.c
@@ -1,27 +1,26 @@
-#include "xtreme.h"
+#include "momentum.h"
#include
#include
#include
#include
#include
-#define TAG "XtremeAssets"
+#define TAG "AssetPacks"
-#define ICONS_FMT XTREME_ASSETS_PATH "/%s/Icons/%s"
-#define FONTS_FMT XTREME_ASSETS_PATH "/%s/Fonts/%s.u8f"
+#define ICONS_FMT ASSET_PACKS_PATH "/%s/Icons/%s"
+#define FONTS_FMT ASSET_PACKS_PATH "/%s/Fonts/%s.u8f"
// See lib/u8g2/u8g2_font.c
#define U8G2_FONT_DATA_STRUCT_SIZE 23
-XtremeAssets xtreme_assets = {
- .is_nsfw = false,
+AssetPacks asset_packs = {
.fonts = {NULL},
.font_params = {NULL},
};
static void
load_icon_animated(const Icon* replace, const char* name, FuriString* path, File* file) {
- const char* pack = xtreme_settings.asset_pack;
+ const char* pack = momentum_settings.asset_pack;
furi_string_printf(path, ICONS_FMT "/meta", pack, name);
if(storage_file_open(file, furi_string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) {
int32_t icon_width, icon_height, frame_rate, frame_count;
@@ -72,7 +71,7 @@ static void
}
static void load_icon_static(const Icon* replace, const char* name, FuriString* path, File* file) {
- furi_string_printf(path, ICONS_FMT ".bmx", xtreme_settings.asset_pack, name);
+ furi_string_printf(path, ICONS_FMT ".bmx", momentum_settings.asset_pack, name);
if(storage_file_open(file, furi_string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) {
uint64_t size = storage_file_size(file) - 8;
uint8_t* frame = malloc(size);
@@ -113,20 +112,20 @@ static void free_icon(const Icon* icon) {
}
static void load_font(Font font, const char* name, FuriString* path, File* file) {
- furi_string_printf(path, FONTS_FMT, xtreme_settings.asset_pack, name);
+ furi_string_printf(path, FONTS_FMT, momentum_settings.asset_pack, name);
if(storage_file_open(file, furi_string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) {
uint64_t size = storage_file_size(file);
uint8_t* swap = malloc(size);
if(size > U8G2_FONT_DATA_STRUCT_SIZE && storage_file_read(file, swap, size) == size) {
- xtreme_assets.fonts[font] = swap;
+ asset_packs.fonts[font] = swap;
CanvasFontParameters* params = malloc(sizeof(CanvasFontParameters));
// See lib/u8g2/u8g2_font.c
params->leading_default = swap[10]; // max_char_height
params->leading_min = params->leading_default - 2; // good enough
params->height = MAX((int8_t)swap[15], 0); // ascent_para
params->descender = MAX((int8_t)swap[16], 0); // descent_para
- xtreme_assets.font_params[font] = params;
+ asset_packs.font_params[font] = params;
} else {
free(swap);
}
@@ -135,10 +134,10 @@ static void load_font(Font font, const char* name, FuriString* path, File* file)
}
static void free_font(Font font) {
- free(xtreme_assets.fonts[font]);
- xtreme_assets.fonts[font] = NULL;
- free(xtreme_assets.font_params[font]);
- xtreme_assets.font_params[font] = NULL;
+ free(asset_packs.fonts[font]);
+ asset_packs.fonts[font] = NULL;
+ free(asset_packs.font_params[font]);
+ asset_packs.font_params[font] = NULL;
}
static const char* font_names[] = {
@@ -149,15 +148,14 @@ static const char* font_names[] = {
[FontBatteryPercent] = "BatteryPercent",
};
-void xtreme_assets_init() {
- const char* pack = xtreme_settings.asset_pack;
- xtreme_assets.is_nsfw = !strncmp(pack, "NSFW", strlen("NSFW"));
+void asset_packs_init() {
+ const char* pack = momentum_settings.asset_pack;
if(pack[0] == '\0') return;
Storage* storage = furi_record_open(RECORD_STORAGE);
FuriString* p = furi_string_alloc();
FileInfo info;
- furi_string_printf(p, XTREME_ASSETS_PATH "/%s", pack);
+ furi_string_printf(p, ASSET_PACKS_PATH "/%s", pack);
if(storage_common_stat(storage, furi_string_get_cstr(p), &info) == FSE_OK &&
info.flags & FSF_DIRECTORY) {
File* f = storage_file_alloc(storage);
@@ -182,7 +180,7 @@ void xtreme_assets_init() {
furi_record_close(RECORD_STORAGE);
}
-void xtreme_assets_free() {
+void asset_packs_free() {
for(size_t i = 0; i < ICON_PATHS_COUNT; i++) {
if(ICON_PATHS[i].icon->original != NULL) {
free_icon(ICON_PATHS[i].icon);
@@ -190,7 +188,7 @@ void xtreme_assets_free() {
}
for(Font font = 0; font < FontTotalNumber; font++) {
- if(xtreme_assets.fonts[font] != NULL) {
+ if(asset_packs.fonts[font] != NULL) {
free_font(font);
}
}
diff --git a/lib/xtreme/xtreme.h b/lib/momentum/momentum.h
similarity index 76%
rename from lib/xtreme/xtreme.h
rename to lib/momentum/momentum.h
index 512b393cd..de5c21ae0 100644
--- a/lib/xtreme/xtreme.h
+++ b/lib/momentum/momentum.h
@@ -9,12 +9,10 @@
extern "C" {
#endif
-#define XTREME_SETTINGS_PATH CFG_PATH("xtreme_settings.txt")
-#define XTREME_ASSETS_OLD_PATH EXT_PATH("dolphin_custom")
-#define XTREME_ASSETS_PATH EXT_PATH("asset_packs")
-#define XTREME_MENU_OLD_PATH CFG_PATH("xtreme_apps.txt")
-#define XTREME_MENU_PATH CFG_PATH("xtreme_menu.txt")
-#define XTREME_ASSETS_PACK_NAME_LEN 32
+#define MOMENTUM_SETTINGS_PATH CFG_PATH("momentum_settings.txt")
+#define ASSET_PACKS_PATH EXT_PATH("asset_packs")
+#define MAINMENU_APPS_PATH CFG_PATH("mainmenu_apps.txt")
+#define ASSET_PACKS_NAME_LEN 32
typedef enum {
BatteryIconOff,
@@ -51,11 +49,10 @@ _Static_assert(sizeof(SpiHandle) == sizeof(uint8_t), "enum too big, fix load/sav
_Static_assert(sizeof(FuriHalSerialId) == sizeof(uint8_t), "enum too big, fix load/save");
typedef struct {
- char asset_pack[XTREME_ASSETS_PACK_NAME_LEN];
+ char asset_pack[ASSET_PACKS_NAME_LEN];
uint32_t anim_speed;
int32_t cycle_anims;
bool unlock_anims;
- bool credits_anim;
MenuStyle menu_style;
bool lock_on_boot;
bool bad_pins_format;
@@ -88,21 +85,20 @@ typedef struct {
FuriHalSerialId uart_nmea_channel;
FuriHalSerialId uart_general_channel;
bool file_naming_prefix_after;
-} XtremeSettings;
+} MomentumSettings;
typedef struct {
- bool is_nsfw; // TODO: replace with packs text support
uint8_t* fonts[FontTotalNumber];
CanvasFontParameters* font_params[FontTotalNumber];
-} XtremeAssets;
+} AssetPacks;
-void xtreme_settings_load();
-void xtreme_settings_save();
-extern XtremeSettings xtreme_settings;
+void momentum_settings_load();
+void momentum_settings_save();
+extern MomentumSettings momentum_settings;
-void xtreme_assets_init();
-void xtreme_assets_free();
-extern XtremeAssets xtreme_assets;
+void asset_packs_init();
+void asset_packs_free();
+extern AssetPacks asset_packs;
#ifdef __cplusplus
}
diff --git a/lib/xtreme/namespoof.c b/lib/momentum/namespoof.c
similarity index 100%
rename from lib/xtreme/namespoof.c
rename to lib/momentum/namespoof.c
diff --git a/lib/xtreme/namespoof.h b/lib/momentum/namespoof.h
similarity index 100%
rename from lib/xtreme/namespoof.h
rename to lib/momentum/namespoof.h
diff --git a/lib/xtreme/settings.c b/lib/momentum/settings.c
similarity index 79%
rename from lib/xtreme/settings.c
rename to lib/momentum/settings.c
index 623ef2ff9..375bafc5d 100644
--- a/lib/xtreme/settings.c
+++ b/lib/momentum/settings.c
@@ -1,17 +1,16 @@
-#include "xtreme.h"
+#include "momentum.h"
#include
#include
#include
-#define TAG "XtremeSettings"
+#define TAG "MomentumSettings"
-XtremeSettings xtreme_settings = {
+MomentumSettings momentum_settings = {
.asset_pack = "", // Default
.anim_speed = 100, // 100%
.cycle_anims = 0, // Meta.txt
.unlock_anims = false, // OFF
- .credits_anim = true, // ON
- .menu_style = MenuStyleWii, // Wii
+ .menu_style = MenuStyleDsi, // DSi
.lock_on_boot = false, // OFF
.bad_pins_format = false, // OFF
.allow_locked_rpc_commands = false, // OFF
@@ -46,15 +45,15 @@ XtremeSettings xtreme_settings = {
};
typedef enum {
- xtreme_settings_type_str,
- xtreme_settings_type_int,
- xtreme_settings_type_uint,
- xtreme_settings_type_enum,
- xtreme_settings_type_bool,
-} xtreme_settings_type;
+ momentum_settings_type_str,
+ momentum_settings_type_int,
+ momentum_settings_type_uint,
+ momentum_settings_type_enum,
+ momentum_settings_type_bool,
+} momentum_settings_type;
static const struct {
- xtreme_settings_type type;
+ momentum_settings_type type;
const char* key;
void* val;
union {
@@ -70,18 +69,17 @@ static const struct {
uint8_t e_cnt;
};
#define clamp(t, min, max) .t##_min = min, .t##_max = max
-#define setting(t, n) .type = xtreme_settings_type##t, .key = #n, .val = &xtreme_settings.n
-#define setting_str(n) setting(_str, n), .str_len = sizeof(xtreme_settings.n)
+#define setting(t, n) .type = momentum_settings_type##t, .key = #n, .val = &momentum_settings.n
+#define setting_str(n) setting(_str, n), .str_len = sizeof(momentum_settings.n)
#define setting_int(n, min, max) setting(_int, n), clamp(i, min, max)
#define setting_uint(n, min, max) setting(_uint, n), clamp(u, min, max)
#define setting_enum(n, cnt) setting(_enum, n), .e_cnt = cnt
#define setting_bool(n) setting(_bool, n)
-} xtreme_settings_entries[] = {
+} momentum_settings_entries[] = {
{setting_str(asset_pack)},
{setting_uint(anim_speed, 25, 300)},
{setting_int(cycle_anims, -1, 86400)},
{setting_bool(unlock_anims)},
- {setting_bool(credits_anim)},
{setting_enum(menu_style, MenuStyleCount)},
{setting_bool(bad_pins_format)},
{setting_bool(allow_locked_rpc_commands)},
@@ -116,36 +114,36 @@ static const struct {
{setting_bool(file_naming_prefix_after)},
};
-void xtreme_settings_load() {
+void momentum_settings_load() {
Storage* storage = furi_record_open(RECORD_STORAGE);
FlipperFormat* file = flipper_format_file_alloc(storage);
- if(flipper_format_file_open_existing(file, XTREME_SETTINGS_PATH)) {
+ if(flipper_format_file_open_existing(file, MOMENTUM_SETTINGS_PATH)) {
FuriString* val_str = furi_string_alloc();
int32_t val_int;
uint32_t val_uint;
bool val_bool;
bool ok;
- for(size_t entry_i = 0; entry_i < COUNT_OF(xtreme_settings_entries); entry_i++) {
-#define entry xtreme_settings_entries[entry_i]
+ for(size_t entry_i = 0; entry_i < COUNT_OF(momentum_settings_entries); entry_i++) {
+#define entry momentum_settings_entries[entry_i]
switch(entry.type) {
- case xtreme_settings_type_str:
+ case momentum_settings_type_str:
ok = flipper_format_read_string(file, entry.key, val_str);
if(ok) strlcpy((char*)entry.val, furi_string_get_cstr(val_str), entry.str_len);
break;
- case xtreme_settings_type_int:
+ case momentum_settings_type_int:
ok = flipper_format_read_int32(file, entry.key, &val_int, 1);
if(ok) *(int32_t*)entry.val = CLAMP(val_int, entry.i_max, entry.i_min);
break;
- case xtreme_settings_type_uint:
+ case momentum_settings_type_uint:
ok = flipper_format_read_uint32(file, entry.key, &val_uint, 1);
if(ok) *(uint32_t*)entry.val = CLAMP(val_uint, entry.u_max, entry.u_min);
break;
- case xtreme_settings_type_enum:
+ case momentum_settings_type_enum:
ok = flipper_format_read_uint32(file, entry.key, &val_uint, 1);
if(ok) *(uint8_t*)entry.val = CLAMP(val_uint, entry.e_cnt - 1U, 0U);
break;
- case xtreme_settings_type_bool:
+ case momentum_settings_type_bool:
ok = flipper_format_read_bool(file, entry.key, &val_bool, 1);
if(ok) *(bool*)entry.val = val_bool;
break;
@@ -160,32 +158,32 @@ void xtreme_settings_load() {
flipper_format_free(file);
furi_record_close(RECORD_STORAGE);
- rgb_backlight_load_settings(xtreme_settings.rgb_backlight);
+ rgb_backlight_load_settings(momentum_settings.rgb_backlight);
}
-void xtreme_settings_save() {
+void momentum_settings_save() {
Storage* storage = furi_record_open(RECORD_STORAGE);
FlipperFormat* file = flipper_format_file_alloc(storage);
- if(flipper_format_file_open_always(file, XTREME_SETTINGS_PATH)) {
+ if(flipper_format_file_open_always(file, MOMENTUM_SETTINGS_PATH)) {
uint32_t tmp_enum;
- for(size_t entry_i = 0; entry_i < COUNT_OF(xtreme_settings_entries); entry_i++) {
-#define entry xtreme_settings_entries[entry_i]
+ for(size_t entry_i = 0; entry_i < COUNT_OF(momentum_settings_entries); entry_i++) {
+#define entry momentum_settings_entries[entry_i]
switch(entry.type) {
- case xtreme_settings_type_str:
+ case momentum_settings_type_str:
flipper_format_write_string_cstr(file, entry.key, (char*)entry.val);
break;
- case xtreme_settings_type_int:
+ case momentum_settings_type_int:
flipper_format_write_int32(file, entry.key, (int32_t*)entry.val, 1);
break;
- case xtreme_settings_type_uint:
+ case momentum_settings_type_uint:
flipper_format_write_uint32(file, entry.key, (uint32_t*)entry.val, 1);
break;
- case xtreme_settings_type_enum:
+ case momentum_settings_type_enum:
tmp_enum = *(uint8_t*)entry.val;
flipper_format_write_uint32(file, entry.key, &tmp_enum, 1);
break;
- case xtreme_settings_type_bool:
+ case momentum_settings_type_bool:
flipper_format_write_bool(file, entry.key, (bool*)entry.val, 1);
break;
default:
diff --git a/lib/toolbox/name_generator.c b/lib/toolbox/name_generator.c
index dee6ac089..b676fe372 100644
--- a/lib/toolbox/name_generator.c
+++ b/lib/toolbox/name_generator.c
@@ -6,7 +6,7 @@
#include
#include
#include
-#include
+#include
const char* const name_generator_left[] = {
"super",
@@ -52,10 +52,10 @@ void name_generator_make_auto_datetime(
DateTime* custom_time) {
if(!furi_hal_rtc_is_flag_set(FuriHalRtcFlagRandomFilename)) {
name_generator_make_detailed_datetime(
- name, max_name_size, prefix, custom_time, xtreme_settings.file_naming_prefix_after);
+ name, max_name_size, prefix, custom_time, momentum_settings.file_naming_prefix_after);
} else {
name_generator_make_random_prefixed(
- name, max_name_size, prefix, xtreme_settings.file_naming_prefix_after);
+ name, max_name_size, prefix, momentum_settings.file_naming_prefix_after);
}
}
@@ -100,7 +100,7 @@ void name_generator_make_random_prefixed(
void name_generator_make_random(char* name, size_t max_name_size) {
name_generator_make_random_prefixed(
- name, max_name_size, NULL, xtreme_settings.file_naming_prefix_after);
+ name, max_name_size, NULL, momentum_settings.file_naming_prefix_after);
}
void name_generator_make_detailed_datetime(
@@ -152,5 +152,5 @@ void name_generator_make_detailed_datetime(
void name_generator_make_detailed(char* name, size_t max_name_size, const char* prefix) {
name_generator_make_detailed_datetime(
- name, max_name_size, prefix, NULL, xtreme_settings.file_naming_prefix_after);
+ name, max_name_size, prefix, NULL, momentum_settings.file_naming_prefix_after);
}
diff --git a/scripts/update.py b/scripts/update.py
index c0beee2b6..0cdf3459d 100755
--- a/scripts/update.py
+++ b/scripts/update.py
@@ -148,10 +148,10 @@ class Main(App):
"-i",
str(
pathlib.Path(self.args.resources)
- / "../../../assets/slideshow/xfwfirstboot"
+ / "../../../assets/slideshow/firstboot"
),
"-o",
- str(pathlib.Path(self.args.resources) / "dolphin/xfwfirstboot.bin"),
+ str(pathlib.Path(self.args.resources) / "dolphin/firstboot.bin"),
]
)
if not self.package_resources(
@@ -169,9 +169,9 @@ class Main(App):
SlideshowMain(no_exit=True)(
[
"-i",
- str(pathlib.Path(self.args.splash).parent / "xfwfirstboot"),
+ str(pathlib.Path(self.args.splash).parent / "firstboot"),
"-o",
- join(self.args.directory, "xfwfirstboot.bin"),
+ join(self.args.directory, "firstboot.bin"),
]
)
splash_args = [
diff --git a/sonar-project.properties b/sonar-project.properties
index 72add4236..a937a997a 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -1,8 +1,8 @@
-sonar.projectKey=Flipper-XFW_Xtreme-Firmware
-sonar.organization=Flipper-XFW
+sonar.projectKey=Next-Flip_Momentum-Firmware
+sonar.organization=Next-Flip
# This is the name and version displayed in the SonarCloud UI.
-#sonar.projectName=Xtreme-Firmware
+#sonar.projectName=Momentum-Firmware
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv
index f51e6fd22..0f538b0dd 100644
--- a/targets/f7/api_symbols.csv
+++ b/targets/f7/api_symbols.csv
@@ -131,6 +131,7 @@ Header,+,lib/mlib/m-list.h,,
Header,+,lib/mlib/m-rbtree.h,,
Header,+,lib/mlib/m-tuple.h,,
Header,+,lib/mlib/m-variant.h,,
+Header,+,lib/momentum/momentum.h,,
Header,+,lib/music_worker/music_worker.h,,
Header,+,lib/nanopb/pb.h,,
Header,+,lib/nanopb/pb_decode.h,,
@@ -247,7 +248,6 @@ Header,+,lib/toolbox/stream/string_stream.h,,
Header,+,lib/toolbox/tar/tar_archive.h,,
Header,+,lib/toolbox/value_index.h,,
Header,+,lib/toolbox/version.h,,
-Header,+,lib/xtreme/xtreme.h,,
Header,+,targets/f7/ble_glue/furi_ble/event_dispatcher.h,,
Header,+,targets/f7/ble_glue/furi_ble/gatt.h,,
Header,+,targets/f7/ble_glue/furi_ble/profile_interface.h,,
@@ -632,6 +632,8 @@ Function,-,asiprintf,int,"char**, const char*, ..."
Function,-,asniprintf,char*,"char*, size_t*, const char*, ..."
Function,-,asnprintf,char*,"char*, size_t*, const char*, ..."
Function,-,asprintf,int,"char**, const char*, ..."
+Function,+,asset_packs_free,void,
+Function,+,asset_packs_init,void,
Function,-,at_quick_exit,int,void (*)()
Function,-,atan,double,double
Function,-,atan2,double,"double, double"
@@ -2688,6 +2690,8 @@ Function,-,mktemp,char*,char*
Function,-,modf,double,"double, double*"
Function,-,modff,float,"float, float*"
Function,-,modfl,long double,"long double, long double*"
+Function,-,momentum_settings_load,void,
+Function,+,momentum_settings_save,void,
Function,-,mrand48,long,
Function,-,music_worker_alloc,MusicWorker*,
Function,-,music_worker_clear,void,MusicWorker*
@@ -3664,10 +3668,6 @@ Function,+,widget_alloc,Widget*,
Function,+,widget_free,void,Widget*
Function,+,widget_get_view,View*,Widget*
Function,+,widget_reset,void,Widget*
-Function,+,xtreme_assets_free,void,
-Function,+,xtreme_assets_init,void,
-Function,-,xtreme_settings_load,void,
-Function,+,xtreme_settings_save,void,
Function,-,y0,double,double
Function,-,y0f,float,float
Function,-,y1,double,double
@@ -3682,13 +3682,13 @@ Variable,+,A_GPIO_14,Icon,
Variable,+,A_Infrared_14,Icon,
Variable,+,A_Levelup_128x64,Icon,
Variable,+,A_Loading_24,Icon,
+Variable,+,A_Momentum_14,Icon,
Variable,+,A_NFC_14,Icon,
Variable,+,A_Plugins_14,Icon,
Variable,+,A_Round_loader_8x8,Icon,
Variable,+,A_Settings_14,Icon,
Variable,+,A_Sub1ghz_14,Icon,
Variable,+,A_U2F_14,Icon,
-Variable,+,A_Xtreme_14,Icon,
Variable,+,A_iButton_14,Icon,
Variable,+,DOLPHIN_LEVELS,const uint32_t[],
Variable,+,DOLPHIN_LEVEL_COUNT,const size_t,
@@ -3740,8 +3740,8 @@ Variable,+,I_CC_Bluetooth_16x16,Icon,
Variable,+,I_CC_DarkMode_16x16,Icon,
Variable,+,I_CC_LefthandedMode_16x16,Icon,
Variable,+,I_CC_Lock_16x16,Icon,
+Variable,+,I_CC_Momentum_16x16,Icon,
Variable,+,I_CC_Settings_16x16,Icon,
-Variable,+,I_CC_Xtreme_16x16,Icon,
Variable,+,I_Certification1_103x56,Icon,
Variable,+,I_Certification2_46x33,Icon,
Variable,+,I_CertificationChina0_121x41,Icon,
@@ -3837,6 +3837,7 @@ Variable,+,I_Unlock_7x8,Icon,
Variable,+,I_Unplug_bg_bottom_128x10,Icon,
Variable,+,I_Unplug_bg_top_128x14,Icon,
Variable,+,I_Updating_32x40,Icon,
+Variable,+,I_Updating_Logo_62x15,Icon,
Variable,+,I_UsbTree_48x22,Icon,
Variable,+,I_Voldwn_6x6,Icon,
Variable,+,I_Voltage_16x16,Icon,
@@ -3958,6 +3959,7 @@ Variable,+,_impure_data,_reent,
Variable,+,_impure_ptr,_reent*,
Variable,-,_sys_errlist,const char*[],
Variable,-,_sys_nerr,int,
+Variable,-,asset_packs,AssetPacks,
Variable,-,ble_profile_hid,const FuriHalBleProfileTemplate*,
Variable,-,ble_profile_serial,const FuriHalBleProfileTemplate*,
Variable,+,cli_vcp,CliSession,
@@ -4178,6 +4180,7 @@ Variable,+,message_red_255,const NotificationMessage,
Variable,+,message_sound_off,const NotificationMessage,
Variable,+,message_vibro_off,const NotificationMessage,
Variable,+,message_vibro_on,const NotificationMessage,
+Variable,+,momentum_settings,MomentumSettings,
Variable,-,nfc_device_emv,const NfcDeviceBase,
Variable,-,nfc_device_mf_classic,const NfcDeviceBase,
Variable,-,nfc_device_mf_desfire,const NfcDeviceBase,
@@ -4252,5 +4255,3 @@ Variable,+,usb_cdc_single,FuriHalUsbInterface,
Variable,+,usb_hid,FuriHalUsbInterface,
Variable,+,usb_hid_u2f,FuriHalUsbInterface,
Variable,+,usbd_devfs,const usbd_driver,
-Variable,+,xtreme_assets,XtremeAssets,
-Variable,+,xtreme_settings,XtremeSettings,
diff --git a/targets/f7/furi_hal/furi_hal_light.c b/targets/f7/furi_hal/furi_hal_light.c
index d7807f88e..8bd8cc1e9 100644
--- a/targets/f7/furi_hal/furi_hal_light.c
+++ b/targets/f7/furi_hal/furi_hal_light.c
@@ -3,7 +3,7 @@
#include
#include
#include
-#include
+#include
#include
#define LED_CURRENT_RED 50
@@ -44,7 +44,7 @@ void furi_hal_light_set(Light light, uint8_t value) {
lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelBlue, value);
}
if(light & LightBacklight) {
- if(xtreme_settings.rgb_backlight) {
+ if(momentum_settings.rgb_backlight) {
rgb_backlight_update(value, false);
} else {
uint8_t prev =
diff --git a/targets/f7/target.json b/targets/f7/target.json
index 4dbb5b3a2..fc1a57583 100644
--- a/targets/f7/target.json
+++ b/targets/f7/target.json
@@ -49,11 +49,11 @@
"u8g2",
"nanopb",
"update_util",
- "xtreme",
+ "momentum",
"heatshrink",
"flipperformat",
"flipper7",
"bit_lib",
"datetime"
]
-}
+}
\ No newline at end of file
diff --git a/targets/furi_hal_include/furi_hal_usb_hid.h b/targets/furi_hal_include/furi_hal_usb_hid.h
index 887f81617..1187bcaa6 100644
--- a/targets/furi_hal_include/furi_hal_usb_hid.h
+++ b/targets/furi_hal_include/furi_hal_usb_hid.h
@@ -166,7 +166,7 @@ static const uint16_t hid_asciimap[] = {
};
typedef struct {
- // Good job knobheads, these should be uint16_t
+ // Note: vid/pid should be uint16_t and are treated as such
uint32_t vid;
uint32_t pid;
char manuf[HID_MANUF_PRODUCT_NAME_LEN];