/* -----------------------------------------------------------------------------
  Filename:    appdesc.c
  Description: Implementation example for the proper usage with CANdesc.
                
                Manufacturer: Vector
                EcuDocFile:   C:\1_sangshulin\SVN\V2X\30_DevelopLibrary\03_SW\99_Others\CANbedded\Geny_For_CanMatrix5_1\Tbox4.00.cdd
                Variant:      Base_Variant

  Generated by CANdelaGen, Fri Oct 16 10:47:20 2020
 
 ----------------------------------------------------------------------------- */
/* -----------------------------------------------------------------------------
  C O P Y R I G H T
 -------------------------------------------------------------------------------
  Copyright (c) 2001-2013 by Vector Informatik GmbH. All rights reserved.
 
  This software is copyright protected and proprietary to Vector Informatik 
  GmbH.
  
  Vector Informatik GmbH grants to you only those rights as set out in the 
  license conditions.
  
  All other rights remain with Vector Informatik GmbH.
 -------------------------------------------------------------------------------
 ----------------------------------------------------------------------------- */

/* -----------------------------------------------------------------------------
    &&&~ History
 ----------------------------------------------------------------------------- */

/* ----------------------------------------------------------------------------
  Please note, that the demo and example programs only show special aspects of 
  the software. With regard to the fact that these programs are meant for 
  demonstration purposes only, Vector Informatik's liability shall be expressly 
  excluded in cases of ordinary negligence, to the extent admissible by law or 
  statute.
  ---------------------------------------------------------------------------- */

/* 
------------------------------------------------------------------------------------------------------------------------
                                             A U T H O R   I D E N T I T Y                                              
------------------------------------------------------------------------------------------------------------------------
Initials   Name                  Company                                                                                
---------- --------------------- ---------------------------------------------------------------------------------------
Aey        Amr Elazhary          Vector Informatik GmbH                                                                 
Ktw        Katrin Thurow         Vector Informatik GmbH                                                                 
Rpk        Patrick Rieder        Vector Informatik GmbH                                                                 
Sa         Mishel Shishmanyan    Vector Informatik GmbH                                                                 
Wse        Wilfried Steudle      Vector Informatik GmbH                                                                 
------------------------------------------------------------------------------------------------------------------------
                                            R E V I S I O N   H I S T O R Y                                             
------------------------------------------------------------------------------------------------------------------------
Date       Version  Author Modification type Issue Id      Affects                        Description                    
---------- -------- ------ ----------------- ------------- ------------------------------ -------------------------------
2012-11-12  6.13.00
                    Ktw    Added             ESCAN00065352 Vector(UDS:2012)               Support 14229-1 2012           
2013-06-04  6.14.00
                    Ktw    Added             ESCAN00067881 Vector(UDS:2012)               Support Cdds of Oem Tml        
2013-09-05  6.14.01
                    Sa     Fixed             ESCAN00070242 UDS:2012                       Unexpected behavior executing service 0x2A 0x04 with concrete PDID(s)
2013-09-27  6.15.00
                    -      -                 -             -                              No relevant changes available in this version.
2013-11-29  6.15.01
                    -      -                 -             -                              No relevant changes available in this version.
2014-01-10  6.15.02
                    -      -                 -             -                              No relevant changes available in this version.
2014-01-31  6.16.00
                    Rpk    Added             ESCAN00074628 Vector(UDS:2012)               Support DEM 412 Interface      
                    Rpk    Added             ESCAN00074207 Vector(UDS:2012)               Adapt CANdesc to fully AR 4.1.2 compatible DEM API Dem_DcmGetSizeOfExtendedDataRecordByDTC behavior
                    Rpk    Fixed             ESCAN00071736 UDS:2012                       Invalid security access requests do not reset the "waiting for key" state
                    Rpk    Fixed             ESCAN00073361 UDS:2012                       False access attempt counter is not reset after the delay timer expires
2014-07-14  6.17.00
                    Rpk    Fixed             ESCAN00077591 Vector(UDS:2012)               DescRingBufferWrite triggers an assert
                    Rpk    Fixed             ESCAN00077461 Vector(UDS:2012)               Compiler error: 'g_descUsedFrzFrameRecIds' is undefined
                    Rpk    Fixed             ESCAN00076931 Vector(UDS:2012)               Service 0x19: Continuous response pending messages without final response
                    Rpk    Fixed             ESCAN00076339 Vector(UDS:2012)               CANdesc calls DEM SetDTCFilter API with wrong DTC kind for service 0x19 0x15
                    Rpk    Fixed             ESCAN00076297 Vector(UDS:2012)               Unexpected response for service 0x19 0x05 0x00
                    Rpk    Fixed             ESCAN00075946 Vector(UDS:2012)               Compiler error: DescDemApiInterpretClearResult not defined
                    Rpk    Fixed             ESCAN00077133 UDS:2012                       Wrong NRC 0x31 on Service 0x22 request which is too long
                    Rpk    Fixed             ESCAN00072108 UDS:2012                       Compiler warning: Unused variable securityInstanceIndex in function DescSecurityAccessKeyChecked
                    Rpk    Fixed             ESCAN00061617 All                            Compiler warning: warning C4244: '=' : conversion from 'DescDynDidMemBlockSize' to 'vuint16', possible loss of data
2014-08-12  6.17.01
                    Rpk    Fixed             ESCAN00077788 Vector(UDS:2012)               Compiler error: busProperty is not a member of t_descUudtNetBusInfoTag
2014-11-05  6.18.00
                    Rpk    Fixed             ESCAN00079301 UDS:2012                       ECU returns NRC 0x13 instead of 0x7E/0x31
                    Rpk    Fixed             ESCAN00080104 UDS:2012                       Compiler error: Function DescGetLevelIdxOfState is not defined
                    Rpk    Fixed             ESCAN00080018 All                            AR3 DEM interface: Activating the iteration limiter for reading DTCs from the DEM has no effect
                    Rpk    Fixed             ESCAN00080019 All                            AR4 DEM interface: Activating the iteration limiter for reading DTCs/SnapshotRecordIdentification has no effect
2015-06-23  6.19.00
                    Rpk    Fixed             ESCAN00083960 Vector(UDS:2012)               Correct comments and error directive in the Asr4 Dem Interface
                    Rpk    Fixed             ESCAN00081314 Vector(UDS:2012)               Compiler warning: DCM_RUNTIME_USAGE_LIMIT_ENABLED is not defined
                    Aey    Modified          ESCAN00084257 Vector(UDS:2012)               Service 0x19 0x05 0xFF shall return positive response for SSR 0x00
                    Aey    Modified          ESCAN00084246 Vector(UDS:2012)               Support DCM 4.2.1 Dem_DcmClearDTC return value DEM_CLEAR_MEMORY_ERROR
                    Rpk    Fixed             ESCAN00079798 UDS:2012                       Wrong API description for manufacturer and supplier notifications
                    Rpk    Fixed             ESCAN00083701 All                            Compiler error: non ASCII character used in comments
                    Rpk    Fixed             ESCAN00083450 All                            Generating unnecessary dummy DANIS TP adapter functions inside desc.c when there no TP and DANIS TP adapter are configured.
                    Rpk    Fixed             ESCAN00081716 All                            The diagnostic communication is blocked and a diagnostic response might be sent on the wrong CAN channel
2015-09-03  6.20.00
                    -      -                 -             -                              No relevant changes available in this version.
2015-10-23  6.21.00
                    Aey    Fixed             ESCAN00085340 UDS:2012                       ECU may send empty positive response for service 0x19 0x05 0x00
                    Aey    Fixed             ESCAN00073624 UDS:2012                       Service 0x19 0x04/0x06/0x10/0x18/0x19 with RecID 0xFF has different behavior depending on the PagedBuffer support
                    Aey    Fixed             ESCAN00086295 All                            Compiler warning: Infinite loop possibility
                    Aey    Fixed             ESCAN00072264 All                            candesc support of more than 8 logical channels
                    Aey    Added             ESCAN00087649 All                            Support for RcrRp in CANdesc - LinTP interface
2016-03-15  6.22.00
                    -      -                 -             -                              No relevant changes available in this version.
2016-05-19  6.23.00
                    Wse    Added             ESCAN00090258 Vector(UDS:2012)               Reset of attempt counter is configurable in GENy
                    Wse    Added             ESCAN00090212 Vector(UDS:2012)               Delete dynamical  defined DIDs when going back to default session configurable in GENy
                    Wse    Fixed             ESCAN00090447 UDS:2012                       Replace NRC kDescNrcConditionsNotCorrec (0x22) by NRC kDescNrcRequestOutOfRange (0x31) in service $19 when using Vector DEM
                    Wse    Fixed             ESCAN00083566 All                            Compiler warning: variable g_descSchedulerTimer set but never used
                    Wse    Fixed             ESCAN00083588 All                            Compiler warning: variable g_descRdpiStateCtrl is set but never used
2016-07-28  6.24.00
                    Wse    Fixed             ESCAN00090646 UDS:2012                       UUDT messages overload in combination with service $22 for DynDID
2016-10-05  6.25.00
                    Wse    Added             ESCAN00092202 Vector(UDS:2012)               Calling DescSendPosRespFBL possible for OEM=Vector
                    Wse    Fixed             ESCAN00092159 UDS:2012                       Compiler error: identifier Possibility of undefined parameter securitySeedObjIndex is undefined
                    Wse    Fixed             ESCAN00091636 UDS:2012                       Compiler warning: inconsistent storage class specification for Desc85Process
                    Wse    Fixed             ESCAN00092078 UDS:2012                       Pointer out of bounds in Desc85Process
2016-12-20  6.26.00
                    Wse    Added             ESCAN00093006 Vector(UDS:2012)               API to application added if attempt counter value changes for OEM=Vector
                    Wse    Fixed             ESCAN00093091 UDS:2012                       Check combination of attempt counter and attempt delay for all security levels in UDS2012
                    Wse    Fixed             ESCAN00055957 All                            appdesc.c missing line feed (LF) after carriage return (CR) on some lines
                    Wse    Fixed             ESCAN00092436 All                            Compiler error: (Linker Error) Symbol DescPostRoutineControlByIdentifier is undefined
                    Wse    Fixed             ESCAN00093238 All                            Null pointer read-access for busy-repeat-request (NRC 0x21) response in case of parallel client requests
2017-03-06  6.27.00
                    Wse    Fixed             ESCAN00093265 All                            Unexpected NRC 0x21 (BusyRepeatRequest) response sent to tester
2017-05-02  6.28.00
                    Wse    Fixed             ESCAN00094512 UDS:2012                       Compiler Warning: securitySeedObjIndex was declared but never referenced
                    Wse    Fixed             ESCAN00080010 UDS:2012                       Compiler error: DescInterruptDisable/DescInterruptRestore is not an expression
                    Wse    Fixed             ESCAN00095088 UDS:2012                       service $22 rejected for supported DID in case of unified PID handling
                    Wse    Fixed             ESCAN00081861 All                            Compiler warning: Truncating assignment in DescContextStateTask
                    Wse    Fixed             ESCAN00081853 All                            Compiler warning: Truncating assignment in DescPidDispatcher
                    Wse    Fixed             ESCAN00081852 All                            Compiler warning: Truncating assignment in DescUudtNetCANTxReserveResource
                    Wse    Fixed             ESCAN00081850 All                            Compiler warning: Truncating assignment in DescICNGetResponseData
                    Wse    Fixed             ESCAN00081836 All                            Compiler warning: Truncating assignment in DescConfirmation
                    Wse    Fixed             ESCAN00055156 All                            Compiler warning: truncating assignment
                    Wse    Fixed             ESCAN00081827 All                            Compiler warning: Truncating assignment in DescUsdtNetIsoTpCopyToCan
2017-07-24  6.28.01
                    Wse    Fixed             ESCAN00095783 UDS:2012                       CANdesc: array access out of bounds in function DescUudtNetCANCancelAllResponses()
2017-10-18  6.29.00
                    Wse    Added             ESCAN00097004 UDS:2012                       DescSetNegResponse can be called in ApplDescSecurityAccessGetSeed and ApplDescSecurityAccessCheckKey
2018-03-21  6.30.00
                    Wse    Added             ESCAN00098170 Vector(UDS:2012)               Support Cdds of OEM GWM        
                    Wse    Fixed             ESCAN00097832 All                            Response for service $22 incomplete in case of ring buffer used and multiple DIDs in request
                    Wse    Fixed             ESCAN00097834 All                            Handling of Gaps in a DID is not correct
                    Wse    Fixed             ESCAN00097915 All                            Response for service $22 incomplete if requested DID is handled as signal handler
                    Wse    Fixed             ESCAN00098423 All                            Response for service $22 incomplete in case of multiple DIDs in request using ring buffer mechanisms
                    Wse    Added             ESCAN00097837 All                            Variable handling of buffer size to support CAN-FD
2018-06-06  6.31.00
                    Wse    Fixed             ESCAN00099512 All                            NRC=0x78 is sent forever after request $19 04, $19 06 or $19 10
                    Wse    Added             ESCAN00098571 All                            Spontaneous messages in CAN-FD 
2018-10-10  6.32.00
                    Wse    Fixed             ESCAN00100864 Vector(UDS:2012)               Compilation error if Failed Attempt Counter Notification is configured as active
                    Wse    Fixed             ESCAN00099758 All                            Diagnostic Buffer Size too small in case of CAN-FD
2019-01-08  6.33.00
                    Wse    Added             ESCAN00101527 Vector(UDS:2012)               Support Cdds of OEM WMMotor    
                    Wse    Added             ESCAN00101528 Vector(UDS:2012)               Support Cdds of OEM KTM        
------------------------------------------------------------------------------------------------------------------------
 */


/* -----------------------------------------------------------------------------
    &&&~ Includes
 ----------------------------------------------------------------------------- */

/* Physical layer specific API */
#include "v_inc.h"
/* Check if CCL is available and take into account its configuration */
#if defined (VGEN_ENABLE_CCL)
# include "ccl_cfg.h"
#endif

/* Check if CCLcom is available and take into account its configuration */
#if defined (VGEN_ENABLE_CCLCOM)
# include "cclcom_cfg.h"
#endif

/* Make all CANdesc specific typedefs available */
#include "desc.h"
/* Include the implementation prototypes for prototype checks */
#include "appdesc.h"

/* Required for the implementation of ApplDescInitPosResFblBusInfo */
#include "tpmc.h"




/* -----------------------------------------------------------------------------
    &&&~ Preprocessor constants (defines)
 ----------------------------------------------------------------------------- */

#define kDescEcuCryptoKey                                            0x12345678



/* -----------------------------------------------------------------------------
    &&&~ Function prototypes
 ----------------------------------------------------------------------------- */

static vuint32 SecM_ComputeKey(void);
static void SecM_Serializer(DescMsg tgtPtr, vuint32 data);



/* -----------------------------------------------------------------------------
    &&&~ RAM definitions
 ----------------------------------------------------------------------------- */

/* 64Bit seed stored for the later key compare */
static vuint32 g_applDescSeedX;
static vuint32 g_applDescSeedY;



/* -----------------------------------------------------------------------------
    &&&~ Implementation
 ----------------------------------------------------------------------------- */

#if defined (DESC_ENABLE_DEBUG_USER ) || defined (DESC_ENABLE_DEBUG_INTERNAL)
# if defined (CCL_ENABLE_ERROR_HOOK) || defined (CCLCOM_ENABLE_ERROR_HOOK)
/* CCL takes care about this function */
# else
/* ********************************************************************************
 * Function name:ApplDescFatalError
 * Description: This function will be called each time while the debug mode is active a
 * CANdesc fault has been detected. If you reach this function it makes no sence to continue the tests since CANdesc
 * will not operate properly until next start of the ECU.
 * Returns:  nothing
 * Parameter(s):
 *   - errorCode:
 *       - The assert code text equivalent can be found in desc.h (kDescAssert....).
 *       - Access type: read
 *   - lineNumber:
 *       - Since the same fault could be cales on many places the line number shows where exactly it occured.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - Set a break point at this place to know during the ECU development if you ran onto it.
 ******************************************************************************** */
void DESC_API_CALLBACK_TYPE ApplDescFatalError(vuint8 errorCode, vuint16 lineNumber)
{
  /*<<TBD>> Remove this comment once you have completely implemented this function!!!*/
  /* Avoid warnings */
  DESC_IGNORE_UNREF_PARAM(errorCode);
  DESC_IGNORE_UNREF_PARAM(lineNumber);

  /* When fatal error occurs, cause an ECU hang up at this point.
   * Please set break point at this line to investigate both parameter values. */
  for(;;);
}
# endif
#endif

#if defined (DESC_ENABLE_SPONTANEOUS_RES)
void DESC_API_CALLBACK_TYPE ApplDescSpontaneousResponseConfirmation(DESC_CONTEXT_FORMAL_PARAM_DEF_FIRST vuint8 status)
{
  /*<<TBD>> Remove this comment once you have completely implemented this function!!!*/
    /* Avoid warnings */
  DESC_CONTEXT_PARAM_DUMMY_USE;

  /* Check the transmission status */
  if(status == kDescOk)
  {
    /* "Spontaneous Response" was just successfully sent.
     */
  }
  else
  {
    /* There was some transmission error and the tester didn't received the "Spontaneous Response" response.
     */
  }
}
#endif

/*******************************************************************************
* NAME:              ApplDescInitPosResFblBusInfo
*
* CALLED BY:         CANdesc
* PRECONDITIONS:
*
* DESCRIPTION:       Initializes the busInfo with the concrete response address information
*                    (e.g. sourceAddr,TargetAddr, COM channel, etc.).
*******************************************************************************/
vuint8 DESC_API_CALL_TYPE ApplDescInitPosResFblBusInfo(t_descUsdtNetBus* pBusInfo)
{
  /* Init the bus-info structure as shown below */
  pBusInfo->busType = kDescUsdtNetBusTypeIsoTp;/* on other bus systems use the apropriate bus-type */
  /*On multi channel systems */
  pBusInfo->comChannel = 0; /* set the CAN (FlexRay or other) channel on which to send */
  /* If the addressing scheme uses source/target addresses put here the tester addres to respond to */
  pBusInfo->testerId = 0xF1; /* set the CAN (FlexRay or other) channel on which to send */

#if defined(DESC_USDTNET_ENABLE_DYNAMIC_BUFFER_LENGTH)
  /* If dynamic length is used, please use the correct buffer size of the corresponding DANIS driver!!! */
  pBusInfo->availBufferLength = kDescPrimBufferLen;
#endif

#if defined(TP_ENABLE_DYNAMIC_CHANNELS) && defined(TP_ENABLE_CANFD)
  /* If response shall be set as CAN-FD message please modify the value */
  pBusInfo->canType = kTpCAN20;
#endif

#if ( defined (TP_ENABLE_DYNAMIC_CHANNELS) && \
    (defined(TP_ENABLE_MIXED_11_ADDRESSING) || \
    defined(TP_ENABLE_NORMAL_ADDRESSING)) )
  /* ********** for these use cases additional TPMC initalization is required ********** */
  {
    vuint8 tpChannel = kTpTxChannelCount;
    while (tpChannel != 0)
    {
      tpChannel--;
      if (kDescDiagConnection == TpTxGetConnectionNumber(tpChannel))
      {
# if defined(TP_ENABLE_MULTIPLE_ADDRESSING)
        tpTxInfoStruct[tpChannel].assignedDestination = kTpRequestDiagPhysical;
        tpTxInfoStruct[tpChannel].addressingFormat = kTpNormalAddressing; /*... respectively: kTpMixed11Addressing, kTpExtendedAddressing*/
# endif

//# error "Replace the <DIAG_NORMAL_ADD_RES_ID> and <DIAG_NORMAL_ADD_REQ_ID> below with the real CANids and uncomment the line!"
        /* TpTxSetChannelID(tpChannel, <DIAG_NORMAL_ADD_RES_ID>, <DIAG_NORMAL_ADD_REQ_ID>); */
        TpTxSetChannelID(0, 0x6DF, 0x65F);
# if (kTpNumberOfCanChannels > 1)
        TpTxSetCanChannel(tpChannel, pBusInfo->comChannel);
# endif
        break;
      }
    }
  }
#endif
  return kDescOk;
}

/*  ********************************************************************************
 * Function name:ApplDescRcrRpConfirmation
 * Description:Will be called only if "DescForceRcrRpResponse" has been previously called.
 * Returns:  nothing
 * Parameter(s):
 *   - status:
 *       - Current RCR-RP transmission status (kDescOk/kDescFailed).
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may be called to close the service processing.
 *   - The function "DescSetNegResponse" may be called to set a negative response.
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRcrRpConfirmation(vuint8 status)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
    /* Avoid warnings */
  DESC_CONTEXT_PARAM_DUMMY_USE;

  /* Check the transmission status */
  if(status == kDescOk)
  {
    /* "Response Pending" was just successfully sent, you can perform any further action knowing that
     * from now on the tester has restarted its response timeout timer and set the next time to P2* (P2Ex) 
     */
  }
  else
  {
    /* There was some transmission error and the tester didn't received the RCR-RP response. You can decide to go on
     * or to reset the application activity you have started and wait for a new request from the tester. 
     */
  }
;
}


/*  ********************************************************************************
 * Function name:ApplDescOnTransitionSession
 * Description:Notification function for state change of the given state group, defined by
 * CANdelaStudio.
 * Returns:  nothing
 * Parameter(s):
 *   - newState:
 *       - The state which will be set.
 *       - Access type: read
 *   - formerState:
 *       - The current state of this state group.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescOnTransitionSession(DescStateGroup newState, DescStateGroup formerState)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
   /* This is only a notification function. Using the "formerState" and the "newState" 
   * parameter you can distinguish the different transitions for this state group.
   */
  /* Avoids warnings */
  DESC_IGNORE_UNREF_PARAM(newState);
  DESC_IGNORE_UNREF_PARAM(formerState);
;
}


/*  ********************************************************************************
 * Function name:ApplDescOnTransitionSecurityAccess
 * Description:Notification function for state change of the given state group, defined by
 * CANdelaStudio.
 * Returns:  nothing
 * Parameter(s):
 *   - newState:
 *       - The state which will be set.
 *       - Access type: read
 *   - formerState:
 *       - The current state of this state group.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescOnTransitionSecurityAccess(DescStateGroup newState, DescStateGroup formerState)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
   /* This is only a notification function. Using the "formerState" and the "newState" 
   * parameter you can distinguish the different transitions for this state group.
   */
  /* Avoids warnings */
  DESC_IGNORE_UNREF_PARAM(newState);
  DESC_IGNORE_UNREF_PARAM(formerState);
;
}


/*  ********************************************************************************
 * Function name:ApplDescEcuResetHard (Service request header:$11 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescEcuResetHard(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescClearDiagInfo (Service request header:$14 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request byte after the Sid.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response after the Sid.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the service request length, excluding Sid byte only.
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the total service response length, excluding the Sid only.
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescClearDiagInfo(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDtcRNODTCBSM (Service request header:$19 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDtcRNODTCBSM(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 4;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDtcRDTCBSM (Service request header:$19 $2 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDtcRDTCBSM(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 1;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDtcRDTCEDRBDN (Service request header:$19 $6 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDtcRDTCEDRBDN(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 1;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDtcRSUPDTC (Service request header:$19 $A )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDtcRSUPDTC(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDideCall_official_number (Service request header:$2E $49 $A )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDideCall_official_number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDideCall_enable_disable (Service request header:$2E $49 $10 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDideCall_enable_disable(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidautomatic_eCall_allowed (Service request header:$2E $49 $11 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidautomatic_eCall_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidmanual_eCall_cancellation_allowed (Service request header:$2E $49 $12 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidmanual_eCall_cancellation_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDideCall_test_number_1 (Service request header:$2E $49 $13 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDideCall_test_number_1(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDiddial_test_number_allowed (Service request header:$2E $49 $14 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDiddial_test_number_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidtest_mode_call_allowed (Service request header:$2E $49 $15 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidtest_mode_call_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDideCall_max_attempts (Service request header:$2E $49 $16 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDideCall_max_attempts(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidECU_Configuration (Service request header:$2E $F1 $1 )
 * Description:Implementation Rule:
 * The ECU Configuration must be stored as Hex code with 25 Bytes. NextEV will write
 * at vehicle EOL.
 * The Header is defined by NextEV for tracking the ECU configuration feature, it
 * will generated on production line, e.g. server, than write at EOL; Customization
 * data is default as 16 bytes for ES8 project, if it need adjustment to be extended
 * from ECU application point of view (only special case), it need agree by NextEV
 * EE architecture team. Customization data is defined by NextEV from vehicle
 * platform feature point of view, configuration master need to store it into
 * EEPROM.
 * Customization data is defined by NextEV component owner with ECU supplier, from
 * ECU variant feature point of view, configuration peer nodes need to store it into
 * EEPROM and use it to variant the function of ECU.
 * Details definition of ECU configuration process, please refer to [2]
 * NEV-STD-EE-0016_Variant Configuration Specification.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidECU_Configuration(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidWrite_Programming_Fingerprint (Service request header:$2E $F1 $5A )
 * Description:Implementation Rule:
 * 
 * The Fingerprint must be stored as Hex code with 12 Bytes. It will be written in
 * each flashing process. Repair Shop code could contain dealer code information or
 * testers serial number, will be defined by NextEV tester process.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidWrite_Programming_Fingerprint(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidConfiguration_Fingerprint (Service request header:$2E $F1 $5C )
 * Description:Implementation Rule:
 * The Configuration Fingerprint must be stored as Hex code with 12 Bytes. It will
 * be written in each vehicle configuration process. NextEV will write at vehicle
 * EOL. All Bytes 0xFF means it has never been written.
 * Supplier shall keep all Bytes with default value (0xFF).
 * 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidConfiguration_Fingerprint(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidVehicle_Manufacturer_Spare_Part_Number (Service request header:$2E $F1 $87 )
 * Description:Implementation Rule:
 * The Vehicle Manufacturer Spare Part Number must be stored as ASCII code with 13
 * Bytes (including a space and â€˜.â€™). The first 8 bytes represent the main part
 * number, with a space (ASCII code using 0x20), followed by 4 bytes for revision
 * number (revision number is separated by a point (ASCII code using 0x2E) into two
 * parts to tracking the release version).
 * The ECU Spare Part Number is defined by NextEV aftersales and logistic team,
 * which is target to be used for aftersales spare parts. If NextEV aftersales team
 * need to use it, NextEV will define the number and supplier should write when
 * produce the ECU module, otherwise all bytes 0x20 means no Spare Part Number is
 * stored.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidVehicle_Manufacturer_Spare_Part_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidECU_Serial_Number (Service request header:$2E $F1 $8C )
 * Description:Implementation Rule:
 * 
 * The ECU serial number shall uniquely identify an individual ECU. The size of this
 * data record shall be 10 bytes, if supplier request different length of serial
 * number, need to be agreed by NextEV.
 * 
 * Supplier could decide the method to write at ECU production, but from NextEV
 * side, this DID should be kept read only and can never be changed.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidECU_Serial_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescWriteDidVehicle_Identification_Number (Service request header:$2E $F1 $90 )
 * Description:Implementation Rule:
 * 
 * The VIN number must be stored as ASCII code with 17 Bytes (Defined by NextEV),
 * the number is unique per vehicle. NextEV will write at vehicle EOL.
 * 
 * All Bytes 0xFF means it has never been written, no valid VIN code stored.
 * 
 * Supplier shall keep all Bytes with default value (0xFF).
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescWriteDidVehicle_Identification_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescIoCtrlRetCtrlToEcueCall_control (Service request header:$2F $49 $30 $0 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescIoCtrlRetCtrlToEcueCall_control(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescIoCtrlShortTermAdjeCall_control (Service request header:$2F $49 $30 $3 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescIoCtrlShortTermAdjeCall_control(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescIoCtrlRetCtrlToEcubackup_battery_boost_control (Service request header:$2F $49 $31 $0 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescIoCtrlRetCtrlToEcubackup_battery_boost_control(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescIoCtrlShortTermAdjbackup_battery_boost_control (Service request header:$2F $49 $31 $3 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescIoCtrlShortTermAdjbackup_battery_boost_control(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRequestDownload (Service request header:$34 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request byte after the Sid.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response after the Sid.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the service request length, excluding Sid byte only.
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the total service response length, excluding the Sid only.
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRequestDownload(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescTransferData (Service request header:$36 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request byte after the Sid.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response after the Sid.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the service request length, excluding Sid byte only.
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the total service response length, excluding the Sid only.
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescTransferData(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRequestTransferExit (Service request header:$37 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request byte after the Sid.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response after the Sid.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the service request length, excluding Sid byte only.
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the total service response length, excluding the Sid only.
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRequestTransferExit(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Contains no response data */
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRequestFileTransferUpload_Download (Service request header:$38 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRequestFileTransferUpload_Download(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 6;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescControlDtcSettingEnable (Service request header:$85 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescControlDtcSettingEnable(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescControlDtcSettingDisable (Service request header:$85 $2 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescControlDtcSettingDisable(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Contains no response data */
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescPreGetLevel_1_Request_Seed (Service request header:$27 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s): none
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this pre-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" can be called from now on (within this
 * pre-handler or later but before calling "DescProcessingDone").
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPreGetLevel_1_Request_Seed(void)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Check if this service may be executed (condition checks). This one is dummy check please remove it! */
  if(DescGetActivityState() != kDescContextIdle)
  {
    /* Request received under illegal conditions - send negative response! */
   // DescSetNegResponse(kDescNrcConditionsNotCorrect);
  }
}


/*  ********************************************************************************
 * Function name:ApplDescPreSendLevel_1_sendKey_1 (Service request header:$27 $2 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s): none
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this pre-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" can be called from now on (within this
 * pre-handler or later but before calling "DescProcessingDone").
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPreSendLevel_1_sendKey_1(void)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Check if this service may be executed (condition checks). This one is dummy check please remove it! */
  if(DescGetActivityState() != kDescContextIdle)
  {
    /* Request received under illegal conditions - send negative response! */
  //  DescSetNegResponse(kDescNrcConditionsNotCorrect);
  }
}


/*  ********************************************************************************
 * Function name:ApplDescPreGetLevel_4_Request_Seed (Service request header:$27 $7 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s): none
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this pre-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" can be called from now on (within this
 * pre-handler or later but before calling "DescProcessingDone").
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPreGetLevel_4_Request_Seed(void)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Check if this service may be executed (condition checks). This one is dummy check please remove it! */
  if(DescGetActivityState() != kDescContextIdle)
  {
    /* Request received under illegal conditions - send negative response! */
  //  DescSetNegResponse(kDescNrcConditionsNotCorrect);
  }
}


/*  ********************************************************************************
 * Function name:ApplDescPreSendLevel_4_send_Key (Service request header:$27 $8 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s): none
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this pre-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" can be called from now on (within this
 * pre-handler or later but before calling "DescProcessingDone").
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPreSendLevel_4_send_Key(void)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Check if this service may be executed (condition checks). This one is dummy check please remove it! */
  if(DescGetActivityState() != kDescContextIdle)
  {
    /* Request received under illegal conditions - send negative response! */
  //  DescSetNegResponse(kDescNrcConditionsNotCorrect);
  }
}


/*  ********************************************************************************
 * Function name:ApplDescPostGetLevel_1_Request_Seed (Service request header:$27 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - status:
 *       - Shows the status of the process accomplishment. Can be: kDescPostHandlerStateOk or kDescPostHandlerStateNegResSent or/and kDescPostHandlerStateTxFailed.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this post-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" may not be called (within this post-handler or
 * later before at least a pre-handler is called).
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPostGetLevel_1_Request_Seed(vuint8 status)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
    /* Avoid warnings */
  DESC_CONTEXT_PARAM_DUMMY_USE;

  /* Check if this service may be executed (condition checks). This one is dummy check please remove it!. */
  if(status == kDescPostHandlerStateOk)
  {
    /* Do post processing since everything ran without errors (the positive response (process finalization)
     * was successfully sent (closed). 
     */
  }
  else
  {
    /* Optional code if the failure reason is from importance. */

    /* The ... */
    if((status & kDescPostHandlerStateNegResSent) != 0)
    {
      /* ... negative response ... */
    }
    else
    {
      /* ... positive response ... */
    }

    if((status & kDescPostHandlerStateTxFailed) != 0)
    {
      /* ... transmission has failed. */
    }
    else
    {
      /* ... transmission has been successfully accomplished. */
    }
  }
;
}


/*  ********************************************************************************
 * Function name:ApplDescPostSendLevel_1_sendKey_1 (Service request header:$27 $2 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - status:
 *       - Shows the status of the process accomplishment. Can be: kDescPostHandlerStateOk or kDescPostHandlerStateNegResSent or/and kDescPostHandlerStateTxFailed.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this post-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" may not be called (within this post-handler or
 * later before at least a pre-handler is called).
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPostSendLevel_1_sendKey_1(vuint8 status)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
    /* Avoid warnings */
  DESC_CONTEXT_PARAM_DUMMY_USE;

  /* Check if this service may be executed (condition checks). This one is dummy check please remove it!. */
  if(status == kDescPostHandlerStateOk)
  {
    /* Do post processing since everything ran without errors (the positive response (process finalization)
     * was successfully sent (closed). 
     */
  }
  else
  {
    /* Optional code if the failure reason is from importance. */

    /* The ... */
    if((status & kDescPostHandlerStateNegResSent) != 0)
    {
      /* ... negative response ... */
    }
    else
    {
      /* ... positive response ... */
    }

    if((status & kDescPostHandlerStateTxFailed) != 0)
    {
      /* ... transmission has failed. */
    }
    else
    {
      /* ... transmission has been successfully accomplished. */
    }
  }
;
}


/*  ********************************************************************************
 * Function name:ApplDescPostGetLevel_4_Request_Seed (Service request header:$27 $7 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - status:
 *       - Shows the status of the process accomplishment. Can be: kDescPostHandlerStateOk or kDescPostHandlerStateNegResSent or/and kDescPostHandlerStateTxFailed.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this post-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" may not be called (within this post-handler or
 * later before at least a pre-handler is called).
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPostGetLevel_4_Request_Seed(vuint8 status)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
    /* Avoid warnings */
  DESC_CONTEXT_PARAM_DUMMY_USE;

  /* Check if this service may be executed (condition checks). This one is dummy check please remove it!. */
  if(status == kDescPostHandlerStateOk)
  {
    /* Do post processing since everything ran without errors (the positive response (process finalization)
     * was successfully sent (closed). 
     */
  }
  else
  {
    /* Optional code if the failure reason is from importance. */

    /* The ... */
    if((status & kDescPostHandlerStateNegResSent) != 0)
    {
      /* ... negative response ... */
    }
    else
    {
      /* ... positive response ... */
    }

    if((status & kDescPostHandlerStateTxFailed) != 0)
    {
      /* ... transmission has failed. */
    }
    else
    {
      /* ... transmission has been successfully accomplished. */
    }
  }
;
}


/*  ********************************************************************************
 * Function name:ApplDescPostSendLevel_4_send_Key (Service request header:$27 $8 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - status:
 *       - Shows the status of the process accomplishment. Can be: kDescPostHandlerStateOk or kDescPostHandlerStateNegResSent or/and kDescPostHandlerStateTxFailed.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called (within this post-handler or
 * later before a main-handler is called).
 *   - The function "DescSetNegResponse" may not be called (within this post-handler or
 * later before at least a pre-handler is called).
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescPostSendLevel_4_send_Key(vuint8 status)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
    /* Avoid warnings */
  DESC_CONTEXT_PARAM_DUMMY_USE;

  /* Check if this service may be executed (condition checks). This one is dummy check please remove it!. */
  if(status == kDescPostHandlerStateOk)
  {
    /* Do post processing since everything ran without errors (the positive response (process finalization)
     * was successfully sent (closed). 
     */
  }
  else
  {
    /* Optional code if the failure reason is from importance. */

    /* The ... */
    if((status & kDescPostHandlerStateNegResSent) != 0)
    {
      /* ... negative response ... */
    }
    else
    {
      /* ... positive response ... */
    }

    if((status & kDescPostHandlerStateTxFailed) != 0)
    {
      /* ... transmission has failed. */
    }
    else
    {
      /* ... transmission has been successfully accomplished. */
    }
  }
;
}


/* ********************************************************************************
 * Function name:ApplDescOnCommunicationDisable
 * Description: Notification function that the communication has been disabled.
 * Returns:  none
 * Parameter(s):none
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ******************************************************************************** */
void DESC_API_CALLBACK_TYPE ApplDescOnCommunicationDisable(void)
{
  /*<<TBD>> Remove this comment once you have completely implemented this function!!!*/
  /* The requested group of messages will no more be sent onto the communication bus. */
}

/* ********************************************************************************
 * Function name:ApplDescOnCommunicationEnable
 * Description: Notification function that the communication has been restored.
 * Returns:  none
 * Parameter(s):none
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ******************************************************************************** */
void DESC_API_CALLBACK_TYPE ApplDescOnCommunicationEnable(void)
{
  /*<<TBD>> Remove this comment once you have completely implemented this function!!!*/
  /* The requested group of messages will be able to be sent onto the communication bus. */
}

/* Check the communication control activity */
/* ********************************************************************************
 * Function name:ApplDescCheckCommCtrl
 * Description:Check if the requested communication manipulation is possible to be performed by the ECU.
 * Returns:  nothing
 * Parameter(s):
 *   - iContext:
 *       - Diagnostic request handle used only in multi-context system (kDescNumContexts > 1).
 *       - Access type: read
 *   - commControlInfo->subNetTxNumber:
 *       - The application shall use this parameter to decied on which physical channels the communiaction will be manipulated.
 *       - Access type: read
 *   - commControlInfo->commCtrlChannel:
 *       - The application determines on which channel the communication will be manipulated (kDescCommControlCanCh01 - kDescCommControlCanCh14).
 *       - Access type: write
 *   - commControlInfo->rxPathState:
 *       - Activity type: kDescCommControlStateEnable - enables the communication; kDescCommControlStateDisable - disables it.
 *       - Access type: read
 *   - commControlInfo->txPathState:
 *       - Activity type: kDescCommControlStateEnable - enables the communication; kDescCommControlStateDisable - disables it.
 *       - Access type: read
 *   - commControlInfo->msgTypes:
 *       - Message group: kDescCommControlMsgAppl - application; kDescCommControlMsgNm - NM; 
 *       - Access type: read
 *   - commControlInfo->reqCommChannel:
 *       - The current CAN channel on which the CommControl request is received.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - Call "DescCommCtrlChecked" (here or later) to confirm the check.
 *   - Call "DescSetNegResponse" to reject the service.
 ******************************************************************************** */
void DESC_API_CALLBACK_TYPE ApplDescCheckCommCtrl(DESC_CONTEXT_FORMAL_PARAM_DEF_FIRST DescOemCommControlInfo *commControlInfo)
{
  /*<<TBD>> Remove this comment once you have completely implemented this function!!!*/

#if defined (DESC_ENABLE_COMM_CTRL_SUBNET_SUPPORT)
  switch(commControlInfo->subNetNumber)
  {
    case kDescCommControlSubNetNumAll:/* Enable/Disable all comm channels (CAN, LIN, etc.)*/
      /* Nothing to do - later the ApplDescSetCommMode will enable/disbale the LIN channels if needed. */
      break;
    case kDescCommControlSubNetNumRx:/* Enable/Disable only the request RX comm channel (CAN)*/
      /* Nothing to do - CANdesc handles the CAN channels */
      break;
    default:
      /* Dispatch subnetworks */
      /* Assumed subnet to CAN mapping: 
       * SubNet 1: LIN 
       * SubNet 2: CAN1 
       * SubNet 3: CAN2 
       */
      switch(commControlInfo->subNetNumber)
      {
        case kDescCommControlSubNetNum01:
          /* LIN network */
          commControlInfo->commCtrlChannel = kDescCommControlCanChNone;
          break;
/* The part is only needed if a multi CAN system is designed !!! */
# if defined(DESC_ENABLE_MULTI_CHANNEL_SUPPORT)
        case kDescCommControlSubNetNum02:
          /* CAN1 */
          commControlInfo->commCtrlChannel = kDescCommControlCanCh01;
          break;
        case kDescCommControlSubNetNum03:
          /* CAN2 */
          commControlInfo->commCtrlChannel = kDescCommControlCanCh02;
          break;
# endif
        default:
          /* Subnet numbers out of range */
          DescSetNegResponse(DESC_CONTEXT_PARAM_FIRST kDescNrcRequestOutOfRange);
          break;
      }
  }
#endif
  /* Confirm the communication status will be accepted. 
   * This can be done later by storing the iContext parameter (if exists) globaly to be able to give the correct acknowledgment.
   */
  DescCommCtrlChecked(DESC_CONTEXT_PARAM_ONLY);
}

#if defined (DESC_ENABLE_COMM_CTRL_SUBNET_SUPPORT)
/* ********************************************************************************
 * Function name:ApplDescSetCommMode
 * Description:Manipulate application specific channels (LIN, MOST, etc.)
 * Returns:  nothing
 * Parameter(s):
 *   - commControlInfo->subNetTxNumber:
 *       - The application shall use this parameter to decied on which physical channels the communiaction will be manipulated.
 *       - Access type: read
 *   - commControlInfo->commCtrlChannel:
 *       - The application determines on which channel the communication will be manipulated (kDescCommControlCanCh01 - kDescCommControlCanCh14).
 *       - Access type: write
 *   - commControlInfo->rxPathState:
 *       - Activity type: kDescCommControlStateEnable - enables the communication; kDescCommControlStateDisable - disables it.
 *       - Access type: read
 *   - commControlInfo->txPathState:
 *       - Activity type: kDescCommControlStateEnable - enables the communication; kDescCommControlStateDisable - disables it.
 *       - Access type: read
 *   - commControlInfo->msgTypes:
 *       - Message group: kDescCommControlMsgAppl - application; kDescCommControlMsgNm - NM; 
 *       - Access type: read
 *   - commControlInfo->reqCommChannel:
 *       - The current CAN channel on which the CommControl request is received.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ******************************************************************************** */
void DESC_API_CALLBACK_TYPE ApplDescSetCommMode(DescOemCommControlInfo *commControlInfo)
{
  switch(commControlInfo->subNetNumber)
  {
    case kDescCommControlSubNetNumAll:/* Enable/Disable all comm channels (CAN, LIN, etc.)*/
      /* !!! Process application specific channels (e.g. LIN) CAN are already enabled/disabled by CANdesc */
      break;
    case kDescCommControlSubNetNumRx:/* Enable/Disable only the request RX comm channel (CAN)*/
      /* Nothing to do - CANdesc handles the CAN channels */
      break;
    default:
      /* Dispatch subnetworks */
      /* Assumed subnet to CAN mapping: 
       * SubNet 1: LIN 
       * SubNet 2: CAN1 
       * SubNet 3: CAN2 
       */
      switch(commControlInfo->subNetNumber)
      {
        case kDescCommControlSubNetNum01:
          /* LIN network */
          /* !!! Process application specific channels (e.g. LIN)*/
          break;
        case kDescCommControlSubNetNum02:          /* CAN1 */
        case kDescCommControlSubNetNum03:          /* CAN2 */
          /* Nothing to do - CANdesc handles all CANs */
          break;
        default:break;
      }
  }
}
#endif

#if defined (DESC_ENABLE_RX_COMM_CONTROL)
/* ********************************************************************************
 * Function name:ApplDescSetCommModeOnRxPath
 * Description: Manipulates only the RX path on CAN. For the other networks (if any) such LIN, MOST, etc. reffer to the
 *              ApplDescSetCommMode API.
 * Returns:  nothing
 * Parameter(s):
 *   - commControlInfo->subNetTxNumber:
 *       - The application shall use this parameter to decied on which physical channels the communiaction will be manipulated.
 *       - Access type: read
 *   - commControlInfo->commCtrlChannel:
 *       - The application determines on which channel the communication will be manipulated (kDescCommControlCanCh01 - kDescCommControlCanCh14).
 *       - Access type: write
 *   - commControlInfo->rxPathState:
 *       - Activity type: kDescCommControlStateEnable - enables the communication; kDescCommControlStateDisable - disables it.
 *       - Access type: read
*   - commControlInfo->rxPathState: - irrelevant for this API since it processes only the RX path!!!
 *       - Activity type: kDescCommControlStateEnable - enables the communication; kDescCommControlStateDisable - disables it.
 *       - Access type: read
 *   - commControlInfo->msgTypes:
 *       - Message group: kDescCommControlMsgAppl - application; kDescCommControlMsgNm - NM; 
 *       - Access type: read
 *   - commControlInfo->reqCommChannel:
 *       - The current CAN channel on which the CommControl request is received.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ******************************************************************************** */
void DESC_API_CALLBACK_TYPE ApplDescSetCommModeOnRxPath(DescOemCommControlInfo *commControlInfo)
{
  if((commControlInfo->rxPathState & kDescCommControlStateEnable) != 0)
  {
    /* _DrvCanSetRxOnlineMode(commControlInfo.commCtrlChannel, g_descCommControlInfo.msgTypes); */
  }
  else
  {
    /* _DrvCanSetRxOfflineMode(commControlInfo.commCtrlChannel, g_descCommControlInfo.msgTypes); */
  }
}
#endif

/*  ********************************************************************************
 * Function name:ApplDescCheckSessionTransition
 * Description:Check if the given session transition is allowed or your ECU is currently not
 * able to perform it.
 * Returns:  nothing
 * Parameter(s):
 *   - newState:
 *       - Contains the new state in which the state group will be set.
 *       - Access type: read
 *   - formerState:
 *       - Contains the current state of the state group.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescSessionTransitionChecked" may be called.
 *   - The function "DescSetNegResponse" may be called.
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescCheckSessionTransition(DescStateGroup newState, DescStateGroup formerState)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
     /* Avoids warnings */
  DESC_IGNORE_UNREF_PARAM(newState);
  DESC_IGNORE_UNREF_PARAM(formerState);
  /* Just showing how to reject session transition if necessary. 
   * The negative response code may be other depending on the rejection reason.
   * This can be done later, but just store the iContext parameter (if exists) globaly to be able to give the correct acknowledgment. 
   */
  //DescSetNegResponse(DESC_CONTEXT_PARAM_FIRST kDescNrcConditionsNotCorrect);
    DescProcessingDone();
  /* Confirm the session will be accepted. 
   * This can be done later, but just store the iContext parameter (if exists) globaly to be able to give the correct acknowledgment.
   */
  DescSessionTransitionChecked(DESC_CONTEXT_PARAM_ONLY);
;
}


#if defined (DESC_ENABLE_REPORT_ATT_CNTR_STATE)
/* ********************************************************************************
 * Function name:ApplDescSecurityAccessOnAttCntrChanged
 * Description: Once the invalid key attempt counter has been changed, this event is triggered.
 * Returns:  Random value
 * Parameter(s):
 *   - securityLevel:(only available if "level specific failed access attempt supervision" is active)
 *       - Use this information for security level specific handling.
 *       - Access type: read
 *   - chgEv: specifies the reason for hte counter change
 *       - You can use this information in order to perform special activities if needed.
 *       - Access type: read
 *   - newAttCounter: new attempt counter value
 *       - If required, you can store this value into NVM.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" is NOT allowed to be called.
 *   - The function "DescSetNegResponse" is NOT allowed to be called.
 ******************************************************************************** */
void ApplDescSecurityAccessOnAttCntrChanged(DESC_LEVEL_FORMAL_PARAM_DEF_FIRST DescSecAccAttCtrChgEvType chgEv, vuint8 newAttCounter)
{
  switch(chgEv)
  {
    case kDescSecAccAttCtrChgOnTimeExpire:
      /* Event that the penalty time expired - do something if needed */
      break;
    case kDescSecAccAttCtrChgOnTooManyInvalidKeys:
      /* Event that too many invalid keys were received - do something if needed */
    case kDescSecAccAttCtrChgOnInvalidKey: /* fall through */
      /* Event that an invalid key received - do something if needed */
      break;
    case kDescSecAccAttCtrChgOnValidKey:
      /* Event that a valid key is received - do something if needed */
      break;
    case kDescSecAccAttCtrChgOnKeyLengthInvalid:
      /* Event that length of received key is invalid - do something if needed */
      break;
    case kDescSecAccAttCtrChgOnKeyWrongLevel: /* fall through */
      /* Event that key with wrong security access level is received - do something if needed */
      break;
    case kDescSecAccAttCtrChgOnApplRequest:
      /* Event that "DescSetAttemptCounterValue" has changed the counter value.
       * Usually you shall ignore this event type, since it is triggered by the application, but
       * to have complete "OnChange" chain this event will be triggered.*/
      return; /* usually you shall skip updating NVM */
    case kDescSecAccAttCtrChgInvalid:
      /* Invalid event type shall never occur!!! */
    default: /* fall through */
      /* not a valid case - do assert */
      return;/* do not store anything */
  }

  /*
  Optionally you can still access the current (not yet changed) value of the counter */
  if ( (DescGetAttemptCounterValue(DESC_LEVEL_CONTEXT_PARAM_VALUE_SET) == 0) &&
       (newAttCounter == 1) )
  {
    /* do something on very first increment of the counter */
  }


  /* Update the attempt counter in the NVM in all cases
  eepWrite(secAccessAttCntrHndl, newAttCounter);
  */
}
#endif

/******************************************************************************
* Name         :  SecM_ComputeKey  
* Called by    :  CheckKey
* Preconditions:  None
* Parameters   :  None
* Description  :  
******************************************************************************/
static vuint32 SecM_ComputeKey(void)
{
  vuint32 tmpX, tmpY;

  tmpX=(vuint32)(g_applDescSeedX ^ kDescEcuCryptoKey);
  tmpY=(vuint32)(g_applDescSeedY & kDescEcuCryptoKey);
  return (vuint32)(tmpX ^ tmpY);
}

/******************************************************************************
* Name         :  SecM_Serializer  
* Called by    :  CheckKey
* Preconditions:  None
* Parameters   :  None
* Description  :  
******************************************************************************/
static void SecM_Serializer(DescMsg tgtPtr, vuint32 data)
{
  vuint8_least iter;
  iter = 4;
  while(iter != 0)
  {
    iter--;
    tgtPtr[iter] = (DescMsgItem)data;
    data >>= 8;
  }
}

/* ********************************************************************************
 * Function name:ApplDescSecurityAccessGetSeed
 * Description: Each time called must generate a different value (e.g. current free running timer value).
 * Returns:  Random value
 * Parameter(s):
 *   - iContext:(not available in single context systems)
 *       - Use this call-back handle for all API which need it.
 *       - Access type: read
 *   - securityLevel:
 *       - The current security level represented by the generated contsants (e.g kDescStateSecurityAccessLevel1e etc.).
 *       - Access type: read
 *   - seed:
 *       - A pointer where the generated seed must be written by the application.
 *       - Access type: write
 *   - seedLen:
 *       - The length of the written seed.
 *       - Access type: write
 *   - securityAccessDataRecordLength (only if securityAccessData is supported)
 *       - The length of security access data record.
 *       - Access type: read
 *   - dataPtrSecurityAccessData (only if securityAccessData is supported)
 *       - A pointer to security access data record.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" is NOT allowed to be called.
 *   - The function "DescSetNegResponse" may be called.
 ******************************************************************************** */
void ApplDescSecurityAccessGetSeed(DescSecurityAccessContext* pDescSecurityAccessContext)
{
  /*<<TBD>> Remove this comment once you have completely implemented this function!!!*/

  /* Generate each time a random 64Bit value !!! 
   * Example:
   */
  g_applDescSeedX = DescMake32Bit(0x12, 0x34, 0x56, 0x78);
  g_applDescSeedY = DescMake32Bit(0xF1, 0xF2, 0xF3, 0xF4);

  /* MSB 32Bit*/
  SecM_Serializer(&(pDescSecurityAccessContext->dataPtr[0]), g_applDescSeedX);
  /* LSB 32Bit*/
  SecM_Serializer(&(pDescSecurityAccessContext->dataPtr[4]), g_applDescSeedY);

  /* Currently the example will calculate always a 8 Byte SEED */
  /* dataLen parameter is already initialized with the seed length from the CDD file */
  /* pDescSecurityAccessContext->dataLen = 8;*/

  /* Call this function to confirm the process end now or outside of this call-back */
  DescSecurityAccessSeedReady(DESC_CONTEXT_PARAM_WRAPPER_ONLY(pDescSecurityAccessContext->iContext));
}

/* ********************************************************************************
 * Function name:ApplDescSecurityAccessCheckKey
 * Description: The application must validate the received security key.
 * Returns:  Random value
 * Parameter(s):
 *   - iContext:(not available in single context systems)
 *       - Use this call-back handle for all API which need it.
 *       - Access type: read
 *   - securityLevel:
 *       - The current security level represented by the generated contsants (e.g kDescStateSecurityAccessLevel1e etc.).
 *       - Access type: read
 *   - key:
 *       - A pointer where the received key must be read from by the application.
 *       - Access type: read
 *   - keyLength:
 *       - The length of the received key.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" is NOT allowed be called.
 *   - The function "DescSetNegResponse" may be called.
 ******************************************************************************** */
void ApplDescSecurityAccessCheckKey(DescSecurityAccessContext* pDescSecurityAccessContext)
{
   /* The size of this array may vary and depends on the security key definition in the CDD file. */
  vuint32 tmpKey;     /* Store Key on the stack, invisible for extern access */

  /* Key is OK */
  pDescSecurityAccessContext->status = kDescSaStatusOk;

  /* Calculate the Key */
  tmpKey = SecM_ComputeKey();

  /* Compare results with Key from tester */
  if (tmpKey != DescMake32Bit(pDescSecurityAccessContext->dataPtr[0],
                              pDescSecurityAccessContext->dataPtr[1],
                              pDescSecurityAccessContext->dataPtr[2],
                              pDescSecurityAccessContext->dataPtr[3])
      )
  {
    /* Key is INVALID */
    pDescSecurityAccessContext->status = kDescSaStatusNok;
  }
  pDescSecurityAccessContext->status = kDescSaStatusOk;
  /* Call this function to confirm the process end now or outside of this call-back */
  DescSecurityAccessKeyChecked(DESC_CONTEXT_PARAM_WRAPPER_ONLY(pDescSecurityAccessContext->iContext));
}

/*  ********************************************************************************
 * Function name:ApplDescReadDidbackup_battery_healthy_status (Service request header:$22 $49 $0 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidbackup_battery_healthy_status(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidvehicle_location_information (Service request header:$22 $49 $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidvehicle_location_information(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 9;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidIMEI (Service request header:$22 $49 $2 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidIMEI(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 17;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidICCID (Service request header:$22 $49 $3 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidICCID(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 20;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidSIM_card_status (Service request header:$22 $49 $4 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidSIM_card_status(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidSIM_card_airplane_mode (Service request header:$22 $49 $5 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidSIM_card_airplane_mode(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidcellular_network_signal_strength (Service request header:$22 $49 $6 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidcellular_network_signal_strength(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidcellular_network_signal_level (Service request header:$22 $49 $7 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidcellular_network_signal_level(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidcellular_network_type (Service request header:$22 $49 $8 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidcellular_network_type(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidbackup_battery_temp (Service request header:$22 $49 $9 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidbackup_battery_temp(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDideCall_official_number (Service request header:$22 $49 $A )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDideCall_official_number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 11;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidreprogramming_result (Service request header:$22 $49 $C )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidreprogramming_result(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidIMU_calibration_confidence_percent (Service request header:$22 $49 $F )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidIMU_calibration_confidence_percent(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDideCall_enable_disable (Service request header:$22 $49 $10 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDideCall_enable_disable(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidautomatic_eCall_allowed (Service request header:$22 $49 $11 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidautomatic_eCall_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidmanual_eCall_cancellation_allowed (Service request header:$22 $49 $12 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidmanual_eCall_cancellation_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDideCall_test_number_1 (Service request header:$22 $49 $13 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDideCall_test_number_1(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 14;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDiddial_test_number_allowed (Service request header:$22 $49 $14 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDiddial_test_number_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidtest_mode_call_allowed (Service request header:$22 $49 $15 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidtest_mode_call_allowed(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDideCall_max_attempts (Service request header:$22 $49 $16 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDideCall_max_attempts(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDideCall_already_attempted_times (Service request header:$22 $49 $17 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDideCall_already_attempted_times(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidBLE_MAC_address (Service request header:$22 $49 $19 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidBLE_MAC_address(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 11;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDideCall_control_state (Service request header:$22 $49 $30 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDideCall_control_state(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidbackup_battery_boost_control (Service request header:$22 $49 $31 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidbackup_battery_boost_control(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidReprogramming_Attempt_Counter (Service request header:$22 $F0 $10 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidReprogramming_Attempt_Counter(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidECU_Configuration (Service request header:$22 $F1 $1 )
 * Description:Implementation Rule:
 * The ECU Configuration must be stored as Hex code with 25 Bytes. NextEV will write
 * at vehicle EOL.
 * The Header is defined by NextEV for tracking the ECU configuration feature, it
 * will generated on production line, e.g. server, than write at EOL; Customization
 * data is default as 16 bytes for ES8 project, if it need adjustment to be extended
 * from ECU application point of view (only special case), it need agree by NextEV
 * EE architecture team. Customization data is defined by NextEV from vehicle
 * platform feature point of view, configuration master need to store it into
 * EEPROM.
 * Customization data is defined by NextEV component owner with ECU supplier, from
 * ECU variant feature point of view, configuration peer nodes need to store it into
 * EEPROM and use it to variant the function of ECU.
 * Details definition of ECU configuration process, please refer to [2]
 * NEV-STD-EE-0016_Variant Configuration Specification.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidECU_Configuration(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 17;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidVehicle_Manufacture_Hardware_Part_Number (Service request header:$22 $F1 $10 )
 * Description:Implementation Rule:
 * 
 * The Vehicle Manufacturer Hardware Part Number must be stored as ASCII code with
 * 11 Bytes. The Vehicle Manufacturer Hardware Part Number shall be implemented in
 * EEPROM. 
 * 
 * The first 8 bytes represent the main part number with a space (ASCII code using
 * 0x20) followed by 2 bytes for revision number. NextEV will define it before every
 * new hardware release, supplier should write it into the production in supplier
 * site, e.g. supplier EOL.
 * 
 * 
 * 
 * 
 * 
 * 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidVehicle_Manufacture_Hardware_Part_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 11;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidVehicle_Manufacture_Hardware_Baseline (Service request header:$22 $F1 $11 )
 * Description:Implementation Rule:
 * 
 * The Vehicle Manufacturer Engineering Baseline Version must be stored as ASCII
 * code with 2 Bytes, and be implemented in EEPROM. The Vehicle Manufacturer
 * Hardware Engineering Baseline Version should always start from 01 when the
 * Manufacturer Hardware Part Number (F1 10) changed and incremented with 1 when
 * Hardware changed during engineering phase. The content of this DID should be
 * within the range [01, 99] at the Engineering phase, and must be set as blank (hex
 * value 0x20, 0x20) when the Hardware is officialized. The Vehicle Manufacturer
 * Hardware Engineering Baseline Version will be used at NextEV plant to ensure the
 * hardware used is officialized.
 * 
 * NextEV will define it before every new hardware release, supplier should write it
 * into the production in supplier site, e.g. supplier EOL.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidVehicle_Manufacture_Hardware_Baseline(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 2;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidVehicle_Manufacturer_Software_Part_Number (Service request header:$22 $F1 $18 )
 * Description:Implementation Rule:
 * 
 * The Vehicle Manufacturer Software Part Number must be stored as ASCII code with
 * 11 Bytes. The Vehicle Manufacturer Software Part Number shall be hardcoded in the
 * application software. 
 * 
 * The first 8 bytes represent the main part number with a space (ASCII code using
 * 0x20) followed by 2 bytes for revision number. NextEV will define it before every
 * software release, supplier should implement in the application software.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidVehicle_Manufacturer_Software_Part_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 11;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidVehicle_Manufacture_Software_Baseline (Service request header:$22 $F1 $19 )
 * Description:Implementation Rule:
 * 
 * The Vehicle Manufacturer Software Engineering Baseline Version must be stored as
 * ASCII code with 2 Bytes, and be implemented in Flash. The Vehicle Manufacturer
 * Software Engineering Baseline Version should always start from 01 when the
 * Manufacturer Software Part Number (F1 18) changed and incremented with 1 when
 * Software changed during engineering phase. The content of this DID should be
 * within the range [01, 99] during Engineering phase, and must be set as blank (hex
 * value 0x20, 0x20) when the software is officialized. The Vehicle Manufacturer
 * Software Engineering Baseline Version will be used at NextEV plant to ensure the
 * software used is officialized.
 * 
 * NextEV will define it before every new software release, supplier should
 * implement it in application software.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidVehicle_Manufacture_Software_Baseline(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 2;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidECALL_Software_Part_Number (Service request header:$22 $F1 $1A )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidECALL_Software_Part_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 11;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidBootloader_Version_Number (Service request header:$22 $F1 $50 )
 * Description:Implementation Rule:
 * 
 * The Boot loader version number must be stored as Hex code with 3 Bytes. The Boot
 * loader version number shall be hardcoded in the bootloader software, and could be
 * read by both application and bootloader software.
 * 
 * This DID has to be incremented with every bootloader software change in the ECU.
 * NextEV will define it before each flash bootloader release, supplier should
 * implement in the bootloader software.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidBootloader_Version_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 3;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidRead_Programming_Fingerprint (Service request header:$22 $F1 $5B )
 * Description:Implementation Rule:
 * 
 * The Fingerprint must be stored as Hex code with 12 Bytes. The value read from
 * this DID should be same as the value write into â€˜0xF1 5Aâ€™.
 * All bytes 0xFF means the ECU has never been reprogrammed, it never been written.
 * 
 * 
 * 
 * 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidRead_Programming_Fingerprint(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 12;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidConfiguration_Fingerprint (Service request header:$22 $F1 $5C )
 * Description:Implementation Rule:
 * The Configuration Fingerprint must be stored as Hex code with 12 Bytes. It will
 * be written in each vehicle configuration process. NextEV will write at vehicle
 * EOL. All Bytes 0xFF means it has never been written.
 * Supplier shall keep all Bytes with default value (0xFF).
 * 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidConfiguration_Fingerprint(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 12;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidRead_Active_Diagnostic_Session (Service request header:$22 $F1 $86 )
 * Description:Implementation Rule:
 * The read session should reflect the actual session of the ECU when receive this
 * request. The Session definition, please refer to [1] NEV-STD-EE-0013_General UDS
 * Diagnostic Specification.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidRead_Active_Diagnostic_Session(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidVehicle_Manufacturer_Spare_Part_Number (Service request header:$22 $F1 $87 )
 * Description:Implementation Rule:
 * 
 * The Vehicle Manufacturer Spare Part Number must be stored as ASCII code with 13
 * Bytes (including a space and ‘.’). The first 8 bytes represent the main part
 * number, with a space (ASCII code using 0x20), followed by 4 bytes for revision
 * number (revision number is separated by a point (ASCII code using 0x2E) into two
 * parts to tracking the release version).
 * 
 * The ECU Spare Part Number is defined by NextEV aftersales and logistic team,
 * which is target to be used for aftersales spare parts. If NextEV aftersales team
 * need to use it, NextEV will define the number and supplier should write when
 * produce the ECU module, otherwise all bytes 0x20 means no Spare Part Number is
 * stored.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidVehicle_Manufacturer_Spare_Part_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 11;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidSystem_Supplier_Identifier (Service request header:$22 $F1 $8A )
 * Description:Implementation Rule:
 * 
 * The System supplier ID must be stored as ASCII code with 8 Bytes. The system
 * supplier ID number shall be hardcoded in the application software.
 * 
 * NextEV will define the number, and supplier should implement in the software.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidSystem_Supplier_Identifier(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 8;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidECU_Manufacturing_Date (Service request header:$22 $F1 $8B )
 * Description:Implementation Rule:
 * 
 * Then ECU manufacturing date must be stored as Hex code with 3 Bytes, it shall be
 * written at ECU supplier EOL. Supplier could decide the method to write, but from
 * NextEV side, this DID should be kept read only and can never be changed.
 * 
 * The System supplier ID must be stored as ASCII code with 8 Bytes, it shall be
 * written at ECU supplier EOL. Supplier could decide the method to write, but from
 * NextEV side, this DID should be kept read only and can never be changed.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidECU_Manufacturing_Date(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 3;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidECU_Serial_Number (Service request header:$22 $F1 $8C )
 * Description:Implementation Rule:
 * 
 * The ECU serial number shall uniquely identify an individual ECU. The size of this
 * data record shall be 10 bytes, if supplier request different length of serial
 * number, need to be agreed by NextEV.
 * 
 * Supplier could decide the method to write at ECU production, but from NextEV
 * side, this DID should be kept read only and can never be changed.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidECU_Serial_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 40;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidVehicle_Identification_Number (Service request header:$22 $F1 $90 )
 * Description:Implementation Rule:
 * 
 * The VIN number must be stored as ASCII code with 17 Bytes (Defined by NextEV),
 * the number is unique per vehicle. NextEV will write at vehicle EOL.
 * 
 * All Bytes 0xFF means it has never been written, no valid VIN code stored.
 * 
 * Supplier shall keep all Bytes with default value (0xFF).
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidVehicle_Identification_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 17;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidSystem_Supplier_Hardware_Version_Number (Service request header:$22 $F1 $93 )
 * Description:Implementation Rule:
 * 
 * The System Supplier Hardware Version Number must be stored by supplier ECU EOL.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidSystem_Supplier_Hardware_Version_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 10;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidSystem_Supplier_Software_Version_Number (Service request header:$22 $F1 $95 )
 * Description:Implementation Rule:
 * 
 * The System Supplier Software Version Number must be hardcoded into software.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidSystem_Supplier_Software_Version_Number(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 10;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidSystem_Name (Service request header:$22 $F1 $97 )
 * Description:Implementation Rule:
 * 
 * The System Name must be stored as ASCII code with 8 Bytes. The system name shall
 * be hardcoded in the application software. NextEV will define the content, and
 * supplier should implement in the software to be read, unused bytes shall be
 * padding with 0x20.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidSystem_Name(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 8;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidECU_Programming_Date (Service request header:$22 $F1 $99 )
 * Description:Implementation Rule:
 * This DID should be read only and the value is extract from 0xF15A/0xF15B which is
 * the fingerprint for programming.
 * All bytes 0xFF means the ECU has never been reprogrammed.
 * Supplier shall keep all Bytes with default value (0xFF).
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidECU_Programming_Date(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 3;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescReadDidECU_Diagnostic_Database_Version (Service request header:$22 $F1 $9E )
 * Description:Implementation Rule:
 * 
 * The ECU Diagnostic Database DID must be stored as Hex code with 3 Bytes. The ECU
 * Diagnostic Database DID shall be hardcoded in the application software.
 * 
 * This DID will be used as the ECU diagnostic software and database version, has to
 * be incremented with every diagnostics relevant software change in the ECU. NextEV
 * will define it before every software release, supplier should implement in the
 * software.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescReadDidECU_Diagnostic_Database_Version(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 3;
  /* User service processing finished. */
  DescProcessingDone();
}


#if defined (DESC_ENABLE_MULTI_CFG_SUPPORT)
/* ********************************************************************************
 * Function name:ApplDescIsDataIdSupported
 * Description: Additionaly reject a supported PID (multi ECU configuration)
 * Returns:  kDescTrue - if still supported, kDescFalse - if not supported
 * Parameter(s):The PID number
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" may not be called.
 *   - The function "DescSetNegResponse" may not be called.
 ******************************************************************************** */
DescBool ApplDescIsDataIdSupported(vuint16 pid)
{
  return kDescTrue;
}
#endif

/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStartCheck_Programming_Preconditions (Service request header:$31 $1 $2 $3 )
 * Description:Routine status byte in the positive response is defined by component level as
 * there is different condition to be checked, e.g. ABS should check the vehicle
 * speed. The response with no this bytes ([71 01 02 03]), means the pre-condition
 * check is pass, no problem to be reflashed.
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStartCheck_Programming_Preconditions(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStartSSH_control_in_production_env (Service request header:$31 $1 $33 $87 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStartSSH_control_in_production_env(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 1;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStartinstall_cert (Service request header:$31 $1 $33 $BB )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStartinstall_cert(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 1;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStarttest_cert_installation (Service request header:$31 $1 $33 $BC )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStarttest_cert_installation(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* The application must check the requested data length. */
  if(pMsgContext->reqDataLen <= (DescMsgLen)0x0FFF)
  {
    /* Dummy example how to access the request data. */
    /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
    if(pMsgContext->reqData[0] < 0xFF)
    {
      /* Received data is in range process further. */
      /* Dummy example of how to write the response data. */
      pMsgContext->resData[0] = 0xFF;
      /* Always set the correct length of the response data. */
      pMsgContext->resDataLen = 1;
    }
    else
    {
      /* Request contains invalid data - send negative response! */
      DescSetNegResponse(kDescNrcRequestOutOfRange);
    }
  }
  else
  {
    /* Request length invalid - send negative response! */
    DescSetNegResponse(kDescNrcInvalidFormat);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStartstart_sideloading (Service request header:$31 $1 $33 $BE )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStartstart_sideloading(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 1;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStartErase_Memory (Service request header:$31 $1 $FF $0 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStartErase_Memory(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Dummy example how to access the request data. */
  /* Assumming the FIRST DATA byte contains important data which has to be less than a constant value. */
  if(pMsgContext->reqData[0] < 0xFF)
  {
    /* Received data is in range process further. */
    /* Dummy example of how to write the response data. */
    pMsgContext->resData[0] = 0xFF;
    /* Always set the correct length of the response data. */
    pMsgContext->resDataLen = 1;
  }
  else
  {
    /* Request contains invalid data - send negative response! */
    DescSetNegResponse(kDescNrcRequestOutOfRange);
  }
  /* User service processing finished. */
  DescProcessingDone();
}


/*  ********************************************************************************
 * Function name:ApplDescRtnCtrlStartCheck_Programming_Dependence (Service request header:$31 $1 $FF $1 )
 * Description: not available 
 * Returns:  nothing
 * Parameter(s):
 *   - pMsgContext->reqData:
 *       - Points to the first service request data byte.
 *       - Access type: read
 *   - pMsgContext->resData:
 *       - Points to the first writeable byte for the service response data.
 *       - Access type: read/write
 *   - pMsgContext->reqDataLen:
 *       - Contains the count of the service request data bytes (Sid is excluded).
 *       - Access type: read
 *   - pMsgContext->resDataLen:
 *       - Must be initialized with the count of the service response data bytes (Sid is excluded).
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.reqType:
 *       - Shows the addressing type of the request (kDescPhysReq or kDescFuncReq).
 *       - Access type: read
 *   - pMsgContext->msgAddInfo.resOnReq:
 *       - Indicates if there will be response. Allowed only to write only 0 !!!
 *       - Access type: read/write
 *   - pMsgContext->msgAddInfo.suppPosRes:
 *       - UDS only!If set no positive response will be sent on this request.
 *       - Access type: read
 * Particularitie(s) and limitation(s):
 *   - The function "DescProcessingDone" must be called from now on (within this
 * main-handler or later).
 *   - The function "DescSetNegResponse" can be called within this main-handler or later
 * but before calling "DescProcessingDone".
 ********************************************************************************  */
void DESC_API_CALLBACK_TYPE ApplDescRtnCtrlStartCheck_Programming_Dependence(DescMsgContext* pMsgContext)
{
  /* <<TBD>> Remove this comment once you have completely implemented this function!!! */
  /* Contains no request data */
  /* Dummy example of how to write the response data. */
  pMsgContext->resData[0] = 0xFF;
  /* Always set the correct length of the response data. */
  pMsgContext->resDataLen = 1;
  /* User service processing finished. */
  DescProcessingDone();
}




