#include "g_includes.h"
#include "NMUserControl.h"
#include "NM_Config.h"



uint16_t u32OsekAPPFlag = 0UL;


AppMsgTime_t APPSendMsg;
void Osek_APP_TX_Init(void)
{
    if (u32OsekAPPFlag)
    {
        return;
    }

    APPSendMsg.AppCycleTimeMax = 1000;
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x18FEC1EEUL; 
    APPSendMsg.AppLen = 8;          
    NM_Init_App_Fun(0, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 1000; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x18FEFC17UL;
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(1, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 250; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x10FF4117UL; 
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(2, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 20; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x0CFE6CEEUL; 
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(3, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 10; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x0810A000UL; 
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(4, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 100;
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x0A18A000UL; 
    APPSendMsg.AppLen = 8;          
    NM_Init_App_Fun(5, &APPSendMsg);


    APPSendMsg.AppCycleTimeMax = 50; 
    APPSendMsg.AppCycleTime = 95;
    APPSendMsg.AppId = 0x18FFC321UL; 
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(6, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 50; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x18FF6121UL; 
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(7, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 1000;
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x18FEE6EEUL; 
    APPSendMsg.AppLen = 8;          
    NM_Init_App_Fun(8, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 1000; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x18D00017UL;
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(9, &APPSendMsg);

    APPSendMsg.AppCycleTimeMax = 200; 
    APPSendMsg.AppCycleTime = 100;
    APPSendMsg.AppId = 0x18A97121UL;
    APPSendMsg.AppLen = 8;           
    NM_Init_App_Fun(10, &APPSendMsg);

    u32OsekAPPFlag = 1UL;
}

OSEK_NM_INIT OSEK_NM_INI;
void OsekNMInit(void)
{
  

    OSEK_NM_INI.NmIdBase = NM_OSEK_ID_MIN;    
    OSEK_NM_INI.NmIdBottom = NM_OSEK_ID_MAX;  
    OSEK_NM_INI.NmIdOwn = 0X17;           
    OSEK_NM_INI.NmRxLimit = 4;            
    OSEK_NM_INI.NmTxLimit = 8;             
    OSEK_NM_INI.NmTimeType = 100;          
    OSEK_NM_INI.NmTimeMax = 260;           
    OSEK_NM_INI.NmTimeError = 1000;        
    OSEK_NM_INI.NmTimeWaitBusSleep = 5000; 
    OSEK_NM_INI.NmTimeRequestSleepInd = 5000;
    OSEK_NM_INI.NmTimeRequestLimpSleepInd = 4;
    OSEK_NM_INI.VoltUpLimit = 1810;
    OSEK_NM_INI.VoltDownLimit = 690;
    OSEK_NM_INI.BusoffFastRecoverCnt = 5;
    OSEK_NM_INI.BusoffFastRecoverTime = 50;
    OSEK_NM_INI.BusoffSlowRecoverTime = 200;

    InitNM(&OSEK_NM_INI);

    Osek_APP_TX_Init();
    NmSetBatVolt(1000);
}

void SendMsg(void)
{
  
    Can_Set_Buff_18FEC1EE(APPSendMsg.AppData);
    NM_Set_App_Fun(0, APPSendMsg.AppData, 8);

    Can_Set_Buff_18FEFC17(APPSendMsg.AppData);
    NM_Set_App_Fun(1, APPSendMsg.AppData, 8);

    Can_Set_Buff_10FF4117(APPSendMsg.AppData);
    NM_Set_App_Fun(2, APPSendMsg.AppData, 8);

    Can_Set_Buff_0CFE6CEE(APPSendMsg.AppData);
    NM_Set_App_Fun(3, APPSendMsg.AppData, 8);

    Can_Set_Buff_0810A000(APPSendMsg.AppData);
    NM_Set_App_Fun(4, APPSendMsg.AppData, 8);

    Can_Set_Buff_0A18A000(APPSendMsg.AppData);
    NM_Set_App_Fun(5, APPSendMsg.AppData, 8);

    Can_Set_Buff_18FFC321(APPSendMsg.AppData);
    NM_Set_App_Fun(6, APPSendMsg.AppData, 8);

    Can_Set_Buff_18FF6121(APPSendMsg.AppData);
    NM_Set_App_Fun(7, APPSendMsg.AppData, 8);

    Can_Set_Buff_18FEE6EE(APPSendMsg.AppData);
    NM_Set_App_Fun(8, APPSendMsg.AppData, 8);

    Can_Set_Buff_18D00017(APPSendMsg.AppData);
    NM_Set_App_Fun(9, APPSendMsg.AppData, 8);

    Can_Set_Buff_18A97121(APPSendMsg.AppData);
    NM_Set_App_Fun(10, APPSendMsg.AppData, 8);
    
}
void SendMsg30Init(void)
{
 
    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(0, APPSendMsg.AppData, 8);

    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(1, APPSendMsg.AppData, 8);
    
    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(2, APPSendMsg.AppData, 8);
    
    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(3, APPSendMsg.AppData, 8);

    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(4, APPSendMsg.AppData, 8);

    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(5, APPSendMsg.AppData, 8);
    
    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(6, APPSendMsg.AppData, 8);
    
    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(7, APPSendMsg.AppData, 8);

    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(8, APPSendMsg.AppData, 8);

    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(9, APPSendMsg.AppData, 8);

    APPSendMsg.AppData[0] = 0xFFu;
    APPSendMsg.AppData[1] = 0xFFu;
    APPSendMsg.AppData[2] = 0xFFu;
    APPSendMsg.AppData[3] = 0xFFu;
    APPSendMsg.AppData[4] = 0xFFu;
    APPSendMsg.AppData[5] = 0xFFu;
    APPSendMsg.AppData[6] = 0xFFu;
    APPSendMsg.AppData[7] = 0xFFu;
    NM_Set_App_Fun(10, APPSendMsg.AppData, 8);
    
 
}
void NM_Process(void)
{
   
}