From 744269395b0f781832bcd495f5b0405fe21ab1b4 Mon Sep 17 00:00:00 2001
From: Tim Stadtmann <tim.stadtmann@rwth-aachen.de>
Date: Tue, 29 Nov 2016 15:46:05 +0100
Subject: [PATCH] Update format of device-docs

---
 source/Motor.m  | 353 +++++++++++++++++++++++++++---------------------
 source/Sensor.m |  87 +++++++++---
 2 files changed, 269 insertions(+), 171 deletions(-)

diff --git a/source/Motor.m b/source/Motor.m
index be281ae..c96276c 100755
--- a/source/Motor.m
+++ b/source/Motor.m
@@ -1,122 +1,176 @@
 classdef Motor < MaskedHandle & dynamicprops
-    % Motor High-level class to work with motors.
+    % High-level class to work with motors.
     %
     % This class is supposed to ease the use of the brick's motors. It is possible to set all
     % kinds of parameters, request the current status of the motor ports and of course send 
-    % commands to the brick to be executed on the respective port.
+    % commands to the brick to be executed on the respective port. 
     %
     % Notes:
     %  * You don't need to create instances of this class. The EV3-class automatically creates
     %    instances for each motor port, and you can work with them via the EV3-object. 
+    %  * The Motor-class represents motor ports, not individual motors!
     %
-    %
-    % Signature
-    %  Author: Tim Stadtmann
-    %  Date: 2016/05/19
-    %  Updated: 2016/08/15
+    % Attributes:
+    %    power (numeric in [-100, 100]): Power level of motor in percent. [WRITABLE]
+    %    speedRegulation (bool): Speed regulation turned on or off. When turned on, motor will 
+    %        try to 'hold' its speed at given power level, whatever the load. In this mode, the
+    %        highest possible speed depends on the load and mostly goes up to around 70-80 (at 
+    %        this point, the Brick internally input 100% power). When turned off, motor will 
+    %        constantly input the same power into the motor. The resulting speed will be 
+    %        somewhat lower, depending on the load. [WRITABLE]
+    %    smoothStart (numeric s. t. smoothStart+smoothStop < limitValue): Degrees/Time 
+    %        indicating how far/long the motor should smoothly start. Depending on limitMode, 
+    %        the input is interpreted either in degrees or milliseconds. The first 
+    %        {smoothStart}-milliseconds/degrees of limitValue the motor will slowly accelerate 
+    %        until reaching its defined speed. [WRITABLE]
+    %    smoothStop (numeric s. t. smoothStart+smoothStop < limitValue): Degrees/Time 
+    %        indicating how far/long the motor should smoothly stop. Depending on limitMode, the 
+    %        input is interpreted either in degrees or milliseconds. The last 
+    %        [smoothStop]-milliseconds/degrees of limitValue the motor will slowly slow down 
+    %        until it has stopped. [WRITABLE]
+    %    limitValue (numeric>=0): Degrees/Time indicating how far/long the motor should run.
+    %        Depending on limitMode, the input is interpreted either in degrees or 
+    %        milliseconds. [WRITABLE]
+    %    limitMode ('Tacho'|'Time'): Mode for motor limit. [WRITABLE]
+    %    brakeMode ('Brake'|'Coast'): Mode for braking. If 'Coast', the motor will (at 
+    %        tacholimit, if ~=0) coast to a stop. If 'Brake', the motor will stop immediately 
+    %        (at tacholimit, if ~=0) and hold the brake. [WRITABLE]
+    %    debug (bool): Debug turned on or off. In debug mode, everytime a command is passed to 
+    %        the sublayer ('communication layer'), there is feedback in the console about what 
+    %        command has been called. [WRITABLE]
+    %    isRunning (bool): True if motor is running. [READ-ONLY]
+    %    tachoCount (numeric): Current tacho count. [READ-ONLY]
+    %    currentSpeed (numeric): Current speed of motor. If speedRegulation=on this should equal power, 
+    %        otherwise it will probably be lower than that. [READ-ONLY]
+    %    type (DeviceType): Type of connected device if any. [READ-ONLY]
+    
     
     properties  % Standard properties to be set by user
-        %power -  [Writable] Power level of motor in percent (numeric in [-100, 100])
+        % power (numeric in [-100, 100]): Power level of motor in percent. [WRITABLE]
         power;
         
-        %speedRegulation  -  [Writable] Speed regulation turned on or off (0/1/off/on/'false'/'true')
-        % When turned on, motor will try to 'hold' its speed at given power level, whatever the
-        % load. In this mode, the highest possible speed depends on the load and mostly goes up
-        % to around 70-80 (at this point, the Brick internally input 100% power).
-        % When turned off, motor will constantly input the same power into the motor. The 
-        % resulting speed will be somewhat lower, depending on the load.
+        % speedRegulation (bool): Speed regulation turned on or off. When turned on, motor will 
+        %     try to 'hold' its speed at given power level, whatever the load. In this mode, the
+        %     highest possible speed depends on the load and mostly goes up to around 70-80 (at 
+        %     this point, the Brick internally input 100% power). When turned off, motor will 
+        %     constantly input the same power into the motor. The resulting speed will be 
+        %     somewhat lower, depending on the load. [WRITABLE]
         speedRegulation;
         
-        %smoothStart -  [Writable] Degrees/Time indicating how far/long the motor should smoothly start (numeric such that smoothStart+smoothStop < limitValue)
-        % Depending on limitMode, the input is interpreted either in degrees or milliseconds.
-        % The first [smoothStart]-milliseconds/degrees of limitValue the motor will slowly
-        % accelerate until reaching it's defined speed.
-        % See also MOTOR.LIMITMODE
+        % smoothStart (numeric s. t. smoothStart+smoothStop < limitValue): Degrees/Time 
+        %     indicating how far/long the motor should smoothly start. Depending on limitMode, 
+        %     the input is interpreted either in degrees or milliseconds. The first 
+        %     {smoothStart}-milliseconds/degrees of limitValue the motor will slowly accelerate 
+        %     until reaching its defined speed. [WRITABLE]
         smoothStart;
         
-        %smoothStop -  [Writable] Degrees/Time indicating how far/long the motor should smoothly stop (numeric such that smoothStart+smoothStop < limitValue) 
-        % Depending on limitMode, the input is interpreted either in degrees or milliseconds.
-        % The last [smoothStop]-milliseconds/degrees of limitValue the motor will slowly
-        % slow down until it has stopped.
-        % See also MOTOR.LIMITMODE
+        % smoothStop (numeric s. t. smoothStart+smoothStop < limitValue): Degrees/Time 
+        %     indicating how far/long the motor should smoothly stop. Depending on limitMode, the 
+        %     input is interpreted either in degrees or milliseconds. The last 
+        %     [smoothStop]-milliseconds/degrees of limitValue the motor will slowly slow down 
+        %     until it has stopped. [WRITABLE]
         smoothStop;
         
-        %limitValue -  [Writable] Degrees/Time indicating how far/long the motor should run (numeric>=0)
-        % Depending on limitMode, the input is interpreted either in degrees or milliseconds.
-        % See also MOTOR.LIMITMODE
+        % limitValue (numeric>=0): Degrees/Time indicating how far/long the motor should run.
+        %     Depending on limitMode, the input is interpreted either in degrees or 
+        %     milliseconds. [WRITABLE] 
+        % See also MOTOR.LIMITMODE 
         limitValue;  
         
-        %limitMode -  [Writable] Mode for motor limit ('Tacho'/'Time')
+        % limitMode ('Tacho'|'Time'): Mode for motor limit. [WRITABLE]
         % See also MOTOR.SMOOTHSTART, MOTOR.SMOOTHSTOP, MOTOR.LIMITMODE
         limitMode;
         
-        %brakeMode -  [Writable] Mode for braking ('Brake'/'Coast')
-        % If 'Coast', the motor will (at tacholimit, if ~=0) coast to a stop. If
-        % 'Brake', the motor will stop immediately (at tacholimit, if ~=0) and hold the brake.
+        % brakeMode ('Brake'|'Coast'): Mode for braking. If 'Coast', the motor will (at 
+        %     tacholimit, if ~=0) coast to a stop. If 'Brake', the motor will stop immediately 
+        %     (at tacholimit, if ~=0) and hold the brake. [WRITABLE]
         brakeMode;
         
-        %debug -  [Writable] Debug turned on or off (0/1/off/on/'false'/'true')
-        % In debug mode, everytime a command is passed to the sublayer ('communication layer'),
-        % there is feedback in the console about what command has been called
+        % debug (bool): Debug turned on or off. In debug mode, everytime a command is passed to 
+        %     the sublayer ('communication layer'), there is feedback in the console about what 
+        %     command has been called. [WRITABLE]
         debug;
     end
     
     properties (Dependent)  % Read-only parameters to be read directly from physical brick
-        %isRunning -  [Read-only] True if motor is running (i.e. speed > 0)
+        % isRunning (bool): True if motor is running. [READ-ONLY]
         isRunning; 
         
-        %tachoCount -  [Read-only] Current tacho count
+        % tachoCount (numeric): Current tacho count. [READ-ONLY]
         tachoCount;
         
-        %currentSpeed -  [Read-only] Current speed of motor
-        % If speedRegulation=on this should equal power, otherwise it will probably be lower
-        % than that.
+        % currentSpeed (numeric): Current speed of motor. If speedRegulation=on this should 
+        %     equal power, otherwise it will probably be lower than that. [READ-ONLY]
         % See also MOTOR.SPEEDREGULATION
         currentSpeed;
         
-        %type -  [Read-only] Type of connected device if any
-        % See also DEVICETYPE
+        % type (DeviceType): Type of connected device if any. [READ-ONLY]
         type;
     end
     
-    properties (Hidden, Access = 'private')  % Hidden properties for internal use only 
-        commInterface;  % Communication interface
+    properties (Hidden, Access = private)  % Hidden properties for internal use only 
+        % commInterface (CommunicationInterface): Commands are created and sent via the 
+        %     communication interface class.
+        commInterface; 
         
-        %% Hidden brick parameters
-        %port -  [Read-only] Motor port
-        % This is only the string representation of the motor port to work with.
-        % Internally, either MotorPort-, MotorBitfield- or MotorInput-member will be used.
+        % port (string): Motor port. This is only the string representation of the motor port 
+        %     to work with. Internally, either MotorPort-, MotorBitfield- or MotorInput-member 
+        %     will be used.
         port; 
         
-        % brakeMode is an actual parameter on the brick. To avoid inconsistencies with other
-        % modi and to prettify the output, a string representing it is saved. In order to avoid
-        % using string comparisons each time it is used, the corresponding value, that is going 
-        % to be sent, is saved (hidden from the user).
+        % brakeMode_ (BrakeMode): Byte value, corresponding to brakeMode, that will be sent to the brick
+        %     brakeMode is an actual parameter on the brick. To avoid inconsistencies with other
+        %     modi and to prettify the output, a string representing it is saved. In order to avoid
+        %     using string comparisons each time it is used, the corresponding value, that is going 
+        %     to be sent, is saved (hidden from the user).
+        % See also BRAKEMODE
         brakeMode_;
         
-        %% Flags
-        init = true;  % Indicates 'init-phase' (True as long as constructor is running)
-        connectedToBrick = false;  % Connection to physical Brick? 
-        state = MotorState();  % State consisting of several special Motor-flags
+        % init (bool): Indicates init-phase (i.e. constructor is running).
+        init = true;
+        
+        % connectedToBrick (bool): True if virtual brick is connected to physical brick.
+        connectedToBrick = false;
+        
+        % state (MotorState): State-struct consisting of several special Motor-flags
+        % See also MOTORSTATE
+        state = MotorState();
     end
     
-    properties (Hidden, Dependent, Access = 'private')  % Hidden, dependent properties for internal use only
-        portNo;  % Port number
-        portInput;  % Port number for input functions
+    properties (Hidden, Dependent, Access = private)  % Hidden, dependent properties for internal use only
+        % portNo (PortNo): Internal number of motor port.
+        %     * Port 'A': 0
+        %     * Port 'B': 1
+        %     * Port 'C': 2
+        %     * Port 'D': 3
+        % See also PORTNO
+        portNo;
         
-        isSynced;  % Is motor running in synced mode?
-        physicalMotorConnected;  % Physical motor connected to this port?
+        %portInput (PortInput): Internal number of motor port if accessed via input-opCodes 
+        % * Port 'A': 16
+        % * Port 'B': 17
+        % * Port 'C': 18
+        % * Port 'D': 19
+        % See also PORTINPUT
+        portInput;
         
-        internalTachoCount;  % Internal tachocount used for positioning the motor with tacholimit
+        %isSynced (bool): True if motor is running in synced mode
+        isSynced;
+        
+        %physicalMotorConnected (bool): True if physical motor is connected to this port
+        physicalMotorConnected;
+        
+        %internalTachoCount (numeric): internal tacho counter used for positioning the motor with a limit
+        internalTachoCount;
     end
     
     methods  % Standard methods
         %% Constructor
         function motor = Motor(varargin)
-            %Motor Sets properties of Motor-object and indicates end of init-phase when it's done.
+            %Motor Sets properties of Motor-object and indicates end of init-phase when it's done
             %
-            % Arguments
-            %  * varargin: see EV3::setProperties(ev3, varargin)
+            % Arguments:
+            %  * varargin: see setProperties(motor, varargin)
             %
             
             motor.setProperties(varargin{:});
@@ -125,9 +179,9 @@ classdef Motor < MaskedHandle & dynamicprops
         
         %% Brick functions
         function start(motor)
-            %start Starts the motor
+            % Starts the motor
             %
-            % Notes
+            % Notes:
             %  * Right now, alternatingly calling this function with and without tacho limit
             %    may lead to unexpected behaviour. For example, if you run the motor without
             %    a tacholimit for some time using Coast, then stop using Coast, and then try 
@@ -271,7 +325,7 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function stop(motor)
-            %stop Stops the motor
+            % Stops the motor
             
             if ~motor.connectedToBrick
                 error('Motor::stop: Motor-Object not connected to comm handle.');
@@ -293,7 +347,7 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function syncedStart(motor, syncMotor, varargin)
-            %syncedStart Starts this motor synchronized with another
+            % Starts this motor synchronized with another
             % This motor acts as a 'master', meaning that the synchronized control is done via
             % this one. When syncedStart is called, the master sets some of the slave's 
             % (syncMotor) properties to keep it consistent with the physical brick. So, for 
@@ -302,32 +356,33 @@ classdef Motor < MaskedHandle & dynamicprops
             % The following parameters will be affected on the slave: power, brakeMode,
             % limitValue, speedRegulation
             %
-            % Arguments
-            %  * syncMotor (the other motor object to sync with)
-            %  * 'turnRatio', numeric in [-200,200]
+            % Arguments:
+            %    syncMotor (Motor): the motor-object to sync with
+            %    turnRatio (numeric in [-200,200]): Description of turn_ratio (Excerpt of Firmware-comments, in c_output.c): 
+            %        "Turn ratio is how tight you turn and to what direction you turn. [OPTIONAL]
+            %            * 0 value is moving straight forward
+            %            * Negative values turn to the left
+            %            * Positive values turn to the right
+            %            * Value -100 stops the left motor
+            %            * Value +100 stops the right motor
+            %            * Values less than -100 makes the left motor run the opposite
+            %                  direction of the right motor (Spin)
+            %            * Values greater than +100 makes the right motor run the opposite
+            %                  direction of the left motor (Spin)" 
             %
-            % Notes
-            %  * Description of turn_ratio (Excerpt of Firmware-comments, in c_output.c): 
-            %    "Turn ratio is how tight you turn and to what direction you turn.
-            %     -> 0 value is moving straight forward
-            %     -> Negative values turn to the left
-            %     -> Positive values turn to the right
-            %     -> Value -100 stops the left motor
-            %     -> Value +100 stops the right motor
-            %     -> Values less than -100 makes the left motor run the opposite
-            %        direction of the right motor (Spin)
-            %     -> Values greater than +100 makes the right motor run the opposite
-            %        direction of the left motor (Spin)"
-            %  * This is right now a pretty 'heavy' function, as it tests if both motors are
-            %    connected AND aren't running, wasting four packets, so keep that in mind
+            % Notes:
+            %     * This is right now a pretty 'heavy' function, as it tests if both motors are
+            %       connected AND aren't running, wasting four packets, keep that in mind
+            %     * It is necessary to call syncedStop() and not stop() for stopping the motors 
+            %       (otherwise the sync-state cannot be exited correctly)
             %
-            % Example
-            %   b = EV3(); b.connect('usb');
-            %   m = b.motorA;
-            %   m.power = 50;
-            %   m.syncedStart(b.motorB);
-            %   % Do stuff
-            %   m.syncedStop();
+            % Example:
+            %     b = EV3(); b.connect('usb');
+            %     m = b.motorA;
+            %     m.power = 50;
+            %     m.syncedStart(b.motorB);
+            %     % Do stuff
+            %     m.syncedStop();
             %
             
             turnRatio = 0;
@@ -420,7 +475,7 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function syncedStop(motor)
-            %syncedStop Stops both motors previously started with syncedStart
+            % Stops both motors previously started with syncedStart.
             % Obviously, if motors have not been started synchronized, this throws an error.
             %
             % See also MOTOR.SYNCEDSTART
@@ -471,7 +526,7 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function waitFor(motor)
-            %waitFor Stops execution of program as long as motor is running
+            % Stops execution of program as long as motor is running
             %
             % Notes:
             %  * (OLD)This one's a bit tricky. The opCode OutputReady makes the brick stop sending
@@ -529,7 +584,7 @@ classdef Motor < MaskedHandle & dynamicprops
         end
 		
         function internalReset(motor)
-            % internalReset Resets internal tacho count
+            % Resets internal tacho count
             % Use this if motor behaves weird (i.e. not starting at all, or not correctly
             % running to limitValue)
             %
@@ -559,6 +614,8 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function resetTachoCount(motor)
+            % Resets tachocount
+            
             if ~motor.connectedToBrick
                 error('Motor::resetTachoCount: Motor-Object not connected to comm handle.');
             elseif ~motor.physicalMotorConnected
@@ -575,10 +632,10 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function setBrake(motor, brake)
-            %setBrake Apply or release brake of motor
+            % Apply or release brake of motor
             %
-            % Arguments
-            %  * brake (0/1/off/on/'false'/'true')
+            % Arguments:
+            %     brake (bool): If true, brake will be pulled
             
             if ~isBool(brake)
                 error('Motor::setBrake: Given parameter is not a valid bool.');
@@ -736,28 +793,29 @@ classdef Motor < MaskedHandle & dynamicprops
         end
         
         function setProperties(motor, varargin)
-            %setProperties Sets multiple Motor properties at once using MATLAB's inputParser.
+            % Sets multiple Motor properties at once using MATLAB's inputParser.
             %
-            % Arguments
-            %  * 'debug', bool
-            %  * 'smoothStart', numeric in [0, limitValue] 
-            %  * 'smoothStop', numeric in [0, limitValue] 
-            %  * 'speedRegulation', bool
-            %  * 'brakeMode', 'Coast'/'Brake'
-            %  * 'limitMode', 'Time'/'Tacho'
-            %  * 'limitValue', numeric > 0
-            %  * 'power', numeric in  [-100,100]
-            %  * 'batteryMode', 'Voltage'/'Percentage'
+            % Arguments:
+            %     debug (bool)
+            %     smoothStart (numeric in [0, limitValue]) 
+            %     smoothStop (numeric in [0, limitValue])
+            %     speedRegulation (bool)
+            %     brakeMode ('Coast'|'Brake')
+            %     limitMode ('Time'|'Tacho')
+            %     limitValue (numeric > 0)
+            %     power (numeric in [-100,100])
+            %     batteryMode ('Voltage'|'Percentage')
             %
-            % Example
-            %  b = EV3(); 
-            %  b.connect('bt', 'serPort', '/dev/rfcomm0');
-            %  b.motorA.setProperties('debug', 'on', 'power', 50, 'limitValue', 720, 'speedRegulation', 'on');
-            %  % Instead of: b.motorA.debug = 'on'; 
-            %  %             b.motorA.power = 50;
-            %  %             b.motorA.limitValue = 720;
-            %  %             b.motorA.speedRegulation = 'on';
+            % Example:
+            %     b = EV3(); 
+            %     b.connect('bt', 'serPort', '/dev/rfcomm0');
+            %     b.motorA.setProperties('debug', 'on', 'power', 50, 'limitValue', 720, 'speedRegulation', 'on');
+            %     % Instead of: b.motorA.debug = 'on'; 
+            %     %             b.motorA.power = 50;
+            %     %             b.motorA.limitValue = 720;
+            %     %             b.motorA.speedRegulation = 'on';
             %
+            
             p = inputParser();
             p.KeepUnmatched = 1;
             
@@ -894,17 +952,20 @@ classdef Motor < MaskedHandle & dynamicprops
         end
     end
     
-    methods (Access = 'private')  % Private functions that directly interact with commLayer
+    methods (Access = private)  % Private functions that directly interact with commLayer
         function success = setPower(motor, power)
             %setPower Sets given power value on the physical Brick.
             %
             % Notes:
-            %  * If motor is running with a limit, calling outputSpeed/outputPower, to
-            %    manually set the power on the physical brick, would stop the motor and adopt
-            %    the new power value on next start. To avoid this, the motor could be 'restarted'
-            %    with the new value instantly. However, this sometimes leads to unexpected behaviour.
-            %    Therefore, if motor is running with a limit, setPower aborts with a warning.
-            %
+            %     * If motor is running with a limit, calling outputSpeed/outputPower, to
+            %       manually set the power on the physical brick, would stop the motor and adopt
+            %       the new power value on next start. To avoid this, the motor could be 'restarted'
+            %       with the new value instantly. However, this sometimes leads to unexpected behaviour.
+            %       Therefore, if motor is running with a limit, setPower aborts with a warning.
+            % 
+            % Returns:
+            %     success (bool): if true, power has successfully been set
+            
             if ~motor.connectedToBrick || ~motor.physicalMotorConnected
 %                 error('Motor::getTachoCount: Motor-Object not connected to comm handle.');
                 success = false;
@@ -1012,9 +1073,9 @@ classdef Motor < MaskedHandle & dynamicprops
             %getMotorStatus Returns whether motor is busy or not. 
             %
             % Notes:
-            %  * This *mostly* works. Sometimes this falsely returns 0 if isRunning() gets 
-            %    called immediately after starting the motor.
-            %  * Busy is set to true if motor is running with tacholimit or synced
+            %     * This *mostly* works. Sometimes this falsely returns 0 if isRunning() gets 
+            %       called immediately after starting the motor.
+            %     * Busy is set to true if motor is running with tacholimit or synced
             %
             
             if ~motor.connectedToBrick
@@ -1077,7 +1138,7 @@ classdef Motor < MaskedHandle & dynamicprops
         end
     end
     
-    methods (Access = 'private', Hidden = true)
+    methods (Access = private, Hidden = true)
         function saveState(motor)
             %saveState Saves current motor state in dynamic property
             
@@ -1118,22 +1179,18 @@ classdef Motor < MaskedHandle & dynamicprops
         end
     end
     
-    methods (Access = {?EV3})
+    methods (Access = ?EV3)
         function connect(motor,commInterface)
             %connect Connects Motor-object to physical brick.
             %
             % Notes:
-            %  * This method actually only saves a handle to a Brick-object which has been
-            %    created beforehand (probably by an EV3-object).
-            %
-            % Arguments
-            %  * commInterface: instance of Brick-class
+            %     * This method is automatically called by EV3.connect()
+            %     * This method actually only saves a handle to a Brick-object which has been
+            %       created beforehand (probably by an EV3-object). 
             %
-            % Examples (for use without EV3-class)
-            %  m = Motor();
-            %  brickInterface = Brick('usb');
-            %  m.connect(brickInterface);
-            %  % do stuff
+            % Arguments:
+            %     commInterface (CommunicationInterface): Handle to a communication interface
+            %         device
             %
             
             if motor.connectedToBrick
@@ -1162,23 +1219,17 @@ classdef Motor < MaskedHandle & dynamicprops
             %disconnect Disconnects Motor-object from physical brick.
             %
             % Notes:
-            %  * As with Motor::connect, this method actually only sets the property, in which 
-            %    the handle to the Brick-class was stored, to 0.
+            %     * This method is automatically called by EV3.disconnect()
+            %     * This method actually only sets the property, in which 
+            %       the handle to the CommInterface-class was stored, to 0. 
             %
-            % Examples (for use without EV3-class)
-            %  m = Motor();
-            %  brickInterface = Brick('usb');
-            %  m.connect(brickInterface);
-            %  % do stuff
-            %  m.disconnect();
-            %  brickInterface.delete(); % Actual disconnecting!!!
-            %   
-            
-            motor.commInterface = 0; % Note: actual deleting is done in EV3::disconnect.
+            
+            motor.commInterface = 0;
             motor.connectedToBrick = false;
         end
         
         function resetPhysicalMotor(motor)
+            %
             if ~motor.connectedToBrick || ~motor.physicalMotorConnected
                 return; 
             end
diff --git a/source/Sensor.m b/source/Sensor.m
index d275d50..59132ec 100755
--- a/source/Sensor.m
+++ b/source/Sensor.m
@@ -1,10 +1,57 @@
 classdef Sensor < MaskedHandle
-    % Sensor High-level class to work with sensors.
+    % High-level class to work with sensors.
+    % 
+    % The Sensor-class facilitates the communication with sensors. This mainly consists of 
+    % reading the sensor's type and current value in a specified mode.
     %
-    % Signature
-    %  Author: Tim Stadtmann
-    %  Date: 2016/05/20
-    %  Updated: 2016/08/15
+    % Notes:
+    %     * You don't need to create instances of this class. The EV3-class automatically creates
+    %       instances for each sensor port, and you can work with them via the EV3-object. 
+    %     * The Sensor-class represents sensor ports, not individual sensors!
+    %
+    % Attributes:
+    %    mode (DeviceMode.{Type}): Sensor mode in which the value will be read. By default, 
+    %        mode is set to DeviceMode.Default.Undefined. Once a physical sensor is connected
+    %        to the port *and* the physical Brick is connected to the EV3-object, the allowed 
+    %        mode and the default mode for a Sensor-object are the following (depending on the
+    %        sensor type): [WRITABLE]
+    %
+    %        * Touch-Sensor: 
+    %            * DeviceMode.Touch.Pushed [Default]
+    %            * DeviceMode.Touch.Bumps
+    %        * Ultrasonic-Sensor: 
+    %            * DeviceMode.UltraSonic.DistCM [Default]
+    %            * DeviceMode.UltraSonic.DistIn
+    %            * DeviceMode.UltraSonic.Listen
+    %        * Color-Sensor: 
+    %            * DeviceMode.Color.Reflect [Default]
+    %            * DeviceMode.Color.Ambient
+    %            * DeviceMode.Color.Col
+    %        * Gyro-Sensor: 
+    %            * DeviceMode.Gyro.Angular [Default]
+    %            * DeviceMode.Gyro.Rate
+    %    debug (bool): Debug turned on or off. In debug mode, everytime a command is passed to 
+    %        the sublayer ('communication layer'), there is feedback in the console about what 
+    %        command has been called. [WRITABLE]
+    %    value (numeric): Value read from hysical sensor. What the value represents depends on
+    %        sensor.mode.
+    %    type (DeviceType): Type of physical sensor connected to the port. Possible types are: [READ-ONLY]
+    %        * DeviceType.NXTTouch
+    %        * DeviceType.NXTLight
+    %        * DeviceType.NXTSound
+    %        * DeviceType.NXTColor
+    %        * DeviceType.NXTUltraSonic
+    %        * DeviceType.NXTTemperature
+    %        * DeviceType.LargeMotor
+    %        * DeviceType.MediumMotor
+    %        * DeviceType.Touch 
+    %        * DeviceType.Color 
+    %        * DeviceType.UltraSonic 
+    %        * DeviceType.Gyro 
+    %        * DeviceType.InfraRed 
+    %        * DeviceType.Unknown
+    %        * DeviceType.None 
+    %        * DeviceType.Error
     
     properties  % Standard properties to be set by user
         %mode -  [Writable] Sensor mode in which the value will be read (DeviceMode.[...])
@@ -42,7 +89,7 @@ classdef Sensor < MaskedHandle
         type; 
     end
 
-    properties (Hidden, Access = 'private')  % Hidden properties for internal use only 
+    properties (Hidden, Access = private)  % Hidden properties for internal use only 
         commInterface = 0;  % Communication interface
         
         %port -  [Read-only] Sensor port ('1'/'2'/'3'/'4')
@@ -56,7 +103,7 @@ classdef Sensor < MaskedHandle
         init = true;  % Indicates 'init-phase' (True as long as constructor is running)
     end   
     
-    properties (Hidden, Dependent, Access = 'private')
+    properties (Hidden, Dependent, Access = private)
         physicalSensorConnected;  % Physical sensor connected to this port?
     end
     
@@ -70,6 +117,7 @@ classdef Sensor < MaskedHandle
         %% Brick functions
         function reset(sensor)
             %reset Resets value on sensor
+            %
 			% Note: This clears ALL the sensors right now, no other Op-Code available... :(
             if ~sensor.connectedToBrick
                 error('Sensor::reset: Sensor-Object not connected to comm handle.');
@@ -139,16 +187,16 @@ classdef Sensor < MaskedHandle
         function setProperties(sensor, varargin)
             %setProperties Sets multiple Sensor properties at once using MATLAB's inputParser.
             %
-            % Arguments
-            %  * 'debug', 0/1/'on'/'off'/'true'/'false'
-            %  * 'mode', DeviceMode.[...]
+            % Arguments:
+            %	 * 'debug', 0/1/'on'/'off'/'true'/'false'
+            %    * 'mode', DeviceMode.[...]
             %
-            % Example
-            %  b = EV3(); 
-            %  b.connect('bt', 'serPort', '/dev/rfcomm0');
-            %  b.sensor1.setProperties('debug', 'on', 'mode', DeviceMode.Color.Ambient);
-            %  % Instead of: b.sensor1.debug = 'on'; 
-            %  %             b.sensor1.mode = DeviceMode.Color.Ambient;
+            % Example:
+            %      b = EV3(); 
+            %      b.connect('bt', 'serPort', '/dev/rfcomm0');
+            %      b.sensor1.setProperties('debug', 'on', 'mode', DeviceMode.Color.Ambient);
+            %      % Instead of: b.sensor1.debug = 'on'; 
+            %      %             b.sensor1.mode = DeviceMode.Color.Ambient;
             %
             
             p = inputParser();
@@ -221,7 +269,7 @@ classdef Sensor < MaskedHandle
         end
     end
     
-    methods (Access = 'private')  % Private brick functions that are wrapped by dependent params
+    methods (Access = private)  % Private brick functions that are wrapped by dependent params
         function setMode(sensor, mode)
             if ~sensor.connectedToBrick
                 error('Sensor::getTachoCount: Sensor-Object not connected to comm handle.');
@@ -242,7 +290,7 @@ classdef Sensor < MaskedHandle
         function val = getValue(sensor, varargin)
             %getValue Reads value from sensor
             % 
-            % Notes
+            % Notes:
             %  * After changing the mode, sensors initially always send an invalid value. In
             %    this case, the inputReadSI-opCode is sent again to get the correct value.
             %
@@ -324,7 +372,7 @@ classdef Sensor < MaskedHandle
         
     end
     
-    methods (Access = {?EV3})
+    methods (Access = ?EV3)
         function connect(sensor,commInterface)
             %connect Connects Sensor-object to physical brick
             
@@ -368,4 +416,3 @@ classdef Sensor < MaskedHandle
         end
     end
 end
-
-- 
GitLab