#ifndef __AVAC_DATA_H__ #define __AVAC_DATA_H__ //***************************************************************************** // (C) Automotive Lighting Reutlingen GmbH // Tuebinger Strasse 123, 72762 Reutlingen, Germany // // Automotive Lighting Reutlingen GmbH owns all the rights to this work. // This work shall not be copied, reproduced, used, modified, transferred // or its information shall not be disclosed without the prior written // authorization of Automotive Lighting Reutlingen GmbH. //***************************************************************************** //----------------------------------------------------------------------------- /// \file AvacData.h /// /// \brief /// /// \descr /// /// Additional information can be found in the design description (Link: /// MDDD) /// /// \author Alf Traulsen (taf2rt) /// mailTo:alf.traulsen@al-lighting.com //----------------------------------------------------------------------------- #include "Std_Types.h" //#include "Nvm.h" #include #include #include "Nvm_Para_Avac.h" #define LEVELING_SENSER_OFFSET (-127) /* accoding to DBC,SigPrep_LevelingInfo offset is -127*/ //The parameter has a negative value, and only unsigned can be stored in Cod, so the read value needs an offset #define UINT8_TO_SINT8 128u typedef uint8 tieSigQty0; // pitch angle typedef struct { sint16 Angle; ///< [1/10 mrad] front side up --> positive value sint16 HeightErr; ///< [1/10 mrad] headlights up --> positive value tieSigQty0 eSigQty; ///< Signal Quality. } tPitchCan; typedef struct { sint16 Speed; ///< [1/10 km/h] forward --> positive value sint16 Acceleration; ///< [1/10 m/s^2] acceleration --> positive value boolean AccStatusX; tieSigQty0 eSigQty; } tSpeedMsg; // ---------------------------------------------------------------------------- // Variables // ---------------------------------------------------------------------------- //extern const tNvmPara_CodingArea* AvacData_pCodingArea; extern boolean AvacData_boCodingValid; extern boolean AvacData_boPitchConfigValid; extern uint8 AvacData_ucFilterStatic; extern uint8 AvacData_ucGradientLimiterUp; extern uint8 AvacData_ucGradientLimiterDown; extern const tRomPara_AvacAlgoDynCfg* CodBlockDavacPara; extern const tRomPara_AvacAlgoGenCfg* CodBlockAvacGenGfg; // ---------------------------------------------------------------------------- // Function prototypes // ---------------------------------------------------------------------------- #if 0u void AvacData_ParaFct0(const tParaFct0_Cmd eCmd, const tNvmPara_CodingArea* const pData); #endif void AvacData_Init(void); boolean AvacData_GetLowBeamOn(void); boolean AvacData_GetAvacD_Ok(void); boolean AvacData_GetAvacD_En(void); boolean AvacData_GetAvacS_Ok(void); boolean AvacData_GetAvacS_En(void); void AvacData_ReadPitch(tAvac_Pitch* pPitch); void AvacData_ReadSpeed(tAvac_Speed* pSpeed); void AvacData_ReadAccelPreDetect(tAvac_AccelPreDetect* pAccelPreDetect); void AvacData_ReadBrakePreDetect(tAvac_BrakePreDetect* pBrakePreDetect); void Avac_GetInput(void); void AvacData_WriteAvacOut(const tAvac_Out* pAvacOut); void UaApplSensorCali(uint8 fl, uint8 fr, uint8 rl, uint8 rr); // ---------------------------------------------------------------------------- // AvacCodingData // ---------------------------------------------------------------------------- INLINE boolean AvacData_GetCodingValid(void) {return AvacData_boCodingValid;} INLINE boolean AvacData_GetPitchConfigValid(void) {return AvacData_boPitchConfigValid;} INLINE uint8 Cod_AvacFilterUpMax(void) { return CodBlockDavacPara->FilterUpMax; } INLINE uint8 Cod_AvacFilterUpMid(void) { return CodBlockDavacPara->FilterUpMid; } INLINE uint8 Cod_AvacFilterUpMin(void) { return CodBlockDavacPara->FilterUpMin; } INLINE uint8 Cod_AvacFilterDownMax(void) { return CodBlockDavacPara->FilterDownMax; } INLINE uint8 Cod_AvacFilterDownMid(void) { return CodBlockDavacPara->FilterDownMid; } INLINE uint8 Cod_AvacFilterDownMin(void) { return CodBlockDavacPara->FilterDownMin; } INLINE uint8 Cod_AvacBadStreetTolerance() { return CodBlockDavacPara->BadStreetTolerance; } INLINE uint8 Cod_AvacHighDynamicLimit() { return CodBlockDavacPara->HighDynamicLimit; } INLINE sint8 Cod_AvacAccelPreDetectThresholdUp(void) { return (sint8)(CodBlockDavacPara->AccelPreDetectThresholdUp - UINT8_TO_SINT8); } INLINE sint8 Cod_AvacAccelPreDetectThresholdDown(void) { return (sint8)(CodBlockDavacPara->AccelPreDetectThresholdDown - UINT8_TO_SINT8); } INLINE sint8 Cod_AvacBrakePreDetectThresholdUp(void) { return (sint8)(CodBlockDavacPara->BrakePreDetectThresholdUp - UINT8_TO_SINT8); } INLINE sint8 Cod_AvacBrakePreDetectThresholdDown(void) { return (sint8)(CodBlockDavacPara->BrakePreDetectThresholdDown - UINT8_TO_SINT8); } INLINE uint8 Cod_AvacFilterStatic(void) { return AvacData_ucFilterStatic; } INLINE uint8 Cod_AvacGradientLimiterUp(void) { return AvacData_ucGradientLimiterUp; } INLINE uint8 Cod_AvacGradietnLimiterDown(void) { return AvacData_ucGradientLimiterDown; } INLINE uint8 Cod_AvacAngleMinChange(void) { return CodBlockAvacGenGfg->AngleMinChange; } // [(1/10) mrad] INLINE uint8 Cod_AvacAngleRemainingError(void) { return CodBlockAvacGenGfg->AngleRemainingError; } // [(1/10) mrad] INLINE uint8 Cod_AvacAngleMinChangeZero(void) { return CodBlockAvacGenGfg->AngleMinChangeZero; } // [(1/10) mrad] INLINE uint8 Cod_AvacAngleRemainingErrorZero(void) { return CodBlockAvacGenGfg->AngleRemainingErrorZero; } // [(1/10) mrad] INLINE uint16 Cod_AvacOutputAngleMax(void) { return CodBlockAvacGenGfg->OutputAngleMax; } // [(1/10) mrad] 5 degree max. regulation output (dyn + stat) #endif // __AVAC_DATA_H__