/*-INCLUDE-***************************************************************************************/
/* File-Name       : S Y S _ I 4 1 6 . H H                                                       */
/* Projekt         : Allgemein                                                                   */
/* Modul           : -                                                                           */
/*-----------------------------------------------------------------------------------------------*/
/* Aufgabe         : Systemweit gueltige Definitionen und Deklarationen zur Verfuegung stellen   */
/*                                                                                               */
/*-----------------------------------------------------------------------------------------------*/
/* Autor           : Thomas Marquardt                                                            */
/* entwickelt am   : 04.12.1997                                                                  */
/* letztes Update  : 05.09.1900                                                                  */
/*-----------------------------------------------------------------------------------------------*/
/* Vers.  | Datum  | Beschreibung                                                    | FNR | KZ  */
/* -------|--------|-----------------------------------------------------------------|-----|---- */
/* 01/000 |04.12.97| Erstellung                                                      |     | TM  */
/* 01/001 |19.01.98| WAHL_MAX_LEN von 16 auf 25 Stellen geaendert                    |     | TM  */
/*************************************************************************************************/

/*-----------------------------------------------------------------------------------------------*/
/* -- Systeminterne Felder zur Verwaltung der Tasks, Pools und Queues                         -- */
/*-----------------------------------------------------------------------------------------------*/

extern word QueueId [ QUEUE_ANZ ];
extern word PoolId  [ POOL_ANZ  ];
extern word TaskId  [ TASK_ANZ  ];


/*************************************************************************************************/
/*                                  Task uebergreifende Typen                                    */
/*************************************************************************************************/
typedef word GebImpType;                                   /* Fuer Gebuehrenimpulse an L7        */
#define GEB_IMP_TYPE_SIZE sizeof ( GebImpType )



/*************************************************************************************************/
/*                                Hardwareabhaengigkeiten                                        */
/*************************************************************************************************/



/*===============================================================================================*/
/* **                               Gesko I416                                                ** */
/*===============================================================================================*/


/*************************************************************************************************/
/*             Verhalten der L2 und L3 am externen S0-Port bei einen Ausfall der L1              */
/*************************************************************************************************/
/*  L1_PH_TEI_REM ist definiert:                                                                 */
/*  Die L2 und L3 vergessen alle aktuellen TEIs.                                                 */
/*                                                                                               */
/*  L1_PH_TEI_REM ist nicht definiert:                                                           */
/*  Die L2 und L3 behalten alle aktuellen TEIs bei.                                              */
/*************************************************************************************************/

//#define L1_PH_TEI_REM


/*************************************************************************************************/
/*                  Definitionen für die verschiedenen Anlagentypen                              */
/*************************************************************************************************/
#define TYP_1008                          1
#define TYP_1016                          2
#define TYP_2108                          3
#define TYP_2116                          4
#define TYP_1106                          5
#define TYP_1116                          6
#define TYP_F116                          7
#define TYP_F108                          8
#define TYP_F104                          9


/*************************************************************************************************/
/*                  Definitionen für die ISDN-Schnittstellen der i416                            */
/*************************************************************************************************/
#define ANZ_S0_TLN_PRO_PORT               8
#define ANZ_MSN_PRO_PORT                 10
#define ANZ_B_CHANNEL_S0                  2
#define ANZ_B_CHANNEL_S2M                30
#define ANZ_B_CHANNEL_UP0                 2
#define ANZ_CR_S0                       128
#define ANZ_CR_S2M                  ( ( ANZ_B_CHANNEL_S2M / ANZ_B_CHANNEL_S0 ) * ANZ_CR_S0 )
#ifdef X25_ROUTING
  #define ANZ_TEI_PRO_TE                  3
#else
  #define ANZ_TEI_PRO_TE                  2
#endif
#define SICO_START_IOM_CHANNEL            4
#define SICO_END_IOM_CHANNEL              5

#define ANZ_MICO_CFI_PORTS                1
#define CHANNELS_PRO_PORT                 8
#define TIMESLOTS_PRO_CHANNEL             4
#define TIMESLOTS_PRO_PORT               32

#define ANZ_INT_S0_PORT                   1
#define ANZ_EXT_S0_PORT                   2
#define ANZ_S0_PORT                     ( ANZ_INT_S0_PORT + ANZ_EXT_S0_PORT )             /* = 3 */

#define ANZ_SICOFI_CHN          (byte)( ANZ_EXT_S0_PORT * ANZ_B_CHANNEL_S0 )
#define MAX_ANZ_S0_LTT_PORT             ANZ_EXT_S0_PORT     /* PtP */
#define MAX_ANZ_S0_TE_PORT              ANZ_EXT_S0_PORT     /* PtmP */

#define MAX_ANZ_B_CHANNEL               ANZ_B_CHANNEL_S0
#define MAX_ANZ_S0_PROTOKOLLE_PRO_PORT  1

#define S0_MIN_PORT_NR                  0
#define S0_MAX_PORT_NR          (byte)( ANZ_S0_PORT - 1 )                                 /* = 2 */

#define EXT_S0_MIN_PORT_NR              S0_MIN_PORT_NR                                    /* = 0 */
#define EXT_S0_MAX_PORT_NR      (byte)( S0_MIN_PORT_NR + ANZ_EXT_S0_PORT - 1 )            /* = 1 */

#define INT_S0_MIN_PORT_NR      (byte)( EXT_S0_MAX_PORT_NR + 1 )                          /* = 2 */
#define INT_S0_MAX_PORT_NR      (byte)( INT_S0_MIN_PORT_NR + ANZ_INT_S0_PORT - 1 )        /* = 2 */

/* --- Die internen ISDN-MSN's haben die Nummern 10-19. Die Datenfelder in den Konf.-Blöcken     */
/* --- sind für die ISDN-MSN's von 19-28 reserviert. Also muß bei Benutzereingaben ein Offset    */
/* --- von 10 addiert werden. Beispiel Eingabe int. Msn 13 daraus folgt Index 23.                */
#define ISDN_MSN_MIN_NR                30
#define ISDN_MSN_MAX_NR               ( ISDN_MSN_MIN_NR + ANZ_MSN_PRO_PORT - 1)
#define ISDN_MSN_OFFSET               ( ISDN_MSN_MIN_NR - ISDN_MSN_MIN_PORT_NR )

/* --- Rufnummer - ISDN_PORT_OFFSET = interne Portnummer des Teilnehmers ----------------------- */
#define ISDN_PORT_OFFSET              ( ISDN_MSN_OFFSET )                                /* = 12 */
#define ISDN_MSN_MIN_PORT_NR          ( VIRT_MAX_PORT_NR +1) 
#define ISDN_MSN_MAX_PORT_NR          ( ISDN_MSN_MIN_PORT_NR + (ANZ_INT_S0_PORT * ANZ_MSN_PRO_PORT) - 1 )

/*************************************************************************************************/
/*                  Definitionen fuer CCBS [Ext-S0 CCBS-T, Int-S0 CCBS]                          */
/*************************************************************************************************/

#define CALL_INFO_RETAIN_ENTRIES    5
#define CCBS_QUEUE_A_ENTRIES        5     /* max. Anzahl der Aktivierungen je MSN                */
#define CCBS_QUEUE_A_INT_MAX_ENTR  10     /* max. Anzahl der Aktivierungen am internen S0-Port   */
#define CCBS_QUEUE_B_ENTRIES       20     /* max. 5 je MSN/DDI [ETS 300 357, 8.13]               */

/*************************************************************************************************/
/*                  Definitionen für die a/b-Schnittstellen der i416                             */
/*************************************************************************************************/
#define MAX_ANZ_AB_PORT                 16
#define ANZ_INT_AB_PORT                 MAX_ANZ_AB_PORT
#define AB_MIN_PORT_NR                   3
#define AB_MAX_PORT_NR                ( AB_MIN_PORT_NR + ANZ_INT_AB_PORT - 1 )           /* = 18 */

/* --- Die internen a/b-Teilnehmer haben die Nummern 31-46. Die Datenfelder in den Konf.-Blöcken */
/* --- sind für die a/b-Teilnehmer von 1-16 reserviert. Also muß bei Benutzereingaben ein Offset */
/* --- von -30 addiert werden. Beispiel Eingabe Tln 33 daraus folgt Index 3.                     */
#define AB_TLN_MIN_NR                  11
#define AB_TLN_MAX_NR                ( AB_TLN_MIN_NR + MAX_ANZ_AB_PORT - 1 )
#define AB_TLN_OFFSET                ( AB_TLN_MIN_NR - AB_MIN_PORT_NR )
/* --- Bei der I416 gibts 16 Ports, d.h. wir koennen uns den Portzustand in einem Word merken ---*/
#define PORT_MERKER_TYP         word
#define PORT_WERT_MAX           0xFFFF



/*************************************************************************************************/
/*                  Definitionen für die TFE-Schnittstellen der i416                             */
/*************************************************************************************************/
#define ANZ_TFE_PORT                    2
#define TFE_MIN_PORT_NR         (byte)( AB_MIN_PORT_NR + MAX_ANZ_AB_PORT )               /* = 20 */
#define TFE_MAX_PORT_NR         (byte)( TFE_MIN_PORT_NR + ANZ_TFE_PORT - 1 )             /* = 21 */

/* --- Die TFE's haben die Rufnummern 47 und 48. In den Datenfeldern sind die Indexe 17 + 18     */
/* --- reserviert. Also muß bei Benutzereingaben ein Offset von -30 addiert werden.              */
/* --- Beispiel Eingabe Tln 47 daraus folgt Index 17.                                            */
#define TFE_TLN_MIN_NR          (byte)( AB_TLN_MAX_NR + 1 )
#define TFE_TLN_MAX_NR          (byte)( TFE_TLN_MIN_NR + ANZ_TFE_PORT - 1 )
#define TFE_TLN_OFFSET          (byte)( TFE_TLN_MIN_NR - TFE_MIN_PORT_NR )


/*************************************************************************************************/
/*                  Definitionen für den virtuellen Port der i416                                */
/*************************************************************************************************/
#define ANZ_VIRT_PORT                   1
#define VIRT_MIN_PORT_NR        (byte)( TFE_MAX_PORT_NR + 1 )                            /* = 22 */
#define VIRT_MAX_PORT_NR        (byte)( VIRT_MIN_PORT_NR + ANZ_VIRT_PORT - 1 )           /* = 22 */



/*************************************************************************************************/
/*                  Definitionen über alle Ports der i416                                        */
/*************************************************************************************************/
#define INT_MIN_PORT_NR                AB_MIN_PORT_NR                                    /* =  3 */
#define INT_MAX_PORT_NR                ISDN_MSN_MAX_PORT_NR                              /* = 31 */
#define MAX_ANZ_INT_PORT               ( MAX_ANZ_AB_PORT + ANZ_TFE_PORT + ANZ_VIRT_PORT + (ANZ_INT_S0_PORT * ANZ_MSN_PRO_PORT) )
                                                                                         /* = 29 */

#define MAX_ANZ_PORT                   ( ANZ_EXT_S0_PORT + ANZ_INT_S0_PORT + MAX_ANZ_INT_PORT )
                                                                                         /* = 32 */



/*************************************************************************************************/
/*                  Definitionen für Rufnummern und deren Längen in der i416                     */
/*************************************************************************************************/
#define INT_RUF_NR_LEN                  2 /* Eine interne Rufnummer ist zwei Stellen lang        */
#define WAHL_MAX_LEN                   25 /* Eine Rufnummer ist max. 25 Stellen lang             */
#define EINR_MAX_LEN             (6+2+52) /* Die Codeziffern für eine Einrichtprozedur ohne ent- */
                                          /* haltene Rufnr. ist max. 6 Stellen lang, dazu kommen */
                                          /* 2 mögliche Ziffern für Index + 26 Tln (2stellig) in */
                                          /* der Einrichtprozedur.                               */
#define MSN_MAX_LEN                    12 /* Eine Mehrfachrufnummer ist max. 12 Stellen lang     */
#define MSN_MAX_ANZ                    10 /* 10 Mehrfachrufnummern können pro ISDN-Port          */
                                          /* zugewiesen werden                                   */
#define DDI_MAX_ANZ                    30 /* 30 Durchwahlnummern können pro ISDN-Port zugewiesen */
                                          /* werden                                              */
#define DDI_MIN_LEN                     1 /* Eine Durchwahlnummer kann minimal eine Stelle lang  */

// #define DDI_6STELLIG
#ifdef DDI_6STELLIG
  #define DDI_MAX_LEN                   6 /* sein, oder maximal 6 Stellen (nur England)          */
#else
  #define DDI_MAX_LEN                   3 /* sein, oder maximal 3 Stellen                        */
#endif
#define KONF_MAX_ANZ                    2 /* Max. 2 Konferenzen sind zur gleichen Zeit möglich   */
#define VORWAHL_MAX_LEN                 7 /* Eine Vorwahl ist max. 7 Stellen lang                */


/*************************************************************************************************/
/*                  Definitionen für die Codeladung                                              */
/*************************************************************************************************/
#define K_CDL_BAD                       0
#define K_CDL_GOOD                      1
#define K_CDL_PANIK                     3


/*************************************************************************************************/
/*      Zuordnung der Koppelfeldspalten zwischen Lab und L7                                      */
/*      A C H T U N G : Die folgenden Angaben müssen unbedingt mit der Umsetztabelle in dem      */
/*                      File 'lab_exp.c' übereinstimmen, sonst gibt's Kuddelmuddel               */
/*************************************************************************************************/
#define LAB_TFE_1_PORT          (byte) 8
#define  L7_TFE_1_PORT          (byte) (AB_MIN_PORT_NR + 16)

#define LAB_PORT_600            (byte) 9
#define  L7_PORT_600            (byte) (AB_MIN_PORT_NR + 19)

#define LAB_PORT_MFV1           (byte) 10
#define  L7_PORT_MFV1           (byte) (AB_MIN_PORT_NR + 20)

#define LAB_PORT_MFV2           (byte) 11
#define  L7_PORT_MFV2           (byte) (AB_MIN_PORT_NR + 21)

#define LAB_PORT_GEB            (byte) 12
#define  L7_PORT_GEB            (byte) (AB_MIN_PORT_NR + 22)

#define LAB_PORT_MOH1           (byte) 13
#define  L7_PORT_MOH1           (byte) (AB_MIN_PORT_NR + 23)

#define LAB_EXT_RUL_PORT        (byte) 14
#define  L7_EXT_RUL_PORT        (byte) (AB_MIN_PORT_NR + 18)

#define LAB_CLIP_PORT           (byte) 15
#define  L7_CLIP_PORT           (byte) (AB_MIN_PORT_NR + 24)

#define LAB_TFE_2_PORT          (byte) 24
#define  L7_TFE_2_PORT          (byte) (AB_MIN_PORT_NR + 17)

#define LAB_PORT_600_2          (byte) 25
#define  L7_PORT_600_2          (byte) (AB_MIN_PORT_NR + 25)

#define LAB_PORT_MFV3           (byte) 26
#define  L7_PORT_MFV3           (byte) (AB_MIN_PORT_NR + 26)

#define LAB_PORT_MFV4           (byte) 27
#define  L7_PORT_MFV4           (byte) (AB_MIN_PORT_NR + 27)

#define LAB_PORT_FREI_1         (byte) 28
#define  L7_PORT_FREI_1         (byte) (AB_MIN_PORT_NR + 28)

#define LAB_PORT_FREI_2         (byte) 29
#define  L7_PORT_FREI_2         (byte) (AB_MIN_PORT_NR + 29)

#define LAB_PORT_FREI_3         (byte) 30
#define  L7_PORT_FREI_3         (byte) (AB_MIN_PORT_NR + 30)

#define LAB_PORT_FREI_4         (byte) 31
#define  L7_PORT_FREI_4         (byte) (AB_MIN_PORT_NR + 31)

#define M_AB_AKT_MAX_PORT_NR    ( AB_MIN_PORT_NR + AktAnzAbPort - 1 )
#define M_TFE_AKT_MAX_PORT_NR   ( TFE_MIN_PORT_NR + AktAnzTfePort - 1 )
#define M_EXT_S0_MAX_PORT_NR    ( S0_MIN_PORT_NR + AktAnzExtS0Port - 1 )

/*************************************************************************************************/
/*                  Definitionen der minimalen Poolgrößen für i416                               */
/*************************************************************************************************/
#define K_MIN_POOL_L3LCB                3   /* Min. Anz. freier Buffer fuer L3-LCB's             */
#define K_MIN_POOL_L2LCB                2   /* Min. Anz. freier Buffer fuer L2-LCB's auf L3      */
#define K_MIN_POOL_L3_HDR               2   /* Min. Anz. freier Buffer fuer L2->L3-Msg's         */
#define K_MIN_POOL_ISDN_MSG             8   /* Min. Anz. freier Buffer fuer ISDN-Msg's           */



/*************************************************************************************************/
/*           Layer 3 spezifiche Hardwaretypen abhaengige Preprozessorflags                       */
/*************************************************************************************************/
#if ANZ_INT_AB_PORT > 0
  #define AB_INTERN_EXIST
#endif

#if !defined EPROM_VERS && !defined MINI_ROM_PROG
  #define NET_SIDE_EXIST
  #define HW_NET_SIDE
#endif

#define HW_USER_SIDE
#define USER_SIDE_EXIST

#define IOM2_MODE

/*************************************************************************************************/
/*                Type-Definitionen fuer Ports und Tln´s                                         */
/*************************************************************************************************/
#define PORT_TEST_FILTER               0x0001
#define PORT_TEST_NET3                 0x0001

#define PORT_DIRECTION_FILTER          0xc000
#define PORT_DIRECTION_INTERN          0x4000
#define PORT_DIRECTION_EXTERN          0x8000
#define PORT_DIRECTION_QUER            0xc000

#define PORT_MODE_FILTER               0x3000
#define PORT_MODE_PTP                  0x0000
#define PORT_MODE_PTMP                 0x1000
#define PORT_MODE_PTMP_NET3            0x3000
#define PORT_MODE_S2M                  0x2000

#define TLN_PROTOKOLL_FILTER           0x0e00
#define TLN_PROTOKOLL_AB               0x0000
#define TLN_PROTOKOLL_EDSS1            0x0400
#define TLN_PROTOKOLL_1TR6             0x0600
#define TLN_PROTOKOLL_STIMULUS         0x0800
#define TLN_PROTOKOLL_STIMULUS_EDSS1   0x0c00
#define TLN_PROTOKOLL_STIMULUS_1TR6    0x0e00

#define PORT_FEHLT                     0x00
#define PORT_INAKTIV                   0x01
#define PORT_AKTIV                     0x02



/*************************************************************************************************/
/*                                      allgemeine Macros                                        */
/*************************************************************************************************/
#define M_HB_FIELD_OFFSET( X, Y )    (word)( (word)( &((X  *)1)->Y) -1 )
#define TEST_PRINT_ON       (void)SosTestPara ( 1, (word)( SosTestPara( 2, 0 ) | 0x2000 ) )
#define TEST_PRINT_OFF      (void)SosTestPara ( 1, (word)( SosTestPara( 2, 0 ) & ~0x2000 ) );



/*************************************************************************************************/
/*                     Definewerte fuer Systemweit gueltige Bufferpool-Groessen                  */
/*************************************************************************************************/
#define BUFFER_RI_LG             (word)   10
#define BUFFER_L7_REC_LG         (word)   20
#define BUFFER_32_LG             (word)   32
#define BUFFER_64_LG             (word)   64
#define BUFFER_260_LG            (word)  270

#define P_BUFFER_RI_LG           (word)( BUFFER_RI_LG     + K_ISDN_MSG_HDR_LEN )
#define P_BUFFER_L7_REC_LG       (word)( BUFFER_L7_REC_LG + K_ISDN_MSG_HDR_LEN )
#define P_BUFFER_32_LG           (word)( BUFFER_32_LG     + K_ISDN_MSG_HDR_LEN )
#define P_BUFFER_64_LG           (word)( BUFFER_64_LG     + K_ISDN_MSG_HDR_LEN )
#define P_BUFFER_260_LG          (word)( BUFFER_260_LG    + K_ISDN_MSG_HDR_LEN )

#define BUFFER_RI_ANZ            (word)  (110 + (10 * ANZ_S0_PORT)) /* con 100 auf 110 geändert  */
#define BUFFER_32_ANZ            (word)   90                        /* von  80 auf  90 geändert  */
#define BUFFER_64_ANZ            (word)   50                        /* von  40 auf  50 geändert  */
#define BUFFER_260_ANZ           (word)   64               /* von 40 auf 64 geändert Mq 16.12.98 */
#define FLASH_BUFFER_260_ANZ     (word)  195               /* neu wegen Bufferüberlauf           */
#define BUFFER_L7_REC_ANZ        (word)   20

#define BUFFER_L2_RI_POOL        (word)    0
#define BUFFER_32_POOL           (word)    1
#define BUFFER_64_POOL           (word)    2
#define BUFFER_260_POOL          (word)    3
#define SYSTEM_POOL_MAX_NR       (word)    3
#define BUFFER_L7_REC_POOL       (word)    4

#define MIN_S0_BUFFER_REQ        (word)    5
#define WAIT_FOR_BUFFER          (dword)1000L


/*************************************************************************************************/
/*                                  Stackgroessen                                                */
/*************************************************************************************************/
#ifdef PC
 #define L1_STACK                (word)  512
 #define L2_STACK                (word)  512
 #define L3_STACK                (word) 1024
 #define L6_STACK                (word)  256
 #define L7_STACK                (word) 2024   /* vorher 1024 Beocomneu */
 #define L_AB_STACK              (word) 1024
 #define L0_EEP_STACK            (word) 1024
 #define LGB_STACK               (word) 1024   /* vorher 512 */
 #define LT_STACK                (word) 1024
 #define TASTATUR_STACK          (word) 1024
 #define TESTUMGEBUNG_STACK      (word)  512
 #define TM_CMDFILE_STACK        (word) 1024
 #define LM_STACK                (word) 1024
#else
 #define L1_STACK                (word)  896
 #define L2_STACK                (word)  896
 #define L3_STACK                (word) 1024
 #define L6_STACK                (word)  896
 #define L7_STACK                (word) 1536   /* vorher 1024 Beocomneu */
 #define L_AB_STACK              (word)  896
 #define L0_EEP_STACK            (word)  256
 #define LGB_STACK               (word) 1024   /* vorher 896 */
 #define LT_STACK                (word)  512   /* vorher 256 */
 #define LM_STACK                (word)  256
#endif



/*************************************************************************************************/
/*                           Prioritaetsdefinitionen                                             */
/*************************************************************************************************/
#ifdef PC
  #define TASTATUR_PRIO          (word)    1
  #define L1_PRIO                (word)    2
  #define L2_PRIO                (word)    3
#else
  #define L1_PRIO                (word)    1
  #define L2_PRIO                (word)    2
#endif
#define L3_PRIO                  (word)    3
#define L6_PRIO                  (word)    4
#define L7_PRIO                  (word)    4
#define L_AB_PRIO                (word)    3
#define L0_EEP_PRIO              (word)    5
#define LGB_PRIO                 (word)    5
#define LT_PRIO                  (word)    5
#define TESTUMGEBUNG_PRIO        (word)    5
#define TM_CMDFILE_PRIO          (word)    6
#define LM_PRIO                  (word)    6



/*************************************************************************************************/
/*                             Prozessdefinitionen                                               */
/*************************************************************************************************/
#define C412I_INIT_TASK   START_TASK            /* Task-Id ist bei der ersten Task Fest vergeben */

#define L1_TASK_INDX             (word)0x00
#define L2_LME_TASK_INDX         (word)( L1_TASK_INDX       + 0x01 )
#define L2_CME_TASK_INDX         (word)( L2_LME_TASK_INDX   + ANZ_S0_PORT )
#define L3_TASK_INDX             (word)( L2_CME_TASK_INDX   + ANZ_S0_PORT )
#define L6_TASK_INDX             (word)( L3_TASK_INDX       + ANZ_S0_PORT )
#define L7_TASK_INDX             (word)( L6_TASK_INDX       + 0x01 )
#define L_AB_TASK_INDX           (word)( L7_TASK_INDX       + 0x01 )
#define L0_EEP_INDX              (word)( L_AB_TASK_INDX     + 0x01 )
#define LGB_TASK_INDEX           (word)( L0_EEP_INDX        + 0x01 )
#define LT_INDX                  (word)( LGB_TASK_INDEX     + 0x01 )
#define TASTATUR_TASK_INDX       (word)( LT_INDX            + 0x01 )
#define TESTUMGEBUNG_INDX        (word)( TASTATUR_TASK_INDX + 0x01 )
#define TM_CMDFILE_INDX          (word)( TESTUMGEBUNG_INDX  + 0x01 )
#define MAX_TASK_INDX            (word)( TM_CMDFILE_INDX    + 0x01 )
#define LM_INDX                  (word)( MAX_TASK_INDX      + 0x01 )

/* -- Logische Prozessnummern ------------------------------------------------------------------ */
/* -- Logische Prozessnummern sind Prozessindexe, die fuer die Identifizierung von Treibern   -- */
/* -- und etc.  eingesetzt werden, die sich im System aber wie Prozesse zu Identifizieren     -- */
/* -- haben (Beginn der Zaelung bei 0x0080)                                                   -- */



/*************************************************************************************************/
/*                                   Macros                                                      */
/*************************************************************************************************/
#define S0_32_POOL                   PoolId  [ BUFFER_32_POOL     ]
#define S0_64_POOL                   PoolId  [ BUFFER_64_POOL     ]
#define S0_260_POOL                  PoolId  [ BUFFER_260_POOL    ]
#define S0_L2_RI_POOL                PoolId  [ BUFFER_L2_RI_POOL  ]
#define L7_REC_POOL                  PoolId  [ BUFFER_L7_REC_POOL ]

#define L1_TASK                      TaskId  [ L1_TASK_INDX                      ]
#define L2_LME_TASK(Port)            TaskId  [ (word)( L2_LME_TASK_INDX + Port ) ]
#define L2_CME_TASK(Port)            TaskId  [ (word)( L2_CME_TASK_INDX + Port ) ]
#define L3_TASK(Port)                TaskId  [ (word)( L3_TASK_INDX + Port )     ]
#define L6_TASK                      TaskId  [ L6_TASK_INDX                      ]
#define L7_TASK                      TaskId  [ L7_TASK_INDX                      ]
#define L_AB_TASK                    TaskId  [ L_AB_TASK_INDX                    ]
#define TASTATUR_TASK                TaskId  [ TASTATUR_TASK_INDX                ]
#define TESTUMGEBUNG_TASK            TaskId  [ TESTUMGEBUNG_INDX                 ]
#define TM_CMDFILE_TASK              TaskId  [ TM_CMDFILE_INDX                   ]
#define L0_EEP_TASK                  TaskId  [ L0_EEP_INDX                       ]
#define LT_TASK                      TaskId  [ LT_INDX                           ]
#define LGB_TASK                     TaskId  [ LGB_TASK_INDEX                    ]
#define LM_TASK                      TaskId  [ LM_INDX                           ]



/*************************************************************************************************/
/*                                  Allgemeine Defines                                           */
/*************************************************************************************************/
#define SFR_BASE_ADR      (word  *)0xffff000f
#define SFR_OFFSET                (word)0x0e00



/*************************************************************************************************/
/*                               Allgemeine Fehlercodes                                          */
/*************************************************************************************************/
#define E_NO_TASK                 (word)0x0001
#define E_INVALID_PORT            (word)0x0002
#define E_INIT_FAILED             (word)0x0003
#define E_HW_ERROR                (word)0x0004
#define E_TRANS_NOT_OK            (word)0x0005

/*************************************************************************************************/
/*                  Definitionen für die Rufnummernanzeige per FSK                               */
/*************************************************************************************************/
#define FSK_GERMAN                        1
#define FSK_BRIT                          2
