Skip to content

Commit

Permalink
Squashed 'applications/external/' changes from 5dc4104f0c6..0283eaee669
Browse files Browse the repository at this point in the history
0283eaee669 Format
4dc9e472384 Merge pull request #8 from leedave/feature/cross_remote
3074e48081b Add cross_remote from https://github.com/leedave/flipper-zero-cross-remote
01eb2c1 Merge pull request #16 from leedave/feature/fix_0.100.3
642afe4 Fix for crash on exit in 0.100.3
4d4962f Merge pull request #14 from leedave/feature/subghz_encoded
7f17cb6 ufbt format
925d739 Update Readmes, added version to info screen
34a5851 Settings & Storage for SubGhz Timing
6cf5fb9 Encoded Subghz works with standard 500ms setup
8520f4c Merge pull request #12 from leedave/feature/catalog_sdk_upd
8fc794f ufbt format
3087d4b Fixed initial crash after creation of chain with Subghz element
2b2adc2 Merge pull request #11 from leedave/feature/catalog_sdk_upd
99ae845 Changed subghz_protocol_registry source
09de2e5 Changed subghz_protocol_registry source
3a3a767 Changed subghz_protocol_registry source
5c100bf Changed subghz_protocol_registry source
bb92af0 sdk headers test 3
c2b122a sdk headers test 2
c24026f Update to help build detect icons that were already there instead of using from Firmware
d92d744 sdk headers test 1
275accc ufbt format
47aea2c Merge pull request #9 from leedave/feature/ir_ind_timer
d5256ed Added IR Timing feature
2383b0f Added int keyboard
dd546b5 UI Menu to set IR Time
ff25784 Merge pull request #8 from leedave/feature/subghz_like_meal_pager
32041e2 Linting
b64e36d Fixed bug where crash occurs after deleting an item
14db43d Stabilized save and run, still a crash left after deleting items
28bbaaa Removed not needed settings Sound/Haptic
06608e8 Does what everything it should, but still crashes a lot
644227f Callback after subghz. Waiting still not correct
97c98a8 First time IR and SG work together, but still very unstable
098497c Included library for Subghz signal
f8b524d Aligned format for IR and pause timing
cdeb124 Fixes for new timer in IR commands
a523e11 New save format
36c07d0 RAM fix for SG remote
76ecb27 Cleared out old SubGhz module
cb639c1 refactor cross remote item methods
bc56826 refactor xremote_cross_remote methods, fixed RAM leak
56d7a9d Storage of subghz filename
abcfdf3 Restored SG animation
8bdfcaa reactivating subghz menu (no actions yet)
bb5e131 Merge pull request #6 from leedave/feature/ir_timing
d760cb5 Fix for mem leak
b7c9e37 Merge pull request #4 from leedave/feature/ir_timing
3a1bba7 bumped version
f896686 Merge pull request #2 from leedave/feature/ir_timing
12cd62d Added IR Timing Feature
ae626bd Version Bump
5eb59ec Updated changelog
6fbd30c removed builds
c6f71ae CLANG Formatting
83d453a Moved to new repo, updated for compatibility to 0.95.0-RC

git-subtree-dir: applications/external
git-subtree-split: 0283eaee669ce171ffad820b5ea1bbab4d87abb9
  • Loading branch information
RogueMaster committed May 13, 2024
1 parent 99f74f5 commit 401e8a0
Show file tree
Hide file tree
Showing 87 changed files with 6,063 additions and 0 deletions.
191 changes: 191 additions & 0 deletions cross_remote/.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: None
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: false
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: WithoutElse
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 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
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: false
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: false
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentExternBlock: AfterExternBlock
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 10
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 100
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
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: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
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
...

1 change: 1 addition & 0 deletions cross_remote/.gitsubtree
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://github.com/leedave/flipper-zero-cross-remote main /
56 changes: 56 additions & 0 deletions cross_remote/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Flipper Zero Cross Remote

## Current State
- Infrared working
- SubGhz working
- Pause working
- IR Timing features working

## What this is?
This app combines commands used in IR and SubGhz into playlists that can be run with one click
<br><br>

### What good is this?
Imagine you want to sit down and watch a movie after a long days work. <br>
Your probably do something like the following<br>
- Turn on your TV with the IR TV remote<br>
- Turn on your Bluray player with the Blueray IR remote<br>
- Turn on your surround sound with the speaker IR remote<br>
- Turn on your ceiling fan using a subGhz remote<br>
- Turn on your AC using another remote<br>
- etc<br>
<br>
Wouldn't it be nicer to simply click one button and let everything happen? This is what this app wants to do. <br>

### Features
- Select commands from saved subGhz transmissions
- Select commands registered with the IR App (choose from the created remote buttons)<br>
- Chain these commands using an easy UI<br>
- Save chained commands to a file<br>
- Add pauses, becaue target systems are not always fast enough for multiple commands<br>
- Run file containing chained IR & SubGhz commands<br>

### Settings
- LED FX, allow the LED to blink
- Save settings, stores a file with your settings in it on exit
- IR time ms, the default duration of an IR signal transmission. Individual times can be set
- SubG. time ms, the default duration of a SubGhz signal. Only needed for Encoded signals, RAW files play until finished

### Limitations
SubGhz commands will stop working if you move/rename/delete the original files on your Flipper. This is because of how the Flippers SubGhz worker expects data.

After an upgrade a crash on exit can occur, due to small improvements to the file formats. Sorry about that, it only happens once.

## How to install on Flipper Zero
- If you do not have one, download a firmware<br>
- Plug your Flipper Zero in via USB. <br>
- Copy the contents of this folder into the applications_user folder of your firmware. <br>

Then run the command:
```
.\fbt launch_app APPSRC=applications_user/xremote
```
The application will be compiled and copied onto your device.

## Licensing
This code is open-source and may be used for whatever you want to do with it.
14 changes: 14 additions & 0 deletions cross_remote/application.fam
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
App(
appid="xremote",
name="Cross Remote",
apptype=FlipperAppType.EXTERNAL,
entry_point="xremote_app",
stack_size=3 * 1024,
fap_icon="icons/xremote_10px.png",
fap_icon_assets="icons",
fap_version="2.5",
fap_category="Infrared",
fap_author="Leedave",
fap_description="One-Click, sends multiple commands",
fap_weburl="https://github.com/leedave/flipper-zero-cross-remote",
)
22 changes: 22 additions & 0 deletions cross_remote/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Cross Remote

This app combines your IR and SubGhz commands into a playlist that can be run with one click. Pauses can be set inbetween, as IR/SubGhz devices typically are not so fast.

## Features
- Read out commands you recorded in the IR app
- Read out commands you saved as .sub files
- Combine commands to a chain/playlist
- Add pauses inbetween commands
- Save your command chain / playlist to flipper
- Disable LED effects if not wanted
- Configure duration of IR Signals
- Configure default duration of Encoded SubGhz Signals

## What good is this?

Example what you command chain (playlist) could do with one click
- Turn on your TV with the IR TV remote
- Turn on your Bluray player with the Blueray IR remote
- Turn on your surround sound with the speaker IR remote
- Turn on your ceiling fan using a subGhz remote
- Turn on your AC using another remote
45 changes: 45 additions & 0 deletions cross_remote/docs/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
## 2.5
- Back button on info screen now reacts the same as ok button
- Fixed crash on exit in fw 0.100.3

## 2.4
- Added support for encoded SubGhz files
- Added timer for SubGhz transmission (not needed in RAW files)
- Added version number to app info screen
- Minor updates/instrutions in readme.md

## 2.3
- Fixed Crash after creating chains with SubGhz Items

## 2.2
- Fixed incompatibility to Flipper-catalog / uFBT compiler

## v2.1
- Added ability to individually set IR Signal time

## v2.0
- SubGhz Functionality added
- Slight change in Storage format to enalbe individual IR timings later (feature request)
- Fixed more memory leaks
- Fixed error where Flipper crashes after deleting a command chain
- Updated Manifest for better CFW support
- Updated readme for new inputs

## v1.1
- Patched memory leak in storage

## v1.0
- Added option to change IR Signal Timing

## v0.9

- New Repository for App
- Removed Loading animation for compatibility to API 0.95.0
- Fixed issue with redundant header

## v0.8

First release to Application Catalog
- IR Feature Working
- Pause Features Working
- Added warning for block missing SubGhz Features
Loading

0 comments on commit 401e8a0

Please sign in to comment.