function data = getBusData(rootBus, pathStr)
%GETBUSDATA Estrae i dati numerici da un segnale dentro un bus gerarchico.
%
% Esempio:
%   x1 = getBusData(plotGlobal, 'pl_1.plotveicolo.values.x');

    node = getBusNode(rootBus, pathStr);

    % Se è un Signal, entra nei Values
    if isa(node, 'Simulink.SimulationData.Signal')
        node = node.Values;
    end

    % Caso standard: timeseries
    if isa(node, 'timeseries')
        data = node.Data;
    elseif isstruct(node) && isfield(node, 'Data')
        data = node.Data;
    elseif isnumeric(node)
        data = node;
    else
        error('getBusData:unsupportedType', ...
            'Tipo dato non supportato per path "%s": %s', ...
            pathStr, class(node));
    end

    data = squeeze(data);

    % Forza vettore colonna
    if isrow(data)
        data = data.';
    end
end