IFx Library (Ifx)
AUTOSAR Classic Libraries-Modul IFx Library (Ifx, Spezifikation: AUTOSAR_CP_SWS_IFXLibrary.pdf, AUTOSAR_SWS_IFXLibrary.pdf).
Funktionen — Übersicht
void Ifx_DPSearch_<InTypeMn> (Ifx_DPResultU16_Type* dpResult, <InType> Xin, <InType> N, const <InType>* X_array);Ifx_DPSearch_ routine searches the position of input Xin within the given distribution array X_array, and returns index and...<OutType> Ifx_IpoCur_<OutTypeMn> (const Ifx_DPResultU16_Type* dpResult, const <InType>* Val_array);Based on searched index and ratio information, this routine calculates and returns interpolation for curve.<OutType> Ifx_LkUpCur_<OutTypeMn> (const Ifx_DPResultU16_Type* dpResult, const <InType>* Val_array);Based on searched index and ratio information, this routine calculates and returns entry point of the result array.<OutType> Ifx_IpoMap_<OutTypeMn> (const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);Based on searched indices and ratios information using the relevant Ifx_DPSearch routine, this routine calculates and returns...<OutType> Ifx_LkUpMap_<OutTypeMn> (const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);Based on searched index and ratio information, this routine calculates and returns entry value of the result distribution array.<OutType> Ifx_IntIpoCur_<InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> N, const <InType>* X_array, const <InType>* Val_array);This routine calculates interpolation of a curve at position Xin using below equation.<OutType> Ifx_IntLkUpCur_<InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> N, const <InType>* X_array, const <InType>* Val_array);This routine returns respective entry value of the result at position Xin based on below equations.<OutType> Ifx_IntIpoFixCur_<InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Shift);This routine calculates interpolation of a curve at position Xin using below equations.<OutType> Ifx_IntLkUpFixCur_<InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Shift);This routine returns respective entry value of the result distribution array at position Xin based on below equations.<OutType> Ifx_IntIpoFixICur_<InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Interval);This routine calculates interpolation of a curve at position Xin using below equations.<OutType> Ifx_IntLkUpFixICur_<InTypeMn>_<OutTypeMnt> (<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Interval);This routine returns respective entry value of the result distribution array at position Xin based on below equations.<OutType> Ifx_IntIpoMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, const <InType>* Val_array);This routine calculates Interpolation of a map at position X and Y using below equations.<OutType> Ifx_IntLkUpMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, const <InType>* Val_array);This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.<OutType> Ifx_IntIpoFixMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <inType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> ShiftX, <InType> OffsetY, <InType> ShiftY);This routine calculates Interpolation of a map at position X and Y using below equations.<OutType> Ifx_IntLkUpFixMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> ShiftX, <InType> OffsetY, <InType> ShiftY);This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.<OutType> Ifx_IntIpoFixIMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> IntervalX, <InType> OffsetY, <InType> IntervalY);This routine calculates Interpolation of a map at position X and Y using below equations.<OutType> Ifx_IntLkUpFixIMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> IntervalX, <InType> OffsetY, <InType> IntervalY);This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.<OutType> Ifx_LkUpBaseMap_<OutTypeMn> (const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);Based on searched index and ratio information, this routine calculates and returns entry value of the result distribution array.<OutType> Ifx_IntLkUpBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, const <InType>* Val_array);This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.<OutType> Ifx_IntLkUpFixBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> ShiftX, <InType> OffsetY, <InType> ShiftY);This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.<OutType> Ifx_IntLkUpFixIBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn> (<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> IntervalX, <InType> OffsetY, <InType> IntervalY);This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.void Ifx_GetVersionInfo (Std_VersionInfoType* versioninfo);Returns the version information of this library.<OutType> Ifx_IpoCub_<OutTypeMn> (const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, const Ifx_DPResultU16_Type* dpResultZ, uint16 num_x, uint16 num_y, const <InType>* Val_array);Based on searched indices and ratios information using the relevant Ifx_DPSearch routine, this routine calculates and returns...
Typen — Übersicht
struct Ifx_DPResultU16_TypeStructure used for data point search for index and ratio
Anforderungen — Übersicht
SWS_Ifx_00001The Ifx module shall provide the following files: • C files, Ifx_.SWS_Ifx_00003Ratio shall have resolution of 2 -16SWS_Ifx_00006If (X_array[0] Index = index- dpResult ->Ratio = (Xin - X_array[index]) / (X_array [index+1] - X_array [index])SWS_Ifx_00008If the input value matches with one of the distribution array values, then return the respective index and ratio = 0.SWS_Ifx_00009If (Xin Index = 0 dpResult ->Ratio = 0SWS_Ifx_00010If (Xin > X_array[N-1]), then return last index of an array and ratio = 0 dpResult ->Index = N - 1 dpResult ->Ratio = 0SWS_Ifx_00011The minimum value of N shall be 1SWS_Ifx_00013This routine returns index and ratio through the structure of type Ifx_DPResultU16_TypeSWS_Ifx_00014Here is the list of implemented routines.SWS_Ifx_00016index = dpResult->Index if dPResult->Ratio == 0 Result = Val_array[index] else Result = Val_array[index] +...SWS_Ifx_00017Here is the list of implemented routines.SWS_Ifx_00021Result = Val_array[dpResult->Index]SWS_Ifx_00022Here is the list of implemented routines.SWS_Ifx_00026Based on searched indices and ratios information using the rele- vant Ifx_DPSearch routine, this routine calculates and...SWS_Ifx_00027Here is the list of implemented routines.SWS_Ifx_00031BaseIndex = dpResultX->Index * num_value + dpResultY->IndexSWS_Ifx_00032Here is the list of implemented routines.SWS_Ifx_00033if(dpResultX->Ratio Ratio Ratio 0.SWS_Ifx_00036If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]).SWS_Ifx_00037Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index.SWS_Ifx_00038If (Xin < X_array[0]) then, Result = Val_array[0]SWS_Ifx_00039If (Xin > X_array[N-1]) then, Result = Val_array[N-1]SWS_Ifx_00040The minimum value of N shall be 1SWS_Ifx_00041Here is the list of implemented routines.SWS_Ifx_00046If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]).SWS_Ifx_00047Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index.SWS_Ifx_00048If (Xin < X_array[0]) then, Result = Val_array[0]SWS_Ifx_00049If (Xin > X_array[N-1]) then, Result = Val_array[N-1]SWS_Ifx_00050The minimum value of N shall be 1SWS_Ifx_00051Here is the list of implemented routines.SWS_Ifx_00056X axis distribution points shall be calculated based on Offset and Shift values.SWS_Ifx_00057If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]).SWS_Ifx_00058Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index.SWS_Ifx_00059If (Xin < X_array[0]) then, Result = Val_array[0]SWS_Ifx_00060If (Xin > X_array[N-1]) then, Result = Val_array[N-1]SWS_Ifx_00061The minimum value of N shall be 1SWS_Ifx_00062Here is the list of implemented routines.SWS_Ifx_00071X axis distribution points shall be calculated based on Offset and Shift values.SWS_Ifx_00072If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]).SWS_Ifx_00073Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index.SWS_Ifx_00074If (Xin < X_array[0]) then, Result = Val_array[0]SWS_Ifx_00075If (Xin > X_array[N-1]) then, Result = Val_array[N-1]SWS_Ifx_00076The minimum value of N shall be 1SWS_Ifx_00077Here is the list of implemented routines Routine ID[hex] Routine prototype 0x045 uint8 Ifx_IntLkUpFixCur_u8_u8 (uint8, uint8,...SWS_Ifx_00081X axis distribution points shall be calculated based on Offset and Interval values.SWS_Ifx_00082If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]).SWS_Ifx_00083Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index.SWS_Ifx_00084If (Xin < X_array[0]) then, Result = Val_array[0]SWS_Ifx_00085If (Xin > X_array[N-1]) then, Result = Val_array[N-1]SWS_Ifx_00086The minimum value of N shall be 1SWS_Ifx_00087Here is the list of implemented routines.SWS_Ifx_00091X axis distribution points shall be calculated based on Offset and Interval values.SWS_Ifx_00092If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]).SWS_Ifx_00093Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index.SWS_Ifx_00094If (Xin < X_array[0]) then, Result = Val_array[0]SWS_Ifx_00095If (Xin > X_array[N-1]) then, Result = Val_array[N-1]SWS_Ifx_00096The minimum value of N shall be 1SWS_Ifx_00097Here is the list of implemented routines.SWS_Ifx_00099Index calculation : indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum...SWS_Ifx_00100Ratio calculation : RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) RatioY = (Yin -...SWS_Ifx_00101LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * RatioY LowerY =...SWS_Ifx_00102If (Xin == X_array[indexX]) and (Y_array[indexY] < Yin < Y_ar- ray[indexY+1]) Result = Val_array [BaseIndex] +...SWS_Ifx_00103If (Yin == Y_array[indexY]) and (X_array[indexX] < Xin < X_ar- ray[indexX+1]) Result = Val_array [BaseIndex] +...SWS_Ifx_00104If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00105If Xin < X_array[0], then indexX = 0, RatioX = 0SWS_Ifx_00106If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0SWS_Ifx_00107If Yin < Y_array[0], then indexY = 0, RatioY = 0SWS_Ifx_00108If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0SWS_Ifx_00109The minimum value of Nx and Ny shall be 1SWS_Ifx_00110Here is the list of implemented routines.SWS_Ifx_00112Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value...SWS_Ifx_00113Ratio calculation: if (indexX < (Nx - 1)) RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) else...SWS_Ifx_00114if(RatioX < 0.SWS_Ifx_00116If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00117If Xin < X_array[0], then indexX = 0SWS_Ifx_00118If Xin > X_array[Nx-1], then indexX = Nx - 1SWS_Ifx_00119If Yin < Y_array[0], then indexY = 0SWS_Ifx_00120If Yin > Y_array[Ny-1], then indexY = Ny - 1SWS_Ifx_00121The minimum value of Nx and Ny shall be 1SWS_Ifx_00122Here is the list of implemented routines.SWS_Ifx_00124X and Y axis distribution points shall be calculated based on Offset and Shift values.SWS_Ifx_00125Index calculation : indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum...SWS_Ifx_00126Ratio calculation : RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) RatioY = (Yin -...SWS_Ifx_00127LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * RatioY LowerY =...SWS_Ifx_00128If (Xin == X_array[indexX]) and (Y_array[indexY] < Yin < Y_ar- ray[indexY+1]) Result = Val_array [BaseIndex] +...SWS_Ifx_00129If (Yin == Y_array[indexY]) and (X_array[indexX] < Xin < X_ar- ray[indexX+1]) Result = Val_array [BaseIndex] +...SWS_Ifx_00130If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00131If Xin < X_array[0], then indexX = 0, RatioX = 0SWS_Ifx_00132If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0SWS_Ifx_00133If Yin < Y_array[0], then indexY = 0, RatioY = 0SWS_Ifx_00134If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0SWS_Ifx_00135The minimum value of Nx and Ny shall be 1SWS_Ifx_00136Here is the list of implemented routines.SWS_Ifx_00140X and Y axis distribution points shall be calculated based on Offset and Shift values.SWS_Ifx_00141Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value...SWS_Ifx_00143Ratio calculation: if (indexX < (Nx - 1)) RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) else...SWS_Ifx_00144if(RatioX < 0.SWS_Ifx_00145If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00146If Xin < X_array[0], then indexX = 0SWS_Ifx_00147If Xin > X_array[Nx-1], then indexX = Nx - 1SWS_Ifx_00148If Yin < Y_array[0], then indexY = 0SWS_Ifx_00149If Yin > Y_array[Ny-1], then indexY = Ny - 1SWS_Ifx_00150The minimum value of Nx and Ny shall be 1SWS_Ifx_00151Here is the list of implemented routines.SWS_Ifx_00154X and Y axis distribution points shall be calculated based on Offset and Interval values.SWS_Ifx_00155Index calculation : indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum...SWS_Ifx_00156Ratio Calculation : RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) RatioY = (Yin -...SWS_Ifx_00157LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * RatioY LowerY =...SWS_Ifx_00158If (Xin == X_array[indexX]) and (Y_array[indexY] < Yin < Y_ar- ray[indexY+1]) Result = Val_array [BaseIndex] +...SWS_Ifx_00159If (Yin == Y_array[indexY]) and (X_array[indexX] < Xin < X_ar- ray[indexX+1]) Result = Val_array [BaseIndex] +...SWS_Ifx_00160If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00161If Xin < X_array[0], then indexX = 0, RatioX = 0SWS_Ifx_00162If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0SWS_Ifx_00163If Yin < Y_array[0], then indexY = 0, RatioY = 0SWS_Ifx_00164If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0SWS_Ifx_00165The minimum value of Nx and Ny shall be 1SWS_Ifx_00166Here is the list of implemented routines.SWS_Ifx_00170X and Y axis distribution points shall be calculated based on Offset and Interval values.SWS_Ifx_00171Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value...SWS_Ifx_00173Ratio calculation: if (indexX < (Nx - 1)) RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) else...SWS_Ifx_00174if(RatioX < 0.SWS_Ifx_00175If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00176If Xin < X_array[0], then indexX = 0SWS_Ifx_00177If Xin > X_array[Nx-1], then indexX = Nx - 1SWS_Ifx_00178If Yin < Y_array[0], then indexY = 0SWS_Ifx_00179If Yin > Y_array[Ny-1], then indexY = Ny - 1SWS_Ifx_00180The minimum value of Nx and Ny shall be 1SWS_Ifx_00181Here is the list of implemented routines.SWS_Ifx_00185Record layout Name Element1 Element2 Distr_s8 sint8 N sint8 X[] Distr_u8 uint8 N uint8 X[] Distr_s16 sint16 N sint16 X[]...SWS_Ifx_00186For IntTypeMn, OutTypeMN of {s8, u8,s16, u16,s32, u32} IntCur__ FixIntCur__ IntMap__ FixIntMap__ For InTypeMn, OutTypeMn of...SWS_Ifx_00200Ifx_DPResultU16_Type structure shall not be read/write/modified by the user directly.SWS_Ifx_00201Do not call this routine until you have searched the axis using the Ifx_DPSearch routine.SWS_Ifx_00202Do not call this routine until you have searched the axis using the Ifx_DPSearch routine.SWS_Ifx_00203Do not call this routine until you have searched the axis using the Ifx_DPSearch routine.SWS_Ifx_00204Do not call this routine until you have searched the axis to ensure the search result contains valid data and is not used...SWS_Ifx_00206BaseIndex = dpResultX->Index * num_value + dpResultY->IndexSWS_Ifx_00207Return Value = Val_array [BaseIndex]SWS_Ifx_00208Do not call this routine until you have searched the axis using the Ifx_DPSearch routine.SWS_Ifx_00209Here is the list of implemented routines.SWS_Ifx_00212Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value...SWS_Ifx_00214Return Value = Val_array [BaseIndex]SWS_Ifx_00216If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00217If Xin < X_array[0], then indexX = 0SWS_Ifx_00218If Xin > X_array[Nx-1], then indexX = Nx - 1SWS_Ifx_00219If Yin < Y_array[0], then indexY = 0SWS_Ifx_00220If Yin > Y_array[Ny-1], then indexY = Ny - 1SWS_Ifx_00221The minimum value of Nx and Ny shall be 1SWS_Ifx_00222Here is the list of implemented routines.SWS_Ifx_00226X and Y axis distribution points shall be calculated based on Offset and Shift values.SWS_Ifx_00227Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value...SWS_Ifx_00229Return Value = Val_array [BaseIndex]SWS_Ifx_00230If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00231If Xin < X_array[0], then indexX = 0SWS_Ifx_00232If Xin > X_array[Nx-1], then indexX = Nx - 1SWS_Ifx_00233If Yin < Y_array[0], then indexY = 0SWS_Ifx_00234If Yin > Y_array[Ny-1], then indexY = Ny - 1SWS_Ifx_00235The minimum value of Nx and Ny shall be 1SWS_Ifx_00236Here is the list of implemented routines Routine ID[hex] Routine prototype 0x0B0 uint8 Ifx_IntLkUpFixBaseMap_u8u8_u8 ( uint8,...SWS_Ifx_00237X and Y axis distribution points shall be calculated based on Offset and Interval values.SWS_Ifx_00238Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value...SWS_Ifx_00240Return Value = Val_array [BaseIndex]SWS_Ifx_00241If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]SWS_Ifx_00242If Xin < X_array[0], then indexX = 0SWS_Ifx_00243If Xin > X_array[Nx-1], then indexX = Nx - 1SWS_Ifx_00244If Yin < Y_array[0], then indexY = 0SWS_Ifx_00245If Yin > Y_array[Ny-1], then indexY = Ny - 1SWS_Ifx_00246The minimum value of Nx and Ny shall be 1SWS_Ifx_00247Here is the list of implemented routines.SWS_Ifx_00248Ratio shall be rounded towards zeroSWS_Ifx_00251The intermediate results during unscaling in interpolation calcula- tion shall be Rounded towards zero.SWS_Ifx_00800Ifx library shall not require initialization phase.SWS_Ifx_00801Ifx library shall not require a shutdown operation phase.SWS_Ifx_00806The Ifx library shall be implemented in a way that the code can be shared among callers in different memory partitions.SWS_Ifx_00807Usage of macros should be avoided.SWS_Ifx_00808A library function can call other library functions because all library functions shall be re-entrant.SWS_Ifx_00809The library, written in C programming language, should conform to the MISRA C Standard.SWS_Ifx_00810Each AUTOSAR library Module implementation *.SWS_Ifx_00811Each AUTOSAR library Module implementation *.SWS_Ifx_00812All AUTOSAR library Modules should use the AUTOSAR data types (integers, boolean) instead of native C data types, unless this...SWS_Ifx_00813All AUTOSAR library Modules should avoid direct use of compiler and platform specific keyword, unless this library is clearly...SWS_Ifx_00814The standardized common published parameters as required by SRS_BSW_00402 in the General Requirements on Basic Software...SWS_Ifx_00816If source code for caller and callee of Ifx_GetVersionInfo is avail- able, the Ifx library should realize Ifx_GetVersionInfo...SWS_Ifx_00818The Ifx library shall not have any configuration options that may affect the functional behavior of the routines.SWS_Ifx_00820If input value is less than first distribution entry then first value of the distribution array shall be returned or used in...SWS_Ifx_00821Axis distribution passed to Ifx routines shall have normal monotony sequence.SWS_Ifx_00823Section 7.SWS_Ifx_00999These requirements are not applicable to this specification.SWS_Ifx_91001Module Header File Imported Type Std Std_Types.SWS_Ifx_91003Based on searched indices and ratios information using the relevant Ifx_DPSearch routine, this routine calculates and returns...SWS_Ifx_91004Do not call this routine without using the Ifx_DPSearch routine.SWS_Ifx_91005Routine ID[hex] Routine prototype 0x0F1 sint8 Ifx_IpoCub_s8 ( const Ifx_DPResultU16_Type * dpResultX, const...
Funktionen & Typen — Detailansicht
함수 Ifx_DPSearch_<InTypeMn> [SWS_Ifx_00004] 📄 PDF
void Ifx_DPSearch_<InTypeMn>(Ifx_DPResultU16_Type* dpResult, <InType> Xin, <InType> N, const <InType>* X_array);
Ifx_DPSearch_<InTypeMn> routine searches the position of input Xin within the given distribution array X_array, and returns index and ratio necessary for interpolation.
함수 Ifx_IpoCur_<OutTypeMn> [SWS_Ifx_00015] 📄 PDF
<OutType> Ifx_IpoCur_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResult, const <InType>* Val_array);
Based on searched index and ratio information, this routine calculates and returns interpolation for curve.
함수 Ifx_LkUpCur_<OutTypeMn> [SWS_Ifx_00020] 📄 PDF
<OutType> Ifx_LkUpCur_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResult, const <InType>* Val_array);
Based on searched index and ratio information, this routine calculates and returns entry point of the result array.
함수 Ifx_IpoMap_<OutTypeMn> [SWS_Ifx_00025] 📄 PDF
<OutType> Ifx_IpoMap_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);
Based on searched indices and ratios information using the relevant Ifx_DPSearch routine, this routine calculates and returns the interpolation result for map.
함수 Ifx_LkUpMap_<OutTypeMn> [SWS_Ifx_00030] 📄 PDF
<OutType> Ifx_LkUpMap_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);
Based on searched index and ratio information, this routine calculates and returns entry value of the result distribution array.
함수 Ifx_IntIpoCur_<InTypeMn>_<OutTypeMn> [SWS_Ifx_00035] 📄 PDF
<OutType> Ifx_IntIpoCur_<InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> N, const <InType>* X_array, const <InType>* Val_array);
This routine calculates interpolation of a curve at position Xin using below equation.
함수 Ifx_IntLkUpCur_<InTypeMn>_<OutTypeMn> [SWS_Ifx_00045] 📄 PDF
<OutType> Ifx_IntLkUpCur_<InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> N, const <InType>* X_array, const <InType>* Val_array);
This routine returns respective entry value of the result at position Xin based on below equations.
함수 Ifx_IntIpoFixCur_<InTypeMn>_<OutTypeMn> [SWS_Ifx_00055] 📄 PDF
<OutType> Ifx_IntIpoFixCur_<InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Shift);
This routine calculates interpolation of a curve at position Xin using below equations.
함수 Ifx_IntLkUpFixCur_<InTypeMn>_<OutTypeMn> [SWS_Ifx_00070] 📄 PDF
<OutType> Ifx_IntLkUpFixCur_<InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Shift);
This routine returns respective entry value of the result distribution array at position Xin based on below equations.
함수 Ifx_IntIpoFixICur_<InTypeMn>_<OutTypeMn> [SWS_Ifx_00080] 📄 PDF
<OutType> Ifx_IntIpoFixICur_<InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Interval);
This routine calculates interpolation of a curve at position Xin using below equations.
함수 Ifx_IntLkUpFixICur_<InTypeMn>_<OutTypeMnt> [SWS_Ifx_00090] 📄 PDF
<OutType> Ifx_IntLkUpFixICur_<InTypeMn>_<OutTypeMnt>(<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Interval);
This routine returns respective entry value of the result distribution array at position Xin based on below equations.
함수 Ifx_IntIpoMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00098] 📄 PDF
<OutType> Ifx_IntIpoMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, const <InType>* Val_array);
This routine calculates Interpolation of a map at position X and Y using below equations.
함수 Ifx_IntLkUpMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00111] 📄 PDF
<OutType> Ifx_IntLkUpMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, const <InType>* Val_array);
This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.
함수 Ifx_IntIpoFixMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00123] 📄 PDF
<OutType> Ifx_IntIpoFixMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <inType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> ShiftX, <InType> OffsetY, <InType> ShiftY);
This routine calculates Interpolation of a map at position X and Y using below equations.
함수 Ifx_IntLkUpFixMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00139] 📄 PDF
<OutType> Ifx_IntLkUpFixMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> ShiftX, <InType> OffsetY, <InType> ShiftY);
This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.
함수 Ifx_IntIpoFixIMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00153] 📄 PDF
<OutType> Ifx_IntIpoFixIMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> IntervalX, <InType> OffsetY, <InType> IntervalY);
This routine calculates Interpolation of a map at position X and Y using below equations.
함수 Ifx_IntLkUpFixIMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00169] 📄 PDF
<OutType> Ifx_IntLkUpFixIMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> IntervalX, <InType> OffsetY, <InType> IntervalY);
This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.
함수 Ifx_LkUpBaseMap_<OutTypeMn> [SWS_Ifx_00205] 📄 PDF
<OutType> Ifx_LkUpBaseMap_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);
Based on searched index and ratio information, this routine calculates and returns entry value of the result distribution array.
함수 Ifx_IntLkUpBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00211] 📄 PDF
<OutType> Ifx_IntLkUpBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, const <InType>* Val_array);
This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.
함수 Ifx_IntLkUpFixBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00225] 📄 PDF
<OutType> Ifx_IntLkUpFixBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> ShiftX, <InType> OffsetY, <InType> ShiftY);
This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.
함수 Ifx_IntLkUpFixIBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn> [SWS_Ifx_00249] 📄 PDF
<OutType> Ifx_IntLkUpFixIBaseMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* Val_array, <InType> OffsetX, <InType> IntervalX, <InType> OffsetY, <InType> IntervalY);
This routine returns respective entry value of the result distribution array at position Xin and Yin based on below equations.
함수 Ifx_GetVersionInfo [SWS_Ifx_00815] 📄 PDF
void Ifx_GetVersionInfo(Std_VersionInfoType* versioninfo);
Returns the version information of this library.
함수 Ifx_IpoCub_<OutTypeMn> [SWS_Ifx_91002] 📄 PDF
<OutType> Ifx_IpoCub_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, const Ifx_DPResultU16_Type* dpResultZ, uint16 num_x, uint16 num_y, const <InType>* Val_array);
Based on searched indices and ratios information using the relevant Ifx_DPSearch routine, this routine calculates and returns the interpolation result for a 3D cuboid.
타입 Ifx_DPResultU16_Type [SWS_Ifx_00002] 📄 PDF
Structure used for data point search for index and ratio
requirement SWS_Ifx_00001 [SWS_Ifx_00001] 📄 PDF
The Ifx module shall provide the following files: • C files, Ifx_<name>.c used to implement the library. All C files shall be prefixed with 'Ifx_'. Implementation & grouping of routines with respect to C files is recommended as per below options and there is no restriction to follow the same. Option 1 : <Name> can be function name providing one C file per function, eg.: Ifx_IntIpoMap_u16u8_u8.c etc. Option 2 : <Name> can have common name of group of functions: • 2.1 Group by object family: eg.:Ifx_IpoMap.c, Ifx_IpoCur.c, Ifx_DPSearch.c • 2.2 Group by routine family: eg.: Ifx_IpoMap.c, Ifx_IntIpoMap.c, Ifx_IpoCur.c etc. • 2.3 Group by method family: eg.: Ifx_Ipo.c, Ifx_IntIpo.c, Ifx_Lkup.c, Ifx_IntLkup.c, etc. • 2.4 Group by architecture: eg.: Ifx_IpoMap8.c, Ifx_IpoMap16.c • 2.5 Group by other methods: (individual grouping allowed) Option 3 : <Name> can be removed so that single C file shall contain all Ifx functions, eg.: Ifx.c. Using above options gives certain flexibility of choosing suitable granularity with re- duced number of C files. Linking only on-demand is also possible in case of some options.
requirement SWS_Ifx_00003 [SWS_Ifx_00003] 📄 PDF
Ratio shall have resolution of 2 -16
requirement SWS_Ifx_00006 [SWS_Ifx_00006] 📄 PDF
If (X_array[0] <= Xin <= X_array[N-1]), then returned Index shall be the lowest index. dpResult ->Index = index- dpResult ->Ratio = (Xin - X_array[index]) / (X_array [index+1] - X_array [index])
requirement SWS_Ifx_00008 [SWS_Ifx_00008] 📄 PDF
If the input value matches with one of the distribution array values, then return the respective index and ratio = 0. If (Xin == X_array[index]), then dpResult ->Index = index dpResult ->Ratio = 0
requirement SWS_Ifx_00009 [SWS_Ifx_00009] 📄 PDF
If (Xin < X_array[0]), then return first index of an array and ratio = 0 dpResult ->Index = 0 dpResult ->Ratio = 0
requirement SWS_Ifx_00010 [SWS_Ifx_00010] 📄 PDF
If (Xin > X_array[N-1]), then return last index of an array and ratio = 0 dpResult ->Index = N - 1 dpResult ->Ratio = 0
requirement SWS_Ifx_00011 [SWS_Ifx_00011] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00013 [SWS_Ifx_00013] 📄 PDF
This routine returns index and ratio through the structure of type Ifx_DPResultU16_Type
requirement SWS_Ifx_00014 [SWS_Ifx_00014] 📄 PDF
Here is the list of implemented routines. Service ID[hex] Service prototype 0x001 void Ifx_DPSearch_u8 (Ifx_DPResultU16_Type*, uint8, uint8, const uint8 *) 0x002 void Ifx_DPSearch_s8 (Ifx_DPResultU16_Type*, sint8, sint8, const sint8 *) 0x003 void Ifx_DPSearch_u16 (Ifx_DPResultU16_Type*, uint16, uint16, const uint16 * ) 0x004 void Ifx_DPSearch_s16 (Ifx_DPResultU16_Type*, sint16, sint16, const sint16 *) 0x0C1 void Ifx_DPSearch_u32 (Ifx_DPResultU16_Type* dpResult, uint32 Xin, uint32 N, const uint32 * X_array) 0x0C2 void Ifx_DPSearch_s32 (Ifx_DPResultU16_Type* dpResult, sint32 Xin, sint32 N, const sint32 * X_array)
requirement SWS_Ifx_00016 [SWS_Ifx_00016] 📄 PDF
index = dpResult->Index if dPResult->Ratio == 0 Result = Val_array[index] else Result = Val_array[index] + (Val_array[index+1] - Val_array[index]) * dpResult->Ratio Note: In case of missing HW support the Software solution mentioned below could also be used to avoid 64-bit arithmetic operation. if (Val_array[index] <= Val_array[index+1]) then Result = Val_array[index] + (Val_array[index+1] - Val_array[index]) * dpResult->Ratio if (Val_array[index] > Val_array[index+1]) then Result = Val_array[index] - (Val_array[index] - Val_array[index+1]) * dpResult->Ratio
requirement SWS_Ifx_00017 [SWS_Ifx_00017] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x005 sint8 Ifx_IpoCur_s8 (const Ifx_DPResultU16_Type*, const sint8 *) 0x006 sint16 Ifx_IpoCur_s16 (const Ifx_DPResultU16_Type*, const sint16 *) 0x007 uint16 Ifx_IpoCur_u16 (const Ifx_DPResultU16_Type*, const uint16 *) 0x008 uint8 Ifx_IpoCur_u8 (const Ifx_DPResultU16_Type*, const uint8 *) 0x0C3 uint32 Ifx_IpoCur_u32 (const Ifx_DPResultU16_ Type*dpResult, const uint32* Val_array ) 0x0C4 sint32 Ifx_IpoCur_s32 (const Ifx_DPResultU16_ Type*dpResult, const sint32* Val_array )
requirement SWS_Ifx_00021 [SWS_Ifx_00021] 📄 PDF
Result = Val_array[dpResult->Index]
requirement SWS_Ifx_00022 [SWS_Ifx_00022] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x00A sint8 Ifx_LkUpCur_s8 (const Ifx_DPResultU16_Type*, const sint8 *) 0x00B sint16 Ifx_LkUpCur_s16 (const Ifx_DPResultU16_Type*, const sint16 *) 0x00C uint16 Ifx_LkUpCur_u16 (const Ifx_DPResultU16_Type*, const uint16 *) 0x00D uint8 Ifx_LkUpCur_u8 (const Ifx_DPResultU16_Type*, const uint8 *) 0x0C5 sint32 Ifx_LkUpCur_s32 (const Ifx_DPResultU16_Type* dpResult, const sint32 * Val_array) 0x0C6 uint32 Ifx_LkUpCur_u32 (const Ifx_DPResultU16_Type* dpResult, const uint32 * Val_array)
requirement SWS_Ifx_00026 [SWS_Ifx_00026] 📄 PDF
Based on searched indices and ratios information using the rele- vant Ifx_DPSearch routine, this routine calculates and returns the interpolation result for map. BaseIndex = dpResultX->Index * num_value + dpResultY->Index if (dpResultX->Ratio == 0) if (dpResultY->Ratio == 0) Result = Val_array [BaseIndex] else LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] Result = LowerY + (UpperY - LowerY) * dpResultY->Ratio else if (dpResultY->Ratio == 0) LowerX = Val_array[BaseIndex] UpperX = Val_array[BaseIndex + num_value] Result = LowerX + (UpperX - LowerX) * dpResultX->Ratio else LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * dpResultY->Ratio LowerY = Val_array[BaseIndex + num_value] UpperY = Val_array[BaseIndex + num_value + 1] UpperX = LowerY + (UpperY - LowerY) * dpResultY->Ratio Result = LowerX + (UpperX - LowerX) * dpResultX->Ratio
requirement SWS_Ifx_00027 [SWS_Ifx_00027] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x010 uint8 Ifx_IpoMap_u8 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const uint8 *) 0x011 uint16 Ifx_IpoMap_u16 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const uint16 *) Routine ID[hex] Routine prototype 0x012 sint8 Ifx_IpoMap_s8 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const sint8 *) 0x013 sint16 Ifx_IpoMap_s16 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const sint16 *) 0x0C7 sint32 Ifx_IpoMap_s32 ( const Ifx_DPResultU16_ Type*dpResultX, const Ifx_DPResultU16_Type*dpResultY, uint16 num_value, const sint32 * Val_array) 0x0C8 uint32 Ifx_IpoMap_u32 ( const Ifx_DPResultU16_ Type*dpResultX, const Ifx_DPResultU16_Type*dpResultY, uint16 num_value, const uint32 * Val_array)
requirement SWS_Ifx_00031 [SWS_Ifx_00031] 📄 PDF
BaseIndex = dpResultX->Index * num_value + dpResultY->Index
requirement SWS_Ifx_00032 [SWS_Ifx_00032] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x015 uint8 Ifx_LkUpMap_u8 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const uint8 *) 0x016 uint16 Ifx_LkUpMap_u16 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const uint16 *) 0x017 sint8 Ifx_LkUpMap_s8 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const sint8 *) 0x018 sint16 Ifx_LkUpMap_s16 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const sint16 *) 0x0C9 sint32 Ifx_LkUpMap_s32 ( const Ifx_DPResultU16_ Type*dpResultX, const Ifx_DPResultU16_Type*dpResultY, uint16 num_value, const sint32* Val_array) 0x0CA uint32 Ifx_LkUpMap_u32 ( const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type*dpResultY, uint16 num_value, const uint32* Val_array)
requirement SWS_Ifx_00033 [SWS_Ifx_00033] 📄 PDF
if(dpResultX->Ratio < 0.5 && dpResultY->Ratio < 0.5) then return Val_array [BaseIndex] if(dpResultX->Ratio 0.5 && dpResultY->Ratio < 0.5) then return Val_array [BaseIndex + num_value] if(dpResultX->Ratio < 0.5 && dpResultY->Ratio 0.5) then return Val_array [BaseIndex + 1] if(dpResultX->Ratio 0.5 && dpResultY->Ratio 0.5) then return Val_array [BaseIndex + num_value + 1]
requirement SWS_Ifx_00036 [SWS_Ifx_00036] 📄 PDF
If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). RatioX = (Xin - X_array[index]) / (X_array [index+1] - X_array [index]) Result = Val_array[index] + (Val_array[index+1] - Val_array[index])*RatioX
requirement SWS_Ifx_00037 [SWS_Ifx_00037] 📄 PDF
Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index. If (Xin == X_array[index]) then, Result = Val_array[index]
requirement SWS_Ifx_00038 [SWS_Ifx_00038] 📄 PDF
If (Xin < X_array[0]) then, Result = Val_array[0]
requirement SWS_Ifx_00039 [SWS_Ifx_00039] 📄 PDF
If (Xin > X_array[N-1]) then, Result = Val_array[N-1]
requirement SWS_Ifx_00040 [SWS_Ifx_00040] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00041 [SWS_Ifx_00041] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x01A uint8 Ifx_IntIpoCur_u8_u8 ( uint8, uint8, const uint8 *, const uint8 *) 0x01B uint16 Ifx_IntIpoCur_u8_u16 ( uint8, uint8, const uint8 *, const uint16 *) 0x01C sint8 Ifx_IntIpoCur_u8_s8 ( uint8, uint8, const uint8 *, const sint8 *) 0x01D sint16 Ifx_IntIpoCur_u8_s16 ( uint8, uint8, const uint8 *, const sint16 *) 0x01E uint8 Ifx_IntIpoCur_u16_u8 ( uint16, uint16, const uint16 *, const uint8 *) 0x01F uint16 Ifx_IntIpoCur_u16_u16 ( uint16, uint16, const uint16 *, const uint16 *) 0x020 sint8 Ifx_IntIpoCur_u16_s8 ( uint16, uint16, const uint16 *, const sint8 *) 0x021 sint16 Ifx_IntIpoCur_u16_s16 ( uint16, uint16, const uint16 *, const sint16 *) 0x022 uint8 Ifx_IntIpoCur_s8_u8 ( sint8, sint8, const sint8 *, const uint8 *) 0x023 uint16 Ifx_IntIpoCur_s8_u16 ( sint8, sint8, const sint8 *, const uint16 *) 0x024 sint8 Ifx_IntIpoCur_s8_s8 ( sint8, sint8, const sint8 *, const sint8 *) 0x025 sint16 Ifx_IntIpoCur_s8_s16 ( sint8, sint8, const sint8 *, const sint16 *) 0x026 uint8 Ifx_IntIpoCur_s16_u8 ( sint16, sint16, const sint16 *, const uint8 *) 0x027 uint16 Ifx_IntIpoCur_s16_u16 ( sint16, sint16, const sint16 *, const uint16 *) 0x028 sint8 Ifx_IntIpoCur_s16_s8 ( sint16, sint16, const sint16 *, const sint8 *) 0x029 sint16 Ifx_IntIpoCur_s16_s16 ( sint16, sint16, const sint16 *, const sint16 *) 0x0CD sint32 Ifx_IntIpoCur_s32_s32 ( sint32 Xin, sint32 N, const sint32* X_array, const sint32* Val_array) 0x0CE uint32 Ifx_IntIpoCur_u32_u32 ( uint32 Xin, uint32 N, const uint32* X_array, const uint32* Val_array)
requirement SWS_Ifx_00046 [SWS_Ifx_00046] 📄 PDF
If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). Result = Val_array[index]
requirement SWS_Ifx_00047 [SWS_Ifx_00047] 📄 PDF
Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index. If (Xin == X_array[index]) then, Result = Val_array[index]
requirement SWS_Ifx_00048 [SWS_Ifx_00048] 📄 PDF
If (Xin < X_array[0]) then, Result = Val_array[0]
requirement SWS_Ifx_00049 [SWS_Ifx_00049] 📄 PDF
If (Xin > X_array[N-1]) then, Result = Val_array[N-1]
requirement SWS_Ifx_00050 [SWS_Ifx_00050] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00051 [SWS_Ifx_00051] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x030 uint8 Ifx_IntLkUpCur_u8_u8 ( uint8 , uint8, const uint8 *, const uint8 * ) 0x031 uint16 Ifx_IntLkUpCur_u8_u16 ( uint8 , uint8, const uint8 *, const uint16 * ) 0x032 sint8 Ifx_IntLkUpCur_u8_s8 ( uint8 , uint8, const uint8 *, const sint8 * ) 0x033 sint16 Ifx_IntLkUpCur_u8_s16 ( uint8 , uint8, const uint8 *, const sint16 * ) 0x034 uint8 Ifx_IntLkUpCur_u16_u8 ( uint16 , uint16, const uint16 *, const uint8 * ) 0x035 uint16 Ifx_IntLkUpCur_u16_u16 ( uint16 , uint16, const uint16 *, const uint16 * ) 0x036 sint8 Ifx_IntLkUpCur_u16_s8 ( uint16 , uint16, const uint16 *, const sint8 * ) 0x037 sint16 Ifx_IntLkUpCur_u16_s16 ( uint16 , uint16, const uint16 *, const sint16 * ) 0x038 uint8 Ifx_IntLkUpCur_s8_u8 ( sint8 , sint8, const sint8 *, const uint8 * ) 0x039 uint16 Ifx_IntLkUpCur_s8_u16 ( sint8 , sint8, const sint8 *, const uint16 * ) 0x03A sint8 Ifx_IntLkUpCur_s8_s8 ( sint8, sint8, const sint8 *, const sint8 * ) 0x03B sint16 Ifx_IntLkUpCur_s8_s16 ( sint8, sint8, const sint8 *, const sint16 * ) 0x03C uint8 Ifx_IntLkUpCur_s16_u8 ( sint16, sint16, const sint16 *, const uint8 * ) 0x03D uint16 Ifx_IntLkUpCur_s16_u16 ( sint16, sint16, const sint16 *, const uint16 * ) 0x03E sint8 Ifx_IntLkUpCur_s16_s8 ( sint16, sint16, const sint16 *, const sint8 * ) 0x03F sint16 Ifx_IntLkUpCur_s16_s16 ( sint16, sint16, const sint16 *, const sint16 * ) 0x0CF sint32 Ifx_IntLkUpCur_s32_s32 ( sint32 Xin, sint32 N, const sint32* X_array, const sint32* Val_array ) 0x0D0 uint32 Ifx_IntLkUpCur_u32_u32 ( uint32 Xin, uint32 N, const uint32* X_array, const uint32* Val_array )
requirement SWS_Ifx_00056 [SWS_Ifx_00056] 📄 PDF
X axis distribution points shall be calculated based on Offset and Shift values. X_array [index] = Offset + index * 2Shift If Offset = 10, Shift = 2 and N = 5 then, X_array[5] = {10, 14, 18, 22, 26}
requirement SWS_Ifx_00057 [SWS_Ifx_00057] 📄 PDF
If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). RatioX = (Xin - X_array[index]) / (X_array [index+1] - X_array [index]) Result = Val_array[index] + (Val_array[index+1] - Val_array[index]) * RatioX
requirement SWS_Ifx_00058 [SWS_Ifx_00058] 📄 PDF
Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index. If (Xin == X_array[index]) Result = Val_array[index]
requirement SWS_Ifx_00059 [SWS_Ifx_00059] 📄 PDF
If (Xin < X_array[0]) then, Result = Val_array[0]
requirement SWS_Ifx_00060 [SWS_Ifx_00060] 📄 PDF
If (Xin > X_array[N-1]) then, Result = Val_array[N-1]
requirement SWS_Ifx_00061 [SWS_Ifx_00061] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00062 [SWS_Ifx_00062] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x040 uint8 Ifx_IntIpoFixCur_u8_u8 ( uint8, uint8, const uint8 *, uint8, uint8) 0x041 uint16 Ifx_IntIpoFixCur_u16_u16 (uint16, uint16, const uint16 *, uint16, uint16) 0x042 sint8 Ifx_IntIpoFixCur_s8_s8 ( sint8, sint8, const sint8 *, sint8, sint8) 0x043 sint16 Ifx_IntIpoFixCur_s16_s16 ( sint16, sint16, const sint16 *, sint16, sint16) 0x0D1 sint32 Ifx_IntIpoFixCur_s32_s32 ( sint32 Xin, sint32 N, const sint32* Val_array, sint32 offset, sint32 shift) 0x0D2 uint32 Ifx_IntIpoFixCur_u32_u32 ( uint32 Xin, uint32 N, const uint32* Val_array, uint32 offset, uint32 shift)
requirement SWS_Ifx_00071 [SWS_Ifx_00071] 📄 PDF
X axis distribution points shall be calculated based on Offset and Shift values. X_array [index] = Offset + index * 2Shift If Offset = 10, Shift = 2 and N = 5 then, X_array[5] = {10, 14, 18, 22, 26}
requirement SWS_Ifx_00072 [SWS_Ifx_00072] 📄 PDF
If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). Result = Val_array[index]
requirement SWS_Ifx_00073 [SWS_Ifx_00073] 📄 PDF
Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index. If (Xin == X_array[index]) then, Result = Val_array[index]
requirement SWS_Ifx_00074 [SWS_Ifx_00074] 📄 PDF
If (Xin < X_array[0]) then, Result = Val_array[0]
requirement SWS_Ifx_00075 [SWS_Ifx_00075] 📄 PDF
If (Xin > X_array[N-1]) then, Result = Val_array[N-1]
requirement SWS_Ifx_00076 [SWS_Ifx_00076] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00077 [SWS_Ifx_00077] 📄 PDF
Here is the list of implemented routines Routine ID[hex] Routine prototype 0x045 uint8 Ifx_IntLkUpFixCur_u8_u8 (uint8, uint8, const uint8 *, uint8, uint8) 0x046 uint16 Ifx_IntLkUpFixCur_u16_u16 (uint16, uint16, const uint16 *, uint16, uint16) 0x047 sint8 Ifx_IntLkUpFixCur_s8_s8 (sint8, sint8, const sint8 *, sint8, sint8) 0x048 sint16 Ifx_IntLkUpFixCur_s16_s16 (sint16, sint16, const sint16 *, sint16, sint16) 0x0D3 sint32 Ifx_IntLkUpFixCur_s32_s32 (sint32 Xin, sint32 N, const sint32* Val_array, sint32 offset, sint32 shift) 0x0D4 uint32 Ifx_IntLkUpFixCur_u32_u32 (uint32 Xin, uint32 N, const uint32* Val_array, uint32 offset, uint32 shift)
requirement SWS_Ifx_00081 [SWS_Ifx_00081] 📄 PDF
X axis distribution points shall be calculated based on Offset and Interval values. X_array [index] = offset + index * Interval If Offset = 5, Interval = 12 and N = 5 then, X_array[5] = {5, 17, 29, 41, 53}
requirement SWS_Ifx_00082 [SWS_Ifx_00082] 📄 PDF
If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). RatioX = (Xin - X_array[index]) / (X_array [index+1] - X_array [index]) Result = Val_array[index] + (Val_array[index+1] - Val_array[index]) * RatioX
requirement SWS_Ifx_00083 [SWS_Ifx_00083] 📄 PDF
Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index. If (Xin == X_array[index]) Result = Val_array[index]
requirement SWS_Ifx_00084 [SWS_Ifx_00084] 📄 PDF
If (Xin < X_array[0]) then, Result = Val_array[0]
requirement SWS_Ifx_00085 [SWS_Ifx_00085] 📄 PDF
If (Xin > X_array[N-1]) then, Result = Val_array[N-1]
requirement SWS_Ifx_00086 [SWS_Ifx_00086] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00087 [SWS_Ifx_00087] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x04A uint8 Ifx_IntIpoFixICur_u8_u8 ( uint8, uint8, const uint8 *, uint8, uint8) 0x04B uint16 Ifx_IntIpoFixICur_u16_u16 (uint16, uint16, const uint16 *, uint16, uint16) 0x04C sint8 Ifx_IntIpoFixICur_s8_s8 ( sint8, sint8, const sint8 *, sint8, sint8) 0x04D sint16 Ifx_IntIpoFixICur_s16_s16 ( sint16, sint16, const sint16 *, sint16, sint16) 0x0D5 sint32 Ifx_IntIpoFixICur_s32_s32 ( sint32 Xin, sint32 N, const sint32 * Val_array, sint32 offset, sint32 Interval) 0x0D6 uint32 Ifx_IntIpoFixICur_u32_u32 ( uint32 Xin, uint32 N, const uint32 * Val_array, uint32 offset, uint32 Interval)
requirement SWS_Ifx_00091 [SWS_Ifx_00091] 📄 PDF
X axis distribution points shall be calculated based on Offset and Interval values. X_array [index] = offset + index * Interval If Offset = 5, Interval = 12 and N = 5 then, X_array[5] = {5, 17, 29, 41, 53}
requirement SWS_Ifx_00092 [SWS_Ifx_00092] 📄 PDF
If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). Result = Val_array[index]
requirement SWS_Ifx_00093 [SWS_Ifx_00093] 📄 PDF
Input value matches with one of the distribution array value then result shall be respective Y array element indicated by index. If (Xin == X_array[index]) Result = Val_array[index]
requirement SWS_Ifx_00094 [SWS_Ifx_00094] 📄 PDF
If (Xin < X_array[0]) then, Result = Val_array[0]
requirement SWS_Ifx_00095 [SWS_Ifx_00095] 📄 PDF
If (Xin > X_array[N-1]) then, Result = Val_array[N-1]
requirement SWS_Ifx_00096 [SWS_Ifx_00096] 📄 PDF
The minimum value of N shall be 1
requirement SWS_Ifx_00097 [SWS_Ifx_00097] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x050 uint8 Ifx_IntLkUpFixICur_u8_u8 ( uint8, uint8, const uint8 *, uint8, uint8) 0x051 uint16 Ifx_IntLkUpFixICur_u16_u16 (uint16, uint16, const uint16 *, uint16, uint16) 0x052 sint8 Ifx_IntLkUpFixICur_s8_s8 ( sint8, sint8, const sint8 *, sint8, sint8) 0x053 sint16 Ifx_IntLkUpFixICur_s16_s16 ( sint16, sint16, const sint16 *, sint16, sint16) 0x0D7 sint32 Ifx_IntLkUpFixICur_s32_s32 ( sint32 Xin, sint32 N, const sint32 * Val_array, sint32 offset, sint32 Interval) 0x0D8 uint32 Ifx_IntLkUpFixICur_u32_u32 ( uint32 Xin, uint32 N, const uint32 * Val_array, uint32 offset, uint32 Interval)
requirement SWS_Ifx_00099 [SWS_Ifx_00099] 📄 PDF
Index calculation : indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00100 [SWS_Ifx_00100] 📄 PDF
Ratio calculation : RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) RatioY = (Yin - Y_array[indexY]) / (Y_array [indexY+1] - Y_array [indexY])
requirement SWS_Ifx_00101 [SWS_Ifx_00101] 📄 PDF
LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * RatioY LowerY = Val_array [BaseIndex + Ny] UpperY = Val_array [BaseIndex + Ny + 1] UpperX = LowerY + (UpperY - LowerY) * RatioY Result = LowerX + (UpperX - LowerX) * RatioX
requirement SWS_Ifx_00102 [SWS_Ifx_00102] 📄 PDF
If (Xin == X_array[indexX]) and (Y_array[indexY] < Yin < Y_ar- ray[indexY+1]) Result = Val_array [BaseIndex] + (Val_array [BaseIndex+1] - Val_array[BaseIndex]) * RatioY
requirement SWS_Ifx_00103 [SWS_Ifx_00103] 📄 PDF
If (Yin == Y_array[indexY]) and (X_array[indexX] < Xin < X_ar- ray[indexX+1]) Result = Val_array [BaseIndex] + (Val_array [BaseIndex+Ny] - Val_array[BaseIndex]) * RatioX
requirement SWS_Ifx_00104 [SWS_Ifx_00104] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00105 [SWS_Ifx_00105] 📄 PDF
If Xin < X_array[0], then indexX = 0, RatioX = 0
requirement SWS_Ifx_00106 [SWS_Ifx_00106] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0
requirement SWS_Ifx_00107 [SWS_Ifx_00107] 📄 PDF
If Yin < Y_array[0], then indexY = 0, RatioY = 0
requirement SWS_Ifx_00108 [SWS_Ifx_00108] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0
requirement SWS_Ifx_00109 [SWS_Ifx_00109] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00110 [SWS_Ifx_00110] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x060 uint8 Ifx_IntIpoMap_u16u8_u8 (uint16, uint8, uint16, uint16, const uint16 *, const uint8 *, const uint8 * ) 0x061 uint16 Ifx_IntIpoMap_u16u8_u16 (uint16, uint8, uint16, uint16, const uint16 *, const uint8 *, const uint16 * ) 0x062 sint8 Ifx_IntIpoMap_u16u8_s8 (uint16, uint8, uint16, uint16, const uint16 *, const uint8 *, const sint8 * ) Routine ID[hex] Routine prototype 0x063 sint16 Ifx_IntIpoMap_u16u8_s16 (uint16, uint8, uint16, uint16, const uint16 *, const uint8 *, const sint16 * ) 0x064 uint8 Ifx_IntIpoMap_u16u16_u8 (uint16, uint16, uint16, uint16, const uint16 *, const uint16 *, const uint8 * ) 0x065 uint16 Ifx_IntIpoMap_u16u16_u16 (uint16, uint16, uint16, uint16, const uint16 *, const uint16 *, const uint16 * ) 0x066 sint8 Ifx_IntIpoMap_u16u16_s8 (uint16, uint16, uint16, uint16, const uint16 *, const uint16 *, const sint8 * ) 0x067 sint16 Ifx_IntIpoMap_u16u16_s16 (uint16, uint16, uint16, uint16, const uint16 *, const uint16 *, const sint16 * ) 0x068 uint8 Ifx_IntIpoMap_u16s8_u8 (uint16, sint8, uint16, uint16, const uint16 *, const sint8 *, const uint8 * ) 0x069 uint16 Ifx_IntIpoMap_u16s8_u16 (uint16, sint8, uint16, uint16, const uint16 *, const sint8 *, const uint16 * ) 0x06A sint8 Ifx_IntIpoMap_u16s8_s8 (uint16, sint8, uint16, uint16, const uint16 *, const sint8 *, const sint8 * ) 0x06B sint16 Ifx_IntIpoMap_u16s8_s16 (uint16, sint8, uint16, uint16, const uint16 *, const sint8 *, const sint16 * ) 0x06C uint8 Ifx_IntIpoMap_u16s16_u8 (uint16, sint16, uint16, uint16, const uint16 *, const sint16 *, const uint8 * ) 0x06D uint16 Ifx_IntIpoMap_u16s16_u16 (uint16, sint16, uint16, uint16, const uint16 *, const sint16 *, const uint16 * ) 0x06E sint8 Ifx_IntIpoMap_u16s16_s8 (uint16, sint16, uint16, uint16, const uint16 *, const sint16 *, const sint8 * ) 0x06F sint16 Ifx_IntIpoMap_u16s16_s16 (uint16, sint16, uint16, uint16, const uint16 *, const sint16 *, const sint16 * ) 0x070 uint8 Ifx_IntIpoMap_s16u8_u8 (sint16, uint8, sint16, sint16, const sint16 *, const uint8 *, const uint8 * ) 0x071 uint16 Ifx_IntIpoMap_s16u8_u16 (sint16, uint8, sint16, sint16, const sint16 *, const uint8 *, const uint16 * ) 0x072 sint8 Ifx_IntIpoMap_s16u8_s8 (sint16, uint8, sint16, sint16, const sint16 *, const uint8 *, const sint8 * ) 0x073 sint16 Ifx_IntIpoMap_s16u8_s16 (sint16, uint8, sint16, sint16, const sint16 *, const uint8 *, const sint16 * ) 0x074 uint8 Ifx_IntIpoMap_s16s8_u8 (sint16, sint8, sint16, sint16, const sint16 *, const sint8 *, const uint8 * ) 0x075 uint16 Ifx_IntIpoMap_s16s8_u16 (sint16, sint8, sint16, sint16, const sint16 *, const sint8 *, const uint16 * ) 0x076 sint8 Ifx_IntIpoMap_s16s8_s8 (sint16, sint8, sint16, sint16, const sint16 *, const sint8 *, const sint8 * ) 0x077 sint16 Ifx_IntIpoMap_s16s8_s16 (sint16, sint8, sint16, sint16, const sint16 *, const sint8 *, const sint16 * ) 0x078 uint8 Ifx_IntIpoMap_s16s16_u8 (sint16, sint16, sint16, sint16, const sint16 *, const sint16 *, const uint8 * ) 0x079 uint16 Ifx_IntIpoMap_s16s16_u16 (sint16, sint16, sint16, sint16, const sint16 *, const sint16 *, const uint16 * ) 0x07A sint8 Ifx_IntIpoMap_s16s16_s8 (sint16, sint16, sint16, sint16, const sint16 *, const sint16 *, const sint8 * ) 0x07B sint16 Ifx_IntIpoMap_s16s16_s16 (sint16, sint16, sint16, sint16, const sint16 *, const sint16 *, const sint16 * ) 0x07C uint8 Ifx_IntIpoMap_u8u8_u8 (uint8, uint8, uint8, uint8, const uint8 *, const uint8 *, const uint8 * ) Routine ID[hex] Routine prototype 0x07D uint16 Ifx_IntIpoMap_u8u8_u16 (uint8, uint8, uint8, uint8, const uint8 *, const uint8 *, const uint16 * ) 0x07E sint8 Ifx_IntIpoMap_u8u8_s8 (uint8, uint8, uint8, uint8, const uint8 *, const uint8 *, const sint8 * ) 0x07F sint16 Ifx_IntIpoMap_u8u8_s16 (uint8, uint8, uint8, uint8, const uint8 *, const uint8 *, const sint16 * ) 0x080 uint8 Ifx_IntIpoMap_u8s8_u8 (uint8, sint8, uint8, uint8, const uint8 *, const sint8 *, const uint8 * ) 0x081 uint16 Ifx_IntIpoMap_u8s8_u16 (uint8, sint8, uint8, uint8, const uint8 *, const sint8 *, const uint16 * ) 0x082 sint8 Ifx_IntIpoMap_u8s8_s8 (uint8, sint8, uint8, uint8, const uint8 *, const sint8 *, const sint8 * ) 0x083 sint16 Ifx_IntIpoMap_u8s8_s16 (uint8, sint8, uint8, uint8, const uint8 *, const sint8 *, const sint16 * ) 0x084 uint8 Ifx_IntIpoMap_s8s8_u8 (sint8, sint8, sint8, sint8, const sint8 *, const sint8 *, const uint8 * ) 0x085 uint16 Ifx_IntIpoMap_s8s8_u16 (sint8, sint8, sint8, sint8, const sint8 *, const sint8 *, const uint16 * ) 0x086 sint8 Ifx_IntIpoMap_s8s8_s8 (sint8, sint8, sint8, sint8, const sint8 *, const sint8 *, const sint8 * ) 0x087 sint16 Ifx_IntIpoMap_s8s8_s16 (sint8, sint8, sint8, sint8, const sint8 *, const sint8 *, const sint16 * ) 0x0D9 sint32 Ifx_IntIpoMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * X_array, const sint32 * Y_array, const sint32 * Val_array) 0x0DA uint32 Ifx_IntIpoMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * X_array, const uint32 * Y_array, const uint32 * Val_array)
requirement SWS_Ifx_00112 [SWS_Ifx_00112] 📄 PDF
Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00113 [SWS_Ifx_00113] 📄 PDF
Ratio calculation: if (indexX < (Nx - 1)) RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) else RatioX = 0 if (indexY < (Ny - 1)) RatioY = (Yin - Y_array[indexY]) / (Y_array [indexY+1] - Y_array [indexY]) else RatioY = 0
requirement SWS_Ifx_00114 [SWS_Ifx_00114] 📄 PDF
if(RatioX < 0.5 && RatioY < 0.5) then Result = Val_array [BaseIndex] if(RatioX 0.5 && RatioY < 0.5) then Result = Val_array [BaseIndex + Ny] if(RatioX < 0.5 && RatioY 0.5) then Result = Val_array [BaseIndex + 1] if(RatioX 0.5 && RatioY 0.5) then Result = Val_array [BaseIndex + Ny + 1]
requirement SWS_Ifx_00116 [SWS_Ifx_00116] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00117 [SWS_Ifx_00117] 📄 PDF
If Xin < X_array[0], then indexX = 0
requirement SWS_Ifx_00118 [SWS_Ifx_00118] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1
requirement SWS_Ifx_00119 [SWS_Ifx_00119] 📄 PDF
If Yin < Y_array[0], then indexY = 0
requirement SWS_Ifx_00120 [SWS_Ifx_00120] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1
requirement SWS_Ifx_00121 [SWS_Ifx_00121] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00122 [SWS_Ifx_00122] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x08A uint8 Ifx_IntLkUpMap_u8u8_u8(uint8, uint8, uint8, uint8, const uint8 *, const uint8 *, const uint8 *) 0x08B sint8 Ifx_IntLkUpMap_s8s8_s8 (sint8, sint8, sint8, sint8, const sint8 *, const sint8 *, const sint8 *) 0x08C uint16 Ifx_IntLkUpMap_u16u16_u16 (uint16, uint16, uint16, uint16, const uint16 *, const uint16 *, const uint16 *) 0x08D sint16 Ifx_IntLkUpMap_s16s16_s16 (sint16, sint16, sint16, sint16, const sint16 *, const sint16 *, const sint16 *) 0x0DB sint32 Ifx_IntLkUpMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * X_array, const sint32 * Y_array, const sint32 * Val_array) 0x0DC uint32 Ifx_IntLkUpMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * X_array, const uint32 * Y_array, const uint32 * Val_array)
requirement SWS_Ifx_00124 [SWS_Ifx_00124] 📄 PDF
X and Y axis distribution points shall be calculated based on Offset and Shift values. X_array[index] = OffsetX + index * 2ShiftX Y_array[index] = OffsetY + index * 2ShiftY If Offset = 10, Shift = 2 and N = 5 then, axis = {10, 14, 18, 22, 26} (applicable to X and Y axis)
requirement SWS_Ifx_00125 [SWS_Ifx_00125] 📄 PDF
Index calculation : indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00126 [SWS_Ifx_00126] 📄 PDF
Ratio calculation : RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) RatioY = (Yin - Y_array[indexY]) / (Y_array [indexY+1] - Y_array [indexY])
requirement SWS_Ifx_00127 [SWS_Ifx_00127] 📄 PDF
LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * RatioY LowerY = Val_array [BaseIndex + Ny] UpperY = Val_array [BaseIndex + Ny + 1] UpperX = LowerY + (UpperY - LowerY) * RatioY Result = LowerX + (UpperX - LowerX) * RatioX
requirement SWS_Ifx_00128 [SWS_Ifx_00128] 📄 PDF
If (Xin == X_array[indexX]) and (Y_array[indexY] < Yin < Y_ar- ray[indexY+1]) Result = Val_array [BaseIndex] + (Val_array [BaseIndex+1] - Val_array[BaseIndex]) * RatioY
requirement SWS_Ifx_00129 [SWS_Ifx_00129] 📄 PDF
If (Yin == Y_array[indexY]) and (X_array[indexX] < Xin < X_ar- ray[indexX+1]) Result = Val_array [BaseIndex] + (Val_array [BaseIndex+Ny] - Val_array[BaseIndex]) * RatioX
requirement SWS_Ifx_00130 [SWS_Ifx_00130] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00131 [SWS_Ifx_00131] 📄 PDF
If Xin < X_array[0], then indexX = 0, RatioX = 0
requirement SWS_Ifx_00132 [SWS_Ifx_00132] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0
requirement SWS_Ifx_00133 [SWS_Ifx_00133] 📄 PDF
If Yin < Y_array[0], then indexY = 0, RatioY = 0
requirement SWS_Ifx_00134 [SWS_Ifx_00134] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0
requirement SWS_Ifx_00135 [SWS_Ifx_00135] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00136 [SWS_Ifx_00136] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x090 uint8 Ifx_IntIpoFixMap_u8u8_u8 ( uint8, uint8, uint8, uint8, const uint8 *, uint8, uint8, uint8, uint8) 0x091 uint16 Ifx_IntIpoFixMap_u16u16_u16 ( uint16, uint16, uint16, uint16, const uint16 *, uint16, uint16, uint16, uint16) 0x092 sint8 Ifx_IntIpoFixMap_s8s8_s8 ( sint8, sint8, sint8, sint8, const sint8 *, sint8, sint8, sint8, sint8) 0x093 sint16 Ifx_IntIpoFixMap_s16s16_s16 ( sint16, sint16, sint16, sint16, const sint16 *, sint16, sint16, sint16, sint16) 0x0DF sint32 Ifx_IntIpoFixMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * Val_array, sint32 offsetX, sint32 ShiftX, sint32 offsetY, sint32 shiftY) 0x0E0 uint32 Ifx_IntIpoFixMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * Val_array, uint32 offsetX, uint32 ShiftX, uint32 offsetY, uint32 shiftY)
requirement SWS_Ifx_00140 [SWS_Ifx_00140] 📄 PDF
X and Y axis distribution points shall be calculated based on Offset and Shift values. X_array[index] = offsetX + index * 2ShiftX Y_array[index] = offsetY + index * 2ShiftY If Offset = 10, shift = 2 and N = 5 then, axis = {10, 14, 18, 22, 26} (applicable to X and Y axis)
requirement SWS_Ifx_00141 [SWS_Ifx_00141] 📄 PDF
Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00143 [SWS_Ifx_00143] 📄 PDF
Ratio calculation: if (indexX < (Nx - 1)) RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) else RatioX = 0 if (indexY < (Ny - 1)) RatioY = (Yin - Y_array[indexY]) / (Y_array [indexY+1] - Y_array [indexY]) else RatioY = 0
requirement SWS_Ifx_00144 [SWS_Ifx_00144] 📄 PDF
if(RatioX < 0.5 && RatioY < 0.5) then Result = Val_array [BaseIndex] if(RatioX 0.5 && RatioY < 0.5) then Result = Val_array [BaseIndex + Ny] if(RatioX < 0.5 && RatioY 0.5) then Result = Val_array [BaseIndex + 1] if(RatioX 0.5 && RatioY 0.5) then Result = Val_array [BaseIndex + Ny + 1]
requirement SWS_Ifx_00145 [SWS_Ifx_00145] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00146 [SWS_Ifx_00146] 📄 PDF
If Xin < X_array[0], then indexX = 0
requirement SWS_Ifx_00147 [SWS_Ifx_00147] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1
requirement SWS_Ifx_00148 [SWS_Ifx_00148] 📄 PDF
If Yin < Y_array[0], then indexY = 0
requirement SWS_Ifx_00149 [SWS_Ifx_00149] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1
requirement SWS_Ifx_00150 [SWS_Ifx_00150] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00151 [SWS_Ifx_00151] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x095 uint8 Ifx_IntLkUpFixMap_u8u8_u8 ( uint8, uint8, uint8, uint8, const uint8 *, uint8, uint8, uint8, uint8) 0x096 uint16 Ifx_IntLkUpFixMap_u16u16_u16 ( uint16, uint16, uint16, uint16, const uint16 *, uint16, uint16, uint16, uint16) 0x097 sint8 Ifx_IntLkUpFixMap_s8s8_s8 ( sint8, sint8, sint8, sint8, const sint8 *, sint8, sint8, sint8, sint8) 0x098 sint16 Ifx_IntLkUpFixMap_s16s16_s16 ( sint16, sint16, sint16, sint16, const sint16 *, sint16, sint16, sint16, sint16) 0x0E1 sint32 Ifx_IntLkUpFixMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * Val_array, sint32 offsetX, sint32 ShiftX, sint32 offsetY, sint32 shiftY) 0x0E2 uint32 Ifx_IntLkUpFixMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * Val_array, uint32 offsetX, uint32 ShiftX, uint32 offsetY, uint32 shiftY)
requirement SWS_Ifx_00154 [SWS_Ifx_00154] 📄 PDF
X and Y axis distribution points shall be calculated based on Offset and Interval values. X_array[index] = offsetX + index * IntervalX Y_array[index] = offsetY + index * IntervalY If Offset = 10, Interval = 2 and N = 5 then, axis = {10, 12, 14, 16, 18} (applicable to X and Y axis)
requirement SWS_Ifx_00155 [SWS_Ifx_00155] 📄 PDF
Index calculation : indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00156 [SWS_Ifx_00156] 📄 PDF
Ratio Calculation : RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) RatioY = (Yin - Y_array[indexY]) / (Y_array [indexY+1] - Y_array [indexY])
requirement SWS_Ifx_00157 [SWS_Ifx_00157] 📄 PDF
LowerY = Val_array [BaseIndex] UpperY = Val_array [BaseIndex + 1] LowerX = LowerY + (UpperY - LowerY) * RatioY LowerY = Val_array [BaseIndex + Ny] UpperY = Val_array [BaseIndex + Ny + 1] UpperX = LowerY + (UpperY - LowerY) * RatioY Result = LowerX + (UpperX - LowerX) * RatioX
requirement SWS_Ifx_00158 [SWS_Ifx_00158] 📄 PDF
If (Xin == X_array[indexX]) and (Y_array[indexY] < Yin < Y_ar- ray[indexY+1]) Result = Val_array [BaseIndex] + (Val_array [BaseIndex+1] - Val_array[BaseIndex]) * RatioY
requirement SWS_Ifx_00159 [SWS_Ifx_00159] 📄 PDF
If (Yin == Y_array[indexY]) and (X_array[indexX] < Xin < X_ar- ray[indexX+1]) Result = Val_array [BaseIndex] + (Val_array [BaseIndex+Ny] - Val_array[BaseIndex]) * RatioX
requirement SWS_Ifx_00160 [SWS_Ifx_00160] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00161 [SWS_Ifx_00161] 📄 PDF
If Xin < X_array[0], then indexX = 0, RatioX = 0
requirement SWS_Ifx_00162 [SWS_Ifx_00162] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0
requirement SWS_Ifx_00163 [SWS_Ifx_00163] 📄 PDF
If Yin < Y_array[0], then indexY = 0, RatioY = 0
requirement SWS_Ifx_00164 [SWS_Ifx_00164] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0
requirement SWS_Ifx_00165 [SWS_Ifx_00165] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00166 [SWS_Ifx_00166] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x09A uint8 Ifx_IntIpoFixIMap_u8u8_u8 ( uint8, uint8, uint8, uint8, const uint8 *, uint8, uint8, uint8, uint8) 0x09B uint16 Ifx_IntIpoFixIMap_u16u16_u16 ( uint16, uint16, uint16, uint16, const uint16 *, uint16, uint16, uint16, uint16) 0x09C sint8 Ifx_IntIpoFixIMap_s8s8_s8 ( sint8, sint8, sint8, sint8, const sint8 *, sint8, sint8, sint8, sint8) 0x09D sint16 Ifx_IntIpoFixIMap_s16s16_s16 ( sint16, sint16, sint16, sint16, const sint16 *, sint16, sint16, sint16, sint16) 0x0E5 sint32 Ifx_IntIpoFixIMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * Val_array, sint32 offsetX, sint32 ShiftX, sint32 offsetY, sint32 shiftY) 0x0E6 uint32 Ifx_IntIpoFixIMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * Val_array, uint32 offsetX, uint32 ShiftX, uint32 offsetY, uint32 shiftY)
requirement SWS_Ifx_00170 [SWS_Ifx_00170] 📄 PDF
X and Y axis distribution points shall be calculated based on Offset and Interval values. X_array[index] = offsetX + index * IntervalX Y_array[index] = offsetY + index * IntervalY If Offset = 10, Interval = 2 and N = 5 then, axis = {10, 12, 14, 16, 18} (applicable to X and Y axis)
requirement SWS_Ifx_00171 [SWS_Ifx_00171] 📄 PDF
Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00173 [SWS_Ifx_00173] 📄 PDF
Ratio calculation: if (indexX < (Nx - 1)) RatioX = (Xin - X_array[indexX]) / (X_array [indexX+1] - X_array [indexX]) else RatioX = 0 if (indexY < (Ny - 1)) RatioY = (Yin - Y_array[indexY]) / (Y_array [indexY+1] - Y_array [indexY]) else RatioY = 0
requirement SWS_Ifx_00174 [SWS_Ifx_00174] 📄 PDF
if(RatioX < 0.5 && RatioY < 0.5) then Result = Val_array [BaseIndex] if(RatioX 0.5 && RatioY < 0.5) then Result = Val_array [BaseIndex + Ny] if(RatioX < 0.5 && RatioY 0.5) then Result = Val_array [BaseIndex + 1] if(RatioX 0.5 && RatioY 0.5) then Result = Val_array [BaseIndex + Ny + 1]
requirement SWS_Ifx_00175 [SWS_Ifx_00175] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00176 [SWS_Ifx_00176] 📄 PDF
If Xin < X_array[0], then indexX = 0
requirement SWS_Ifx_00177 [SWS_Ifx_00177] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1
requirement SWS_Ifx_00178 [SWS_Ifx_00178] 📄 PDF
If Yin < Y_array[0], then indexY = 0
requirement SWS_Ifx_00179 [SWS_Ifx_00179] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1
requirement SWS_Ifx_00180 [SWS_Ifx_00180] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00181 [SWS_Ifx_00181] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x0A0 uint8 Ifx_IntLkUpFixIMap_u8u8_u8 ( uint8, uint8, uint8, uint8, const uint8 *, uint8, uint8, uint8, uint8) 0x0A1 uint16 Ifx_IntLkUpFixIMap_u16u16_u16 ( uint16, uint16, uint16, uint16, const uint16 *, uint16, uint16, uint16, uint16) 0x0A2 sint8 Ifx_IntLkUpFixIMap_s8s8_s8 ( sint8, sint8, sint8, sint8, const sint8 *, sint8, sint8, sint8, sint8) 0x0A3 sint16 Ifx_IntLkUpFixIMap_s16s16_s16 ( sint16, sint16, sint16, sint16, const sint16 *, sint16, sint16, sint16, sint16) 0x0E7 sint32 Ifx_IntLkUpFixIMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * Val_array, sint32 offsetX, sint32 IntervalX, sint32 offsetY, sint32 IntervalY) 0x0E8 uint32 Ifx_IntLkUpFixIMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * Val_array, uint32 offsetX, uint32 IntervalX, uint32 offsetY, uint32 IntervalY)
requirement SWS_Ifx_00185 [SWS_Ifx_00185] 📄 PDF
Record layout Name Element1 Element2 Distr_s8 sint8 N sint8 X[] Distr_u8 uint8 N uint8 X[] Distr_s16 sint16 N sint16 X[] Distr_u16 uint16 N uint16 X[] Cur_u8 uint8 Val[] Cur_u16 uint16 Val[] Cur_s8 sint8 Val[] Cur_s16 sint16 Val[] Map_u8 uint8 Val[] Map_u16 uint16 Val[] Map_s8 sint8 Val[] Map_s16 sint16 Val[] Cur_u32 uint32 Val[] Cur_s32 sint32 Val[] Map_u32 uint32 Val[] Map_s32 sint32 Val[] Cub_s8 sint8 Val[] Cub_s16 sint16 Val[] Cub_u8 uint8 Val[] Cub_u16 uint16 Val[] Table 8.2: Record layouts for distributed interpolation routines
requirement SWS_Ifx_00186 [SWS_Ifx_00186] 📄 PDF
For IntTypeMn, OutTypeMN of {s8, u8,s16, u16,s32, u32} IntCur_<nTypeMn>_<OutTypeMn> FixIntCur_<InTypeMn>_<OutTypeMn> IntMap_<InTypeMn><InTypeMn>_<OutTypeMn> FixIntMap_<InTypeMn><InTypeMn>_<OutTypeMn> For InTypeMn, OutTypeMn of {s8, u8, s16, u16} IntCub_<InTypeMn><InTypeMn><InTypeMn>_<OutTypeMn> Remark: All combinations have to be defined in IFX_RecordLayout_Blueprint, AUTOSAR_ MOD_IFX_RecordLayout_Blueprint.arxml Note: As mentioned in in chapter 8.4, interpolation routines optimization is achieved by swaping X and Y axis during function call for Call-back notifications for below men- tioned record layouts. From Map_u8u16_u8 (S. No 61) to Map_s16u16_s16 (S. No 84)
requirement SWS_Ifx_00200 [SWS_Ifx_00200] 📄 PDF
Ifx_DPResultU16_Type structure shall not be read/write/modified by the user directly. Only Ifx routines shall have access to this structure.
requirement SWS_Ifx_00201 [SWS_Ifx_00201] 📄 PDF
Do not call this routine until you have searched the axis using the Ifx_DPSearch routine. Only then it is ensured that the search result (Ifx_DPResult U16_Type) contains valid data and is not used uninitialized.
requirement SWS_Ifx_00202 [SWS_Ifx_00202] 📄 PDF
Do not call this routine until you have searched the axis using the Ifx_DPSearch routine. Only then it is ensured that the search result (Ifx_DPResult U16_Type) contains valid data and is not used uninitialized.
requirement SWS_Ifx_00203 [SWS_Ifx_00203] 📄 PDF
Do not call this routine until you have searched the axis using the Ifx_DPSearch routine. Only then it is ensured that the search result (Ifx_DPResult U16_Type) contains valid data and is not used uninitialized.
requirement SWS_Ifx_00204 [SWS_Ifx_00204] 📄 PDF
Do not call this routine until you have searched the axis to ensure the search result contains valid data and is not used uninitialized.
requirement SWS_Ifx_00206 [SWS_Ifx_00206] 📄 PDF
BaseIndex = dpResultX->Index * num_value + dpResultY->Index
requirement SWS_Ifx_00207 [SWS_Ifx_00207] 📄 PDF
Return Value = Val_array [BaseIndex]
requirement SWS_Ifx_00208 [SWS_Ifx_00208] 📄 PDF
Do not call this routine until you have searched the axis using the Ifx_DPSearch routine. Only then it is ensured that the search result (Ifx_DPResult U16_Type) contains valid data and is not used uninitialized.
requirement SWS_Ifx_00209 [SWS_Ifx_00209] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x0A5 uint8 Ifx_LkUpBaseMap_u8 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const uint8 *) Routine ID[hex] Routine prototype 0x0A6 uint16 Ifx_LkUpBaseMap_u16 ( const Ifx_DPResultU16_ Type*, const Ifx_DPResultU16_Type*, uint16, const uint16 *) 0x0A7 sint8 Ifx_LkUpBaseMap_s8 ( const Ifx_DPResultU16_Type*, const Ifx_DPResultU16_Type*, uint16, const sint8 *) 0x0A8 sint16 Ifx_LkUpBaseMap_s16 ( const Ifx_DPResultU16_ Type*, const Ifx_DPResultU16_Type*, uint16, const sint16 *) 0x0CB sint32 Ifx_LkUpBaseMap_s32 ( const Ifx_DPResultU16_ Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const sint32* Val_array) 0x0CC uint32 Ifx_LkUpBaseMap_u32 ( const Ifx_DPResultU16_ Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_Val, const uint32* Val_array)
requirement SWS_Ifx_00212 [SWS_Ifx_00212] 📄 PDF
Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00214 [SWS_Ifx_00214] 📄 PDF
Return Value = Val_array [BaseIndex]
requirement SWS_Ifx_00216 [SWS_Ifx_00216] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00217 [SWS_Ifx_00217] 📄 PDF
If Xin < X_array[0], then indexX = 0
requirement SWS_Ifx_00218 [SWS_Ifx_00218] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1
requirement SWS_Ifx_00219 [SWS_Ifx_00219] 📄 PDF
If Yin < Y_array[0], then indexY = 0
requirement SWS_Ifx_00220 [SWS_Ifx_00220] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1
requirement SWS_Ifx_00221 [SWS_Ifx_00221] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00222 [SWS_Ifx_00222] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x0AA uint8 Ifx_IntLkUpBaseMap_u8u8_u8(uint8, uint8, uint8, uint8, const uint8 *, const uint8 *, const uint8 *) 0x0AB sint8 Ifx_IntLkUpBaseMap_s8s8_s8 (sint8, sint8, sint8, sint8, const sint8 *, const sint8 *, const sint8 *) 0x0AC uint16 Ifx_IntLkUpBaseMap_u16u16_u16 (uint16, uint16, uint16, uint16, const uint16 *, const uint16 *, const uint16 *) 0x0AD sint16 Ifx_IntLkUpBaseMap_s16s16_s16 (sint16, sint16, sint16, sint16, const sint16 *, const sint16 *, const sint16 *) 0x0DD sint32 Ifx_IntLkUpBaseMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * X_array, const sint32 * Y_array, const sint32 * Val_array) 0x0DE uint32 Ifx_IntLkUpBaseMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * X_array, const uint32 * Y_array, const uint32 * Val_array)
requirement SWS_Ifx_00226 [SWS_Ifx_00226] 📄 PDF
X and Y axis distribution points shall be calculated based on Offset and Shift values. X_array[index] = offsetX + index * 2ShiftX Y_array[index] = offsetY + index * 2ShiftY If Offset = 10, shift = 2 and N = 5 then, axis = {10, 14, 18, 22, 26} (applicable to X and Y axis)
requirement SWS_Ifx_00227 [SWS_Ifx_00227] 📄 PDF
Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00229 [SWS_Ifx_00229] 📄 PDF
Return Value = Val_array [BaseIndex]
requirement SWS_Ifx_00230 [SWS_Ifx_00230] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00231 [SWS_Ifx_00231] 📄 PDF
If Xin < X_array[0], then indexX = 0
requirement SWS_Ifx_00232 [SWS_Ifx_00232] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1
requirement SWS_Ifx_00233 [SWS_Ifx_00233] 📄 PDF
If Yin < Y_array[0], then indexY = 0
requirement SWS_Ifx_00234 [SWS_Ifx_00234] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1
requirement SWS_Ifx_00235 [SWS_Ifx_00235] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00236 [SWS_Ifx_00236] 📄 PDF
Here is the list of implemented routines Routine ID[hex] Routine prototype 0x0B0 uint8 Ifx_IntLkUpFixBaseMap_u8u8_u8 ( uint8, uint8, uint8, uint8, const uint8 *, uint8, uint8, uint8, uint8) 0x0B1 uint16 Ifx_IntLkUpFixBaseMap_u16u16_u16 ( uint16, uint16, uint16, uint16, const uint16 *, uint16, uint16, uint16, uint16) 0x0B2 sint8 Ifx_IntLkUpFixBaseMap_s8s8_s8 ( sint8, sint8, sint8, sint8, const sint8 *, sint8, sint8, sint8, sint8) 0x0B3 sint16 Ifx_IntLkUpFixBaseMap_s16s16_s16 ( sint16, sint16, sint16, sint16, const sint16 *, sint16, sint16, sint16, sint16) 0x0E3 sint32 Ifx_IntLkUpFixBaseMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * Val_array, sint32 offsetX, sint32 ShiftX, sint32 offsetY, sint32 shiftY) 0x0E4 uint32 Ifx_IntLkUpFixBaseMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * Val_array, uint32 offsetX, uint32 ShiftX, uint32 offsetY, uint32 shiftY)
requirement SWS_Ifx_00237 [SWS_Ifx_00237] 📄 PDF
X and Y axis distribution points shall be calculated based on Offset and Interval values. X_array[index] = offsetX + index * IntervalX Y_array[index] = offsetY + index * IntervalY If Offset = 10, Interval = 2 and N = 5 then, axis = {10, 12, 14, 16, 18} (applicable to X and Y axis)
requirement SWS_Ifx_00238 [SWS_Ifx_00238] 📄 PDF
Index calculation: indexX = minimum value of index if (X_array[indexX] < Xin < X_array[indexX+1]) indexY = minimum value of index if (Y_array[indexY] < Yin < Y_array[indexY+1]) BaseIndex = IndexX * Ny + indexY
requirement SWS_Ifx_00240 [SWS_Ifx_00240] 📄 PDF
Return Value = Val_array [BaseIndex]
requirement SWS_Ifx_00241 [SWS_Ifx_00241] 📄 PDF
If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]
requirement SWS_Ifx_00242 [SWS_Ifx_00242] 📄 PDF
If Xin < X_array[0], then indexX = 0
requirement SWS_Ifx_00243 [SWS_Ifx_00243] 📄 PDF
If Xin > X_array[Nx-1], then indexX = Nx - 1
requirement SWS_Ifx_00244 [SWS_Ifx_00244] 📄 PDF
If Yin < Y_array[0], then indexY = 0
requirement SWS_Ifx_00245 [SWS_Ifx_00245] 📄 PDF
If Yin > Y_array[Ny-1], then indexY = Ny - 1
requirement SWS_Ifx_00246 [SWS_Ifx_00246] 📄 PDF
The minimum value of Nx and Ny shall be 1
requirement SWS_Ifx_00247 [SWS_Ifx_00247] 📄 PDF
Here is the list of implemented routines. Routine ID[hex] Routine prototype 0x0B4 uint8 Ifx_IntLkUpFixIBaseMap_u8u8_u8 ( uint8, uint8, uint8, uint8, const uint8 *, uint8, uint8, uint8, uint8) 0x0B5 uint16 Ifx_IntLkUpFixIBaseMap_u16u16_u16 ( uint16, uint16, uint16, uint16, const uint16 *, uint16, uint16, uint16, uint16) 0x0B6 sint8 Ifx_IntLkUpFixIBaseMap_s8s8_s8 ( sint8, sint8, sint8, sint8, const sint8 *, sint8, sint8, sint8, sint8) 0x0B7 sint16 Ifx_IntLkUpFixIBaseMap_s16s16_s16 ( sint16, sint16, sint16, sint16, const sint16 *, sint16, sint16, sint16, sint16) 0x0E9 sint32 Ifx_IntLkUpFixIBaseMap_s32s32_s32 (sint32 Xin, sint32 Yin, sint32 Nx, sint32 Ny, const sint32 * Val_array, sint32 offsetX, sint32 IntervalX, sint32 offsetY, sint32 IntervalY) 0x0EA uint32 Ifx_IntLkUpFixIBaseMap_u32u32_u32 (uint32 Xin, uint32 Yin, uint32 Nx, uint32 Ny, const uint32 * Val_array, uint32 offsetX, uint32 IntervalX, uint32 offsetY, uint32 IntervalY)
requirement SWS_Ifx_00248 [SWS_Ifx_00248] 📄 PDF
Ratio shall be rounded towards zero
requirement SWS_Ifx_00251 [SWS_Ifx_00251] 📄 PDF
The intermediate results during unscaling in interpolation calcula- tion shall be Rounded towards zero.
requirement SWS_Ifx_00800 [SWS_Ifx_00800] 📄 PDF
Ifx library shall not require initialization phase. A Library function may be called at the very first step of ECU initialization, e.g. even by the OS or EcuM, thus the library shall be ready.
requirement SWS_Ifx_00801 [SWS_Ifx_00801] 📄 PDF
Ifx library shall not require a shutdown operation phase.
requirement SWS_Ifx_00806 [SWS_Ifx_00806] 📄 PDF
The Ifx library shall be implemented in a way that the code can be shared among callers in different memory partitions.
requirement SWS_Ifx_00807 [SWS_Ifx_00807] 📄 PDF
Usage of macros should be avoided. The function should be de- clared as function or inline function. Macro #define should not be used.
requirement SWS_Ifx_00808 [SWS_Ifx_00808] 📄 PDF
A library function can call other library functions because all library functions shall be re-entrant. A library function shall not call any BSW modules func- tions, e.g. the DET.
requirement SWS_Ifx_00809 [SWS_Ifx_00809] 📄 PDF
The library, written in C programming language, should conform to the MISRA C Standard. Please refer to SWS_BSW_00115 for more details.
requirement SWS_Ifx_00810 [SWS_Ifx_00810] 📄 PDF
Each AUTOSAR library Module implementation <library>*.c and <library>*.h shall map their code to memory sections using the AUTOSAR memory mapping mechanism.
requirement SWS_Ifx_00811 [SWS_Ifx_00811] 📄 PDF
Each AUTOSAR library Module implementation <library>*.c, that uses AUTOSAR integer data types and/or the standard return, shall include the header file Std_Types.h.
requirement SWS_Ifx_00812 [SWS_Ifx_00812] 📄 PDF
All AUTOSAR library Modules should use the AUTOSAR data types (integers, boolean) instead of native C data types, unless this library is clearly identified to be compliant only with a platform.
requirement SWS_Ifx_00813 [SWS_Ifx_00813] 📄 PDF
All AUTOSAR library Modules should avoid direct use of compiler and platform specific keyword, unless this library is clearly identified to be compliant only with a platform. eg. #pragma, typeof etc.
requirement SWS_Ifx_00814 [SWS_Ifx_00814] 📄 PDF
The standardized common published parameters as required by SRS_BSW_00402 in the General Requirements on Basic Software Modules [REF] shall be published within the header file of this module and need to be provided in the BSW Module Description. The according module abbreviation can be found in the List of Basic Software Modules [REF].
requirement SWS_Ifx_00816 [SWS_Ifx_00816] 📄 PDF
If source code for caller and callee of Ifx_GetVersionInfo is avail- able, the Ifx library should realize Ifx_GetVersionInfo as a macro defined in the mod- ule's header file.
requirement SWS_Ifx_00818 [SWS_Ifx_00818] 📄 PDF
The Ifx library shall not have any configuration options that may affect the functional behavior of the routines. I.e. for a given set of input parameters, the outputs shall be always the same. For example, the returned value in case of error shall not be configurable.
requirement SWS_Ifx_00820 [SWS_Ifx_00820] 📄 PDF
If input value is less than first distribution entry then first value of the distribution array shall be returned or used in the interpolation routines. If input value is greater than last distribution entry then last value of the distribution array shall be returned or used in the interpolation routines.
requirement SWS_Ifx_00821 [SWS_Ifx_00821] 📄 PDF
Axis distribution passed to Ifx routines shall have normal monotony sequence.
requirement SWS_Ifx_00823 [SWS_Ifx_00823] 📄 PDF
Section 7.1 "Error Handling" of the document "General Specifica- tion of Basic Software Modules" describes the error handling of the Basic Software in detail. Above all, it constitutes a classification scheme consisting of five error types which may occur in BSW modules.
requirement SWS_Ifx_00999 [SWS_Ifx_00999] 📄 PDF
These requirements are not applicable to this specification.
requirement SWS_Ifx_91001 [SWS_Ifx_91001] 📄 PDF
Module Header File Imported Type Std Std_Types.h Std_VersionInfoType
requirement SWS_Ifx_91003 [SWS_Ifx_91003] 📄 PDF
Based on searched indices and ratios information using the relevant Ifx_DPSearch routine, this routine calculates and returns the interpolation result for 3D cuboids. The axis order memory representation is [z][x][y]. This is the column-major orientation COLUMN_DIR from the ASAM standard. The first axis z specifies the selected slice. Implementation: Linear interpolation along x-axis between the result of two 2D interpolations between neighbouring X/Y Maps. num_slice = num_x * num_y if(dpResultZ->Ratio==0) Result=Ifx_IpoMap_<OutTypeMn> (dpResultX, dpResultY, num_y, Val_array[num_ slice * dpResultZ->Index]) else LowerXY=Ifx_IpoMap_<OutTypeMn> (dpResultX, dpResultY, num_y, Val_array[num_ slice * dpResultZ ->Index]) UpperXY=Ifx_IpoMap_<OutTypeMn> (dpResultX, dpResultY, num_y, Val_array[num_ slice * dpResultZ ->Index + 1]) Result=LowerXY + dpResultZ->Ratio * (UpperXY - LowerXY)
requirement SWS_Ifx_91004 [SWS_Ifx_91004] 📄 PDF
Do not call this routine without using the Ifx_DPSearch routine. It is ensures a valid search result (Ifx_DPResultU16_Type) and initialization.
requirement SWS_Ifx_91005 [SWS_Ifx_91005] 📄 PDF
Routine ID[hex] Routine prototype 0x0F1 sint8 Ifx_IpoCub_s8 ( const Ifx_DPResultU16_Type * dpResultX, const Ifx_DPResultU16_Type * dpResultY, const Ifx_DPResultU16_Type * dpResultZ, uint16 num_x, uint16 num_y, const sint8 * Val_array) 0x0F2 uint8 Ifx_IpoCub_u8 ( const Ifx_DPResultU16_Type * dpResultX, const Ifx_DPResultU16_Type * dpResultY, const Ifx_DPResultU16_Type * dpResultZ, uint16 num_x, uint16 num_y, const uint8 * Val_array) 0x0F3 sint16 Ifx_IpoCub_s16 ( const Ifx_DPResultU16_Type * dpResultX, const Ifx_DPResultU16_Type * dpResultY, const Ifx_DPResultU16_Type * dpResultZ, uint16 num_x, uint16 num_y, const sint16 * Val_array) 0x0F4 uint16 Ifx_IpoCub_u16 ( const Ifx_DPResultU16_Type * dpResult, const Ifx_DPResultU16_Type * dpResultY, const Ifx_DPResultU16_Type * dpResultZ, uint16 num_x, uint16_ num y, const uint16 * Val_array)
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_Ifx- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_Ifx@rel:R20-11#af09f69a- Content hash
af09f69a- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_IFXLibrary.pdf#nameddest=SWS_Ifx_00004