Managed to solve it (with a minor waiver on my end) by adding a new doxygen group:
/// @addtogroup SignalTypes
/// @{
/**
* @brief Template struct representing a generic signal.
* @tparam SIGNAL_TYPE The data type of the signal value (e.g., double, float, uint8_t, etc.).
*/
template <typename SIGNAL_TYPE> struct Signal
{
bool valid = false; ///< Indicates the signal is valid.
SIGNAL_TYPE value = 0 ///< The signal's value
/**
* @brief Equality operator for Signal.
* @param other The other Signal to compare against.
* @return If both signals are available, compares their values.
* If not available, checks if the other is also not available.
*/
bool operator==(const Signal<SIGNAL_TYPE>& other) const
{
return (available ? other.available && value == other.value : !other.available);
}
};
/// Type alias for double-precision floating point signals.
using DoubleSignal = Signal<double>;
/// @}
And using the output file group__SignalTypes instead of the current Interface_8h file I used previously (this is the small waiver :) )
Why is this fine by me?
Since now the Typedef types aren't in a single namespace page the user can't find anywhere and has a LOT of other items in.