Compare commits
No commits in common. 'a301283c267586ea5cb9e81ffc48965a02904bb3' and 'f0828693ba0b1b6c60ea272a574d6045eebf92a5' have entirely different histories.
a301283c26
...
f0828693ba
460 changed files with 161 additions and 138633 deletions
@ -1,3 +0,0 @@ |
|||||||
eclipse.preferences.version=1 |
|
||||||
svd_custom_file_path= |
|
||||||
svd_file_path=platform\:/plugin/com.st.stm32cube.ide.mcu.productdb.debug/resources/cmsis/STMicroelectronics_CMSIS_SVD/STM32L496.svd |
|
@ -1,74 +0,0 @@ |
|||||||
com.st.stm32cube.ide.mcu.ide.oss.source.checker.libnano.problem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Float formatting support\\")"} |
|
||||||
eclipse.preferences.version=1 |
|
||||||
org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} |
|
||||||
org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} |
|
||||||
org.eclipse.cdt.codan.checkers.localvarreturn=-Warning |
|
||||||
org.eclipse.cdt.codan.checkers.localvarreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Returning the address of a local variable\\")"} |
|
||||||
org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} |
|
||||||
org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} |
|
||||||
org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.BlacklistProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.BlacklistProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function or method is blacklisted\\")",blacklist\=>()} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"C-Style cast instead of C++ cast\\")",checkMacro\=>true} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CopyrightProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.CopyrightProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Lack of copyright information\\")",regex\=>".*Copyright.*"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Direct float comparison\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Goto statement used\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Avoid magic numbers\\")",checkArray\=>true,checkOperatorParen\=>true,exceptions\=>(1,0,-1,2,1.0,0.0,-1.0)} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissCaseProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissCaseProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing cases in switch\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing default in switch\\")",defaultWithAllEnums\=>false} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing reference return value in assignment operator\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing self check in assignment operator\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MultipleDeclarationsProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.MultipleDeclarationsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Multiple variable declaration\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.NoDiscardProblem=Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.NoDiscardProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return value not evaluated\\")",macro\=>true} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Miss copy constructor or assignment operator\\")",onlynew\=>false} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.StaticVariableInHeaderProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.StaticVariableInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Static variable in header file\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol shadowing\\")",paramFuncParameters\=>true} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem=-Warning |
|
||||||
org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Using directive in header\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} |
|
||||||
org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem=-Error |
|
||||||
org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Virtual method call in constructor/destructor\\")"} |
|
@ -1,6 +0,0 @@ |
|||||||
doxygen/doxygen_new_line_after_brief=true |
|
||||||
doxygen/doxygen_use_brief_tag=false |
|
||||||
doxygen/doxygen_use_javadoc_tags=true |
|
||||||
doxygen/doxygen_use_pre_tag=false |
|
||||||
doxygen/doxygen_use_structural_commands=false |
|
||||||
eclipse.preferences.version=1 |
|
@ -1,2 +0,0 @@ |
|||||||
eclipse.preferences.version=1 |
|
||||||
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false |
|
@ -1,48 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/core/alloc.cpp \ |
|
||||||
../Middlewares/eez/core/debug.cpp \ |
|
||||||
../Middlewares/eez/core/eeprom.cpp \ |
|
||||||
../Middlewares/eez/core/hmi.cpp \ |
|
||||||
../Middlewares/eez/core/memory.cpp \ |
|
||||||
../Middlewares/eez/core/os.cpp \ |
|
||||||
../Middlewares/eez/core/unit.cpp \ |
|
||||||
../Middlewares/eez/core/util.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/core/alloc.o \ |
|
||||||
./Middlewares/eez/core/debug.o \ |
|
||||||
./Middlewares/eez/core/eeprom.o \ |
|
||||||
./Middlewares/eez/core/hmi.o \ |
|
||||||
./Middlewares/eez/core/memory.o \ |
|
||||||
./Middlewares/eez/core/os.o \ |
|
||||||
./Middlewares/eez/core/unit.o \ |
|
||||||
./Middlewares/eez/core/util.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/core/alloc.d \ |
|
||||||
./Middlewares/eez/core/debug.d \ |
|
||||||
./Middlewares/eez/core/eeprom.d \ |
|
||||||
./Middlewares/eez/core/hmi.d \ |
|
||||||
./Middlewares/eez/core/memory.d \ |
|
||||||
./Middlewares/eez/core/os.d \ |
|
||||||
./Middlewares/eez/core/unit.d \ |
|
||||||
./Middlewares/eez/core/util.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/core/%.o Middlewares/eez/core/%.su: ../Middlewares/eez/core/%.cpp Middlewares/eez/core/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-core |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-core: |
|
||||||
-$(RM) ./Middlewares/eez/core/alloc.d ./Middlewares/eez/core/alloc.o ./Middlewares/eez/core/alloc.su ./Middlewares/eez/core/debug.d ./Middlewares/eez/core/debug.o ./Middlewares/eez/core/debug.su ./Middlewares/eez/core/eeprom.d ./Middlewares/eez/core/eeprom.o ./Middlewares/eez/core/eeprom.su ./Middlewares/eez/core/hmi.d ./Middlewares/eez/core/hmi.o ./Middlewares/eez/core/hmi.su ./Middlewares/eez/core/memory.d ./Middlewares/eez/core/memory.o ./Middlewares/eez/core/memory.su ./Middlewares/eez/core/os.d ./Middlewares/eez/core/os.o ./Middlewares/eez/core/os.su ./Middlewares/eez/core/unit.d ./Middlewares/eez/core/unit.o ./Middlewares/eez/core/unit.su ./Middlewares/eez/core/util.d ./Middlewares/eez/core/util.o ./Middlewares/eez/core/util.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-core |
|
||||||
|
|
@ -1,111 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/flow/components/animate.cpp \ |
|
||||||
../Middlewares/eez/flow/components/call_action.cpp \ |
|
||||||
../Middlewares/eez/flow/components/catch_error.cpp \ |
|
||||||
../Middlewares/eez/flow/components/compare.cpp \ |
|
||||||
../Middlewares/eez/flow/components/constant.cpp \ |
|
||||||
../Middlewares/eez/flow/components/counter.cpp \ |
|
||||||
../Middlewares/eez/flow/components/delay.cpp \ |
|
||||||
../Middlewares/eez/flow/components/end.cpp \ |
|
||||||
../Middlewares/eez/flow/components/error.cpp \ |
|
||||||
../Middlewares/eez/flow/components/expr_eval.cpp \ |
|
||||||
../Middlewares/eez/flow/components/input.cpp \ |
|
||||||
../Middlewares/eez/flow/components/is_true.cpp \ |
|
||||||
../Middlewares/eez/flow/components/layout_view_widget.cpp \ |
|
||||||
../Middlewares/eez/flow/components/log.cpp \ |
|
||||||
../Middlewares/eez/flow/components/loop.cpp \ |
|
||||||
../Middlewares/eez/flow/components/noop.cpp \ |
|
||||||
../Middlewares/eez/flow/components/on_event.cpp \ |
|
||||||
../Middlewares/eez/flow/components/output.cpp \ |
|
||||||
../Middlewares/eez/flow/components/roller_widget.cpp \ |
|
||||||
../Middlewares/eez/flow/components/select_language.cpp \ |
|
||||||
../Middlewares/eez/flow/components/set_page_direction.cpp \ |
|
||||||
../Middlewares/eez/flow/components/set_variable.cpp \ |
|
||||||
../Middlewares/eez/flow/components/show_keyboard.cpp \ |
|
||||||
../Middlewares/eez/flow/components/show_keypad.cpp \ |
|
||||||
../Middlewares/eez/flow/components/show_message_box.cpp \ |
|
||||||
../Middlewares/eez/flow/components/show_page.cpp \ |
|
||||||
../Middlewares/eez/flow/components/start.cpp \ |
|
||||||
../Middlewares/eez/flow/components/switch.cpp \ |
|
||||||
../Middlewares/eez/flow/components/watch_variable.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/flow/components/animate.o \ |
|
||||||
./Middlewares/eez/flow/components/call_action.o \ |
|
||||||
./Middlewares/eez/flow/components/catch_error.o \ |
|
||||||
./Middlewares/eez/flow/components/compare.o \ |
|
||||||
./Middlewares/eez/flow/components/constant.o \ |
|
||||||
./Middlewares/eez/flow/components/counter.o \ |
|
||||||
./Middlewares/eez/flow/components/delay.o \ |
|
||||||
./Middlewares/eez/flow/components/end.o \ |
|
||||||
./Middlewares/eez/flow/components/error.o \ |
|
||||||
./Middlewares/eez/flow/components/expr_eval.o \ |
|
||||||
./Middlewares/eez/flow/components/input.o \ |
|
||||||
./Middlewares/eez/flow/components/is_true.o \ |
|
||||||
./Middlewares/eez/flow/components/layout_view_widget.o \ |
|
||||||
./Middlewares/eez/flow/components/log.o \ |
|
||||||
./Middlewares/eez/flow/components/loop.o \ |
|
||||||
./Middlewares/eez/flow/components/noop.o \ |
|
||||||
./Middlewares/eez/flow/components/on_event.o \ |
|
||||||
./Middlewares/eez/flow/components/output.o \ |
|
||||||
./Middlewares/eez/flow/components/roller_widget.o \ |
|
||||||
./Middlewares/eez/flow/components/select_language.o \ |
|
||||||
./Middlewares/eez/flow/components/set_page_direction.o \ |
|
||||||
./Middlewares/eez/flow/components/set_variable.o \ |
|
||||||
./Middlewares/eez/flow/components/show_keyboard.o \ |
|
||||||
./Middlewares/eez/flow/components/show_keypad.o \ |
|
||||||
./Middlewares/eez/flow/components/show_message_box.o \ |
|
||||||
./Middlewares/eez/flow/components/show_page.o \ |
|
||||||
./Middlewares/eez/flow/components/start.o \ |
|
||||||
./Middlewares/eez/flow/components/switch.o \ |
|
||||||
./Middlewares/eez/flow/components/watch_variable.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/flow/components/animate.d \ |
|
||||||
./Middlewares/eez/flow/components/call_action.d \ |
|
||||||
./Middlewares/eez/flow/components/catch_error.d \ |
|
||||||
./Middlewares/eez/flow/components/compare.d \ |
|
||||||
./Middlewares/eez/flow/components/constant.d \ |
|
||||||
./Middlewares/eez/flow/components/counter.d \ |
|
||||||
./Middlewares/eez/flow/components/delay.d \ |
|
||||||
./Middlewares/eez/flow/components/end.d \ |
|
||||||
./Middlewares/eez/flow/components/error.d \ |
|
||||||
./Middlewares/eez/flow/components/expr_eval.d \ |
|
||||||
./Middlewares/eez/flow/components/input.d \ |
|
||||||
./Middlewares/eez/flow/components/is_true.d \ |
|
||||||
./Middlewares/eez/flow/components/layout_view_widget.d \ |
|
||||||
./Middlewares/eez/flow/components/log.d \ |
|
||||||
./Middlewares/eez/flow/components/loop.d \ |
|
||||||
./Middlewares/eez/flow/components/noop.d \ |
|
||||||
./Middlewares/eez/flow/components/on_event.d \ |
|
||||||
./Middlewares/eez/flow/components/output.d \ |
|
||||||
./Middlewares/eez/flow/components/roller_widget.d \ |
|
||||||
./Middlewares/eez/flow/components/select_language.d \ |
|
||||||
./Middlewares/eez/flow/components/set_page_direction.d \ |
|
||||||
./Middlewares/eez/flow/components/set_variable.d \ |
|
||||||
./Middlewares/eez/flow/components/show_keyboard.d \ |
|
||||||
./Middlewares/eez/flow/components/show_keypad.d \ |
|
||||||
./Middlewares/eez/flow/components/show_message_box.d \ |
|
||||||
./Middlewares/eez/flow/components/show_page.d \ |
|
||||||
./Middlewares/eez/flow/components/start.d \ |
|
||||||
./Middlewares/eez/flow/components/switch.d \ |
|
||||||
./Middlewares/eez/flow/components/watch_variable.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/flow/components/%.o Middlewares/eez/flow/components/%.su: ../Middlewares/eez/flow/components/%.cpp Middlewares/eez/flow/components/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-flow-2f-components |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-flow-2f-components: |
|
||||||
-$(RM) ./Middlewares/eez/flow/components/animate.d ./Middlewares/eez/flow/components/animate.o ./Middlewares/eez/flow/components/animate.su ./Middlewares/eez/flow/components/call_action.d ./Middlewares/eez/flow/components/call_action.o ./Middlewares/eez/flow/components/call_action.su ./Middlewares/eez/flow/components/catch_error.d ./Middlewares/eez/flow/components/catch_error.o ./Middlewares/eez/flow/components/catch_error.su ./Middlewares/eez/flow/components/compare.d ./Middlewares/eez/flow/components/compare.o ./Middlewares/eez/flow/components/compare.su ./Middlewares/eez/flow/components/constant.d ./Middlewares/eez/flow/components/constant.o ./Middlewares/eez/flow/components/constant.su ./Middlewares/eez/flow/components/counter.d ./Middlewares/eez/flow/components/counter.o ./Middlewares/eez/flow/components/counter.su ./Middlewares/eez/flow/components/delay.d ./Middlewares/eez/flow/components/delay.o ./Middlewares/eez/flow/components/delay.su ./Middlewares/eez/flow/components/end.d ./Middlewares/eez/flow/components/end.o ./Middlewares/eez/flow/components/end.su ./Middlewares/eez/flow/components/error.d ./Middlewares/eez/flow/components/error.o ./Middlewares/eez/flow/components/error.su ./Middlewares/eez/flow/components/expr_eval.d ./Middlewares/eez/flow/components/expr_eval.o ./Middlewares/eez/flow/components/expr_eval.su ./Middlewares/eez/flow/components/input.d ./Middlewares/eez/flow/components/input.o ./Middlewares/eez/flow/components/input.su ./Middlewares/eez/flow/components/is_true.d ./Middlewares/eez/flow/components/is_true.o ./Middlewares/eez/flow/components/is_true.su ./Middlewares/eez/flow/components/layout_view_widget.d ./Middlewares/eez/flow/components/layout_view_widget.o ./Middlewares/eez/flow/components/layout_view_widget.su ./Middlewares/eez/flow/components/log.d ./Middlewares/eez/flow/components/log.o ./Middlewares/eez/flow/components/log.su ./Middlewares/eez/flow/components/loop.d ./Middlewares/eez/flow/components/loop.o ./Middlewares/eez/flow/components/loop.su ./Middlewares/eez/flow/components/noop.d ./Middlewares/eez/flow/components/noop.o ./Middlewares/eez/flow/components/noop.su ./Middlewares/eez/flow/components/on_event.d ./Middlewares/eez/flow/components/on_event.o ./Middlewares/eez/flow/components/on_event.su ./Middlewares/eez/flow/components/output.d ./Middlewares/eez/flow/components/output.o ./Middlewares/eez/flow/components/output.su ./Middlewares/eez/flow/components/roller_widget.d ./Middlewares/eez/flow/components/roller_widget.o ./Middlewares/eez/flow/components/roller_widget.su ./Middlewares/eez/flow/components/select_language.d ./Middlewares/eez/flow/components/select_language.o ./Middlewares/eez/flow/components/select_language.su ./Middlewares/eez/flow/components/set_page_direction.d ./Middlewares/eez/flow/components/set_page_direction.o ./Middlewares/eez/flow/components/set_page_direction.su ./Middlewares/eez/flow/components/set_variable.d ./Middlewares/eez/flow/components/set_variable.o ./Middlewares/eez/flow/components/set_variable.su ./Middlewares/eez/flow/components/show_keyboard.d ./Middlewares/eez/flow/components/show_keyboard.o ./Middlewares/eez/flow/components/show_keyboard.su ./Middlewares/eez/flow/components/show_keypad.d ./Middlewares/eez/flow/components/show_keypad.o ./Middlewares/eez/flow/components/show_keypad.su ./Middlewares/eez/flow/components/show_message_box.d ./Middlewares/eez/flow/components/show_message_box.o ./Middlewares/eez/flow/components/show_message_box.su ./Middlewares/eez/flow/components/show_page.d ./Middlewares/eez/flow/components/show_page.o ./Middlewares/eez/flow/components/show_page.su ./Middlewares/eez/flow/components/start.d ./Middlewares/eez/flow/components/start.o ./Middlewares/eez/flow/components/start.su ./Middlewares/eez/flow/components/switch.d ./Middlewares/eez/flow/components/switch.o ./Middlewares/eez/flow/components/switch.su ./Middlewares/eez/flow/components/watch_variable.d ./Middlewares/eez/flow/components/watch_variable.o ./Middlewares/eez/flow/components/watch_variable.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-flow-2f-components |
|
||||||
|
|
@ -1,51 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/flow/components.cpp \ |
|
||||||
../Middlewares/eez/flow/dashboard_api.cpp \ |
|
||||||
../Middlewares/eez/flow/debugger.cpp \ |
|
||||||
../Middlewares/eez/flow/expression.cpp \ |
|
||||||
../Middlewares/eez/flow/flow.cpp \ |
|
||||||
../Middlewares/eez/flow/hooks.cpp \ |
|
||||||
../Middlewares/eez/flow/operations.cpp \ |
|
||||||
../Middlewares/eez/flow/private.cpp \ |
|
||||||
../Middlewares/eez/flow/queue.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/flow/components.o \ |
|
||||||
./Middlewares/eez/flow/dashboard_api.o \ |
|
||||||
./Middlewares/eez/flow/debugger.o \ |
|
||||||
./Middlewares/eez/flow/expression.o \ |
|
||||||
./Middlewares/eez/flow/flow.o \ |
|
||||||
./Middlewares/eez/flow/hooks.o \ |
|
||||||
./Middlewares/eez/flow/operations.o \ |
|
||||||
./Middlewares/eez/flow/private.o \ |
|
||||||
./Middlewares/eez/flow/queue.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/flow/components.d \ |
|
||||||
./Middlewares/eez/flow/dashboard_api.d \ |
|
||||||
./Middlewares/eez/flow/debugger.d \ |
|
||||||
./Middlewares/eez/flow/expression.d \ |
|
||||||
./Middlewares/eez/flow/flow.d \ |
|
||||||
./Middlewares/eez/flow/hooks.d \ |
|
||||||
./Middlewares/eez/flow/operations.d \ |
|
||||||
./Middlewares/eez/flow/private.d \ |
|
||||||
./Middlewares/eez/flow/queue.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/flow/%.o Middlewares/eez/flow/%.su: ../Middlewares/eez/flow/%.cpp Middlewares/eez/flow/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-flow |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-flow: |
|
||||||
-$(RM) ./Middlewares/eez/flow/components.d ./Middlewares/eez/flow/components.o ./Middlewares/eez/flow/components.su ./Middlewares/eez/flow/dashboard_api.d ./Middlewares/eez/flow/dashboard_api.o ./Middlewares/eez/flow/dashboard_api.su ./Middlewares/eez/flow/debugger.d ./Middlewares/eez/flow/debugger.o ./Middlewares/eez/flow/debugger.su ./Middlewares/eez/flow/expression.d ./Middlewares/eez/flow/expression.o ./Middlewares/eez/flow/expression.su ./Middlewares/eez/flow/flow.d ./Middlewares/eez/flow/flow.o ./Middlewares/eez/flow/flow.su ./Middlewares/eez/flow/hooks.d ./Middlewares/eez/flow/hooks.o ./Middlewares/eez/flow/hooks.su ./Middlewares/eez/flow/operations.d ./Middlewares/eez/flow/operations.o ./Middlewares/eez/flow/operations.su ./Middlewares/eez/flow/private.d ./Middlewares/eez/flow/private.o ./Middlewares/eez/flow/private.su ./Middlewares/eez/flow/queue.d ./Middlewares/eez/flow/queue.o ./Middlewares/eez/flow/queue.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-flow |
|
||||||
|
|
@ -1,27 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/fs/simulator/fs.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/fs/simulator/fs.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/fs/simulator/fs.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/fs/simulator/%.o Middlewares/eez/fs/simulator/%.su: ../Middlewares/eez/fs/simulator/%.cpp Middlewares/eez/fs/simulator/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-fs-2f-simulator |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-fs-2f-simulator: |
|
||||||
-$(RM) ./Middlewares/eez/fs/simulator/fs.d ./Middlewares/eez/fs/simulator/fs.o ./Middlewares/eez/fs/simulator/fs.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-fs-2f-simulator |
|
||||||
|
|
@ -1,27 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/fs/stm32/fs.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/fs/stm32/fs.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/fs/stm32/fs.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/fs/stm32/%.o Middlewares/eez/fs/stm32/%.su: ../Middlewares/eez/fs/stm32/%.cpp Middlewares/eez/fs/stm32/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-fs-2f-stm32 |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-fs-2f-stm32: |
|
||||||
-$(RM) ./Middlewares/eez/fs/stm32/fs.d ./Middlewares/eez/fs/stm32/fs.o ./Middlewares/eez/fs/stm32/fs.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-fs-2f-stm32 |
|
||||||
|
|
@ -1,90 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/gui/action_impl.cpp \ |
|
||||||
../Middlewares/eez/gui/animation.cpp \ |
|
||||||
../Middlewares/eez/gui/app_context.cpp \ |
|
||||||
../Middlewares/eez/gui/assets.cpp \ |
|
||||||
../Middlewares/eez/gui/assets_fix_offsets.cpp \ |
|
||||||
../Middlewares/eez/gui/data.cpp \ |
|
||||||
../Middlewares/eez/gui/display.cpp \ |
|
||||||
../Middlewares/eez/gui/draw.cpp \ |
|
||||||
../Middlewares/eez/gui/event.cpp \ |
|
||||||
../Middlewares/eez/gui/font.cpp \ |
|
||||||
../Middlewares/eez/gui/geometry.cpp \ |
|
||||||
../Middlewares/eez/gui/gui.cpp \ |
|
||||||
../Middlewares/eez/gui/hooks.cpp \ |
|
||||||
../Middlewares/eez/gui/keypad.cpp \ |
|
||||||
../Middlewares/eez/gui/overlay.cpp \ |
|
||||||
../Middlewares/eez/gui/page.cpp \ |
|
||||||
../Middlewares/eez/gui/thread.cpp \ |
|
||||||
../Middlewares/eez/gui/touch.cpp \ |
|
||||||
../Middlewares/eez/gui/touch_calibration.cpp \ |
|
||||||
../Middlewares/eez/gui/touch_filter.cpp \ |
|
||||||
../Middlewares/eez/gui/update.cpp \ |
|
||||||
../Middlewares/eez/gui/widget.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/gui/action_impl.o \ |
|
||||||
./Middlewares/eez/gui/animation.o \ |
|
||||||
./Middlewares/eez/gui/app_context.o \ |
|
||||||
./Middlewares/eez/gui/assets.o \ |
|
||||||
./Middlewares/eez/gui/assets_fix_offsets.o \ |
|
||||||
./Middlewares/eez/gui/data.o \ |
|
||||||
./Middlewares/eez/gui/display.o \ |
|
||||||
./Middlewares/eez/gui/draw.o \ |
|
||||||
./Middlewares/eez/gui/event.o \ |
|
||||||
./Middlewares/eez/gui/font.o \ |
|
||||||
./Middlewares/eez/gui/geometry.o \ |
|
||||||
./Middlewares/eez/gui/gui.o \ |
|
||||||
./Middlewares/eez/gui/hooks.o \ |
|
||||||
./Middlewares/eez/gui/keypad.o \ |
|
||||||
./Middlewares/eez/gui/overlay.o \ |
|
||||||
./Middlewares/eez/gui/page.o \ |
|
||||||
./Middlewares/eez/gui/thread.o \ |
|
||||||
./Middlewares/eez/gui/touch.o \ |
|
||||||
./Middlewares/eez/gui/touch_calibration.o \ |
|
||||||
./Middlewares/eez/gui/touch_filter.o \ |
|
||||||
./Middlewares/eez/gui/update.o \ |
|
||||||
./Middlewares/eez/gui/widget.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/gui/action_impl.d \ |
|
||||||
./Middlewares/eez/gui/animation.d \ |
|
||||||
./Middlewares/eez/gui/app_context.d \ |
|
||||||
./Middlewares/eez/gui/assets.d \ |
|
||||||
./Middlewares/eez/gui/assets_fix_offsets.d \ |
|
||||||
./Middlewares/eez/gui/data.d \ |
|
||||||
./Middlewares/eez/gui/display.d \ |
|
||||||
./Middlewares/eez/gui/draw.d \ |
|
||||||
./Middlewares/eez/gui/event.d \ |
|
||||||
./Middlewares/eez/gui/font.d \ |
|
||||||
./Middlewares/eez/gui/geometry.d \ |
|
||||||
./Middlewares/eez/gui/gui.d \ |
|
||||||
./Middlewares/eez/gui/hooks.d \ |
|
||||||
./Middlewares/eez/gui/keypad.d \ |
|
||||||
./Middlewares/eez/gui/overlay.d \ |
|
||||||
./Middlewares/eez/gui/page.d \ |
|
||||||
./Middlewares/eez/gui/thread.d \ |
|
||||||
./Middlewares/eez/gui/touch.d \ |
|
||||||
./Middlewares/eez/gui/touch_calibration.d \ |
|
||||||
./Middlewares/eez/gui/touch_filter.d \ |
|
||||||
./Middlewares/eez/gui/update.d \ |
|
||||||
./Middlewares/eez/gui/widget.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/gui/%.o Middlewares/eez/gui/%.su: ../Middlewares/eez/gui/%.cpp Middlewares/eez/gui/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-gui |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-gui: |
|
||||||
-$(RM) ./Middlewares/eez/gui/action_impl.d ./Middlewares/eez/gui/action_impl.o ./Middlewares/eez/gui/action_impl.su ./Middlewares/eez/gui/animation.d ./Middlewares/eez/gui/animation.o ./Middlewares/eez/gui/animation.su ./Middlewares/eez/gui/app_context.d ./Middlewares/eez/gui/app_context.o ./Middlewares/eez/gui/app_context.su ./Middlewares/eez/gui/assets.d ./Middlewares/eez/gui/assets.o ./Middlewares/eez/gui/assets.su ./Middlewares/eez/gui/assets_fix_offsets.d ./Middlewares/eez/gui/assets_fix_offsets.o ./Middlewares/eez/gui/assets_fix_offsets.su ./Middlewares/eez/gui/data.d ./Middlewares/eez/gui/data.o ./Middlewares/eez/gui/data.su ./Middlewares/eez/gui/display.d ./Middlewares/eez/gui/display.o ./Middlewares/eez/gui/display.su ./Middlewares/eez/gui/draw.d ./Middlewares/eez/gui/draw.o ./Middlewares/eez/gui/draw.su ./Middlewares/eez/gui/event.d ./Middlewares/eez/gui/event.o ./Middlewares/eez/gui/event.su ./Middlewares/eez/gui/font.d ./Middlewares/eez/gui/font.o ./Middlewares/eez/gui/font.su ./Middlewares/eez/gui/geometry.d ./Middlewares/eez/gui/geometry.o ./Middlewares/eez/gui/geometry.su ./Middlewares/eez/gui/gui.d ./Middlewares/eez/gui/gui.o ./Middlewares/eez/gui/gui.su ./Middlewares/eez/gui/hooks.d ./Middlewares/eez/gui/hooks.o ./Middlewares/eez/gui/hooks.su ./Middlewares/eez/gui/keypad.d ./Middlewares/eez/gui/keypad.o ./Middlewares/eez/gui/keypad.su ./Middlewares/eez/gui/overlay.d ./Middlewares/eez/gui/overlay.o ./Middlewares/eez/gui/overlay.su ./Middlewares/eez/gui/page.d ./Middlewares/eez/gui/page.o ./Middlewares/eez/gui/page.su ./Middlewares/eez/gui/thread.d ./Middlewares/eez/gui/thread.o ./Middlewares/eez/gui/thread.su ./Middlewares/eez/gui/touch.d ./Middlewares/eez/gui/touch.o ./Middlewares/eez/gui/touch.su ./Middlewares/eez/gui/touch_calibration.d ./Middlewares/eez/gui/touch_calibration.o ./Middlewares/eez/gui/touch_calibration.su ./Middlewares/eez/gui/touch_filter.d ./Middlewares/eez/gui/touch_filter.o ./Middlewares/eez/gui/touch_filter.su ./Middlewares/eez/gui/update.d ./Middlewares/eez/gui/update.o ./Middlewares/eez/gui/update.su ./Middlewares/eez/gui/widget.d ./Middlewares/eez/gui/widget.o ./Middlewares/eez/gui/widget.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-gui |
|
||||||
|
|
@ -1,42 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/gui/widgets/containers/app_view.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/containers/container.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/containers/grid.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/containers/layout_view.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/containers/list.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/containers/select.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/gui/widgets/containers/app_view.o \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/container.o \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/grid.o \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/layout_view.o \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/list.o \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/select.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/gui/widgets/containers/app_view.d \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/container.d \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/grid.d \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/layout_view.d \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/list.d \ |
|
||||||
./Middlewares/eez/gui/widgets/containers/select.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/gui/widgets/containers/%.o Middlewares/eez/gui/widgets/containers/%.su: ../Middlewares/eez/gui/widgets/containers/%.cpp Middlewares/eez/gui/widgets/containers/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-gui-2f-widgets-2f-containers |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-gui-2f-widgets-2f-containers: |
|
||||||
-$(RM) ./Middlewares/eez/gui/widgets/containers/app_view.d ./Middlewares/eez/gui/widgets/containers/app_view.o ./Middlewares/eez/gui/widgets/containers/app_view.su ./Middlewares/eez/gui/widgets/containers/container.d ./Middlewares/eez/gui/widgets/containers/container.o ./Middlewares/eez/gui/widgets/containers/container.su ./Middlewares/eez/gui/widgets/containers/grid.d ./Middlewares/eez/gui/widgets/containers/grid.o ./Middlewares/eez/gui/widgets/containers/grid.su ./Middlewares/eez/gui/widgets/containers/layout_view.d ./Middlewares/eez/gui/widgets/containers/layout_view.o ./Middlewares/eez/gui/widgets/containers/layout_view.su ./Middlewares/eez/gui/widgets/containers/list.d ./Middlewares/eez/gui/widgets/containers/list.o ./Middlewares/eez/gui/widgets/containers/list.su ./Middlewares/eez/gui/widgets/containers/select.d ./Middlewares/eez/gui/widgets/containers/select.o ./Middlewares/eez/gui/widgets/containers/select.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-gui-2f-widgets-2f-containers |
|
||||||
|
|
@ -1,87 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/gui/widgets/bar_graph.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/bitmap.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/button.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/button_group.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/canvas.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/display_data.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/drop_down_list.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/gauge.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/input.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/list_graph.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/multiline_text.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/progress.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/rectangle.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/roller.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/scroll_bar.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/slider.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/switch.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/text.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/toggle_button.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/up_down.cpp \ |
|
||||||
../Middlewares/eez/gui/widgets/yt_graph.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/gui/widgets/bar_graph.o \ |
|
||||||
./Middlewares/eez/gui/widgets/bitmap.o \ |
|
||||||
./Middlewares/eez/gui/widgets/button.o \ |
|
||||||
./Middlewares/eez/gui/widgets/button_group.o \ |
|
||||||
./Middlewares/eez/gui/widgets/canvas.o \ |
|
||||||
./Middlewares/eez/gui/widgets/display_data.o \ |
|
||||||
./Middlewares/eez/gui/widgets/drop_down_list.o \ |
|
||||||
./Middlewares/eez/gui/widgets/gauge.o \ |
|
||||||
./Middlewares/eez/gui/widgets/input.o \ |
|
||||||
./Middlewares/eez/gui/widgets/list_graph.o \ |
|
||||||
./Middlewares/eez/gui/widgets/multiline_text.o \ |
|
||||||
./Middlewares/eez/gui/widgets/progress.o \ |
|
||||||
./Middlewares/eez/gui/widgets/rectangle.o \ |
|
||||||
./Middlewares/eez/gui/widgets/roller.o \ |
|
||||||
./Middlewares/eez/gui/widgets/scroll_bar.o \ |
|
||||||
./Middlewares/eez/gui/widgets/slider.o \ |
|
||||||
./Middlewares/eez/gui/widgets/switch.o \ |
|
||||||
./Middlewares/eez/gui/widgets/text.o \ |
|
||||||
./Middlewares/eez/gui/widgets/toggle_button.o \ |
|
||||||
./Middlewares/eez/gui/widgets/up_down.o \ |
|
||||||
./Middlewares/eez/gui/widgets/yt_graph.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/gui/widgets/bar_graph.d \ |
|
||||||
./Middlewares/eez/gui/widgets/bitmap.d \ |
|
||||||
./Middlewares/eez/gui/widgets/button.d \ |
|
||||||
./Middlewares/eez/gui/widgets/button_group.d \ |
|
||||||
./Middlewares/eez/gui/widgets/canvas.d \ |
|
||||||
./Middlewares/eez/gui/widgets/display_data.d \ |
|
||||||
./Middlewares/eez/gui/widgets/drop_down_list.d \ |
|
||||||
./Middlewares/eez/gui/widgets/gauge.d \ |
|
||||||
./Middlewares/eez/gui/widgets/input.d \ |
|
||||||
./Middlewares/eez/gui/widgets/list_graph.d \ |
|
||||||
./Middlewares/eez/gui/widgets/multiline_text.d \ |
|
||||||
./Middlewares/eez/gui/widgets/progress.d \ |
|
||||||
./Middlewares/eez/gui/widgets/rectangle.d \ |
|
||||||
./Middlewares/eez/gui/widgets/roller.d \ |
|
||||||
./Middlewares/eez/gui/widgets/scroll_bar.d \ |
|
||||||
./Middlewares/eez/gui/widgets/slider.d \ |
|
||||||
./Middlewares/eez/gui/widgets/switch.d \ |
|
||||||
./Middlewares/eez/gui/widgets/text.d \ |
|
||||||
./Middlewares/eez/gui/widgets/toggle_button.d \ |
|
||||||
./Middlewares/eez/gui/widgets/up_down.d \ |
|
||||||
./Middlewares/eez/gui/widgets/yt_graph.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/gui/widgets/%.o Middlewares/eez/gui/widgets/%.su: ../Middlewares/eez/gui/widgets/%.cpp Middlewares/eez/gui/widgets/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-gui-2f-widgets |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-gui-2f-widgets: |
|
||||||
-$(RM) ./Middlewares/eez/gui/widgets/bar_graph.d ./Middlewares/eez/gui/widgets/bar_graph.o ./Middlewares/eez/gui/widgets/bar_graph.su ./Middlewares/eez/gui/widgets/bitmap.d ./Middlewares/eez/gui/widgets/bitmap.o ./Middlewares/eez/gui/widgets/bitmap.su ./Middlewares/eez/gui/widgets/button.d ./Middlewares/eez/gui/widgets/button.o ./Middlewares/eez/gui/widgets/button.su ./Middlewares/eez/gui/widgets/button_group.d ./Middlewares/eez/gui/widgets/button_group.o ./Middlewares/eez/gui/widgets/button_group.su ./Middlewares/eez/gui/widgets/canvas.d ./Middlewares/eez/gui/widgets/canvas.o ./Middlewares/eez/gui/widgets/canvas.su ./Middlewares/eez/gui/widgets/display_data.d ./Middlewares/eez/gui/widgets/display_data.o ./Middlewares/eez/gui/widgets/display_data.su ./Middlewares/eez/gui/widgets/drop_down_list.d ./Middlewares/eez/gui/widgets/drop_down_list.o ./Middlewares/eez/gui/widgets/drop_down_list.su ./Middlewares/eez/gui/widgets/gauge.d ./Middlewares/eez/gui/widgets/gauge.o ./Middlewares/eez/gui/widgets/gauge.su ./Middlewares/eez/gui/widgets/input.d ./Middlewares/eez/gui/widgets/input.o ./Middlewares/eez/gui/widgets/input.su ./Middlewares/eez/gui/widgets/list_graph.d ./Middlewares/eez/gui/widgets/list_graph.o ./Middlewares/eez/gui/widgets/list_graph.su ./Middlewares/eez/gui/widgets/multiline_text.d ./Middlewares/eez/gui/widgets/multiline_text.o ./Middlewares/eez/gui/widgets/multiline_text.su ./Middlewares/eez/gui/widgets/progress.d ./Middlewares/eez/gui/widgets/progress.o ./Middlewares/eez/gui/widgets/progress.su ./Middlewares/eez/gui/widgets/rectangle.d ./Middlewares/eez/gui/widgets/rectangle.o ./Middlewares/eez/gui/widgets/rectangle.su ./Middlewares/eez/gui/widgets/roller.d ./Middlewares/eez/gui/widgets/roller.o ./Middlewares/eez/gui/widgets/roller.su ./Middlewares/eez/gui/widgets/scroll_bar.d ./Middlewares/eez/gui/widgets/scroll_bar.o ./Middlewares/eez/gui/widgets/scroll_bar.su ./Middlewares/eez/gui/widgets/slider.d ./Middlewares/eez/gui/widgets/slider.o ./Middlewares/eez/gui/widgets/slider.su ./Middlewares/eez/gui/widgets/switch.d ./Middlewares/eez/gui/widgets/switch.o ./Middlewares/eez/gui/widgets/switch.su ./Middlewares/eez/gui/widgets/text.d ./Middlewares/eez/gui/widgets/text.o ./Middlewares/eez/gui/widgets/text.su ./Middlewares/eez/gui/widgets/toggle_button.d ./Middlewares/eez/gui/widgets/toggle_button.o ./Middlewares/eez/gui/widgets/toggle_button.su ./Middlewares/eez/gui/widgets/up_down.d ./Middlewares/eez/gui/widgets/up_down.o ./Middlewares/eez/gui/widgets/up_down.su ./Middlewares/eez/gui/widgets/yt_graph.d ./Middlewares/eez/gui/widgets/yt_graph.o ./Middlewares/eez/gui/widgets/yt_graph.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-gui-2f-widgets |
|
||||||
|
|
@ -1,105 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/libs/agg/agg2d.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_arc.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_arrowhead.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_bezier_arc.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_bspline.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_color_rgba.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_curves.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_embedded_raster_fonts.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_gsv_text.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_image_filters.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_line_aa_basics.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_line_profile_aa.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_rounded_rect.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_sqrt_tables.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_trans_affine.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_trans_double_path.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_trans_single_path.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_trans_warp_magnifier.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vcgen_bspline.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vcgen_contour.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vcgen_dash.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vcgen_markers_term.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vcgen_smooth_poly1.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vcgen_stroke.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vpgen_clip_polygon.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vpgen_clip_polyline.cpp \ |
|
||||||
../Middlewares/eez/libs/agg/agg_vpgen_segmentator.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/libs/agg/agg2d.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_arc.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_arrowhead.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_bezier_arc.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_bspline.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_color_rgba.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_curves.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_embedded_raster_fonts.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_gsv_text.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_image_filters.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_line_aa_basics.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_line_profile_aa.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_rounded_rect.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_sqrt_tables.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_affine.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_double_path.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_single_path.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_warp_magnifier.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_bspline.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_contour.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_dash.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_markers_term.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_smooth_poly1.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_stroke.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vpgen_clip_polygon.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vpgen_clip_polyline.o \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vpgen_segmentator.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/libs/agg/agg2d.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_arc.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_arrowhead.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_bezier_arc.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_bspline.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_color_rgba.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_curves.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_embedded_raster_fonts.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_gsv_text.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_image_filters.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_line_aa_basics.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_line_profile_aa.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_rounded_rect.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_sqrt_tables.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_affine.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_double_path.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_single_path.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_trans_warp_magnifier.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_bspline.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_contour.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_dash.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_markers_term.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_smooth_poly1.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vcgen_stroke.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vpgen_clip_polygon.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vpgen_clip_polyline.d \ |
|
||||||
./Middlewares/eez/libs/agg/agg_vpgen_segmentator.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/libs/agg/%.o Middlewares/eez/libs/agg/%.su: ../Middlewares/eez/libs/agg/%.cpp Middlewares/eez/libs/agg/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-libs-2f-agg |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-libs-2f-agg: |
|
||||||
-$(RM) ./Middlewares/eez/libs/agg/agg2d.d ./Middlewares/eez/libs/agg/agg2d.o ./Middlewares/eez/libs/agg/agg2d.su ./Middlewares/eez/libs/agg/agg_arc.d ./Middlewares/eez/libs/agg/agg_arc.o ./Middlewares/eez/libs/agg/agg_arc.su ./Middlewares/eez/libs/agg/agg_arrowhead.d ./Middlewares/eez/libs/agg/agg_arrowhead.o ./Middlewares/eez/libs/agg/agg_arrowhead.su ./Middlewares/eez/libs/agg/agg_bezier_arc.d ./Middlewares/eez/libs/agg/agg_bezier_arc.o ./Middlewares/eez/libs/agg/agg_bezier_arc.su ./Middlewares/eez/libs/agg/agg_bspline.d ./Middlewares/eez/libs/agg/agg_bspline.o ./Middlewares/eez/libs/agg/agg_bspline.su ./Middlewares/eez/libs/agg/agg_color_rgba.d ./Middlewares/eez/libs/agg/agg_color_rgba.o ./Middlewares/eez/libs/agg/agg_color_rgba.su ./Middlewares/eez/libs/agg/agg_curves.d ./Middlewares/eez/libs/agg/agg_curves.o ./Middlewares/eez/libs/agg/agg_curves.su ./Middlewares/eez/libs/agg/agg_embedded_raster_fonts.d ./Middlewares/eez/libs/agg/agg_embedded_raster_fonts.o ./Middlewares/eez/libs/agg/agg_embedded_raster_fonts.su ./Middlewares/eez/libs/agg/agg_gsv_text.d ./Middlewares/eez/libs/agg/agg_gsv_text.o ./Middlewares/eez/libs/agg/agg_gsv_text.su ./Middlewares/eez/libs/agg/agg_image_filters.d ./Middlewares/eez/libs/agg/agg_image_filters.o ./Middlewares/eez/libs/agg/agg_image_filters.su ./Middlewares/eez/libs/agg/agg_line_aa_basics.d ./Middlewares/eez/libs/agg/agg_line_aa_basics.o ./Middlewares/eez/libs/agg/agg_line_aa_basics.su ./Middlewares/eez/libs/agg/agg_line_profile_aa.d ./Middlewares/eez/libs/agg/agg_line_profile_aa.o ./Middlewares/eez/libs/agg/agg_line_profile_aa.su ./Middlewares/eez/libs/agg/agg_rounded_rect.d ./Middlewares/eez/libs/agg/agg_rounded_rect.o ./Middlewares/eez/libs/agg/agg_rounded_rect.su ./Middlewares/eez/libs/agg/agg_sqrt_tables.d ./Middlewares/eez/libs/agg/agg_sqrt_tables.o ./Middlewares/eez/libs/agg/agg_sqrt_tables.su ./Middlewares/eez/libs/agg/agg_trans_affine.d ./Middlewares/eez/libs/agg/agg_trans_affine.o ./Middlewares/eez/libs/agg/agg_trans_affine.su ./Middlewares/eez/libs/agg/agg_trans_double_path.d ./Middlewares/eez/libs/agg/agg_trans_double_path.o ./Middlewares/eez/libs/agg/agg_trans_double_path.su ./Middlewares/eez/libs/agg/agg_trans_single_path.d ./Middlewares/eez/libs/agg/agg_trans_single_path.o ./Middlewares/eez/libs/agg/agg_trans_single_path.su ./Middlewares/eez/libs/agg/agg_trans_warp_magnifier.d ./Middlewares/eez/libs/agg/agg_trans_warp_magnifier.o ./Middlewares/eez/libs/agg/agg_trans_warp_magnifier.su ./Middlewares/eez/libs/agg/agg_vcgen_bspline.d ./Middlewares/eez/libs/agg/agg_vcgen_bspline.o ./Middlewares/eez/libs/agg/agg_vcgen_bspline.su ./Middlewares/eez/libs/agg/agg_vcgen_contour.d ./Middlewares/eez/libs/agg/agg_vcgen_contour.o ./Middlewares/eez/libs/agg/agg_vcgen_contour.su ./Middlewares/eez/libs/agg/agg_vcgen_dash.d ./Middlewares/eez/libs/agg/agg_vcgen_dash.o ./Middlewares/eez/libs/agg/agg_vcgen_dash.su ./Middlewares/eez/libs/agg/agg_vcgen_markers_term.d ./Middlewares/eez/libs/agg/agg_vcgen_markers_term.o ./Middlewares/eez/libs/agg/agg_vcgen_markers_term.su ./Middlewares/eez/libs/agg/agg_vcgen_smooth_poly1.d ./Middlewares/eez/libs/agg/agg_vcgen_smooth_poly1.o ./Middlewares/eez/libs/agg/agg_vcgen_smooth_poly1.su ./Middlewares/eez/libs/agg/agg_vcgen_stroke.d ./Middlewares/eez/libs/agg/agg_vcgen_stroke.o ./Middlewares/eez/libs/agg/agg_vcgen_stroke.su ./Middlewares/eez/libs/agg/agg_vpgen_clip_polygon.d ./Middlewares/eez/libs/agg/agg_vpgen_clip_polygon.o ./Middlewares/eez/libs/agg/agg_vpgen_clip_polygon.su ./Middlewares/eez/libs/agg/agg_vpgen_clip_polyline.d ./Middlewares/eez/libs/agg/agg_vpgen_clip_polyline.o ./Middlewares/eez/libs/agg/agg_vpgen_clip_polyline.su ./Middlewares/eez/libs/agg/agg_vpgen_segmentator.d ./Middlewares/eez/libs/agg/agg_vpgen_segmentator.o ./Middlewares/eez/libs/agg/agg_vpgen_segmentator.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-libs-2f-agg |
|
||||||
|
|
@ -1,51 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
C_SRCS += \
|
|
||||||
../Middlewares/eez/libs/libscpi/src/error.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/expression.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/fifo.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/ieee488.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/lexer.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/minimal.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/parser.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/units.c \ |
|
||||||
../Middlewares/eez/libs/libscpi/src/utils.c
|
|
||||||
|
|
||||||
C_DEPS += \
|
|
||||||
./Middlewares/eez/libs/libscpi/src/error.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/expression.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/fifo.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/ieee488.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/lexer.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/minimal.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/parser.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/units.d \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/utils.d
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/libs/libscpi/src/error.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/expression.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/fifo.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/ieee488.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/lexer.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/minimal.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/parser.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/units.o \ |
|
||||||
./Middlewares/eez/libs/libscpi/src/utils.o
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/libs/libscpi/src/%.o Middlewares/eez/libs/libscpi/src/%.su: ../Middlewares/eez/libs/libscpi/src/%.c Middlewares/eez/libs/libscpi/src/subdir.mk |
|
||||||
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-libs-2f-libscpi-2f-src |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-libs-2f-libscpi-2f-src: |
|
||||||
-$(RM) ./Middlewares/eez/libs/libscpi/src/error.d ./Middlewares/eez/libs/libscpi/src/error.o ./Middlewares/eez/libs/libscpi/src/error.su ./Middlewares/eez/libs/libscpi/src/expression.d ./Middlewares/eez/libs/libscpi/src/expression.o ./Middlewares/eez/libs/libscpi/src/expression.su ./Middlewares/eez/libs/libscpi/src/fifo.d ./Middlewares/eez/libs/libscpi/src/fifo.o ./Middlewares/eez/libs/libscpi/src/fifo.su ./Middlewares/eez/libs/libscpi/src/ieee488.d ./Middlewares/eez/libs/libscpi/src/ieee488.o ./Middlewares/eez/libs/libscpi/src/ieee488.su ./Middlewares/eez/libs/libscpi/src/lexer.d ./Middlewares/eez/libs/libscpi/src/lexer.o ./Middlewares/eez/libs/libscpi/src/lexer.su ./Middlewares/eez/libs/libscpi/src/minimal.d ./Middlewares/eez/libs/libscpi/src/minimal.o ./Middlewares/eez/libs/libscpi/src/minimal.su ./Middlewares/eez/libs/libscpi/src/parser.d ./Middlewares/eez/libs/libscpi/src/parser.o ./Middlewares/eez/libs/libscpi/src/parser.su ./Middlewares/eez/libs/libscpi/src/units.d ./Middlewares/eez/libs/libscpi/src/units.o ./Middlewares/eez/libs/libscpi/src/units.su ./Middlewares/eez/libs/libscpi/src/utils.d ./Middlewares/eez/libs/libscpi/src/utils.o ./Middlewares/eez/libs/libscpi/src/utils.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-libs-2f-libscpi-2f-src |
|
||||||
|
|
@ -1,27 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
C_SRCS += \
|
|
||||||
../Middlewares/eez/libs/lz4/lz4.c
|
|
||||||
|
|
||||||
C_DEPS += \
|
|
||||||
./Middlewares/eez/libs/lz4/lz4.d
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/libs/lz4/lz4.o
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/libs/lz4/%.o Middlewares/eez/libs/lz4/%.su: ../Middlewares/eez/libs/lz4/%.c Middlewares/eez/libs/lz4/subdir.mk |
|
||||||
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-libs-2f-lz4 |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-libs-2f-lz4: |
|
||||||
-$(RM) ./Middlewares/eez/libs/lz4/lz4.d ./Middlewares/eez/libs/lz4/lz4.o ./Middlewares/eez/libs/lz4/lz4.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-libs-2f-lz4 |
|
||||||
|
|
@ -1,36 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/platform/simulator/cmsis_os2.cpp \ |
|
||||||
../Middlewares/eez/platform/simulator/display.cpp \ |
|
||||||
../Middlewares/eez/platform/simulator/events.cpp \ |
|
||||||
../Middlewares/eez/platform/simulator/touch.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/platform/simulator/cmsis_os2.o \ |
|
||||||
./Middlewares/eez/platform/simulator/display.o \ |
|
||||||
./Middlewares/eez/platform/simulator/events.o \ |
|
||||||
./Middlewares/eez/platform/simulator/touch.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/platform/simulator/cmsis_os2.d \ |
|
||||||
./Middlewares/eez/platform/simulator/display.d \ |
|
||||||
./Middlewares/eez/platform/simulator/events.d \ |
|
||||||
./Middlewares/eez/platform/simulator/touch.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/platform/simulator/%.o Middlewares/eez/platform/simulator/%.su: ../Middlewares/eez/platform/simulator/%.cpp Middlewares/eez/platform/simulator/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-platform-2f-simulator |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-platform-2f-simulator: |
|
||||||
-$(RM) ./Middlewares/eez/platform/simulator/cmsis_os2.d ./Middlewares/eez/platform/simulator/cmsis_os2.o ./Middlewares/eez/platform/simulator/cmsis_os2.su ./Middlewares/eez/platform/simulator/display.d ./Middlewares/eez/platform/simulator/display.o ./Middlewares/eez/platform/simulator/display.su ./Middlewares/eez/platform/simulator/events.d ./Middlewares/eez/platform/simulator/events.o ./Middlewares/eez/platform/simulator/events.su ./Middlewares/eez/platform/simulator/touch.d ./Middlewares/eez/platform/simulator/touch.o ./Middlewares/eez/platform/simulator/touch.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-platform-2f-simulator |
|
||||||
|
|
@ -1,30 +0,0 @@ |
|||||||
################################################################################
|
|
||||||
# Automatically-generated file. Do not edit!
|
|
||||||
# Toolchain: GNU Tools for STM32 (10.3-2021.10)
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Add inputs and outputs from these tool invocations to the build variables
|
|
||||||
CPP_SRCS += \
|
|
||||||
../Middlewares/eez/platform/stm32/display.cpp \ |
|
||||||
../Middlewares/eez/platform/stm32/touch.cpp
|
|
||||||
|
|
||||||
OBJS += \
|
|
||||||
./Middlewares/eez/platform/stm32/display.o \ |
|
||||||
./Middlewares/eez/platform/stm32/touch.o
|
|
||||||
|
|
||||||
CPP_DEPS += \
|
|
||||||
./Middlewares/eez/platform/stm32/display.d \ |
|
||||||
./Middlewares/eez/platform/stm32/touch.d
|
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
|
||||||
Middlewares/eez/platform/stm32/%.o Middlewares/eez/platform/stm32/%.su: ../Middlewares/eez/platform/stm32/%.cpp Middlewares/eez/platform/stm32/subdir.mk |
|
||||||
arm-none-eabi-g++ "$<" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DUSE_STM32469I_DISCO_REVB -DEEZ_PLATFORM_STM32 -DEEZ_PLATFORM_STM32F469I_DISCO -DLZ4_FORCE_MEMORY_ACCESS=0 -DSTM32L496xx -c -I../Core/Inc -I../FATFS/Target -I../FATFS/App -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/FatFs/src -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32L4xx/Include -I../Drivers/CMSIS/Include -I../Drivers/BSP/STM32469I-Discovery -I../Drivers/BSP/Components/Common -I../Utilities/CPU -I../Utilities/Log -I../Src/conf -I../Middlewares -I../Middlewares/eez/libs/agg -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
|
|
||||||
|
|
||||||
clean: clean-Middlewares-2f-eez-2f-platform-2f-stm32 |
|
||||||
|
|
||||||
clean-Middlewares-2f-eez-2f-platform-2f-stm32: |
|
||||||
-$(RM) ./Middlewares/eez/platform/stm32/display.d ./Middlewares/eez/platform/stm32/display.o ./Middlewares/eez/platform/stm32/display.su ./Middlewares/eez/platform/stm32/touch.d ./Middlewares/eez/platform/stm32/touch.o ./Middlewares/eez/platform/stm32/touch.su
|
|
||||||
|
|
||||||
.PHONY: clean-Middlewares-2f-eez-2f-platform-2f-stm32 |
|
||||||
|
|
@ -1,201 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <stdio.h> |
|
||||||
#include <math.h> |
|
||||||
#include <assert.h> |
|
||||||
#include <memory.h> |
|
||||||
|
|
||||||
#include <eez/core/alloc.h> |
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
static const size_t ALIGNMENT = 8; |
|
||||||
static const size_t MIN_BLOCK_SIZE = 8; |
|
||||||
|
|
||||||
struct AllocBlock { |
|
||||||
AllocBlock *next; |
|
||||||
int free; |
|
||||||
size_t size; |
|
||||||
uint32_t id; |
|
||||||
}; |
|
||||||
|
|
||||||
static uint8_t *g_heap; |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#pragma GCC diagnostic push |
|
||||||
#pragma GCC diagnostic ignored "-Wparentheses" |
|
||||||
#endif |
|
||||||
|
|
||||||
EEZ_MUTEX_DECLARE(alloc); |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#pragma GCC diagnostic pop |
|
||||||
#endif |
|
||||||
|
|
||||||
void initAllocHeap(uint8_t *heap, size_t heapSize) { |
|
||||||
g_heap = heap; |
|
||||||
|
|
||||||
AllocBlock *first = (AllocBlock *)g_heap; |
|
||||||
first->next = 0; |
|
||||||
first->free = 1; |
|
||||||
first->size = heapSize - sizeof(AllocBlock); |
|
||||||
|
|
||||||
EEZ_MUTEX_CREATE(alloc); |
|
||||||
} |
|
||||||
|
|
||||||
void *alloc(size_t size, uint32_t id) { |
|
||||||
if (size == 0) { |
|
||||||
return nullptr; |
|
||||||
} |
|
||||||
|
|
||||||
if (EEZ_MUTEX_WAIT(alloc, 0)) { |
|
||||||
AllocBlock *firstBlock = (AllocBlock *)g_heap; |
|
||||||
|
|
||||||
AllocBlock *block = firstBlock; |
|
||||||
size = ((size + ALIGNMENT - 1) / ALIGNMENT) * ALIGNMENT; |
|
||||||
|
|
||||||
// find free block with enough size
|
|
||||||
// TODO merge multiple free consecutive blocks into one that has enough size
|
|
||||||
while (block) { |
|
||||||
if (block->free && block->size >= size) { |
|
||||||
break; |
|
||||||
} |
|
||||||
block = block->next; |
|
||||||
} |
|
||||||
|
|
||||||
if (!block) { |
|
||||||
EEZ_MUTEX_RELEASE(alloc); |
|
||||||
return nullptr; |
|
||||||
} |
|
||||||
|
|
||||||
int remainingSize = block->size - size - sizeof(AllocBlock); |
|
||||||
if (remainingSize >= (int)MIN_BLOCK_SIZE) { |
|
||||||
// remainingSize is enough to create a new block
|
|
||||||
auto newBlock = (AllocBlock *)((uint8_t *)block + sizeof(AllocBlock) + size); |
|
||||||
newBlock->next = block->next; |
|
||||||
newBlock->free = 1; |
|
||||||
newBlock->size = remainingSize; |
|
||||||
|
|
||||||
block->next = newBlock; |
|
||||||
block->size = size; |
|
||||||
} |
|
||||||
|
|
||||||
block->free = 0; |
|
||||||
block->id = id; |
|
||||||
|
|
||||||
EEZ_MUTEX_RELEASE(alloc); |
|
||||||
|
|
||||||
return block + 1; |
|
||||||
} |
|
||||||
|
|
||||||
return nullptr; |
|
||||||
} |
|
||||||
|
|
||||||
void free(void *ptr) { |
|
||||||
if (ptr == 0) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (EEZ_MUTEX_WAIT(alloc, 0)) { |
|
||||||
AllocBlock *firstBlock = (AllocBlock *)g_heap; |
|
||||||
|
|
||||||
AllocBlock *prevBlock = nullptr; |
|
||||||
AllocBlock *block = firstBlock; |
|
||||||
|
|
||||||
while (block && block + 1 < ptr) { |
|
||||||
prevBlock = block; |
|
||||||
block = block->next; |
|
||||||
} |
|
||||||
|
|
||||||
if (!block || block + 1 != ptr || block->free) { |
|
||||||
assert(false); |
|
||||||
EEZ_MUTEX_RELEASE(alloc); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
// reset memory to catch errors when memory is used after free is called
|
|
||||||
memset(ptr, 0xCC, block->size); |
|
||||||
|
|
||||||
auto nextBlock = block->next; |
|
||||||
if (nextBlock && nextBlock->free) { |
|
||||||
if (prevBlock && prevBlock->free) { |
|
||||||
// both next and prev blocks are free, merge 3 blocks into one
|
|
||||||
prevBlock->next = nextBlock->next; |
|
||||||
prevBlock->size += sizeof(AllocBlock) + block->size + sizeof(AllocBlock) + nextBlock->size; |
|
||||||
} else { |
|
||||||
// next block is free, merge 2 blocks into one
|
|
||||||
block->next = nextBlock->next; |
|
||||||
block->size += sizeof(AllocBlock) + nextBlock->size; |
|
||||||
block->free = 1; |
|
||||||
} |
|
||||||
} else if (prevBlock && prevBlock->free) { |
|
||||||
// prev block is free, merge 2 blocks into one
|
|
||||||
prevBlock->next = nextBlock; |
|
||||||
prevBlock->size += sizeof(AllocBlock) + block->size; |
|
||||||
} else { |
|
||||||
// just free
|
|
||||||
block->free = 1; |
|
||||||
} |
|
||||||
|
|
||||||
EEZ_MUTEX_RELEASE(alloc); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
template<typename T> void freeObject(T *ptr) { |
|
||||||
ptr->~T(); |
|
||||||
free(ptr); |
|
||||||
} |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
void dumpAlloc(scpi_t *context) { |
|
||||||
AllocBlock *first = (AllocBlock *)g_heap; |
|
||||||
AllocBlock *block = first; |
|
||||||
while (block) { |
|
||||||
char buffer[100]; |
|
||||||
if (block->free) { |
|
||||||
snprintf(buffer, sizeof(buffer), "FREE: %d", (int)block->size); |
|
||||||
} else { |
|
||||||
snprintf(buffer, sizeof(buffer), "ALOC (0x%08x): %d", (unsigned int)block->id, (int)block->size); |
|
||||||
} |
|
||||||
SCPI_ResultText(context, buffer); |
|
||||||
block = block->next; |
|
||||||
} |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
void getAllocInfo(uint32_t &free, uint32_t &alloc) { |
|
||||||
free = 0; |
|
||||||
alloc = 0; |
|
||||||
if (EEZ_MUTEX_WAIT(alloc, 0)) { |
|
||||||
AllocBlock *first = (AllocBlock *)g_heap; |
|
||||||
AllocBlock *block = first; |
|
||||||
while (block) { |
|
||||||
if (block->free) { |
|
||||||
free += block->size; |
|
||||||
} else { |
|
||||||
alloc += block->size; |
|
||||||
} |
|
||||||
block = block->next; |
|
||||||
} |
|
||||||
EEZ_MUTEX_RELEASE(alloc); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // eez
|
|
@ -1,53 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
#include <math.h> |
|
||||||
#include <new> |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
#include <scpi/scpi.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
void initAllocHeap(uint8_t *heap, size_t heapSize); |
|
||||||
|
|
||||||
void *alloc(size_t size, uint32_t id); |
|
||||||
void free(void *ptr); |
|
||||||
|
|
||||||
template<class T> struct ObjectAllocator { |
|
||||||
static T *allocate(uint32_t id) { |
|
||||||
auto ptr = alloc(sizeof(T), id); |
|
||||||
return new (ptr) T; |
|
||||||
} |
|
||||||
static void deallocate(T* ptr) { |
|
||||||
ptr->~T(); |
|
||||||
free(ptr); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
void dumpAlloc(scpi_t *context); |
|
||||||
#endif |
|
||||||
|
|
||||||
void getAllocInfo(uint32_t &free, uint32_t &alloc); |
|
||||||
|
|
||||||
} // eez
|
|
@ -1,58 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#ifdef DEBUG |
|
||||||
|
|
||||||
#include <cstdio> |
|
||||||
#include <stdarg.h> |
|
||||||
#include <string.h> |
|
||||||
|
|
||||||
#include <eez/core/debug.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace debug { |
|
||||||
|
|
||||||
void Trace(TraceType traceType, const char *format, ...) { |
|
||||||
va_list args; |
|
||||||
va_start(args, format); |
|
||||||
|
|
||||||
static const size_t BUFFER_SIZE = 256; |
|
||||||
char buffer[BUFFER_SIZE + 1]; |
|
||||||
|
|
||||||
vsnprintf(buffer, BUFFER_SIZE, format, args); |
|
||||||
buffer[BUFFER_SIZE] = 0; |
|
||||||
|
|
||||||
va_end(args); |
|
||||||
|
|
||||||
if (traceType == TRACE_TYPE_DEBUG) { |
|
||||||
pushDebugTraceHook(buffer, strlen(buffer)); |
|
||||||
} else if (traceType == TRACE_TYPE_INFO) { |
|
||||||
pushInfoTraceHook(buffer, strlen(buffer)); |
|
||||||
} else { |
|
||||||
pushErrorTraceHook(buffer, strlen(buffer)); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace debug
|
|
||||||
} // namespace eez
|
|
||||||
|
|
||||||
extern "C" void debug_trace(const char *str, size_t len) { |
|
||||||
eez::debug::pushDebugTraceHook(str, len); |
|
||||||
} |
|
||||||
|
|
||||||
#endif // DEBUG
|
|
@ -1,54 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#ifdef DEBUG |
|
||||||
|
|
||||||
#include <stdlib.h> |
|
||||||
#include <stdint.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace debug { |
|
||||||
|
|
||||||
void pushDebugTraceHook(const char *message, size_t messageLength); |
|
||||||
void pushInfoTraceHook(const char *message, size_t messageLength); |
|
||||||
void pushErrorTraceHook(const char *message, size_t messageLength); |
|
||||||
|
|
||||||
enum TraceType { |
|
||||||
TRACE_TYPE_DEBUG, |
|
||||||
TRACE_TYPE_INFO, |
|
||||||
TRACE_TYPE_ERROR |
|
||||||
}; |
|
||||||
|
|
||||||
void Trace(TraceType traceType, const char *format, ...); |
|
||||||
|
|
||||||
} // namespace debug
|
|
||||||
} // namespace eez
|
|
||||||
|
|
||||||
#define InfoTrace(...) ::eez::debug::Trace(::eez::debug::TRACE_TYPE_INFO, __VA_ARGS__) |
|
||||||
#define ErrorTrace(...) ::eez::debug::Trace(::eez::debug::TRACE_TYPE_ERROR, __VA_ARGS__) |
|
||||||
#define DebugTrace(...) ::eez::debug::Trace(::eez::debug::TRACE_TYPE_DEBUG, __VA_ARGS__) |
|
||||||
|
|
||||||
#else // NO DEBUG
|
|
||||||
|
|
||||||
#define InfoTrace(...) 0 |
|
||||||
#define ErrorTrace(...) 0 |
|
||||||
#define DebugTrace(...) 0 |
|
||||||
|
|
||||||
#endif |
|
@ -1,211 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2015-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <memory.h> |
|
||||||
|
|
||||||
#include <eez/core/eeprom.h> |
|
||||||
#include <eez/core/os.h> |
|
||||||
#include <eez/core/util.h> |
|
||||||
|
|
||||||
//#include <bb3/system.h>
|
|
||||||
//#include <bb3/psu/psu.h>
|
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) && !CONF_SURVIVE_MODE |
|
||||||
#define USE_EEPROM 1 |
|
||||||
#else |
|
||||||
#define USE_EEPROM 0 |
|
||||||
#endif |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#ifdef EEZ_PLATFORM_STM32F469I_DISCO |
|
||||||
#else |
|
||||||
#include <i2c.h> |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#if !USE_EEPROM |
|
||||||
#include <eez/fs/fs.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
#include <scpi/scpi.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace eeprom { |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
// opcodes
|
|
||||||
static const uint8_t WREN = 6; |
|
||||||
static const uint8_t WRDI = 4; |
|
||||||
static const uint8_t RDSR = 5; |
|
||||||
static const uint8_t WRSR = 1; |
|
||||||
static const uint8_t READ = 3; |
|
||||||
static const uint8_t WRITE = 2; |
|
||||||
|
|
||||||
// EEPROM AT24C256C
|
|
||||||
// I2C-Compatible (2-Wire) Serial EEPROM
|
|
||||||
// 256-Kbit (32,768 x 8)
|
|
||||||
// http://ww1.microchip.com/downloads/en/devicedoc/atmel-8568-seeprom-at24c256c-datasheet.pdf
|
|
||||||
static const uint16_t EEPROM_ADDRESS = 0b10100000; |
|
||||||
#endif |
|
||||||
|
|
||||||
TestResult g_testResult = TEST_FAILED; |
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
|
|
||||||
const int MAX_READ_CHUNK_SIZE = 16; |
|
||||||
const int MAX_WRITE_CHUNK_SIZE = 16; |
|
||||||
|
|
||||||
bool readFromEEPROM(uint8_t *buffer, uint16_t bufferSize, uint16_t address) { |
|
||||||
#ifdef EEZ_PLATFORM_STM32F469I_DISCO |
|
||||||
return false; |
|
||||||
#else |
|
||||||
for (uint16_t i = 0; i < bufferSize; i += MAX_READ_CHUNK_SIZE) { |
|
||||||
uint16_t chunkAddress = address + i; |
|
||||||
|
|
||||||
uint16_t chunkSize = MIN(MAX_READ_CHUNK_SIZE, bufferSize - i); |
|
||||||
|
|
||||||
uint8_t data[2] = { |
|
||||||
I2C_MEM_ADD_MSB(chunkAddress), |
|
||||||
I2C_MEM_ADD_LSB(chunkAddress) |
|
||||||
}; |
|
||||||
|
|
||||||
HAL_StatusTypeDef returnValue; |
|
||||||
|
|
||||||
taskENTER_CRITICAL(); |
|
||||||
returnValue = HAL_I2C_Master_Transmit(&hi2c1, EEPROM_ADDRESS, data, 2, HAL_MAX_DELAY); |
|
||||||
if (returnValue != HAL_OK) { |
|
||||||
taskEXIT_CRITICAL(); |
|
||||||
return false; |
|
||||||
} |
|
||||||
returnValue = HAL_I2C_Master_Receive(&hi2c1, EEPROM_ADDRESS, buffer + i, chunkSize, HAL_MAX_DELAY); |
|
||||||
taskEXIT_CRITICAL(); |
|
||||||
if (returnValue != HAL_OK) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return true; |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
bool writeToEEPROM(const uint8_t *buffer, uint16_t bufferSize, uint16_t address) { |
|
||||||
#ifdef EEZ_PLATFORM_STM32F469I_DISCO |
|
||||||
return false; |
|
||||||
#else |
|
||||||
for (uint16_t i = 0; i < bufferSize; i += MAX_WRITE_CHUNK_SIZE) { |
|
||||||
uint16_t chunkAddress = address + i; |
|
||||||
|
|
||||||
uint16_t chunkSize = MIN(MAX_WRITE_CHUNK_SIZE, bufferSize - i); |
|
||||||
|
|
||||||
HAL_StatusTypeDef returnValue; |
|
||||||
|
|
||||||
taskENTER_CRITICAL(); |
|
||||||
returnValue = HAL_I2C_Mem_Write(&hi2c1, EEPROM_ADDRESS, chunkAddress, I2C_MEMADD_SIZE_16BIT, (uint8_t *)buffer + i, chunkSize, HAL_MAX_DELAY); |
|
||||||
taskEXIT_CRITICAL(); |
|
||||||
|
|
||||||
if (returnValue != HAL_OK) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
osDelay(5); |
|
||||||
|
|
||||||
// verify
|
|
||||||
uint8_t verify[MAX_WRITE_CHUNK_SIZE]; |
|
||||||
|
|
||||||
uint8_t data[2] = { |
|
||||||
I2C_MEM_ADD_MSB(chunkAddress), |
|
||||||
I2C_MEM_ADD_LSB(chunkAddress) |
|
||||||
}; |
|
||||||
|
|
||||||
taskENTER_CRITICAL(); |
|
||||||
returnValue = HAL_I2C_Master_Transmit(&hi2c1, EEPROM_ADDRESS, data, 2, HAL_MAX_DELAY); |
|
||||||
if (returnValue != HAL_OK) { |
|
||||||
taskEXIT_CRITICAL(); |
|
||||||
return false; |
|
||||||
} |
|
||||||
returnValue = HAL_I2C_Master_Receive(&hi2c1, EEPROM_ADDRESS, verify, chunkSize, HAL_MAX_DELAY); |
|
||||||
taskEXIT_CRITICAL(); |
|
||||||
if (returnValue != HAL_OK) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
for (int j = 0; j < chunkSize; ++j) { |
|
||||||
if (buffer[i+j] != verify[j]) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return true; |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
#endif |
|
||||||
|
|
||||||
#if !USE_EEPROM |
|
||||||
const char *EEPROM_FILE_PATH = "/EEPROM.state"; |
|
||||||
#endif |
|
||||||
|
|
||||||
bool read(uint8_t *buffer, uint16_t bufferSize, uint16_t address) { |
|
||||||
#if USE_EEPROM |
|
||||||
return readFromEEPROM(buffer, bufferSize, address); |
|
||||||
#else |
|
||||||
File file; |
|
||||||
if (!file.open(EEPROM_FILE_PATH, FILE_READ)) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
file.seek(address); |
|
||||||
size_t readBytes = file.read(buffer, bufferSize); |
|
||||||
if (readBytes < bufferSize) { |
|
||||||
memset(buffer + readBytes, 0xFF, bufferSize - readBytes); |
|
||||||
} |
|
||||||
file.close(); |
|
||||||
return true; |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
bool write(const uint8_t *buffer, uint16_t bufferSize, uint16_t address) { |
|
||||||
#if USE_EEPROM |
|
||||||
return writeToEEPROM(buffer, bufferSize, address); |
|
||||||
#else |
|
||||||
File file; |
|
||||||
if (!file.open(EEPROM_FILE_PATH, FILE_OPEN_ALWAYS | FILE_WRITE)) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
file.seek(address); |
|
||||||
file.write(buffer, bufferSize); |
|
||||||
file.close(); |
|
||||||
return true; |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
void init() { |
|
||||||
g_testResult = TEST_OK; |
|
||||||
} |
|
||||||
|
|
||||||
bool test() { |
|
||||||
// TODO add test
|
|
||||||
return g_testResult == TEST_OK; |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace eeprom
|
|
||||||
} // namespace eez
|
|
@ -1,39 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2015-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
|
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace eeprom { |
|
||||||
|
|
||||||
static const uint16_t EEPROM_SIZE = 32768; |
|
||||||
|
|
||||||
void init(); |
|
||||||
bool test(); |
|
||||||
|
|
||||||
extern TestResult g_testResult; |
|
||||||
|
|
||||||
bool read(uint8_t *buffer, uint16_t buffer_size, uint16_t address); |
|
||||||
bool write(const uint8_t *buffer, uint16_t buffer_size, uint16_t address); |
|
||||||
|
|
||||||
} // namespace eeprom
|
|
||||||
} // namespace eez
|
|
@ -1,32 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace mcu { |
|
||||||
namespace encoder { |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
void write(int counter, bool clicked); |
|
||||||
void setButtonState(bool pressed); |
|
||||||
#endif |
|
||||||
|
|
||||||
} // namespace encoder
|
|
||||||
} // namespace mcu
|
|
||||||
} // namespace eez
|
|
@ -1,61 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ PSU Firmware |
|
||||||
* Copyright (C) 2015-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/core/hmi.h> |
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace hmi { |
|
||||||
|
|
||||||
#define MAX_GUI_OR_ENCODER_INACTIVITY_TIME_MS 60 * 1000 |
|
||||||
|
|
||||||
static uint32_t g_timeOfLastActivity; |
|
||||||
static bool g_inactivityTimeMaxed = true; |
|
||||||
|
|
||||||
void tick() { |
|
||||||
if (!g_inactivityTimeMaxed) { |
|
||||||
uint32_t inactivityPeriod = getInactivityPeriodMs(); |
|
||||||
if (inactivityPeriod >= MAX_GUI_OR_ENCODER_INACTIVITY_TIME_MS) { |
|
||||||
g_inactivityTimeMaxed = true; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void noteActivity() { |
|
||||||
g_timeOfLastActivity = millis(); |
|
||||||
g_inactivityTimeMaxed = false; |
|
||||||
} |
|
||||||
|
|
||||||
uint32_t getInactivityPeriodMs() { |
|
||||||
if (g_inactivityTimeMaxed) { |
|
||||||
return MAX_GUI_OR_ENCODER_INACTIVITY_TIME_MS; |
|
||||||
} else { |
|
||||||
return millis() - g_timeOfLastActivity; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
uint32_t getTimeOfLastActivity() { |
|
||||||
if (g_inactivityTimeMaxed) { |
|
||||||
return millis() - MAX_GUI_OR_ENCODER_INACTIVITY_TIME_MS; |
|
||||||
} else { |
|
||||||
return g_timeOfLastActivity; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace hmi
|
|
||||||
} // namespace eez
|
|
@ -1,33 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ PSU Firmware |
|
||||||
* Copyright (C) 2017-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace hmi { |
|
||||||
|
|
||||||
void tick(); |
|
||||||
|
|
||||||
void noteActivity(); |
|
||||||
uint32_t getInactivityPeriodMs(); |
|
||||||
uint32_t getTimeOfLastActivity(); |
|
||||||
|
|
||||||
} |
|
||||||
} // namespace eez::hmi
|
|
@ -1,285 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2020-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
|
|
||||||
#include <eez/conf.h> |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#if OPTION_KEYBOARD |
|
||||||
#include <usbh_hid.h> |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) && !defined(__EMSCRIPTEN__) |
|
||||||
#include <SDL.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace keyboard { |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#if OPTION_KEYBOARD |
|
||||||
void onKeyboardEvent(USBH_HandleTypeDef *phost); |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) && !defined(__EMSCRIPTEN__) |
|
||||||
void onKeyboardEvent(SDL_KeyboardEvent *key); |
|
||||||
#endif |
|
||||||
|
|
||||||
bool isDisplayDirty(); |
|
||||||
void updateDisplay(); |
|
||||||
|
|
||||||
void onPageChanged(); |
|
||||||
|
|
||||||
static const uint8_t KEY_MOD_LCTRL = 1 << 0; |
|
||||||
static const uint8_t KEY_MOD_LSHIFT = 1 << 1; |
|
||||||
static const uint8_t KEY_MOD_LALT = 1 << 2; |
|
||||||
static const uint8_t KEY_MOD_LGUI = 1 << 3; |
|
||||||
static const uint8_t KEY_MOD_RCTRL = 1 << 4; |
|
||||||
static const uint8_t KEY_MOD_RSHIFT = 1 << 5; |
|
||||||
static const uint8_t KEY_MOD_RALT = 1 << 6; |
|
||||||
static const uint8_t KEY_MOD_RGUI = 1 << 7; |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
#define KEY_NONE 0x00 |
|
||||||
#define KEY_ERRORROLLOVER 0x01 |
|
||||||
#define KEY_POSTFAIL 0x02 |
|
||||||
#define KEY_ERRORUNDEFINED 0x03 |
|
||||||
#define KEY_A 0x04 |
|
||||||
#define KEY_B 0x05 |
|
||||||
#define KEY_C 0x06 |
|
||||||
#define KEY_D 0x07 |
|
||||||
#define KEY_E 0x08 |
|
||||||
#define KEY_F 0x09 |
|
||||||
#define KEY_G 0x0A |
|
||||||
#define KEY_H 0x0B |
|
||||||
#define KEY_I 0x0C |
|
||||||
#define KEY_J 0x0D |
|
||||||
#define KEY_K 0x0E |
|
||||||
#define KEY_L 0x0F |
|
||||||
#define KEY_M 0x10 |
|
||||||
#define KEY_N 0x11 |
|
||||||
#define KEY_O 0x12 |
|
||||||
#define KEY_P 0x13 |
|
||||||
#define KEY_Q 0x14 |
|
||||||
#define KEY_R 0x15 |
|
||||||
#define KEY_S 0x16 |
|
||||||
#define KEY_T 0x17 |
|
||||||
#define KEY_U 0x18 |
|
||||||
#define KEY_V 0x19 |
|
||||||
#define KEY_W 0x1A |
|
||||||
#define KEY_X 0x1B |
|
||||||
#define KEY_Y 0x1C |
|
||||||
#define KEY_Z 0x1D |
|
||||||
#define KEY_1_EXCLAMATION_MARK 0x1E |
|
||||||
#define KEY_2_AT 0x1F |
|
||||||
#define KEY_3_NUMBER_SIGN 0x20 |
|
||||||
#define KEY_4_DOLLAR 0x21 |
|
||||||
#define KEY_5_PERCENT 0x22 |
|
||||||
#define KEY_6_CARET 0x23 |
|
||||||
#define KEY_7_AMPERSAND 0x24 |
|
||||||
#define KEY_8_ASTERISK 0x25 |
|
||||||
#define KEY_9_OPARENTHESIS 0x26 |
|
||||||
#define KEY_0_CPARENTHESIS 0x27 |
|
||||||
#define KEY_ENTER 0x28 |
|
||||||
#define KEY_ESCAPE 0x29 |
|
||||||
#define KEY_BACKSPACE 0x2A |
|
||||||
#define KEY_TAB 0x2B |
|
||||||
#define KEY_SPACEBAR 0x2C |
|
||||||
#define KEY_MINUS_UNDERSCORE 0x2D |
|
||||||
#define KEY_EQUAL_PLUS 0x2E |
|
||||||
#define KEY_OBRACKET_AND_OBRACE 0x2F |
|
||||||
#define KEY_CBRACKET_AND_CBRACE 0x30 |
|
||||||
#define KEY_BACKSLASH_VERTICAL_BAR 0x31 |
|
||||||
#define KEY_NONUS_NUMBER_SIGN_TILDE 0x32 |
|
||||||
#define KEY_SEMICOLON_COLON 0x33 |
|
||||||
#define KEY_SINGLE_AND_DOUBLE_QUOTE 0x34 |
|
||||||
#define KEY_GRAVE ACCENT AND TILDE 0x35 |
|
||||||
#define KEY_COMMA_AND_LESS 0x36 |
|
||||||
#define KEY_DOT_GREATER 0x37 |
|
||||||
#define KEY_SLASH_QUESTION 0x38 |
|
||||||
#define KEY_CAPS LOCK 0x39 |
|
||||||
#define KEY_F1 0x3A |
|
||||||
#define KEY_F2 0x3B |
|
||||||
#define KEY_F3 0x3C |
|
||||||
#define KEY_F4 0x3D |
|
||||||
#define KEY_F5 0x3E |
|
||||||
#define KEY_F6 0x3F |
|
||||||
#define KEY_F7 0x40 |
|
||||||
#define KEY_F8 0x41 |
|
||||||
#define KEY_F9 0x42 |
|
||||||
#define KEY_F10 0x43 |
|
||||||
#define KEY_F11 0x44 |
|
||||||
#define KEY_F12 0x45 |
|
||||||
#define KEY_PRINTSCREEN 0x46 |
|
||||||
#define KEY_SCROLL LOCK 0x47 |
|
||||||
#define KEY_PAUSE 0x48 |
|
||||||
#define KEY_INSERT 0x49 |
|
||||||
#define KEY_HOME 0x4A |
|
||||||
#define KEY_PAGEUP 0x4B |
|
||||||
#define KEY_DELETE 0x4C |
|
||||||
#define KEY_END1 0x4D |
|
||||||
#define KEY_PAGEDOWN 0x4E |
|
||||||
#define KEY_RIGHTARROW 0x4F |
|
||||||
#define KEY_LEFTARROW 0x50 |
|
||||||
#define KEY_DOWNARROW 0x51 |
|
||||||
#define KEY_UPARROW 0x52 |
|
||||||
#define KEY_KEYPAD_NUM_LOCK_AND_CLEAR 0x53 |
|
||||||
#define KEY_KEYPAD_SLASH 0x54 |
|
||||||
#define KEY_KEYPAD_ASTERIKS 0x55 |
|
||||||
#define KEY_KEYPAD_MINUS 0x56 |
|
||||||
#define KEY_KEYPAD_PLUS 0x57 |
|
||||||
#define KEY_KEYPAD_ENTER 0x58 |
|
||||||
#define KEY_KEYPAD_1_END 0x59 |
|
||||||
#define KEY_KEYPAD_2_DOWN_ARROW 0x5A |
|
||||||
#define KEY_KEYPAD_3_PAGEDN 0x5B |
|
||||||
#define KEY_KEYPAD_4_LEFT_ARROW 0x5C |
|
||||||
#define KEY_KEYPAD_5 0x5D |
|
||||||
#define KEY_KEYPAD_6_RIGHT_ARROW 0x5E |
|
||||||
#define KEY_KEYPAD_7_HOME 0x5F |
|
||||||
#define KEY_KEYPAD_8_UP_ARROW 0x60 |
|
||||||
#define KEY_KEYPAD_9_PAGEUP 0x61 |
|
||||||
#define KEY_KEYPAD_0_INSERT 0x62 |
|
||||||
#define KEY_KEYPAD_DECIMAL_SEPARATOR_DELETE 0x63 |
|
||||||
#define KEY_NONUS_BACK_SLASH_VERTICAL_BAR 0x64 |
|
||||||
#define KEY_APPLICATION 0x65 |
|
||||||
#define KEY_POWER 0x66 |
|
||||||
#define KEY_KEYPAD_EQUAL 0x67 |
|
||||||
#define KEY_F13 0x68 |
|
||||||
#define KEY_F14 0x69 |
|
||||||
#define KEY_F15 0x6A |
|
||||||
#define KEY_F16 0x6B |
|
||||||
#define KEY_F17 0x6C |
|
||||||
#define KEY_F18 0x6D |
|
||||||
#define KEY_F19 0x6E |
|
||||||
#define KEY_F20 0x6F |
|
||||||
#define KEY_F21 0x70 |
|
||||||
#define KEY_F22 0x71 |
|
||||||
#define KEY_F23 0x72 |
|
||||||
#define KEY_F24 0x73 |
|
||||||
// #define KEY_EXECUTE 0x74
|
|
||||||
#define KEY_HELP 0x75 |
|
||||||
#define KEY_MENU 0x76 |
|
||||||
#define KEY_SELECT 0x77 |
|
||||||
#define KEY_STOP 0x78 |
|
||||||
#define KEY_AGAIN 0x79 |
|
||||||
#define KEY_UNDO 0x7A |
|
||||||
#define KEY_CUT 0x7B |
|
||||||
#define KEY_COPY 0x7C |
|
||||||
#define KEY_PASTE 0x7D |
|
||||||
#define KEY_FIND 0x7E |
|
||||||
#define KEY_MUTE 0x7F |
|
||||||
#define KEY_VOLUME_UP 0x80 |
|
||||||
#define KEY_VOLUME_DOWN 0x81 |
|
||||||
#define KEY_LOCKING_CAPS_LOCK 0x82 |
|
||||||
#define KEY_LOCKING_NUM_LOCK 0x83 |
|
||||||
#define KEY_LOCKING_SCROLL_LOCK 0x84 |
|
||||||
#define KEY_KEYPAD_COMMA 0x85 |
|
||||||
#define KEY_KEYPAD_EQUAL_SIGN 0x86 |
|
||||||
#define KEY_INTERNATIONAL1 0x87 |
|
||||||
#define KEY_INTERNATIONAL2 0x88 |
|
||||||
#define KEY_INTERNATIONAL3 0x89 |
|
||||||
#define KEY_INTERNATIONAL4 0x8A |
|
||||||
#define KEY_INTERNATIONAL5 0x8B |
|
||||||
#define KEY_INTERNATIONAL6 0x8C |
|
||||||
#define KEY_INTERNATIONAL7 0x8D |
|
||||||
#define KEY_INTERNATIONAL8 0x8E |
|
||||||
#define KEY_INTERNATIONAL9 0x8F |
|
||||||
#define KEY_LANG1 0x90 |
|
||||||
#define KEY_LANG2 0x91 |
|
||||||
#define KEY_LANG3 0x92 |
|
||||||
#define KEY_LANG4 0x93 |
|
||||||
#define KEY_LANG5 0x94 |
|
||||||
#define KEY_LANG6 0x95 |
|
||||||
#define KEY_LANG7 0x96 |
|
||||||
#define KEY_LANG8 0x97 |
|
||||||
#define KEY_LANG9 0x98 |
|
||||||
#define KEY_ALTERNATE_ERASE 0x99 |
|
||||||
#define KEY_SYSREQ 0x9A |
|
||||||
#define KEY_CANCEL 0x9B |
|
||||||
#define KEY_CLEAR 0x9C |
|
||||||
#define KEY_PRIOR 0x9D |
|
||||||
#define KEY_RETURN 0x9E |
|
||||||
#define KEY_SEPARATOR 0x9F |
|
||||||
#define KEY_OUT 0xA0 |
|
||||||
#define KEY_OPER 0xA1 |
|
||||||
#define KEY_CLEAR_AGAIN 0xA2 |
|
||||||
#define KEY_CRSEL 0xA3 |
|
||||||
#define KEY_EXSEL 0xA4 |
|
||||||
#define KEY_KEYPAD_00 0xB0 |
|
||||||
#define KEY_KEYPAD_000 0xB1 |
|
||||||
#define KEY_THOUSANDS_SEPARATOR 0xB2 |
|
||||||
#define KEY_DECIMAL_SEPARATOR 0xB3 |
|
||||||
#define KEY_CURRENCY_UNIT 0xB4 |
|
||||||
#define KEY_CURRENCY_SUB_UNIT 0xB5 |
|
||||||
#define KEY_KEYPAD_OPARENTHESIS 0xB6 |
|
||||||
#define KEY_KEYPAD_CPARENTHESIS 0xB7 |
|
||||||
#define KEY_KEYPAD_OBRACE 0xB8 |
|
||||||
#define KEY_KEYPAD_CBRACE 0xB9 |
|
||||||
#define KEY_KEYPAD_TAB 0xBA |
|
||||||
#define KEY_KEYPAD_BACKSPACE 0xBB |
|
||||||
#define KEY_KEYPAD_A 0xBC |
|
||||||
#define KEY_KEYPAD_B 0xBD |
|
||||||
#define KEY_KEYPAD_C 0xBE |
|
||||||
#define KEY_KEYPAD_D 0xBF |
|
||||||
#define KEY_KEYPAD_E 0xC0 |
|
||||||
#define KEY_KEYPAD_F 0xC1 |
|
||||||
#define KEY_KEYPAD_XOR 0xC2 |
|
||||||
#define KEY_KEYPAD_CARET 0xC3 |
|
||||||
#define KEY_KEYPAD_PERCENT 0xC4 |
|
||||||
#define KEY_KEYPAD_LESS 0xC5 |
|
||||||
#define KEY_KEYPAD_GREATER 0xC6 |
|
||||||
#define KEY_KEYPAD_AMPERSAND 0xC7 |
|
||||||
#define KEY_KEYPAD_LOGICAL_AND 0xC8 |
|
||||||
#define KEY_KEYPAD_VERTICAL_BAR 0xC9 |
|
||||||
#define KEY_KEYPAD_LOGIACL_OR 0xCA |
|
||||||
#define KEY_KEYPAD_COLON 0xCB |
|
||||||
#define KEY_KEYPAD_NUMBER_SIGN 0xCC |
|
||||||
#define KEY_KEYPAD_SPACE 0xCD |
|
||||||
#define KEY_KEYPAD_AT 0xCE |
|
||||||
#define KEY_KEYPAD_EXCLAMATION_MARK 0xCF |
|
||||||
#define KEY_KEYPAD_MEMORY_STORE 0xD0 |
|
||||||
#define KEY_KEYPAD_MEMORY_RECALL 0xD1 |
|
||||||
#define KEY_KEYPAD_MEMORY_CLEAR 0xD2 |
|
||||||
#define KEY_KEYPAD_MEMORY_ADD 0xD3 |
|
||||||
#define KEY_KEYPAD_MEMORY_SUBTRACT 0xD4 |
|
||||||
#define KEY_KEYPAD_MEMORY_MULTIPLY 0xD5 |
|
||||||
#define KEY_KEYPAD_MEMORY_DIVIDE 0xD6 |
|
||||||
#define KEY_KEYPAD_PLUSMINUS 0xD7 |
|
||||||
#define KEY_KEYPAD_CLEAR 0xD8 |
|
||||||
#define KEY_KEYPAD_CLEAR_ENTRY 0xD9 |
|
||||||
#define KEY_KEYPAD_BINARY 0xDA |
|
||||||
#define KEY_KEYPAD_OCTAL 0xDB |
|
||||||
#define KEY_KEYPAD_DECIMAL 0xDC |
|
||||||
#define KEY_KEYPAD_HEXADECIMAL 0xDD |
|
||||||
#define KEY_LEFTCONTROL 0xE0 |
|
||||||
#define KEY_LEFTSHIFT 0xE1 |
|
||||||
#define KEY_LEFTALT 0xE2 |
|
||||||
#define KEY_LEFT_GUI 0xE3 |
|
||||||
#define KEY_RIGHTCONTROL 0xE4 |
|
||||||
#define KEY_RIGHTSHIFT 0xE5 |
|
||||||
#define KEY_RIGHTALT 0xE6 |
|
||||||
#define KEY_RIGHT_GUI 0xE7 |
|
||||||
#endif // EEZ_PLATFORM_STM32
|
|
||||||
|
|
||||||
} // keyboard
|
|
||||||
} // eez
|
|
@ -1,99 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2015-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <assert.h> |
|
||||||
|
|
||||||
#include <eez/core/memory.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
uint8_t g_memory[MEMORY_SIZE] = { 0 }; |
|
||||||
#endif |
|
||||||
|
|
||||||
uint8_t *DECOMPRESSED_ASSETS_START_ADDRESS; |
|
||||||
uint8_t *FLOW_TO_DEBUGGER_MESSAGE_BUFFER; |
|
||||||
|
|
||||||
uint8_t *VRAM_BUFFER1_START_ADDRESS; |
|
||||||
uint8_t *VRAM_BUFFER2_START_ADDRESS; |
|
||||||
|
|
||||||
uint8_t *VRAM_ANIMATION_BUFFER1_START_ADDRESS; |
|
||||||
uint8_t *VRAM_ANIMATION_BUFFER2_START_ADDRESS; |
|
||||||
|
|
||||||
uint8_t *VRAM_AUX_BUFFER1_START_ADDRESS; |
|
||||||
uint8_t *VRAM_AUX_BUFFER2_START_ADDRESS; |
|
||||||
uint8_t *VRAM_AUX_BUFFER3_START_ADDRESS; |
|
||||||
uint8_t *VRAM_AUX_BUFFER4_START_ADDRESS; |
|
||||||
uint8_t *VRAM_AUX_BUFFER5_START_ADDRESS; |
|
||||||
uint8_t *VRAM_AUX_BUFFER6_START_ADDRESS; |
|
||||||
|
|
||||||
uint8_t *SCREENSHOOT_BUFFER_START_ADDRESS; |
|
||||||
|
|
||||||
uint8_t *GUI_STATE_BUFFER; |
|
||||||
|
|
||||||
uint8_t *ALLOC_BUFFER; |
|
||||||
uint32_t ALLOC_BUFFER_SIZE; |
|
||||||
|
|
||||||
void initMemory() { |
|
||||||
initAssetsMemory(); |
|
||||||
initOtherMemory(); |
|
||||||
} |
|
||||||
|
|
||||||
void initAssetsMemory() { |
|
||||||
ALLOC_BUFFER = MEMORY_BEGIN; |
|
||||||
ALLOC_BUFFER_SIZE = MEMORY_SIZE; |
|
||||||
|
|
||||||
DECOMPRESSED_ASSETS_START_ADDRESS = allocBuffer(MAX_DECOMPRESSED_ASSETS_SIZE); |
|
||||||
} |
|
||||||
|
|
||||||
void initOtherMemory() { |
|
||||||
FLOW_TO_DEBUGGER_MESSAGE_BUFFER = allocBuffer(FLOW_TO_DEBUGGER_MESSAGE_BUFFER_SIZE); |
|
||||||
|
|
||||||
uint32_t VRAM_BUFFER_SIZE = DISPLAY_WIDTH * DISPLAY_HEIGHT * DISPLAY_BPP / 8; |
|
||||||
|
|
||||||
VRAM_BUFFER1_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_BUFFER2_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
|
|
||||||
VRAM_ANIMATION_BUFFER1_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_ANIMATION_BUFFER2_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
|
|
||||||
VRAM_AUX_BUFFER1_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_AUX_BUFFER2_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_AUX_BUFFER3_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_AUX_BUFFER4_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_AUX_BUFFER5_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
VRAM_AUX_BUFFER6_START_ADDRESS = allocBuffer(VRAM_BUFFER_SIZE); |
|
||||||
|
|
||||||
GUI_STATE_BUFFER = allocBuffer(GUI_STATE_BUFFER_SIZE); |
|
||||||
|
|
||||||
SCREENSHOOT_BUFFER_START_ADDRESS = VRAM_ANIMATION_BUFFER1_START_ADDRESS; |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t *allocBuffer(uint32_t size) { |
|
||||||
size = ((size + 1023) / 1024) * 1024; |
|
||||||
|
|
||||||
auto buffer = ALLOC_BUFFER; |
|
||||||
|
|
||||||
assert(ALLOC_BUFFER_SIZE > size); |
|
||||||
ALLOC_BUFFER += size; |
|
||||||
ALLOC_BUFFER_SIZE -= size; |
|
||||||
|
|
||||||
return buffer; |
|
||||||
} |
|
||||||
|
|
||||||
} // eez
|
|
@ -1,84 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2015-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
#include <eez/conf.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
static uint8_t * const MEMORY_BEGIN = (uint8_t *)0xc0000000u; |
|
||||||
#if CONF_OPTION_FPGA |
|
||||||
static const uint32_t MEMORY_SIZE = 32 * 1024 * 1024; |
|
||||||
#elif defined(EEZ_PLATFORM_STM32F469I_DISCO) |
|
||||||
static const uint32_t MEMORY_SIZE = 16 * 1024 * 1024; |
|
||||||
#else |
|
||||||
static const uint32_t MEMORY_SIZE = 8 * 1024 * 1024; |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
extern uint8_t g_memory[]; |
|
||||||
static uint8_t * const MEMORY_BEGIN = g_memory; |
|
||||||
static const uint32_t MEMORY_SIZE = 64 * 1024 * 1024; |
|
||||||
#endif |
|
||||||
|
|
||||||
extern uint8_t *ALLOC_BUFFER; |
|
||||||
extern uint32_t ALLOC_BUFFER_SIZE; |
|
||||||
|
|
||||||
extern uint8_t *DECOMPRESSED_ASSETS_START_ADDRESS; |
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
static const uint32_t MAX_DECOMPRESSED_ASSETS_SIZE = 2 * 1024 * 1024; |
|
||||||
#endif |
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
static const uint32_t MAX_DECOMPRESSED_ASSETS_SIZE = 8 * 1024 * 1024; |
|
||||||
#endif |
|
||||||
|
|
||||||
extern uint8_t *FLOW_TO_DEBUGGER_MESSAGE_BUFFER; |
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
static const uint32_t FLOW_TO_DEBUGGER_MESSAGE_BUFFER_SIZE = 32 * 1024; |
|
||||||
#endif |
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
static const uint32_t FLOW_TO_DEBUGGER_MESSAGE_BUFFER_SIZE = 1024 * 1024; |
|
||||||
#endif |
|
||||||
|
|
||||||
extern uint8_t *VRAM_BUFFER1_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_BUFFER2_START_ADDRESS; |
|
||||||
|
|
||||||
extern uint8_t *VRAM_ANIMATION_BUFFER1_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_ANIMATION_BUFFER2_START_ADDRESS; |
|
||||||
|
|
||||||
extern uint8_t *VRAM_AUX_BUFFER1_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_AUX_BUFFER2_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_AUX_BUFFER3_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_AUX_BUFFER4_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_AUX_BUFFER5_START_ADDRESS; |
|
||||||
extern uint8_t *VRAM_AUX_BUFFER6_START_ADDRESS; |
|
||||||
|
|
||||||
extern uint8_t* SCREENSHOOT_BUFFER_START_ADDRESS; |
|
||||||
|
|
||||||
extern uint8_t* GUI_STATE_BUFFER; |
|
||||||
|
|
||||||
void initMemory(); |
|
||||||
void initAssetsMemory(); |
|
||||||
void initOtherMemory(); |
|
||||||
uint8_t *allocBuffer(uint32_t size); |
|
||||||
|
|
||||||
} // eez
|
|
@ -1,38 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2020-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/gui/event.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace mouse { |
|
||||||
|
|
||||||
bool isMouseEnabled(); |
|
||||||
|
|
||||||
bool isDisplayDirty(); |
|
||||||
void updateDisplay(); |
|
||||||
|
|
||||||
void onPageChanged(); |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
void onMouseEvent(bool mouseButton1IsPressed, int mouseX, int mouseY); |
|
||||||
#endif |
|
||||||
|
|
||||||
} // mouse
|
|
||||||
} // eez
|
|
@ -1,37 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#include <main.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
uint32_t millis() { |
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
return HAL_GetTick(); |
|
||||||
#endif |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_SIMULATOR) |
|
||||||
return osKernelGetTickCount(); |
|
||||||
#endif |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace eez
|
|
@ -1,102 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
|
|
||||||
#include "cmsis_os2.h" |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#include "FreeRTOS.h" |
|
||||||
#include "task.h" |
|
||||||
#endif |
|
||||||
|
|
||||||
#define EEZ_THREAD_DECLARE(NAME, PRIORITY, STACK_SIZE) \ |
|
||||||
osThreadId_t g_##NAME##TaskHandle; \
|
|
||||||
const osThreadAttr_t g_##NAME##TaskAttributes = { \
|
|
||||||
#NAME, \ |
|
||||||
0, \
|
|
||||||
0, \
|
|
||||||
0, \
|
|
||||||
0, \
|
|
||||||
STACK_SIZE, \
|
|
||||||
osPriority##PRIORITY, \
|
|
||||||
0, \
|
|
||||||
0, \
|
|
||||||
} |
|
||||||
#define EEZ_THREAD_CREATE(NAME, THREAD_FUNC) g_##NAME##TaskHandle = osThreadNew(THREAD_FUNC, nullptr, &g_##NAME##TaskAttributes); |
|
||||||
#define EEZ_THREAD_TERMINATE(NAME) osThreadTerminate(g_##NAME##TaskHandle) |
|
||||||
|
|
||||||
#define EEZ_MESSAGE_QUEUE_DECLARE(NAME, OBJECT_DEF) \ |
|
||||||
struct NAME##MessageQueueObject OBJECT_DEF; \
|
|
||||||
osMessageQueueId_t g_##NAME##MessageQueueId |
|
||||||
#define EEZ_MESSAGE_QUEUE_CREATE(NAME, QUEUE_SIZE) g_##NAME##MessageQueueId = osMessageQueueNew(QUEUE_SIZE, sizeof(NAME##MessageQueueObject), nullptr) |
|
||||||
#define EEZ_MESSAGE_QUEUE_GET(NAME, OBJ, TIMEOUT) (osMessageQueueGet(g_##NAME##MessageQueueId, &OBJ, nullptr, TIMEOUT) == osOK) |
|
||||||
#define EEZ_MESSAGE_QUEUE_PUT(NAME, OBJ, TIMEOUT) osMessageQueuePut(g_##NAME##MessageQueueId, &OBJ, 0, TIMEOUT) |
|
||||||
|
|
||||||
#define EEZ_MUTEX_DECLARE(NAME) \ |
|
||||||
osMutexId_t g_##NAME##mutexId;\
|
|
||||||
const osMutexAttr_t g_##NAME##mutexAttr = { \
|
|
||||||
#NAME, \ |
|
||||||
osMutexRecursive | osMutexPrioInherit, \
|
|
||||||
NULL, \
|
|
||||||
0U \
|
|
||||||
} |
|
||||||
#define EEZ_MUTEX_CREATE(NAME) g_##NAME##mutexId = osMutexNew(&g_##NAME##mutexAttr) |
|
||||||
#define EEZ_MUTEX_WAIT(NAME, TIMEOUT) osMutexAcquire(g_##NAME##mutexId, TIMEOUT) == osOK |
|
||||||
#define EEZ_MUTEX_RELEASE(NAME) osMutexRelease(g_##NAME##mutexId) |
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__) |
|
||||||
#ifndef EM_PORT_API |
|
||||||
# if defined(__EMSCRIPTEN__) |
|
||||||
# include <emscripten.h> |
|
||||||
# if defined(__cplusplus) |
|
||||||
# define EM_PORT_API(rettype) extern "C" rettype EMSCRIPTEN_KEEPALIVE |
|
||||||
# else |
|
||||||
# define EM_PORT_API(rettype) rettype EMSCRIPTEN_KEEPALIVE |
|
||||||
# endif |
|
||||||
# else |
|
||||||
# if defined(__cplusplus) |
|
||||||
# define EM_PORT_API(rettype) extern "C" rettype |
|
||||||
# else |
|
||||||
# define EM_PORT_API(rettype) rettype |
|
||||||
# endif |
|
||||||
# endif |
|
||||||
#endif |
|
||||||
#else |
|
||||||
# define EM_PORT_API(rettype) rettype |
|
||||||
#endif |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
enum TestResult { |
|
||||||
TEST_NONE, |
|
||||||
TEST_FAILED, |
|
||||||
TEST_OK, |
|
||||||
TEST_CONNECTING, |
|
||||||
TEST_SKIPPED, |
|
||||||
TEST_WARNING |
|
||||||
}; |
|
||||||
|
|
||||||
uint32_t millis(); |
|
||||||
|
|
||||||
extern bool g_shutdown; |
|
||||||
void shutdown(); |
|
||||||
|
|
||||||
} // namespace eez
|
|
@ -1,51 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2015-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace sound { |
|
||||||
|
|
||||||
void init(); |
|
||||||
void tick(); |
|
||||||
|
|
||||||
/// Play power up tune.
|
|
||||||
enum PlayPowerUpCondition { |
|
||||||
PLAY_POWER_UP_CONDITION_NONE, |
|
||||||
PLAY_POWER_UP_CONDITION_TEST_SUCCESSFUL, |
|
||||||
PLAY_POWER_UP_CONDITION_WELCOME_PAGE_IS_ACTIVE |
|
||||||
}; |
|
||||||
|
|
||||||
void playPowerUp(PlayPowerUpCondition condition); |
|
||||||
|
|
||||||
/// Play power down tune.
|
|
||||||
void playPowerDown(); |
|
||||||
|
|
||||||
/// Play beep sound.
|
|
||||||
void playBeep(bool force = false); |
|
||||||
|
|
||||||
/// Play click sound
|
|
||||||
void playClick(); |
|
||||||
|
|
||||||
/// Play shutter sound
|
|
||||||
void playShutter(); |
|
||||||
|
|
||||||
} // namespace sound
|
|
||||||
} // namespace eez
|
|
@ -1,30 +0,0 @@ |
|||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/core/unit.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
enum EncoderMode { |
|
||||||
ENCODER_MODE_MIN, |
|
||||||
ENCODER_MODE_AUTO = ENCODER_MODE_MIN, |
|
||||||
ENCODER_MODE_STEP1, |
|
||||||
ENCODER_MODE_STEP2, |
|
||||||
ENCODER_MODE_STEP3, |
|
||||||
ENCODER_MODE_STEP4, |
|
||||||
ENCODER_MODE_STEP5, |
|
||||||
ENCODER_MODE_MAX = ENCODER_MODE_STEP5 |
|
||||||
}; |
|
||||||
|
|
||||||
struct StepValues { |
|
||||||
int count; |
|
||||||
const float *values; |
|
||||||
Unit unit; |
|
||||||
struct { |
|
||||||
bool accelerationEnabled; |
|
||||||
float range; |
|
||||||
float step; |
|
||||||
EncoderMode mode; |
|
||||||
} encoderSettings; |
|
||||||
}; |
|
||||||
|
|
||||||
} // namespace eez
|
|
@ -1,309 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <string.h> |
|
||||||
|
|
||||||
#include <eez/core/unit.h> |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
#include <scpi/types.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
const char *g_unitNames[] = { |
|
||||||
"", // UNIT_NONE
|
|
||||||
"V", // UNIT_VOLT
|
|
||||||
"mV", // UNIT_MILLI_VOLT
|
|
||||||
"A", // UNIT_AMPER
|
|
||||||
"mA", // UNIT_MILLI_AMPER
|
|
||||||
"uA", // UNIT_MICRO_AMPER
|
|
||||||
"W", // UNIT_WATT
|
|
||||||
"mW", // UNIT_MILLI_WATT
|
|
||||||
"s", // UNIT_SECOND
|
|
||||||
"ms", // UNIT_MILLI_SECOND
|
|
||||||
DEGREE_SYMBOL"C", // UNIT_CELSIUS
|
|
||||||
"rpm", // UNIT_RPM
|
|
||||||
"\xb4", // UNIT_OHM
|
|
||||||
"K\xb4", // UNIT_KOHM
|
|
||||||
"M\xb4", // UNIT_MOHM
|
|
||||||
"%", // UNIT_PERCENT
|
|
||||||
"Hz", // UNIT_HERTZ
|
|
||||||
"mHz", // UNIT_MILLI_HERTZ
|
|
||||||
"KHz", // UNIT_KHERTZ
|
|
||||||
"MHz", // UNIT_MHERTZ
|
|
||||||
"J", // UNIT_JOULE
|
|
||||||
"F", // UNIT_FARAD
|
|
||||||
"mF", // UNIT_MILLI_FARAD
|
|
||||||
"uF", // UNIT_MICRO_FARAD
|
|
||||||
"nF", // UNIT_NANO_FARAD
|
|
||||||
"pF", // UNIT_PICO_FARAD
|
|
||||||
"minutes", // UNIT_MINUTE
|
|
||||||
"VA", // UNIT_VOLT_AMPERE
|
|
||||||
"VAR", // UNIT_VOLT_AMPERE_REACTIVE
|
|
||||||
DEGREE_SYMBOL, // UNIT_DEGREE
|
|
||||||
"Vpp", // UNIT_VOLT_PP
|
|
||||||
"mVpp", // UNIT_MILLI_VOLT_PP
|
|
||||||
"App", // UNIT_AMPER_PP
|
|
||||||
"mApp", // UNIT_MILLI_AMPER_PP
|
|
||||||
"uApp", // UNIT_MICRO_AMPER_PP
|
|
||||||
}; |
|
||||||
|
|
||||||
const Unit g_baseUnit[] = { |
|
||||||
UNIT_NONE, // UNIT_NONE
|
|
||||||
UNIT_VOLT, // UNIT_VOLT
|
|
||||||
UNIT_VOLT, // UNIT_MILLI_VOLT
|
|
||||||
UNIT_AMPER, // UNIT_AMPER
|
|
||||||
UNIT_AMPER, // UNIT_MILLI_AMPER
|
|
||||||
UNIT_AMPER, // UNIT_MICRO_AMPER
|
|
||||||
UNIT_WATT, // UNIT_WATT
|
|
||||||
UNIT_WATT, // UNIT_MILLI_WATT
|
|
||||||
UNIT_SECOND, // UNIT_SECOND
|
|
||||||
UNIT_SECOND, // UNIT_MILLI_SECOND
|
|
||||||
UNIT_CELSIUS, // UNIT_CELSIUS
|
|
||||||
UNIT_RPM, // UNIT_RPM
|
|
||||||
UNIT_OHM, // UNIT_OHM
|
|
||||||
UNIT_OHM, // UNIT_KOHM
|
|
||||||
UNIT_OHM, // UNIT_MOHM
|
|
||||||
UNIT_PERCENT, // UNIT_PERCENT
|
|
||||||
UNIT_HERTZ, // UNIT_HERTZ
|
|
||||||
UNIT_HERTZ, // UNIT_MILLI_HERTZ
|
|
||||||
UNIT_HERTZ, // UNIT_KHERTZ
|
|
||||||
UNIT_HERTZ, // UNIT_MHERTZ
|
|
||||||
UNIT_JOULE, // UNIT_JOULE
|
|
||||||
UNIT_FARAD, // UNIT_FARAD
|
|
||||||
UNIT_FARAD, // UNIT_MILLI_FARAD
|
|
||||||
UNIT_FARAD, // UNIT_MICRO_FARAD
|
|
||||||
UNIT_FARAD, // UNIT_NANO_FARAD
|
|
||||||
UNIT_FARAD, // UNIT_PICO_FARAD
|
|
||||||
UNIT_SECOND, // UNIT_MINUTE
|
|
||||||
UNIT_VOLT_AMPERE, // UNIT_VOLT_AMPERE
|
|
||||||
UNIT_VOLT_AMPERE, //UNIT_VOLT_AMPERE_REACTIVE
|
|
||||||
UNIT_DEGREE, // UNIT_DEGREE
|
|
||||||
UNIT_VOLT_PP, // UNIT_VOLT_PP
|
|
||||||
UNIT_VOLT_PP, // UNIT_MILLI_VOLT_PP
|
|
||||||
UNIT_AMPER_PP, // UNIT_AMPER_PP
|
|
||||||
UNIT_AMPER_PP, // UNIT_MILLI_AMPER_PP
|
|
||||||
UNIT_AMPER_PP, // UNIT_MICRO_AMPER_PP
|
|
||||||
}; |
|
||||||
|
|
||||||
const float g_unitFactor[] = { |
|
||||||
1.0f, // UNIT_NONE
|
|
||||||
1.0f, // UNIT_VOLT
|
|
||||||
1E-3f, // UNIT_MILLI_VOLT
|
|
||||||
1.0f, // UNIT_AMPER
|
|
||||||
1E-3f, // UNIT_MILLI_AMPER
|
|
||||||
1E-6f, // UNIT_MICRO_AMPER
|
|
||||||
1.0f, // UNIT_WATT
|
|
||||||
1E-3f, // UNIT_MILLI_WATT
|
|
||||||
1.0f, // UNIT_SECOND
|
|
||||||
1E-3f, // UNIT_MILLI_SECOND
|
|
||||||
1.0f, // UNIT_CELSIUS
|
|
||||||
1.0f, // UNIT_RPM
|
|
||||||
1.0f, // UNIT_OHM
|
|
||||||
1E3f, // UNIT_KOHM
|
|
||||||
1E6f, // UNIT_MOHM
|
|
||||||
1.0f, // UNIT_PERCENT
|
|
||||||
1.0f, // UNIT_HERTZ
|
|
||||||
1E-3f, // UNIT_MILLI_HERTZ
|
|
||||||
1E3f, // UNIT_KHERTZ
|
|
||||||
1E6f, // UNIT_MHERTZ
|
|
||||||
1.0f, // UNIT_JOULE
|
|
||||||
1.0f, // UNIT_FARAD
|
|
||||||
1E-3f, // UNIT_MILLI_FARAD
|
|
||||||
1E-6f, // UNIT_MICRO_FARAD
|
|
||||||
1E-9f, // UNIT_NANO_FARAD
|
|
||||||
1E-12f, // UNIT_PICO_FARAD
|
|
||||||
60.0f, // UNIT_MINUTE
|
|
||||||
1.0f, // UNIT_VOLT_AMPERE
|
|
||||||
1.0f, //UNIT_VOLT_AMPERE_REACTIVE
|
|
||||||
1.0f, // UNIT_DEGREE
|
|
||||||
1.0f, // UNIT_VOLT_PP
|
|
||||||
1E-3f, // UNIT_MILLI_VOLT_PP
|
|
||||||
1.0f, // UNIT_AMPER_PP
|
|
||||||
1E-3f, // UNIT_MILLI_AMPER_PP
|
|
||||||
1E-6f, // UNIT_MICRO_AMPER_PP
|
|
||||||
}; |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
static const int g_scpiUnits[] = { |
|
||||||
SCPI_UNIT_NONE, // UNIT_NONE
|
|
||||||
SCPI_UNIT_VOLT, // UNIT_VOLT
|
|
||||||
SCPI_UNIT_VOLT, // UNIT_MILLI_VOLT
|
|
||||||
SCPI_UNIT_AMPER, // UNIT_AMPER
|
|
||||||
SCPI_UNIT_AMPER, // UNIT_MILLI_AMPER
|
|
||||||
SCPI_UNIT_AMPER, // UNIT_MICRO_AMPER
|
|
||||||
SCPI_UNIT_WATT, // UNIT_WATT
|
|
||||||
SCPI_UNIT_WATT, // UNIT_MILLI_WATT
|
|
||||||
SCPI_UNIT_SECOND, // UNIT_SECOND
|
|
||||||
SCPI_UNIT_SECOND, // UNIT_MILLI_SECOND
|
|
||||||
SCPI_UNIT_CELSIUS, // UNIT_CELSIUS
|
|
||||||
SCPI_UNIT_NONE, // UNIT_RPM
|
|
||||||
SCPI_UNIT_OHM, // UNIT_OHM
|
|
||||||
SCPI_UNIT_OHM, // UNIT_KOHM
|
|
||||||
SCPI_UNIT_OHM, // UNIT_MOHM
|
|
||||||
SCPI_UNIT_NONE, // UNIT_PERCENT
|
|
||||||
SCPI_UNIT_HERTZ, // UNIT_HERTZ
|
|
||||||
SCPI_UNIT_HERTZ, // UNIT_MILLI_HERTZ
|
|
||||||
SCPI_UNIT_HERTZ, // UNIT_KHERTZ
|
|
||||||
SCPI_UNIT_HERTZ, // UNIT_MHERTZ
|
|
||||||
SCPI_UNIT_JOULE, // UNIT_JOULE
|
|
||||||
SCPI_UNIT_FARAD, // UNIT_FARAD
|
|
||||||
SCPI_UNIT_FARAD, // UNIT_MILLI_FARAD
|
|
||||||
SCPI_UNIT_FARAD, // UNIT_MICRO_FARAD
|
|
||||||
SCPI_UNIT_FARAD, // UNIT_NANO_FARAD
|
|
||||||
SCPI_UNIT_FARAD, // UNIT_PICO_FARAD
|
|
||||||
SCPI_UNIT_SECOND, // UNIT_MINUTE
|
|
||||||
SCPI_UNIT_WATT, // UNIT_VOLT_AMPERE
|
|
||||||
SCPI_UNIT_WATT, // UNIT_VOLT_AMPERE_REACTIVE
|
|
||||||
SCPI_UNIT_DEGREE, // UNIT_DEGREE
|
|
||||||
SCPI_UNIT_VOLT, // UNIT_VOLT_PP
|
|
||||||
SCPI_UNIT_VOLT, // UNIT_MILLI_VOLT_PP
|
|
||||||
SCPI_UNIT_AMPER, // UNIT_AMPER_PP
|
|
||||||
SCPI_UNIT_AMPER, // UNIT_MILLI_AMPER_PP
|
|
||||||
SCPI_UNIT_AMPER, // UNIT_MICRO_AMPER_PP
|
|
||||||
}; |
|
||||||
#endif |
|
||||||
|
|
||||||
Unit getUnitFromName(const char *unitName) { |
|
||||||
if (unitName) { |
|
||||||
for (unsigned i = 0; i < sizeof(g_unitNames) / sizeof(const char *); i++) { |
|
||||||
if (strcmp(g_unitNames[i], unitName) == 0) { |
|
||||||
return (Unit)i; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return UNIT_NONE; |
|
||||||
} |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
int getScpiUnit(Unit unit) { |
|
||||||
if (unit == UNIT_UNKNOWN) { |
|
||||||
return SCPI_UNIT_NONE; |
|
||||||
} |
|
||||||
return g_scpiUnits[unit]; |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
Unit getBaseUnit(Unit unit) { |
|
||||||
if (unit == UNIT_UNKNOWN) { |
|
||||||
return UNIT_UNKNOWN; |
|
||||||
} |
|
||||||
return g_baseUnit[unit]; |
|
||||||
} |
|
||||||
|
|
||||||
float getUnitFactor(Unit unit) { |
|
||||||
if (unit == UNIT_UNKNOWN) { |
|
||||||
return 1.0f; |
|
||||||
} |
|
||||||
return g_unitFactor[unit]; |
|
||||||
} |
|
||||||
|
|
||||||
static Unit getDerivedUnit(Unit unit, float factor) { |
|
||||||
if (unit == UNIT_UNKNOWN) { |
|
||||||
return UNIT_UNKNOWN; |
|
||||||
} |
|
||||||
|
|
||||||
for (size_t i = 0; i < sizeof(g_baseUnit); i++) { |
|
||||||
if (g_baseUnit[i] == g_baseUnit[unit] && g_unitFactor[i] == factor) { |
|
||||||
return (Unit)i; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return UNIT_UNKNOWN; |
|
||||||
} |
|
||||||
|
|
||||||
static const float FACTORS[] = { 1E-12F, 1E-9F, 1E-6F, 1E-3F, 1E0F, 1E3F, 1E6F, 1E9F, 1E12F }; |
|
||||||
|
|
||||||
Unit findDerivedUnit(float value, Unit unit) { |
|
||||||
Unit result; |
|
||||||
|
|
||||||
for (int factorIndex = 1; ; factorIndex++) { |
|
||||||
float factor = FACTORS[factorIndex]; |
|
||||||
if (factor > 1.0F) { |
|
||||||
break; |
|
||||||
} |
|
||||||
if (value < factor) { |
|
||||||
result = getDerivedUnit(unit, FACTORS[factorIndex - 1]); |
|
||||||
if (result != UNIT_UNKNOWN) { |
|
||||||
return result; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
for (int factorIndex = sizeof(FACTORS) / sizeof(float) - 1; factorIndex >= 0; factorIndex--) { |
|
||||||
float factor = FACTORS[factorIndex]; |
|
||||||
if (factor == 1.0F) { |
|
||||||
break; |
|
||||||
} |
|
||||||
if (value >= factor) { |
|
||||||
result = getDerivedUnit(unit, factor); |
|
||||||
if (result != UNIT_UNKNOWN) { |
|
||||||
return result; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return unit; |
|
||||||
} |
|
||||||
|
|
||||||
float getSmallerFactor(float factor) { |
|
||||||
for (int factorIndex = sizeof(FACTORS) / sizeof(float) - 1; factorIndex > 0; factorIndex--) { |
|
||||||
float itFactor = FACTORS[factorIndex]; |
|
||||||
if (itFactor < factor) { |
|
||||||
return itFactor; |
|
||||||
} |
|
||||||
} |
|
||||||
return FACTORS[0]; |
|
||||||
} |
|
||||||
|
|
||||||
Unit getSmallerUnit(Unit unit, float min, float precision) { |
|
||||||
float factor = getUnitFactor(unit); |
|
||||||
if (precision <= factor || min <= factor) { |
|
||||||
return getDerivedUnit(unit, getSmallerFactor(factor)); |
|
||||||
} |
|
||||||
return UNIT_UNKNOWN; |
|
||||||
} |
|
||||||
|
|
||||||
Unit getBiggestUnit(Unit unit, float max) { |
|
||||||
for (int factorIndex = sizeof(FACTORS) / sizeof(float) - 1; factorIndex >= 0; factorIndex--) { |
|
||||||
float factor = FACTORS[factorIndex]; |
|
||||||
if (max >= factor) { |
|
||||||
auto result = getDerivedUnit(unit, factor); |
|
||||||
if (result != UNIT_UNKNOWN) { |
|
||||||
return result; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return UNIT_UNKNOWN; |
|
||||||
} |
|
||||||
|
|
||||||
Unit getSmallestUnit(Unit unit, float min, float precision) { |
|
||||||
for (int factorIndex = 0; factorIndex < int(sizeof(FACTORS) / sizeof(float)); factorIndex++) { |
|
||||||
float factor = FACTORS[factorIndex]; |
|
||||||
if (precision <= factor || min <= factor) { |
|
||||||
auto result = getDerivedUnit(unit, factor); |
|
||||||
if (result != UNIT_UNKNOWN) { |
|
||||||
return result; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return UNIT_UNKNOWN; |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace eez
|
|
@ -1,94 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#define INFINITY_SYMBOL "\x91" |
|
||||||
#define DEGREE_SYMBOL "\x8a" |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
// order of units should not be changed since it is used in DLOG files
|
|
||||||
enum Unit { |
|
||||||
UNIT_UNKNOWN = 255, |
|
||||||
UNIT_NONE = 0, |
|
||||||
UNIT_VOLT, |
|
||||||
UNIT_MILLI_VOLT, |
|
||||||
UNIT_AMPER, |
|
||||||
UNIT_MILLI_AMPER, |
|
||||||
UNIT_MICRO_AMPER, |
|
||||||
UNIT_WATT, |
|
||||||
UNIT_MILLI_WATT, |
|
||||||
UNIT_SECOND, |
|
||||||
UNIT_MILLI_SECOND, |
|
||||||
UNIT_CELSIUS, |
|
||||||
UNIT_RPM, |
|
||||||
UNIT_OHM, |
|
||||||
UNIT_KOHM, |
|
||||||
UNIT_MOHM, |
|
||||||
UNIT_PERCENT, |
|
||||||
UNIT_HERTZ, |
|
||||||
UNIT_MILLI_HERTZ, |
|
||||||
UNIT_KHERTZ, |
|
||||||
UNIT_MHERTZ, |
|
||||||
UNIT_JOULE, |
|
||||||
UNIT_FARAD, |
|
||||||
UNIT_MILLI_FARAD, |
|
||||||
UNIT_MICRO_FARAD, |
|
||||||
UNIT_NANO_FARAD, |
|
||||||
UNIT_PICO_FARAD, |
|
||||||
UNIT_MINUTE, |
|
||||||
UNIT_VOLT_AMPERE, |
|
||||||
UNIT_VOLT_AMPERE_REACTIVE, |
|
||||||
UNIT_DEGREE, |
|
||||||
UNIT_VOLT_PP, |
|
||||||
UNIT_MILLI_VOLT_PP, |
|
||||||
UNIT_AMPER_PP, |
|
||||||
UNIT_MILLI_AMPER_PP, |
|
||||||
UNIT_MICRO_AMPER_PP, |
|
||||||
}; |
|
||||||
|
|
||||||
extern const char *g_unitNames[]; |
|
||||||
|
|
||||||
inline const char *getUnitName(Unit unit) { |
|
||||||
if (unit == UNIT_UNKNOWN) { |
|
||||||
return ""; |
|
||||||
} |
|
||||||
return g_unitNames[unit]; |
|
||||||
} |
|
||||||
|
|
||||||
Unit getUnitFromName(const char *unitName); |
|
||||||
|
|
||||||
#if OPTION_SCPI |
|
||||||
int getScpiUnit(Unit unit); |
|
||||||
#endif |
|
||||||
|
|
||||||
// for UNIT_MILLI_VOLT returns UNIT_VOLT, etc...
|
|
||||||
Unit getBaseUnit(Unit unit); |
|
||||||
|
|
||||||
// returns 1.0 form UNIT_VOLT, returns 1E-3 for UNIT_MILLI_VOLT, 1E-6 for UNIT_MICRO_AMPER, 1E3 for UNIT_KOHM, etc
|
|
||||||
float getUnitFactor(Unit unit); |
|
||||||
|
|
||||||
// if value is 0.01 and unit is UNIT_VOLT returns UNIT_MILLI_VOLT, etc
|
|
||||||
Unit findDerivedUnit(float value, Unit unit); |
|
||||||
|
|
||||||
Unit getSmallerUnit(Unit unit, float min, float precision); |
|
||||||
Unit getBiggestUnit(Unit unit, float max); |
|
||||||
Unit getSmallestUnit(Unit unit, float min, float precision); |
|
||||||
|
|
||||||
} // namespace eez
|
|
@ -1,43 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/conf.h> |
|
||||||
|
|
||||||
#ifndef UTF8_SUPPORT |
|
||||||
#define UTF8_SUPPORT 1 |
|
||||||
#endif |
|
||||||
|
|
||||||
#if UTF8_SUPPORT |
|
||||||
|
|
||||||
#include <eez/libs/utf8.h> |
|
||||||
|
|
||||||
#else |
|
||||||
|
|
||||||
typedef char utf8_int8_t; |
|
||||||
typedef int32_t utf8_int32_t; |
|
||||||
|
|
||||||
inline const utf8_int8_t* utf8codepoint(const utf8_int8_t *str, utf8_int32_t *out_codepoint) { |
|
||||||
*out_codepoint = *((uint8_t *)str); |
|
||||||
return str + 1;
|
|
||||||
} |
|
||||||
|
|
||||||
#define utf8len strlen |
|
||||||
|
|
||||||
#endif |
|
@ -1,921 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/core/util.h> |
|
||||||
|
|
||||||
#define _USE_MATH_DEFINES |
|
||||||
#include <math.h> |
|
||||||
#include <stdio.h> |
|
||||||
#include <ctype.h> |
|
||||||
#include <string.h> |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
#include <crc.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
float remap(float x, float x1, float y1, float x2, float y2) { |
|
||||||
return y1 + (x - x1) * (y2 - y1) / (x2 - x1); |
|
||||||
} |
|
||||||
|
|
||||||
float remapQuad(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t * t; |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float remapOutQuad(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t * (2 - t); |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float remapInOutQuad(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t < .5 ? 2 * t*t : -1 + (4 - 2 * t)*t; |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float remapCubic(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t * t * t; |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float remapOutCubic(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t - 1; |
|
||||||
t = 1 + t * t * t; |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float remapExp(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t == 0 ? 0 : float(pow(2, 10 * (t - 1))); |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float remapOutExp(float x, float x1, float y1, float x2, float y2) { |
|
||||||
float t = remap(x, x1, 0, x2, 1); |
|
||||||
t = t == 1 ? 1 : float(1 - pow(2, -10 * t)); |
|
||||||
x = remap(t, 0, x1, 1, x2); |
|
||||||
return remap(x, x1, y1, x2, y2); |
|
||||||
} |
|
||||||
|
|
||||||
float clamp(float x, float min, float max) { |
|
||||||
if (x < min) { |
|
||||||
return min; |
|
||||||
} |
|
||||||
if (x > max) { |
|
||||||
return max; |
|
||||||
} |
|
||||||
return x; |
|
||||||
} |
|
||||||
|
|
||||||
void stringCopy(char *dst, size_t maxStrLength, const char *src) { |
|
||||||
strncpy(dst, src, maxStrLength); |
|
||||||
dst[maxStrLength - 1] = 0; |
|
||||||
} |
|
||||||
|
|
||||||
void stringCopyLength(char *dst, size_t maxStrLength, const char *src, size_t length) { |
|
||||||
size_t n = MIN(length, maxStrLength); |
|
||||||
strncpy(dst, src, n); |
|
||||||
dst[n] = 0; |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendString(char *str, size_t maxStrLength, const char *value) { |
|
||||||
int n = maxStrLength - strlen(str) - 1; |
|
||||||
if (n >= 0) { |
|
||||||
strncat(str, value, n); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendStringLength(char *str, size_t maxStrLength, const char *value, size_t length) { |
|
||||||
int n = MIN(maxStrLength - strlen(str) - 1, length); |
|
||||||
if (n >= 0) { |
|
||||||
strncat(str, value, n); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendInt(char *str, size_t maxStrLength, int value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%d", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendUInt32(char *str, size_t maxStrLength, uint32_t value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%lu", (unsigned long)value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendInt64(char *str, size_t maxStrLength, int64_t value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%jd", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendUInt64(char *str, size_t maxStrLength, uint64_t value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%ju", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendFloat(char *str, size_t maxStrLength, float value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%g", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendFloat(char *str, size_t maxStrLength, float value, int numDecimalPlaces) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%.*f", numDecimalPlaces, value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendDouble(char *str, size_t maxStrLength, double value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%g", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendDouble(char *str, size_t maxStrLength, double value, int numDecimalPlaces) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%.*f", numDecimalPlaces, value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendVoltage(char *str, size_t maxStrLength, float value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%g V", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendCurrent(char *str, size_t maxStrLength, float value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%g A", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendPower(char *str, size_t maxStrLength, float value) { |
|
||||||
auto n = strlen(str); |
|
||||||
snprintf(str + n, maxStrLength - n, "%g W", value); |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendDuration(char *str, size_t maxStrLength, float value) { |
|
||||||
auto n = strlen(str); |
|
||||||
if (value > 0.1) { |
|
||||||
snprintf(str + n, maxStrLength - n, "%g s", value); |
|
||||||
} else { |
|
||||||
snprintf(str + n, maxStrLength - n, "%g ms", value * 1000); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void stringAppendLoad(char *str, size_t maxStrLength, float value) { |
|
||||||
auto n = strlen(str); |
|
||||||
if (value < 1000) { |
|
||||||
snprintf(str + n, maxStrLength - n, "%g ohm", value); |
|
||||||
} else if (value < 1000000) { |
|
||||||
snprintf(str + n, maxStrLength - n, "%g Kohm", value / 1000); |
|
||||||
} else { |
|
||||||
snprintf(str + n, maxStrLength - n, "%g Mohm", value / 1000000); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
#if defined(EEZ_PLATFORM_STM32) |
|
||||||
uint32_t crc32(const uint8_t *mem_block, size_t block_size) { |
|
||||||
return HAL_CRC_Calculate(&hcrc, (uint32_t *)mem_block, block_size); |
|
||||||
} |
|
||||||
#else |
|
||||||
/*
|
|
||||||
From http://www.hackersdelight.org/hdcodetxt/crc.c.txt:
|
|
||||||
|
|
||||||
This is the basic CRC-32 calculation with some optimization but no |
|
||||||
table lookup. The the byte reversal is avoided by shifting the crc reg |
|
||||||
right instead of left and by using a reversed 32-bit word to represent |
|
||||||
the polynomial. |
|
||||||
When compiled to Cyclops with GCC, this function executes in 8 + 72n |
|
||||||
instructions, where n is the number of bytes in the input message. It |
|
||||||
should be doable in 4 + 61n instructions. |
|
||||||
If the inner loop is strung out (approx. 5*8 = 40 instructions), |
|
||||||
it would take about 6 + 46n instructions. |
|
||||||
*/ |
|
||||||
|
|
||||||
uint32_t crc32(const uint8_t *mem_block, size_t block_size) { |
|
||||||
uint32_t crc = 0xFFFFFFFF; |
|
||||||
for (size_t i = 0; i < block_size; ++i) { |
|
||||||
uint32_t byte = mem_block[i]; // Get next byte.
|
|
||||||
crc = crc ^ byte; |
|
||||||
for (int j = 0; j < 8; ++j) { // Do eight times.
|
|
||||||
uint32_t mask = -((int32_t)crc & 1); |
|
||||||
crc = (crc >> 1) ^ (0xEDB88320 & mask); |
|
||||||
} |
|
||||||
} |
|
||||||
return ~crc; |
|
||||||
} |
|
||||||
#endif |
|
||||||
|
|
||||||
uint8_t toBCD(uint8_t bin) { |
|
||||||
return ((bin / 10) << 4) | (bin % 10); |
|
||||||
} |
|
||||||
|
|
||||||
uint8_t fromBCD(uint8_t bcd) { |
|
||||||
return ((bcd >> 4) & 0xF) * 10 + (bcd & 0xF); |
|
||||||
} |
|
||||||
|
|
||||||
float roundPrec(float a, float prec) { |
|
||||||
float r = 1 / prec; |
|
||||||
return roundf(a * r) / r; |
|
||||||
} |
|
||||||
|
|
||||||
float floorPrec(float a, float prec) { |
|
||||||
float r = 1 / prec; |
|
||||||
return floorf(a * r) / r; |
|
||||||
} |
|
||||||
|
|
||||||
float ceilPrec(float a, float prec) { |
|
||||||
float r = 1 / prec; |
|
||||||
return ceilf(a * r) / r; |
|
||||||
} |
|
||||||
|
|
||||||
bool isNaN(float x) { |
|
||||||
return x != x; |
|
||||||
} |
|
||||||
|
|
||||||
bool isNaN(double x) { |
|
||||||
return x != x; |
|
||||||
} |
|
||||||
|
|
||||||
bool isDigit(char ch) { |
|
||||||
return ch >= '0' && ch <= '9'; |
|
||||||
} |
|
||||||
|
|
||||||
bool isHexDigit(char ch) { |
|
||||||
return (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F'); |
|
||||||
} |
|
||||||
|
|
||||||
bool isUperCaseLetter(char ch) { |
|
||||||
return ch >= 'A' && ch <= 'Z'; |
|
||||||
} |
|
||||||
|
|
||||||
char toHexDigit(int num) { |
|
||||||
if (num >= 0 && num <= 9) { |
|
||||||
return '0' + num; |
|
||||||
} else { |
|
||||||
return 'A' + (num - 10); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
int fromHexDigit(char ch) { |
|
||||||
if (ch >= '0' && ch <= '9') { |
|
||||||
return ch - '0'; |
|
||||||
} |
|
||||||
|
|
||||||
if (ch >= 'a' && ch <= 'f') { |
|
||||||
return 10 + (ch - 'a'); |
|
||||||
} |
|
||||||
|
|
||||||
return 10 + (ch - 'A'); |
|
||||||
} |
|
||||||
|
|
||||||
bool pointInsideRect(int xPoint, int yPoint, int xRect, int yRect, int wRect, int hRect) { |
|
||||||
return xPoint >= xRect && xPoint < xRect + wRect && yPoint >= yRect && yPoint < yRect + hRect; |
|
||||||
} |
|
||||||
|
|
||||||
void getParentDir(const char *path, char *parentDirPath) { |
|
||||||
int lastPathSeparatorIndex; |
|
||||||
|
|
||||||
for (lastPathSeparatorIndex = strlen(path) - 1; |
|
||||||
lastPathSeparatorIndex >= 0 && path[lastPathSeparatorIndex] != PATH_SEPARATOR[0]; |
|
||||||
--lastPathSeparatorIndex) |
|
||||||
; |
|
||||||
|
|
||||||
int i; |
|
||||||
for (i = 0; i < lastPathSeparatorIndex; ++i) { |
|
||||||
parentDirPath[i] = path[i]; |
|
||||||
} |
|
||||||
parentDirPath[i] = 0; |
|
||||||
} |
|
||||||
|
|
||||||
bool parseMacAddress(const char *macAddressStr, size_t macAddressStrLength, uint8_t *macAddress) { |
|
||||||
int state = 0; |
|
||||||
int a = 0; |
|
||||||
int i = 0; |
|
||||||
uint8_t resultMacAddress[6]; |
|
||||||
|
|
||||||
const char *end = macAddressStr + macAddressStrLength; |
|
||||||
for (const char *p = macAddressStr; p < end; ++p) { |
|
||||||
if (state == 0) { |
|
||||||
if (*p == '-' || *p == ' ') { |
|
||||||
continue; |
|
||||||
} else if (isHexDigit(*p)) { |
|
||||||
a = fromHexDigit(*p); |
|
||||||
state = 1; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (state == 1) { |
|
||||||
if (isHexDigit(*p)) { |
|
||||||
if (i < 6) { |
|
||||||
resultMacAddress[i++] = (a << 4) | fromHexDigit(*p); |
|
||||||
state = 0; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (state != 0 || i != 6) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
memcpy(macAddress, resultMacAddress, 6); |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
bool parseIpAddress(const char *ipAddressStr, size_t ipAddressStrLength, uint32_t &ipAddress) { |
|
||||||
const char *p = ipAddressStr; |
|
||||||
const char *q = ipAddressStr + ipAddressStrLength; |
|
||||||
|
|
||||||
uint8_t ipAddressArray[4]; |
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) { |
|
||||||
if (p == q) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
uint32_t part = 0; |
|
||||||
for (int j = 0; j < 3; ++j) { |
|
||||||
if (p == q) { |
|
||||||
if (j > 0 && i == 3) { |
|
||||||
break; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (isDigit(*p)) { |
|
||||||
part = part * 10 + (*p++ - '0'); |
|
||||||
} else if (j > 0 && *p == '.') { |
|
||||||
break; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (part > 255) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
if ((i < 3 && *p++ != '.') || (i == 3 && p != q)) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
ipAddressArray[i] = part; |
|
||||||
} |
|
||||||
|
|
||||||
ipAddress = arrayToIpAddress(ipAddressArray); |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
int getIpAddressPartA(uint32_t ipAddress) { |
|
||||||
return ((uint8_t *)&ipAddress)[0]; |
|
||||||
} |
|
||||||
|
|
||||||
void setIpAddressPartA(uint32_t *ipAddress, uint8_t value) { |
|
||||||
((uint8_t *)ipAddress)[0] = value; |
|
||||||
} |
|
||||||
|
|
||||||
int getIpAddressPartB(uint32_t ipAddress) { |
|
||||||
return ((uint8_t *)&ipAddress)[1]; |
|
||||||
} |
|
||||||
|
|
||||||
void setIpAddressPartB(uint32_t *ipAddress, uint8_t value) { |
|
||||||
((uint8_t *)ipAddress)[1] = value; |
|
||||||
} |
|
||||||
|
|
||||||
int getIpAddressPartC(uint32_t ipAddress) { |
|
||||||
return ((uint8_t *)&ipAddress)[2]; |
|
||||||
} |
|
||||||
|
|
||||||
void setIpAddressPartC(uint32_t *ipAddress, uint8_t value) { |
|
||||||
((uint8_t *)ipAddress)[2] = value; |
|
||||||
} |
|
||||||
|
|
||||||
int getIpAddressPartD(uint32_t ipAddress) { |
|
||||||
return ((uint8_t *)&ipAddress)[3]; |
|
||||||
} |
|
||||||
|
|
||||||
void setIpAddressPartD(uint32_t *ipAddress, uint8_t value) { |
|
||||||
((uint8_t *)ipAddress)[3] = value; |
|
||||||
} |
|
||||||
|
|
||||||
void ipAddressToArray(uint32_t ipAddress, uint8_t *ipAddressArray) { |
|
||||||
ipAddressArray[0] = getIpAddressPartA(ipAddress); |
|
||||||
ipAddressArray[1] = getIpAddressPartB(ipAddress); |
|
||||||
ipAddressArray[2] = getIpAddressPartC(ipAddress); |
|
||||||
ipAddressArray[3] = getIpAddressPartD(ipAddress); |
|
||||||
} |
|
||||||
|
|
||||||
uint32_t arrayToIpAddress(uint8_t *ipAddressArray) { |
|
||||||
return getIpAddress(ipAddressArray[0], ipAddressArray[1], ipAddressArray[2], ipAddressArray[3]); |
|
||||||
} |
|
||||||
|
|
||||||
uint32_t getIpAddress(uint8_t a, uint8_t b, uint8_t c, uint8_t d) { |
|
||||||
uint32_t ipAddress; |
|
||||||
|
|
||||||
setIpAddressPartA(&ipAddress, a); |
|
||||||
setIpAddressPartB(&ipAddress, b); |
|
||||||
setIpAddressPartC(&ipAddress, c); |
|
||||||
setIpAddressPartD(&ipAddress, d); |
|
||||||
|
|
||||||
return ipAddress; |
|
||||||
} |
|
||||||
|
|
||||||
void ipAddressToString(uint32_t ipAddress, char *ipAddressStr, size_t maxIpAddressStrLength) { |
|
||||||
snprintf(ipAddressStr, maxIpAddressStrLength, "%d.%d.%d.%d", |
|
||||||
getIpAddressPartA(ipAddress), getIpAddressPartB(ipAddress), |
|
||||||
getIpAddressPartC(ipAddress), getIpAddressPartD(ipAddress)); |
|
||||||
} |
|
||||||
|
|
||||||
void macAddressToString(const uint8_t *macAddress, char *macAddressStr) { |
|
||||||
for (int i = 0; i < 6; ++i) { |
|
||||||
macAddressStr[3 * i] = toHexDigit((macAddress[i] & 0xF0) >> 4); |
|
||||||
macAddressStr[3 * i + 1] = toHexDigit(macAddress[i] & 0xF); |
|
||||||
macAddressStr[3 * i + 2] = i < 5 ? '-' : 0; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void formatTimeZone(int16_t timeZone, char *text, int count) { |
|
||||||
if (timeZone == 0) { |
|
||||||
stringCopy(text, count, "GMT"); |
|
||||||
} else { |
|
||||||
char sign; |
|
||||||
int16_t value; |
|
||||||
if (timeZone > 0) { |
|
||||||
sign = '+'; |
|
||||||
value = timeZone; |
|
||||||
} else { |
|
||||||
sign = '-'; |
|
||||||
value = -timeZone; |
|
||||||
} |
|
||||||
snprintf(text, count, "%c%02d:%02d GMT", sign, value / 100, value % 100); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
bool parseTimeZone(const char *timeZoneStr, size_t timeZoneLength, int16_t &timeZone) { |
|
||||||
int state = 0; |
|
||||||
|
|
||||||
int sign = 1; |
|
||||||
int integerPart = 0; |
|
||||||
int fractionPart = 0; |
|
||||||
|
|
||||||
const char *end = timeZoneStr + timeZoneLength; |
|
||||||
for (const char *p = timeZoneStr; p < end; ++p) { |
|
||||||
if (*p == ' ') { |
|
||||||
continue; |
|
||||||
} |
|
||||||
|
|
||||||
if (state == 0) { |
|
||||||
if (*p == '+') { |
|
||||||
state = 1; |
|
||||||
} else if (*p == '-') { |
|
||||||
sign = -1; |
|
||||||
state = 1; |
|
||||||
} else if (isDigit(*p)) { |
|
||||||
integerPart = *p - '0'; |
|
||||||
state = 2; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (state == 1) { |
|
||||||
if (isDigit(*p)) { |
|
||||||
integerPart = (*p - '0'); |
|
||||||
state = 2; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (state == 2) { |
|
||||||
if (*p == ':') { |
|
||||||
state = 4; |
|
||||||
} else if (isDigit(*p)) { |
|
||||||
integerPart = integerPart * 10 + (*p - '0'); |
|
||||||
state = 3; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (state == 3) { |
|
||||||
if (*p == ':') { |
|
||||||
state = 4; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (state == 4) { |
|
||||||
if (isDigit(*p)) { |
|
||||||
fractionPart = (*p - '0'); |
|
||||||
state = 5; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else if (state == 5) { |
|
||||||
if (isDigit(*p)) { |
|
||||||
fractionPart = fractionPart * 10 + (*p - '0'); |
|
||||||
state = 6; |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} else { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
if (state != 2 && state != 3 && state != 6) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
int value = sign * (integerPart * 100 + fractionPart); |
|
||||||
|
|
||||||
if (value < -1200 || value > 1400) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
timeZone = (int16_t)value; |
|
||||||
|
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
void replaceCharacter(char *str, char ch, char repl) { |
|
||||||
while (*str) { |
|
||||||
if (*str == ch) { |
|
||||||
*str = repl; |
|
||||||
} |
|
||||||
++str; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
int strcicmp(char const *a, char const *b) { |
|
||||||
for (;; a++, b++) { |
|
||||||
int d = tolower((unsigned char)*a) - tolower((unsigned char)*b); |
|
||||||
if (d != 0 || !*a) |
|
||||||
return d; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
int strncicmp(char const *a, char const *b, int n) { |
|
||||||
for (; n--; a++, b++) { |
|
||||||
int d = tolower((unsigned char)*a) - tolower((unsigned char)*b); |
|
||||||
if (d != 0 || !*a) |
|
||||||
return d; |
|
||||||
} |
|
||||||
return 0; |
|
||||||
} |
|
||||||
|
|
||||||
bool isStringEmpty(char const *s) { |
|
||||||
for (; *s; s++) { |
|
||||||
if (!isspace(*s)) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
} |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
bool startsWith(const char *str, const char *prefix) { |
|
||||||
if (!str || !prefix) |
|
||||||
return false; |
|
||||||
size_t strLen = strlen(str); |
|
||||||
size_t prefixLen = strlen(prefix); |
|
||||||
if (prefixLen > strLen) |
|
||||||
return false; |
|
||||||
return strncmp(str, prefix, prefixLen) == 0; |
|
||||||
} |
|
||||||
|
|
||||||
bool startsWithNoCase(const char *str, const char *prefix) { |
|
||||||
if (!str || !prefix) |
|
||||||
return false; |
|
||||||
size_t strLen = strlen(str); |
|
||||||
size_t prefixLen = strlen(prefix); |
|
||||||
if (prefixLen > strLen) |
|
||||||
return false; |
|
||||||
return strncicmp(str, prefix, prefixLen) == 0; |
|
||||||
} |
|
||||||
|
|
||||||
bool endsWith(const char *str, const char *suffix) { |
|
||||||
if (!str || !suffix) |
|
||||||
return false; |
|
||||||
size_t strLen = strlen(str); |
|
||||||
size_t suffixLen = strlen(suffix); |
|
||||||
if (suffixLen > strLen) |
|
||||||
return false; |
|
||||||
return strncmp(str + strLen - suffixLen, suffix, suffixLen) == 0; |
|
||||||
} |
|
||||||
|
|
||||||
bool endsWithNoCase(const char *str, const char *suffix) { |
|
||||||
if (!str || !suffix) |
|
||||||
return false; |
|
||||||
size_t strLen = strlen(str); |
|
||||||
size_t suffixLen = strlen(suffix); |
|
||||||
if (suffixLen > strLen) |
|
||||||
return false; |
|
||||||
return strncicmp(str + strLen - suffixLen, suffix, suffixLen) == 0; |
|
||||||
} |
|
||||||
|
|
||||||
void formatBytes(uint64_t bytes, char *text, int count) { |
|
||||||
if (bytes == 0) { |
|
||||||
stringCopy(text, count, "0 Bytes"); |
|
||||||
} else { |
|
||||||
double c = 1024.0; |
|
||||||
const char *e[] = { "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" }; |
|
||||||
uint64_t f = (uint64_t)floor(log((double)bytes) / log(c)); |
|
||||||
double g = round((bytes / pow(c, (double)f)) * 100) / 100; |
|
||||||
snprintf(text, count, "%g %s", g, e[f]); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void getFileName(const char *path, char *fileName, unsigned fileNameSize) { |
|
||||||
const char *a = strrchr(path, '/'); |
|
||||||
if (a) { |
|
||||||
a++; |
|
||||||
} else { |
|
||||||
a = path; |
|
||||||
} |
|
||||||
|
|
||||||
const char *b = path + strlen(path); |
|
||||||
|
|
||||||
unsigned n = b - a; |
|
||||||
n = MIN(fileNameSize - 1, n); |
|
||||||
if (n > 0) { |
|
||||||
memcpy(fileName, a, n); |
|
||||||
} |
|
||||||
fileName[n] = 0; |
|
||||||
} |
|
||||||
|
|
||||||
void getBaseFileName(const char *path, char *baseName, unsigned baseNameSize) { |
|
||||||
const char *a = strrchr(path, '/'); |
|
||||||
if (a) { |
|
||||||
a++; |
|
||||||
} else { |
|
||||||
a = path; |
|
||||||
} |
|
||||||
|
|
||||||
const char *b = strrchr(path, '.'); |
|
||||||
if (!b || !(b >= a)) { |
|
||||||
b = path + strlen(path); |
|
||||||
} |
|
||||||
|
|
||||||
unsigned n = b - a; |
|
||||||
n = MIN(baseNameSize - 1, n); |
|
||||||
if (n > 0) { |
|
||||||
memcpy(baseName, a, n); |
|
||||||
} |
|
||||||
baseName[n] = 0; |
|
||||||
} |
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static const float PI = (float)M_PI; |
|
||||||
static const float c1 = 1.70158f; |
|
||||||
static const float c2 = c1 * 1.525f; |
|
||||||
static const float c3 = c1 + 1.0f; |
|
||||||
static const float c4 = (2 * PI) / 3; |
|
||||||
static const float c5 = (2 * PI) / 4.5f; |
|
||||||
|
|
||||||
float linear(float x) { |
|
||||||
return x; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInQuad(float x) { |
|
||||||
return x * x; |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutQuad(float x) { |
|
||||||
return 1 - (1 - x) * (1 - x); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutQuad(float x) { |
|
||||||
return x < 0.5f ? 2 * x * x : 1 - powf(-2 * x + 2, 2) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInCubic(float x) { |
|
||||||
return x * x * x; |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutCubic(float x) { |
|
||||||
return 1 - pow(1 - x, 3); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutCubic(float x) { |
|
||||||
return x < 0.5f ? 4 * x * x * x : 1 - powf(-2 * x + 2, 3) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInQuart(float x) { |
|
||||||
return x * x * x * x; |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutQuart(float x) { |
|
||||||
return 1 - powf(1 - x, 4); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutQuart(float x) { |
|
||||||
return x < 0.5 ? 8 * x * x * x * x : 1 - powf(-2 * x + 2, 4) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInQuint(float x) { |
|
||||||
return x * x * x * x * x; |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutQuint(float x) { |
|
||||||
return 1 - powf(1 - x, 5); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutQuint(float x) { |
|
||||||
return x < 0.5f ? 16 * x * x * x * x * x : 1 - powf(-2 * x + 2, 5) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInSine(float x) { |
|
||||||
return 1 - cosf((x * PI) / 2); |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutSine(float x) { |
|
||||||
return sinf((x * PI) / 2); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutSine(float x) { |
|
||||||
return -(cosf(PI * x) - 1) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInExpo(float x) { |
|
||||||
return x == 0 ? 0 : powf(2, 10 * x - 10); |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutExpo(float x) { |
|
||||||
return x == 1 ? 1 : 1 - powf(2, -10 * x); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutExpo(float x) { |
|
||||||
return x == 0 |
|
||||||
? 0 |
|
||||||
: x == 1 |
|
||||||
? 1 |
|
||||||
: x < 0.5 |
|
||||||
? powf(2, 20 * x - 10) / 2 |
|
||||||
: (2 - powf(2, -20 * x + 10)) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInCirc(float x) { |
|
||||||
return 1 - sqrtf(1 - powf(x, 2)); |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutCirc(float x) { |
|
||||||
return sqrtf(1 - powf(x - 1, 2)); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutCirc(float x) { |
|
||||||
return x < 0.5 |
|
||||||
? (1 - sqrtf(1 - pow(2 * x, 2))) / 2 |
|
||||||
: (sqrtf(1 - powf(-2 * x + 2, 2)) + 1) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInBack(float x) { |
|
||||||
return c3 * x * x * x - c1 * x * x; |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutBack(float x) { |
|
||||||
return 1 + c3 * powf(x - 1, 3) + c1 * powf(x - 1, 2); |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutBack(float x) { |
|
||||||
return x < 0.5 |
|
||||||
? (powf(2 * x, 2) * ((c2 + 1) * 2 * x - c2)) / 2 |
|
||||||
: (powf(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInElastic(float x) { |
|
||||||
return x == 0 |
|
||||||
? 0 |
|
||||||
: x == 1 |
|
||||||
? 1 |
|
||||||
: -powf(2, 10 * x - 10) * sinf((x * 10 - 10.75f) * c4); |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutElastic(float x) { |
|
||||||
return x == 0 |
|
||||||
? 0 |
|
||||||
: x == 1 |
|
||||||
? 1 |
|
||||||
: powf(2, -10 * x) * sinf((x * 10 - 0.75f) * c4) + 1; |
|
||||||
} |
|
||||||
|
|
||||||
float easeInOutElastic(float x) { |
|
||||||
return x == 0 |
|
||||||
? 0 |
|
||||||
: x == 1 |
|
||||||
? 1 |
|
||||||
: x < 0.5 |
|
||||||
? -(powf(2, 20 * x - 10) * sinf((20 * x - 11.125f) * c5)) / 2 |
|
||||||
: (powf(2, -20 * x + 10) * sinf((20 * x - 11.125f) * c5)) / 2 + 1; |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutBounce(float x); |
|
||||||
|
|
||||||
float easeInBounce(float x) { |
|
||||||
return 1 -easeOutBounce(1 - x); |
|
||||||
} |
|
||||||
|
|
||||||
float easeOutBounce(float x) { |
|
||||||
static const float n1 = 7.5625f; |
|
||||||
static const float d1 = 2.75f; |
|
||||||
|
|
||||||
if (x < 1 / d1) { |
|
||||||
return n1 * x * x; |
|
||||||
} else if (x < 2 / d1) { |
|
||||||
x -= 1.5f / d1; |
|
||||||
return n1 * x * x + 0.75f; |
|
||||||
} else if (x < 2.5f / d1) { |
|
||||||
x -= 2.25f / d1; |
|
||||||
return n1 * x * x + 0.9375f; |
|
||||||
} else { |
|
||||||
x -= 2.625f / d1; |
|
||||||
return n1 * x * x + 0.984375f; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
float easeInOutBounce(float x) { |
|
||||||
return x < 0.5 |
|
||||||
? (1 - easeOutBounce(1 - 2 * x)) / 2 |
|
||||||
: (1 + easeOutBounce(2 * x - 1)) / 2; |
|
||||||
} |
|
||||||
|
|
||||||
EasingFuncType g_easingFuncs[] = { |
|
||||||
linear, |
|
||||||
easeInQuad, |
|
||||||
easeOutQuad, |
|
||||||
easeInOutQuad, |
|
||||||
easeInCubic, |
|
||||||
easeOutCubic, |
|
||||||
easeInOutCubic, |
|
||||||
easeInQuart, |
|
||||||
easeOutQuart, |
|
||||||
easeInOutQuart, |
|
||||||
easeInQuint, |
|
||||||
easeOutQuint, |
|
||||||
easeInOutQuint, |
|
||||||
easeInSine, |
|
||||||
easeOutSine, |
|
||||||
easeInOutSine, |
|
||||||
easeInExpo, |
|
||||||
easeOutExpo, |
|
||||||
easeInOutExpo, |
|
||||||
easeInCirc, |
|
||||||
easeOutCirc, |
|
||||||
easeInOutCirc, |
|
||||||
easeInBack, |
|
||||||
easeOutBack, |
|
||||||
easeInOutBack, |
|
||||||
easeInElastic, |
|
||||||
easeOutElastic, |
|
||||||
easeInOutElastic, |
|
||||||
easeInBounce, |
|
||||||
easeOutBounce, |
|
||||||
easeInOutBounce, |
|
||||||
}; |
|
||||||
|
|
||||||
} // namespace eez
|
|
||||||
|
|
||||||
#ifdef EEZ_PLATFORM_SIMULATOR_WIN32 |
|
||||||
char *strnstr(const char *s1, const char *s2, size_t n) { |
|
||||||
char c = *s2; |
|
||||||
|
|
||||||
if (c == '\0') |
|
||||||
return (char *)s1; |
|
||||||
|
|
||||||
for (size_t len = strlen(s2); len <= n; n--, s1++) { |
|
||||||
if (*s1 == c) { |
|
||||||
for (size_t i = 1;; i++) { |
|
||||||
if (i == len) { |
|
||||||
return (char *)s1; |
|
||||||
} |
|
||||||
if (s1[i] != s2[i]) { |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return NULL; |
|
||||||
} |
|
||||||
#endif |
|
@ -1,209 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2018-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <stdint.h> |
|
||||||
#include <stdlib.h> |
|
||||||
|
|
||||||
#include <eez/core/os.h> |
|
||||||
#include <eez/core/unit.h> |
|
||||||
|
|
||||||
#define clear_bit(reg, bitmask) *reg &= ~bitmask |
|
||||||
#define set_bit(reg, bitmask) *reg |= bitmask |
|
||||||
#define util_swap(type, i, j) \ |
|
||||||
{ \
|
|
||||||
type t = i; \
|
|
||||||
i = j; \
|
|
||||||
j = t; \
|
|
||||||
} |
|
||||||
|
|
||||||
#ifndef MIN |
|
||||||
#define MIN(a, b) ((a) < (b) ? (a) : (b)) |
|
||||||
#endif |
|
||||||
|
|
||||||
#ifndef MAX |
|
||||||
#define MAX(a, b) ((a) > (b) ? (a) : (b)) |
|
||||||
#endif |
|
||||||
|
|
||||||
#define PATH_SEPARATOR "/" |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
float remap(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapQuad(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapOutQuad(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapInOutQuad(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapCubic(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapOutCubic(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapExp(float x, float x1, float y1, float x2, float y2); |
|
||||||
float remapOutExp(float x, float x1, float y1, float x2, float y2); |
|
||||||
float clamp(float x, float min, float max); |
|
||||||
|
|
||||||
void stringCopy(char *dst, size_t maxStrLength, const char *src); |
|
||||||
void stringCopyLength(char *dst, size_t maxStrLength, const char *src, size_t length); |
|
||||||
|
|
||||||
void stringAppendString(char *str, size_t maxStrLength, const char *value); |
|
||||||
void stringAppendStringLength(char *str, size_t maxStrLength, const char *value, size_t length); |
|
||||||
|
|
||||||
void stringAppendInt(char *str, size_t maxStrLength, int value); |
|
||||||
void stringAppendUInt32(char *str, size_t maxStrLength, uint32_t value); |
|
||||||
void stringAppendInt64(char *str, size_t maxStrLength, int64_t value); |
|
||||||
void stringAppendUInt64(char *str, size_t maxStrLength, uint64_t value); |
|
||||||
void stringAppendFloat(char *str, size_t maxStrLength, float value); |
|
||||||
void stringAppendFloat(char *str, size_t maxStrLength, float value, int numDecimalPlaces); |
|
||||||
void stringAppendDouble(char *str, size_t maxStrLength, double value); |
|
||||||
void stringAppendDouble(char *str, size_t maxStrLength, double value, int numDecimalPlaces); |
|
||||||
|
|
||||||
void stringAppendVoltage(char *str, size_t maxStrLength, float value); |
|
||||||
void stringAppendCurrent(char *str, size_t maxStrLength, float value); |
|
||||||
void stringAppendPower(char *str, size_t maxStrLength, float value); |
|
||||||
void stringAppendDuration(char *str, size_t maxStrLength, float value); |
|
||||||
void stringAppendLoad(char *str, size_t maxStrLength, float value); |
|
||||||
|
|
||||||
uint32_t crc32(const uint8_t *message, size_t size); |
|
||||||
|
|
||||||
uint8_t toBCD(uint8_t bin); |
|
||||||
uint8_t fromBCD(uint8_t bcd); |
|
||||||
|
|
||||||
float roundPrec(float a, float prec); |
|
||||||
float floorPrec(float a, float prec); |
|
||||||
float ceilPrec(float a, float prec); |
|
||||||
|
|
||||||
bool isNaN(float x); |
|
||||||
bool isNaN(double x); |
|
||||||
|
|
||||||
bool isDigit(char ch); |
|
||||||
bool isHexDigit(char ch); |
|
||||||
bool isUperCaseLetter(char ch); |
|
||||||
|
|
||||||
char toHexDigit(int num); |
|
||||||
int fromHexDigit(char ch); |
|
||||||
|
|
||||||
bool pointInsideRect(int xPoint, int yPoint, int xRect, int yRect, int wRect, int hRect); |
|
||||||
|
|
||||||
void getParentDir(const char *path, char *parentDirPath); |
|
||||||
|
|
||||||
bool parseMacAddress(const char *macAddressStr, size_t macAddressStrLength, uint8_t *macAddress); |
|
||||||
|
|
||||||
int getIpAddressPartA(uint32_t ipAddress); |
|
||||||
void setIpAddressPartA(uint32_t *ipAddress, uint8_t value); |
|
||||||
|
|
||||||
int getIpAddressPartB(uint32_t ipAddress); |
|
||||||
void setIpAddressPartB(uint32_t *ipAddress, uint8_t value); |
|
||||||
|
|
||||||
int getIpAddressPartC(uint32_t ipAddress); |
|
||||||
void setIpAddressPartC(uint32_t *ipAddress, uint8_t value); |
|
||||||
|
|
||||||
int getIpAddressPartD(uint32_t ipAddress); |
|
||||||
void setIpAddressPartD(uint32_t *ipAddress, uint8_t value); |
|
||||||
|
|
||||||
void ipAddressToArray(uint32_t ipAddress, uint8_t *ipAddressArray); |
|
||||||
uint32_t arrayToIpAddress(uint8_t *ipAddressArray); |
|
||||||
|
|
||||||
uint32_t getIpAddress(uint8_t a, uint8_t b, uint8_t c, uint8_t d); |
|
||||||
|
|
||||||
bool parseIpAddress(const char *ipAddressStr, size_t ipAddressStrLength, uint32_t &ipAddress); |
|
||||||
void ipAddressToString(uint32_t ipAddress, char *ipAddressStr, size_t maxIpAddressStrLength); |
|
||||||
|
|
||||||
void macAddressToString(const uint8_t *macAddress, char *macAddressStr); |
|
||||||
|
|
||||||
void formatTimeZone(int16_t timeZone, char *text, int count); |
|
||||||
bool parseTimeZone(const char *timeZoneStr, size_t timeZoneLength, int16_t &timeZone); |
|
||||||
|
|
||||||
void replaceCharacter(char *str, char ch, char repl); |
|
||||||
|
|
||||||
int strcicmp(char const *a, char const *b); |
|
||||||
int strncicmp(char const *a, char const *b, int n); |
|
||||||
bool isStringEmpty(char const *a); |
|
||||||
bool startsWith(const char *str, const char *prefix); |
|
||||||
bool startsWithNoCase(const char *str, const char *prefix); |
|
||||||
bool endsWith(const char *str, const char *suffix); |
|
||||||
bool endsWithNoCase(const char *str, const char *suffix); |
|
||||||
|
|
||||||
void formatBytes(uint64_t bytes, char *text, int count); |
|
||||||
|
|
||||||
void getFileName(const char *path, char *fileName, unsigned fileNameSize); |
|
||||||
void getBaseFileName(const char *path, char *baseName, unsigned baseNameSize); |
|
||||||
|
|
||||||
typedef float (*EasingFuncType)(float x); |
|
||||||
extern EasingFuncType g_easingFuncs[]; |
|
||||||
|
|
||||||
class Interval { |
|
||||||
public: |
|
||||||
// Returns true when called for the first time,
|
|
||||||
// and later returns true after interval, interval * 2, interval * 3, ...
|
|
||||||
// Interval is in milliseconds.
|
|
||||||
bool test(uint32_t interval) { |
|
||||||
auto time = millis(); |
|
||||||
|
|
||||||
if (lastTime == 0) { |
|
||||||
lastTime = time == 0 ? 1 : time; |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
if (time >= lastTime + interval) { |
|
||||||
lastTime += ((uint32_t)(time - lastTime) / interval) * interval; |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
private: |
|
||||||
uint32_t lastTime = 0; |
|
||||||
}; |
|
||||||
|
|
||||||
template <typename T, typename Total, uint64_t N> |
|
||||||
class MovingAverage { |
|
||||||
public: |
|
||||||
void operator()(T sample) { |
|
||||||
if (m_numSamples < N) { |
|
||||||
m_samples[m_numSamples++] = sample; |
|
||||||
m_total += sample; |
|
||||||
} else { |
|
||||||
T& oldest = m_samples[m_numSamples++ % N]; |
|
||||||
m_total += sample - oldest; |
|
||||||
oldest = sample; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
operator T() const { |
|
||||||
if (m_numSamples < N) { |
|
||||||
return m_total / m_numSamples; |
|
||||||
} else { |
|
||||||
return m_total / N; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void reset() { |
|
||||||
m_numSamples = 0; |
|
||||||
m_total = 0; |
|
||||||
} |
|
||||||
|
|
||||||
private: |
|
||||||
T m_samples[N]; |
|
||||||
uint64_t m_numSamples{0}; |
|
||||||
Total m_total{0}; |
|
||||||
}; |
|
||||||
|
|
||||||
} // namespace eez
|
|
||||||
|
|
||||||
#ifdef EEZ_PLATFORM_SIMULATOR_WIN32 |
|
||||||
char *strnstr(const char *s1, const char *s2, size_t n); |
|
||||||
#endif |
|
@ -1,66 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2020-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/conf.h> |
|
||||||
#include <eez/core/unit.h> |
|
||||||
|
|
||||||
#define VALUE_TYPES \ |
|
||||||
VALUE_TYPE(UNDEFINED) /* 0 */ \
|
|
||||||
VALUE_TYPE(NULL) /* 1 */ \
|
|
||||||
VALUE_TYPE(BOOLEAN) /* 2 */ \
|
|
||||||
VALUE_TYPE(INT8) /* 3 */ \
|
|
||||||
VALUE_TYPE(UINT8) /* 4 */ \
|
|
||||||
VALUE_TYPE(INT16) /* 5 */ \
|
|
||||||
VALUE_TYPE(UINT16) /* 6 */ \
|
|
||||||
VALUE_TYPE(INT32) /* 7 */ \
|
|
||||||
VALUE_TYPE(UINT32) /* 8 */ \
|
|
||||||
VALUE_TYPE(INT64) /* 9 */ \
|
|
||||||
VALUE_TYPE(UINT64) /* 10 */ \
|
|
||||||
VALUE_TYPE(FLOAT) /* 11 */ \
|
|
||||||
VALUE_TYPE(DOUBLE) /* 12 */ \
|
|
||||||
VALUE_TYPE(STRING) /* 13 */ \
|
|
||||||
VALUE_TYPE(ARRAY) /* 14 */ \
|
|
||||||
VALUE_TYPE(STRING_REF) /* 15 */ \
|
|
||||||
VALUE_TYPE(ARRAY_REF) /* 16 */ \
|
|
||||||
VALUE_TYPE(BLOB_REF) /* 17 */ \
|
|
||||||
VALUE_TYPE(STREAM) /* 18 */ \
|
|
||||||
VALUE_TYPE(DATE) /* 19 */ \
|
|
||||||
VALUE_TYPE(VERSIONED_STRING) /* 20 */ \
|
|
||||||
VALUE_TYPE(VALUE_PTR) /* 21 */ \
|
|
||||||
VALUE_TYPE(ARRAY_ELEMENT_VALUE) /* 22 */ \
|
|
||||||
VALUE_TYPE(FLOW_OUTPUT) /* 23 */ \
|
|
||||||
VALUE_TYPE(NATIVE_VARIABLE) /* 24 */ \
|
|
||||||
VALUE_TYPE(RANGE) /* 25 */ \
|
|
||||||
VALUE_TYPE(POINTER) /* 26 */ \
|
|
||||||
VALUE_TYPE(ENUM) /* 27 */ \
|
|
||||||
VALUE_TYPE(IP_ADDRESS) /* 28 */ \
|
|
||||||
VALUE_TYPE(TIME_ZONE) /* 29 */ \
|
|
||||||
VALUE_TYPE(YT_DATA_GET_VALUE_FUNCTION_POINTER) /* 30 */ \
|
|
||||||
CUSTOM_VALUE_TYPES |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
|
|
||||||
#define VALUE_TYPE(NAME) VALUE_TYPE_##NAME, |
|
||||||
enum ValueType { |
|
||||||
VALUE_TYPES |
|
||||||
}; |
|
||||||
#undef VALUE_TYPE |
|
||||||
|
|
||||||
} |
|
@ -1,142 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <stdio.h> |
|
||||||
#include <math.h> |
|
||||||
|
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/queue.h> |
|
||||||
#include <eez/flow/hooks.h> |
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__) |
|
||||||
#include <eez/flow/dashboard_api.h> |
|
||||||
#endif |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeStartComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeEndComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeInputComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeOutputComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeWatchVariableComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeEvalExprComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeSetVariableComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeSwitchComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeCompareComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeIsTrueComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeConstantComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeLogComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeCallActionComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeDelayComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeErrorComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeCatchErrorComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeCounterComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeLoopComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeShowPageComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeShowMessageBoxComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeShowKeyboardComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeShowKeypadComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeSelectLanguageComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeSetPageDirectionComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeAnimateComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeNoopComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeOnEventComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
|
|
||||||
void executeLayoutViewWidgetComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
void executeRollerWidgetComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
|
|
||||||
typedef void (*ExecuteComponentFunctionType)(FlowState *flowState, unsigned componentIndex); |
|
||||||
|
|
||||||
static ExecuteComponentFunctionType g_executeComponentFunctions[] = { |
|
||||||
executeStartComponent, |
|
||||||
executeEndComponent, |
|
||||||
executeInputComponent, |
|
||||||
executeOutputComponent, |
|
||||||
executeWatchVariableComponent, |
|
||||||
executeEvalExprComponent, |
|
||||||
executeSetVariableComponent, |
|
||||||
executeSwitchComponent, |
|
||||||
executeCompareComponent, |
|
||||||
executeIsTrueComponent, |
|
||||||
executeConstantComponent, |
|
||||||
executeLogComponent, |
|
||||||
executeCallActionComponent, |
|
||||||
executeDelayComponent, |
|
||||||
executeErrorComponent, |
|
||||||
executeCatchErrorComponent, |
|
||||||
executeCounterComponent, // COMPONENT_TYPE_COUNTER_ACTION
|
|
||||||
executeLoopComponent, |
|
||||||
executeShowPageComponent, |
|
||||||
nullptr, // COMPONENT_TYPE_SCPIACTION
|
|
||||||
executeShowMessageBoxComponent, |
|
||||||
executeShowKeyboardComponent, |
|
||||||
executeShowKeypadComponent, |
|
||||||
executeNoopComponent, // COMPONENT_TYPE_NOOP_ACTION
|
|
||||||
nullptr, // COMPONENT_TYPE_COMMENT_ACTION
|
|
||||||
executeSelectLanguageComponent, // COMPONENT_TYPE_SELECT_LANGUAGE_ACTION
|
|
||||||
executeSetPageDirectionComponent, // COMPONENT_TYPE_SET_PAGE_DIRECTION_ACTION
|
|
||||||
executeAnimateComponent, // COMPONENT_TYPE_ANIMATE_ACTION
|
|
||||||
executeOnEventComponent, // COMPONENT_TYPE_ON_EVENT_ACTION
|
|
||||||
}; |
|
||||||
|
|
||||||
void registerComponent(ComponentTypes componentType, ExecuteComponentFunctionType executeComponentFunction) { |
|
||||||
if (componentType >= defs_v3::COMPONENT_TYPE_START_ACTION) { |
|
||||||
g_executeComponentFunctions[componentType - defs_v3::COMPONENT_TYPE_START_ACTION] = executeComponentFunction; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void executeComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__) |
|
||||||
if (component->type >= defs_v3::FIRST_DASHBOARD_COMPONENT_TYPE) { |
|
||||||
if (executeDashboardComponentHook) { |
|
||||||
executeDashboardComponentHook(component->type, getFlowStateIndex(flowState), componentIndex); |
|
||||||
return; |
|
||||||
} |
|
||||||
} else |
|
||||||
#endif // __EMSCRIPTEN__
|
|
||||||
if (component->type >= defs_v3::COMPONENT_TYPE_START_ACTION) { |
|
||||||
auto executeComponentFunction = g_executeComponentFunctions[component->type - defs_v3::COMPONENT_TYPE_START_ACTION]; |
|
||||||
if (executeComponentFunction != nullptr) { |
|
||||||
executeComponentFunction(flowState, componentIndex); |
|
||||||
return; |
|
||||||
} |
|
||||||
} else if (component->type < 1000) { |
|
||||||
if (component->type == defs_v3::COMPONENT_TYPE_LAYOUT_VIEW_WIDGET) { |
|
||||||
executeLayoutViewWidgetComponent(flowState, componentIndex); |
|
||||||
} else if (component->type == defs_v3::COMPONENT_TYPE_ROLLER_WIDGET) { |
|
||||||
executeRollerWidgetComponent(flowState, componentIndex); |
|
||||||
} |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
char errorMessage[100]; |
|
||||||
snprintf(errorMessage, sizeof(errorMessage), "Unknown component at index = %d, type = %d\n", componentIndex, component->type); |
|
||||||
throwError(flowState, componentIndex, errorMessage); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,35 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
using defs_v3::ComponentTypes; |
|
||||||
|
|
||||||
typedef void (*ExecuteComponentFunctionType)(FlowState *flowState, unsigned componentIndex); |
|
||||||
void registerComponent(ComponentTypes componentType, ExecuteComponentFunctionType executeComponentFunction); |
|
||||||
|
|
||||||
void executeComponent(FlowState *flowState, unsigned componentIndex); |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
@ -1,110 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/private.h> |
|
||||||
#include <eez/flow/queue.h> |
|
||||||
|
|
||||||
#include <eez/gui/gui.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct AnimateComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
float startPosition; |
|
||||||
float endPosition; |
|
||||||
float speed; |
|
||||||
uint32_t startTimestamp; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeAnimateComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto state = (AnimateComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (!state) { |
|
||||||
Value fromValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::ANIMATE_ACTION_COMPONENT_PROPERTY_FROM, fromValue, "Failed to evaluate From in Animate")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value toValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::ANIMATE_ACTION_COMPONENT_PROPERTY_TO, toValue, "Failed to evaluate To in Animate")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value speedValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::ANIMATE_ACTION_COMPONENT_PROPERTY_SPEED, speedValue, "Failed to evaluate Speed in Animate")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
float from = fromValue.toFloat(); |
|
||||||
float to = toValue.toFloat(); |
|
||||||
float speed = speedValue.toFloat(); |
|
||||||
|
|
||||||
if (speed == 0) { |
|
||||||
flowState->timelinePosition = to; |
|
||||||
onFlowStateTimelineChanged(flowState); |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} else { |
|
||||||
state = allocateComponentExecutionState<AnimateComponenentExecutionState>(flowState, componentIndex); |
|
||||||
|
|
||||||
state->startPosition = from; |
|
||||||
state->endPosition = to; |
|
||||||
state->speed = speed; |
|
||||||
state->startTimestamp = millis(); |
|
||||||
|
|
||||||
if (!addToQueue(flowState, componentIndex, -1, -1, -1, true)) { |
|
||||||
throwError(flowState, componentIndex, "Execution queue is full\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
} else { |
|
||||||
float currentTime; |
|
||||||
|
|
||||||
if (state->startPosition < state->endPosition) { |
|
||||||
currentTime = state->startPosition + state->speed * (millis() - state->startTimestamp) / 1000.0f; |
|
||||||
if (currentTime >= state->endPosition) { |
|
||||||
currentTime = state->endPosition; |
|
||||||
} |
|
||||||
} else { |
|
||||||
currentTime = state->startPosition - state->speed * (millis() - state->startTimestamp) / 1000.0f; |
|
||||||
if (currentTime <= state->endPosition) { |
|
||||||
currentTime = state->endPosition; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
flowState->timelinePosition = currentTime; |
|
||||||
onFlowStateTimelineChanged(flowState); |
|
||||||
|
|
||||||
if (currentTime == state->endPosition) { |
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} else { |
|
||||||
if (!addToQueue(flowState, componentIndex, -1, -1, -1, true)) { |
|
||||||
throwError(flowState, componentIndex, "Execution queue is full\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,77 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <stdio.h> |
|
||||||
|
|
||||||
#include <eez/gui/gui.h> |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/components/call_action.h> |
|
||||||
#include <eez/flow/debugger.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
CallActionComponenentExecutionState::~CallActionComponenentExecutionState() { |
|
||||||
freeFlowState(flowState); |
|
||||||
} |
|
||||||
|
|
||||||
void executeCallAction(FlowState *flowState, unsigned componentIndex, int flowIndex) { |
|
||||||
if (flowIndex >= (int)flowState->flowDefinition->flows.count) { |
|
||||||
executeActionFunction(flowIndex - flowState->flowDefinition->flows.count); |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
auto callActionComponenentExecutionState = (CallActionComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (callActionComponenentExecutionState) { |
|
||||||
if (canFreeFlowState(callActionComponenentExecutionState->flowState)) { |
|
||||||
freeFlowState(callActionComponenentExecutionState->flowState); |
|
||||||
} else { |
|
||||||
throwError(flowState, componentIndex, "CallAction is already running\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
FlowState *actionFlowState = initActionFlowState(flowIndex, flowState, componentIndex); |
|
||||||
|
|
||||||
if (canFreeFlowState(actionFlowState)) { |
|
||||||
freeFlowState(actionFlowState); |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} else { |
|
||||||
callActionComponenentExecutionState = allocateComponentExecutionState<CallActionComponenentExecutionState>(flowState, componentIndex); |
|
||||||
callActionComponenentExecutionState->flowState = actionFlowState; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
void executeCallActionComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (CallActionActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
auto flowIndex = component->flowIndex; |
|
||||||
if (flowIndex < 0) { |
|
||||||
throwError(flowState, componentIndex, "Invalid action flow index in CallAction\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
executeCallAction(flowState, componentIndex, flowIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,41 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct CallActionActionComponent : public Component { |
|
||||||
int16_t flowIndex; |
|
||||||
uint8_t inputsStartIndex; |
|
||||||
uint8_t outputsStartIndex; |
|
||||||
}; |
|
||||||
|
|
||||||
typedef CallActionActionComponent LayoutViewWidgetComponent; |
|
||||||
|
|
||||||
struct CallActionComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
FlowState *flowState; |
|
||||||
|
|
||||||
~CallActionComponenentExecutionState(); |
|
||||||
}; |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
@ -1,36 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeCatchErrorComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto catchErrorComponentExecutionState = (CatchErrorComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
propagateValue(flowState, componentIndex, 1, catchErrorComponentExecutionState->message); |
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,57 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct CompareActionComponent : public Component { |
|
||||||
uint8_t conditionInstructions[1]; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeCompareComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (CompareActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
Value conditionValue; |
|
||||||
if (!evalExpression(flowState, componentIndex, component->conditionInstructions, conditionValue, "Failed to evaluate Condition in Compare")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
int err; |
|
||||||
bool result = conditionValue.toBool(&err); |
|
||||||
if (err == 0) { |
|
||||||
if (result) { |
|
||||||
propagateValue(flowState, componentIndex, 1, Value(true, VALUE_TYPE_BOOLEAN)); |
|
||||||
} else { |
|
||||||
propagateValue(flowState, componentIndex, 2, Value(false, VALUE_TYPE_BOOLEAN)); |
|
||||||
} |
|
||||||
} else { |
|
||||||
throwError(flowState, componentIndex, "Failed to convert Value to boolean in IsTrue\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,41 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct ConstantActionComponent : public Component { |
|
||||||
uint16_t valueIndex; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeConstantComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (ConstantActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
auto &sourceValue = *flowState->flowDefinition->constants[component->valueIndex]; |
|
||||||
|
|
||||||
propagateValue(flowState, componentIndex, 1, sourceValue); |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,57 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/operations.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct CounterComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
int counter; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeCounterComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto counterComponenentExecutionState = (CounterComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
|
|
||||||
if (!counterComponenentExecutionState) { |
|
||||||
Value counterValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::COUNTER_ACTION_COMPONENT_PROPERTY_COUNT_VALUE, counterValue, "Failed to evaluate countValue in Counter")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
counterComponenentExecutionState = allocateComponentExecutionState<CounterComponenentExecutionState>(flowState, componentIndex); |
|
||||||
counterComponenentExecutionState->counter = counterValue.getInt(); |
|
||||||
} |
|
||||||
|
|
||||||
if (counterComponenentExecutionState->counter > 0) { |
|
||||||
counterComponenentExecutionState->counter--; |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} else { |
|
||||||
// done
|
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
propagateValue(flowState, componentIndex, 1); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,72 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/core/alloc.h> |
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/queue.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct DelayComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
uint32_t waitUntil; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeDelayComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto delayComponentExecutionState = (DelayComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
|
|
||||||
if (!delayComponentExecutionState) { |
|
||||||
Value value; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::DELAY_ACTION_COMPONENT_PROPERTY_MILLISECONDS, value, "Failed to evaluate Milliseconds in Delay")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
double milliseconds = value.toDouble(); |
|
||||||
if (!isNaN(milliseconds)) { |
|
||||||
delayComponentExecutionState = allocateComponentExecutionState<DelayComponenentExecutionState>(flowState, componentIndex); |
|
||||||
delayComponentExecutionState->waitUntil = millis() + (uint32_t)floor(milliseconds); |
|
||||||
} else { |
|
||||||
throwError(flowState, componentIndex, "Invalid Milliseconds value in Delay\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (!addToQueue(flowState, componentIndex, -1, -1, -1, true)) { |
|
||||||
throwError(flowState, componentIndex, "Execution queue is full\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} else { |
|
||||||
if (millis() >= delayComponentExecutionState->waitUntil) { |
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} else { |
|
||||||
if (!addToQueue(flowState, componentIndex, -1, -1, -1, true)) { |
|
||||||
throwError(flowState, componentIndex, "Execution queue is full\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,37 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/hooks.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeEndComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
if (flowState->parentFlowState && flowState->isAction) { |
|
||||||
propagateValueThroughSeqout(flowState->parentFlowState, flowState->parentComponentIndex); |
|
||||||
} else { |
|
||||||
stopScriptHook(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,38 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeErrorComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value expressionValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::EVAL_EXPR_ACTION_COMPONENT_PROPERTY_EXPRESSION, expressionValue, "Failed to evaluate Message in Error")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
throwError(flowState, componentIndex, expressionValue.getString()); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,40 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeEvalExprComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value expressionValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::EVAL_EXPR_ACTION_COMPONENT_PROPERTY_EXPRESSION, expressionValue, "Failed to evaluate Expression in EvalExpr")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
propagateValue(flowState, componentIndex, 1, expressionValue); |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,84 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <stdio.h> |
|
||||||
|
|
||||||
#include <eez/flow/components/input.h> |
|
||||||
#include <eez/flow/components/call_action.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
bool getCallActionValue(FlowState *flowState, unsigned componentIndex, Value &value) { |
|
||||||
auto component = (InputActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
if (!flowState->parentFlowState) { |
|
||||||
throwError(flowState, componentIndex, "No parentFlowState in Input\n"); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
if (!flowState->parentComponent) { |
|
||||||
throwError(flowState, componentIndex, "No parentComponent in Input\n"); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
auto callActionComponent = (CallActionActionComponent *)flowState->parentComponent; |
|
||||||
|
|
||||||
uint8_t parentComponentInputIndex = callActionComponent->inputsStartIndex + component->inputIndex; |
|
||||||
if (component->type == defs_v3::COMPONENT_TYPE_INPUT_ACTION) { |
|
||||||
parentComponentInputIndex = callActionComponent->inputsStartIndex + component->inputIndex; |
|
||||||
} else { |
|
||||||
parentComponentInputIndex = 0; |
|
||||||
} |
|
||||||
|
|
||||||
if (parentComponentInputIndex >= flowState->parentComponent->inputs.count) { |
|
||||||
throwError(flowState, componentIndex, "Invalid input index in Input\n"); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
auto parentComponentInputs = flowState->parentComponent->inputs; |
|
||||||
auto flowInputIndex = parentComponentInputs[parentComponentInputIndex]; |
|
||||||
|
|
||||||
auto parentFlow = flowState->flowDefinition->flows[flowState->parentFlowState->flowIndex]; |
|
||||||
if (flowInputIndex >= parentFlow->componentInputs.count) { |
|
||||||
throwError(flowState, componentIndex, "Invalid input index of parent component in Input\n"); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
value = flowState->parentFlowState->values[flowInputIndex]; |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
void executeInputComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value value; |
|
||||||
if (getCallActionValue(flowState, componentIndex, value)) { |
|
||||||
auto inputActionComponentExecutionState = (InputActionComponentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (!inputActionComponentExecutionState) { |
|
||||||
inputActionComponentExecutionState = allocateComponentExecutionState<InputActionComponentExecutionState>(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
propagateValue(flowState, componentIndex, 0, value); |
|
||||||
inputActionComponentExecutionState->value = value; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,38 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct InputActionComponent : public Component { |
|
||||||
uint8_t inputIndex; |
|
||||||
}; |
|
||||||
|
|
||||||
struct InputActionComponentExecutionState : public ComponenentExecutionState { |
|
||||||
Value value; |
|
||||||
}; |
|
||||||
|
|
||||||
|
|
||||||
bool getCallActionValue(FlowState *flowState, unsigned componentIndex, Value &value); |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
@ -1,51 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeIsTrueComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value srcValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::IS_TRUE_ACTION_COMPONENT_PROPERTY_VALUE, srcValue, "Failed to evaluate Value in IsTrue")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
int err; |
|
||||||
bool result = srcValue.toBool(&err); |
|
||||||
if (err == 0) { |
|
||||||
if (result) { |
|
||||||
propagateValue(flowState, componentIndex, 1, Value(true, VALUE_TYPE_BOOLEAN)); |
|
||||||
} else { |
|
||||||
propagateValue(flowState, componentIndex, 2, Value(false, VALUE_TYPE_BOOLEAN)); |
|
||||||
} |
|
||||||
} else { |
|
||||||
throwError(flowState, componentIndex, "Failed to convert Value to boolean in IsTrue\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,100 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/core/alloc.h> |
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/queue.h> |
|
||||||
#include <eez/flow/components/call_action.h> |
|
||||||
#include <eez/flow/components/input.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct LayoutViewWidgetExecutionState : public ComponenentExecutionState { |
|
||||||
FlowState *flowState; |
|
||||||
|
|
||||||
~LayoutViewWidgetExecutionState() { |
|
||||||
freeFlowState(flowState); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
static LayoutViewWidgetExecutionState *createLayoutViewFlowState(FlowState *flowState, uint16_t layoutViewWidgetComponentIndex, int16_t pageId) { |
|
||||||
auto layoutViewFlowState = initPageFlowState(flowState->assets, pageId, flowState, layoutViewWidgetComponentIndex); |
|
||||||
auto layoutViewWidgetExecutionState = allocateComponentExecutionState<LayoutViewWidgetExecutionState>(flowState, layoutViewWidgetComponentIndex); |
|
||||||
layoutViewWidgetExecutionState->flowState = layoutViewFlowState; |
|
||||||
return layoutViewWidgetExecutionState; |
|
||||||
} |
|
||||||
|
|
||||||
FlowState *getLayoutViewFlowState(FlowState *flowState, uint16_t layoutViewWidgetComponentIndex, int16_t pageId) { |
|
||||||
auto layoutViewWidgetExecutionState = (LayoutViewWidgetExecutionState *)flowState->componenentExecutionStates[layoutViewWidgetComponentIndex]; |
|
||||||
if (!layoutViewWidgetExecutionState) { |
|
||||||
layoutViewWidgetExecutionState = createLayoutViewFlowState(flowState, layoutViewWidgetComponentIndex, pageId); |
|
||||||
} |
|
||||||
|
|
||||||
return layoutViewWidgetExecutionState->flowState; |
|
||||||
} |
|
||||||
|
|
||||||
void executeLayoutViewWidgetComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (CallActionActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
auto layoutViewWidgetExecutionState = (LayoutViewWidgetExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (!layoutViewWidgetExecutionState) { |
|
||||||
createLayoutViewFlowState(flowState, componentIndex, component->flowIndex); |
|
||||||
} else { |
|
||||||
auto layoutViewFlowState = layoutViewWidgetExecutionState->flowState; |
|
||||||
for ( |
|
||||||
unsigned layoutViewComponentIndex = 0; |
|
||||||
layoutViewComponentIndex < layoutViewFlowState->flow->components.count; |
|
||||||
layoutViewComponentIndex++ |
|
||||||
) { |
|
||||||
auto layoutViewComponent = layoutViewFlowState->flow->components[layoutViewComponentIndex]; |
|
||||||
if (layoutViewComponent->type == defs_v3::COMPONENT_TYPE_INPUT_ACTION) { |
|
||||||
auto inputActionComponentExecutionState = (InputActionComponentExecutionState *)layoutViewFlowState->componenentExecutionStates[layoutViewComponentIndex]; |
|
||||||
if (inputActionComponentExecutionState) { |
|
||||||
Value value; |
|
||||||
if (getCallActionValue(layoutViewFlowState, layoutViewComponentIndex, value)) { |
|
||||||
if (inputActionComponentExecutionState->value != value) { |
|
||||||
addToQueue(layoutViewWidgetExecutionState->flowState, layoutViewComponentIndex); |
|
||||||
inputActionComponentExecutionState->value = value; |
|
||||||
} |
|
||||||
} else { |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
} else if (layoutViewComponent->type == defs_v3::COMPONENT_TYPE_START_ACTION) { |
|
||||||
Value value; |
|
||||||
if (getCallActionValue(layoutViewFlowState, layoutViewComponentIndex, value)) { |
|
||||||
if (value.getType() != VALUE_TYPE_UNDEFINED) { |
|
||||||
addToQueue(layoutViewWidgetExecutionState->flowState, layoutViewComponentIndex); |
|
||||||
} |
|
||||||
} else { |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,47 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/core/debug.h> |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/debugger.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeLogComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value value; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::LOG_ACTION_COMPONENT_PROPERTY_VALUE, value, "Failed to evaluate Message in Log")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value strValue = value.toString(0x0f9812ee); |
|
||||||
const char *valueStr = strValue.getString(); |
|
||||||
if (valueStr && *valueStr) { |
|
||||||
logInfo(flowState, componentIndex, valueStr); |
|
||||||
} |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,102 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/operations.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct LoopComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
Value dstValue; |
|
||||||
Value toValue; |
|
||||||
Value currentValue; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeLoopComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
auto loopComponentExecutionState = (LoopComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
|
|
||||||
// restart loop if entered through "start" input
|
|
||||||
static const unsigned START_INPUT_INDEX = 0; |
|
||||||
auto startInputIndex = component->inputs[START_INPUT_INDEX]; |
|
||||||
if (flowState->values[startInputIndex].type != VALUE_TYPE_UNDEFINED) { |
|
||||||
if (loopComponentExecutionState) { |
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
loopComponentExecutionState = nullptr; |
|
||||||
} |
|
||||||
} else { |
|
||||||
if (!loopComponentExecutionState) { |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
Value stepValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::LOOP_ACTION_COMPONENT_PROPERTY_STEP, stepValue, "Failed to evaluate Step in Loop")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (!loopComponentExecutionState) { |
|
||||||
Value dstValue; |
|
||||||
if (!evalAssignableProperty(flowState, componentIndex, defs_v3::LOOP_ACTION_COMPONENT_PROPERTY_VARIABLE, dstValue, "Failed to evaluate Variable in Loop")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value fromValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::LOOP_ACTION_COMPONENT_PROPERTY_FROM, fromValue, "Failed to evaluate From in Loop")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value toValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::LOOP_ACTION_COMPONENT_PROPERTY_TO, toValue, "Failed to evaluate To in Loop")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
loopComponentExecutionState = allocateComponentExecutionState<LoopComponenentExecutionState>(flowState, componentIndex); |
|
||||||
loopComponentExecutionState->dstValue = dstValue; |
|
||||||
loopComponentExecutionState->toValue = toValue; |
|
||||||
|
|
||||||
loopComponentExecutionState->currentValue = fromValue; |
|
||||||
} else { |
|
||||||
loopComponentExecutionState->currentValue = op_add(loopComponentExecutionState->currentValue, stepValue); |
|
||||||
} |
|
||||||
|
|
||||||
bool condition; |
|
||||||
if (stepValue.getInt() > 0) { |
|
||||||
condition = op_great(loopComponentExecutionState->currentValue, loopComponentExecutionState->toValue).toBool(); |
|
||||||
} else { |
|
||||||
condition = op_less(loopComponentExecutionState->currentValue, loopComponentExecutionState->toValue).toBool(); |
|
||||||
} |
|
||||||
|
|
||||||
if (condition) { |
|
||||||
// done
|
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
propagateValue(flowState, componentIndex, component->outputs.count - 1); |
|
||||||
} else { |
|
||||||
assignValue(flowState, componentIndex, loopComponentExecutionState->dstValue, loopComponentExecutionState->currentValue); |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,36 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/core/debug.h> |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/debugger.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeNoopComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,31 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeOnEventComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,64 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/components/call_action.h> |
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct OutputActionComponent : public Component { |
|
||||||
uint8_t outputIndex; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeOutputComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (OutputActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
if (!flowState->parentFlowState) { |
|
||||||
throwError(flowState, componentIndex, "No parentFlowState in Output\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (!flowState->parentComponent) { |
|
||||||
throwError(flowState, componentIndex, "No parentComponent in Output\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
auto inputIndex = component->inputs[0]; |
|
||||||
if (inputIndex >= flowState->flow->componentInputs.count) { |
|
||||||
throwError(flowState, componentIndex, "Invalid input index in Output\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
auto value = flowState->values[inputIndex]; |
|
||||||
|
|
||||||
auto callActionComponent = (CallActionActionComponent *)flowState->parentComponent; |
|
||||||
|
|
||||||
uint8_t parentComponentOutputIndex = callActionComponent->outputsStartIndex + component->outputIndex; |
|
||||||
|
|
||||||
if (parentComponentOutputIndex >= flowState->parentComponent->outputs.count) { |
|
||||||
throwError(flowState, componentIndex, "Output action component, invalid output index\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
propagateValue(flowState->parentFlowState, flowState->parentComponentIndex, parentComponentOutputIndex, value); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,43 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/components/roller_widget.h> |
|
||||||
#include <eez/gui/widgets/roller.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeRollerWidgetComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
static const unsigned START_INPUT_INDEX = 0; |
|
||||||
auto startInputIndex = component->inputs[START_INPUT_INDEX]; |
|
||||||
if (flowState->values[startInputIndex].type != VALUE_TYPE_UNDEFINED) { |
|
||||||
auto executionState = (RollerWidgetComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (!executionState) { |
|
||||||
executionState = allocateComponentExecutionState<RollerWidgetComponenentExecutionState>(flowState, componentIndex); |
|
||||||
} |
|
||||||
executionState->clear = true; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,31 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct RollerWidgetComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
bool clear; |
|
||||||
}; |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
@ -1,53 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeSelectLanguageComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value languageValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SELECT_LANGUAGE_ACTION_COMPONENT_PROPERTY_LANGUAGE, languageValue, "Failed to evaluate Language in SelectLanguage")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
const char *language = languageValue.getString(); |
|
||||||
|
|
||||||
auto languages = flowState->assets->languages; |
|
||||||
|
|
||||||
for (uint32_t languageIndex = 0; languageIndex < languages.count; languageIndex++) { |
|
||||||
if (strcmp(languages[languageIndex]->languageID, language) == 0) { |
|
||||||
g_selectedLanguage = languageIndex; |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
char message[256]; |
|
||||||
snprintf(message, sizeof(message), "Unknown language %s", language); |
|
||||||
throwError(flowState, componentIndex, message); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,49 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
#include <eez/gui/gui.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
#define PAGE_DIRECTION_LTR 0 |
|
||||||
#define PAGE_DIRECTION_RTL 1 |
|
||||||
|
|
||||||
struct SetPageDirectionComponent : public Component { |
|
||||||
uint8_t direction; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeSetPageDirectionComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (SetPageDirectionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
gui::g_isRTL = component->direction == PAGE_DIRECTION_RTL; |
|
||||||
|
|
||||||
gui::refreshScreen(); |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,57 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/components/set_variable.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeSetVariableComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (SetVariableActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
for (uint32_t entryIndex = 0; entryIndex < component->entries.count; entryIndex++) { |
|
||||||
auto entry = component->entries[entryIndex]; |
|
||||||
|
|
||||||
char strErrorMessage[256]; |
|
||||||
snprintf(strErrorMessage, sizeof(strErrorMessage), "Failed to evaluate Variable no. %d in SetVariable", (int)(entryIndex + 1)); |
|
||||||
|
|
||||||
Value dstValue; |
|
||||||
if (!evalAssignableExpression(flowState, componentIndex, entry->variable, dstValue, strErrorMessage)) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
snprintf(strErrorMessage, sizeof(strErrorMessage), "Failed to evaluate Value no. %d in SetVariable", (int)(entryIndex + 1)); |
|
||||||
|
|
||||||
Value srcValue; |
|
||||||
if (!evalExpression(flowState, componentIndex, entry->value, srcValue, strErrorMessage)) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
assignValue(flowState, componentIndex, dstValue, srcValue); |
|
||||||
} |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,36 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2022-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct SetVariableEntry { |
|
||||||
eez::gui::AssetsPtr<uint8_t> variable; |
|
||||||
eez::gui::AssetsPtr<uint8_t> value; |
|
||||||
}; |
|
||||||
|
|
||||||
struct SetVariableActionComponent : public Component { |
|
||||||
eez::gui::ListOfAssetsPtr<SetVariableEntry> entries; |
|
||||||
}; |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
@ -1,88 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/operations.h> |
|
||||||
#include <eez/flow/private.h> |
|
||||||
#include <eez/flow/hooks.h> |
|
||||||
|
|
||||||
#include <eez/gui/gui.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct ShowKeyboardActionComponent : public Component { |
|
||||||
uint8_t password; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeShowKeyboardComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (ShowKeyboardActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
Value labelValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYBOARD_ACTION_COMPONENT_PROPERTY_LABEL, labelValue, "Failed to evaluate Label in ShowKeyboard")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value initialTextValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYBOARD_ACTION_COMPONENT_PROPERTY_INITAL_TEXT, initialTextValue, "Failed to evaluate InitialText in ShowKeyboard")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value minCharsValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYBOARD_ACTION_COMPONENT_PROPERTY_MIN_CHARS, minCharsValue, "Failed to evaluate MinChars in ShowKeyboard")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value maxCharsValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYBOARD_ACTION_COMPONENT_PROPERTY_MAX_CHARS, maxCharsValue, "Failed to evaluate MaxChars in ShowKeyboard")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
static FlowState *g_showKeyboardFlowState; |
|
||||||
static unsigned g_showKeyboardComponentIndex; |
|
||||||
|
|
||||||
g_showKeyboardFlowState = flowState; |
|
||||||
g_showKeyboardComponentIndex = componentIndex; |
|
||||||
|
|
||||||
startAsyncExecution(flowState, componentIndex); |
|
||||||
|
|
||||||
auto onOk = [](char *value) { |
|
||||||
propagateValue(g_showKeyboardFlowState, g_showKeyboardComponentIndex, 0, Value::makeStringRef(value, -1, 0x87d32fe2)); |
|
||||||
getAppContextFromId(APP_CONTEXT_ID_DEVICE)->popPage(); |
|
||||||
endAsyncExecution(g_showKeyboardFlowState, g_showKeyboardComponentIndex); |
|
||||||
}; |
|
||||||
|
|
||||||
auto onCancel = []() { |
|
||||||
propagateValue(g_showKeyboardFlowState, g_showKeyboardComponentIndex, 1, Value()); |
|
||||||
getAppContextFromId(APP_CONTEXT_ID_DEVICE)->popPage(); |
|
||||||
endAsyncExecution(g_showKeyboardFlowState, g_showKeyboardComponentIndex); |
|
||||||
}; |
|
||||||
|
|
||||||
const char *label = labelValue.getString(); |
|
||||||
if (label && *label) { |
|
||||||
labelValue = op_add(labelValue, Value(": ")); |
|
||||||
} |
|
||||||
|
|
||||||
showKeyboardHook(labelValue, initialTextValue, minCharsValue, maxCharsValue, component->password, onOk, onCancel); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,109 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/operations.h> |
|
||||||
#include <eez/flow/private.h> |
|
||||||
#include <eez/flow/hooks.h> |
|
||||||
|
|
||||||
#include <eez/gui/gui.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct ShowKeyboardActionComponent : public Component { |
|
||||||
uint8_t password; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeShowKeypadComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
Value labelValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYBOARD_ACTION_COMPONENT_PROPERTY_LABEL, labelValue, "Failed to evaluate Label in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value initialValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYPAD_ACTION_COMPONENT_PROPERTY_INITAL_VALUE, initialValue, "Failed to evaluate InitialValue in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value minValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYPAD_ACTION_COMPONENT_PROPERTY_MIN, minValue, "Failed to evaluate Min in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value maxValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYPAD_ACTION_COMPONENT_PROPERTY_MAX, maxValue, "Failed to evaluate Max in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Value unitValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_KEYPAD_ACTION_COMPONENT_PROPERTY_UNIT, unitValue, "Failed to evaluate Unit in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
static FlowState *g_showKeyboardFlowState; |
|
||||||
static unsigned g_showKeyboardComponentIndex; |
|
||||||
|
|
||||||
g_showKeyboardFlowState = flowState; |
|
||||||
g_showKeyboardComponentIndex = componentIndex; |
|
||||||
|
|
||||||
startAsyncExecution(flowState, componentIndex); |
|
||||||
|
|
||||||
auto onOk = [](float value) { |
|
||||||
Value precisionValue; |
|
||||||
if (!evalProperty(g_showKeyboardFlowState, g_showKeyboardComponentIndex, defs_v3::SHOW_KEYPAD_ACTION_COMPONENT_PROPERTY_PRECISION, precisionValue, "Failed to evaluate Precision in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
float precision = precisionValue.toFloat(); |
|
||||||
|
|
||||||
Value unitValue; |
|
||||||
if (!evalProperty(g_showKeyboardFlowState, g_showKeyboardComponentIndex, defs_v3::SHOW_KEYPAD_ACTION_COMPONENT_PROPERTY_UNIT, unitValue, "Failed to evaluate Unit in ShowKeypad")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
Unit unit = getUnitFromName(unitValue.getString()); |
|
||||||
|
|
||||||
value = roundPrec(value, precision) / getUnitFactor(unit); |
|
||||||
|
|
||||||
propagateValue(g_showKeyboardFlowState, g_showKeyboardComponentIndex, 0, Value(value, VALUE_TYPE_FLOAT)); |
|
||||||
getAppContextFromId(APP_CONTEXT_ID_DEVICE)->popPage(); |
|
||||||
endAsyncExecution(g_showKeyboardFlowState, g_showKeyboardComponentIndex); |
|
||||||
}; |
|
||||||
|
|
||||||
auto onCancel = []() { |
|
||||||
propagateValue(g_showKeyboardFlowState, g_showKeyboardComponentIndex, 1, Value()); |
|
||||||
getAppContextFromId(APP_CONTEXT_ID_DEVICE)->popPage(); |
|
||||||
endAsyncExecution(g_showKeyboardFlowState, g_showKeyboardComponentIndex); |
|
||||||
}; |
|
||||||
|
|
||||||
const char *label = labelValue.getString(); |
|
||||||
if (label && *label) { |
|
||||||
labelValue = op_add(labelValue, Value(": ")); |
|
||||||
} |
|
||||||
|
|
||||||
Unit unit = getUnitFromName(unitValue.getString()); |
|
||||||
|
|
||||||
showKeypadHook(labelValue, initialValue, minValue, maxValue, unit, onOk, onCancel); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,52 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
#include <eez/gui/gui.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
const uint8_t MESSAGE_BOX_TYPE_INFO = 1; |
|
||||||
const uint8_t MESSAGE_BOX_TYPE_ERROR = 2; |
|
||||||
|
|
||||||
struct ShowMessagePageActionComponent : public Component { |
|
||||||
uint8_t type; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeShowMessageBoxComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (ShowMessagePageActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
Value messageValue; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::SHOW_MESSAGE_BOX_ACTION_COMPONENT_PROPERTY_MESSAGE, messageValue, "Failed to evaluate Message in ShowMessageBox")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (component->type == MESSAGE_BOX_TYPE_INFO) { |
|
||||||
getAppContextFromId(APP_CONTEXT_ID_DEVICE)->infoMessage(messageValue); |
|
||||||
} else if (component->type == MESSAGE_BOX_TYPE_ERROR) { |
|
||||||
getAppContextFromId(APP_CONTEXT_ID_DEVICE)->errorMessage(messageValue); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,40 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/debugger.h> |
|
||||||
#include <eez/flow/hooks.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct ShowPageActionComponent : public Component { |
|
||||||
int16_t page; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeShowPageComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (ShowPageActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
replacePageHook(component->page); |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,31 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeStartComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,61 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
|
|
||||||
#include <eez/flow/components/switch.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
void executeSwitchComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto component = (SwitchActionComponent *)flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
for (uint32_t testIndex = 0; testIndex < component->tests.count; testIndex++) { |
|
||||||
auto test = component->tests[testIndex]; |
|
||||||
|
|
||||||
char strMessage[256]; |
|
||||||
snprintf(strMessage, sizeof(strMessage), "Failed to evaluate test condition no. %d in Switch", (int)(testIndex + 1)); |
|
||||||
|
|
||||||
Value conditionValue; |
|
||||||
if (!evalExpression(flowState, componentIndex, test->conditionInstructions, conditionValue, strMessage)) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
int err; |
|
||||||
bool result = conditionValue.toBool(&err); |
|
||||||
if (err == 0) { |
|
||||||
if (result) { |
|
||||||
propagateValue(flowState, componentIndex, test->outputIndex); |
|
||||||
break; |
|
||||||
} |
|
||||||
} else { |
|
||||||
char strMessage[256]; |
|
||||||
snprintf(strMessage, sizeof(strMessage), "Failed to convert Value no. %d to boolean in Switch\n", (int)(testIndex + 1)); |
|
||||||
throwError(flowState, componentIndex, strMessage); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,36 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Generic Firmware |
|
||||||
* Copyright (C) 2022-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct SwitchTest { |
|
||||||
uint8_t outputIndex; |
|
||||||
uint8_t conditionInstructions[1]; |
|
||||||
}; |
|
||||||
|
|
||||||
struct SwitchActionComponent : public Component { |
|
||||||
eez::gui::ListOfAssetsPtr<SwitchTest> tests; |
|
||||||
}; |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
@ -1,74 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#include <stdio.h> |
|
||||||
|
|
||||||
#include <eez/core/alloc.h> |
|
||||||
#include <eez/core/os.h> |
|
||||||
|
|
||||||
#include <eez/flow/components.h> |
|
||||||
#include <eez/flow/flow_defs_v3.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/queue.h> |
|
||||||
|
|
||||||
using namespace eez::gui; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
struct WatchVariableComponenentExecutionState : public ComponenentExecutionState { |
|
||||||
Value value; |
|
||||||
}; |
|
||||||
|
|
||||||
void executeWatchVariableComponent(FlowState *flowState, unsigned componentIndex) { |
|
||||||
auto watchVariableComponentExecutionState = (WatchVariableComponenentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
|
|
||||||
Value value; |
|
||||||
if (!evalProperty(flowState, componentIndex, defs_v3::WATCH_VARIABLE_ACTION_COMPONENT_PROPERTY_VARIABLE, value, "Failed to evaluate Variable in WatchVariable")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (!watchVariableComponentExecutionState) { |
|
||||||
watchVariableComponentExecutionState = allocateComponentExecutionState<WatchVariableComponenentExecutionState>(flowState, componentIndex); |
|
||||||
watchVariableComponentExecutionState->value = value; |
|
||||||
|
|
||||||
propagateValue(flowState, componentIndex, 1, value); |
|
||||||
|
|
||||||
if (!addToQueue(flowState, componentIndex, -1, -1, -1, true)) { |
|
||||||
throwError(flowState, componentIndex, "Execution queue is full\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} else { |
|
||||||
if (value != watchVariableComponentExecutionState->value) { |
|
||||||
watchVariableComponentExecutionState->value = value; |
|
||||||
propagateValue(flowState, componentIndex, 1, value); |
|
||||||
} |
|
||||||
|
|
||||||
if (canFreeFlowState(flowState, false)) { |
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
} else { |
|
||||||
if (!addToQueue(flowState, componentIndex, -1, -1, -1, true)) { |
|
||||||
throwError(flowState, componentIndex, "Execution queue is full\n"); |
|
||||||
return; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} // namespace flow
|
|
||||||
} // namespace eez
|
|
@ -1,378 +0,0 @@ |
|||||||
|
|
||||||
/*
|
|
||||||
* EEZ Modular Firmware |
|
||||||
* Copyright (C) 2021-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#if defined(__EMSCRIPTEN__) |
|
||||||
|
|
||||||
#include <emscripten.h> |
|
||||||
|
|
||||||
#include <stdlib.h> |
|
||||||
#include <stdio.h> |
|
||||||
|
|
||||||
#include <eez/flow/flow.h> |
|
||||||
#include <eez/flow/expression.h> |
|
||||||
#include <eez/flow/dashboard_api.h> |
|
||||||
|
|
||||||
using namespace eez; |
|
||||||
using namespace eez::gui; |
|
||||||
using namespace eez::flow; |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
int getFlowStateIndex(FlowState *flowState) { |
|
||||||
return (int)((uint8_t *)flowState - ALLOC_BUFFER); |
|
||||||
} |
|
||||||
|
|
||||||
struct DashboardComponentExecutionState : public ComponenentExecutionState { |
|
||||||
~DashboardComponentExecutionState() { |
|
||||||
EM_ASM({ |
|
||||||
freeComponentExecutionState($0, $1); |
|
||||||
}, g_wasmModuleId, state); |
|
||||||
} |
|
||||||
int32_t state; |
|
||||||
}; |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
||||||
|
|
||||||
static inline FlowState *getFlowState(int flowStateIndex) { |
|
||||||
return (FlowState *)(ALLOC_BUFFER + flowStateIndex); |
|
||||||
} |
|
||||||
|
|
||||||
static void updateArrayValue(ArrayValue *arrayValue1, ArrayValue *arrayValue2) { |
|
||||||
for (uint32_t i = 0; i < arrayValue1->arraySize; i++) { |
|
||||||
if (arrayValue1->values[i].getType() == VALUE_TYPE_ARRAY || arrayValue1->values[i].getType() == VALUE_TYPE_ARRAY_REF) { |
|
||||||
updateArrayValue(arrayValue1->values[i].getArray(), arrayValue2->values[i].getArray()); |
|
||||||
} else { |
|
||||||
arrayValue1->values[i] = arrayValue2->values[i]; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createUndefinedValue() { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x2e821285); |
|
||||||
*pValue = Value(0, VALUE_TYPE_UNDEFINED); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createNullValue() { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x69debded); |
|
||||||
*pValue = Value(0, VALUE_TYPE_NULL); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createIntValue(int value) { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x20ea356c); |
|
||||||
*pValue = Value(value, VALUE_TYPE_INT32); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createDoubleValue(double value) { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0xecfb69a9); |
|
||||||
*pValue = Value(value, VALUE_TYPE_DOUBLE); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createBooleanValue(int value) { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x76071378); |
|
||||||
*pValue = Value(value, VALUE_TYPE_BOOLEAN); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createStringValue(const char *value) { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x0a8a7ed1); |
|
||||||
Value stringValue = Value::makeStringRef(value, strlen(value), 0x5b1e51d7); |
|
||||||
*pValue = stringValue; |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createArrayValue(int arraySize, int arrayType) { |
|
||||||
Value value = Value::makeArrayRef(arraySize, arrayType, 0xeabb7edc); |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0xbab14c6a); |
|
||||||
if (pValue) { |
|
||||||
*pValue = value; |
|
||||||
} |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createStreamValue(double value) { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x53a2e660); |
|
||||||
*pValue = Value(value, VALUE_TYPE_STREAM); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) createDateValue(double value) { |
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0x90b7ce70); |
|
||||||
*pValue = Value(value, VALUE_TYPE_DATE); |
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) arrayValueSetElementValue(Value *arrayValuePtr, int elementIndex, Value *valuePtr) { |
|
||||||
auto array = arrayValuePtr->getArray(); |
|
||||||
array->values[elementIndex] = *valuePtr; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) valueFree(Value *valuePtr) { |
|
||||||
ObjectAllocator<Value>::deallocate(valuePtr); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) setGlobalVariable(int globalVariableIndex, Value *valuePtr) { |
|
||||||
auto flowDefinition = static_cast<FlowDefinition *>(g_mainAssets->flowDefinition); |
|
||||||
Value *globalVariableValuePtr = flowDefinition->globalVariables[globalVariableIndex]; |
|
||||||
*globalVariableValuePtr = *valuePtr; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) updateGlobalVariable(int globalVariableIndex, Value *valuePtr) { |
|
||||||
auto flowDefinition = static_cast<FlowDefinition *>(g_mainAssets->flowDefinition); |
|
||||||
Value *globalVariableValuePtr = flowDefinition->globalVariables[globalVariableIndex]; |
|
||||||
updateArrayValue(globalVariableValuePtr->getArray(), valuePtr->getArray()); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(int) getFlowIndex(int flowStateIndex) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
return flowState->flowIndex; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(int) getComponentExecutionState(int flowStateIndex, int componentIndex) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
auto executionState = (DashboardComponentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (executionState) { |
|
||||||
return executionState->state; |
|
||||||
} |
|
||||||
return -1; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) setComponentExecutionState(int flowStateIndex, int componentIndex, int state) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
auto executionState = (DashboardComponentExecutionState *)flowState->componenentExecutionStates[componentIndex]; |
|
||||||
if (executionState) { |
|
||||||
if (state != -1) { |
|
||||||
executionState->state = state; |
|
||||||
} else { |
|
||||||
deallocateComponentExecutionState(flowState, componentIndex); |
|
||||||
} |
|
||||||
} else { |
|
||||||
if (state != -1) { |
|
||||||
executionState = allocateComponentExecutionState<DashboardComponentExecutionState>(flowState, componentIndex); |
|
||||||
executionState->state = state; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(const char *) getStringParam(int flowStateIndex, int componentIndex, int offset) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
auto ptr = (const uint32_t *)((const uint8_t *)component + sizeof(Component) + offset); |
|
||||||
return (const char *)(MEMORY_BEGIN + 4 + *ptr); |
|
||||||
} |
|
||||||
|
|
||||||
struct ExpressionList { |
|
||||||
uint32_t count; |
|
||||||
Value values[1]; |
|
||||||
}; |
|
||||||
|
|
||||||
EM_PORT_API(void *) getExpressionListParam(int flowStateIndex, int componentIndex, int offset) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
auto component = flowState->flow->components[componentIndex]; |
|
||||||
|
|
||||||
struct List { |
|
||||||
uint32_t count; |
|
||||||
uint32_t items; |
|
||||||
}; |
|
||||||
auto list = (const List *)((const uint8_t *)component + sizeof(Component) + offset); |
|
||||||
|
|
||||||
auto expressionList = (ExpressionList *)::malloc((list->count + 1) * sizeof(Value)); |
|
||||||
|
|
||||||
expressionList->count = list->count; |
|
||||||
|
|
||||||
auto items = (const uint32_t *)(MEMORY_BEGIN + 4 + list->items); |
|
||||||
|
|
||||||
for (uint32_t i = 0; i < list->count; i++) { |
|
||||||
// call Value constructor
|
|
||||||
new (expressionList->values + i) Value(); |
|
||||||
|
|
||||||
auto valueExpression = (const uint8_t *)(MEMORY_BEGIN + 4 + items[i]); |
|
||||||
if (!evalExpression(flowState, componentIndex, valueExpression, expressionList->values[i], "Failed to evaluate expression")) { |
|
||||||
return nullptr; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
return expressionList; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) freeExpressionListParam(void *ptr) { |
|
||||||
auto expressionList = (ExpressionList*)ptr; |
|
||||||
|
|
||||||
for (uint32_t i = 0; i < expressionList->count; i++) { |
|
||||||
// call Value desctructor
|
|
||||||
(expressionList->values + i)->~Value(); |
|
||||||
} |
|
||||||
|
|
||||||
::free(ptr); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value*) getInputValue(int flowStateIndex, int inputIndex) { |
|
||||||
auto flowState = getFlowState(g_mainAssets, flowStateIndex); |
|
||||||
return flowState->values + inputIndex; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) clearInputValue(int flowStateIndex, int inputIndex) { |
|
||||||
auto flowState = getFlowState(g_mainAssets, flowStateIndex); |
|
||||||
flowState->values[inputIndex] = Value(); |
|
||||||
onValueChanged(flowState->values + inputIndex); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(Value *) evalProperty(int flowStateIndex, int componentIndex, int propertyIndex, int32_t *iterators) { |
|
||||||
auto flowState = getFlowState(g_mainAssets, flowStateIndex); |
|
||||||
|
|
||||||
Value result; |
|
||||||
if (!eez::flow::evalProperty(flowState, componentIndex, propertyIndex, result, "Failed to evaluate property", nullptr, iterators)) { |
|
||||||
return nullptr; |
|
||||||
} |
|
||||||
|
|
||||||
auto pValue = ObjectAllocator<Value>::allocate(0xb7e697b8); |
|
||||||
if (!pValue) { |
|
||||||
throwError(flowState, componentIndex, "Out of memory\n"); |
|
||||||
return nullptr; |
|
||||||
} |
|
||||||
|
|
||||||
*pValue = result; |
|
||||||
|
|
||||||
return pValue; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) assignProperty(int flowStateIndex, int componentIndex, int propertyIndex, int32_t *iterators, Value *srcValuePtr) { |
|
||||||
auto flowState = getFlowState(g_mainAssets, flowStateIndex); |
|
||||||
|
|
||||||
Value dstValue; |
|
||||||
if (evalAssignableProperty(flowState, componentIndex, propertyIndex, dstValue, nullptr, nullptr, iterators)) { |
|
||||||
assignValue(flowState, componentIndex, dstValue, *srcValuePtr); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) setPropertyField(int flowStateIndex, int componentIndex, int propertyIndex, int fieldIndex, Value *valuePtr) { |
|
||||||
auto flowState = getFlowState(g_mainAssets, flowStateIndex); |
|
||||||
|
|
||||||
Value result; |
|
||||||
if (!eez::flow::evalProperty(flowState, componentIndex, propertyIndex, result, "Failed to evaluate property")) { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (result.getType() == VALUE_TYPE_VALUE_PTR) { |
|
||||||
result = *result.pValueValue; |
|
||||||
} |
|
||||||
|
|
||||||
if (result.getType() != VALUE_TYPE_ARRAY && result.getType() != VALUE_TYPE_ARRAY_REF) { |
|
||||||
throwError(flowState, componentIndex, "Property is not an array"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
auto array = result.getArray(); |
|
||||||
|
|
||||||
if (fieldIndex < 0 || fieldIndex >= array->arraySize) { |
|
||||||
throwError(flowState, componentIndex, "Invalid field index"); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
array->values[fieldIndex] = *valuePtr; |
|
||||||
onValueChanged(array->values + fieldIndex); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) propagateValue(int flowStateIndex, int componentIndex, int outputIndex, Value *valuePtr) { |
|
||||||
auto flowState = getFlowState(g_mainAssets, flowStateIndex); |
|
||||||
eez::flow::propagateValue(flowState, componentIndex, outputIndex, *valuePtr); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) propagateValueThroughSeqout(int flowStateIndex, int componentIndex) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
eez::flow::propagateValueThroughSeqout(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) startAsyncExecution(int flowStateIndex, int componentIndex) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
eez::flow::startAsyncExecution(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) endAsyncExecution(int flowStateIndex, int componentIndex) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
eez::flow::endAsyncExecution(flowState, componentIndex); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) executeCallAction(int flowStateIndex, int componentIndex, int flowIndex) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
eez::flow::executeCallAction(flowState, componentIndex, flowIndex); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) logInfo(int flowStateIndex, int componentIndex, const char *infoMessage) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
eez::flow::logInfo(flowState, componentIndex, infoMessage); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(void) throwError(int flowStateIndex, int componentIndex, const char *errorMessage) { |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
eez::flow::throwError(flowState, componentIndex, errorMessage); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(int) getFirstRootFlowState() { |
|
||||||
if (!g_firstFlowState) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
return getFlowStateIndex(g_firstFlowState); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(int) getFirstChildFlowState(int flowStateIndex) { |
|
||||||
if (flowStateIndex == -1) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
auto firstChildFlowState = flowState->firstChild; |
|
||||||
if (!firstChildFlowState) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
return getFlowStateIndex(firstChildFlowState); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(int) getNextSiblingFlowState(int flowStateIndex) { |
|
||||||
if (flowStateIndex == -1) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
auto nextSiblingFlowState = flowState->nextSibling; |
|
||||||
if (!nextSiblingFlowState) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
return getFlowStateIndex(nextSiblingFlowState); |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(int) getFlowStateFlowIndex(int flowStateIndex) { |
|
||||||
if (flowStateIndex == -1) { |
|
||||||
return -1; |
|
||||||
} |
|
||||||
auto flowState = getFlowState(flowStateIndex); |
|
||||||
return flowState->flowIndex; |
|
||||||
} |
|
||||||
|
|
||||||
EM_PORT_API(bool) isRTL() { |
|
||||||
return g_isRTL; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
#endif // __EMSCRIPTEN__
|
|
@ -1,29 +0,0 @@ |
|||||||
/*
|
|
||||||
* EEZ Framework |
|
||||||
* Copyright (C) 2022-present, Envox d.o.o. |
|
||||||
* |
|
||||||
* This program is free software: you can redistribute it and/or modify |
|
||||||
* it under the terms of the GNU General Public License as published by |
|
||||||
* the Free Software Foundation, either version 3 of the License, or |
|
||||||
* (at your option) any later version. |
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, |
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
* GNU General Public License for more details. |
|
||||||
|
|
||||||
* You should have received a copy of the GNU General Public License |
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/ |
|
||||||
|
|
||||||
#pragma once |
|
||||||
|
|
||||||
#include <eez/flow/private.h> |
|
||||||
|
|
||||||
namespace eez { |
|
||||||
namespace flow { |
|
||||||
|
|
||||||
int getFlowStateIndex(FlowState *flowState); |
|
||||||
|
|
||||||
} // flow
|
|
||||||
} // eez
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue