
/*************************   FICOSA INTERNATIONAL ****************************
| File:              | TP_Tx_Lite.c
|-----------------------------------------------------------------------------
| Author:            | Abel Casas
|-----------------------------------------------------------------------------
| Project:           | TP_Lite
| System:            | TP_Task_Lite
| Diagram:           | TP_Tx_Lite
| Model Version:     | 1.0
| Model Date:        | Thursday, February 26, 2009 - 14:47:56
|-----------------------------------------------------------------------------
| CodeC Version:     | 1.0
| Codification Date: | 10/1/2012
|-----------------------------------------------------------------------------
| Description:
|    Codificacio automatica d'un diagrama d'estats
|
|    ++++ Informacio del Diagrama d'Estats +++++
|
|    Numero d'estats:       2
|    Numero de transicions: 3
|    Estats inicials:       1
|  
|    Variables d'entrada:
|    Variables de sortida:
|           tp_frm (t_tp_frm)
|    Variables d'entrada/sortida:
|    Variables locals:
|
|    ++++ Descripcio del proces implementat ++++
|
|    Task responsible of controlling all the flow of a transmission of
a transport protocol frame. This task is responsible of sending
correctly SF.
|
**************************   FI DE LA CAPCALERA  ****************************/

/*------------------------------- includes --------------------------------*/
#include "Std_Types.h"
#include "DiagnosticR/Comp_HAL_Autosar_Wrappers/Timer.h"
#include "TP_Task_Lite.h"

#include "DiagnosticR/UDS/Iso15765_layer2/TP_CFG.h"
#include "TP_Functions.h"

/*-------------------------------- defines ---------------------------------*/

/* Maxim valor del compteig del temps */
#define MAX_COMPTADOR_TEMPS ((UI_16)65000)

/*---------------------------- tipus de dades -----------------------------*/


/*------------------------------ variables --------------------------------*/


/*------------------------------ user code --------------------------------*/



/*------------------------- capcaleres de funcions ------------------------*/

//static void TP_Tx_Lite0(UI_8 tp_hdl);
//static void Init(UI_8 tp_hdl);
//static void ConfirmTx(UI_8 tp_hdl);


/*----------------------- funcions d'inicialitzacio -----------------------*/
 
/**************************************************************************** 
| Funcionalitat:                                                              
|   Inicialitzacio del diagrama d estats TP_Tx_Lite 
|---------------------------------------------------------------------------- 
| Interficie:                                                                 
|   Entrades: - 
|   Sortides:
|       tp_data[tp_hdl].state_tx
|       
|       tp_frm 
****************************************************************************/
void TP_Tx_LiteInicialitza(UI_8 tp_hdl)
{
    /* Inicialitzacio de la variable d estat */
//    tp_data[tp_hdl].state_tx = ESTAT_0_TP_TX_LITE;

    /* Execucio del cicle inicial de la maquina d estats */
    //TP_Tx_Lite(tp_hdl);
}


/*------------------------- rutines principals ---------------------------*/
 
/**************************************************************************** 
| Funcionalitat:                                                              
|   Rutina principal del diagrama d estats TP_Tx_Lite. 
|   Invoca a la funcio corresponent a l estat actual. 
|---------------------------------------------------------------------------- 
| Interficie:                                                                 
|   Entrades:
|       tp_data[tp_hdl].state_tx
|        
|   Sortides:
|       tp_data[tp_hdl].state_tx
|       
|       tp_frm 
****************************************************************************/

void TP_Tx_Lite(UI_8 tp_hdl)
{
#if 0
    /* Estudi per casos del estat actual */
    switch (tp_data[tp_hdl].state_tx){
    case ESTAT_0_TP_TX_LITE:
        TP_Tx_Lite0(tp_hdl);
        break;
    case ESTAT_TP_TX_LITE_INIT:
        Init(tp_hdl);
        break;
    case ESTAT_TP_TX_LITE_CONFIRMTX:
        ConfirmTx(tp_hdl);
        break;
    default:
        tp_data[tp_hdl].state_tx = ESTAT_0_TP_TX_LITE;
        break;
    }
    #endif

}

/*------------------------- funcions d'estats -----------------------------*/

 
/**************************************************************************** 
| Funcionalitat: 
|   Funcio corresponent a l estat inicial del proces TP_Tx_Lite 
|---------------------------------------------------------------------------- 
| Interficie: -                                                                
****************************************************************************/
#if 0
static void TP_Tx_Lite0(UI_8 tp_hdl)
{

    if (TPCheckPhyCfgData(tp_hdl) == TRUE) {
        /* Avaluem condicio de start del estat Init */

        /* Canviem l estat inicial */
       // tp_data[tp_hdl].state_tx = ESTAT_TP_TX_LITE_INIT;
    }
    else {
        /* No s ha activat cap condicio inicial: ens quedem a l estat actual */
       // tp_data[tp_hdl].state_tx = ESTAT_0_TP_TX_LITE;
    }
}
#endif 
/**************************************************************************** 
| Funcionalitat:                                                              
|   Funcio corresponent a l estat Init.                              
|---------------------------------------------------------------------------- 
| Interficie:                                                                 
|   Entrades:
|       tp_data[tp_hdl].state_tx
|        
|   Sortides:
|       tp_data[tp_hdl].state_tx
|       
|       tp_frm 
****************************************************************************/
#if 0
static void Init(UI_8 tp_hdl)
{
    if ((tp_frm[tp_hdl].sts_tx == TP_FRM_TX_REQ) && (tp_frm[tp_hdl].size_tx <= NP_SF_MAX_SIZE) && (tp_frm[tp_hdl].iso15765_2_block_tx == FALSE)) {
        /* Cas en que executem la transicio TxSF */

        /* -- action de la transicio -- */
        TPSendSF(tp_hdl);

        /* -- canviem l estat -- */
       // tp_data[tp_hdl].state_tx = ESTAT_TP_TX_LITE_CONFIRMTX;
    }
    else {

        /* No s ha activat cap transicio: ens quedem a l estat actual */
       // tp_data[tp_hdl].state_tx = ESTAT_TP_TX_LITE_INIT;
    }
}
#endif 
/**************************************************************************** 
| Funcionalitat:                                                              
|   Funcio corresponent a l estat ConfirmTx.                              
|---------------------------------------------------------------------------- 
| Interficie:                                                                 
|   Entrades:
|       tp_data[tp_hdl].state_tx
|        
|   Sortides:
|       tp_data[tp_hdl].state_tx
|       
|       tp_frm 
****************************************************************************/
#if 0
static void ConfirmTx(UI_8 tp_hdl)
{
    /* -- codi de l estat actual -- */
    BOOL tx_confirmed, end_frame;
        
    /* Check if the transmission has been confirmed */
    tx_confirmed = TPCheckTxConfirmed(tp_hdl, tp_data[tp_hdl].tx_st.frame_tx_sts);
    
    /* -- codi de l estat actual -- */
    if (tx_confirmed == TRUE) {
        tp_data[tp_hdl].tx_st.ack_tx = TRUE;
    }
    else {
        tp_data[tp_hdl].tx_st.ack_tx = FALSE;
    }
        
    /* Check if the TX is finished */
    end_frame = TPTestEndFrame(tp_hdl);
    

    if ((tp_data[tp_hdl].tx_st.ack_tx == FALSE) && (tp_data[tp_hdl].tx_st.frame_tx_sts == TP_TX_ERROR)) {
        /* Cas en que executem la transicio TimeOutTxCF */

        /* -- action de la transicio -- */
        tp_frm[tp_hdl].sts_tx = TP_FRM_TX_ERR_NOTIF;
        tp_frm[tp_hdl].iso15765_2_block_rx = FALSE;

        /* -- canviem l estat -- */
       // tp_data[tp_hdl].state_tx = ESTAT_TP_TX_LITE_INIT;
    }
    else if ((tp_data[tp_hdl].tx_st.ack_tx == TRUE) && (end_frame == TRUE)) {
        /* Cas en que executem la transicio TxFinished */

        /* -- action de la transicio -- */
        tp_frm[tp_hdl].sts_tx = TP_FRM_TX_IDLE;

        /* -- canviem l estat -- */
        //tp_data[tp_hdl].state_tx = ESTAT_TP_TX_LITE_INIT;
    }
    else {

        /* No s ha activat cap transicio: ens quedem a l estat actual */
      //  tp_data[tp_hdl].state_tx = ESTAT_TP_TX_LITE_CONFIRMTX;
    }
}
#endif

/********************************** FI **************************************/
