/*<RBHead>
***************************************************************************
*                                                                         *
*                         ROBERT BOSCH GMBH                               *
*                             STUTTGART                                   *
*               Alle Rechte vorbehalten - All rights reserved             *
*                                                                         *
***************************************************************************

***************************************************************************
* Administrative Information (automatically filled in by [N]estor)        *
***************************************************************************
*
* $Filename__:KPO.C$
*
***************************************************************************
* List of Changes
*
* $History___:
*
*   14.02.2006  Basismodul: KILLPOINTER_V1p3.txt
*               mit KW_TEST_KP_SECURITYCODE und KW_CW_TEST_WM0
*
* $
*
   maximum bit length=32
 *************************************************************************
</RBHead>*/

#define KPO_ModId		/* module identifier */

/* Include Header files													  */
/* ====================	                                                  */

#include SYSTEM_H					/* project specific header file       */
#include DFPMDEF_H					/* methods of fault path management   */
#include <KPO.d>
                           			/* DAMOS definitions and declarations */

void KPO_10ms (void);


#define START_SECTION_Task_r10ms
#include "pragma.h"
/* begin of process KPO_10ms (modelled as _10ms_KPO_IMPL_ME9) */
void KPO_10ms (void)
{

/***************************************************************/
/***************************************************************/
/** ATTENTION: Please use carefully on your own risk ... ;-)  **/
/***************************************************************/
/***************************************************************/
/**                W A R N H I N W E I S E                    **/
/***************************************************************/
/** 1.) DIE VERWENDUNG DIESER FUNKTIONALITÄT GESCHIEHT AUF    **/
/**     EIGENE GEFAHR!!!!!                                    **/
/***************************************************************/
/** 2.) DER PROGRAMMSTAND DARF IN KEINEM FALL AN DRITTE       **/
/**     WEITERGEGEBEN WERDEN!!!!!                             **/
/***************************************************************/
/** 3.) DER PROGRAMMSTAND DARF NUR FÜR DEN LABCAR-TEST VER-   **/
/**     WENDET WERDEN!!!!! (IN KEINEM FALL IM FAHRZEUG!!!)    **/
/***************************************************************/
/***************************************************************/

/************************************************/
/* Vorlage für Adress-Schreib-Funtkion für PITs */
/************************************************/

/* Im Programmstand z.B. nach "ggdve_1ms" suchen (%GGDVE)
   oder ein beliebiges anderes 1ms-Raster */

/***************************************************************/
/*     !!  NEU  !!  NEU  !!  NEU  !!   NEU   !!  NEU  !!       */
/***************************************************************/
/* Die lokale Systemkonstante KILLPOINTER_MX muss entsprechend */
/* an die verwendete MX angepasst werden! Default = 9 (MX9)    */
/*               MX7 = 7; MX9 = 9; MX17 = 17                   */
/***************************************************************/

/***********************************************/
/** - Im C-File den folgenden Code einbinden: **/
/***********************************************/

/****************************************/
/* Special code for testing ++ START ++ */
/****************************************/

/***********************/
/* CWs for byte values */
/***********************/

if (CW_TEST_KP_SECURITYCODE==169)
{

    if(KW_CW_TEST_BA0 > 0)
    {
#if (KILLPOINTER_MX == 7)
        if (KW_CW_TEST_BM0 > 0)
        {
            if (KW_CW_TEST_BV0 != 0)
            {
                *((uint8 far *)KW_CW_TEST_BA0) = *((uint8 far *)KW_CW_TEST_BA0) | KW_CW_TEST_BM0;
            }
            else
            {
                *((uint8 far *)KW_CW_TEST_BA0) = *((uint8 far *)KW_CW_TEST_BA0) & ~KW_CW_TEST_BM0;
            }
        }
        else
        {
	        *((uint8 far *)KW_CW_TEST_BA0) = KW_CW_TEST_BV0;
        }
#else
        if (KW_CW_TEST_BM0 > 0)
        {
            if (KW_CW_TEST_BV0 != 0)
            {
                *((uint8*)KW_CW_TEST_BA0) = *((uint8*)KW_CW_TEST_BA0) | KW_CW_TEST_BM0;
            }
            else
            {
                *((uint8*)KW_CW_TEST_BA0) = *((uint8*)KW_CW_TEST_BA0) & ~KW_CW_TEST_BM0;
            }
        }
        else
        {
    	    *((uint8*)KW_CW_TEST_BA0) = KW_CW_TEST_BV0;
        }
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA1 > 0)
    {
#if (KILLPOINTER_MX == 7)
        if (KW_CW_TEST_BM1 > 0)
        {
            if (KW_CW_TEST_BV1 != 0)
            {
                *((uint8 far *)KW_CW_TEST_BA1) = *((uint8 far *)KW_CW_TEST_BA1) | KW_CW_TEST_BM1;
            }
            else
            {
                *((uint8 far *)KW_CW_TEST_BA1) = *((uint8 far *)KW_CW_TEST_BA1) & ~KW_CW_TEST_BM1;
            }
        }
        else
        {
    	    *((uint8 far *)KW_CW_TEST_BA1) = KW_CW_TEST_BV1;
        }
#else
        if (KW_CW_TEST_BM1 > 0)
        {
            if (KW_CW_TEST_BV1 != 0)
            {
                *((uint8*)KW_CW_TEST_BA1) = *((uint8*)KW_CW_TEST_BA1) | KW_CW_TEST_BM1;
            }
            else
            {
                *((uint8*)KW_CW_TEST_BA1) = *((uint8*)KW_CW_TEST_BA1) & ~KW_CW_TEST_BM1;
            }
        }
        else
        {
    	    *((uint8*)KW_CW_TEST_BA1) = KW_CW_TEST_BV1;
        }
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA2 > 0)
    {
#if (KILLPOINTER_MX == 7)
	    *((uint8 far *)KW_CW_TEST_BA2) = KW_CW_TEST_BV2;
#else
	    *((uint8*)KW_CW_TEST_BA2) = KW_CW_TEST_BV2;
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA3 > 0)
    {
#if (KILLPOINTER_MX == 7)
	    *((uint8 far *)KW_CW_TEST_BA3) = KW_CW_TEST_BV3;
#else
	    *((uint8*)KW_CW_TEST_BA3) = KW_CW_TEST_BV3;
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA4 > 0)
    {
#if (KILLPOINTER_MX == 7)
	    *((uint8 far *)KW_CW_TEST_BA4) = KW_CW_TEST_BV4;
#else
	    *((uint8*)KW_CW_TEST_BA4) = KW_CW_TEST_BV4;
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA5 > 0)
    {
#if (KILLPOINTER_MX == 7)
	    *((uint8 far *)KW_CW_TEST_BA5) = KW_CW_TEST_BV5;
#else
	    *((uint8*)KW_CW_TEST_BA5) = KW_CW_TEST_BV5;
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA6 > 0)
    {
#if (KILLPOINTER_MX == 7)
	    *((uint8 far *)KW_CW_TEST_BA6) = KW_CW_TEST_BV6;
#else
	    *((uint8*)KW_CW_TEST_BA6) = KW_CW_TEST_BV6;
#endif /* of (KILLPOINTER_MX == 7) */
    }

    if(KW_CW_TEST_BA7 > 0)
    {
#if (KILLPOINTER_MX == 7)
	    *((uint8 far *)KW_CW_TEST_BA7) = KW_CW_TEST_BV7;
#else
	    *((uint8*)KW_CW_TEST_BA7) = KW_CW_TEST_BV7;
#endif /* of (KILLPOINTER_MX == 7) */
    }

/***********************/
/* CWs for word values */
/***********************/

    if(KW_CW_TEST_WA0 > 0)
    {
		if (((uint16)KW_CW_TEST_WA0)&(0x1))
		{
#if (KILLPOINTER_MX == 7)
		    *((uint8 far *)KW_CW_TEST_WA0) = KW_CW_TEST_WV0;
#else
                    if (KW_CW_TEST_WM0 > 0)
                    {
                         if (KW_CW_TEST_WV0 != 0)
                         {
                               *((uint8*)KW_CW_TEST_WA0) = *((uint8*)KW_CW_TEST_WA0) | KW_CW_TEST_WM0;
                         }
                         else
                         {
                               *((uint8*)KW_CW_TEST_WA0) = *((uint8*)KW_CW_TEST_WA0) & ~KW_CW_TEST_WM0;
                         }
                    }
                    else
                    {
                	 *((uint8*)KW_CW_TEST_WA0) = KW_CW_TEST_WV0;
                    }
#endif /* of (KILLPOINTER_MX == 7) */
		}
		else
		{
#if (KILLPOINTER_MX == 7)
		    *((uint16 far *)KW_CW_TEST_WA0) = KW_CW_TEST_WV0;
#else

                    if (KW_CW_TEST_WM0 > 0)
                    {
                         if (KW_CW_TEST_WV0 != 0)
                         {
                               *((uint16*)KW_CW_TEST_WA0) = *((uint16*)KW_CW_TEST_WA0) | KW_CW_TEST_WM0;
                         }
                         else
                         {
                               *((uint16*)KW_CW_TEST_WA0) = *((uint16*)KW_CW_TEST_WA0) & ~KW_CW_TEST_WM0;
                         }
                    }
                    else
                    {
                	 *((uint16*)KW_CW_TEST_WA0) = KW_CW_TEST_WV0;
                    }
#endif /* of (KILLPOINTER_MX == 7) */
	        }
    }


    if(KW_CW_TEST_WA1 > 0)
    {
		if (((uint16)KW_CW_TEST_WA1)&(0x1))
		{
#if (KILLPOINTER_MX == 7)
		    *((uint8 far *)KW_CW_TEST_WA1) = KW_CW_TEST_WV1;
#else
		    *((uint8*)KW_CW_TEST_WA1) = KW_CW_TEST_WV1;
#endif /* of (KILLPOINTER_MX == 7) */
		}
		else
		{
#if (KILLPOINTER_MX == 7)
		    *((uint16 far *)KW_CW_TEST_WA1) = KW_CW_TEST_WV1;
#else
		    *((uint16*)KW_CW_TEST_WA1) = KW_CW_TEST_WV1;
#endif /* of (KILLPOINTER_MX == 7) */
	    }
    }

    if(KW_CW_TEST_WA2 > 0)
    {
		if (((uint16)KW_CW_TEST_WA2)&(0x1))
		{
#if (KILLPOINTER_MX == 7)
		    *((uint8 far *)KW_CW_TEST_WA2) = KW_CW_TEST_WV2;
#else
		    *((uint8*)KW_CW_TEST_WA2) = KW_CW_TEST_WV2;
#endif /* of (KILLPOINTER_MX == 7) */
		}
		else
		{
#if (KILLPOINTER_MX == 7)
		    *((uint16 far *)KW_CW_TEST_WA2) = KW_CW_TEST_WV2;
#else
		    *((uint16*)KW_CW_TEST_WA2) = KW_CW_TEST_WV2;
#endif /* of (KILLPOINTER_MX == 7) */
	    }
    }

    if(KW_CW_TEST_WA3 > 0)
    {
		if (((uint16)KW_CW_TEST_WA3)&(0x1))
		{
#if (KILLPOINTER_MX == 7)
		    *((uint8 far *)KW_CW_TEST_WA3) = KW_CW_TEST_WV3;
#else
		    *((uint8*)KW_CW_TEST_WA3) = KW_CW_TEST_WV3;
#endif /* of (KILLPOINTER_MX == 7) */
		}
		else
		{
#if (KILLPOINTER_MX == 7)
		    *((uint16 far *)KW_CW_TEST_WA3) = KW_CW_TEST_WV3;
#else
		    *((uint16*)KW_CW_TEST_WA3) = KW_CW_TEST_WV3;
#endif /* of (KILLPOINTER_MX == 7) */
	    }
    }

    if(KW_CW_TEST_WA4 > 0)
    {
		if (((uint16)KW_CW_TEST_WA4)&(0x1))
		{
#if (KILLPOINTER_MX == 7)
		    *((uint8 far *)KW_CW_TEST_WA4) = KW_CW_TEST_WV4;
#else
		    *((uint8*)KW_CW_TEST_WA4) = KW_CW_TEST_WV4;
#endif /* of (KILLPOINTER_MX == 7) */
		}
		else
		{
#if (KILLPOINTER_MX == 7)
		    *((uint16 far *)KW_CW_TEST_WA4) = KW_CW_TEST_WV4;
#else
		    *((uint16*)KW_CW_TEST_WA4) = KW_CW_TEST_WV4;
#endif /* of (KILLPOINTER_MX == 7) */
	    }
    }

    if(KW_CW_TEST_WA5 > 0)
    {
		if (((uint16)KW_CW_TEST_WA5)&(0x1))
		{
#if (KILLPOINTER_MX == 7)
		    *((uint8 far *)KW_CW_TEST_WA5) = KW_CW_TEST_WV5;
#else
		    *((uint8*)KW_CW_TEST_WA5) = KW_CW_TEST_WV5;
#endif /* of (KILLPOINTER_MX == 7) */
		}
		else
		{
#if (KILLPOINTER_MX == 7)
		    *((uint16 far *)KW_CW_TEST_WA5) = KW_CW_TEST_WV5;
#else
		    *((uint16*)KW_CW_TEST_WA5) = KW_CW_TEST_WV5;
#endif /* of (KILLPOINTER_MX == 7) */
	    }
    }

/****************************/
/* CWs for long-word values */
/*    only for MX17-ECUs    */
/****************************/

#if (KILLPOINTER_MX == 17)
    if(KW_CW_TEST_LA0 > 0)
    {
		if (((uint32)KW_CW_TEST_LA0)&(0x3))
		{
		    *((uint8*)KW_CW_TEST_LA0) = KW_CW_TEST_LV0;
		}
		else
		{
	        *((uint32*)KW_CW_TEST_LA0) = KW_CW_TEST_LV0;
	    }
    }

    if(KW_CW_TEST_LA1 > 0)
    {
		if (((uint32)KW_CW_TEST_LA1)&(0x3))
		{
		    *((uint8*)KW_CW_TEST_LA1) = KW_CW_TEST_LV1;
		}
		else
		{
	        *((uint32*)KW_CW_TEST_LA1) = KW_CW_TEST_LV1;
	    }
    }
#endif /* of (KILLPOINTER_MX == 17) */

}  /* end if (CW_TEST_KP_SECURITYCODE==169) */

/**************************************/
/* Special code for testing ++ END ++ */
/**************************************/


} /* end of process KPO_10ms (modelled as _10ms_KPO_IMPL_ME9) */
#define STOP_SECTION_Task_r10ms
#include "pragma.h"

