/*
 *
 * Copyright (C) 2020-2022 Qing.zhou
 *
 *
 */
 
 
/* -------------------------------- Includes -------------------------------- */
/* external head files */

/* internal head files */
#include "UDS_ServicesType.h"
#include "DiagnosticR/Comp_ISO_15765_3/Iso15765_3.h"
#include "calib_public.h"

#define NOOF(a)                         (sizeof(a)/sizeof(a[0]))
/* -------------------------------- Defines --------------------------------- */

/* -------------------------------- Macros ---------------------------------- */

/* ------------------------------- Data Types ------------------------------- */

/* -------------------------- Function declaration -------------------------- */
static t_UDS_ERR Calib_KeyUp(void);
static t_UDS_ERR Calib_KeyDown(void);
static t_UDS_ERR Calib_KeyLeft(void);
static t_UDS_ERR Calib_KeyRight(void);
static t_UDS_ERR Calib_KeyOK(void);
static t_UDS_ERR Calib_KeyFun1(void);
static t_UDS_ERR Calib_KeyFun2(void);
static t_UDS_ERR Calib_KeyFun3(void);

/* ----------------------------- Local Variables ---------------------------- */

/* ---------------------------- Global Variables ---------------------------- */
t_UDSIOControlSubCommands uds_io_control_commands[] =
{
    /*    DID          Service legth        Session support               Security       {ReturnControl  ,  Default,  Freeze,                Adjustment}     */
        { 0xD101    ,  1             ,    UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,  {NULL, NULL, NULL, NULL} },
};

t_UDSRoutineControlCommands uds_routine_control_commands[] =
{
     /*    DID          Service legth        Session support             Security         {Start                   Stop            Request  }     */
        { 0xAE00        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyUp,      NULL,         NULL} },
        { 0xAE01        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyDown,      NULL,         NULL} },
        { 0xAE02        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyLeft,      NULL,         NULL} },
        { 0xAE03        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyRight,      NULL,         NULL} },
        { 0xAE04        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyOK,      NULL,         NULL} },
        { 0xAE05        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyFun1,      NULL,         NULL} },
        { 0xAE06        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyFun2,      NULL,         NULL} },
        { 0xAE07        ,  0   ,       UDS_EXT_DIAG_SESSION    ,  UDS_ECU_LOCKED,   {Calib_KeyFun3,      NULL,         NULL} },        
};

/* --------------------------- Private Variables ---------------------------- */

/* --------------------------- Private Functions ---------------------------- */



static t_UDS_ERR Calib_KeyUp(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data0,0);

        
    return response_mode;
}
static t_UDS_ERR Calib_KeyDown(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data1,0);

  
    return response_mode;
}
static t_UDS_ERR Calib_KeyLeft(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
     Calib_Trigger(data2,0);

     
    return response_mode;
}
static t_UDS_ERR Calib_KeyRight(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data3,0);

      
    return response_mode;
}
static t_UDS_ERR Calib_KeyOK(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data4,0);

      
    return response_mode;
}
static t_UDS_ERR Calib_KeyFun1(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data5,0);

      
    return response_mode;
}
static t_UDS_ERR Calib_KeyFun2(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data6,0);
      
    return response_mode;
}
static t_UDS_ERR Calib_KeyFun3(void) {
    t_UDS_ERR response_mode = ISO15765_3_POSITIVE_RESPONSE;
    /* implementation */
    Calib_Trigger(data7,0);
      
    return response_mode;
}


/* ---------------------------- Public Functions ---------------------------- */

uint8 GetIoControlServiceNumber(void){
    return NOOF(uds_io_control_commands);
}


uint8 GetRoutineServiceNumber(void){
    return NOOF(uds_routine_control_commands);
}

