/* * Arduino_skal.h * * Academic License - for use in teaching, academic research, and meeting * course requirements at degree granting institutions only. Not for * government, commercial, or other organizational use. * * Code generation for model "Arduino_skal". * * Model version : 1.1 * Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 * C++ source code generated on : Thu Apr 15 15:56:50 2021 * * Target selection: grt.tlc * Note: GRT includes extra infrastructure and instrumentation for prototyping * Embedded hardware selection: Intel->x86-64 (Windows64) * Code generation objective: Debugging * Validation result: Not run */ #ifndef RTW_HEADER_Arduino_skal_h_ #define RTW_HEADER_Arduino_skal_h_ #include #include #include #include "rtwtypes.h" #include "rtw_continuous.h" #include "rtw_solver.h" #include "rt_logging.h" #include "Arduino_skal_types.h" /* Shared type includes */ #include "multiword_types.h" #include "rt_nonfinite.h" /* Macros for accessing real-time model data structure */ #ifndef rtmGetContStateDisabled #define rtmGetContStateDisabled(rtm) ((rtm)->contStateDisabled) #endif #ifndef rtmSetContStateDisabled #define rtmSetContStateDisabled(rtm, val) ((rtm)->contStateDisabled = (val)) #endif #ifndef rtmGetContStates #define rtmGetContStates(rtm) ((rtm)->contStates) #endif #ifndef rtmSetContStates #define rtmSetContStates(rtm, val) ((rtm)->contStates = (val)) #endif #ifndef rtmGetContTimeOutputInconsistentWithStateAtMajorStepFlag #define rtmGetContTimeOutputInconsistentWithStateAtMajorStepFlag(rtm) ((rtm)->CTOutputIncnstWithState) #endif #ifndef rtmSetContTimeOutputInconsistentWithStateAtMajorStepFlag #define rtmSetContTimeOutputInconsistentWithStateAtMajorStepFlag(rtm, val) ((rtm)->CTOutputIncnstWithState = (val)) #endif #ifndef rtmGetDerivCacheNeedsReset #define rtmGetDerivCacheNeedsReset(rtm) ((rtm)->derivCacheNeedsReset) #endif #ifndef rtmSetDerivCacheNeedsReset #define rtmSetDerivCacheNeedsReset(rtm, val) ((rtm)->derivCacheNeedsReset = (val)) #endif #ifndef rtmGetFinalTime #define rtmGetFinalTime(rtm) ((rtm)->Timing.tFinal) #endif #ifndef rtmGetIntgData #define rtmGetIntgData(rtm) ((rtm)->intgData) #endif #ifndef rtmSetIntgData #define rtmSetIntgData(rtm, val) ((rtm)->intgData = (val)) #endif #ifndef rtmGetOdeF #define rtmGetOdeF(rtm) ((rtm)->odeF) #endif #ifndef rtmSetOdeF #define rtmSetOdeF(rtm, val) ((rtm)->odeF = (val)) #endif #ifndef rtmGetOdeY #define rtmGetOdeY(rtm) ((rtm)->odeY) #endif #ifndef rtmSetOdeY #define rtmSetOdeY(rtm, val) ((rtm)->odeY = (val)) #endif #ifndef rtmGetPeriodicContStateIndices #define rtmGetPeriodicContStateIndices(rtm) ((rtm)->periodicContStateIndices) #endif #ifndef rtmSetPeriodicContStateIndices #define rtmSetPeriodicContStateIndices(rtm, val) ((rtm)->periodicContStateIndices = (val)) #endif #ifndef rtmGetPeriodicContStateRanges #define rtmGetPeriodicContStateRanges(rtm) ((rtm)->periodicContStateRanges) #endif #ifndef rtmSetPeriodicContStateRanges #define rtmSetPeriodicContStateRanges(rtm, val) ((rtm)->periodicContStateRanges = (val)) #endif #ifndef rtmGetRTWLogInfo #define rtmGetRTWLogInfo(rtm) ((rtm)->rtwLogInfo) #endif #ifndef rtmGetZCCacheNeedsReset #define rtmGetZCCacheNeedsReset(rtm) ((rtm)->zCCacheNeedsReset) #endif #ifndef rtmSetZCCacheNeedsReset #define rtmSetZCCacheNeedsReset(rtm, val) ((rtm)->zCCacheNeedsReset = (val)) #endif #ifndef rtmGetdX #define rtmGetdX(rtm) ((rtm)->derivs) #endif #ifndef rtmSetdX #define rtmSetdX(rtm, val) ((rtm)->derivs = (val)) #endif #ifndef rtmGetErrorStatus #define rtmGetErrorStatus(rtm) ((rtm)->errorStatus) #endif #ifndef rtmSetErrorStatus #define rtmSetErrorStatus(rtm, val) ((rtm)->errorStatus = (val)) #endif #ifndef rtmGetStopRequested #define rtmGetStopRequested(rtm) ((rtm)->Timing.stopRequestedFlag) #endif #ifndef rtmSetStopRequested #define rtmSetStopRequested(rtm, val) ((rtm)->Timing.stopRequestedFlag = (val)) #endif #ifndef rtmGetStopRequestedPtr #define rtmGetStopRequestedPtr(rtm) (&((rtm)->Timing.stopRequestedFlag)) #endif #ifndef rtmGetT #define rtmGetT(rtm) (rtmGetTPtr((rtm))[0]) #endif #ifndef rtmGetTFinal #define rtmGetTFinal(rtm) ((rtm)->Timing.tFinal) #endif #ifndef rtmGetTPtr #define rtmGetTPtr(rtm) ((rtm)->Timing.t) #endif /* Block signals (default storage) */ struct B_Arduino_skal_T { real_T X0[4]; /* '/X0' */ real_T MemoryX[4]; /* '/MemoryX' */ real_T Gain; /* '/Gain' */ real_T Akxhatkk1[4]; /* '/A[k]*xhat[k|k-1]' */ real_T Step; /* '/Step' */ real_T Kr; /* '/Kr' */ real_T Sum5; /* '/Sum5' */ real_T Saturation; /* '/Saturation' */ real_T Bkuk[4]; /* '/B[k]*u[k]' */ real_T Add[4]; /* '/Add' */ real_T Ckxhatkk1[2]; /* '/C[k]*xhat[k|k-1]' */ real_T Dkuk[2]; /* '/D[k]*u[k]' */ real_T yhatkk1[2]; /* '/Add1' */ real_T Sum[2]; /* '/Sum' */ real_T Product3[4]; /* '/Product3' */ real_T P[16]; /* '/SqrtUsedFcn' */ }; /* Block states (default storage) for system '' */ struct DW_Arduino_skal_T { int_T MemoryX_IWORK; /* '/MemoryX' */ boolean_T MeasurementUpdate_MODE; /* '/MeasurementUpdate' */ }; /* Continuous states (default storage) */ struct X_Arduino_skal_T { real_T MemoryX_CSTATE[4]; /* '/MemoryX' */ }; /* State derivatives (default storage) */ struct XDot_Arduino_skal_T { real_T MemoryX_CSTATE[4]; /* '/MemoryX' */ }; /* State disabled */ struct XDis_Arduino_skal_T { boolean_T MemoryX_CSTATE[4]; /* '/MemoryX' */ }; #ifndef ODE3_INTG #define ODE3_INTG /* ODE3 Integration Data */ struct ODE3_IntgData { real_T *y; /* output */ real_T *f[3]; /* derivatives */ }; #endif /* Parameters (default storage) */ struct P_Arduino_skal_T_ { real_T K[4]; /* Variable: K * Referenced by: '/Gain' */ real_T Kr; /* Variable: Kr * Referenced by: '/Kr' */ real_T Lykyhatkk1_Y0; /* Expression: 0 * Referenced by: '/L*(y[k]-yhat[k|k-1])' */ real_T Constant_Value[2]; /* Expression: [1,1] * Referenced by: '/Constant' */ real_T X0_Value[4]; /* Expression: pInitialization.X0 * Referenced by: '/X0' */ real_T A_Value[16]; /* Expression: pInitialization.A * Referenced by: '/A' */ real_T B_Value[4]; /* Expression: pInitialization.B * Referenced by: '/B' */ real_T C_Value[8]; /* Expression: pInitialization.C * Referenced by: '/C' */ real_T CovarianceZ_Value[16]; /* Expression: pInitialization.Z * Referenced by: '/CovarianceZ' */ real_T KalmanGainL_Value[8]; /* Expression: pInitialization.L * Referenced by: '/KalmanGainL' */ real_T D_Value[2]; /* Expression: pInitialization.D * Referenced by: '/D' */ real_T Step_Time; /* Expression: 0 * Referenced by: '/Step' */ real_T Step_Y0; /* Expression: 0 * Referenced by: '/Step' */ real_T Step_YFinal; /* Expression: 0 * Referenced by: '/Step' */ real_T Saturation_UpperSat; /* Expression: 11.5 * Referenced by: '/Saturation' */ real_T Saturation_LowerSat; /* Expression: -11.5 * Referenced by: '/Saturation' */ boolean_T isSqrtUsed_Value; /* Expression: pInitialization.isSqrtUsed * Referenced by: '/isSqrtUsed' */ boolean_T Enable_Value; /* Expression: true() * Referenced by: '/Enable' */ }; /* Real-time Model Data Structure */ struct tag_RTM_Arduino_skal_T { const char_T *errorStatus; RTWLogInfo *rtwLogInfo; RTWSolverInfo solverInfo; X_Arduino_skal_T *contStates; int_T *periodicContStateIndices; real_T *periodicContStateRanges; real_T *derivs; boolean_T *contStateDisabled; boolean_T zCCacheNeedsReset; boolean_T derivCacheNeedsReset; boolean_T CTOutputIncnstWithState; real_T odeY[4]; real_T odeF[3][4]; ODE3_IntgData intgData; /* * Sizes: * The following substructure contains sizes information * for many of the model attributes such as inputs, outputs, * dwork, sample times, etc. */ struct { int_T numContStates; int_T numPeriodicContStates; int_T numSampTimes; } Sizes; /* * Timing: * The following substructure contains information regarding * the timing information for the model. */ struct { uint32_T clockTick0; uint32_T clockTickH0; time_T stepSize0; uint32_T clockTick1; uint32_T clockTickH1; boolean_T firstInitCondFlag; time_T tFinal; SimTimeStep simTimeStep; boolean_T stopRequestedFlag; time_T *t; time_T tArray[2]; } Timing; }; /* Class declaration for model Arduino_skal */ class Arduino_skalModelClass { /* public data and function members */ public: /* model initialize function */ void initialize(); /* model step function */ void step(); /* model terminate function */ void terminate(); /* Constructor */ Arduino_skalModelClass(); /* Destructor */ ~Arduino_skalModelClass(); /* Real-Time Model get method */ RT_MODEL_Arduino_skal_T * getRTM(); /* private data and function members */ private: /* Tunable parameters */ static P_Arduino_skal_T Arduino_skal_P; /* Block signals */ B_Arduino_skal_T Arduino_skal_B; /* Block states */ DW_Arduino_skal_T Arduino_skal_DW; X_Arduino_skal_T Arduino_skal_X; /* Block continuous states */ /* Real-Time Model */ RT_MODEL_Arduino_skal_T Arduino_skal_M; /* Continuous states update member function*/ void rt_ertODEUpdateContinuousStates(RTWSolverInfo *si ); /* Derivatives member function */ void Arduino_skal_derivatives(); }; /*- * These blocks were eliminated from the model due to optimizations: * * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Conversion' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Conversion' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/KalmanGainM' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Conversion' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/Data Type Duplicate' : Unused code path elimination * Block '/G' : Unused code path elimination * Block '/H' : Unused code path elimination * Block '/N' : Unused code path elimination * Block '/P0' : Unused code path elimination * Block '/Q' : Unused code path elimination * Block '/R' : Unused code path elimination * Block '/CheckSignalProperties' : Unused code path elimination * Block '/CheckSignalProperties' : Unused code path elimination * Block '/Conversion' : Eliminate redundant data type conversion * Block '/Conversion' : Eliminate redundant data type conversion * Block '/Conversion' : Eliminate redundant data type conversion * Block '/Reshape' : Reshape block reduction * Block '/ReshapeX0' : Reshape block reduction * Block '/Reshapeu' : Reshape block reduction * Block '/Reshapexhat' : Reshape block reduction * Block '/Reshapey' : Reshape block reduction */ /*- * The generated code includes comments that allow you to trace directly * back to the appropriate location in the model. The basic format * is /block_name, where system is the system number (uniquely * assigned by Simulink) and block_name is the name of the block. * * Use the MATLAB hilite_system command to trace the generated code back * to the model. For example, * * hilite_system('') - opens system 3 * hilite_system('/Kp') - opens and selects block Kp which resides in S3 * * Here is the system hierarchy for this model * * '' : 'Arduino_skal' * '' : 'Arduino_skal/Kalman Filter' * '' : 'Arduino_skal/Kalman Filter/CalculatePL' * '' : 'Arduino_skal/Kalman Filter/CalculateYhat' * '' : 'Arduino_skal/Kalman Filter/CovarianceOutputConfigurator' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionA' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionB' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionC' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionD' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionEnable' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionG' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionH' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionN' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionP' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionP0' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionQ' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionR' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionReset' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionX' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionX0' * '' : 'Arduino_skal/Kalman Filter/DataTypeConversionu' * '' : 'Arduino_skal/Kalman Filter/MemoryP' * '' : 'Arduino_skal/Kalman Filter/Observer' * '' : 'Arduino_skal/Kalman Filter/ReducedQRN' * '' : 'Arduino_skal/Kalman Filter/Reset' * '' : 'Arduino_skal/Kalman Filter/Reshapeyhat' * '' : 'Arduino_skal/Kalman Filter/ScalarExpansionP0' * '' : 'Arduino_skal/Kalman Filter/ScalarExpansionQ' * '' : 'Arduino_skal/Kalman Filter/ScalarExpansionR' * '' : 'Arduino_skal/Kalman Filter/UseCurrentEstimator' * '' : 'Arduino_skal/Kalman Filter/checkA' * '' : 'Arduino_skal/Kalman Filter/checkB' * '' : 'Arduino_skal/Kalman Filter/checkC' * '' : 'Arduino_skal/Kalman Filter/checkD' * '' : 'Arduino_skal/Kalman Filter/checkEnable' * '' : 'Arduino_skal/Kalman Filter/checkG' * '' : 'Arduino_skal/Kalman Filter/checkH' * '' : 'Arduino_skal/Kalman Filter/checkN' * '' : 'Arduino_skal/Kalman Filter/checkP0' * '' : 'Arduino_skal/Kalman Filter/checkQ' * '' : 'Arduino_skal/Kalman Filter/checkR' * '' : 'Arduino_skal/Kalman Filter/checkReset' * '' : 'Arduino_skal/Kalman Filter/checkX0' * '' : 'Arduino_skal/Kalman Filter/checku' * '' : 'Arduino_skal/Kalman Filter/checky' * '' : 'Arduino_skal/Kalman Filter/CalculatePL/DataTypeConversionL' * '' : 'Arduino_skal/Kalman Filter/CalculatePL/DataTypeConversionM' * '' : 'Arduino_skal/Kalman Filter/CalculatePL/DataTypeConversionP' * '' : 'Arduino_skal/Kalman Filter/CalculatePL/DataTypeConversionZ' * '' : 'Arduino_skal/Kalman Filter/CalculatePL/Ground' * '' : 'Arduino_skal/Kalman Filter/CalculateYhat/Ground' * '' : 'Arduino_skal/Kalman Filter/CovarianceOutputConfigurator/decideOutput' * '' : 'Arduino_skal/Kalman Filter/CovarianceOutputConfigurator/decideOutput/SqrtUsedFcn' * '' : 'Arduino_skal/Kalman Filter/Observer/MeasurementUpdate' * '' : 'Arduino_skal/Kalman Filter/ReducedQRN/Ground' */ #endif /* RTW_HEADER_Arduino_skal_h_ */