A multi-platform configuration tool for OpenIPC cameras, built using Avalonia UI. The application provides a user-friendly interface for managing camera settings, viewing telemetry data, and setting up the camera.
Based off of MarioFPV's OpenIPC Config
- Android and IOS versions coming soon!
- Camera settings management: configure camera settings such as resolution, frame rate, and exposure
- Telemetry: view real-time telemetry data from the camera, including metrics such as temperature, voltage, and signal strength
- Setup wizards: guided setup processes for configuring the camera and connecting to the network
- Multi-platform support: run the application on Windows, macOS, and Linux platforms
- YAML-based configuration files: easily edit and customize camera settings using YAML configuration files
- Built using Avalonia UI, a cross-platform XAML-based UI framework
.NET Core 3.1 or later
- Supports multiple camera models and configurations
- Includes logging and error handling for troubleshooting and debugging
Views
: contains Avalonia UI views for the application, including camera settings, telemetry, and setup wizardsViewModels
: contains view models for the application, responsible for managing data and business logicModels
: contains data models for the application, representing camera settings and telemetry dataServices
: contains application-wide services and utilities, such as logging and SSH clientsStyles
: contains styles and resources for the application, including themes and fontsREADME.md
: this file, containing information about the project and its features
https://github.com/serilog/serilog/wiki/Configuration-Basics
- Android: /data/user/0/org.openipc.OpenIPC/files/.config/openipc-configurator.log
- Mac: "$HOME/Library/Application Support/OpenIPC_Config/Logs"
- Windows: %APPDATA%\Local\OpenIPC_Config\Logs
- Linux: ~/.config/openipc-configurator.log
Based on your folder structure, here’s an explanation of each project and what it likely targets:
-
OpenIPC
- The core or shared library project that other platform-specific projects reference.
- It likely contains shared code, models, services, or ViewModels that can be used across all platforms (Desktop, Android, Browser, iOS).
-
OpenIPC.Desktop
- This project is intended for desktop platforms (Windows, macOS, and Linux).
- In Avalonia, a "Desktop" project can target multiple operating systems using
net7.0-windows
,net7.0-macos
, andnet7.0-linux
. - You can configure it to build for any or all of these desktop operating systems.
-
OpenIPC.Android
- This project targets Android devices.
- It will have Android-specific configurations and might use
net8.0-android
ornet7.0-android
as theTargetFramework
. - Contains Android-specific files and setup, like Android permissions, manifest configurations, etc.
-
OpenIPC.Browser
- This project is meant for web applications, targeting WebAssembly (WASM) using Avalonia's browser support.
- The target framework is typically
net8.0-browser
. - This allows you to run the app in a web browser, making use of WebAssembly technology to execute .NET code in a web environment.
-
OpenIPC.iOS
- This project is intended for iOS devices (iPhones and iPads).
- Uses a target framework like
net8.0-ios
ornet7.0-ios
with iOS-specific configurations. - Contains iOS-specific files such as
Info.plist
for app metadata,Entitlements.plist
for permissions, andAppDelegate.cs
for application lifecycle management.
Project | Target Platform(s) | Description |
---|---|---|
OpenIPC | Shared (all platforms) | Core library or shared code used across all platform-specific projects. |
OpenIPC.Desktop | Windows, macOS, Linux | Targets desktop OSs, can be configured to support win-x64 , osx-arm64 , linux-x64 , etc. |
OpenIPC.Android | Android | Targets Android devices with net8.0-android or net7.0-android . |
OpenIPC.Browser | Browser (WebAssembly) | Targets web browsers with WebAssembly using net8.0-browser . |
OpenIPC.iOS | iOS | Targets iOS devices with net8.0-ios or net7.0-ios . |
To build each project, navigate to the specific project folder and run the dotnet publish
command with the appropriate runtime identifier for that platform.
For example:
-
macOS Desktop: Go to
OpenIPC.Desktop
and run:dotnet publish -c Release -r osx-arm64 --self-contained
When creating tags, follow semantic versioning:
- v1.0.0: Initial release.
- v1.0.1: Patch release (bug fixes).
- v1.1.0: Minor release (new features, backwards compatible).
- v2.0.0: Major release (breaking changes).
dotnet test --collect:"XPlat Code Coverage"
reportgenerator -reports:"TestResults/**/*.xml" -targetdir:coverage-report -reporttypes:Html