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

    classdef BatteryServer < robotics.ros.Message
    %BatteryServer MATLAB implementation of pr2_msgs/BatteryServer
    %   This class was automatically generated by
    %   robotics.ros.msg.internal.gen.MessageClassGenerator.
    
    %   Copyright 2014-2016 The MathWorks, Inc.
    
    %#ok<*INUSD>
    
    properties (Constant)
        MessageType = 'pr2_msgs/BatteryServer' % The ROS message type
    end
    
    properties (Constant, Hidden)
        MD5Checksum = '4f6d6e54c9581beb1df7ea408c0727be' % The MD5 Checksum of the message definition
    end
    
    properties (Access = protected)
        JavaMessage % The Java message object
    end
    
    properties (Constant)
        MAXBATCOUNT = uint32(4)
        MAXBATREG = uint32(48)
    end
    
    properties (Constant, Access = protected)
        Pr2MsgsBatteryStateClass = robotics.ros.msg.internal.MessageFactory.getClassForType('pr2_msgs/BatteryState') % Dispatch to MATLAB class for message type pr2_msgs/BatteryState
        StdMsgsHeaderClass = robotics.ros.msg.internal.MessageFactory.getClassForType('std_msgs/Header') % Dispatch to MATLAB class for message type std_msgs/Header
    end
    
    properties (Dependent)
        Header
        Id
        LastTimeSystem
        TimeLeft
        AverageCharge
        Message
        LastTimeController
        Present
        Charging
        Discharging
        Reserved
        PowerPresent
        PowerNG
        Inhibited
        Battery
    end
    
    properties (Access = protected)
        Cache = struct('Header', [], 'Battery', []) % The cache for fast data access
    end
    
    properties (Constant, Hidden)
        PropertyList = {'AverageCharge', 'Battery', 'Charging', 'Discharging', 'Header', 'Id', 'Inhibited', 'LastTimeController', 'LastTimeSystem', 'Message', 'PowerNG', 'PowerPresent', 'Present', 'Reserved', 'TimeLeft'} % List of non-constant message properties
        ROSPropertyList = {'averageCharge', 'battery', 'charging', 'discharging', 'header', 'id', 'inhibited', 'lastTimeController', 'lastTimeSystem', 'message', 'powerNG', 'powerPresent', 'present', 'reserved', 'timeLeft'} % List of non-constant ROS message properties
    end
    
    methods
        function obj = BatteryServer(msg)
            %BatteryServer Construct the message object BatteryServer
            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'}, 'BatteryServer', 'Header');
            
            obj.JavaMessage.setHeader(header.getJavaObject);
            
            % Update cache if necessary
            if ~isempty(obj.Cache.Header)
                obj.Cache.Header.setJavaObject(header.getJavaObject);
            end
        end
        
        function id = get.Id(obj)
            %get.Id Get the value for property Id
            id = int32(obj.JavaMessage.getId);
        end
        
        function set.Id(obj, id)
            %set.Id Set the value for property Id
            validateattributes(id, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'Id');
            
            obj.JavaMessage.setId(id);
        end
        
        function lasttimesystem = get.LastTimeSystem(obj)
            %get.LastTimeSystem Get the value for property LastTimeSystem
            lasttimesystem = int32(obj.JavaMessage.getLastTimeSystem);
        end
        
        function set.LastTimeSystem(obj, lasttimesystem)
            %set.LastTimeSystem Set the value for property LastTimeSystem
            validateattributes(lasttimesystem, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'LastTimeSystem');
            
            obj.JavaMessage.setLastTimeSystem(lasttimesystem);
        end
        
        function timeleft = get.TimeLeft(obj)
            %get.TimeLeft Get the value for property TimeLeft
            timeleft = typecast(int16(obj.JavaMessage.getTimeLeft), 'uint16');
        end
        
        function set.TimeLeft(obj, timeleft)
            %set.TimeLeft Set the value for property TimeLeft
            validateattributes(timeleft, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'TimeLeft');
            
            obj.JavaMessage.setTimeLeft(timeleft);
        end
        
        function averagecharge = get.AverageCharge(obj)
            %get.AverageCharge Get the value for property AverageCharge
            averagecharge = typecast(int16(obj.JavaMessage.getAverageCharge), 'uint16');
        end
        
        function set.AverageCharge(obj, averagecharge)
            %set.AverageCharge Set the value for property AverageCharge
            validateattributes(averagecharge, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'AverageCharge');
            
            obj.JavaMessage.setAverageCharge(averagecharge);
        end
        
        function message = get.Message(obj)
            %get.Message Get the value for property Message
            message = char(obj.JavaMessage.getMessage);
        end
        
        function set.Message(obj, message)
            %set.Message Set the value for property Message
            validateattributes(message, {'char'}, {}, 'BatteryServer', 'Message');
            
            obj.JavaMessage.setMessage(message);
        end
        
        function lasttimecontroller = get.LastTimeController(obj)
            %get.LastTimeController Get the value for property LastTimeController
            lasttimecontroller = int32(obj.JavaMessage.getLastTimeController);
        end
        
        function set.LastTimeController(obj, lasttimecontroller)
            %set.LastTimeController Set the value for property LastTimeController
            validateattributes(lasttimecontroller, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'LastTimeController');
            
            obj.JavaMessage.setLastTimeController(lasttimecontroller);
        end
        
        function present = get.Present(obj)
            %get.Present Get the value for property Present
            present = typecast(int16(obj.JavaMessage.getPresent), 'uint16');
        end
        
        function set.Present(obj, present)
            %set.Present Set the value for property Present
            validateattributes(present, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'Present');
            
            obj.JavaMessage.setPresent(present);
        end
        
        function charging = get.Charging(obj)
            %get.Charging Get the value for property Charging
            charging = typecast(int16(obj.JavaMessage.getCharging), 'uint16');
        end
        
        function set.Charging(obj, charging)
            %set.Charging Set the value for property Charging
            validateattributes(charging, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'Charging');
            
            obj.JavaMessage.setCharging(charging);
        end
        
        function discharging = get.Discharging(obj)
            %get.Discharging Get the value for property Discharging
            discharging = typecast(int16(obj.JavaMessage.getDischarging), 'uint16');
        end
        
        function set.Discharging(obj, discharging)
            %set.Discharging Set the value for property Discharging
            validateattributes(discharging, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'Discharging');
            
            obj.JavaMessage.setDischarging(discharging);
        end
        
        function reserved = get.Reserved(obj)
            %get.Reserved Get the value for property Reserved
            reserved = typecast(int16(obj.JavaMessage.getReserved), 'uint16');
        end
        
        function set.Reserved(obj, reserved)
            %set.Reserved Set the value for property Reserved
            validateattributes(reserved, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'Reserved');
            
            obj.JavaMessage.setReserved(reserved);
        end
        
        function powerpresent = get.PowerPresent(obj)
            %get.PowerPresent Get the value for property PowerPresent
            powerpresent = typecast(int16(obj.JavaMessage.getPowerPresent), 'uint16');
        end
        
        function set.PowerPresent(obj, powerpresent)
            %set.PowerPresent Set the value for property PowerPresent
            validateattributes(powerpresent, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'PowerPresent');
            
            obj.JavaMessage.setPowerPresent(powerpresent);
        end
        
        function powerng = get.PowerNG(obj)
            %get.PowerNG Get the value for property PowerNG
            powerng = typecast(int16(obj.JavaMessage.getPowerNG), 'uint16');
        end
        
        function set.PowerNG(obj, powerng)
            %set.PowerNG Set the value for property PowerNG
            validateattributes(powerng, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'PowerNG');
            
            obj.JavaMessage.setPowerNG(powerng);
        end
        
        function inhibited = get.Inhibited(obj)
            %get.Inhibited Get the value for property Inhibited
            inhibited = typecast(int16(obj.JavaMessage.getInhibited), 'uint16');
        end
        
        function set.Inhibited(obj, inhibited)
            %set.Inhibited Set the value for property Inhibited
            validateattributes(inhibited, {'numeric'}, {'nonempty', 'scalar'}, 'BatteryServer', 'Inhibited');
            
            obj.JavaMessage.setInhibited(inhibited);
        end
        
        function battery = get.Battery(obj)
            %get.Battery Get the value for property Battery
            if isempty(obj.Cache.Battery)
                javaArray = obj.JavaMessage.getBattery;
                array = obj.readJavaArray(javaArray, obj.Pr2MsgsBatteryStateClass);
                obj.Cache.Battery = feval(obj.Pr2MsgsBatteryStateClass, array);
            end
            battery = obj.Cache.Battery;
        end
        
        function set.Battery(obj, battery)
            %set.Battery Set the value for property Battery
            if ~isvector(battery) && isempty(battery)
                % Allow empty [] input
                battery = feval([obj.Pr2MsgsBatteryStateClass '.empty'], 0, 1);
            end
            
            validateattributes(battery, {obj.Pr2MsgsBatteryStateClass}, {'vector'}, 'BatteryServer', 'Battery');
            
            javaArray = obj.JavaMessage.getBattery;
            array = obj.writeJavaArray(battery, javaArray, obj.Pr2MsgsBatteryStateClass);
            obj.JavaMessage.setBattery(array);
            
            % Update cache if necessary
            if ~isempty(obj.Cache.Battery)
                obj.Cache.Battery = [];
                obj.Cache.Battery = obj.Battery;
            end
        end
    end
    
    methods (Access = protected)
        function resetCache(obj)
            %resetCache Resets any cached properties
            obj.Cache.Header = [];
            obj.Cache.Battery = [];
        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.Id = obj.Id;
            cpObj.LastTimeSystem = obj.LastTimeSystem;
            cpObj.TimeLeft = obj.TimeLeft;
            cpObj.AverageCharge = obj.AverageCharge;
            cpObj.Message = obj.Message;
            cpObj.LastTimeController = obj.LastTimeController;
            cpObj.Present = obj.Present;
            cpObj.Charging = obj.Charging;
            cpObj.Discharging = obj.Discharging;
            cpObj.Reserved = obj.Reserved;
            cpObj.PowerPresent = obj.PowerPresent;
            cpObj.PowerNG = obj.PowerNG;
            cpObj.Inhibited = obj.Inhibited;
            
            % Recursively copy compound properties
            cpObj.Header = copy(obj.Header);
            cpObj.Battery = copy(obj.Battery);
        end
        
        function reload(obj, strObj)
            %reload Called by loadobj to assign properties
            obj.Id = strObj.Id;
            obj.LastTimeSystem = strObj.LastTimeSystem;
            obj.TimeLeft = strObj.TimeLeft;
            obj.AverageCharge = strObj.AverageCharge;
            obj.Message = strObj.Message;
            obj.LastTimeController = strObj.LastTimeController;
            obj.Present = strObj.Present;
            obj.Charging = strObj.Charging;
            obj.Discharging = strObj.Discharging;
            obj.Reserved = strObj.Reserved;
            obj.PowerPresent = strObj.PowerPresent;
            obj.PowerNG = strObj.PowerNG;
            obj.Inhibited = strObj.Inhibited;
            obj.Header = feval([obj.StdMsgsHeaderClass '.loadobj'], strObj.Header);
            BatteryCell = arrayfun(@(x) feval([obj.Pr2MsgsBatteryStateClass '.loadobj'], x), strObj.Battery, 'UniformOutput', false);
            obj.Battery = vertcat(BatteryCell{:});
        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.Id = obj.Id;
            strObj.LastTimeSystem = obj.LastTimeSystem;
            strObj.TimeLeft = obj.TimeLeft;
            strObj.AverageCharge = obj.AverageCharge;
            strObj.Message = obj.Message;
            strObj.LastTimeController = obj.LastTimeController;
            strObj.Present = obj.Present;
            strObj.Charging = obj.Charging;
            strObj.Discharging = obj.Discharging;
            strObj.Reserved = obj.Reserved;
            strObj.PowerPresent = obj.PowerPresent;
            strObj.PowerNG = obj.PowerNG;
            strObj.Inhibited = obj.Inhibited;
            strObj.Header = saveobj(obj.Header);
            strObj.Battery = arrayfun(@(x) saveobj(x), obj.Battery);
        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.pr2_msgs.BatteryServer.empty(0,1);
                return
            end
            
            % Create an empty message object
            obj = robotics.ros.msggen.pr2_msgs.BatteryServer;
            obj.reload(strObj);
        end
    end
end