follow wall 1

Dependencies:   mbed

Committer:
khaledelmadawi
Date:
Tue Apr 08 13:23:06 2014 +0000
Revision:
0:b703833f6795
follow wall 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaledelmadawi 0:b703833f6795 1 #ifndef MBED_SpaceSsensor_H
khaledelmadawi 0:b703833f6795 2 #define MBED_SpaceSsensor_H
khaledelmadawi 0:b703833f6795 3 //#endif
khaledelmadawi 0:b703833f6795 4 #include "mbed.h"
khaledelmadawi 0:b703833f6795 5 #include "iostream"
khaledelmadawi 0:b703833f6795 6 #include "math.h"
khaledelmadawi 0:b703833f6795 7 using namespace std;
khaledelmadawi 0:b703833f6795 8
khaledelmadawi 0:b703833f6795 9 class SpaceSensor {
khaledelmadawi 0:b703833f6795 10 public:
khaledelmadawi 0:b703833f6795 11 SpaceSensor(PinName p_tx, PinName p_rx);
khaledelmadawi 0:b703833f6795 12 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 13 /*4.3.1 Commands for Reading Filtered Sensor Data
khaledelmadawi 0:b703833f6795 14 These commands return sensor data which has been filtered using a Kalman filter. None of these commands take any
khaledelmadawi 0:b703833f6795 15 parameters, they only return data.
khaledelmadawi 0:b703833f6795 16 */
khaledelmadawi 0:b703833f6795 17 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 18 void ReadfilteredtaredQuaternion(float *Quaternion);
khaledelmadawi 0:b703833f6795 19 void ReadfilteredtaredEulerAngles(float *EulerAngles);
khaledelmadawi 0:b703833f6795 20 void ReadfilteredtaredRotationMatrix(float *RotationMatrix);
khaledelmadawi 0:b703833f6795 21 void ReadfilteredtaredAxisAngle(float *Axis,float *Angle);
khaledelmadawi 0:b703833f6795 22 void ReadfilteredtaredTwoVector(float *Forward,float *Down);
khaledelmadawi 0:b703833f6795 23
khaledelmadawi 0:b703833f6795 24 void Readfilteredgyrorates(float *Quaternion);
khaledelmadawi 0:b703833f6795 25
khaledelmadawi 0:b703833f6795 26 void ReadfiltereduntaredQuaternion(float *Quaternion);
khaledelmadawi 0:b703833f6795 27 void ReadfiltereduntaredEulerAngles(float *EulerAngles);
khaledelmadawi 0:b703833f6795 28 void ReadfiltereduntaredRotationMatrix(float *RotationMatrix);
khaledelmadawi 0:b703833f6795 29 void ReadfiltereduntaredAxisAngle(float *Axis,float *Angle);
khaledelmadawi 0:b703833f6795 30 void ReadfiltereduntaredTwoVector(float *Forward,float *Down);
khaledelmadawi 0:b703833f6795 31
khaledelmadawi 0:b703833f6795 32 void ReadfilteredtaredForwardandDownVectors(float *Forward,float *Down);
khaledelmadawi 0:b703833f6795 33 void ReadfilteredNorthEarthVectors(float *North,float *Earth);
khaledelmadawi 0:b703833f6795 34 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 35 /*4.3.2 Commands for Interfacing with Electronic Systems*/
khaledelmadawi 0:b703833f6795 36 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 37 void Setinterrupttype(int mode);
khaledelmadawi 0:b703833f6795 38 void Readinterrupttype(int *interrupttype);
khaledelmadawi 0:b703833f6795 39 void Readinterruptstatus(int *interruptstatus);
khaledelmadawi 0:b703833f6795 40 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 41 /*4.3.3 Commands for Reading Normalized Sensor Data
khaledelmadawi 0:b703833f6795 42 These commands return sensor data which has been converted from a raw form. In the case of the normalized
khaledelmadawi 0:b703833f6795 43 accelerometer and compass, the data returned are unit vectors, and as such, have no magnitude data associated with
khaledelmadawi 0:b703833f6795 44 them. For data that represents real world quantities, both the unnormalized accelerometer command and unnormalized
khaledelmadawi 0:b703833f6795 45 compass command return data in units of g and gauss respectively. Normalized gyro data is returned in radians/sec.
khaledelmadawi 0:b703833f6795 46 */
khaledelmadawi 0:b703833f6795 47 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 48 void Readall(float *gyro,float *accelerometer,float *compass);
khaledelmadawi 0:b703833f6795 49 void Readgyros(float *gyro);
khaledelmadawi 0:b703833f6795 50 void Readaccelerometer(float *accelerometer);
khaledelmadawi 0:b703833f6795 51 void Readcompass(float *compass);
khaledelmadawi 0:b703833f6795 52 void ReadtemperatureC(float *temp);
khaledelmadawi 0:b703833f6795 53 void ReadtemperatureF(float *temp);
khaledelmadawi 0:b703833f6795 54 void Readconfidencefactor(float *confidencefactor);
khaledelmadawi 0:b703833f6795 55 void Readaccelerometerunnormalized(float *accelunnormalized);
khaledelmadawi 0:b703833f6795 56 void Readcompassunnormalized(float *compassunnormalized);
khaledelmadawi 0:b703833f6795 57 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 58 /*4.3.4 Commands for Reading Raw Sensor Data
khaledelmadawi 0:b703833f6795 59 These commands return sensor data just as it was when it was read from each sensor. None of these commands take any
khaledelmadawi 0:b703833f6795 60 parameters, they only return data.
khaledelmadawi 0:b703833f6795 61 */
khaledelmadawi 0:b703833f6795 62 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 63 void Readallraw(float *gyro,float *accelerometer,float *compass);
khaledelmadawi 0:b703833f6795 64 void Readgyroraw(float *gyro);
khaledelmadawi 0:b703833f6795 65 void Readaccelerometerraw(float *accelerometer);
khaledelmadawi 0:b703833f6795 66 void Readcompassraw(float *compass);
khaledelmadawi 0:b703833f6795 67 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 68 /*4.3.5 Commands for Setting Filter Parameters
khaledelmadawi 0:b703833f6795 69 These commands allow the configuration of parameters associated with the Kalman filter. Most of these commands
khaledelmadawi 0:b703833f6795 70 take parameters, none return any data.
khaledelmadawi 0:b703833f6795 71 */
khaledelmadawi 0:b703833f6795 72 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 73 void Tarewithcurrentorientation();
khaledelmadawi 0:b703833f6795 74 void Tarewithquaternion(float Quaternion[4]);
khaledelmadawi 0:b703833f6795 75 void Tarewithrotationmatrix(float RotationMatrix[9]);
khaledelmadawi 0:b703833f6795 76 void SetStaticRhoModeAccelerometer(float rho);
khaledelmadawi 0:b703833f6795 77 void SetConfidenceRhoModeAccelerometer(float min,float max);
khaledelmadawi 0:b703833f6795 78 void SetStaticRhoModeCompass(float rho);
khaledelmadawi 0:b703833f6795 79 void SetConfidenceRhoModeCompass(float min, float max);
khaledelmadawi 0:b703833f6795 80 void SetDesiredUpdateRate(int t);
khaledelmadawi 0:b703833f6795 81 void SetMultiReferenceVectorsWithCurrentOrientation();
khaledelmadawi 0:b703833f6795 82 void SetReferenceVectorMode(int mode);
khaledelmadawi 0:b703833f6795 83 void SetOversampleRate(int rate);
khaledelmadawi 0:b703833f6795 84 void EnableDisablegyros(int mode);
khaledelmadawi 0:b703833f6795 85 void EnableDisableAccelerometer(int mode);
khaledelmadawi 0:b703833f6795 86 void EnableDisableCompass(int mode);
khaledelmadawi 0:b703833f6795 87 void ResetMultiReferenceVectorsToZero();
khaledelmadawi 0:b703833f6795 88 void SetMultiReferenceResolution(int mode);
khaledelmadawi 0:b703833f6795 89 void SetCompassMultiReferenceVector(int Index,float Vector[3]);
khaledelmadawi 0:b703833f6795 90 void SetCompassMultiReferenceCheckVector(int Index,float Vector[3]);
khaledelmadawi 0:b703833f6795 91 void SetAccelMultiReferenceVector(int Index,float Vector[3]);
khaledelmadawi 0:b703833f6795 92 void SetAccelMultiReferenceCheckVector(int Index,float Vector[3]);
khaledelmadawi 0:b703833f6795 93 void SetAxisDirections(int direction);
khaledelmadawi 0:b703833f6795 94 void SetRunningAveragePercent(float Percent);
khaledelmadawi 0:b703833f6795 95 void SetCompassReferenceVector(float Vector[3]);
khaledelmadawi 0:b703833f6795 96 void SetAccelerometerReferenceVector(float Vector[3]);
khaledelmadawi 0:b703833f6795 97 void ResetKalmanFilter();
khaledelmadawi 0:b703833f6795 98 void SetAccelerometerRange(int Accelrange);
khaledelmadawi 0:b703833f6795 99 void SetMultiReferenceWeightPower(float WeightPower);
khaledelmadawi 0:b703833f6795 100 void EnableDisableFilter(int Mode);
khaledelmadawi 0:b703833f6795 101 void SetRunningAverageMode(int Mode);
khaledelmadawi 0:b703833f6795 102 void SetGyroscopeRange(int mode);
khaledelmadawi 0:b703833f6795 103 void SetCompassRange(int mode);
khaledelmadawi 0:b703833f6795 104 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 105 /*4.3.6 Commands for Reading Filter Parameters
khaledelmadawi 0:b703833f6795 106 These commands allow the reading of parameters associated with the Kalman filter. All these commands return data,
khaledelmadawi 0:b703833f6795 107 and accept no parameters.
khaledelmadawi 0:b703833f6795 108 */
khaledelmadawi 0:b703833f6795 109 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 110 void ReadTareOrientationQuaternion(float *Quaternion);
khaledelmadawi 0:b703833f6795 111 void ReadTareOrientationRotationMatrix(float *RotationMatrix);
khaledelmadawi 0:b703833f6795 112 void ReadRhoDataAccelerometer(int *Rhomode,float *minroh,float *maxroh);
khaledelmadawi 0:b703833f6795 113 void ReadRhoDataCompass(int *Rhomode,float *minroh,float *maxroh);
khaledelmadawi 0:b703833f6795 114 void ReadCurrentUpdateRate(int *rate);
khaledelmadawi 0:b703833f6795 115 void ReadCompassReferenceVector(float *Vector);
khaledelmadawi 0:b703833f6795 116 void ReadAccelerometerReferenceVector(float *Vector);
khaledelmadawi 0:b703833f6795 117 void ReadReferenceVectorMode(int *Mode);
khaledelmadawi 0:b703833f6795 118 void ReadCompassMultiReferenceVector(int Index,float *Vector);
khaledelmadawi 0:b703833f6795 119 void ReadCompassMultiReferenceCheckVector(int Index,float *Vector);
khaledelmadawi 0:b703833f6795 120 void ReadAccelMultiReferenceVector(int Index,float *Vector);
khaledelmadawi 0:b703833f6795 121 void ReadAccelMultiReferenceCheckVector(int Index,float *Vector);
khaledelmadawi 0:b703833f6795 122 void ReadGyroEnabledState(int *Mode);
khaledelmadawi 0:b703833f6795 123 void ReadAccelerometerEnabledState(int *Mode);
khaledelmadawi 0:b703833f6795 124 void ReadCompassEnabledState(int *Mode);
khaledelmadawi 0:b703833f6795 125 void ReadAxisDirections(int *direction);
khaledelmadawi 0:b703833f6795 126 void ReadOversampleRate(int *Rate);
khaledelmadawi 0:b703833f6795 127 void ReadRunningAveragePercent(float *Percent);
khaledelmadawi 0:b703833f6795 128 void ReadDesiredUpdateRate(float *rate);
khaledelmadawi 0:b703833f6795 129 void ReadKalmanFilterCovarianceMatrix(float *CovarianceMatrix);
khaledelmadawi 0:b703833f6795 130 void ReadAccelerometerRange(int *Accelrange);
khaledelmadawi 0:b703833f6795 131 void ReadMultiReferenceWeightPower(float *WeightPower);
khaledelmadawi 0:b703833f6795 132 void ReadMultiReferenceResolution(int *Resolution);
khaledelmadawi 0:b703833f6795 133 void ReadNumberOfmultiReferenceCells(int *NumberOfCells);
khaledelmadawi 0:b703833f6795 134 void ReadFilterEnableState(int *Mode);
khaledelmadawi 0:b703833f6795 135 void ReadRunningAverageMode(int *Mode);
khaledelmadawi 0:b703833f6795 136 void ReadGyroscopeRange(int *mode);
khaledelmadawi 0:b703833f6795 137 void ReadCompassRange(int *mode);
khaledelmadawi 0:b703833f6795 138 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 139 /*4.3.7 Commands for Calibration
khaledelmadawi 0:b703833f6795 140 These commands allow the configuration and reading of calibration parameters and enabling of calibration modes.
khaledelmadawi 0:b703833f6795 141 */
khaledelmadawi 0:b703833f6795 142 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 143 void SetCompassCalibrationParameters(float Bias[3],float Matrix[9]);
khaledelmadawi 0:b703833f6795 144 void SetAccelerometerCalibrationParameters(float Bias[3],float Matrix[9]);
khaledelmadawi 0:b703833f6795 145 void ReadCompassCalibrationParameters(float *Bias,float *Matrix);
khaledelmadawi 0:b703833f6795 146 void ReadAccelerometerCalibrationParameters(float *Bias,float *Matrix);
khaledelmadawi 0:b703833f6795 147 void ReadGyroCalibrationParameters(float *Bias, float *range);
khaledelmadawi 0:b703833f6795 148 void BeginGyroAutocalibration();
khaledelmadawi 0:b703833f6795 149 void SetGyroCalibrationParameters(float Bias[3], float range[3]);
khaledelmadawi 0:b703833f6795 150 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 151 /*4.3.8 General Commands
khaledelmadawi 0:b703833f6795 152 These commands are for the configuration of the sensor as a whole as opposed to configuration of the filter or sensors.
khaledelmadawi 0:b703833f6795 153 */
khaledelmadawi 0:b703833f6795 154 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 155 void ReadSoftwareVersion(char *version);
khaledelmadawi 0:b703833f6795 156 void RestoreFactorySettings();
khaledelmadawi 0:b703833f6795 157 void CommitSettings();
khaledelmadawi 0:b703833f6795 158 void SoftwareReset();
khaledelmadawi 0:b703833f6795 159 void EnableWatchdogTimer(int timer);
khaledelmadawi 0:b703833f6795 160 void DisableWatchdogTimer();
khaledelmadawi 0:b703833f6795 161 void EnterFirmwareUpdateMode();
khaledelmadawi 0:b703833f6795 162 void ReadHardwareVersion(char *version);
khaledelmadawi 0:b703833f6795 163 void SetUARTBaudRate(int Baudrate);
khaledelmadawi 0:b703833f6795 164 void GetUARTBaudRate(int *Baudrate);
khaledelmadawi 0:b703833f6795 165 void SetUSBmode(int mode);
khaledelmadawi 0:b703833f6795 166 void GetUSBmode(int *mode);
khaledelmadawi 0:b703833f6795 167 void SetClockSpeed(int clock);
khaledelmadawi 0:b703833f6795 168 void GetClockSpeed(int *clock);
khaledelmadawi 0:b703833f6795 169 void GetSerialnumber(int *serialnum);
khaledelmadawi 0:b703833f6795 170 void SetLEDColor(float color[3]);
khaledelmadawi 0:b703833f6795 171 void GetLEDColor(float *color);
khaledelmadawi 0:b703833f6795 172 void EnableDisableJoystick(int Mode);
khaledelmadawi 0:b703833f6795 173 void EnableDisablemouse(int Mode);
khaledelmadawi 0:b703833f6795 174 void ReadJoystickEnabledState(int *Mode);
khaledelmadawi 0:b703833f6795 175 void ReadMouseEnabledState(int *Mode);
khaledelmadawi 0:b703833f6795 176 void SetControlMode(float Controlclass,float controlindex,float handlerindex);
khaledelmadawi 0:b703833f6795 177 void SetControlData(float Controlclass,float controlindex,float datapointindex,float datapoint );
khaledelmadawi 0:b703833f6795 178 void ReadControlMode(float *Handlerindex, float Controlclass,float controlindex);
khaledelmadawi 0:b703833f6795 179 void ReadControlData(float *Datapoint,float ControlClass,float controlIndex,float dataPointIndex);
khaledelmadawi 0:b703833f6795 180 void SetMouseAbsoluteRelative(int Mode);
khaledelmadawi 0:b703833f6795 181 void ReadMouseAbsoluteRelative(int *Mode);
khaledelmadawi 0:b703833f6795 182 void SetjoystickAndMousePresentRemoved(int Mode);
khaledelmadawi 0:b703833f6795 183 void ReadjoystickAndMousePresentRemoved(int *Mode);
khaledelmadawi 0:b703833f6795 184 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 185 /*
khaledelmadawi 0:b703833f6795 186 clases needed to interface with the sensor
khaledelmadawi 0:b703833f6795 187 */
khaledelmadawi 0:b703833f6795 188 /**********************************************************************************************************************/
khaledelmadawi 0:b703833f6795 189
khaledelmadawi 0:b703833f6795 190
khaledelmadawi 0:b703833f6795 191 private:
khaledelmadawi 0:b703833f6795 192 Serial _SpaceSensor;
khaledelmadawi 0:b703833f6795 193 char *st;
khaledelmadawi 0:b703833f6795 194 float *vecf;
khaledelmadawi 0:b703833f6795 195 char var[10];
khaledelmadawi 0:b703833f6795 196 void begin(long baud);
khaledelmadawi 0:b703833f6795 197 void read_string(float *vector,char *c);
khaledelmadawi 0:b703833f6795 198 };
khaledelmadawi 0:b703833f6795 199
khaledelmadawi 0:b703833f6795 200 #endif