version 1.0
Dependencies: CMSIS_DSP_401 GPS MPU9150_DMP PID QuaternionMath Servo mbed
Fork of SolarOnFoils_MainModule_20150518 by
systemVar.cpp@0:81b21910454e, 2015-06-23 (annotated)
- 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?
User | Revision | Line number | New 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 | ////////////////////////////////////////////////////////////////////////////////////// |