Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d81e6df4b | ||
|
|
9045476a23 | ||
| 73e499f215 | |||
| fa03a763f1 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,2 @@
|
||||
build/
|
||||
.vscode
|
||||
.DS_Store
|
||||
.vscode
|
||||
483
.idea/editor.xml
generated
483
.idea/editor.xml
generated
@ -1,483 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BackendCodeEditorSettings">
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexedValue" value="ERROR" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexedValue" value="WARNING" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexedValue" value="HINT" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexRemoved" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
|
||||
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexRemoved" />
|
||||
</component>
|
||||
</project>
|
||||
24
.idea/inspectionProfiles/Project_Default.xml
generated
24
.idea/inspectionProfiles/Project_Default.xml
generated
@ -1,24 +0,0 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredPackages">
|
||||
<value>
|
||||
<list size="10">
|
||||
<item index="0" class="java.lang.String" itemvalue="pgml" />
|
||||
<item index="1" class="java.lang.String" itemvalue="asyncio" />
|
||||
<item index="2" class="java.lang.String" itemvalue="pyvis" />
|
||||
<item index="3" class="java.lang.String" itemvalue="scikit-learn" />
|
||||
<item index="4" class="java.lang.String" itemvalue="ipython" />
|
||||
<item index="5" class="java.lang.String" itemvalue="plotly" />
|
||||
<item index="6" class="java.lang.String" itemvalue="PyPDF2" />
|
||||
<item index="7" class="java.lang.String" itemvalue="pypdf" />
|
||||
<item index="8" class="java.lang.String" itemvalue="numpy" />
|
||||
<item index="9" class="java.lang.String" itemvalue="datasets" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
99
.idea/workspace.xml
generated
99
.idea/workspace.xml
generated
@ -10,9 +10,9 @@
|
||||
<option name="/Default/Housekeeping/FeatureSuggestion/FeatureSuggestionManager/DisabledSuggesters/=SwitchToGoToActionSuggester/@EntryIndexRemoved" />
|
||||
<option name="/Default/Environment/Hierarchy/GeneratedFilesCacheKey/Timestamp/@EntryValue" value="3" type="long" />
|
||||
</component>
|
||||
<component name="CMakePresetLoader">{
|
||||
"useNewFormat": true
|
||||
}</component>
|
||||
<component name="CMakePresetLoader"><![CDATA[{
|
||||
"useNewFormat": true
|
||||
}]]></component>
|
||||
<component name="CMakeProjectFlavorService">
|
||||
<option name="flavorId" value="CMakePlainProjectFlavor" />
|
||||
</component>
|
||||
@ -35,8 +35,11 @@
|
||||
</configurations>
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="51a5c9c0-ebfe-4d31-b391-1b542071ebbc" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/src/PicoIris.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/src/PicoIris.cpp" afterDir="false" />
|
||||
<list default="true" id="c8863cf1-2589-4490-99a8-f93f8134e6bb" name="Changes" comment="">
|
||||
<change beforePath="$USER_HOME$/.pico-sdk/sdk/2.1.1/src/rp2_common/hardware_pio/include/hardware/pio.h" beforeDir="false" afterPath="$USER_HOME$/.pico-sdk/sdk/2.1.1/src/rp2_common/hardware_pio/include/hardware/pio.h" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/CMakeLists.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/ov2640/SCCB.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/src/ov2640/SCCB.cpp" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/ov2640/camera.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/src/ov2640/camera.cpp" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -48,7 +51,13 @@
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="CMakeBuildProfile:Debug" />
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="73e499f2155d7ebe69609b27c6216055c45e134a" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
<option name="ROOT_SYNC" value="DONT_SYNC" />
|
||||
</component>
|
||||
<component name="ProjectApplicationVersion">
|
||||
<option name="ide" value="CLion" />
|
||||
@ -56,35 +65,41 @@
|
||||
<option name="minorVersion" value="3.4" />
|
||||
<option name="productBranch" value="Classic" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 5
|
||||
}</component>
|
||||
<component name="ProjectId" id="2udZkhEv91jWtQ4K8Rvo6Hv3c7Y" />
|
||||
<component name="ProjectColorInfo"><![CDATA[{
|
||||
"customColor": "",
|
||||
"associatedIndex": 5
|
||||
}]]></component>
|
||||
<component name="ProjectId" id="2v2SoR3oIanuTjIxHTyOXvFytYm" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.RadMigrateCodeStyle": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"RunOnceActivity.readMode.enableVisualFormatting": "true",
|
||||
"RunOnceActivity.west.config.association.type.startup.service": "true",
|
||||
"cf.first.check.clang-format": "false",
|
||||
"cidr.known.project.marker": "true",
|
||||
"git-widget-placeholder": "main",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "clion.platformio.config",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.RadMigrateCodeStyle": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.cidr.known.project.marker": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"RunOnceActivity.readMode.enableVisualFormatting": "true",
|
||||
"RunOnceActivity.west.config.association.type.startup.service": "true",
|
||||
"cf.first.check.clang-format": "false",
|
||||
"cidr.known.project.marker": "true",
|
||||
"git-widget-placeholder": "73e499f2",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"settings.editor.selected.configurable": "clion.platformio.config",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}</component>
|
||||
}]]></component>
|
||||
<component name="RunManager" selected="CMake Application.PicoIris">
|
||||
<configuration default="true" type="CLionExternalRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true">
|
||||
<method v="2">
|
||||
<option name="CLION.EXTERNAL.BUILD" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="PicoIris" type="CMakeRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="PicoIris" TARGET_NAME="PicoIris" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="PicoIris" RUN_TARGET_NAME="PicoIris">
|
||||
<method v="2">
|
||||
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
|
||||
@ -127,27 +142,27 @@
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="51a5c9c0-ebfe-4d31-b391-1b542071ebbc" name="Changes" comment="" />
|
||||
<created>1742580557791</created>
|
||||
<changelist id="c8863cf1-2589-4490-99a8-f93f8134e6bb" name="Changes" comment="" />
|
||||
<created>1743341850127</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1742580557791</updated>
|
||||
<workItem from="1742580559816" duration="794000" />
|
||||
<workItem from="1742750595682" duration="59000" />
|
||||
<workItem from="1742756844093" duration="379000" />
|
||||
<updated>1743341850127</updated>
|
||||
<workItem from="1743341851701" duration="467000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="VCPKGProject">
|
||||
<isAutomaticCheckingOnLaunch value="false" />
|
||||
<isAutomaticFoundErrors value="true" />
|
||||
<isAutomaticReloadCMake value="true" />
|
||||
</component>
|
||||
<component name="XSLT-Support.FileAssociations.UIState">
|
||||
<expand />
|
||||
<select />
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@ -35,16 +35,18 @@ pico_sdk_init()
|
||||
|
||||
# Add executable. Default name is the project name, version 0.1
|
||||
|
||||
add_executable(PicoIris src/PicoIris.cpp src/ov2640/camera.cpp src/ov2640/SCCB.cpp src/pio/i2c/pio_i2c.c)
|
||||
#add_executable(PicoIris src/PicoIris.cpp src/ov2640/camera.cpp src/ov2640/SCCB.cpp src/pio/i2c/pio_i2c.c)
|
||||
|
||||
add_executable(PicoIris src/PicoIris.cpp src/rp2040/ov2640.cpp src/rp2040/SCCB.cpp src/pio/i2c/pio_i2c.c)
|
||||
#add_executable(PicoIris bus_scan.c)
|
||||
|
||||
pico_set_program_name(PicoIris "PicoIris")
|
||||
pico_set_program_version(PicoIris "0.1")
|
||||
|
||||
# Generate PIO header
|
||||
pico_generate_pio_header(PicoIris ${CMAKE_CURRENT_LIST_DIR}/src/pio/i2c/i2c.pio)
|
||||
pico_generate_pio_header(PicoIris ${CMAKE_CURRENT_LIST_DIR}/image.pio ${CMAKE_CURRENT_LIST_DIR}/src/pio/i2c/i2c.pio)
|
||||
|
||||
#Disable debug messages on UART by redirecting them to USB
|
||||
# Modify the below lines to enable/disable output over UART/USB
|
||||
pico_enable_stdio_uart(PicoIris 0)
|
||||
pico_enable_stdio_usb(PicoIris 1)
|
||||
|
||||
|
||||
37
bus_scan.c
37
bus_scan.c
@ -38,8 +38,7 @@
|
||||
bool reserved_addr(uint8_t addr) {
|
||||
return (addr & 0x78) == 0 || (addr & 0x78) == 0x78;
|
||||
}
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 22
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 19
|
||||
|
||||
int main() {
|
||||
// Enable UART so we can print status output
|
||||
stdio_init_all();
|
||||
@ -48,51 +47,51 @@ int main() {
|
||||
puts("Default I2C pins were not defined");
|
||||
#else
|
||||
// This example will use I2C0 on the default SDA and SCL pins (GP4, GP5 on a Pico)
|
||||
gpio_set_function(11, GPIO_FUNC_PWM);
|
||||
uint slice_num = pwm_gpio_to_slice_num(11);
|
||||
gpio_set_function(3, GPIO_FUNC_PWM);
|
||||
uint slice_num = pwm_gpio_to_slice_num(3);
|
||||
// 6 cycles (0 to 5), 125 MHz / 6 = ~20.83 MHz wrap rate
|
||||
pwm_set_wrap(slice_num, 5);
|
||||
pwm_set_gpio_level(11, 3);
|
||||
pwm_set_gpio_level(3, 3);
|
||||
pwm_set_enabled(slice_num, true);
|
||||
sleep_ms(1000);
|
||||
|
||||
i2c_init(i2c1, 100 * 1000);
|
||||
gpio_set_function(22, GPIO_FUNC_I2C);
|
||||
gpio_set_function(19, GPIO_FUNC_I2C);
|
||||
gpio_pull_up(22);
|
||||
gpio_pull_up(19);
|
||||
i2c_init(i2c_default, 100 * 1000);
|
||||
gpio_set_function(PICO_DEFAULT_I2C_SDA_PIN, GPIO_FUNC_I2C);
|
||||
gpio_set_function(PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C);
|
||||
gpio_pull_up(PICO_DEFAULT_I2C_SDA_PIN);
|
||||
gpio_pull_up(PICO_DEFAULT_I2C_SCL_PIN);
|
||||
// Make the I2C pins available to picotool
|
||||
bi_decl(bi_2pins_with_func(22, 19, GPIO_FUNC_I2C));
|
||||
bi_decl(bi_2pins_with_func(PICO_DEFAULT_I2C_SDA_PIN, PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C));
|
||||
|
||||
while(true){
|
||||
printf("\nI2C Bus Scan\n");
|
||||
printf(" 0 1 2 3 4 5 6 7 8 9 A B C D E F\n");
|
||||
|
||||
|
||||
for (int addr = 0; addr < (1 << 7); ++addr) {
|
||||
if (addr % 16 == 0) {
|
||||
printf("%02x ", addr);
|
||||
}
|
||||
|
||||
|
||||
// Perform a 1-byte dummy read from the probe address. If a slave
|
||||
// acknowledges this address, the function returns the number of bytes
|
||||
// transferred. If the address byte is ignored, the function returns
|
||||
// -1.
|
||||
|
||||
|
||||
// Skip over any reserved addresses.
|
||||
int ret;
|
||||
uint8_t rxdata;
|
||||
if (reserved_addr(addr))
|
||||
ret = PICO_ERROR_GENERIC;
|
||||
else
|
||||
ret = i2c_read_blocking(i2c1, addr, &rxdata, 1, false);
|
||||
|
||||
|
||||
ret = i2c_read_blocking(i2c_default, addr, &rxdata, 1, false);
|
||||
|
||||
printf(ret < 0 ? "." : "@");
|
||||
printf(addr % 16 == 15 ? "\n" : " ");
|
||||
}
|
||||
printf("Done.\n");
|
||||
sleep_ms(1000);
|
||||
}
|
||||
|
||||
|
||||
printf("Done.\n");
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
21
image.pio
Normal file
21
image.pio
Normal file
@ -0,0 +1,21 @@
|
||||
.program image
|
||||
.wrap_target
|
||||
wait 1 pin 9 // wait for hsync
|
||||
wait 1 pin 8 // wait for rising pclk
|
||||
in pins 8
|
||||
wait 0 pin 8
|
||||
.wrap
|
||||
|
||||
% c-sdk {
|
||||
void image_program_init(PIO pio, uint sm, uint offset, uint pin_base) {
|
||||
pio_sm_set_consecutive_pindirs(pio, sm, pin_base, 10, false);
|
||||
|
||||
pio_sm_config c = image_program_get_default_config(offset);
|
||||
sm_config_set_in_pins(&c, pin_base);
|
||||
sm_config_set_in_shift(&c, false, true, 8);
|
||||
sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_RX);
|
||||
|
||||
pio_sm_init(pio, sm, offset, &c);
|
||||
pio_sm_set_enabled(pio, sm, true);
|
||||
}
|
||||
%}
|
||||
103
src/PicoIris.cpp
103
src/PicoIris.cpp
@ -11,52 +11,52 @@
|
||||
#include "../../hardware_dma/include/hardware/dma.h"
|
||||
|
||||
#include <ov2640/SCCB.hpp>
|
||||
#include <ov2640/camera.hpp>
|
||||
#include <rp2040/ov2640.hpp>
|
||||
#include "cstring"
|
||||
|
||||
// Frame header and footer markers for synchronization - using distinctive values
|
||||
const uint8_t FRAME_HEADER[] = {0xDE, 0xAD, 0xBE, 0xEF}; // Distinctive header
|
||||
const uint8_t FRAME_FOOTER[] = {0xCA, 0xFE, 0xBA, 0xBE}; // Distinctive footer
|
||||
const int FRAME_MARKER_SIZE = 4;
|
||||
uint8_t frame_buffer[160 * 120 * 2]; // Buffer for the image data
|
||||
// PIO2 is reserved for the cam data retreive functions
|
||||
|
||||
// Reduced baud rate for slower, more reliable debugging
|
||||
#define BAUD_RATE 57600 // Reduced for debugging (standard options: 9600, 19200, 38400, 57600, 115200)
|
||||
|
||||
// PIO2 is reserved for the cam data retrieve functions
|
||||
camera_config_t left_eye_config = {
|
||||
.pin_pwdn = -1, /*!< GPIO pin for camera power down line */
|
||||
.pin_reset = -1, /*!< GPIO pin for camera reset line */
|
||||
.pin_xclk = 11, /*!< GPIO pin for camera XCLK line */
|
||||
.pin_sccb_sda = 22, /*!< GPIO pin for camera SDA line */
|
||||
.pin_sccb_scl = 19, /*!< GPIO pin for camera SCL line */
|
||||
.pin_data_9 = 14, /*!< this pin + 7 consecutive will be used D0-D7 PCLK HREF */
|
||||
.pin_data_8 = 12,
|
||||
.pin_data_7 = 10,
|
||||
.pin_data_6 = 8,
|
||||
.pin_data_5 = 6,
|
||||
.pin_data_4 = 5,
|
||||
.pin_data_3 = 4,
|
||||
.pin_data_2 = 3,
|
||||
.pin_vsync = 17, /*!< GPIO pin for camera VSYNC line */
|
||||
.pin_hsync = 15, /*!< GPIO pin for camera VSYNC line */
|
||||
|
||||
.xclk_freq_hz = 0, /*!< Frequency of XCLK signal, in Hz. */
|
||||
.sccb_ctrl = 1, /* Select i2c controller ctrl: 0 - i2c0, 1 - i2c1, 2 - pio0, 3 - pio1, 4 - pio2 */
|
||||
};
|
||||
|
||||
// camera_config_t left_eye_config = {
|
||||
// .pin_pwdn = -1, /*!< GPIO pin for camera power down line */ //? Also called PWDN, or set to -1 and tie to GND
|
||||
// .pin_reset = -1, /*!< GPIO pin for camera reset line */ //? Cam reset, or set to -1 and tie to 3.3V
|
||||
// .pin_xclk = 3, /*!< GPIO pin for camera XCLK line */ //? in theory could be shared or perhaps ommited?
|
||||
// .pin_sccb_sda = 4, /*!< GPIO pin for camera SDA line */
|
||||
// .pin_sccb_scl = 5, /*!< GPIO pin for camera SCL line */
|
||||
// .pin_data_base = 6, /*!< this pin + 7 consecutive will be used D0-D7 PCLK HREF */
|
||||
// .pin_vsync = 16, /*!< GPIO pin for camera VSYNC line */
|
||||
// .xclk_div = 4, /*!< Frequency of XCLK signal, in Hz. */ //! Figure out the highest it can go to
|
||||
// .sccb_ctrl = 0, /* Select i2c controller ctrl: 0 - i2c0, 1 - i2c1, 2 - pio0, 3 - pio1, 4 - pio2 */
|
||||
// };
|
||||
ov2640_config left_eye_config = {
|
||||
.sccb = i2c0, /*!< I2C controller for camera SCCB */
|
||||
.pin_sioc = 32, /*!< GPIO pin for camera SCCB SIOC line */
|
||||
.pin_siod = 33, /*!< GPIO pin for camera SCCB SIOD line */
|
||||
.pin_resetb = 0, /*!< GPIO pin for camera reset line */ //? Cam reset, or set to -1 and tie to 3.3V
|
||||
.pin_xclk = 31, /*!< GPIO pin for camera XCLK line */ //? in theory could be shared or perhaps ommited?
|
||||
.pin_vsync = 44, /*!< GPIO pin for camera VSYNC line */
|
||||
.pin_y2_pio_base = 34, /*!< this pin + 7 consecutive will be used D0-D7 PCLK HREF */
|
||||
.pio = pio2, /*!< PIO instance for camera data reception */
|
||||
.pio_sm = 0, /*!< PIO state machine number for camera data reception */
|
||||
.dma_channel = 0, /*!< DMA channel number for camera data reception */
|
||||
.image_buf = frame_buffer, /*!< Pointer to the image buffer (to be allocated later) */
|
||||
.image_buf_size = sizeof(frame_buffer) // Size of the image buffer (160x120 RGB565)
|
||||
};
|
||||
// Send a properly framed image using printf for binary data
|
||||
void send_frame(const void* buffer, size_t size) {
|
||||
// Ensure UART output buffer is flushed before sending binary data
|
||||
printf("\n\nBINARY_START\n\n");
|
||||
sleep_ms(100); // Small delay to ensure the text is transmitted separately
|
||||
|
||||
|
||||
// Send binary data using fwrite directly to stdout
|
||||
// This avoids any text processing that printf might do
|
||||
|
||||
|
||||
// Send frame header
|
||||
fwrite(FRAME_HEADER, 1, FRAME_MARKER_SIZE, stdout);
|
||||
sleep_ms(100); // Small delay to ensure the text is transmitted separately
|
||||
printf("test....");
|
||||
|
||||
// Send frame size (4 bytes, little-endian)
|
||||
uint8_t size_bytes[4];
|
||||
@ -65,7 +65,6 @@ void send_frame(const void* buffer, size_t size) {
|
||||
size_bytes[2] = (size >> 16) & 0xFF;
|
||||
size_bytes[3] = (size >> 24) & 0xFF;
|
||||
fwrite(size_bytes, 1, 4, stdout);
|
||||
printf("test2....");
|
||||
|
||||
// Calculate checksum
|
||||
uint32_t checksum = 0;
|
||||
@ -73,7 +72,7 @@ void send_frame(const void* buffer, size_t size) {
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
checksum += buf[i];
|
||||
}
|
||||
|
||||
|
||||
// Send frame data
|
||||
fwrite(buf, 1, size, stdout);
|
||||
sleep_ms(100); // Small delay to ensure the text is transmitted separately
|
||||
@ -92,7 +91,7 @@ void send_frame(const void* buffer, size_t size) {
|
||||
|
||||
// Flush to ensure all binary data is sent
|
||||
fflush(stdout);
|
||||
|
||||
|
||||
// Make the end marker very distinctive with multiple newlines and unique pattern
|
||||
sleep_ms(100);
|
||||
printf("\n\n###BINARY_END###\n\n");
|
||||
@ -101,54 +100,60 @@ void send_frame(const void* buffer, size_t size) {
|
||||
// Test function to verify binary data transmission
|
||||
void test_binary_transfer() {
|
||||
printf("Testing binary transfer...\n");
|
||||
|
||||
|
||||
// Create a small test buffer
|
||||
uint8_t test_data[16];
|
||||
for (int i = 0; i < 16; i++) {
|
||||
test_data[i] = i;
|
||||
}
|
||||
|
||||
|
||||
// Send it as a frame
|
||||
send_frame(test_data, sizeof(test_data));
|
||||
|
||||
|
||||
printf("Binary test complete\n");
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
stdio_init_all();
|
||||
|
||||
|
||||
printf("\n\n=== PicoIris Starting ===\n");
|
||||
sleep_ms(1000);
|
||||
|
||||
// Test binary transfer
|
||||
test_binary_transfer();
|
||||
sleep_ms(1000);
|
||||
|
||||
|
||||
printf("Configuring Camera...\n");
|
||||
|
||||
OV2640 left_cam = OV2640(left_eye_config);
|
||||
left_cam.begin(DMA_IRQ_0);
|
||||
//OV2640 left_cam = OV2640(left_eye_config);
|
||||
ov2640_init(&left_eye_config);
|
||||
ov2640_reg_write(&left_eye_config, 0xff, 0x01);
|
||||
uint8_t midh = ov2640_reg_read(&left_eye_config, 0x1C);
|
||||
uint8_t midl = ov2640_reg_read(&left_eye_config, 0x1D);
|
||||
printf("MIDH = 0x%02x, MIDL = 0x%02x\n", midh, midl);
|
||||
// left_cam.begin(DMA_IRQ_0,1); // 0 for RGB565 mode
|
||||
printf("Camera Configured!...\n");
|
||||
|
||||
|
||||
// Image size (160 x 120 x 2 bytes per pixel for RGB565)
|
||||
const size_t frame_size = 160 * 120 * 2;
|
||||
|
||||
|
||||
while (true) {
|
||||
// Capture a frame
|
||||
printf("Attempting to capture frame...\n");
|
||||
left_cam.capture_frame();
|
||||
|
||||
//left_cam.capture_frame();
|
||||
ov2640_capture_frame(&left_eye_config);
|
||||
// Once the frame is ready, send it over UART
|
||||
printf("Checking if frame is ready...\n");
|
||||
printf("Frame ready, sending...\n");
|
||||
send_frame(left_cam.fb, frame_size);
|
||||
left_cam.resetFrameReady();
|
||||
//send_frame(left_cam.fb, frame_size);
|
||||
//left_cam.resetFrameReady();
|
||||
send_frame(left_eye_config.image_buf, frame_size);
|
||||
printf("Frame sent...\n");
|
||||
|
||||
|
||||
|
||||
// Small delay to allow processing time
|
||||
printf("Waiting before next attempt...\n");
|
||||
sleep_ms(3000); // Increased delay for debugging
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ SCCB::SCCB(uint8_t sda_pin, uint8_t scl_pin) {
|
||||
|
||||
SCCB::~SCCB() {}
|
||||
|
||||
// ctrl: 0 - i2c0, 1 - i2c1, 2 - pio0, 3 - pio1, 4 - pio2
|
||||
// ctrl: 0 - i2c0, 1 - i2c1, 2 - pio0, 3 - pio1, 4 - pio1
|
||||
// TODO: add proper return values when failure
|
||||
// TODO: panic if scl != sda + 1
|
||||
int SCCB::begin(uint8_t ctrl)
|
||||
@ -38,7 +38,7 @@ int SCCB::begin(uint8_t ctrl)
|
||||
this->pio = pio1;
|
||||
break;
|
||||
case 4:
|
||||
this->pio = pio2;
|
||||
this->pio = pio1;
|
||||
break;
|
||||
default:
|
||||
this->pio = pio0;
|
||||
@ -100,6 +100,6 @@ void SCCB::writeList(const register_val_t *cfg,
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
writeRegister(cfg[i].reg, cfg[i].value);
|
||||
sleep_ms(10); // Some cams require, else lockup on init
|
||||
sleep_ms(2); // Some cams require, else lockup on init
|
||||
}
|
||||
}
|
||||
@ -19,12 +19,23 @@ static volatile bool suspended = true;
|
||||
static volatile bool dma_busy = false;
|
||||
void* pointer;
|
||||
|
||||
// VSYNC interrupt handler
|
||||
void iCap_vsync_irq(uint gpio, uint32_t events) {
|
||||
if (!suspended && !dma_busy) {
|
||||
pio_sm_clear_fifos(pio2, 0); // Clear PIO FIFOs
|
||||
dma_busy = true; // Mark DMA as busy
|
||||
dma_channel_start(0); // Start DMA transfer
|
||||
if (events & GPIO_IRQ_EDGE_RISE) {
|
||||
//printf("VSYNC RISE (suspended=%d, dma_busy=%d)\n", suspended, dma_busy);
|
||||
|
||||
// Only start capture on rising edge of VSYNC if we're not suspended and DMA isn't busy
|
||||
if (!suspended && !dma_busy) {
|
||||
// Fill test pattern to verify DMA is running
|
||||
uint16_t* fb_ptr = (uint16_t*)pointer;
|
||||
for (int i = 0; i < 10; i++) {
|
||||
fb_ptr[i] = 0xAA55; // Test pattern
|
||||
}
|
||||
|
||||
pio_sm_clear_fifos(pio1, 0); // Clear PIO FIFOs
|
||||
dma_busy = true; // Mark DMA as busy
|
||||
printf("Starting DMA transfer\n");
|
||||
dma_channel_start(0); // Start DMA transfer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,31 +44,31 @@ void iCap_dma_finish_irq() {
|
||||
frameReady = true; // Signal frame is ready
|
||||
suspended = true; // Suspend further captures
|
||||
dma_busy = false; // DMA is no longer busy
|
||||
|
||||
// Check if data was received
|
||||
uint16_t* fb_ptr = (uint16_t*)pointer;
|
||||
uint32_t non_zero_count = 0;
|
||||
for (int i = 0; i < 100; i++) { // Just check first 100 values
|
||||
if (fb_ptr[i] != 0) {
|
||||
non_zero_count++;
|
||||
}
|
||||
}
|
||||
printf("DMA complete: %d/100 non-zero values found\n", non_zero_count);
|
||||
|
||||
dma_channel_set_write_addr(0, pointer, false); // Reset write address
|
||||
dma_hw->ints0 = 1u << 0; // Clear DMA interrupt flag
|
||||
}
|
||||
// TODO: Stolen from Adafruit repo (Check if correct)
|
||||
|
||||
|
||||
|
||||
// PIO code in this table is modified at runtime so that PCLK is
|
||||
// configurable (rather than fixed GP## or PIN offset). Data pins
|
||||
// must be contiguous but are otherwise configurable.
|
||||
static uint16_t capture_pio_opcodes[] = {
|
||||
// Only monitor PCLK when HSYNC is high. This is more noise-immune
|
||||
// than letting it fly.
|
||||
0b0010000010000000, // WAIT 1 GPIO 0 (mask in HSYNC pin before use)
|
||||
0b0010000010000000, // WAIT 1 GPIO 0 (mask in PCLK pin before use)
|
||||
0b0100000000001000, // IN PINS 8 -- 8 bits into RX FIFO
|
||||
0b0010000000000000, // WAIT 0 GPIO 0 (mask in PCLK pin before use)
|
||||
};
|
||||
|
||||
static struct pio_program cap_pio_program = {
|
||||
.instructions = capture_pio_opcodes,
|
||||
.length = sizeof capture_pio_opcodes / sizeof capture_pio_opcodes[0],
|
||||
.instructions = image_program_instructions,
|
||||
.length = sizeof image_program_instructions / sizeof image_program_instructions[0],
|
||||
.origin = -1,
|
||||
};
|
||||
|
||||
|
||||
// Complete camera init dumped from running esp32 (240x240 JPEG qty: 7)
|
||||
register_val_t OV2640_stolem_jpeg_init[] = {
|
||||
{OV2640_REG_RA_DLMT, OV2640_RA_DLMT_SENSOR},
|
||||
{OV2640_REG1_COM7, OV2640_COM7_SRST},
|
||||
@ -220,6 +231,7 @@ register_val_t OV2640_stolem_jpeg_init[] = {
|
||||
{0x05, 0x00}
|
||||
};
|
||||
|
||||
|
||||
register_val_t OV2640_init[] = {
|
||||
// Ideas from rp2040_ov2640-main repo
|
||||
// OV2640 camera initialization after reset
|
||||
@ -474,7 +486,6 @@ register_val_t OV2640_init[] = {
|
||||
{OV2640_REG0_RESET, 0x00}
|
||||
}; // Go
|
||||
|
||||
|
||||
// Stolem from esp32-camera
|
||||
register_val_t OV2640_jpeg[] = {
|
||||
{OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP},
|
||||
@ -569,11 +580,12 @@ register_val_t OV2640_rgb[] = {
|
||||
{OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP}, // DSP bank select 0
|
||||
{OV2640_REG0_RESET, OV2640_RESET_DVP},
|
||||
{OV2640_REG0_IMAGE_MODE, OV2640_IMAGE_MODE_DVP_RGB565 |
|
||||
OV2640_IMAGE_MODE_BYTE_SWAP},
|
||||
OV2640_IMAGE_MODE_BYTE_SWAP}, // TODO: Check if byteswap is supposed to be enabled?
|
||||
{0xD7, 0x03}, // Mystery init values
|
||||
{0xE1, 0x77}, // seen in other examples
|
||||
{OV2640_REG0_RESET, 0x00}
|
||||
}; // Go
|
||||
|
||||
register_val_t OV2640_qqvga[] = {
|
||||
{OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP}, // DSP bank select 0
|
||||
{OV2640_REG0_RESET, OV2640_RESET_DVP},
|
||||
@ -607,125 +619,75 @@ register_val_t OV2640_qqvga[] = {
|
||||
// };
|
||||
|
||||
|
||||
|
||||
OV2640::OV2640(camera_config_t config)
|
||||
{
|
||||
this->config = config;
|
||||
memset(&this->fb, 0x00, sizeof(this->fb));
|
||||
memset(&this->fb, 0x00, sizeof(this->fb));
|
||||
pointer = &this->fb;
|
||||
//this->fb = image_buf;
|
||||
}
|
||||
|
||||
|
||||
// Pin interrupt on VSYNC calls this to start DMA transfer (unless suspended).
|
||||
// static void vsync_irq(uint gpio, uint32_t events)
|
||||
// {
|
||||
// pio_sm_clear_fifos(pio2, sm);
|
||||
// dma_channel_start(dma_channel);
|
||||
// }
|
||||
|
||||
// static void dma_finish_irq()
|
||||
// {
|
||||
// // Channel MUST be reconfigured each time (to reset the dest address).
|
||||
// dma_channel_set_write_addr(dma_channel,
|
||||
// (uint8_t *)(image_buf), false);
|
||||
// dma_hw->ints0 = 1u << dma_channel; // Clear IRQ
|
||||
// uint32_t data = pio2->rxf[sm];
|
||||
// fwrite(&data, 1, 32, stdout);
|
||||
// }
|
||||
|
||||
int OV2640::begin(int dma_irq)
|
||||
// mode 0 - adafruit rgb, 1 - meine jpeg, 2 - stolem jpeg
|
||||
int OV2640::begin(int dma_irq, int mode) // mode is just here to make debbuging easier
|
||||
{
|
||||
// Initialize peripherals for parallel+I2C camera:
|
||||
|
||||
// XCLK generation (~18.71 MHz)
|
||||
gpio_set_function(this->config.pin_xclk, GPIO_FUNC_PWM);
|
||||
uint slice_num = pwm_gpio_to_slice_num(this->config.pin_xclk);
|
||||
// 8 cycles (0 to 7), 150 MHz / 8 = ~18.71 MHz wrap rate
|
||||
pwm_set_wrap(slice_num, 7);
|
||||
|
||||
pwm_set_wrap(slice_num, this->config.xclk_div);
|
||||
pwm_set_gpio_level(this->config.pin_xclk, 4);
|
||||
pwm_set_enabled(slice_num, true);
|
||||
|
||||
printf("PWM clock setup for XCLK complete (9.375 MHz)\n");
|
||||
|
||||
// Init SCCB
|
||||
printf("Initializing SCCB on SDA=%d, SCL=%d...\n",
|
||||
this->config.pin_sccb_sda, this->config.pin_sccb_scl);
|
||||
this->sccb = SCCB(this->config.pin_sccb_sda, this->config.pin_sccb_scl);
|
||||
this->sccb.begin(this->config.sccb_ctrl);
|
||||
printf("SCCB initialization complete\n");
|
||||
|
||||
// ENABLE AND/OR RESET CAMERA --------------------------------------------
|
||||
// Unsure of camera startup time from beginning of input clock.
|
||||
// Let's guess it's similar to tS:REG (300 ms) from datasheet.
|
||||
printf("Waiting for camera to stabilize...\n");
|
||||
sleep_ms(300);
|
||||
|
||||
// Perform a soft reset
|
||||
printf("Sending camera reset command...\n");
|
||||
this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_SENSOR); // Bank select 1
|
||||
this->sccb.writeRegister(OV2640_REG1_COM7, OV2640_COM7_SRST); // System reset
|
||||
sleep_ms(1000); // Datasheet: tS:RESET = 1 ms
|
||||
printf("Camera reset complete\n");
|
||||
this->sccb.writeRegister(OV2640_REG1_COM7, OV2640_COM7_SRST); // System reset<
|
||||
sleep_ms(300);
|
||||
|
||||
printf("Initializing camera registers...\n");
|
||||
this->sccb.writeList(OV2640_init, sizeof(OV2640_init)/sizeof(OV2640_init[0]));
|
||||
this->sccb.writeList(OV2640_qqvga, sizeof(OV2640_qqvga)/sizeof(OV2640_qqvga[0]));
|
||||
this->sccb.writeList(OV2640_rgb, sizeof(OV2640_rgb)/sizeof(OV2640_rgb[0]));
|
||||
switch(mode) {
|
||||
case 0:
|
||||
this->sccb.writeList(OV2640_init, sizeof(OV2640_init)/sizeof(OV2640_init[0]));
|
||||
this->sccb.writeList(OV2640_CIF, sizeof(OV2640_CIF)/sizeof(OV2640_CIF[0]));
|
||||
this->sccb.writeList(OV2640_rgb, sizeof(OV2640_rgb)/sizeof(OV2640_qqvga[0]));
|
||||
break;
|
||||
case 1:
|
||||
this->sccb.writeList(OV2640_init, sizeof(OV2640_init)/sizeof(OV2640_init[0]));
|
||||
this->sccb.writeList(OV2640_CIF, sizeof(OV2640_CIF)/sizeof(OV2640_CIF[0]));
|
||||
this->sccb.writeList(OV2640_jpeg, sizeof(OV2640_jpeg)/sizeof(OV2640_jpeg[0]));
|
||||
break;
|
||||
case 2:
|
||||
this->sccb.writeList(OV2640_stolem_jpeg_init, sizeof(OV2640_stolem_jpeg_init)/sizeof(OV2640_stolem_jpeg_init[0]));
|
||||
break;
|
||||
}
|
||||
|
||||
// // Enable color bar test pattern for debugging
|
||||
//printf("Enabling color bar test pattern...\n");
|
||||
//this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_SENSOR);
|
||||
//this->sccb.writeRegister(OV2640_REG1_COM7, OV2640_COM7_COLORBAR); // Output test pattern
|
||||
//printf("Test pattern enabled\n");
|
||||
|
||||
// GPIO pin setup
|
||||
printf("Setting up GPIO pins for camera data...\n");
|
||||
gpio_init(this->config.pin_vsync);
|
||||
gpio_set_dir(this->config.pin_vsync, GPIO_IN);
|
||||
gpio_pull_down(this->config.pin_vsync);
|
||||
|
||||
for (uint8_t i = 0; i < 10; i++)
|
||||
{
|
||||
gpio_init(this->config.pin_data_base + i);
|
||||
gpio_set_dir(this->config.pin_data_base + i, GPIO_IN);
|
||||
//gpio_pull_down(this->config.pin_data_base + i);
|
||||
}
|
||||
//prtintf("Gpio init done\n");
|
||||
|
||||
|
||||
gpio_init(this->config.pin_data_9 );
|
||||
gpio_set_dir(this->config.pin_data_9, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_8 );
|
||||
gpio_set_dir(this->config.pin_data_8, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_7 );
|
||||
gpio_set_dir(this->config.pin_data_7, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_6 );
|
||||
gpio_set_dir(this->config.pin_data_6, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_5 );
|
||||
gpio_set_dir(this->config.pin_data_5, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_4 );
|
||||
gpio_set_dir(this->config.pin_data_4, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_3 );
|
||||
gpio_set_dir(this->config.pin_data_3, GPIO_IN);
|
||||
gpio_init(this->config.pin_data_2 );
|
||||
gpio_set_dir(this->config.pin_data_2, GPIO_IN);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
printf("GPIO initialization complete\n");
|
||||
|
||||
// PIO setup for image capture
|
||||
printf("Setting up PIO for image capture...\n");
|
||||
uint offset = pio_add_program(pio2, &image_program);
|
||||
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_9);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_8);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_7);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_6);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_5);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_4);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_3);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_data_2);
|
||||
image_program_init(pio2, 0, offset, this->config.pin_hsync);
|
||||
|
||||
uint offset = pio_add_program(pio1, &cap_pio_program);
|
||||
image_program_init(pio1, 0, offset, this->config.pin_data_base);
|
||||
printf("PIO setup complete\n");
|
||||
|
||||
// DMA setup
|
||||
@ -735,8 +697,8 @@ int OV2640::begin(int dma_irq)
|
||||
channel_config_set_read_increment(&c, false);
|
||||
channel_config_set_write_increment(&c, true);
|
||||
channel_config_set_bswap(&c, true);
|
||||
channel_config_set_dreq(&c, pio_get_dreq(pio2, 0, false));
|
||||
dma_channel_configure(0, &c, this->fb, &pio2->rxf[0], 160 * 120, false);
|
||||
channel_config_set_dreq(&c, pio_get_dreq(pio1, 0, false));
|
||||
dma_channel_configure(0, &c, this->fb, &pio1->rxf[0], 160 * 120*2, false);
|
||||
printf("DMA configuration complete\n");
|
||||
|
||||
// Set up DMA interrupt
|
||||
@ -752,7 +714,9 @@ int OV2640::begin(int dma_irq)
|
||||
&iCap_vsync_irq); // Register VSYNC handler
|
||||
printf("VSYNC interrupt setup complete\n");
|
||||
|
||||
// ============= TESTING =========================================================
|
||||
// Test if VSYNC is toggling
|
||||
// ================================================================================
|
||||
printf("Checking if VSYNC is toggling...\n");
|
||||
bool initial_vsync = gpio_get(this->config.pin_vsync);
|
||||
uint32_t start_time = time_us_32();
|
||||
@ -773,41 +737,69 @@ int OV2640::begin(int dma_irq)
|
||||
printf("VSYNC signal detected successfully\n");
|
||||
}
|
||||
|
||||
// Add after VSYNC check
|
||||
printf("Testing data pins for signal...\n");
|
||||
uint32_t last_values[10] = {0};
|
||||
bool data_changing = false;
|
||||
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
bool changed = false;
|
||||
for (int pin = 0; pin < 10; pin++) {
|
||||
uint32_t val = gpio_get(this->config.pin_data_base + pin);
|
||||
if (val != last_values[pin]) {
|
||||
changed = true;
|
||||
last_values[pin] = val;
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
data_changing = true;
|
||||
printf("Data pins showing activity\n");
|
||||
break;
|
||||
}
|
||||
sleep_ms(1);
|
||||
}
|
||||
|
||||
if (!data_changing) {
|
||||
printf("ERROR: No activity detected on data pins!\n");
|
||||
}
|
||||
// ================================================================================
|
||||
// ================================================================================
|
||||
|
||||
printf("Camera initialization complete\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
//! You need to set pixformat after this
|
||||
void OV2640::set_framesize() {
|
||||
// uint8_t max_x = 75;
|
||||
// uint8_t max_y = 74;
|
||||
// uint8_t w = 60;
|
||||
// uint8_t h = 60;
|
||||
uint8_t max_x = 75;
|
||||
uint8_t max_y = 74;
|
||||
uint8_t w = 60;
|
||||
uint8_t h = 60;
|
||||
|
||||
// register_val_t win_regs[] = {
|
||||
// {OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP},
|
||||
// {OV2640_REG0_HSIZE, 75},
|
||||
// {OV2640_REG0_VSIZE, 74},
|
||||
// {OV2640_REG0_XOFFL, 50},
|
||||
// {OV2640_REG0_YOFFL, 0},
|
||||
// {OV2640_REG0_VHYX, ((max_y >> 1) & 0X80) | ((0 >> 4) & 0X70) | ((max_x >> 5) & 0X08) | ((50 >> 8) & 0X07)},
|
||||
// {OV2640_REG0_TEST, (max_x >> 2) & 0X80},
|
||||
// {OV2640_REG0_ZMOW, (w)&0xFF},
|
||||
// {OV2640_REG0_ZMOH, (h)&0xFF},
|
||||
// {OV2640_REG0_ZMHH, ((h>>6)&0x04)|((w>>8)&0x03)},
|
||||
// {0, 0}
|
||||
// };
|
||||
register_val_t win_regs[] = {
|
||||
{OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP},
|
||||
{OV2640_REG0_HSIZE, 75},
|
||||
{OV2640_REG0_VSIZE, 74},
|
||||
{OV2640_REG0_XOFFL, 50},
|
||||
{OV2640_REG0_YOFFL, 0},
|
||||
{OV2640_REG0_VHYX, ((max_y >> 1) & 0X80) | ((0 >> 4) & 0X70) | ((max_x >> 5) & 0X08) | ((50 >> 8) & 0X07)},
|
||||
{OV2640_REG0_TEST, (max_x >> 2) & 0X80},
|
||||
{OV2640_REG0_ZMOW, (w)&0xFF},
|
||||
{OV2640_REG0_ZMOH, (h)&0xFF},
|
||||
{OV2640_REG0_ZMHH, ((h>>6)&0x04)|((w>>8)&0x03)},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
// this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP);
|
||||
// this->sccb.writeRegister(OV2640_REG0_R_BYPASS, OV2640_R_BYPASS_DSP_BYPASS);
|
||||
// this->sccb.writeList(OV2640_CIF, sizeof(OV2640_CIF)/sizeof(OV2640_CIF[0]));
|
||||
// this->sccb.writeList(win_regs, sizeof(win_regs)/sizeof(win_regs[0]));
|
||||
// this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_SENSOR);
|
||||
// this->sccb.writeRegister(OV2640_REG1_CLKRC, 0);
|
||||
// this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP);
|
||||
// this->sccb.writeRegister(OV2640_REG0_R_DVP_SP, 8);
|
||||
// this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP);
|
||||
// this->sccb.writeRegister(OV2640_REG0_R_BYPASS, OV2640_R_BYPASS_DSP_ENABLE);
|
||||
this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP);
|
||||
this->sccb.writeRegister(OV2640_REG0_R_BYPASS, OV2640_R_BYPASS_DSP_BYPASS);
|
||||
this->sccb.writeList(OV2640_CIF, sizeof(OV2640_CIF)/sizeof(OV2640_CIF[0]));
|
||||
this->sccb.writeList(win_regs, sizeof(win_regs)/sizeof(win_regs[0]));
|
||||
this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_SENSOR);
|
||||
this->sccb.writeRegister(OV2640_REG1_CLKRC, 0);
|
||||
this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP);
|
||||
this->sccb.writeRegister(OV2640_REG0_R_DVP_SP, 8);
|
||||
this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP);
|
||||
this->sccb.writeRegister(OV2640_REG0_R_BYPASS, OV2640_R_BYPASS_DSP_ENABLE);
|
||||
}
|
||||
|
||||
void OV2640::set_quality(int quality) {
|
||||
@ -850,82 +842,57 @@ bool OV2640::isFrameReady() const {
|
||||
void OV2640::resetFrameReady() {
|
||||
frameReady = false;
|
||||
}
|
||||
|
||||
void OV2640::capture_frame() {
|
||||
// Reset frame ready flag before starting capture
|
||||
// Reset frame buffer with a known pattern
|
||||
uint16_t* fb_ptr = (uint16_t*)this->fb;
|
||||
for (int i = 0; i < 160 * 120; i++) {
|
||||
fb_ptr[i] = 0; // Clear to zero
|
||||
}
|
||||
|
||||
// Add test pattern to verify data is changed
|
||||
for (int i = 0; i < 10; i++) {
|
||||
fb_ptr[i] = 0x1234 + i; // Test pattern
|
||||
}
|
||||
|
||||
printf("Starting frame capture (suspended=%d, frameReady=%d)\n", suspended, frameReady);
|
||||
frameReady = false;
|
||||
|
||||
// Allow captures to proceed
|
||||
// Important: Enable capture by setting suspended to false
|
||||
suspended = false;
|
||||
|
||||
// Wait for frame with timeout to prevent infinite loops
|
||||
// Reset DMA in case it was left in a bad state
|
||||
dma_channel_abort(0);
|
||||
dma_busy = false;
|
||||
dma_channel_set_write_addr(0, this->fb, false);
|
||||
|
||||
// Wait for frame with timeout
|
||||
uint32_t start_time = time_us_32();
|
||||
uint32_t timeout_us = 2000000; // 2 second timeout
|
||||
|
||||
|
||||
// Monitor pin states during capture
|
||||
int report_interval = 0;
|
||||
while(!frameReady) {
|
||||
// Report activity periodically
|
||||
if (report_interval++ % 1000 == 0) {
|
||||
printf("Waiting for frame: VSYNC=%d HREF=%d PCLK=%d\n",
|
||||
gpio_get(this->config.pin_vsync),
|
||||
gpio_get(this->config.pin_vsync-1),
|
||||
gpio_get(this->config.pin_vsync-2));
|
||||
}
|
||||
|
||||
// Check for timeout
|
||||
if ((time_us_32() - start_time) > timeout_us) {
|
||||
printf("Frame capture timeout! Sending incomplete frame...\n");
|
||||
// Reset DMA in case it's stuck
|
||||
printf("Frame capture timeout!\n");
|
||||
dma_channel_abort(0);
|
||||
dma_channel_set_write_addr(0, pointer, false);
|
||||
dma_busy = false;
|
||||
suspended = true;
|
||||
return; // Exit without waiting for frameReady
|
||||
return;
|
||||
}
|
||||
|
||||
// Small yield to avoid tight loop
|
||||
sleep_us(100);
|
||||
}
|
||||
|
||||
// Frame is ready, no need to do anything else
|
||||
// The DMA handler has already set frameReady = true
|
||||
|
||||
printf("Frame captured successfully\n");
|
||||
}
|
||||
|
||||
// void OV2640::set_resolution(uint16_t width, uint16_t height) {
|
||||
// // Set resolution registers
|
||||
// this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP); // DSP bank select 0
|
||||
// this->sccb.writeRegister(OV2640_REG0_HSIZE8, (width >> 3) & 0xFF); // HSIZE high bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_VSIZE8, (height >> 3) & 0xFF); // VSIZE high bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_HSIZE, width & 0xFF); // HSIZE low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_VSIZE, height & 0xFF); // VSIZE low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_ZMOW, width & 0xFF); // OUTW low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_ZMOH, height & 0xFF); // OUTH low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_ZMHH, ((height >> 8) & 0x04) | ((width >> 8) & 0x03)); // OUTW/H high bits
|
||||
// printf("Resolution set to %dx%d\n", width, height);
|
||||
// }
|
||||
|
||||
// void OV2640::set_resolution_vga() {
|
||||
// // Set resolution to VGA (640x480)
|
||||
// uint16_t width = 640;
|
||||
// uint16_t height = 480;
|
||||
|
||||
// // Adjust frame buffer size for VGA resolution
|
||||
// this->fb = new uint8_t[width * height * 2]; // Assuming 2 bytes per pixel (RGB565)
|
||||
// pointer = this->fb;
|
||||
|
||||
// // Set resolution registers
|
||||
// this->sccb.writeRegister(OV2640_REG_RA_DLMT, OV2640_RA_DLMT_DSP); // DSP bank select 0
|
||||
// this->sccb.writeRegister(OV2640_REG0_HSIZE8, (width >> 3) & 0xFF); // HSIZE high bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_VSIZE8, (height >> 3) & 0xFF); // VSIZE high bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_HSIZE, width & 0xFF); // HSIZE low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_VSIZE, height & 0xFF); // VSIZE low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_ZMOW, width & 0xFF); // OUTW low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_ZMOH, height & 0xFF); // OUTH low bits
|
||||
// this->sccb.writeRegister(OV2640_REG0_ZMHH, ((height >> 8) & 0x04) | ((width >> 8) & 0x03)); // OUTW/H high bits
|
||||
|
||||
// printf("Resolution set to VGA (640x480)\n");
|
||||
// }
|
||||
|
||||
//! https://forums.raspberrypi.com/viewtopic.php?t=339299
|
||||
// TODO: change to switches and experiment with state machines, check if I can kinda reserve dma's so 0-3 would indicate state machines 0-3
|
||||
/* Read the flags
|
||||
pio0_hw->irq;
|
||||
uint32_t flags = read_register(PIO0_BASE, PIO_IRQ_OFFSET)
|
||||
// Check the flags to determine which state machine made the request
|
||||
if (flags & 0b0001) { handle_sm_0(); }
|
||||
if (flags & 0b0010) { handle_sm_1(); }
|
||||
if (flags & 0b0100) { handle_sm_2(); }
|
||||
if (flags & 0b1000) { handle_sm_3(); }
|
||||
*/
|
||||
|
||||
// TODO: add all of the specific controls like brightness and all of that scheiße
|
||||
}
|
||||
@ -9,17 +9,9 @@ typedef struct {
|
||||
int pin_xclk; /*!< GPIO pin for camera XCLK line */ //? in theory could be shared or perhaps ommited?
|
||||
int pin_sccb_sda; /*!< GPIO pin for camera SDA line */
|
||||
int pin_sccb_scl; /*!< GPIO pin for camera SCL line */
|
||||
int pin_data_9; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_8; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_7; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_6; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_5; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_4; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_3; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_2; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_data_base; /*!< this pin + 9 consecutive will be used D0-D7 PCLK HREF */
|
||||
int pin_vsync; /*!< GPIO pin for camera VSYNC line */
|
||||
int pin_hsync; /*!< GPIO pin for camera VSYNC line */
|
||||
int xclk_freq_hz; /*!< Frequency of XCLK signal, in Hz. */ //! Figure out the highest it can go to
|
||||
int xclk_div; /*!< XCLK divider; 150 / div = XCLK freq. 8 = ~18.71 MHz */ //! Figure out the highest it can go to
|
||||
uint8_t sccb_ctrl; /* Select i2c controller ctrl: 0 - i2c0, 1 - i2c1, 2 - pio0, 3 - pio1, 4 - pio2 */
|
||||
} camera_config_t;
|
||||
|
||||
@ -44,11 +36,11 @@ public:
|
||||
~OV2640();
|
||||
// Check if a new frame is ready
|
||||
bool isFrameReady() const;
|
||||
|
||||
|
||||
// Reset the frame ready flag after processing
|
||||
void resetFrameReady();
|
||||
|
||||
int begin(int dma_irq);
|
||||
int begin(int dma_irq, int mode);
|
||||
void set_quality(int quality);
|
||||
void set_gainceiling(gainceiling_t gainceiling);
|
||||
void set_bpc(bool enable);
|
||||
@ -57,7 +49,7 @@ public:
|
||||
void set_framesize();
|
||||
void capture_frame();
|
||||
|
||||
uint8_t* fb; // Changed from fixed array to pointer
|
||||
uint8_t fb[(352*288)]; // TODO: at some point change to a pointer
|
||||
camera_config_t config;
|
||||
|
||||
private:
|
||||
|
||||
@ -1,66 +0,0 @@
|
||||
// -------------------------------------------------- //
|
||||
// This file is autogenerated by pioasm; do not edit! //
|
||||
// -------------------------------------------------- //
|
||||
|
||||
#pragma once
|
||||
|
||||
#if !PICO_NO_HARDWARE
|
||||
#include "hardware/pio.h"
|
||||
#endif
|
||||
|
||||
// ----- //
|
||||
// image //
|
||||
// ----- //
|
||||
|
||||
#define image_wrap_target 0
|
||||
#define image_wrap 3
|
||||
#define image_pio_version 1
|
||||
|
||||
// static const uint16_t image_program_instructions[] = {
|
||||
// // .wrap_target
|
||||
// 0x20a9, // 0: wait 1 pin, 9
|
||||
// 0x20a8, // 1: wait 1 pin, 8
|
||||
// 0x4008, // 2: in pins, 8
|
||||
// 0x2028, // 3: wait 0 pin, 8
|
||||
// // .wrap
|
||||
// };
|
||||
static const uint16_t image_program_instructions[] = {
|
||||
// .wrap_target
|
||||
0x20a9, // 0: wait 1 pin, 9
|
||||
0x20a8, // 1: wait 1 pin, 8
|
||||
0x4008, // 2: in pins, 8
|
||||
0x2028, // 3: wait 0 pin, 8
|
||||
// .wrap
|
||||
};
|
||||
|
||||
#if !PICO_NO_HARDWARE
|
||||
static const struct pio_program image_program = {
|
||||
.instructions = image_program_instructions,
|
||||
.length = 4,
|
||||
.origin = -1,
|
||||
.pio_version = image_pio_version,
|
||||
#if PICO_PIO_VERSION > 0
|
||||
.used_gpio_ranges = 0x0
|
||||
#endif
|
||||
};
|
||||
|
||||
static inline pio_sm_config image_program_get_default_config(uint offset) {
|
||||
pio_sm_config c = pio_get_default_sm_config();
|
||||
sm_config_set_wrap(&c, offset + image_wrap_target, offset + image_wrap);
|
||||
return c;
|
||||
}
|
||||
|
||||
void image_program_init(PIO pio, uint sm, uint offset, uint pin_base) {
|
||||
pio_sm_set_consecutive_pindirs(pio, sm, pin_base, 10, false);
|
||||
pio_sm_config c = image_program_get_default_config(offset);
|
||||
sm_config_set_in_pins(&c, pin_base);
|
||||
sm_config_set_in_shift(&c, false, true, 16); // TODO: if something is not working check this i.e revert back to 8 together with dma transfer
|
||||
sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_RX);
|
||||
pio_sm_init(pio, sm, offset, &c);
|
||||
pio_sm_set_enabled(pio, sm, true);
|
||||
}
|
||||
|
||||
// New function to initialize PIO with camera configuration pins - declaration only
|
||||
// In image.pio.h, replace the implementation with a declaration
|
||||
#endif
|
||||
|
||||
105
src/rp2040/SCCB.cpp
Normal file
105
src/rp2040/SCCB.cpp
Normal file
@ -0,0 +1,105 @@
|
||||
#include <SCCB.hpp>
|
||||
#include <camera.hpp>
|
||||
#include "hardware/i2c.h"
|
||||
#include "pico/stdlib.h"
|
||||
#include "stdio.h"
|
||||
#include "src/pio/i2c/pio_i2c.h"
|
||||
|
||||
SCCB::SCCB(uint8_t sda_pin, uint8_t scl_pin) {
|
||||
this->sda = sda_pin;
|
||||
this->scl = scl_pin;
|
||||
}
|
||||
|
||||
SCCB::~SCCB() {}
|
||||
|
||||
// ctrl: 0 - i2c0, 1 - i2c1, 2 - pio0, 3 - pio1, 4 - pio1
|
||||
// TODO: add proper return values when failure
|
||||
// TODO: panic if scl != sda + 1
|
||||
int SCCB::begin(uint8_t ctrl)
|
||||
{
|
||||
// Set up XCLK out unless it's a self-clocking camera. This must be done
|
||||
// BEFORE any I2C commands, as cam may require clock for I2C timing.
|
||||
this->ctrl = ctrl;
|
||||
if (ctrl < 2) {
|
||||
this->i2cc = ctrl == 0 ? i2c0 : i2c1;
|
||||
i2c_init(this->i2cc, 100 * 1000);
|
||||
gpio_set_function(this->sda, GPIO_FUNC_I2C);
|
||||
gpio_set_function(this->scl, GPIO_FUNC_I2C);
|
||||
gpio_pull_up(this->sda);
|
||||
gpio_pull_up(this->scl);
|
||||
}
|
||||
else {
|
||||
PIO pio;
|
||||
switch (ctrl) {
|
||||
case 2:
|
||||
this->pio = pio0;
|
||||
break;
|
||||
case 3:
|
||||
this->pio = pio1;
|
||||
break;
|
||||
case 4:
|
||||
this->pio = pio1;
|
||||
break;
|
||||
default:
|
||||
this->pio = pio0;
|
||||
break;
|
||||
};
|
||||
|
||||
uint sm = pio_claim_unused_sm(this->pio, true);
|
||||
uint offset = pio_add_program(this->pio, &i2c_program);
|
||||
i2c_program_init(this->pio, this->sm, offset, this->sda, this->scl);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SCCB::readRegister(uint8_t reg)
|
||||
{
|
||||
uint8_t buf[1];
|
||||
if (this->ctrl < 2) {
|
||||
i2c_write_blocking(this->i2cc, OV2640_ADDR, ®, 1, true); // TODO: check if true or false is correct here
|
||||
i2c_read_blocking(this->i2cc, OV2640_ADDR, buf, 1, false); // false - finished with bus
|
||||
}else {
|
||||
//pio_i2c_write_blocking(this->pio, this->sm, OV2640_ADDR, ®, 1);
|
||||
//pio_i2c_read_blocking(this->pio, this->sm, OV2640_ADDR, buf, 1);
|
||||
}
|
||||
return buf[0];
|
||||
}
|
||||
|
||||
void SCCB::writeRegister(uint8_t reg, uint8_t value)
|
||||
{
|
||||
uint8_t buf[2];
|
||||
buf[0] = reg;
|
||||
buf[1] = value;
|
||||
|
||||
if (this->ctrl < 2) {
|
||||
int ret = i2c_write_blocking(this->i2cc, OV2640_ADDR, buf, 2, false);
|
||||
if(ret == PICO_ERROR_GENERIC) {
|
||||
printf("Problem i2c write failed!");
|
||||
sleep_ms(1000);
|
||||
}
|
||||
}else {
|
||||
//pio_i2c_write_blocking(this->pio, this->sm, OV2640_ADDR, buf, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void SCCB::writeMaskRegister(uint8_t reg, uint8_t offset, uint8_t mask, uint8_t value)
|
||||
{
|
||||
uint8_t buf[2];
|
||||
buf[0] = reg;
|
||||
buf[1] = value;
|
||||
|
||||
uint8_t old_val = this->readRegister(reg);
|
||||
uint8_t new_value = (old_val & ~(mask << offset)) | ((value & mask) << offset);
|
||||
this->writeRegister(reg, new_value);
|
||||
}
|
||||
|
||||
void SCCB::writeList(const register_val_t *cfg,
|
||||
uint16_t len)
|
||||
{
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
writeRegister(cfg[i].reg, cfg[i].value);
|
||||
sleep_ms(2); // Some cams require, else lockup on init
|
||||
}
|
||||
}
|
||||
30
src/rp2040/SCCB.hpp
Normal file
30
src/rp2040/SCCB.hpp
Normal file
@ -0,0 +1,30 @@
|
||||
#include <cstdint>
|
||||
#include "pico/stdlib.h"
|
||||
#include "hardware/i2c.h"
|
||||
#include "hardware/pio.h"
|
||||
|
||||
typedef struct {
|
||||
uint8_t reg; ///< Register address
|
||||
uint8_t value; ///< Value to store
|
||||
} register_val_t;
|
||||
|
||||
class SCCB {
|
||||
public:
|
||||
SCCB(uint8_t sda_pin = 0, uint8_t scl_pin = 0);
|
||||
~SCCB(); // Destructor
|
||||
|
||||
int begin(uint8_t ctrl);
|
||||
|
||||
int readRegister(uint8_t reg);
|
||||
void writeRegister(uint8_t reg, uint8_t value);
|
||||
void writeMaskRegister(uint8_t reg, uint8_t offset, uint8_t mask, uint8_t value);
|
||||
void writeList(const register_val_t *cfg, uint16_t len);
|
||||
|
||||
private:
|
||||
uint8_t sda;
|
||||
uint8_t scl;
|
||||
int ctrl;
|
||||
i2c_inst_t* i2cc;
|
||||
pio_hw_t* pio;
|
||||
int sm;
|
||||
};
|
||||
140
src/rp2040/ov2640.cpp
Normal file
140
src/rp2040/ov2640.cpp
Normal file
@ -0,0 +1,140 @@
|
||||
#define OV2640_REG_RA_DLMT 0xFF //< Register bank select
|
||||
#define OV2640_RA_DLMT_SENSOR 0x01 //< Bank 1 - Sensor address
|
||||
#define OV2640_REG1_COM7 0x12 //< Common control 7:
|
||||
#define OV2640_COM7_SRST 0x80 //< System reset
|
||||
#define OV2640_COM7_COLORBAR 0x02 //< Color bar test pattern enable
|
||||
|
||||
#include <SCCB.hpp>
|
||||
|
||||
#include "ov2640.hpp"
|
||||
#include <stdio.h>
|
||||
#include "ov2640_init.h"
|
||||
#include "hardware/dma.h"
|
||||
#include "hardware/i2c.h"
|
||||
#include "hardware/pwm.h"
|
||||
#include "image.pio.h"
|
||||
|
||||
|
||||
static const uint8_t OV2640_ADDR = 0x60 >> 1;
|
||||
|
||||
void ov2640_init(struct ov2640_config *config) {
|
||||
// XCLK generation (~20.83 MHz)
|
||||
gpio_set_function(config->pin_xclk, GPIO_FUNC_PWM);
|
||||
uint slice_num = pwm_gpio_to_slice_num(config->pin_xclk);
|
||||
// 6 cycles (0 to 5), 125 MHz / 6 = ~20.83 MHz wrap rate
|
||||
pwm_set_wrap(slice_num, 5);
|
||||
pwm_set_gpio_level(config->pin_xclk, 4);
|
||||
pwm_set_enabled(slice_num, true);
|
||||
gpio_pull_down(config->pin_vsync);
|
||||
// // printf("Setting up GPIO pins for camera data...\n");
|
||||
// gpio_init(config->pin_vsync);
|
||||
// gpio_set_dir(config->pin_vsync, GPIO_IN);
|
||||
// //gpio_pull_up(config->pin_vsync);
|
||||
// for (uint8_t i = 0; i < 10; i++)
|
||||
// {
|
||||
// gpio_init(config->pin_y2_pio_base + i);
|
||||
// gpio_set_dir(config->pin_y2_pio_base + i, GPIO_IN);
|
||||
// //gpio_pull_down(this->config.pin_data_base + i);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// SCCB I2C @ 100 kHz
|
||||
// gpio_set_function(config->pin_sioc, GPIO_FUNC_I2C);
|
||||
// gpio_set_function(config->pin_siod, GPIO_FUNC_I2C);
|
||||
// i2c_init(config->sccb, 100 * 1000);
|
||||
|
||||
// Initialise reset pin
|
||||
gpio_init(config->pin_resetb);
|
||||
gpio_set_dir(config->pin_resetb, GPIO_OUT);
|
||||
|
||||
// Reset camera, and give it some time to wake back up
|
||||
// gpio_put(config->pin_resetb, 0);
|
||||
// sleep_ms(100);
|
||||
// gpio_put(config->pin_resetb, 1);
|
||||
// sleep_ms(100);
|
||||
// Init SCCB
|
||||
SCCB sccb = SCCB(config->pin_siod, config->pin_sioc);
|
||||
sccb.begin(0);
|
||||
printf("Sending camera reset command...\n");
|
||||
const uint8_t bank_select[] = {OV2640_REG_RA_DLMT, OV2640_RA_DLMT_SENSOR};
|
||||
const uint8_t system_reset[] = {OV2640_REG1_COM7, OV2640_COM7_SRST};
|
||||
ov2640_regs_write(config, &bank_select); // Bank select 1
|
||||
ov2640_regs_write(config, &system_reset); // System reset
|
||||
sleep_ms(300);
|
||||
printf("OV2640 camera reset\n");
|
||||
// Initialise the camera itself over SCCB
|
||||
ov2640_regs_write(config, ov2640_vga);
|
||||
printf("OV2640 Set VGA\n");
|
||||
ov2640_regs_write(config, ov2640_uxga_cif);
|
||||
printf("OV2640 Set UXAG\n");
|
||||
|
||||
// // Set RGB565 output mode
|
||||
ov2640_reg_write(config, 0xff, 0x00);
|
||||
// printf("OV2640 Set RGB\n");
|
||||
|
||||
ov2640_reg_write(config, 0xDA, (ov2640_reg_read(config, 0xDA) & 0xC) | 0x8);
|
||||
|
||||
// Enable image RX PIO
|
||||
uint offset = pio_add_program(config->pio, &image_program);
|
||||
printf("PIO offset: %d\n", offset);
|
||||
|
||||
offset = 28;
|
||||
image_program_init(config->pio, config->pio_sm, offset, config->pin_y2_pio_base);
|
||||
}
|
||||
|
||||
void ov2640_capture_frame(struct ov2640_config *config) {
|
||||
dma_channel_config c = dma_channel_get_default_config(config->dma_channel);
|
||||
channel_config_set_read_increment(&c, false);
|
||||
channel_config_set_write_increment(&c, true);
|
||||
channel_config_set_dreq(&c, pio_get_dreq(config->pio, config->pio_sm, false));
|
||||
channel_config_set_transfer_data_size(&c, DMA_SIZE_8);
|
||||
|
||||
dma_channel_configure(
|
||||
config->dma_channel, &c,
|
||||
config->image_buf,
|
||||
&config->pio->rxf[config->pio_sm],
|
||||
config->image_buf_size,
|
||||
false
|
||||
);
|
||||
|
||||
// Wait for vsync rising edge to start frame
|
||||
printf("Waiting for vsync...\n");
|
||||
while (gpio_get(config->pin_vsync) == true);
|
||||
printf("Vsync detected, starting DMA...\n");
|
||||
while (gpio_get(config->pin_vsync) == false);
|
||||
printf("Vsync Finished, starting DMA...\n");
|
||||
|
||||
dma_channel_start(config->dma_channel);
|
||||
dma_channel_wait_for_finish_blocking(config->dma_channel);
|
||||
}
|
||||
|
||||
void ov2640_reg_write(struct ov2640_config *config, uint8_t reg, uint8_t value) {
|
||||
uint8_t data[] = {reg, value};
|
||||
i2c_write_blocking(config->sccb, OV2640_ADDR, data, sizeof(data), false);
|
||||
}
|
||||
|
||||
uint8_t ov2640_reg_read(struct ov2640_config *config, uint8_t reg) {
|
||||
i2c_write_blocking(config->sccb, OV2640_ADDR, ®, 1, false);
|
||||
|
||||
uint8_t value;
|
||||
i2c_read_blocking(config->sccb, OV2640_ADDR, &value, 1, false);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
void ov2640_regs_write(struct ov2640_config *config, const uint8_t (*regs_list)[2]) {
|
||||
while (1) {
|
||||
uint8_t reg = (*regs_list)[0];
|
||||
uint8_t value = (*regs_list)[1];
|
||||
|
||||
if (reg == 0x00 && value == 0x00) {
|
||||
break;
|
||||
}
|
||||
|
||||
ov2640_reg_write(config, reg, value);
|
||||
|
||||
regs_list++;
|
||||
}
|
||||
}
|
||||
36
src/rp2040/ov2640.hpp
Normal file
36
src/rp2040/ov2640.hpp
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef OV2640_H
|
||||
#define OV2640_H
|
||||
#include <stdint.h>
|
||||
#include "pico/stdlib.h"
|
||||
#include "hardware/i2c.h"
|
||||
#include "hardware/pio.h"
|
||||
|
||||
|
||||
struct ov2640_config {
|
||||
i2c_inst_t *sccb;
|
||||
uint pin_sioc;
|
||||
uint pin_siod;
|
||||
|
||||
uint pin_resetb;
|
||||
uint pin_xclk;
|
||||
uint pin_vsync;
|
||||
// Y2, Y3, Y4, Y5, Y6, Y7, Y8, PCLK, HREF
|
||||
uint pin_y2_pio_base;
|
||||
|
||||
PIO pio;
|
||||
uint pio_sm;
|
||||
|
||||
uint dma_channel;
|
||||
uint8_t *image_buf;
|
||||
size_t image_buf_size;
|
||||
};
|
||||
|
||||
void ov2640_init(struct ov2640_config *config);
|
||||
|
||||
void ov2640_capture_frame(struct ov2640_config *config);
|
||||
|
||||
void ov2640_reg_write(struct ov2640_config *config, uint8_t reg, uint8_t value);
|
||||
uint8_t ov2640_reg_read(struct ov2640_config *config, uint8_t reg);
|
||||
void ov2640_regs_write(struct ov2640_config *config, const uint8_t (*regs_list)[2]);
|
||||
|
||||
#endif
|
||||
265
src/rp2040/ov2640_init.h
Normal file
265
src/rp2040/ov2640_init.h
Normal file
@ -0,0 +1,265 @@
|
||||
#ifndef OV2640_INIT_H
|
||||
#define OV2640_INIT_H
|
||||
#include <stdint.h>
|
||||
|
||||
static const uint8_t ov2640_vga[][2] = {
|
||||
{0xff, 0x00}, /* Device control register list Table 12 */
|
||||
{0x2c, 0xff}, /* Reserved */
|
||||
{0x2e, 0xdf}, /* Reserved */
|
||||
{0xff, 0x01}, /* Device control register list Table 13 */
|
||||
{0x3c, 0x32}, /* Reserved */
|
||||
{0x11, 0x00}, /* Clock Rate Control */
|
||||
{0x09, 0x02}, /* Common control 2 */
|
||||
{0x04, 0xA8}, /* Mirror */
|
||||
{0x13, 0xe5}, /* Common control 8 */
|
||||
{0x14, 0x48}, /* Common control 9 */
|
||||
{0x2c, 0x0c}, /* Reserved */
|
||||
{0x33, 0x78}, /* Reserved */
|
||||
{0x3a, 0x33}, /* Reserved */
|
||||
{0x3b, 0xfB}, /* Reserved */
|
||||
{0x3e, 0x00}, /* Reserved */
|
||||
{0x43, 0x11}, /* Reserved */
|
||||
{0x16, 0x10}, /* Reserved */
|
||||
{0x4a, 0x81}, /* Reserved */
|
||||
{0x21, 0x99}, /* Reserved */
|
||||
{0x24, 0x40}, /* Luminance signal High range */
|
||||
{0x25, 0x38}, /* Luminance signal low range */
|
||||
{0x26, 0x82}, /* */
|
||||
{0x5c, 0x00}, /* Reserved */
|
||||
{0x63, 0x00}, /* Reserved */
|
||||
{0x46, 0x3f}, /* Frame length adjustment */
|
||||
{0x0c, 0x3c}, /* Common control 3 */
|
||||
{0x61, 0x70}, /* Histogram algo low level */
|
||||
{0x62, 0x80}, /* Histogram algo high level */
|
||||
{0x7c, 0x05}, /* Reserved */
|
||||
{0x20, 0x80}, /* Reserved */
|
||||
{0x28, 0x30}, /* Reserved */
|
||||
{0x6c, 0x00}, /* Reserved */
|
||||
{0x6d, 0x80}, /* Reserved */
|
||||
{0x6e, 0x00}, /* Reserved */
|
||||
{0x70, 0x02}, /* Reserved */
|
||||
{0x71, 0x94}, /* Reserved */
|
||||
{0x73, 0xc1}, /* Reserved */
|
||||
{0x3d, 0x34}, /* Reserved */
|
||||
{0x5a, 0x57}, /* Reserved */
|
||||
{0x12, 0x00}, /* Common control 7 */
|
||||
{0x11, 0x00}, /* Clock Rate Control 2*/
|
||||
{0x17, 0x11}, /* Horiz window start MSB 8bits */
|
||||
{0x18, 0x75}, /* Horiz window end MSB 8bits */
|
||||
{0x19, 0x01}, /* Vert window line start MSB 8bits */
|
||||
{0x1a, 0x97}, /* Vert window line end MSB 8bits */
|
||||
{0x32, 0x36},
|
||||
{0x03, 0x0f},
|
||||
{0x37, 0x40},
|
||||
{0x4f, 0xbb},
|
||||
{0x50, 0x9c},
|
||||
{0x5a, 0x57},
|
||||
{0x6d, 0x80},
|
||||
{0x6d, 0x38},
|
||||
{0x39, 0x02},
|
||||
{0x35, 0x88},
|
||||
{0x22, 0x0a},
|
||||
{0x37, 0x40},
|
||||
{0x23, 0x00},
|
||||
{0x34, 0xa0},
|
||||
{0x36, 0x1a},
|
||||
{0x06, 0x02},
|
||||
{0x07, 0xc0},
|
||||
{0x0d, 0xb7},
|
||||
{0x0e, 0x01},
|
||||
{0x4c, 0x00},
|
||||
{0xff, 0x00},
|
||||
{0xe5, 0x7f},
|
||||
{0xf9, 0xc0},
|
||||
{0x41, 0x24},
|
||||
{0xe0, 0x14},
|
||||
{0x76, 0xff},
|
||||
{0x33, 0xa0},
|
||||
{0x42, 0x20},
|
||||
{0x43, 0x18},
|
||||
{0x4c, 0x00},
|
||||
{0x87, 0xd0},
|
||||
{0x88, 0x3f},
|
||||
{0xd7, 0x03},
|
||||
{0xd9, 0x10},
|
||||
{0xd3, 0x82},
|
||||
{0xc8, 0x08},
|
||||
{0xc9, 0x80},
|
||||
{0x7d, 0x00},
|
||||
{0x7c, 0x03},
|
||||
{0x7d, 0x48},
|
||||
{0x7c, 0x08},
|
||||
{0x7d, 0x20},
|
||||
{0x7d, 0x10},
|
||||
{0x7d, 0x0e},
|
||||
{0x90, 0x00},
|
||||
{0x91, 0x0e},
|
||||
{0x91, 0x1a},
|
||||
{0x91, 0x31},
|
||||
{0x91, 0x5a},
|
||||
{0x91, 0x69},
|
||||
{0x91, 0x75},
|
||||
{0x91, 0x7e},
|
||||
{0x91, 0x88},
|
||||
{0x91, 0x8f},
|
||||
{0x91, 0x96},
|
||||
{0x91, 0xa3},
|
||||
{0x91, 0xaf},
|
||||
{0x91, 0xc4},
|
||||
{0x91, 0xd7},
|
||||
{0x91, 0xe8},
|
||||
{0x91, 0x20},
|
||||
{0x92, 0x00},
|
||||
{0x93, 0x06},
|
||||
{0x93, 0xe3},
|
||||
{0x93, 0x02},
|
||||
{0x93, 0x02},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x04},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x03},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x00},
|
||||
{0x93, 0x00},
|
||||
{0x96, 0x00},
|
||||
{0x97, 0x08},
|
||||
{0x97, 0x19},
|
||||
{0x97, 0x02},
|
||||
{0x97, 0x0c},
|
||||
{0x97, 0x24},
|
||||
{0x97, 0x30},
|
||||
{0x97, 0x28},
|
||||
{0x97, 0x26},
|
||||
{0x97, 0x02},
|
||||
{0x97, 0x98},
|
||||
{0x97, 0x80},
|
||||
{0x97, 0x00},
|
||||
{0x97, 0x00},
|
||||
{0xc3, 0xef},
|
||||
{0xff, 0x00},
|
||||
{0xba, 0xdc},
|
||||
{0xbb, 0x08},
|
||||
{0xb6, 0x24},
|
||||
{0xb8, 0x33},
|
||||
{0xb7, 0x20},
|
||||
{0xb9, 0x30},
|
||||
{0xb3, 0xb4},
|
||||
{0xb4, 0xca},
|
||||
{0xb5, 0x43},
|
||||
{0xb0, 0x5c},
|
||||
{0xb1, 0x4f},
|
||||
{0xb2, 0x06},
|
||||
{0xc7, 0x00},
|
||||
{0xc6, 0x51},
|
||||
{0xc5, 0x11},
|
||||
{0xc4, 0x9c},
|
||||
{0xbf, 0x00},
|
||||
{0xbc, 0x64},
|
||||
{0xa6, 0x00},
|
||||
{0xa7, 0x1e},
|
||||
{0xa7, 0x6b},
|
||||
{0xa7, 0x47},
|
||||
{0xa7, 0x33},
|
||||
{0xa7, 0x00},
|
||||
{0xa7, 0x23},
|
||||
{0xa7, 0x2e},
|
||||
{0xa7, 0x85},
|
||||
{0xa7, 0x42},
|
||||
{0xa7, 0x33},
|
||||
{0xa7, 0x00},
|
||||
{0xa7, 0x23},
|
||||
{0xa7, 0x1b},
|
||||
{0xa7, 0x74},
|
||||
{0xa7, 0x42},
|
||||
{0xa7, 0x33},
|
||||
{0xa7, 0x00},
|
||||
{0xa7, 0x23},
|
||||
{0xc0, 0xc8},
|
||||
{0xc1, 0x96},
|
||||
{0x8c, 0x00},
|
||||
{0x86, 0x3d},
|
||||
{0x50, 0x92},
|
||||
{0x51, 0x90},
|
||||
{0x52, 0x2c},
|
||||
{0x53, 0x00},
|
||||
{0x54, 0x00},
|
||||
{0x55, 0x88},
|
||||
{0x5a, 0x50},
|
||||
{0x5b, 0x3c},
|
||||
{0x5c, 0x00},
|
||||
{0xd3, 0x04},
|
||||
{0x7f, 0x00},
|
||||
{0xda, 0x00},
|
||||
{0xe5, 0x1f},
|
||||
{0xe1, 0x67},
|
||||
{0xe0, 0x00},
|
||||
{0xdd, 0x7f},
|
||||
{0x05, 0x00},
|
||||
{0xff, 0x00},
|
||||
{0xe0, 0x04},
|
||||
{0xc0, 0xc8},
|
||||
{0xc1, 0x96},
|
||||
{0x86, 0x3d},
|
||||
{0x50, 0x92},
|
||||
{0x51, 0x90},
|
||||
{0x52, 0x2c},
|
||||
{0x53, 0x00},
|
||||
{0x54, 0x00},
|
||||
{0x55, 0x88},
|
||||
{0x57, 0x00},
|
||||
{0x5a, 0x50},
|
||||
{0x5b, 0x3c},
|
||||
{0x5c, 0x00},
|
||||
{0xd3, 0x04},
|
||||
{0xe0, 0x00},
|
||||
{0xFF, 0x00},
|
||||
{0x05, 0x00},
|
||||
{0xDA, 0x08},
|
||||
{0xda, 0x09},
|
||||
{0x98, 0x00},
|
||||
{0x99, 0x00},
|
||||
{0x00, 0x00},
|
||||
{0xff, 0x00},
|
||||
{0xe0, 0x04},
|
||||
{0xc0, 0xc8},
|
||||
{0xc1, 0x96},
|
||||
{0x86, 0x3d},
|
||||
{0x50, 0x89},
|
||||
{0x51, 0x90},
|
||||
{0x52, 0x2c},
|
||||
{0x53, 0x00},
|
||||
{0x54, 0x00},
|
||||
{0x55, 0x88},
|
||||
{0x57, 0x00},
|
||||
{0x5a, 0xA0},
|
||||
{0x5b, 0x78},
|
||||
{0x5c, 0x00},
|
||||
{0xd3, 0x02},
|
||||
{0xe0, 0x00}
|
||||
};
|
||||
|
||||
static const uint8_t ov2640_uxga_cif[][2] = {
|
||||
{0xff, 0x00},
|
||||
{0xe0, 0x04},
|
||||
{0xc0, 0xc8},
|
||||
{0xc1, 0x96},
|
||||
{0x86, 0x35},
|
||||
{0x50, 0x92},
|
||||
{0x51, 0x90},
|
||||
{0x52, 0x2c},
|
||||
{0x53, 0x00},
|
||||
{0x54, 0x00},
|
||||
{0x55, 0x88},
|
||||
{0x57, 0x00},
|
||||
{0x5a, 0x58},
|
||||
{0x5b, 0x48},
|
||||
{0x5c, 0x00},
|
||||
{0xd3, 0x08},
|
||||
{0xe0, 0x00}
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
x
Reference in New Issue
Block a user