classdef Board < target.physical.Component

    properties (Dependent)
        CommunicationInterfaces target.CommunicationInterface {mustBeVector(CommunicationInterfaces, "allow-all-empties")}
        CommunicationProtocolStacks target.CommunicationProtocolStack {mustBeVector(CommunicationProtocolStacks, "allow-all-empties")}
        MainFunctions target.MainFunction {mustBeVector(MainFunctions, "allow-all-empties")}
        Processors target.Processor {mustBeVector(Processors, "allow-all-empties")}
        Tools target.Tools {mustBeScalarOrEmpty}
    end

    methods

        function value = get.CommunicationInterfaces(this)
            value = this.wrapValue(this.InnerInstance.CommunicationInterfaces);
        end

        function set.CommunicationInterfaces(this, value)
            this.InnerInstance.CommunicationInterfaces = this.unwrapValue(value, this.InnerInstance.CommunicationInterfaces);
        end

        function value = get.CommunicationProtocolStacks(this)
            value = this.wrapValue(this.InnerInstance.CommunicationProtocolStacks);
        end

        function set.CommunicationProtocolStacks(this, value)
            this.InnerInstance.CommunicationProtocolStacks = this.unwrapValue(value, this.InnerInstance.CommunicationProtocolStacks);
        end

        function value = get.MainFunctions(this)
            value = this.wrapValue(this.InnerInstance.MainFunctions);
        end

        function set.MainFunctions(this, value)
            this.InnerInstance.MainFunctions = this.unwrapValue(value, this.InnerInstance.MainFunctions);
        end

        function value = get.Processors(this)
            value = this.wrapValue(this.InnerInstance.Processors);
        end

        function set.Processors(this, value)
            this.InnerInstance.Processors = this.unwrapValue(value, this.InnerInstance.Processors);
        end

        function value = get.Tools(this)
            value = this.wrapValue(this.InnerInstance.Tools);
        end

        function set.Tools(this, value)
            this.InnerInstance.Tools = this.unwrapValue(value, this.InnerInstance.Tools);
        end
    end

    methods (Static, Access = protected)

        function name = getQualifiedName()
            name = "target.Board";
        end

        function name = getQualifiedInnerName()
            name = "target.internal.Board";
        end
    end
end

%   Copyright 2021-2022 The MathWorks, Inc.