version 1.0

Dependencies:   CMSIS_DSP_401 GPS MPU9150_DMP PID QuaternionMath Servo mbed

Fork of SolarOnFoils_MainModule_20150518 by Dannis Brugman

Committer:
Dannis_mbed
Date:
Tue Jun 23 13:55:28 2015 +0000
Revision:
0:81b21910454e
Child:
1:b4a0d63db637
version 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dannis_mbed 0:81b21910454e 1 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 2 // //
Dannis_mbed 0:81b21910454e 3 // File : systemVar.cpp //
Dannis_mbed 0:81b21910454e 4 // Version : 0.1 //
Dannis_mbed 0:81b21910454e 5 // Date : 23 june 2015 //
Dannis_mbed 0:81b21910454e 6 // Author : Dany Brugman //
Dannis_mbed 0:81b21910454e 7 // Comment : Class systemVar to manage and control system variables //
Dannis_mbed 0:81b21910454e 8 // //
Dannis_mbed 0:81b21910454e 9 // Changelog : //
Dannis_mbed 0:81b21910454e 10 // Date: Name: Comment: //
Dannis_mbed 0:81b21910454e 11 // 23/06/2015 DNB First version //
Dannis_mbed 0:81b21910454e 12 // //
Dannis_mbed 0:81b21910454e 13 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 14 #include "menu.h"
Dannis_mbed 0:81b21910454e 15 #include "systemVar.h"
Dannis_mbed 0:81b21910454e 16
Dannis_mbed 0:81b21910454e 17
Dannis_mbed 0:81b21910454e 18 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 19 // Contructor //
Dannis_mbed 0:81b21910454e 20 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 21 SystemVar::SystemVar() :
Dannis_mbed 0:81b21910454e 22 uiCounter(0),
Dannis_mbed 0:81b21910454e 23 bError(0)
Dannis_mbed 0:81b21910454e 24 {};
Dannis_mbed 0:81b21910454e 25
Dannis_mbed 0:81b21910454e 26 SystemVar::~SystemVar()
Dannis_mbed 0:81b21910454e 27 {
Dannis_mbed 0:81b21910454e 28 };
Dannis_mbed 0:81b21910454e 29
Dannis_mbed 0:81b21910454e 30
Dannis_mbed 0:81b21910454e 31 extern Serial debug;
Dannis_mbed 0:81b21910454e 32 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 33 // set's //
Dannis_mbed 0:81b21910454e 34 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 35 void SystemVar::vSetRoll(Quaternion q1)
Dannis_mbed 0:81b21910454e 36 {
Dannis_mbed 0:81b21910454e 37 float fRoll;
Dannis_mbed 0:81b21910454e 38 uint32_t uiValue;
Dannis_mbed 0:81b21910454e 39 fRoll = atan2(2*(q1.v.x*q1.v.y + q1.w*q1.v.y), q1.w*q1.w + q1.v.x*q1.v.x - q1.v.y*q1.v.y - q1.v.y*q1.v.y);
Dannis_mbed 0:81b21910454e 40 fRoll *= 180/3.14;
Dannis_mbed 0:81b21910454e 41 if(fRoll >= 0) uiRoll[0] = 1;
Dannis_mbed 0:81b21910454e 42 else uiRoll[0] = 0;
Dannis_mbed 0:81b21910454e 43 uiValue = (uint32_t) abs(fRoll);
Dannis_mbed 0:81b21910454e 44 uiRoll[1] = uiValue;
Dannis_mbed 0:81b21910454e 45 }
Dannis_mbed 0:81b21910454e 46
Dannis_mbed 0:81b21910454e 47 void SystemVar::vSetPitch(Quaternion q1)
Dannis_mbed 0:81b21910454e 48 {
Dannis_mbed 0:81b21910454e 49 float fPitch;
Dannis_mbed 0:81b21910454e 50 uint32_t uiValue;
Dannis_mbed 0:81b21910454e 51 Vector3 euler = q1.getEulerAngles();
Dannis_mbed 0:81b21910454e 52 fPitch = euler.y;
Dannis_mbed 0:81b21910454e 53 fPitch *= 180/3.14;
Dannis_mbed 0:81b21910454e 54 if(fPitch >= 0) uiPitch[0] = 1;
Dannis_mbed 0:81b21910454e 55 else uiPitch[0] = 0;
Dannis_mbed 0:81b21910454e 56 uiValue = (uint32_t) abs(fPitch);
Dannis_mbed 0:81b21910454e 57 uiPitch[1] = uiValue;
Dannis_mbed 0:81b21910454e 58 }
Dannis_mbed 0:81b21910454e 59
Dannis_mbed 0:81b21910454e 60 void SystemVar::vSetPHeight(uint32_t uiValue)
Dannis_mbed 0:81b21910454e 61 {
Dannis_mbed 0:81b21910454e 62 uiPHeight = uiValue;
Dannis_mbed 0:81b21910454e 63 }
Dannis_mbed 0:81b21910454e 64
Dannis_mbed 0:81b21910454e 65 void SystemVar::vSetSHeight(uint32_t uiValue)
Dannis_mbed 0:81b21910454e 66 {
Dannis_mbed 0:81b21910454e 67 uiSHeight = uiValue;
Dannis_mbed 0:81b21910454e 68 }
Dannis_mbed 0:81b21910454e 69
Dannis_mbed 0:81b21910454e 70 void SystemVar::vSetPCurrent(uint32_t uiValue)
Dannis_mbed 0:81b21910454e 71 {
Dannis_mbed 0:81b21910454e 72 uiPCurrent = uiValue;
Dannis_mbed 0:81b21910454e 73 }
Dannis_mbed 0:81b21910454e 74
Dannis_mbed 0:81b21910454e 75 void SystemVar::vSetSCurrent(uint32_t uiValue)
Dannis_mbed 0:81b21910454e 76 {
Dannis_mbed 0:81b21910454e 77 uiSCurrent = uiValue;
Dannis_mbed 0:81b21910454e 78 }
Dannis_mbed 0:81b21910454e 79
Dannis_mbed 0:81b21910454e 80 void SystemVar::vSetSpeed(uint32_t uiValue)
Dannis_mbed 0:81b21910454e 81 {
Dannis_mbed 0:81b21910454e 82 uiSpeed = uiValue;
Dannis_mbed 0:81b21910454e 83 }
Dannis_mbed 0:81b21910454e 84
Dannis_mbed 0:81b21910454e 85 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 86 // get's //
Dannis_mbed 0:81b21910454e 87 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 88 char* SystemVar::getValue(void)
Dannis_mbed 0:81b21910454e 89 {
Dannis_mbed 0:81b21910454e 90 static char* pValue;
Dannis_mbed 0:81b21910454e 91 pValue = cValue;
Dannis_mbed 0:81b21910454e 92 return pValue;
Dannis_mbed 0:81b21910454e 93 }
Dannis_mbed 0:81b21910454e 94
Dannis_mbed 0:81b21910454e 95 int SystemVar::iGetRollPolarity(void)
Dannis_mbed 0:81b21910454e 96 {
Dannis_mbed 0:81b21910454e 97 return uiRoll[0];
Dannis_mbed 0:81b21910454e 98 }
Dannis_mbed 0:81b21910454e 99
Dannis_mbed 0:81b21910454e 100 int SystemVar::iGetPitchPolarity(void)
Dannis_mbed 0:81b21910454e 101 {
Dannis_mbed 0:81b21910454e 102 return uiPitch[0];
Dannis_mbed 0:81b21910454e 103 }
Dannis_mbed 0:81b21910454e 104
Dannis_mbed 0:81b21910454e 105 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 106 // show value //
Dannis_mbed 0:81b21910454e 107 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 108 void SystemVar::itoa( uint32_t value, char *str)
Dannis_mbed 0:81b21910454e 109 {
Dannis_mbed 0:81b21910454e 110 int i,j;
Dannis_mbed 0:81b21910454e 111 char temp[4];
Dannis_mbed 0:81b21910454e 112 for(i=0; value > 0; i++){
Dannis_mbed 0:81b21910454e 113 str[i] = value%10+'0';
Dannis_mbed 0:81b21910454e 114 value=value/10;
Dannis_mbed 0:81b21910454e 115 }
Dannis_mbed 0:81b21910454e 116 for(j=0;i>=0;j++,i--){
Dannis_mbed 0:81b21910454e 117 temp[j]=str[i-1];
Dannis_mbed 0:81b21910454e 118 }
Dannis_mbed 0:81b21910454e 119 for(i=0;i<j;i++){
Dannis_mbed 0:81b21910454e 120 str[i]=temp[i];
Dannis_mbed 0:81b21910454e 121 }
Dannis_mbed 0:81b21910454e 122 if(strcmp(str,"")== 0) str[0] = '0';
Dannis_mbed 0:81b21910454e 123
Dannis_mbed 0:81b21910454e 124 }
Dannis_mbed 0:81b21910454e 125
Dannis_mbed 0:81b21910454e 126 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 127 // show value //
Dannis_mbed 0:81b21910454e 128 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 129 void SystemVar::cShowValue(VALUE_t v)
Dannis_mbed 0:81b21910454e 130 {
Dannis_mbed 0:81b21910454e 131 value = v;
Dannis_mbed 0:81b21910454e 132 //debug.printf("SW case %i\t", uiRoll[1]);
Dannis_mbed 0:81b21910454e 133 switch(value)
Dannis_mbed 0:81b21910454e 134 {
Dannis_mbed 0:81b21910454e 135 case _ROLL: itoa(uiRoll[1], cValue); break;
Dannis_mbed 0:81b21910454e 136
Dannis_mbed 0:81b21910454e 137 case _PITCH: itoa(uiPitch[1], cValue); break;
Dannis_mbed 0:81b21910454e 138
Dannis_mbed 0:81b21910454e 139
Dannis_mbed 0:81b21910454e 140
Dannis_mbed 0:81b21910454e 141 } // end switch
Dannis_mbed 0:81b21910454e 142
Dannis_mbed 0:81b21910454e 143 }
Dannis_mbed 0:81b21910454e 144
Dannis_mbed 0:81b21910454e 145
Dannis_mbed 0:81b21910454e 146
Dannis_mbed 0:81b21910454e 147
Dannis_mbed 0:81b21910454e 148
Dannis_mbed 0:81b21910454e 149 //////////////////////////////////////////////////////////////////////////////////////
Dannis_mbed 0:81b21910454e 150 // EOF //
Dannis_mbed 0:81b21910454e 151 //////////////////////////////////////////////////////////////////////////////////////