From 410535c067ea484cae96557e8370d5071dfa0180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatriz=20Louren=C3=A7o?= Date: Tue, 8 Jul 2025 21:24:29 +0100 Subject: [PATCH 01/47] First commit of the app --- App/.editorconfig | 280 ++ App/.gitignore | 453 ++ App/Directory.Build.props | 7 + App/Harp.Behavior.App.sln | 41 + .../Harp.Behavior.App.csproj | 51 + App/Harp.Behavior.App/Program.cs | 24 + .../Properties/launchSettings.json | 11 + App/Harp.Behavior.App/app.manifest | 18 + .../Adapters/RgbRegisterAdapter.cs | 153 + App/Harp.Behavior.Design/App.axaml | 18 + App/Harp.Behavior.Design/App.axaml.cs | 44 + .../Assets/cf-logo-small.bmp | Bin 0 -> 26930 bytes .../Assets/cf-logo-white-lettering.png | Bin 0 -> 11575 bytes .../Assets/cf-logo-white-lettering.svg | 224 + App/Harp.Behavior.Design/Assets/cf-logo.icns | Bin 0 -> 88286 bytes App/Harp.Behavior.Design/Assets/cf-logo.ico | Bin 0 -> 307515 bytes App/Harp.Behavior.Design/Assets/cf-logo.png | Bin 0 -> 15303 bytes App/Harp.Behavior.Design/Assets/cf-logo.svg | 235 + .../Assets/cf_hardware_software_logo.png | Bin 0 -> 21525 bytes .../Assets/cf_hardware_software_logo.svg | 94 + ...hardware_software_logo_white_lettering.png | Bin 0 -> 13832 bytes ...hardware_software_logo_white_lettering.svg | 81 + .../Controls/ExtendedColorPicker.cs | 33 + .../Controls/RgbRegisterControl.axaml | 38 + .../Controls/RgbRegisterControl.axaml.cs | 11 + .../Controls/VisualStatus.axaml | 11 + .../Controls/VisualStatus.axaml.cs | 21 + .../Controls/WriteMessagesControl.axaml | 28 + .../Controls/WriteMessagesControl.axaml.cs | 11 + .../Converters/EnableFlagConverter.cs | 31 + .../Converters/EnumDisplayConverter.cs | 24 + .../Converters/PayloadFieldConverter.cs | 155 + .../Converters/VisualStatusColorConverter.cs | 23 + App/Harp.Behavior.Design/FodyWeavers.xml | 3 + .../Harp.Behavior.Design.csproj | 29 + .../Styles/DefaultStyles.axaml | 15 + .../ViewModels/AboutViewModel.cs | 5 + .../ViewModels/MyDeviceViewModel.cs | 3986 +++++++++++++++++ .../ViewModels/ViewModelBase.cs | 46 + App/Harp.Behavior.Design/Views/About.axaml | 39 + App/Harp.Behavior.Design/Views/About.axaml.cs | 11 + .../Views/MainWindow.axaml | 13 + .../Views/MainWindow.axaml.cs | 11 + .../Views/MyDeviceView.axaml | 2081 +++++++++ .../Views/MyDeviceView.axaml.cs | 11 + App/Harp.Behavior.nsi | Bin 0 -> 11808 bytes App/LICENSE | 21 + App/README.md | 2 + 48 files changed, 8393 insertions(+) create mode 100644 App/.editorconfig create mode 100644 App/.gitignore create mode 100644 App/Directory.Build.props create mode 100644 App/Harp.Behavior.App.sln create mode 100644 App/Harp.Behavior.App/Harp.Behavior.App.csproj create mode 100644 App/Harp.Behavior.App/Program.cs create mode 100644 App/Harp.Behavior.App/Properties/launchSettings.json create mode 100644 App/Harp.Behavior.App/app.manifest create mode 100644 App/Harp.Behavior.Design/Adapters/RgbRegisterAdapter.cs create mode 100644 App/Harp.Behavior.Design/App.axaml create mode 100644 App/Harp.Behavior.Design/App.axaml.cs create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo-small.bmp create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo-white-lettering.png create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo-white-lettering.svg create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo.icns create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo.ico create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo.png create mode 100644 App/Harp.Behavior.Design/Assets/cf-logo.svg create mode 100644 App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.png create mode 100644 App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.svg create mode 100644 App/Harp.Behavior.Design/Assets/cf_hardware_software_logo_white_lettering.png create mode 100644 App/Harp.Behavior.Design/Assets/cf_hardware_software_logo_white_lettering.svg create mode 100644 App/Harp.Behavior.Design/Controls/ExtendedColorPicker.cs create mode 100644 App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml create mode 100644 App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml.cs create mode 100644 App/Harp.Behavior.Design/Controls/VisualStatus.axaml create mode 100644 App/Harp.Behavior.Design/Controls/VisualStatus.axaml.cs create mode 100644 App/Harp.Behavior.Design/Controls/WriteMessagesControl.axaml create mode 100644 App/Harp.Behavior.Design/Controls/WriteMessagesControl.axaml.cs create mode 100644 App/Harp.Behavior.Design/Converters/EnableFlagConverter.cs create mode 100644 App/Harp.Behavior.Design/Converters/EnumDisplayConverter.cs create mode 100644 App/Harp.Behavior.Design/Converters/PayloadFieldConverter.cs create mode 100644 App/Harp.Behavior.Design/Converters/VisualStatusColorConverter.cs create mode 100644 App/Harp.Behavior.Design/FodyWeavers.xml create mode 100644 App/Harp.Behavior.Design/Harp.Behavior.Design.csproj create mode 100644 App/Harp.Behavior.Design/Styles/DefaultStyles.axaml create mode 100644 App/Harp.Behavior.Design/ViewModels/AboutViewModel.cs create mode 100644 App/Harp.Behavior.Design/ViewModels/MyDeviceViewModel.cs create mode 100644 App/Harp.Behavior.Design/ViewModels/ViewModelBase.cs create mode 100644 App/Harp.Behavior.Design/Views/About.axaml create mode 100644 App/Harp.Behavior.Design/Views/About.axaml.cs create mode 100644 App/Harp.Behavior.Design/Views/MainWindow.axaml create mode 100644 App/Harp.Behavior.Design/Views/MainWindow.axaml.cs create mode 100644 App/Harp.Behavior.Design/Views/MyDeviceView.axaml create mode 100644 App/Harp.Behavior.Design/Views/MyDeviceView.axaml.cs create mode 100644 App/Harp.Behavior.nsi create mode 100644 App/LICENSE create mode 100644 App/README.md diff --git a/App/.editorconfig b/App/.editorconfig new file mode 100644 index 0000000..4aaad81 --- /dev/null +++ b/App/.editorconfig @@ -0,0 +1,280 @@ +# editorconfig.org + +# top-most EditorConfig file +root = true + +# Default settings: +# A newline ending every file +# Use 4 spaces as indentation +[*] +insert_final_newline = true +indent_style = space +indent_size = 4 +dotnet_style_operator_placement_when_wrapping = beginning_of_line +tab_width = 4 +end_of_line = crlf +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion +dotnet_style_prefer_auto_properties = true:silent +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_conditional_expression_over_assignment = true:silent +dotnet_style_prefer_conditional_expression_over_return = true:silent +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_compound_assignment = true:suggestion +dotnet_style_prefer_simplified_interpolation = true:suggestion +dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion +dotnet_style_namespace_match_folder = true:suggestion + +# C# files +[*.cs] +# New line preferences +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true +# trim_trailing_whitespace = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_switch_labels = true +csharp_indent_labels = one_less_than_current + +# avoid this. unless absolutely necessary +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_event = false:suggestion + +# prefer var +csharp_style_var_for_built_in_types = true +csharp_style_var_when_type_is_apparent = true +csharp_style_var_elsewhere = true:suggestion + +# use language keywords instead of BCL types +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion + +# name all constant fields using PascalCase +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style + +dotnet_naming_symbols.constant_fields.applicable_kinds = field +dotnet_naming_symbols.constant_fields.required_modifiers = const + +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +# private static fields should have s_ prefix +dotnet_naming_rule.private_static_fields_should_have_prefix.severity = suggestion +dotnet_naming_rule.private_static_fields_should_have_prefix.symbols = private_static_fields +dotnet_naming_rule.private_static_fields_should_have_prefix.style = private_static_prefix_style + +dotnet_naming_symbols.private_static_fields.applicable_kinds = field +dotnet_naming_symbols.private_static_fields.required_modifiers = static +dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private + +dotnet_naming_style.private_static_prefix_style.required_prefix = s_ +dotnet_naming_style.private_static_prefix_style.capitalization = camel_case + +# internal and private fields should be _camelCase +dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion +dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields +dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style + +dotnet_naming_symbols.private_internal_fields.applicable_kinds = field +dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal + +dotnet_naming_style.camel_case_underscore_style.required_prefix = _ +dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case + +# use accessibility modifiers +dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion + +# Code style defaults +dotnet_sort_system_directives_first = true +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +# Expression-level preferences +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +dotnet_style_coalesce_expression = true:suggestion +dotnet_style_null_propagation = true:suggestion + +# Expression-bodied members +csharp_style_expression_bodied_methods = false:none +csharp_style_expression_bodied_constructors = false:none +csharp_style_expression_bodied_operators = false:none +csharp_style_expression_bodied_properties = true:none +csharp_style_expression_bodied_indexers = true:none +csharp_style_expression_bodied_accessors = true:none + +# Pattern matching +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion + +# Null checking preferences +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false +space_within_single_line_array_initializer_braces = true + +#Net Analyzer +dotnet_analyzer_diagnostic.category-Performance.severity = none #error - Uncomment when all violations are fixed. + +# CS0649: Field 'field' is never assigned to, and will always have its default value 'value' +dotnet_diagnostic.CS0649.severity = error + +# CS1591: Missing XML comment for publicly visible type or member +dotnet_diagnostic.CS1591.severity = suggestion + +# CS0162: Remove unreachable code +dotnet_diagnostic.CS0162.severity = error +# CA1018: Mark attributes with AttributeUsageAttribute +dotnet_diagnostic.CA1018.severity = error +# CA1304: Specify CultureInfo +dotnet_diagnostic.CA1304.severity = warning +# CA1802: Use literals where appropriate +dotnet_diagnostic.CA1802.severity = warning +# CA1813: Avoid unsealed attributes +dotnet_diagnostic.CA1813.severity = error +# CA1815: Override equals and operator equals on value types +dotnet_diagnostic.CA1815.severity = warning +# CA1820: Test for empty strings using string length +dotnet_diagnostic.CA1820.severity = warning +# CA1821: Remove empty finalizers +dotnet_diagnostic.CA1821.severity = error +# CA1822: Mark members as static +dotnet_diagnostic.CA1822.severity = suggestion +dotnet_code_quality.CA1822.api_surface = private, internal +# CA1823: Avoid unused private fields +dotnet_diagnostic.CA1823.severity = error +# CA1825: Avoid zero-length array allocations +dotnet_diagnostic.CA1825.severity = warning +# CA1826: Use property instead of Linq Enumerable method +dotnet_diagnostic.CA1826.severity = suggestion +# CA1827: Do not use Count/LongCount when Any can be used +dotnet_diagnostic.CA1827.severity = warning +# CA1828: Do not use CountAsync/LongCountAsync when AnyAsync can be used +dotnet_diagnostic.CA1828.severity = warning +# CA1829: Use Length/Count property instead of Enumerable.Count method +dotnet_diagnostic.CA1829.severity = warning +#CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters +dotnet_diagnostic.CA1847.severity = warning +# CA1851: Possible multiple enumerations of IEnumerable collection +dotnet_diagnostic.CA1851.severity = warning +#CA1854: Prefer the IDictionary.TryGetValue(TKey, out TValue) method +dotnet_diagnostic.CA1854.severity = warning +#CA2211:Non-constant fields should not be visible +dotnet_diagnostic.CA2211.severity = error + +# Wrapping preferences +csharp_wrap_before_ternary_opsigns = false + +# Avalonia DevAnalyzer preferences +dotnet_diagnostic.AVADEV2001.severity = error + +# Avalonia PublicAnalyzer preferences +dotnet_diagnostic.AVP1000.severity = error +dotnet_diagnostic.AVP1001.severity = error +dotnet_diagnostic.AVP1002.severity = error +dotnet_diagnostic.AVP1010.severity = error +dotnet_diagnostic.AVP1011.severity = error +dotnet_diagnostic.AVP1012.severity = warning +dotnet_diagnostic.AVP1013.severity = error +dotnet_diagnostic.AVP1020.severity = error +dotnet_diagnostic.AVP1021.severity = error +dotnet_diagnostic.AVP1022.severity = error +dotnet_diagnostic.AVP1030.severity = error +dotnet_diagnostic.AVP1031.severity = error +dotnet_diagnostic.AVP1032.severity = error +dotnet_diagnostic.AVP1040.severity = error +dotnet_diagnostic.AVA2001.severity = error +csharp_using_directive_placement = outside_namespace:silent +csharp_prefer_simple_using_statement = true:suggestion +csharp_prefer_braces = true:silent +csharp_style_namespace_declarations = block_scoped:silent +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_top_level_statements = true:silent +csharp_style_prefer_primary_constructors = true:suggestion +csharp_prefer_system_threading_lock = true:suggestion +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent + +# Xaml files +[*.{xaml,axaml}] +indent_size = 2 +# DuplicateSetterError +avalonia_xaml_diagnostic.AVLN2203.severity = error +# StyleInMergedDictionaries +avalonia_xaml_diagnostic.AVLN2204.severity = error +# RequiredTemplatePartMissing +avalonia_xaml_diagnostic.AVLN2205.severity = error +# OptionalTemplatePartMissing +avalonia_xaml_diagnostic.AVLN2206.severity = info +# TemplatePartWrongType +avalonia_xaml_diagnostic.AVLN2207.severity = error +# ItemContainerInsideTemplate +avalonia_xaml_diagnostic.AVLN2208.severity = error +# Obsolete +avalonia_xaml_diagnostic.AVLN5001.severity = error + +# Xml project files +[*.{csproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}] +indent_size = 2 + +# Xml build files +[*.builds] +indent_size = 2 + +# Xml files +[*.{xml,stylecop,resx,ruleset}] +indent_size = 2 + +# Xml config files +[*.{props,targets,config,nuspec}] +indent_size = 2 + +[*.json] +indent_size = 2 + +# Shell scripts +[*.sh] +end_of_line = lf +[*.{cmd,bat}] +end_of_line = crlf diff --git a/App/.gitignore b/App/.gitignore new file mode 100644 index 0000000..4dd3751 --- /dev/null +++ b/App/.gitignore @@ -0,0 +1,453 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/App/Directory.Build.props b/App/Directory.Build.props new file mode 100644 index 0000000..4d9a552 --- /dev/null +++ b/App/Directory.Build.props @@ -0,0 +1,7 @@ + + + enable + 11.2.6 + 1.0.0 + + diff --git a/App/Harp.Behavior.App.sln b/App/Harp.Behavior.App.sln new file mode 100644 index 0000000..174fcca --- /dev/null +++ b/App/Harp.Behavior.App.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35707.178 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{D6F1C6E5-7507-425D-A697-29DAB58ED458}") = "Harp.Behavior.App", "Harp.Behavior.App\Harp.Behavior.App.csproj", "{6281A17E-B18E-4F00-86B9-BC1665108D9D}" +EndProject +Project("{D6F1C6E5-7507-425D-A697-29DAB58ED458}") = "Harp.Behavior.Design", "Harp.Behavior.Design\Harp.Behavior.Design.csproj", "{FCB73743-9ECF-4D3E-A235-F0493BC10629}" +EndProject +Project("{D6F1C6E5-7507-425D-A697-29DAB58ED458}") = "Harp.Behavior", "..\Interface\Harp.Behavior\Harp.Behavior.csproj", "{5C1A2A65-9C57-419A-89A0-0B59BA4CF40C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{10D72C30-D95E-452C-910F-F39FC6BAF129}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + Harp.Behavior.nsi = Harp.Behavior.nsi + README.md = README.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6281A17E-B18E-4F00-86B9-BC1665108D9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6281A17E-B18E-4F00-86B9-BC1665108D9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6281A17E-B18E-4F00-86B9-BC1665108D9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6281A17E-B18E-4F00-86B9-BC1665108D9D}.Release|Any CPU.Build.0 = Release|Any CPU + {FCB73743-9ECF-4D3E-A235-F0493BC10629}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCB73743-9ECF-4D3E-A235-F0493BC10629}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCB73743-9ECF-4D3E-A235-F0493BC10629}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCB73743-9ECF-4D3E-A235-F0493BC10629}.Release|Any CPU.Build.0 = Release|Any CPU + {5C1A2A65-9C57-419A-89A0-0B59BA4CF40C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C1A2A65-9C57-419A-89A0-0B59BA4CF40C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C1A2A65-9C57-419A-89A0-0B59BA4CF40C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C1A2A65-9C57-419A-89A0-0B59BA4CF40C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/App/Harp.Behavior.App/Harp.Behavior.App.csproj b/App/Harp.Behavior.App/Harp.Behavior.App.csproj new file mode 100644 index 0000000..80940c0 --- /dev/null +++ b/App/Harp.Behavior.App/Harp.Behavior.App.csproj @@ -0,0 +1,51 @@ + + + WinExe + + net8.0 + enable + true + app.manifest + ..\bin\$(Configuration) + $(AppVersion) + ..\Harp.Behavior.Design\Assets\cf-logo.ico + Harp.Behavior.App + + + + Harp.Behavior.App + Harp.Behavior.App + org.fchampalimaud + $(Version) + $(Version) + AAPL + . + Harp.Behavior.App + cf-logo.icns + NSApplication + true + Champalimaud Foundation + ..\Harp.Behavior.Design\Assets\cf-logo.ico + ..\README.md + git + ..\bin\$(Configuration) + + + + + + + + + + + + + + + + + + + diff --git a/App/Harp.Behavior.App/Program.cs b/App/Harp.Behavior.App/Program.cs new file mode 100644 index 0000000..bc33a2b --- /dev/null +++ b/App/Harp.Behavior.App/Program.cs @@ -0,0 +1,24 @@ +using System; + +using Avalonia; +using Avalonia.ReactiveUI; + +namespace Harp.Behavior.App; + +class Program +{ + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace() + .UseReactiveUI(); +} diff --git a/App/Harp.Behavior.App/Properties/launchSettings.json b/App/Harp.Behavior.App/Properties/launchSettings.json new file mode 100644 index 0000000..8455e9d --- /dev/null +++ b/App/Harp.Behavior.App/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Harp.Behavior.App": { + "commandName": "Project" + }, + "WSL": { + "commandName": "WSL2", + "distributionName": "" + } + } +} \ No newline at end of file diff --git a/App/Harp.Behavior.App/app.manifest b/App/Harp.Behavior.App/app.manifest new file mode 100644 index 0000000..e0ce8d0 --- /dev/null +++ b/App/Harp.Behavior.App/app.manifest @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/App/Harp.Behavior.Design/Adapters/RgbRegisterAdapter.cs b/App/Harp.Behavior.Design/Adapters/RgbRegisterAdapter.cs new file mode 100644 index 0000000..f299c22 --- /dev/null +++ b/App/Harp.Behavior.Design/Adapters/RgbRegisterAdapter.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reactive.Linq; +using Avalonia.Media; +using ReactiveUI; + +namespace Harp.Behavior.Design.Adapters; + +public class RgbColorItem : ReactiveObject +{ + private Color _color; + public Color Color + { + get => _color; + set => this.RaiseAndSetIfChanged(ref _color, value); + } +} + +public enum RgbKind +{ + None, + Simple, + Array, + Structured, + Complex +} + +public class RgbRegisterAdapter : ReactiveObject +{ + public ObservableCollection Colors { get; } + public bool IsWritable { get; } + public string RegisterKey { get; } + public RgbKind Kind { get; } + + // For simple/structured: expose a single color property + public Color Color + { + get => Colors.Count > 0 ? Colors[0].Color : Avalonia.Media.Colors.Transparent; + set { if (Colors.Count > 0) Colors[0].Color = value; this.RaisePropertyChanged(nameof(Color)); } + } + + private RgbRegisterAdapter _linkedAdapter; + private int _linkedOffset; + + /// + /// Used for design-time data or default initialization. + /// + public RgbRegisterAdapter() + : this("DefaultKey", 1, true, RgbKind.Simple) + { + } + + public RgbRegisterAdapter(string registerKey, int colorCount, bool isWritable, RgbKind kind) + { + RegisterKey = registerKey; + IsWritable = isWritable; + Kind = kind; + Colors = new ObservableCollection( + Enumerable.Range(0, colorCount).Select(_ => new RgbColorItem())); + } + + /// + /// Updates the adapter from a register value (byte[] or struct). + /// + public void UpdateFromRegister(object registerValue) + { + if (registerValue is byte[] arr && arr.Length >= Colors.Count * 3) + { + for (int i = 0; i < Colors.Count; i++) + { + Colors[i].Color = Color.FromRgb(arr[i * 3], arr[i * 3 + 1], arr[i * 3 + 2]); + } + } + // Handle struct/complex types (e.g., with Red0, Green0, Blue0, Red1, ...) + else if (registerValue != null) + { + var type = registerValue.GetType(); + for (int i = 0; i < Colors.Count; i++) + { + string rName = Colors.Count == 1 ? "Red" : $"Red{i}"; + string gName = Colors.Count == 1 ? "Green" : $"Green{i}"; + string bName = Colors.Count == 1 ? "Blue" : $"Blue{i}"; + + var r = GetByteField(type, registerValue, rName); + var g = GetByteField(type, registerValue, gName); + var b = GetByteField(type, registerValue, bName); + Colors[i].Color = Color.FromRgb(r, g, b); + } + } + } + + private static byte GetByteField(Type type, object obj, string name) + { + var prop = type.GetProperty(name); + if (prop != null && prop.PropertyType == typeof(byte)) + return (byte)prop.GetValue(obj); + var field = type.GetField(name); + if (field != null && field.FieldType == typeof(byte)) + return (byte)field.GetValue(obj); + return 0; + } + + /// + /// Converts the adapter's colors to a register value (byte[]). + /// + public byte[] ToRegisterValue() + { + var arr = new byte[Colors.Count * 3]; + for (int i = 0; i < Colors.Count; i++) + { + arr[i * 3] = Colors[i].Color.R; + arr[i * 3 + 1] = Colors[i].Color.G; + arr[i * 3 + 2] = Colors[i].Color.B; + } + return arr; + } + + /// + /// Link this adapter to a parent adapter's color collection (for subrange sync). + /// + public void LinkToParent(RgbRegisterAdapter parent, int offset) + { + _linkedAdapter = parent; + _linkedOffset = offset; + + // Sync initial values + for (int i = 0; i < Colors.Count; i++) + { + Colors[i].Color = parent.Colors[offset + i].Color; + } + + // Subscribe to changes in this adapter and propagate to parent + for (int i = 0; i < Colors.Count; i++) + { + int idx = i; + Colors[i].WhenAnyValue(x => x.Color) + .Skip(1) + .Subscribe(color => + { + parent.Colors[offset + idx].Color = color; + }); + + // Subscribe to changes in parent and propagate to this adapter + parent.Colors[offset + i].WhenAnyValue(x => x.Color) + .Skip(1) + .Subscribe(color => + { + Colors[idx].Color = color; + }); + } + } +} diff --git a/App/Harp.Behavior.Design/App.axaml b/App/Harp.Behavior.Design/App.axaml new file mode 100644 index 0000000..c32c2b9 --- /dev/null +++ b/App/Harp.Behavior.Design/App.axaml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/App/Harp.Behavior.Design/App.axaml.cs b/App/Harp.Behavior.Design/App.axaml.cs new file mode 100644 index 0000000..073c400 --- /dev/null +++ b/App/Harp.Behavior.Design/App.axaml.cs @@ -0,0 +1,44 @@ +using System; +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; + +using Harp.Behavior.Design.ViewModels; +using Harp.Behavior.Design.Views; + +namespace Harp.Behavior.Design; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow + { + DataContext = new BehaviorViewModel() + }; + } + else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform) + { + singleViewPlatform.MainView = new BehaviorView + { + DataContext = new BehaviorViewModel() + }; + } + + base.OnFrameworkInitializationCompleted(); + } + + private void NativeMenuItem_OnClick(object sender, EventArgs e) + { + var about = new About() { DataContext = new AboutViewModel() }; + about.ShowDialog((Application.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime) + .MainWindow); + } +} diff --git a/App/Harp.Behavior.Design/Assets/cf-logo-small.bmp b/App/Harp.Behavior.Design/Assets/cf-logo-small.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3d701854b9dc6460262d0b77d24f6e25630354c8 GIT binary patch literal 26930 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 lc>TXzrsVYfeeZ&bC5`CstW6!-uD literal 0 HcmV?d00001 diff --git a/App/Harp.Behavior.Design/Assets/cf-logo-white-lettering.svg b/App/Harp.Behavior.Design/Assets/cf-logo-white-lettering.svg new file mode 100644 index 0000000..dc288cd --- /dev/null +++ b/App/Harp.Behavior.Design/Assets/cf-logo-white-lettering.svg @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Harp.Behavior.Design/Assets/cf-logo.icns b/App/Harp.Behavior.Design/Assets/cf-logo.icns new file mode 100644 index 0000000000000000000000000000000000000000..d50056d450a168407f37618c6bba1f7d7ae23e55 GIT binary patch literal 88286 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 literal 0 HcmV?d00001 diff --git a/App/Harp.Behavior.Design/Assets/cf-logo.ico b/App/Harp.Behavior.Design/Assets/cf-logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..7f15636aa159d78cfe186b9c71e39c0ba410b6c9 GIT binary patch literal 307515 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 literal 0 HcmV?d00001 diff --git a/App/Harp.Behavior.Design/Assets/cf-logo.png b/App/Harp.Behavior.Design/Assets/cf-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..007e30e807393c16b4443df31617580818d9b290 GIT binary patch literal 15303 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 AMgRZ+ literal 0 HcmV?d00001 diff --git a/App/Harp.Behavior.Design/Assets/cf-logo.svg b/App/Harp.Behavior.Design/Assets/cf-logo.svg new file mode 100644 index 0000000..08e8841 --- /dev/null +++ b/App/Harp.Behavior.Design/Assets/cf-logo.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.png b/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f8afc50ced6d5ce389af00e2a767a1196f485b79 GIT binary patch literal 21525 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 literal 0 HcmV?d00001 diff --git a/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.svg b/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.svg new file mode 100644 index 0000000..1896536 --- /dev/null +++ b/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo.svg @@ -0,0 +1,94 @@ + + + + + + + CF_hardware_sofware_logo + + + + + CF_hardware_sofware_logo + + + + + + + + + Hardware and + + + Software + + Platform + + + + diff --git a/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo_white_lettering.png b/App/Harp.Behavior.Design/Assets/cf_hardware_software_logo_white_lettering.png new file mode 100644 index 0000000000000000000000000000000000000000..e201b4ba6f6bd4f070a322d162d40fb69460b12f GIT binary patch literal 13832 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 + + + + + + + + + + Hardware and + Software + Platform + diff --git a/App/Harp.Behavior.Design/Controls/ExtendedColorPicker.cs b/App/Harp.Behavior.Design/Controls/ExtendedColorPicker.cs new file mode 100644 index 0000000..f91dd70 --- /dev/null +++ b/App/Harp.Behavior.Design/Controls/ExtendedColorPicker.cs @@ -0,0 +1,33 @@ +using System; +using System.Reflection; +using Avalonia.Controls; +using Avalonia.Controls.Primitives; +using Avalonia.Interactivity; + +namespace Harp.Behavior.Design.Controls; + +// NOTE: This is currently needed because there's an issue in the ColorPicker control where +// the SelectedIndex is not respected on load. +public class ExtendedColorPicker : ColorPicker +{ + protected override Type StyleKeyOverride => typeof(ColorPicker); + + private int _selectedTabIndex; + + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) + { + // There might be a property set in xaml that get's overridden here + _selectedTabIndex = SelectedIndex; + base.OnApplyTemplate(e); + } + + protected override void OnLoaded(RoutedEventArgs e) + { + base.OnLoaded(e); + + var type = typeof(ColorView); + if (type.GetField("_tabControl", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(this) is not TabControl tabControl) + return; + tabControl.SelectedIndex = _selectedTabIndex; + } +} diff --git a/App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml b/App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml new file mode 100644 index 0000000..871761f --- /dev/null +++ b/App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + diff --git a/App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml.cs b/App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml.cs new file mode 100644 index 0000000..829fd0f --- /dev/null +++ b/App/Harp.Behavior.Design/Controls/RgbRegisterControl.axaml.cs @@ -0,0 +1,11 @@ +using Avalonia.Controls; + +namespace Harp.Behavior.Design.Controls; + +public partial class RgbRegisterControl : UserControl +{ + public RgbRegisterControl() + { + InitializeComponent(); + } +} diff --git a/App/Harp.Behavior.Design/Controls/VisualStatus.axaml b/App/Harp.Behavior.Design/Controls/VisualStatus.axaml new file mode 100644 index 0000000..20d62e0 --- /dev/null +++ b/App/Harp.Behavior.Design/Controls/VisualStatus.axaml @@ -0,0 +1,11 @@ + + + + + + diff --git a/App/Harp.Behavior.Design/Controls/VisualStatus.axaml.cs b/App/Harp.Behavior.Design/Controls/VisualStatus.axaml.cs new file mode 100644 index 0000000..73eb13f --- /dev/null +++ b/App/Harp.Behavior.Design/Controls/VisualStatus.axaml.cs @@ -0,0 +1,21 @@ +using Avalonia; +using Avalonia.Controls; + +namespace Harp.Behavior.Design.Controls; + +public partial class VisualStatus : ContentControl +{ + public static readonly StyledProperty StatusProperty = + AvaloniaProperty.Register(nameof(Status), null); + + public bool? Status + { + get => GetValue(StatusProperty); + set => SetValue(StatusProperty, value); + } + + public VisualStatus() + { + InitializeComponent(); + } +} diff --git a/App/Harp.Behavior.Design/Controls/WriteMessagesControl.axaml b/App/Harp.Behavior.Design/Controls/WriteMessagesControl.axaml new file mode 100644 index 0000000..d94cfd5 --- /dev/null +++ b/App/Harp.Behavior.Design/Controls/WriteMessagesControl.axaml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - Enable Pulse Mode - - + - - - - + + + Set Output + + - - - + + + + + + + + Digital Output 1 control and status + + + + + + - - Start - Stop + + + + + + + + + + Enable Pulse Mode + - + - - Set Output - Clear Output - Toggle Output - + + + + + + + + + + + + + + + + + - - - - - - Digital Output 2 control and status - + + + Set Output + + - - - + + + + + + + + + + Digital Output 2 control and status + + + + + + - + - - - - + + + + + + + + Enable Pulse Mode + - - Enable Pulse Mode - - + - - - - - - - - - - - Start - Stop + + + + + + + + + + + + + + + - + - - Set Output - Clear Output - Toggle Output - + + + Set Output + + + + - - - - - Digital Output 3 control and status - - - - - + + + + + + Digital Output 3 control and status + + + + + + - + - - - - + + + + + + + + Enable Pulse Mode + - - Enable Pulse Mode - - + - - - - - - - - - - - Start - Stop + + + + + + + + + + + + + + + - + - - Set Output - Clear Output - Toggle Output - + + + Set Output + + + + + - + @@ -1464,7 +1517,7 @@ - + Current encoder value on Port 2 - + From 66bde767fa7c30a169c6e4cd5a33c177b0607c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatriz=20Louren=C3=A7o?= Date: Mon, 21 Jul 2025 11:14:01 +0100 Subject: [PATCH 04/47] Toggle buttons at the PWMs implemented --- .../Views/MyDeviceView.axaml | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/App/Harp.Behavior.Design/Views/MyDeviceView.axaml b/App/Harp.Behavior.Design/Views/MyDeviceView.axaml index 22185c7..50906b1 100644 --- a/App/Harp.Behavior.Design/Views/MyDeviceView.axaml +++ b/App/Harp.Behavior.Design/Views/MyDeviceView.axaml @@ -225,11 +225,17 @@ - - + + Start + + + Stop + + - @@ -282,13 +288,15 @@ - - - + + Start + + + Stop + @@ -344,13 +352,15 @@ - - - + + Start + + + Stop + @@ -405,13 +415,15 @@ - - - + + Start + + + Stop + From 067773846f652f93342577577f89f22b34f04a4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beatriz=20Louren=C3=A7o?= Date: Fri, 25 Jul 2025 13:59:11 +0100 Subject: [PATCH 05/47] New tab item tested out --- .../ViewModels/MyDeviceViewModel.cs | 153 +- .../Views/MyDeviceView.axaml | 2469 ++++++++++------- 2 files changed, 1540 insertions(+), 1082 deletions(-) diff --git a/App/Harp.Behavior.Design/ViewModels/MyDeviceViewModel.cs b/App/Harp.Behavior.Design/ViewModels/MyDeviceViewModel.cs index 03d4aa9..43f11be 100644 --- a/App/Harp.Behavior.Design/ViewModels/MyDeviceViewModel.cs +++ b/App/Harp.Behavior.Design/ViewModels/MyDeviceViewModel.cs @@ -51,6 +51,16 @@ public class BehaviorViewModel : ViewModelBase public ReactiveCommand PwmDO3StartCommand { get; } public ReactiveCommand PwmDO3StopCommand { get; } + public ReactiveCommand ServoOutput2StartCommand { get; } + public ReactiveCommand ServoOutput2StopCommand { get; } + public ReactiveCommand ServoOutput3StartCommand { get; } + public ReactiveCommand ServoOutput3StopCommand { get; } + + public ReactiveCommand Camera0StartCommand { get; } + public ReactiveCommand Camera0StopCommand { get; } + public ReactiveCommand Camera1StartCommand { get; } + public ReactiveCommand Camera1StopCommand { get; } + #endregion #region Device basic information @@ -3275,6 +3285,16 @@ public BehaviorViewModel() PwmDO3StartCommand = ReactiveCommand.Create(ExecutePwmDO3Start, canChangeConfig); PwmDO3StopCommand = ReactiveCommand.Create(ExecutePwmDO3Stop, canChangeConfig); + ServoOutput2StartCommand = ReactiveCommand.Create(ExecuteServoOuput2Start, canChangeConfig); + ServoOutput2StopCommand = ReactiveCommand.Create(ExecuteServoOuput2Stop, canChangeConfig); + ServoOutput3StartCommand = ReactiveCommand.Create(ExecuteServoOuput3Start, canChangeConfig); + ServoOutput3StopCommand = ReactiveCommand.Create(ExecuteServoOuput3Stop, canChangeConfig); + + Camera0StartCommand = ReactiveCommand.Create(ExecuteCamera0Start, canChangeConfig); + Camera0StopCommand = ReactiveCommand.Create(ExecuteCamera0Stop, canChangeConfig); + Camera1StartCommand = ReactiveCommand.Create(ExecuteCamera1Start, canChangeConfig); + Camera1StopCommand = ReactiveCommand.Create(ExecuteCamera1Stop, canChangeConfig); + // force initial population of currently connected ports LoadUsbInformation(); } @@ -3335,6 +3355,48 @@ private void ExecutePwmDO3Stop() IsPwmDO3Enabled_PwmStart = false; } + private void ExecuteServoOuput2Start() + { + IsServoOutput2Enabled_EnableServos = true; + IsServoOutput2Enabled_DisableServos = false; + } + private void ExecuteServoOuput2Stop() + { + IsServoOutput2Enabled_EnableServos = false; + IsServoOutput2Enabled_DisableServos = true; + } + private void ExecuteServoOuput3Start() + { + IsServoOutput3Enabled_EnableServos = true; + IsServoOutput3Enabled_DisableServos = false; + } + private void ExecuteServoOuput3Stop() + { + IsServoOutput3Enabled_EnableServos = false; + IsServoOutput3Enabled_DisableServos = true; + } + + private void ExecuteCamera0Start() + { + IsCameraOutput0Enabled_StartCameras = true; + IsCameraOutput0Enabled_StopCameras = false; + } + private void ExecuteCamera0Stop() + { + IsCameraOutput0Enabled_StartCameras = false; + IsCameraOutput0Enabled_StopCameras = true; + } + private void ExecuteCamera1Start() + { + IsCameraOutput1Enabled_StartCameras = true; + IsCameraOutput1Enabled_StopCameras = false; + } + private void ExecuteCamera1Stop() + { + IsCameraOutput1Enabled_StartCameras = false; + IsCameraOutput1Enabled_StopCameras = true; + } + private IObservable LoadUsbInformation() { return Observable.Start(() => @@ -3605,6 +3667,20 @@ public IObservable GenerateEventMessages() OutputState = OutputStateResult; observer.OnNext($"OutputState: {OutputStateResult}"); + + //var resultRgb0 = await device.ReadRgb0Async(cancellationToken); + //Rgb0 = resultRgb0; + + //observer.OnNext($"Rgb0: {resultRgb0}"); + + //var resultRgb1 = await device.ReadRgb1Async(cancellationToken); + //Rgb1 = resultRgb1; + //observer.OnNext($"Rgb1: {resultRgb1}"); + + //var resultRgbAll = await device.ReadRgbAllAsync(cancellationToken); + //RgbAll = resultRgbAll; + //observer.OnNext($"RgbAll: {resultRgbAll}"); + // var PortDIOStateResult = await device. // Wait a short while before polling again. Adjust delay as necessary. @@ -3632,25 +3708,33 @@ private IObservable SaveConfiguration(bool savePermanently) if (_device == null) throw new Exception("You need to connect to the device first"); + //RgbAllAdapter.UpdateFromRegister(RgbAll); + //Rgb0Adapter.UpdateFromRegister(Rgb0); + //Rgb1Adapter.UpdateFromRegister(Rgb1); + //Rgb0Adapter.LinkToParent(RgbAllAdapter, 0); + //Rgb1Adapter.LinkToParent(RgbAllAdapter, 1); + + //Rgb1Adapter.ToRegisterValue(); + /***************************************************************** * TODO: Please REVIEW all these registers and update the values * ****************************************************************/ - await WriteAndLogAsync( - value => _device.WriteOutputSetAsync(value), - OutputSet, - "OutputSet"); - await WriteAndLogAsync( - value => _device.WriteOutputClearAsync(value), - OutputClear, - "OutputClear"); - await WriteAndLogAsync( - value => _device.WriteOutputToggleAsync(value), - OutputToggle, - "OutputToggle"); - await WriteAndLogAsync( - value => _device.WriteOutputStateAsync(value), - OutputState, - "OutputState"); + //await WriteAndLogAsync( + // value => _device.WriteOutputSetAsync(value), + // OutputSet, + // "OutputSet"); + //await WriteAndLogAsync( + // value => _device.WriteOutputClearAsync(value), + // OutputClear, + // "OutputClear"); + //await WriteAndLogAsync( + // value => _device.WriteOutputToggleAsync(value), + // OutputToggle, + // "OutputToggle"); + //await WriteAndLogAsync( + // value => _device.WriteOutputStateAsync(value), + // OutputState, + // "OutputState"); await WriteAndLogAsync( value => _device.WritePortDIOSetAsync(value), PortDIOSet, @@ -3775,6 +3859,17 @@ await WriteAndLogAsync( value => _device.WriteRgbAllAsync(value), RgbAll, "RgbAll"); + + var c0 = Rgb0Adapter.Color; + var c1 = Rgb1Adapter.Color; + RgbAll = new RgbAllPayload( + c0.R, c0.G, c0.B, + c1.R, c1.G, c1.B); + + Rgb0 = new RgbPayload(c0.R, c0.G, c0.B); + Rgb1 = new RgbPayload(c1.R, c1.G, c1.B); + //Rgb0 = Rgb0Adapter.ToRegisterValue(); + //Rgb0 = Rgb0Adapter.ToRegisterValue(); await WriteAndLogAsync( value => _device.WriteRgb0Async(value), Rgb0, @@ -3784,7 +3879,15 @@ await WriteAndLogAsync( Rgb1, "Rgb1"); await WriteAndLogAsync( - value => _device.WriteLed0CurrentAsync(value), + value => _device.WritePulseRgb0Async(value), + PulseRgb0, + "PulseRgb0"); + await WriteAndLogAsync( + value => _device.WritePulseRgb1Async(value), + PulseRgb1, + "PulseRgb1"); + await WriteAndLogAsync( + value => _device.WriteLed0CurrentAsync(value), Led0Current, "Led0Current"); await WriteAndLogAsync( @@ -3883,6 +3986,22 @@ await WriteAndLogAsync( value => _device.WritePokeInputFilterAsync(value), PokeInputFilter, "PokeInputFilter"); + await WriteAndLogAsync( + value => _device.WriteOutputSetAsync(value), + OutputSet, + "OutputSet"); + await WriteAndLogAsync( + value => _device.WriteOutputClearAsync(value), + OutputClear, + "OutputClear"); + //await WriteAndLogAsync( + // value => _device.WriteOutputToggleAsync(value), + // OutputToggle, + // "OutputToggle"); + //await WriteAndLogAsync( + // value => _device.WriteOutputStateAsync(value), + // OutputState, + // "OutputState"); // Save the configuration to the device permanently if (savePermanently) diff --git a/App/Harp.Behavior.Design/Views/MyDeviceView.axaml b/App/Harp.Behavior.Design/Views/MyDeviceView.axaml index 50906b1..80dad7a 100644 --- a/App/Harp.Behavior.Design/Views/MyDeviceView.axaml +++ b/App/Harp.Behavior.Design/Views/MyDeviceView.axaml @@ -19,6 +19,20 @@ + + + + + + + + @@ -76,67 +90,1037 @@ - - - - + + + - - + + RequestedThemeVariant="Light"> + Content="Theme" FontWeight="Normal" FontSize="14" + IsChecked="{Binding IsDarkMode}"> @@ -120,7 +104,7 @@ Margin="10,0" /> - - - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - - @@ -468,60 +397,50 @@ - - + + - - + - - + + Command="{Binding DO1SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding DO1ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - @@ -546,59 +464,50 @@ - - + + - - - + + Command="{Binding DO2SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding DO2ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - - @@ -624,57 +531,50 @@ - - + + - + + Command="{Binding DO3SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding DO3ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + - @@ -747,43 +640,41 @@ - - + + - + + Command="{Binding DOPort0SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding DOPort0ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - @@ -793,28 +684,27 @@ - - + + - + + Command="{Binding SupplyPort0SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding SupplyPort0ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - - - - - - + @@ -850,10 +735,8 @@ - - - + - - + + - - + + Command="{Binding DIOPort0SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding DIOPort0ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - - + + VerticalAlignment="Center" /> - - @@ -925,13 +803,7 @@ - - - - - - - + @@ -948,50 +820,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + - @@ -1001,43 +867,41 @@ - - + + - + + Command="{Binding DOPort1SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding DOPort1ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - @@ -1047,50 +911,47 @@ - - + + - + + Command="{Binding SupplyPort1SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding SupplyPort1ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - + - + - + @@ -1100,15 +961,13 @@ - - - - - + - - + + - - + + Command="{Binding DIOPort1SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding DIOPort1ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - + + VerticalAlignment="Center" /> - - @@ -1173,22 +1029,18 @@ - - + + - - - - - - - + - + - + @@ -1198,52 +1050,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + - @@ -1253,43 +1101,41 @@ - - + + - + + Command="{Binding DOPort2SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding DOPort2ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - @@ -1299,50 +1145,47 @@ - - + + - + + Command="{Binding SupplyPort2SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding SupplyPort2ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - + - + - + @@ -1352,15 +1195,13 @@ - - - - - + - - + + - - + + Command="{Binding DIOPort2SetCommand}" Width="55" + HorizontalContentAlignment="Center"> Set + Command="{Binding DIOPort2ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - + + VerticalAlignment="Center" /> - @@ -1424,22 +1263,18 @@ - - + + - - - - - - - + - + - + @@ -1449,65 +1284,52 @@ - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - + + - - - - - + - - - - - + + + + + + + + + + + - - - - + + + + @@ -1519,28 +1341,25 @@ - - + + - + + Command="{Binding Led0SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding Led0ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - - - - - - + - - + + - + + Command="{Binding Led1SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding Led1ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - - - - - - - - - - - - - - - - - + + - - - - - + - - - - - + + + + + + + + + + + - - - - + + + + @@ -1685,47 +1490,44 @@ - - + + - + + Command="{Binding Rgb0SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding Rgb0ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - - @@ -1739,104 +1541,82 @@ - - + + - + + Command="{Binding Rgb1SetCommand}" Width="55" HorizontalContentAlignment="Center"> Set + Command="{Binding Rgb1ClearCommand}" Width="55" + HorizontalContentAlignment="Center"> Clear - - - - - - + - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" /> - + Enable - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + + - - - - - + - - - + + + + + + + + + - - + + @@ -1850,8 +1630,9 @@ - + @@ -1866,45 +1647,41 @@ - + - - - - - - - - - - - - - - - - - - - - - + + - - - - + + + + + + + + + + + - - - + + + @@ -1916,29 +1693,29 @@ - - + + - + + Command="{Binding Camera0StartCommand}" Width="50" + HorizontalContentAlignment="Center"> Start + Command="{Binding Camera0StopCommand}" Width="50" + HorizontalContentAlignment="Center"> Stop - - - - - + + Width="150" ClipValueToMinMax="True" Increment="1" FormatString="F0" + Margin="0,0,15,0" />