www.gusucode.com > ros 工具箱 matlab源码程序 > ros/+robotics/+ros/+msggen/+sr_ronex_msgs/SPIState.m

    classdef SPIState < robotics.ros.Message
    %SPIState MATLAB implementation of sr_ronex_msgs/SPIState
    %   This class was automatically generated by
    %   robotics.ros.msg.internal.gen.MessageClassGenerator.
    
    %   Copyright 2014-2016 The MathWorks, Inc.
    
    %#ok<*INUSD>
    
    properties (Constant)
        MessageType = 'sr_ronex_msgs/SPIState' % The ROS message type
    end
    
    properties (Constant, Hidden)
        MD5Checksum = 'a93176a9c88e53cc58a927f7b4db311c' % The MD5 Checksum of the message definition
    end
    
    properties (Access = protected)
        JavaMessage % The Java message object
    end
    
    properties (Constant, Access = protected)
        SrRonexMsgsSPIPacketInClass = robotics.ros.msg.internal.MessageFactory.getClassForType('sr_ronex_msgs/SPIPacketIn') % Dispatch to MATLAB class for message type sr_ronex_msgs/SPIPacketIn
        StdMsgsHeaderClass = robotics.ros.msg.internal.MessageFactory.getClassForType('std_msgs/Header') % Dispatch to MATLAB class for message type std_msgs/Header
    end
    
    properties (Dependent)
        Header
        CommandType
        PinInputStatesDIO
        PinInputStatesSOMI
        SpiIn
        AnalogueIn
    end
    
    properties (Access = protected)
        Cache = struct('Header', [], 'SpiIn', []) % The cache for fast data access
    end
    
    properties (Constant, Hidden)
        PropertyList = {'AnalogueIn', 'CommandType', 'Header', 'PinInputStatesDIO', 'PinInputStatesSOMI', 'SpiIn'} % List of non-constant message properties
        ROSPropertyList = {'analogue_in', 'command_type', 'header', 'pin_input_states_DIO', 'pin_input_states_SOMI', 'spi_in'} % List of non-constant ROS message properties
    end
    
    methods
        function obj = SPIState(msg)
            %SPIState Construct the message object SPIState
            import com.mathworks.toolbox.robotics.ros.message.MessageInfo;
            
            % Support default constructor
            if nargin == 0
                obj.JavaMessage = obj.createNewJavaMessage;
                return;
            end
            
            % Construct appropriate empty array
            if isempty(msg)
                obj = obj.empty(0,1);
                return;
            end
            
            % Make scalar construction fast
            if isscalar(msg)
                % Check for correct input class
                if ~MessageInfo.compareTypes(msg(1), obj.MessageType)
                    error(message('robotics:ros:message:NoTypeMatch', obj.MessageType, ...
                        char(MessageInfo.getType(msg(1))) ));
                end
                obj.JavaMessage = msg(1);
                return;
            end
            
            % Check that this is a vector of scalar messages. Since this
            % is an object array, use arrayfun to verify.
            if ~all(arrayfun(@isscalar, msg))
                error(message('robotics:ros:message:MessageArraySizeError'));
            end
            
            % Check that all messages in the array have the correct type
            if ~all(arrayfun(@(x) MessageInfo.compareTypes(x, obj.MessageType), msg))
                error(message('robotics:ros:message:NoTypeMatchArray', obj.MessageType));
            end
            
            % Construct array of objects if necessary
            objType = class(obj);
            for i = 1:length(msg)
                obj(i,1) = feval(objType, msg(i)); %#ok<AGROW>
            end
        end
        
        function header = get.Header(obj)
            %get.Header Get the value for property Header
            if isempty(obj.Cache.Header)
                obj.Cache.Header = feval(obj.StdMsgsHeaderClass, obj.JavaMessage.getHeader);
            end
            header = obj.Cache.Header;
        end
        
        function set.Header(obj, header)
            %set.Header Set the value for property Header
            validateattributes(header, {obj.StdMsgsHeaderClass}, {'nonempty', 'scalar'}, 'SPIState', 'Header');
            
            obj.JavaMessage.setHeader(header.getJavaObject);
            
            % Update cache if necessary
            if ~isempty(obj.Cache.Header)
                obj.Cache.Header.setJavaObject(header.getJavaObject);
            end
        end
        
        function commandtype = get.CommandType(obj)
            %get.CommandType Get the value for property CommandType
            commandtype = typecast(int16(obj.JavaMessage.getCommandType), 'uint16');
        end
        
        function set.CommandType(obj, commandtype)
            %set.CommandType Set the value for property CommandType
            validateattributes(commandtype, {'numeric'}, {'nonempty', 'scalar'}, 'SPIState', 'CommandType');
            
            obj.JavaMessage.setCommandType(commandtype);
        end
        
        function pininputstatesdio = get.PinInputStatesDIO(obj)
            %get.PinInputStatesDIO Get the value for property PinInputStatesDIO
            javaArray = obj.JavaMessage.getPinInputStatesDIO;
            array = obj.readJavaArray(javaArray, 'uint8');
            pininputstatesdio = uint8(array);
        end
        
        function set.PinInputStatesDIO(obj, pininputstatesdio)
            %set.PinInputStatesDIO Set the value for property PinInputStatesDIO
            validateattributes(pininputstatesdio, {'numeric'}, {'vector', 'numel', 4}, 'SPIState', 'PinInputStatesDIO');
            
            javaArray = obj.JavaMessage.getPinInputStatesDIO;
            array = obj.writeJavaArray(pininputstatesdio, javaArray, 'uint8');
            obj.JavaMessage.setPinInputStatesDIO(array);
        end
        
        function pininputstatessomi = get.PinInputStatesSOMI(obj)
            %get.PinInputStatesSOMI Get the value for property PinInputStatesSOMI
            javaArray = obj.JavaMessage.getPinInputStatesSOMI;
            array = obj.readJavaArray(javaArray, 'uint8');
            pininputstatessomi = uint8(array);
        end
        
        function set.PinInputStatesSOMI(obj, pininputstatessomi)
            %set.PinInputStatesSOMI Set the value for property PinInputStatesSOMI
            validateattributes(pininputstatessomi, {'numeric'}, {'vector', 'numel', 4}, 'SPIState', 'PinInputStatesSOMI');
            
            javaArray = obj.JavaMessage.getPinInputStatesSOMI;
            array = obj.writeJavaArray(pininputstatessomi, javaArray, 'uint8');
            obj.JavaMessage.setPinInputStatesSOMI(array);
        end
        
        function spiin = get.SpiIn(obj)
            %get.SpiIn Get the value for property SpiIn
            if isempty(obj.Cache.SpiIn)
                javaArray = obj.JavaMessage.getSpiIn;
                array = obj.readJavaArray(javaArray, obj.SrRonexMsgsSPIPacketInClass);
                obj.Cache.SpiIn = feval(obj.SrRonexMsgsSPIPacketInClass, array);
            end
            spiin = obj.Cache.SpiIn;
        end
        
        function set.SpiIn(obj, spiin)
            %set.SpiIn Set the value for property SpiIn
            validateattributes(spiin, {obj.SrRonexMsgsSPIPacketInClass}, {'vector', 'numel', 4}, 'SPIState', 'SpiIn');
            
            javaArray = obj.JavaMessage.getSpiIn;
            array = obj.writeJavaArray(spiin, javaArray, obj.SrRonexMsgsSPIPacketInClass);
            obj.JavaMessage.setSpiIn(array);
            
            % Update cache if necessary
            if ~isempty(obj.Cache.SpiIn)
                obj.Cache.SpiIn = [];
                obj.Cache.SpiIn = obj.SpiIn;
            end
        end
        
        function analoguein = get.AnalogueIn(obj)
            %get.AnalogueIn Get the value for property AnalogueIn
            javaArray = obj.JavaMessage.getAnalogueIn;
            array = obj.readJavaArray(javaArray, 'uint16');
            analoguein = uint16(array);
        end
        
        function set.AnalogueIn(obj, analoguein)
            %set.AnalogueIn Set the value for property AnalogueIn
            validateattributes(analoguein, {'numeric'}, {'vector', 'numel', 6}, 'SPIState', 'AnalogueIn');
            
            javaArray = obj.JavaMessage.getAnalogueIn;
            array = obj.writeJavaArray(analoguein, javaArray, 'uint16');
            obj.JavaMessage.setAnalogueIn(array);
        end
    end
    
    methods (Access = protected)
        function resetCache(obj)
            %resetCache Resets any cached properties
            obj.Cache.Header = [];
            obj.Cache.SpiIn = [];
        end
        
        function cpObj = copyElement(obj)
            %copyElement Implements deep copy behavior for message
            
            % Call default copy method for shallow copy
            cpObj = copyElement@robotics.ros.Message(obj);
            
            % Clear any existing cached properties
            cpObj.resetCache;
            
            % Create a new Java message object
            cpObj.JavaMessage = obj.createNewJavaMessage;
            
            % Iterate over all primitive properties
            cpObj.CommandType = obj.CommandType;
            cpObj.PinInputStatesDIO = obj.PinInputStatesDIO;
            cpObj.PinInputStatesSOMI = obj.PinInputStatesSOMI;
            cpObj.AnalogueIn = obj.AnalogueIn;
            
            % Recursively copy compound properties
            cpObj.Header = copy(obj.Header);
            cpObj.SpiIn = copy(obj.SpiIn);
        end
        
        function reload(obj, strObj)
            %reload Called by loadobj to assign properties
            obj.CommandType = strObj.CommandType;
            obj.PinInputStatesDIO = strObj.PinInputStatesDIO;
            obj.PinInputStatesSOMI = strObj.PinInputStatesSOMI;
            obj.AnalogueIn = strObj.AnalogueIn;
            obj.Header = feval([obj.StdMsgsHeaderClass '.loadobj'], strObj.Header);
            SpiInCell = arrayfun(@(x) feval([obj.SrRonexMsgsSPIPacketInClass '.loadobj'], x), strObj.SpiIn, 'UniformOutput', false);
            obj.SpiIn = vertcat(SpiInCell{:});
        end
    end
    
    methods (Access = ?robotics.ros.Message)
        function strObj = saveobj(obj)
            %saveobj Implements saving of message to MAT file
            
            % Return an empty element if object array is empty
            if isempty(obj)
                strObj = struct.empty;
                return
            end
            
            strObj.CommandType = obj.CommandType;
            strObj.PinInputStatesDIO = obj.PinInputStatesDIO;
            strObj.PinInputStatesSOMI = obj.PinInputStatesSOMI;
            strObj.AnalogueIn = obj.AnalogueIn;
            strObj.Header = saveobj(obj.Header);
            strObj.SpiIn = arrayfun(@(x) saveobj(x), obj.SpiIn);
        end
    end
    
    methods (Static, Access = {?matlab.unittest.TestCase, ?robotics.ros.Message})
        function obj = loadobj(strObj)
            %loadobj Implements loading of message from MAT file
            
            % Return an empty object array if the structure element is not defined
            if isempty(strObj)
                obj = robotics.ros.msggen.sr_ronex_msgs.SPIState.empty(0,1);
                return
            end
            
            % Create an empty message object
            obj = robotics.ros.msggen.sr_ronex_msgs.SPIState;
            obj.reload(strObj);
        end
    end
end