Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FL-2627] Plugins API #1387

Merged
merged 209 commits into from
Sep 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
3db456d
[FL-1811] FuriHal: move core2 startup to hal init stage, prevent work…
skotopes Sep 15, 2021
dc62232
Merge branch 'dev' into release-candidate
skotopes Sep 15, 2021
badf87f
Merge branch 'dev' into release-candidate
skotopes Sep 16, 2021
b3f1db8
Merge branch 'dev' into release-candidate
skotopes Sep 17, 2021
cca004a
Merge branch 'dev' into release-candidate
skotopes Sep 29, 2021
55692ee
Merge branch 'dev' into release-candidate
skotopes Oct 13, 2021
7b730dd
Merge branch 'dev' into release-candidate
skotopes Oct 25, 2021
f3603e3
Merge branch 'dev' into release-candidate
skotopes Oct 28, 2021
cb227da
Merge branch 'dev' into release-candidate
skotopes Nov 4, 2021
dad1b06
Merge branch 'dev' into release-candidate
skotopes Nov 14, 2021
be02738
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Nov 15, 2021
a5fa342
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Nov 21, 2021
b0b2039
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Nov 26, 2021
5352e4e
Fix butthurt and battery (#850)
albkharisov Nov 29, 2021
3a70d3b
Merge branch 'dev' into release-candidate
skotopes Dec 8, 2021
cf6a1a7
Merge branch 'dev' into release-candidate
skotopes Dec 9, 2021
5a0f7e2
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Dec 12, 2021
cc285ab
Merge branch 'dev' into release-candidate
DrZlo13 Dec 15, 2021
2ee2e8f
Merge branch 'dev' into release-candidate
skotopes Dec 17, 2021
208ea6f
Merge branch 'dev' into release-candidate
skotopes Dec 23, 2021
bb650c4
Merge branch 'dev' into release-candidate
skotopes Dec 24, 2021
24e7bda
Merge branch 'dev' into release-candidate
skotopes Jan 14, 2022
543402f
Merge branch 'dev' into release-candidate
skotopes Jan 14, 2022
830daa8
Merge branch 'dev' into release-candidate
skotopes Jan 16, 2022
9835379
Merge branch 'dev' into release-candidate
skotopes Jan 29, 2022
1d5ca45
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Feb 1, 2022
3cdcd64
Merge branch 'dev' into release-candidate
skotopes Feb 3, 2022
661b4b1
Merge branch 'dev' into release-candidate
skotopes Feb 10, 2022
d4aeee6
Merge branch 'dev' into release-candidate
skotopes Feb 14, 2022
57689a1
Merge branch 'dev' into release-candidate
skotopes Feb 16, 2022
afa46b0
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Feb 24, 2022
dc6da82
Merge branch 'dev' into release-candidate
skotopes Mar 17, 2022
c02d8be
Merge branch 'dev' into release-candidate
skotopes Mar 24, 2022
e1ff6da
Merge branch 'dev' into release-candidate
skotopes Mar 24, 2022
e74aa2d
Merge branch 'dev' into release-candidate
skotopes Mar 25, 2022
b29c0d3
Merge branch 'dev' into release-candidate
skotopes Mar 25, 2022
0d35596
Merge branch 'dev' into release-candidate
skotopes Mar 28, 2022
5c58faa
Merge branch 'dev' into release-candidate
skotopes Mar 31, 2022
625eb0a
Merge branch 'dev' into release-candidate
skotopes Apr 7, 2022
460f573
Merge branch 'dev' into release-candidate
skotopes Apr 14, 2022
bc77681
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Apr 15, 2022
5435679
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Apr 21, 2022
1ad81aa
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Apr 23, 2022
b501d47
Merge branch 'dev' into release-candidate
skotopes Apr 29, 2022
e64de44
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes May 11, 2022
f82484d
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes May 12, 2022
287defd
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes May 31, 2022
be4dec7
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jun 3, 2022
84cc381
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jun 10, 2022
ae95d75
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jun 13, 2022
e682e02
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jun 14, 2022
c5fd214
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jun 26, 2022
1edc74a
Merge branch 'dev' into release-candidate
skotopes Jun 28, 2022
cabed81
fbt: draft SDK generator for external apps
hedger Jul 6, 2022
1cfa794
fbt: reworked API headers processing from scons deps resolver to gcc …
hedger Jul 9, 2022
9c95aeb
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Jul 9, 2022
40e723c
fbt: api definition generation, v0
hedger Jul 9, 2022
2bfdf25
fbt: always rebuild assets
hedger Jul 9, 2022
83c44ce
loader: ported from 2021
hedger Jul 9, 2022
996b15e
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jul 10, 2022
162f05d
fbt: added initial API autoversioning
hedger Jul 11, 2022
c411c91
fbt: sdk symbol table generator from symbol cache
hedger Jul 12, 2022
4657228
SDK: filtered entries according to debug elf
hedger Jul 12, 2022
577a4ba
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jul 12, 2022
a7ed2d3
elf loader: wip; furi_hal: extern guards
hedger Jul 12, 2022
df92b62
scons: increase template depth
DrZlo13 Jul 12, 2022
4504106
toolbox: export api
DrZlo13 Jul 12, 2022
3ee4a69
one_wire: export api
DrZlo13 Jul 12, 2022
b4d268b
uCC: export api
DrZlo13 Jul 12, 2022
a7dbe5f
hmac: export api
DrZlo13 Jul 12, 2022
ef89960
Furi HAL CDC: make public, export api
DrZlo13 Jul 12, 2022
8333229
Furi core: export intrinsic api -_-
DrZlo13 Jul 12, 2022
4a45843
RPC: export api
DrZlo13 Jul 12, 2022
281982b
Notifications: export api
DrZlo13 Jul 12, 2022
f2875a7
Cli: export api
DrZlo13 Jul 12, 2022
728f829
Extapps fbt: force extapps build
DrZlo13 Jul 12, 2022
4507665
elf loader: debug logs, corrected jump to plugin
DrZlo13 Jul 12, 2022
2816344
GUI: export api; widgets module: refactoring
DrZlo13 Jul 12, 2022
efaf1c4
Plugin API: bump
DrZlo13 Jul 12, 2022
21b8998
Core: move intrinsic export to target-specific
DrZlo13 Jul 12, 2022
66bfead
Elf Loader: more logs, increase stack, dump all unresolved symbols to…
DrZlo13 Jul 12, 2022
7a9e0a3
fbt: fixed unmarked entries being treated as approved
hedger Jul 12, 2022
0012fc1
fbt: sdk & symbols generation cleanup and logic fixes
hedger Jul 13, 2022
37be0d9
elf_loader: cleanup; added support for launch from CLI
hedger Jul 13, 2022
2d4c99d
ELF loader: loading message screen
DrZlo13 Jul 13, 2022
4f3471e
ELF loader: loading animation and error message
DrZlo13 Jul 13, 2022
143daef
fbt: embedding .fzdata section with app meta
hedger Jul 13, 2022
809d795
Merge branch 'dev' into hedger/2627-apisdk
hedger Jul 13, 2022
07aed56
fbt: writing correct version to external elf binary
hedger Jul 13, 2022
d9cf554
fbt: moved api csv location to SDK_DEFINITION; added COMSTR for metad…
hedger Jul 13, 2022
b1a8ce4
elf_loader: plugin API level validation; storing plugin stack size fo…
hedger Jul 13, 2022
75b2c7d
extapps: removing ARM.attributes from output elf
hedger Jul 13, 2022
6ff2236
fbt: building debuggable elfs; removed separate strip call when build…
hedger Jul 14, 2022
240b0b3
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Jul 14, 2022
76b0f64
fbt: added `plugin_dist` target; made elfs debuggable by fixing linke…
hedger Jul 14, 2022
2109c37
fbt: embedding icon data to elfs, wip. Changed missing mainfest messa…
hedger Jul 15, 2022
32df674
plugins: changed extension to .fap; actually embedding app icon from …
hedger Jul 15, 2022
34142ee
elf_loader: changed metadata section name to .fapmeta
hedger Jul 15, 2022
c5a15db
elf loader: added hardware target to manifest
hedger Jul 15, 2022
4630ece
fbt: added external apps import validation
hedger Jul 15, 2022
c713f35
faploader: extended api set
hedger Jul 15, 2022
6266214
Merge branch 'dev' into hedger/2627-apisdk
hedger Jul 15, 2022
ff24f17
faploader: added subghz core to API
hedger Jul 16, 2022
d6e0d33
faploader: fixed handling of .bss sections
hedger Jul 16, 2022
d111f85
faploader: minor refactoring
hedger Jul 16, 2022
2a3b03a
faploader: split loader api to separate lib
hedger Jul 17, 2022
8c9cb29
faploader: load timing debug
hedger Jul 17, 2022
306679d
faploader: changed resolver callback to ElfApiInterface; improved app…
hedger Jul 17, 2022
bb4bb36
linter fix
hedger Jul 17, 2022
fc96e81
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Jul 17, 2022
3ff521c
faploader: fixed leaked view_dispatcher
hedger Jul 17, 2022
8f5f33a
faploader: not erroring out on no app choice
hedger Jul 17, 2022
d561f87
faploader: added api level check; fbt: embedding debug link to .fap b…
hedger Jul 17, 2022
b679b01
fbt: only handling source app code directory when looking for app man…
hedger Jul 19, 2022
0d25c76
faploader: print error codes
hedger Jul 19, 2022
4a848c4
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Jul 20, 2022
52434f7
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jul 26, 2022
e28446d
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jul 26, 2022
d6d37d1
Merge branch 'dev' into hedger/2627-apisdk
hedger Jul 27, 2022
86c9b00
Merge remote-tracking branch 'origin/dev' into release-candidate
skotopes Jul 28, 2022
f0ff9b9
Merge remote-tracking branch 'remotes/origin/release-candidate' into …
hedger Jul 29, 2022
435347c
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 1, 2022
513cfb8
sdk: updated to match dev
hedger Aug 1, 2022
f4cd4bd
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 2, 2022
6acfe78
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 4, 2022
9a8601b
Merge branch 'dev' into hedger/2627-apisdk
hedger Aug 4, 2022
df59e47
faploader: api updates
hedger Aug 9, 2022
7bbc742
lib: print: added sdk wrapper
hedger Aug 9, 2022
affd5c6
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 19, 2022
871a473
fbt: split fap validators to a separate build step; api table updates
hedger Aug 20, 2022
956285e
SmpsPrescalerTable table fix
hedger Aug 20, 2022
86963d9
faploader: text-based error messages
hedger Aug 20, 2022
abc454c
faploader: changed runtime debug info information format
hedger Aug 20, 2022
7a3ac67
faploader: spawning app thread without starting it; added method for …
hedger Aug 20, 2022
559ce90
faploader: fixed loading logic inconsistencies
hedger Aug 21, 2022
512ecb1
faploader: relocation cache
DrZlo13 Aug 22, 2022
05c91f2
faploader: debugging support wip
hedger Aug 22, 2022
56ea1cd
vscode: updated configuration to use gdb-py; cleanup of flipperapps.py
hedger Aug 23, 2022
87c4c3b
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 23, 2022
b339bad
faploader: API update for latest dev
hedger Aug 23, 2022
3567039
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 30, 2022
d28f4d0
fbt: fixed sdk versioning script; updated API
hedger Aug 30, 2022
8300657
fixed file permissions for widget_element.h
hedger Aug 30, 2022
d62f30d
apps: added icons to stock plugins; removed Manifest from repo
hedger Aug 30, 2022
ac01610
fbt: deploying .faps with resources; increased symbol resolver thread…
hedger Aug 30, 2022
127a2de
App icons in file browser
nminaylov Aug 31, 2022
fa8c2f1
gui: file browser: custom item name & icon support
hedger Aug 31, 2022
3f471e2
renamed elf_loader->fap_loader
hedger Aug 31, 2022
5e09f39
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Aug 31, 2022
c1ae4e5
fbt: fixed compile_commands.json generation for FAPs
hedger Sep 1, 2022
5453d86
scripts: added runfap.py
hedger Sep 1, 2022
166157d
fbt: run app on flipper from current source line in VSCode
hedger Sep 1, 2022
00a50bf
fbt: fixed external apps not being rebuilt on "launch app" action in …
hedger Sep 1, 2022
cb552b1
fbt: fixed launch_app breaking other targets; added ext app dependenc…
hedger Sep 1, 2022
d9d6d8f
faploader: minor code cleanup
hedger Sep 1, 2022
20314ba
faploader: more cleanup
hedger Sep 1, 2022
ab55622
Merge branch 'dev' into hedger/2627-apisdk
DrZlo13 Sep 2, 2022
c9852f7
Apps: separate manifest for lfrfid debug app
DrZlo13 Sep 2, 2022
bde1c37
Apps: separate manifest for bluetooth debug app
DrZlo13 Sep 2, 2022
612051c
faploader: decreased symbol resolver thread yield step
DrZlo13 Sep 2, 2022
91bce7b
faploader: api cleanup
DrZlo13 Sep 2, 2022
271c940
File Browser: redraw on every loaded item
DrZlo13 Sep 2, 2022
f54dce5
apploader: better error message
DrZlo13 Sep 2, 2022
a332e49
SubGHZ: fix no cli build
DrZlo13 Sep 2, 2022
b61295b
apploader: switch to loading screen before file dialog
DrZlo13 Sep 2, 2022
a406317
Merge branch 'dev' into hedger/2627-apisdk
skotopes Sep 3, 2022
96ff177
Merge branch 'dev' into hedger/2627-apisdk
skotopes Sep 3, 2022
97cbb88
Furi: update api symbols
skotopes Sep 3, 2022
13f9639
faploader: doxygen docs; docs: added .fam docs
hedger Sep 4, 2022
56b43af
clang-format: updated to full format declaration; changed template fo…
hedger Sep 4, 2022
9ce151a
docs: +AppsOnSDCard.md
hedger Sep 4, 2022
a94a608
typo fixes; linter fixes
hedger Sep 4, 2022
1a9c788
docs: added links from main README.md
hedger Sep 4, 2022
1c6d1cd
faploader: not using global app instance for file browser callback
hedger Sep 4, 2022
8b85bc0
faploader: typo fix
hedger Sep 4, 2022
2bae3f9
gui, api: remove dialog module
DrZlo13 Sep 5, 2022
40bc8be
fix buffer overflow in mifar ul load (#1697)
VVX7 Sep 5, 2022
fe718ec
Fix CI/CD in tags #1703
drunkbatya Sep 5, 2022
f2c3f78
[FL-2794] Lib: update LFS to v2.5.0, lower update free page limit (#1…
skotopes Sep 5, 2022
fefcb94
faploader: improved script for app debugging support, added crc32 val…
hedger Sep 6, 2022
ce567f2
faploader: more debug support script improvements
hedger Sep 6, 2022
37f2e9b
fbt, faploader: removed ARM intrinsics from symbol table; liking FAPs…
hedger Sep 6, 2022
b1a1fee
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Sep 6, 2022
42bb441
Merge branch 'dev' into hedger/2627-apisdk
skotopes Sep 8, 2022
27f174c
[FL-2753] RFID app port to plain C (#1710)
nminaylov Sep 8, 2022
806838f
Linter fixes
hedger Sep 12, 2022
8365c5d
Fixed bad merge
hedger Sep 12, 2022
1aa0c6b
Merge remote-tracking branch 'remotes/origin/dev' into hedger/2627-ap…
hedger Sep 12, 2022
40f6bc7
faploader: changed icon
hedger Sep 12, 2022
92479a0
apps: added icons by @Kowalski7cc for Snake game & BT remote; vscode …
hedger Sep 12, 2022
d506fde
fbt: added APPDIRS option for multiple app directory dirs; added `sou…
hedger Sep 12, 2022
4b540ca
include path fixes
hedger Sep 12, 2022
dd271c1
linter fix
hedger Sep 12, 2022
41ef55e
fbt: split applications dir into multiple specialized ones
hedger Sep 13, 2022
b3e0267
Furi: Nfc LL api. Picopass: move to ext apps.
skotopes Sep 13, 2022
c32d3be
docs: updates; bt_hid_app: icon update by @Kowalski7cc
hedger Sep 14, 2022
dc57106
Added README.md to applications_user folder; fixed vscode config
hedger Sep 14, 2022
e1d902e
loader: hidden Debug menu if there are none built with the firmware
hedger Sep 14, 2022
91fbed9
faploader: return to app menu after app termination
hedger Sep 14, 2022
5d6aa36
faploader: restore selected app menu entry on exiting application
hedger Sep 14, 2022
8c0d03a
fbt, scripts: support for fap_category field in app manifest; updated…
hedger Sep 14, 2022
fae213a
fbt: added DEBUG_TOOLS commandline flag to enable building debug apps…
hedger Sep 14, 2022
f6ee33b
fbt: removing apps with SD card resources manifest on `fbt -c assets`…
hedger Sep 14, 2022
2e2398d
faploader: renamed to Applications, fbt: moved extapps.scons to site_…
hedger Sep 14, 2022
1c1d3df
scripts: runfap.py fixes for pathing & renamed loader
hedger Sep 14, 2022
dd86c6e
debug: fixed app debug elf lookup path
hedger Sep 14, 2022
9f9461c
fbt: replaced Exceptions with UserErrors for better UX
hedger Sep 14, 2022
050e733
fbt: exception type fix for blackmagic.py
hedger Sep 14, 2022
75b01db
docs: extra info on debugging FAPs
hedger Sep 14, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
151 changes: 128 additions & 23 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,86 +1,191 @@
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignArrayOfStructures: None
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Left
AlignOperands: true
AlignOperands: Align
AlignTrailingComments: false
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: true
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: WithoutElse
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- __capability
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeComma
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 99
ColumnLimit: 99
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: false

IncludeBlocks: Preserve
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '.*'
Priority: 1
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: false
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentWidth: 4
IndentExternBlock: AfterExternBlock
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true

# Taken from git's rules
PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 10
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 100
PenaltyReturnTypeOnItsOwnLine: 60

PenaltyIndentedWhitespace: 0
PointerAlignment: Left
ReflowComments: false
SortIncludes: false
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: false
RemoveBracesLLVM: false
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: Never
SortJavaStaticImport: Before
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: Never
SpaceBeforeParensOptions:
AfterControlStatements: false
AfterForeachMacros: false
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: false
AfterOverloadedOperator: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp03
TabWidth: 4
UseTab: Never
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: c++03
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...

3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@
[submodule "lib/mbedtls"]
path = lib/mbedtls
url = https://github.com/Mbed-TLS/mbedtls.git
[submodule "lib/cxxheaderparser"]
path = lib/cxxheaderparser
url = https://github.com/robotpy/cxxheaderparser.git
13 changes: 10 additions & 3 deletions .vscode/example/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@
],
"postAttachCommands": [
// "attach 1",
"compare-sections",
// "compare-sections",
"source debug/flipperapps.py",
// "source debug/FreeRTOS/FreeRTOS.py",
// "svd_load debug/STM32WB55_CM4.svd"
]
// "showDevDebugOutput": "raw",
},
Expand All @@ -50,7 +53,8 @@
"attach 1",
"set confirm off",
"set mem inaccessible-by-default off",
"compare-sections",
"source debug/flipperapps.py",
// "compare-sections",
]
// "showDevDebugOutput": "raw",
},
Expand All @@ -65,6 +69,9 @@
"device": "STM32WB55RG",
"svdFile": "./debug/STM32WB55_CM4.svd",
"rtos": "FreeRTOS",
"postAttachCommands": [
"source debug/flipperapps.py",
]
// "showDevDebugOutput": "raw",
},
{
Expand All @@ -73,7 +80,7 @@
"request": "launch",
"program": "./lib/scons/scripts/scons.py",
"args": [
"sdk"
"plugin_dist"
]
},
{
Expand Down
3 changes: 3 additions & 0 deletions .vscode/example/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
"cortex-debug.openocdPath.windows": "${workspaceFolder}/toolchain/i686-windows/openocd/bin/openocd.exe",
"cortex-debug.openocdPath.linux": "${workspaceFolder}/toolchain/x86_64-linux/openocd/bin/openocd",
"cortex-debug.openocdPath.osx": "${workspaceFolder}/toolchain/x86_64-darwin/openocd/bin/openocd",
"cortex-debug.gdbPath.windows": "${workspaceFolder}/toolchain/i686-windows/bin/arm-none-eabi-gdb-py.bat",
"cortex-debug.gdbPath.linux": "${workspaceFolder}/toolchain/x86_64-linux/bin/arm-none-eabi-gdb-py",
"cortex-debug.gdbPath.osx": "${workspaceFolder}/toolchain/x86_64-darwin/bin/arm-none-eabi-gdb",
"editor.formatOnSave": true,
"files.associations": {
"*.scons": "python",
Expand Down
30 changes: 30 additions & 0 deletions .vscode/example/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,41 @@
"type": "shell",
"command": "./fbt FIRMWARE_APP_SET=unit_tests FORCE=1 flash_usb"
},
{
"label": "[Debug] Flash (USB, with resources)",
"group": "build",
"type": "shell",
"command": "./fbt FORCE=1 flash_usb_full"
},
{
"label": "[Release] Flash (USB, with resources)",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash_usb_full"
},
{
"label": "[Debug] Build FAPs",
"group": "build",
"type": "shell",
"command": "./fbt plugin_dist"
},
{
"label": "[Release] Build FAPs",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 plugin_dist"
},
{
"label": "[Debug] Launch App on Flipper",
"group": "build",
"type": "shell",
"command": "./fbt launch_app APPSRC=${relativeFileDirname}"
},
{
"label": "[Release] Launch App on Flipper",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 launch_app APPSRC=${relativeFileDirname}"
}
]
}
4 changes: 4 additions & 0 deletions ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ You should clone with
$ git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git
```

# Read the Docs

Check out details on [how to build firmware](documentation/fbt.md), [write applications](documentation/AppsOnSDCard.md), [un-brick your device](documentation/KeyCombo.md) and more in `documentation` folder.

# Update firmware

[Get Latest Firmware from Update Server](https://update.flipperzero.one/)
Expand Down
28 changes: 26 additions & 2 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
import os
import subprocess

DefaultEnvironment(tools=[])

EnsurePythonVersion(3, 8)

DefaultEnvironment(tools=[])
# Progress(["OwO\r", "owo\r", "uwu\r", "owo\r"], interval=15)


Expand Down Expand Up @@ -58,6 +59,8 @@ distenv = coreenv.Clone(
"-ex",
"source debug/FreeRTOS/FreeRTOS.py",
"-ex",
"source debug/flipperapps.py",
"-ex",
"source debug/PyCortexMDebug/PyCortexMDebug.py",
"-ex",
"svd_load ${SVD_FILE}",
Expand Down Expand Up @@ -160,6 +163,28 @@ if GetOption("fullenv") or any(
basic_dist = distenv.DistCommand("fw_dist", distenv["DIST_DEPENDS"])
distenv.Default(basic_dist)

dist_dir = distenv.GetProjetDirName()
plugin_dist = [
distenv.Install(
f"#/dist/{dist_dir}/apps/debug_elf",
firmware_env["FW_EXTAPPS"]["debug"].values(),
),
*(
distenv.Install(f"#/dist/{dist_dir}/apps/{dist_entry[0]}", dist_entry[1])
for dist_entry in firmware_env["FW_EXTAPPS"]["dist"].values()
),
]
Depends(plugin_dist, firmware_env["FW_EXTAPPS"]["validators"].values())
Alias("plugin_dist", plugin_dist)
# distenv.Default(plugin_dist)

plugin_resources_dist = list(
distenv.Install(f"#/assets/resources/apps/{dist_entry[0]}", dist_entry[1])
for dist_entry in firmware_env["FW_EXTAPPS"]["dist"].values()
)
distenv.Depends(firmware_env["FW_RESOURCES"], plugin_resources_dist)


# Target for bundling core2 package for qFlipper
copro_dist = distenv.CoproBuilder(
distenv.Dir("assets/core2_firmware"),
Expand Down Expand Up @@ -240,7 +265,6 @@ firmware_env.Append(
"site_scons",
"scripts",
# Extra files
"applications/extapps.scons",
"SConstruct",
"firmware.scons",
"fbt_options.py",
Expand Down
Loading