DEENESPTFRRUARHIKOZHNL

IFx Library (Ifx)

ModulIfx (IFx Library)
BSW-Modul-ID213
Standard-Header#include "Ifx.h"
SWS-SpezifikationAUTOSAR_CP_SWS_IFXLibrary.pdf, AUTOSAR_SWS_IFXLibrary.pdf
Umfang215 Records · 2 Snippets
ClusterAUTOSAR-Bibliotheken

IFx Library (Ifx)

AUTOSAR Classic Libraries-Modul IFx Library (Ifx, Spezifikation: AUTOSAR_CP_SWS_IFXLibrary.pdf, AUTOSAR_SWS_IFXLibrary.pdf).

Funktionen — Übersicht

Typen — Übersicht

Anforderungen — Übersicht

Funktionen & Typen — Detailansicht

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

function 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.

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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_00216 [SWS_Ifx_00216] 📄 PDF

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

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_00230 [SWS_Ifx_00230] 📄 PDF

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

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_00241 [SWS_Ifx_00241] 📄 PDF

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

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_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_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_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#44c48cc3
Content hash
44c48cc3
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_IFXLibrary.pdf#nameddest=SWS_Ifx_00004

Themenkarte

Initialisierung und Status

1

Anforderungen

191
SWS_Ifx_00001SWS_Ifx_00003SWS_Ifx_00006SWS_Ifx_00008SWS_Ifx_00009SWS_Ifx_00010SWS_Ifx_00011SWS_Ifx_00013SWS_Ifx_00014SWS_Ifx_00016SWS_Ifx_00017SWS_Ifx_00021SWS_Ifx_00022SWS_Ifx_00026SWS_Ifx_00027SWS_Ifx_00031SWS_Ifx_00032SWS_Ifx_00033SWS_Ifx_00036SWS_Ifx_00037SWS_Ifx_00038SWS_Ifx_00039SWS_Ifx_00040SWS_Ifx_00041SWS_Ifx_00046SWS_Ifx_00047SWS_Ifx_00048SWS_Ifx_00049SWS_Ifx_00050SWS_Ifx_00051SWS_Ifx_00056SWS_Ifx_00057SWS_Ifx_00058SWS_Ifx_00059SWS_Ifx_00060SWS_Ifx_00061SWS_Ifx_00062SWS_Ifx_00071SWS_Ifx_00072SWS_Ifx_00073SWS_Ifx_00074SWS_Ifx_00075SWS_Ifx_00076SWS_Ifx_00077SWS_Ifx_00081SWS_Ifx_00082SWS_Ifx_00083SWS_Ifx_00084SWS_Ifx_00085SWS_Ifx_00086SWS_Ifx_00087SWS_Ifx_00091SWS_Ifx_00092SWS_Ifx_00093SWS_Ifx_00094SWS_Ifx_00095SWS_Ifx_00096SWS_Ifx_00097SWS_Ifx_00099SWS_Ifx_00100SWS_Ifx_00101SWS_Ifx_00102SWS_Ifx_00103SWS_Ifx_00104SWS_Ifx_00105SWS_Ifx_00106SWS_Ifx_00107SWS_Ifx_00108SWS_Ifx_00109SWS_Ifx_00110SWS_Ifx_00112SWS_Ifx_00113SWS_Ifx_00114SWS_Ifx_00116SWS_Ifx_00117SWS_Ifx_00118SWS_Ifx_00119SWS_Ifx_00120SWS_Ifx_00121SWS_Ifx_00122SWS_Ifx_00124SWS_Ifx_00125SWS_Ifx_00126SWS_Ifx_00127SWS_Ifx_00128SWS_Ifx_00129SWS_Ifx_00130SWS_Ifx_00131SWS_Ifx_00132SWS_Ifx_00133SWS_Ifx_00134SWS_Ifx_00135SWS_Ifx_00136SWS_Ifx_00140SWS_Ifx_00141SWS_Ifx_00143SWS_Ifx_00144SWS_Ifx_00145SWS_Ifx_00146SWS_Ifx_00147SWS_Ifx_00148SWS_Ifx_00149SWS_Ifx_00150SWS_Ifx_00151SWS_Ifx_00154SWS_Ifx_00155SWS_Ifx_00156SWS_Ifx_00157SWS_Ifx_00158SWS_Ifx_00159SWS_Ifx_00160SWS_Ifx_00161SWS_Ifx_00162SWS_Ifx_00163SWS_Ifx_00164SWS_Ifx_00165SWS_Ifx_00166SWS_Ifx_00170SWS_Ifx_00171SWS_Ifx_00173SWS_Ifx_00174SWS_Ifx_00175SWS_Ifx_00176SWS_Ifx_00177SWS_Ifx_00178SWS_Ifx_00179SWS_Ifx_00180SWS_Ifx_00181SWS_Ifx_00185SWS_Ifx_00186SWS_Ifx_00200SWS_Ifx_00201SWS_Ifx_00202SWS_Ifx_00203SWS_Ifx_00204SWS_Ifx_00206SWS_Ifx_00207SWS_Ifx_00208SWS_Ifx_00209SWS_Ifx_00212SWS_Ifx_00214SWS_Ifx_00216SWS_Ifx_00217SWS_Ifx_00218SWS_Ifx_00219SWS_Ifx_00220SWS_Ifx_00221SWS_Ifx_00222SWS_Ifx_00226SWS_Ifx_00227SWS_Ifx_00229SWS_Ifx_00230SWS_Ifx_00231SWS_Ifx_00232SWS_Ifx_00233SWS_Ifx_00234SWS_Ifx_00235SWS_Ifx_00236SWS_Ifx_00237SWS_Ifx_00238SWS_Ifx_00240SWS_Ifx_00241SWS_Ifx_00242SWS_Ifx_00243SWS_Ifx_00244SWS_Ifx_00245SWS_Ifx_00246SWS_Ifx_00247SWS_Ifx_00248SWS_Ifx_00251SWS_Ifx_00800SWS_Ifx_00801SWS_Ifx_00806SWS_Ifx_00807SWS_Ifx_00808SWS_Ifx_00809SWS_Ifx_00810SWS_Ifx_00811SWS_Ifx_00812SWS_Ifx_00813SWS_Ifx_00814SWS_Ifx_00816SWS_Ifx_00818SWS_Ifx_00820SWS_Ifx_00821SWS_Ifx_00823SWS_Ifx_00999SWS_Ifx_91001SWS_Ifx_91003SWS_Ifx_91004SWS_Ifx_91005

Detailansicht

Wähle in der Gliederung einen Eintrag aus.

Initialisierung und Status

Returns the version information of this library.

void Ifx_GetVersionInfo(Std_VersionInfoType* versioninfo);

Dienste

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.

void Ifx_DPSearch_<InTypeMn>(Ifx_DPResultU16_Type* dpResult, <InType> Xin, <InType> N, const <InType>* X_array);

This routine calculates interpolation of a curve at position Xin using below equation.

<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 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_IntIpoFixICur_<InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> N, const <InType>* Val_array, <InType> Offset, <InType> Interval);

This routine calculates Interpolation of a map at position X and Y using 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_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_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 returns respective entry value of the result distribution array at position Xin and Yin based on below equations.

<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 at position Xin based on below equations.

<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 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 based on 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 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 based on 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 and Yin based on 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_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_IntLkUpMap_<InTypeMn><InTypeMn>_<OutTypeMn>(<InType> Xin, <InType> Yin, <InType> Nx, <InType> Ny, const <InType>* X_array, const <InType>* Y_array, 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.

<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 index and ratio information, this routine calculates and returns interpolation for curve.

<OutType> Ifx_IpoCur_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResult, 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.

<OutType> Ifx_IpoMap_<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_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 point of the result array.

<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 value of the result distribution array.

<OutType> Ifx_LkUpMap_<OutTypeMn>(const Ifx_DPResultU16_Type* dpResultX, const Ifx_DPResultU16_Type* dpResultY, uint16 num_value, const <InType>* Val_array);

Typen

Structure used for data point search for index and ratio

Anforderungen

SWS_Ifx_00001 requirement

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.

SWS_Ifx_00003 requirement

Ratio shall have resolution of 2 -16

SWS_Ifx_00006 requirement

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])

SWS_Ifx_00008 requirement

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

SWS_Ifx_00009 requirement

If (Xin < X_array[0]), then return first index of an array and ratio = 0 dpResult ->Index = 0 dpResult ->Ratio = 0

SWS_Ifx_00010 requirement

If (Xin > X_array[N-1]), then return last index of an array and ratio = 0 dpResult ->Index = N - 1 dpResult ->Ratio = 0

SWS_Ifx_00011 requirement

The minimum value of N shall be 1

SWS_Ifx_00013 requirement

This routine returns index and ratio through the structure of type Ifx_DPResultU16_Type

SWS_Ifx_00014 requirement

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)

SWS_Ifx_00016 requirement

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

SWS_Ifx_00017 requirement

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 )

SWS_Ifx_00021 requirement

Result = Val_array[dpResult->Index]

SWS_Ifx_00022 requirement

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)

SWS_Ifx_00026 requirement

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

SWS_Ifx_00027 requirement

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)

SWS_Ifx_00031 requirement

BaseIndex = dpResultX->Index * num_value + dpResultY->Index

SWS_Ifx_00032 requirement

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)

SWS_Ifx_00033 requirement

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]

SWS_Ifx_00036 requirement

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

SWS_Ifx_00037 requirement

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]

SWS_Ifx_00038 requirement

If (Xin < X_array[0]) then, Result = Val_array[0]

SWS_Ifx_00039 requirement

If (Xin > X_array[N-1]) then, Result = Val_array[N-1]

SWS_Ifx_00040 requirement

The minimum value of N shall be 1

SWS_Ifx_00041 requirement

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)

SWS_Ifx_00046 requirement

If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). Result = Val_array[index]

SWS_Ifx_00047 requirement

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]

SWS_Ifx_00048 requirement

If (Xin < X_array[0]) then, Result = Val_array[0]

SWS_Ifx_00049 requirement

If (Xin > X_array[N-1]) then, Result = Val_array[N-1]

SWS_Ifx_00050 requirement

The minimum value of N shall be 1

SWS_Ifx_00051 requirement

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 )

SWS_Ifx_00056 requirement

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}

SWS_Ifx_00057 requirement

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

SWS_Ifx_00058 requirement

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]

SWS_Ifx_00059 requirement

If (Xin < X_array[0]) then, Result = Val_array[0]

SWS_Ifx_00060 requirement

If (Xin > X_array[N-1]) then, Result = Val_array[N-1]

SWS_Ifx_00061 requirement

The minimum value of N shall be 1

SWS_Ifx_00062 requirement

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)

SWS_Ifx_00071 requirement

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}

SWS_Ifx_00072 requirement

If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). Result = Val_array[index]

SWS_Ifx_00073 requirement

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]

SWS_Ifx_00074 requirement

If (Xin < X_array[0]) then, Result = Val_array[0]

SWS_Ifx_00075 requirement

If (Xin > X_array[N-1]) then, Result = Val_array[N-1]

SWS_Ifx_00076 requirement

The minimum value of N shall be 1

SWS_Ifx_00077 requirement

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)

SWS_Ifx_00081 requirement

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}

SWS_Ifx_00082 requirement

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

SWS_Ifx_00083 requirement

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]

SWS_Ifx_00084 requirement

If (Xin < X_array[0]) then, Result = Val_array[0]

SWS_Ifx_00085 requirement

If (Xin > X_array[N-1]) then, Result = Val_array[N-1]

SWS_Ifx_00086 requirement

The minimum value of N shall be 1

SWS_Ifx_00087 requirement

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)

SWS_Ifx_00091 requirement

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}

SWS_Ifx_00092 requirement

If (X_array[0] < Xin < X_array[N -1]), then index = lowest index for which (Xin < X_array[index + 1]). Result = Val_array[index]

SWS_Ifx_00093 requirement

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]

SWS_Ifx_00094 requirement

If (Xin < X_array[0]) then, Result = Val_array[0]

SWS_Ifx_00095 requirement

If (Xin > X_array[N-1]) then, Result = Val_array[N-1]

SWS_Ifx_00096 requirement

The minimum value of N shall be 1

SWS_Ifx_00097 requirement

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)

SWS_Ifx_00099 requirement

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

SWS_Ifx_00100 requirement

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])

SWS_Ifx_00101 requirement

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

SWS_Ifx_00102 requirement

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

SWS_Ifx_00103 requirement

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

SWS_Ifx_00104 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00105 requirement

If Xin < X_array[0], then indexX = 0, RatioX = 0

SWS_Ifx_00106 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0

SWS_Ifx_00107 requirement

If Yin < Y_array[0], then indexY = 0, RatioY = 0

SWS_Ifx_00108 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0

SWS_Ifx_00109 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00110 requirement

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)

SWS_Ifx_00112 requirement

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

SWS_Ifx_00113 requirement

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

SWS_Ifx_00114 requirement

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]

SWS_Ifx_00116 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00117 requirement

If Xin < X_array[0], then indexX = 0

SWS_Ifx_00118 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1

SWS_Ifx_00119 requirement

If Yin < Y_array[0], then indexY = 0

SWS_Ifx_00120 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1

SWS_Ifx_00121 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00122 requirement

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)

SWS_Ifx_00124 requirement

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)

SWS_Ifx_00125 requirement

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

SWS_Ifx_00126 requirement

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])

SWS_Ifx_00127 requirement

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

SWS_Ifx_00128 requirement

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

SWS_Ifx_00129 requirement

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

SWS_Ifx_00130 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00131 requirement

If Xin < X_array[0], then indexX = 0, RatioX = 0

SWS_Ifx_00132 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0

SWS_Ifx_00133 requirement

If Yin < Y_array[0], then indexY = 0, RatioY = 0

SWS_Ifx_00134 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0

SWS_Ifx_00135 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00136 requirement

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)

SWS_Ifx_00140 requirement

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)

SWS_Ifx_00141 requirement

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

SWS_Ifx_00143 requirement

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

SWS_Ifx_00144 requirement

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]

SWS_Ifx_00145 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00146 requirement

If Xin < X_array[0], then indexX = 0

SWS_Ifx_00147 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1

SWS_Ifx_00148 requirement

If Yin < Y_array[0], then indexY = 0

SWS_Ifx_00149 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1

SWS_Ifx_00150 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00151 requirement

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)

SWS_Ifx_00154 requirement

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)

SWS_Ifx_00155 requirement

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

SWS_Ifx_00156 requirement

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])

SWS_Ifx_00157 requirement

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

SWS_Ifx_00158 requirement

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

SWS_Ifx_00159 requirement

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

SWS_Ifx_00160 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00161 requirement

If Xin < X_array[0], then indexX = 0, RatioX = 0

SWS_Ifx_00162 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1, RatioX = 0

SWS_Ifx_00163 requirement

If Yin < Y_array[0], then indexY = 0, RatioY = 0

SWS_Ifx_00164 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1, RatioY = 0

SWS_Ifx_00165 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00166 requirement

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)

SWS_Ifx_00170 requirement

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)

SWS_Ifx_00171 requirement

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

SWS_Ifx_00173 requirement

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

SWS_Ifx_00174 requirement

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]

SWS_Ifx_00175 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00176 requirement

If Xin < X_array[0], then indexX = 0

SWS_Ifx_00177 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1

SWS_Ifx_00178 requirement

If Yin < Y_array[0], then indexY = 0

SWS_Ifx_00179 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1

SWS_Ifx_00180 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00181 requirement

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)

SWS_Ifx_00185 requirement

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

SWS_Ifx_00186 requirement

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)

SWS_Ifx_00200 requirement

Ifx_DPResultU16_Type structure shall not be read/write/modified by the user directly. Only Ifx routines shall have access to this structure.

SWS_Ifx_00201 requirement

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.

SWS_Ifx_00202 requirement

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.

SWS_Ifx_00203 requirement

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.

SWS_Ifx_00204 requirement

Do not call this routine until you have searched the axis to ensure the search result contains valid data and is not used uninitialized.

SWS_Ifx_00206 requirement

BaseIndex = dpResultX->Index * num_value + dpResultY->Index

SWS_Ifx_00207 requirement

Return Value = Val_array [BaseIndex]

SWS_Ifx_00208 requirement

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.

SWS_Ifx_00209 requirement

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)

SWS_Ifx_00212 requirement

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

SWS_Ifx_00214 requirement

Return Value = Val_array [BaseIndex]

SWS_Ifx_00216 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00217 requirement

If Xin < X_array[0], then indexX = 0

SWS_Ifx_00218 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1

SWS_Ifx_00219 requirement

If Yin < Y_array[0], then indexY = 0

SWS_Ifx_00220 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1

SWS_Ifx_00221 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00222 requirement

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)

SWS_Ifx_00226 requirement

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)

SWS_Ifx_00227 requirement

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

SWS_Ifx_00229 requirement

Return Value = Val_array [BaseIndex]

SWS_Ifx_00230 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00231 requirement

If Xin < X_array[0], then indexX = 0

SWS_Ifx_00232 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1

SWS_Ifx_00233 requirement

If Yin < Y_array[0], then indexY = 0

SWS_Ifx_00234 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1

SWS_Ifx_00235 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00236 requirement

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)

SWS_Ifx_00237 requirement

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)

SWS_Ifx_00238 requirement

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

SWS_Ifx_00240 requirement

Return Value = Val_array [BaseIndex]

SWS_Ifx_00241 requirement

If (Xin == X_array[indexX]) and (Yin == Y_array[indexY]) Result = Val_array [BaseIndex]

SWS_Ifx_00242 requirement

If Xin < X_array[0], then indexX = 0

SWS_Ifx_00243 requirement

If Xin > X_array[Nx-1], then indexX = Nx - 1

SWS_Ifx_00244 requirement

If Yin < Y_array[0], then indexY = 0

SWS_Ifx_00245 requirement

If Yin > Y_array[Ny-1], then indexY = Ny - 1

SWS_Ifx_00246 requirement

The minimum value of Nx and Ny shall be 1

SWS_Ifx_00247 requirement

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)

SWS_Ifx_00248 requirement

Ratio shall be rounded towards zero

SWS_Ifx_00251 requirement

The intermediate results during unscaling in interpolation calcula- tion shall be Rounded towards zero.

SWS_Ifx_00800 requirement

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.

SWS_Ifx_00801 requirement

Ifx library shall not require a shutdown operation phase.

SWS_Ifx_00806 requirement

The Ifx library shall be implemented in a way that the code can be shared among callers in different memory partitions.

SWS_Ifx_00807 requirement

Usage of macros should be avoided. The function should be de- clared as function or inline function. Macro #define should not be used.

SWS_Ifx_00808 requirement

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.

SWS_Ifx_00809 requirement

The library, written in C programming language, should conform to the MISRA C Standard. Please refer to SWS_BSW_00115 for more details.

SWS_Ifx_00810 requirement

Each AUTOSAR library Module implementation <library>*.c and <library>*.h shall map their code to memory sections using the AUTOSAR memory mapping mechanism.

SWS_Ifx_00811 requirement

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.

SWS_Ifx_00812 requirement

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.

SWS_Ifx_00813 requirement

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.

SWS_Ifx_00814 requirement

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].

SWS_Ifx_00816 requirement

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.

SWS_Ifx_00818 requirement

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.

SWS_Ifx_00820 requirement

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.

SWS_Ifx_00821 requirement

Axis distribution passed to Ifx routines shall have normal monotony sequence.

SWS_Ifx_00823 requirement

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.

SWS_Ifx_00999 requirement

These requirements are not applicable to this specification.

SWS_Ifx_91001 requirement

Module Header File Imported Type Std Std_Types.h Std_VersionInfoType

SWS_Ifx_91003 requirement

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)

SWS_Ifx_91004 requirement

Do not call this routine without using the Ifx_DPSearch routine. It is ensures a valid search result (Ifx_DPResultU16_Type) and initialization.

SWS_Ifx_91005 requirement

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)