version 1.0
Dependencies: CMSIS_DSP_401 GPS MPU9150_DMP PID QuaternionMath Servo mbed
Fork of SolarOnFoils_MainModule_20150518 by
systemVar.cpp
- Committer:
- Dannis_mbed
- Date:
- 2015-08-11
- Revision:
- 2:f6d058931b17
- Parent:
- 1:b4a0d63db637
File content as of revision 2:f6d058931b17:
////////////////////////////////////////////////////////////////////////////////////// // // // File : systemVar.cpp // // Version : 0.1 // // Date : 23 june 2015 // // Author : Dany Brugman // // Comment : Class systemVar to manage and control system variables // // // // Changelog : // // Date: Name: Comment: // // 23/06/2015 DNB First version // // // ////////////////////////////////////////////////////////////////////////////////////// #include "menu.h" #include "systemVar.h" ////////////////////////////////////////////////////////////////////////////////////// // Defines // ////////////////////////////////////////////////////////////////////////////////////// #define EXT_UI_HEIGHT 1020 ////////////////////////////////////////////////////////////////////////////////////// // Variable limits // ////////////////////////////////////////////////////////////////////////////////////// #define MAXMAXROLL 30 #define MAXMINPITCH 15 #define MAXMAXPITCH 30 #define MAXTAKEOFFSPEED 15 #define MAXFOILBORNEHEIGHT 30 #define MAXFOILASSISTHEIGHT 30 #define MAXAOA 8 #define MINMAXROLL 5 #define MINMINPITCH 5 #define MINMAXPITCH 5 #define MINTAKEOFFSPEED 1 #define MINFOILBORNEHEIGHT 1 #define MINFOILASSISTHEIGHT 1 #define MINAOA 1 ////////////////////////////////////////////////////////////////////////////////////// // Contructor // ////////////////////////////////////////////////////////////////////////////////////// SystemVar::SystemVar() : uiCounter(0), uiVarHeightFoilBorne(30), bError(0) { init(); }; SystemVar::~SystemVar() { }; extern Serial debug; extern CAN CANbus; ////////////////////////////////////////////////////////////////////////////////////// // init // ////////////////////////////////////////////////////////////////////////////////////// void SystemVar::init(void) { //init here } ////////////////////////////////////////////////////////////////////////////////////// // set's // ////////////////////////////////////////////////////////////////////////////////////// void SystemVar::vSetRoll(Quaternion q1) { float fRoll; uint32_t uiValue; 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); fRoll *= 180/3.14; if(fRoll >= 0) uiRoll[0] = 1; else uiRoll[0] = 0; uiValue = (uint32_t) abs(fRoll); uiRoll[1] = uiValue; } void SystemVar::vSetPitch(Quaternion q1) { float fPitch; uint32_t uiValue; Vector3 euler = q1.getEulerAngles(); fPitch = euler.y; fPitch *= 180/3.14; if(fPitch >= 0) uiPitch[0] = 1; else uiPitch[0] = 0; uiValue = (uint32_t) abs(fPitch); uiPitch[1] = uiValue; } void SystemVar::vVarHeightFoilBorne(uint32_t uiValue) { cMessage = uiValue; CANbus.write(CANMessage(EXT_UI_HEIGHT, &cMessage, 1)); uiVarHeightFoilBorne = uiValue; debug.printf("set height %i\t", uiVarHeightFoilBorne); } void SystemVar::vSetPHeight(uint32_t uiValue) { uiPHeight = uiValue; } void SystemVar::vSetSHeight(uint32_t uiValue) { uiSHeight = uiValue; } void SystemVar::vSetPCurrent(uint32_t uiValue) { uiPCurrent = uiValue; } void SystemVar::vSetSCurrent(uint32_t uiValue) { uiSCurrent = uiValue; } void SystemVar::vSetSpeed(uint32_t uiValue) { uiSpeed = uiValue; } ////////////////////////////////////////////////////////////////////////////////////// // get's // ////////////////////////////////////////////////////////////////////////////////////// char* SystemVar::getValue(void) { static char* pValue; pValue = cValue; return pValue; } int SystemVar::iGetRollPolarity(void) { return uiRoll[0]; } int SystemVar::iGetPitchPolarity(void) { return uiPitch[0]; } uint32_t SystemVar::uiGetRoll(void) { return uiRoll[1]; } uint32_t SystemVar::uiGetPitch(void) { return uiPitch[1]; } int32_t SystemVar::iGetHeightFoilBorne(void) { return uiVarHeightFoilBorne; } uint32_t SystemVar::uiGetVarMaxRoll(void) { return uiVarMaxRoll; } uint32_t SystemVar::uiGetVarMinPitch(void) { return uiVarMinPitch; } uint32_t SystemVar::uiGetVarMaxPitch(void) { return uiVarMaxPitch; } uint32_t SystemVar::uiGetVarTakeOffSpeed(void) { return uiVarTakeOffSpeed; } uint32_t SystemVar::uiGetVarHeightFoilBorne(void) { return uiVarHeightFoilBorne; } uint32_t SystemVar::uiGetVarHeightFoilAssist(void) { return uiVarHeightFoilAssist; } uint32_t SystemVar::uiGetVarAOAFoilAssist(void) { return uiVarAOAFoilAssist; } ////////////////////////////////////////////////////////////////////////////////////// // convert value to char * // ////////////////////////////////////////////////////////////////////////////////////// void SystemVar::itoa( uint32_t value, char *str) { int i,j; char temp[4]; for(i=0; value > 0; i++){ str[i] = value%10+'0'; value=value/10; } for(j=0;i>=0;j++,i--){ temp[j]=str[i-1]; } for(i=0;i<j;i++){ str[i]=temp[i]; } if(strcmp(str,"")== 0) str[0] = '0'; } ////////////////////////////////////////////////////////////////////////////////////// // show value // ////////////////////////////////////////////////////////////////////////////////////// void SystemVar::cShowValue(VALUE_t v) { value = v; switch(value) { case _ROLL: itoa(uiRoll[1], cValue); break; case _PITCH: itoa(uiPitch[1], cValue); break; //case _HEIGHTFOILBORNE: itoa(uiVarHeightFoilBorne, cValue); break; case _PHEIGHT: itoa(uiPHeight, cValue); break; case _MAXROLL: itoa(uiVarMaxRoll, cValue); break; case _MINPITCH: itoa(uiVarMinPitch, cValue); break; case _MAXPITCH: itoa(uiVarMaxPitch, cValue); break; case _TAKEOFFSPEED: itoa(uiVarTakeOffSpeed, cValue); break; case _HEIGHTFOILBORNE: itoa(uiVarHeightFoilBorne, cValue); break; case _HEIGHTFOILASSIST: itoa(uiVarHeightFoilAssist, cValue); break; case _AOAFOILASSIST: itoa(uiVarAOAFoilAssist, cValue); break; } // end switch } ////////////////////////////////////////////////////////////////////////////////////// // in-/decrease value // ////////////////////////////////////////////////////////////////////////////////////// void SystemVar::vIncrease(VALUE_t v) { value = v; switch(value) { case _MAXROLL: if(uiVarMaxRoll >= MAXMAXROLL) uiVarMaxRoll++; break; case _MINPITCH: if(uiVarMinPitch >= MAXMINPITCH) uiVarMinPitch++; break; case _MAXPITCH: if(uiVarMaxPitch >= MAXMAXPITCH) uiVarMaxPitch++; break; case _TAKEOFFSPEED: if(uiVarTakeOffSpeed >= MAXTAKEOFFSPEED) uiVarTakeOffSpeed++; break; case _HEIGHTFOILBORNE: if(uiVarHeightFoilBorne >= MAXFOILBORNEHEIGHT) uiVarHeightFoilBorne++; break; case _HEIGHTFOILASSIST: if(uiVarHeightFoilAssist >= MAXFOILASSISTHEIGHT) uiVarHeightFoilAssist++; break; case _AOAFOILASSIST: if(uiVarAOAFoilAssist >= MAXAOA) uiVarAOAFoilAssist++; break; }//end switch } void SystemVar::vDecrease(VALUE_t v) { value = v; switch(value) { case _MAXROLL: if(uiVarMaxRoll <= MINMAXROLL) uiVarMaxRoll--; break; case _MINPITCH: if(uiVarMinPitch <= MINMINPITCH) uiVarMinPitch--; break; case _MAXPITCH: if(uiVarMaxPitch <= MINMAXPITCH) uiVarMaxPitch--; break; case _TAKEOFFSPEED: if(uiVarTakeOffSpeed <= MINTAKEOFFSPEED) uiVarTakeOffSpeed--; break; case _HEIGHTFOILBORNE: if(uiVarHeightFoilBorne <= MINFOILBORNEHEIGHT) uiVarHeightFoilBorne--; break; case _HEIGHTFOILASSIST: if(uiVarHeightFoilAssist <= MINFOILASSISTHEIGHT) uiVarHeightFoilAssist--; break; case _AOAFOILASSIST: if(uiVarAOAFoilAssist <= MINAOA) uiVarAOAFoilAssist--; break; }//end switch } ////////////////////////////////////////////////////////////////////////////////////// // EOF // //////////////////////////////////////////////////////////////////////////////////////