Skip to content

Commit

Permalink
Merge branch 'release_1.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
christophe-calmejane committed Sep 26, 2023
2 parents 57c3cf4 + 212a8f5 commit e80e4fe
Show file tree
Hide file tree
Showing 180 changed files with 10,508 additions and 5,374 deletions.
31 changes: 16 additions & 15 deletions .defaults.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
# Default values for gen_cmake and gen_install

default_qt_version="5.15.2"
default_win_basePath="C:/Qt"
default_win_arch="msvc2019"
default_mac_basePath="/Applications/Qt"
default_mac_arch="clang_64"
default_linux_basePath="/usr/lib"
default_linux_arch="$(g++ -dumpmachine)"
# Qt defaults
default_qt_version="6.5.2"
default_qt_win_basePath="C:/Qt"
default_qt_win_arch="msvc2019"
default_qt_mac_basePath="/Applications/Qt"
default_qt_mac_arch="clang_64"
default_qt_linux_basePath="/usr/lib"
default_qt_linux_arch="$(g++ -dumpmachine)"

# gen_cmake defaults
function extend_gc_fnc_defaults()
{
default_VisualGenerator="Visual Studio 17 2022"
default_VisualToolset="v143"
default_VisualToolchain="x64"
default_VisualArch="x86"
default_VisualGenerator="Visual Studio 17 2022"
default_VisualToolset="v143"
default_VisualToolchain="x64"
default_VisualArch="x64"
default_keyDigits=2
default_betaTagName="-beta"
}
Expand All @@ -25,7 +26,7 @@ function extend_gi_fnc_defaults()
default_VisualGenerator="Visual Studio 17 2022"
default_VisualToolset="v143"
default_VisualToolchain="x64"
default_VisualArch="x86"
default_VisualArch="x64"
default_keyDigits=2
default_betaTagName="-beta"
}
Expand Down Expand Up @@ -62,11 +63,11 @@ function get_default_qt_path()
local gdqp_result="" # Use a unique name for the result as we pass it by reference

if isWindows; then
build_qt_config_folder gdqp_result "${default_win_basePath}/${default_qt_version}" "${default_win_arch}" "${QtMajorVersion}"
build_qt_config_folder gdqp_result "${default_qt_win_basePath}/${default_qt_version}" "${default_qt_win_arch}" "${QtMajorVersion}"
elif isMac; then
build_qt_config_folder gdqp_result "${default_mac_basePath}/${default_qt_version}" "${default_mac_arch}" "${QtMajorVersion}"
build_qt_config_folder gdqp_result "${default_qt_mac_basePath}/${default_qt_version}" "${default_qt_mac_arch}" "${QtMajorVersion}"
elif isLinux; then
build_qt_config_folder gdqp_result "${default_linux_basePath}" "${default_linux_arch}" "${QtMajorVersion}"
build_qt_config_folder gdqp_result "${default_qt_linux_basePath}" "${default_qt_linux_arch}" "${QtMajorVersion}"
fi

_retval="${gdqp_result}"
Expand Down
2 changes: 1 addition & 1 deletion 3rdparty/avdecc
Submodule avdecc updated 117 files
2 changes: 1 addition & 1 deletion 3rdparty/sparkleHelper
40 changes: 40 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,46 @@ All notable changes to Hive will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [1.3.0] - 2023-09-26
### Added
- Selection of an entity from the connection matrix (context menu)
- [Mac Address field in entities list](https://github.com/christophe-calmejane/Hive/issues/38)
- [ClockDomain locked state in entities list](https://github.com/christophe-calmejane/Hive/issues/133)
- Support for JACK Inputs and JACK Outputs
- Support for CONTROLs at non-configuration level
- Support for CONTROL_SELECTOR type for CONTROL descriptors
- Preliminary support for Virtual Entities modification
- [File association to directly load ANS and AVE files](https://github.com/christophe-calmejane/Hive/issues/146)
- New command line parameters to load ANS and AVE files
- New icons for ANS and AVE files
- Possibility to remove a virtual entity (DEL key in Entities list)
- Entity Descriptor displays the current status for unsolicited notifications registration
- [Entry in the entities list context menu to force reload a single entity](https://github.com/christophe-calmejane/Hive/issues/145)
- [New column in entities list showing error/warning status](https://github.com/christophe-calmejane/Hive/issues/155)
- New diagnostics for CONTROL descriptors, when the current value is out of min-max bounds
- [Support for Dark Mode](https://github.com/christophe-calmejane/Hive/issues/39)
- Clicking on an Entity-Entity crosspoint in the matrix expands/collapses both entities
- Display of Entity AEM Checksum (in Entity Descriptor)
- Detection of invalid *descriptor_counts* field in CONFIGURATION descriptor

### Changed
- Complete rework of the `entities list`
- Updated AVDECC library to v4.0
- Defaulting to Qt "fusion" style, can be changed with command line parameter `-style <style name>`

### Fixed
- Current selection in list of entities lost when changing the filter
- [Network Interfaces combobox displays errors and selected interface in bold](https://github.com/christophe-calmejane/Hive/issues/128)
- Refresh issue for ClockSource, MemoryObject, AvbInterface, AudioCluster, Control, ClockDomain, AssociationID custom names
- Possible crash for entities with more than 1 configuration, when using full device enumration
- Always display CONTROL descriptor even if the ControlDataType is not supported by the library
- CONTROL values updated by the device itself didn't update properly
- Possible crash for entities returning an out-of-bounds MemoryObject length value
- [Files can be loaded/saved from/to UTF8 path](https://github.com/christophe-calmejane/Hive/issues/156)
- Crash when displaying vendor specific control values
- Opening the Dynamic Mappings editor from the matrix only showed the first STREAM_PORT, it now shows all STREAM_PORTs
- `Clear All Dynamic Mappings` correctly clears redundant mappings for virtual entities

## [1.2.9] - 2023-01-13
### Added
- Option to hide (meaningless) connections between CRF and Audio streams
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ cmake_minimum_required(VERSION 3.22)
# It should have 3 digits (x.y.z) on main branch, and 4 digits (x.y.z.w) on dev and task branches. The last digit being used as beta label.
# As soon as a new version begins, update the version number by following SemVer rules.
# Example: 1.5.0 is the upcoming release version (main branch) of current 1.5.0.3 devel version (dev/task) which will be labelled 1.5.0-beta3
set(HIVE_VERSION 1.2.9)
set(AEMDUMPER_VERSION 1.1.0)
set(HIVE_VERSION 1.3.0)
set(AEMDUMPER_VERSION 1.3.0)

############ Override from command line "CMake -D<OPTION>=TRUE/FALSE/0/1/ON/OFF"

Expand Down Expand Up @@ -159,7 +159,7 @@ find_package(Qt${QT_MAJOR_VERSION} COMPONENTS Widgets;Network REQUIRED)
cu_setup_project_version_variables(${HIVE_VERSION})

# Set minimum OSX/iOS version
cu_setup_apple_minimum_versions(MACOS 10.13 IOS 11)
cu_setup_apple_minimum_versions(MACOS 11 IOS 14)

############ Define some variables

Expand Down
3 changes: 2 additions & 1 deletion Docker/.env
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# They can be overridden by setting them in the environment of the system (or on the same command line when invoking docker-compose)
# Use 'docker-compose config' to print the current configuration

TAG=ubuntu_21.10
TAG=ubuntu_22.04
QT_VERSION=6.5.2
BUILD_FOLDER=Hive
APP=Hive
12 changes: 7 additions & 5 deletions Docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,40 @@ volumes:
services:
# Base builder image
builder:
image: builder:${TAG}
image: builder:${TAG}_Qt${QT_VERSION}
build:
context: .
dockerfile: dockerHelper/builders/${TAG}/Dockerfile
args:
- QT_VERSION=${QT_VERSION}

# CMake configure service
gen_cmake:
image: builder:${TAG}
image: builder:${TAG}_Qt${QT_VERSION}
volumes:
- ../:/home/builder/sources:ro
- builds:/home/builder/builds
entrypoint: /bin/bash ./gen_cmake.sh -o ../builds/${BUILD_FOLDER}

# Build service
build:
image: builder:${TAG}
image: builder:${TAG}_Qt${QT_VERSION}
volumes:
- ../:/home/builder/sources:ro
- builds:/home/builder/builds
entrypoint: cmake --build ../builds/${BUILD_FOLDER}

# Shell service
shell:
image: builder:${TAG}
image: builder:${TAG}_Qt${QT_VERSION}
volumes:
- ../:/home/builder/sources:ro
- builds:/home/builder/builds
entrypoint: /bin/bash

# Run service
run:
image: builder:${TAG}
image: builder:${TAG}_Qt${QT_VERSION}
volumes:
- builds:/home/builder/builds
entrypoint: ./${APP}
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ Precompiled binaries for macOS and Windows [can be found here](https://github.co
## Minimum requirements for compilation

- CMake 3.22
- Qt 5.15.2
- Visual Studio 2019 16.3 (using platform toolset v142), Xcode 12, g++ 11.2.0
- Qt 6.5.2 (although Qt 5.15.2 was supported in the past, it's no longer guaranteed to compile correctly)
- Visual Studio 2022 17.4 (using platform toolset v143), Xcode 14, g++ 11.0
- [Optional, for cross-compilation] Docker / Docker Compose

## Compilation
Expand All @@ -35,7 +35,7 @@ Precompiled binaries for macOS and Windows [can be found here](https://github.co
- Requires `docker` and `docker-compose` to be installed
- Go to the `Docker` folder
- Build the docker builder image: _docker-compose build_
- Generate the build solution: _docker-compose run --rm gen_cmake -debug -c Ninja -- -DBUILD_HIVE_TESTS=FALSE_
- Generate the build solution: _docker-compose run --rm gen_cmake -debug -c Ninja -qtvers 6.5.2 -qtdir /usr/local/Qt-6.5.2/lib/cmake -- -DBUILD_HIVE_TESTS=FALSE_
- You may change parameters to your convenience
- Build the solution: _docker-compose run --rm build --target install_
- If you want to run the application, you must authorize X connections to your display: _xhost local:root_
Expand Down
25 changes: 0 additions & 25 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# TODO
## Global
- Enable (via option?) Hive advertising (la_avdecc_controller has to support ADP name/group configuration, and probably partial AEM support)
- Support multiple eth interfaces at the same time to support redundancy (Hive being connected to multiple interfaces at the same time and aggregating information on both interfaces)
- Have to properly split dynamic/static model in Hive (not only relying on la_avdecc_controller)
- For each descriptor that have dynamic information, find a way to display them separately in Hive
Expand All @@ -10,33 +9,16 @@
## Menu
- Menu: "File/Save log..."

## Entities list
- Icons displaying the type of entity (controller, listener, talker, 3 icons max then)
- Possiblity to copy (right click context menu?) some elements, like the entityID in the list -> already done by Qt, just have to selection row/column and ctrl-c (TODO: Explain that in some tutorial)

## AEM Inspector
- Add Strings descriptor as sub node of Locale
- Right click menu:
- Export node as aemxml or another format (because aemxml is only for the static part of the AEM)

## Descriptor Inspector
- Improve the "Connection list" for a StreamOutput
- Add an icon indicating the FastConnecting status
- Move the right click menu "Clear all ghost connections" from item to the list itself, and implement it
- Right click menu:
- Copy values (like all EID for ex)

## Connection Matrix
- Right click on a connection (active or not) for which the stream format do not match:
- "Set listener format from talker" -> Enable this item if, for the current Talker Format, there is a compatible format available on the Listener
- "Set talker format from listener" -> Enable this item if, for the current Listener Format, there is a compatible format available on the Talker
- Better display error information:
- When there is a connection error, we should display it wich possibly a red icon (like WrongDomain, but with a tooltip??). Including when there is a fastConnect error (talker acquired for ex.), but in this case the avdecc library should not filter errors in sniffed messages
- When there is a "mismatch connection" error (listener thinks it's connected but is not in the connections list of the talker), maybe add a new color code?
- Display when there is a SRP error as well
- Maybe just use only one new color code (purple) or a new form (triangle?) for when the avdecc connection is established, but there is an error (for all cases above) that we display with a tooltip
- Separate the connection matrix in 2 matrices, one for normal streams and one for CRF?
- Implement colors for entities (the squares)
- Add feature "Start all Streams" and "Stop all Streams" when right clicking on the header of a entity

## Log window
Expand All @@ -49,13 +31,6 @@
- GroupName issue if it's set to "语语语语语语语语语语语语语语语语语语语语语|" (a value is being added at the end of the string)
- If a Talker Stream is in Waiting status and we connect a new listener, it automatically goes into NonWaiting status because we are always sending the connection request without taking Wait flag into account
- ProtocolInterface loaded multiple times during launch (pcap at least)
- When there are many huge devices on the network (Tesira+Hono for ex.) and we reset the controller (reload interface), huge graphics lag (everything arrive at the same time and the mainThread is blocked). Looks like the same issue we previously had with the logger
- Acquire Tesira and quickly select another entity that has no name for Stream in/out, cause a change in the name displayed in the inspector (no filter on onNameChanged??)
- macOS only: ChannelMappings dialog not resizable (https://bugreports.qt.io/browse/QTBUG-41932)
- Non redundant Talker connected to the primary stream of a redundant Listener (using riedel) causes Hive to not be able to do anything about this stream because it's "not connectable" (single stream cannot be connected to a stream of a redundant pair). Kill ghost connection do not work, neither in the matrix

# Improvements
- Display a reload controller icon in the toolbar

# TO BE SORTED
- Afficher la liste des streams formats tels qu'ils sont retournés par l'entité, et optimiser la liste dans la combobox pour aggréger les up-to avec les autres (si on a up-to 8, ne pas afficher 1, 2, 4, 6...)
Expand Down
16 changes: 8 additions & 8 deletions gen_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -127,18 +127,18 @@ function extend_gc_fnc_precmake()
# Using automatic Qt detection
if [ $overrideQtDir -eq 0 ]; then
if isWindows; then
qtBasePath="${default_win_basePath}/${QtVersion}"
qtBasePath="${default_qt_win_basePath}/${QtVersion}"
if [ "$arch" == "x64" ]; then
qtArch="${default_win_arch}_64"
qtArch="${default_qt_win_arch}_64"
else
qtArch="${default_win_arch}"
qtArch="${default_qt_win_arch}"
fi
elif isMac; then
qtBasePath="${default_mac_basePath}/${QtVersion}"
qtBasePath="${default_qt_mac_basePath}/${QtVersion}"
if [ "${QtMajorVersion}" == "6" ] ; then
qtArch="macos"
else
qtArch="${default_mac_arch}"
qtArch="${default_qt_mac_arch}"
fi
elif isLinux; then
if [ "x${QT_BASE_PATH}" != "x" ]; then
Expand All @@ -149,12 +149,12 @@ function extend_gc_fnc_precmake()
fi

qtBasePath="${QT_BASE_PATH}/${QtVersion}"
qtArch="" # Maybe use default_linux_arch as well? (if yes, factorize qtArch for both QT_BASE_PATH and system wide)
qtArch="" # Maybe use default_qt_linux_arch as well? (if yes, factorize qtArch for both QT_BASE_PATH and system wide)
else
echo "Using system wide Qt headers and libraries."
echo "QT_BASE_PATH env variable can be defined to the root folder of Qt installation (where MaintenanceTool resides), or the -qtdir option. See help (-h) for more details."
qtBasePath="${default_linux_basePath}"
qtArch="${default_linux_arch}"
qtBasePath="${default_qt_linux_basePath}"
qtArch="${default_qt_linux_arch}"
fi
else
echo "Unsupported platform"
Expand Down
50 changes: 50 additions & 0 deletions include/QtMate/flow/flowConnection.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2017-2023, Emilien Vallot, Christophe Calmejane and other contributors
* This file is part of Hive.
* Hive is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* Hive is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License
* along with Hive. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include <QtMate/flow/flowLink.hpp>
#include <QtMate/flow/flowDefs.hpp>

namespace qtMate::flow
{
class FlowConnection : public FlowLink
{
public:
FlowConnection(QGraphicsItem* parent = nullptr);
virtual ~FlowConnection() override;

FlowConnectionDescriptor descriptor() const;

void setOutput(FlowOutput* output);
FlowOutput* output() const;

void setInput(FlowInput* input);
FlowInput* input() const;

void updatePath();

private:
friend class FlowNode;

FlowOutput* _output{};
FlowInput* _input{};
};

} // namespace qtMate::flow
Loading

0 comments on commit e80e4fe

Please sign in to comment.