view src/condat/com/include/em.h @ 214:adfdbcd360fd

backlight evolution: API between Condat driver and MFW With this change, the API between the Condat backlight driver and its user in MFW now carries more abstract backlight state codes (fully off, fully on, in call, charging boot mode) instead of 0-255 levels. This change is needed in order to more properly support different hardware targets with different capabilities and approaches in terms of backlight handling.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 23 Apr 2021 23:52:02 +0000
parents 4e78acac3d88
children
line wrap: on
line source

/* 
+----------------------------------------------------------------------------- 
|  Project :  GSM (6301)
|  Modul   :  
+----------------------------------------------------------------------------- 
|  Copyright 2002 Texas Instruments Berlin, AG 
|                 All rights reserved. 
| 
|                 This file is confidential and a trade secret of Texas 
|                 Instruments Berlin, AG 
|                 The receipt of or possession of this file does not convey 
|                 any rights to reproduce or disclose its contents or to 
|                 manufacture, use, or sell anything it may describe, in 
|                 whole, or in part, without the specific written consent of 
|                 Texas Instruments Berlin, AG. 
+----------------------------------------------------------------------------- 
|  Purpose :  Types definitions for the engineering mode driver
|             .
+----------------------------------------------------------------------------- 
*/ 

#ifndef EM_H
#define EM_H


/*
 * Return Values
 */
#define EM_INVALID_CLASS           10
#define EM_INVALID_SUBCLASS        11
#define EM_INVALID_TYPE            12
#define EM_INVALID_ACCESS          13
#define EM_NO_MORE_DATA            14
#define EM_DATA_NOT_AVAIL          15

#define MAX_EM_LENGTH              80

/*
 * Data Types
 */
typedef struct
{
  UBYTE em_class;
  UBYTE em_subclass;
  UBYTE em_type;
  UBYTE em_length;
  UBYTE em_parameter [MAX_EM_LENGTH];
} em_data_type;

/*
 * EM classes
 */

#define EM_CLASS_EVENT_TRACE        1
#define EM_CLASS_COUNTER            2
#define EM_CLASS_INFRA_DATA         3
#define EM_CLASS_MS_DATA            4

/*
 * EM Subclasses Event Tracing / Counter
 */
#define EM_SUBCLASS_LAYER_1         1
#define EM_SUBCLASS_DL              2
#define EM_SUBCLASS_RR              3
#define EM_SUBCLASS_MM              4
#define EM_SUBCLASS_CC              5
#define EM_SUBCLASS_SS              6
#define EM_SUBCLASS_SMS             7
#define EM_SUBCLASS_SIM             8


/*
 * EM Subclasses Infrastructure data
 */
#define EM_SUBCLASS_SC_INFO         9
#define EM_SUBCLASS_NC_INFO         10
#define EM_SUBCLASS_LUP_AND_PAG     12
#define EM_SUBCLASS_PLMN_PARA       13
#define EM_SUBCLASS_CIPH_HOP_DTX    14
 
/*
 * EM Subclasses Mobile Data   
 */
#define EM_SUBCLASS_POWER           15
#define EM_SUBCLASS_IDENTITY        16
#define EM_SUBCLASS_VERSION         17

/*
 * EM types
 */

typedef struct
{
  USHORT            arfcn;               /* channel number              */
  SHORT             c1;                  /* C1 Path Loss Criterion      */
  SHORT             c2;                  /* C2 Reselection Criterion    */
  UBYTE             rxlev;               /* fieldstrength               */
  UBYTE             bsic;                /* BSIC                        */
  UBYTE             mcc[3];              /* Mobile Country Code         */
  UBYTE             mnc[3];              /* Mobile Network Code         */
  USHORT            lac;                 /* Location Area Code          */
  USHORT            cell_id;             /* cell identifier             */
  UBYTE             cba;                 /* Cell barred access          */
  UBYTE             cbq;                 /* Cell barred qualify         */
  UBYTE             til_state;           /* State of cell in TIL/ALR    */
  UBYTE             sync_cnt;            /* Pending L1 cells sync       */
  UBYTE             bcch_cnt;            /* Pending L1 cells bcch read  */
  UBYTE             rxlev_f;             /* RSSI full in dedicated mode */
  UBYTE             rxlev_s;             /* RSSI sub in dedicated mode  */
  UBYTE             rxqual_f;            /* Qual full in dedicated mode */
  UBYTE             rxqual_s;            /* Qual sub in dedicated mode  */
} T_EM_NC_DATA;


/*
 * internal prototypes for em driver
 */
EXTERN void    em_trace_single (UBYTE class, UBYTE subclass, UBYTE type);
EXTERN void    em_trace_ubyte  (UBYTE class, UBYTE subclass, UBYTE type, UBYTE value);
EXTERN void    em_trace_ushort (UBYTE class, UBYTE subclass, UBYTE type, USHORT value);
EXTERN void    em_trace_array  (UBYTE class, UBYTE subclass, UBYTE type, UBYTE * value, UBYTE len);

EXTERN UBYTE * em_get_sys_info (UBYTE sys_info_type);
EXTERN UBYTE   em_get_nc_data  (T_EM_NC_DATA * em_nc_data, UBYTE index);
EXTERN UBYTE   em_get_network_meas (UBYTE * chan_list);
EXTERN UBYTE   em_get_bcch_chan_list (em_data_type * out_em_data);
/*
 * Access Functions
 */
#if defined (EM_TRACE)

#define EM_EV_L1_TRACE(a)           em_trace_single(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_LAYER_1,a);
#define EM_EV_L1_TRACE_UBYTE(a,b)   em_trace_ubyte(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_LAYER_1,a,b);
#define EM_EV_L1_TRACE_USHORT(a,b)  em_trace_ushort(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_LAYER_1,a,b);
#define EM_EV_L1_TRACE_ARRAY(a,b,c) em_trace_array(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_LAYER_1,a,b,c);

#define EM_EV_DL_TRACE(a)           em_trace_single(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_DL,a);
#define EM_EV_DL_TRACE_UBYTE(a,b)   em_trace_ubyte(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_DL,a,b);
#define EM_EV_DL_TRACE_USHORT(a,b)  em_trace_ushort(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_DL,a,b);
#define EM_EV_DL_TRACE_ARRAY(a,b,c) em_trace_array(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_DL,a,b,c);

#define EM_EV_RR_TRACE(a)           em_trace_single(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_RR,a);
#define EM_EV_RR_TRACE_UBYTE(a,b)   em_trace_ubyte(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_RR,a,b);
#define EM_EV_RR_TRACE_USHORT(a,b)  em_trace_ushort(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_RR,a,b);
#define EM_EV_RR_TRACE_ARRAY(a,b,c) em_trace_array(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_RR,a,b,c);

#define EM_EV_MM_TRACE(a)           em_trace_single(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_MM,a);
#define EM_EV_MM_TRACE_UBYTE(a,b)   em_trace_ubyte(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_MM,a,b);
#define EM_EV_MM_TRACE_USHORT(a,b)  em_trace_ushort(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_MM,a,b);
#define EM_EV_MM_TRACE_ARRAY(a,b,c) em_trace_array(EM_CLASS_EVENT_TRACE,EM_SUBCLASS_MM,a,b,c);

#else

#define EM_EV_L1_TRACE(a)         
#define EM_EV_L1_TRACE_UBYTE(a,b) 
#define EM_EV_L1_TRACE_USHORT(a,b) 
#define EM_EV_L1_TRACE_ARRAY(a,b,c)

#define EM_EV_DL_TRACE(a)         
#define EM_EV_DL_TRACE_UBYTE(a,b) 
#define EM_EV_DL_TRACE_USHORT(a,b) 
#define EM_EV_DL_TRACE_ARRAY(a,b,c)

#define EM_EV_RR_TRACE(a)         
#define EM_EV_RR_TRACE_UBYTE(a,b) 
#define EM_EV_RR_TRACE_USHORT(a,b) 
#define EM_EV_RR_TRACE_ARRAY(a,b,c)

#define EM_EV_MM_TRACE(a)         
#define EM_EV_MM_TRACE_UBYTE(a,b) 
#define EM_EV_MM_TRACE_USHORT(a,b) 
#define EM_EV_MM_TRACE_ARRAY(a,b,c)

#endif

/*
 * Event trace, layer 1
 */
#define EM_EV_L1_POWER_MEAS_REQ      1
#define EM_EV_L1_RX_MEAS_REQ         2
#define EM_EV_L1_RX_MEAS_CNF         3
#define EM_EV_L1_POWER_MEAS_CNF      4
#define EM_EV_L1_BSIC_REQ            5
#define EM_EV_L1_BSIC_AVAIL          6
#define EM_EV_L1_BSIC_NOT_AVAIL      7
#define EM_EV_L1_BCCH_READ_ERR       8
#define EM_EV_L1_CONFIG_CLASSMARK    9
#define EM_EV_L1_CONFIG_IDLE_MODE    10
#define EM_EV_L1_CONFIG_CBCH         11
#define EM_EV_L1_CONFIG_NCELL        12
#define EM_EV_L1_CHANGE_EXT_PAG      13
#define EM_EV_L1_CHANGE_REORG_PAG    14
#define EM_EV_L1_CHANGE_NORM_PAG     15
#define EM_EV_L1_CHANGE_IDLE_BCCH    16
#define EM_EV_L1_DOWNLINK_ERROR      17
#define EM_EV_L1_PAGING_DETECTED     18
#define EM_EV_L1_READ_NCELL_BSIC     19
#define EM_EV_L1_NCELL_BSIC_AVAIL    20
#define EM_EV_L1_NCELL_BSIC_NO_AVAIL 21
#define EM_EV_L1_READ_NCELL_SB       22
#define EM_EV_L1_NCELL_SB_AVAIL      23
#define EM_EV_L1_NCELL_SB_NO_AVAIL   24
#define EM_EV_L1_READ_NCELL_BCCH     25
#define EM_EV_L1_NCELL_BCCH_AVAIL    26
#define EM_EV_L1_NCELL_BCCH_NO_AVAIL 27
#define EM_EV_L1_CONFIG_CELL_RESEL   28
#define EM_EV_L1_START_CON_EST       29
#define EM_EV_L1_CONFIG_IMM_ASS      30
#define EM_EV_L1_STOP_CON_EST        31
#define EM_EV_L1_CONFIG_CHN_ASS      32
#define EM_EV_L1_CONFIG_ASYNC_HO     33
#define EM_EV_L1_CONFIG_SYNC_HO      34
#define EM_EV_L1_CONFIG_PRE_HO       35
#define EM_EV_L1_CONFIG_PSEUDO_HO    36
#define EM_EV_L1_CONFIG_FREQ_REDEF   37
#define EM_EV_L1_CONFIG_CHN_MODIFY   38
#define EM_EV_L1_CONFIG_CIPH_SET     39
#define EM_EV_L1_START_CBCH_READ     40
#define EM_EV_L1_RECEIVE_CBCH        41
#define EM_EV_L1_CBCH_MSG_COMPLETE   42
#define EM_EV_L1_STOP_CBCH_READ      43
#define EM_EV_L1_RECEIVE_NULL        44
#define EM_EV_L1_RECEIVE_SCHEDULE    45
#define EM_EV_L1_CONFIG_TCH_LOOP     46
#define EM_EV_L1_CONFIG_DAT          47
#define EM_EV_L1_DEACTIVATE          48

/*
 * Event trace, data link layer 
 */
#define EM_EV_DL_SDCCH_EST_PASSED     1
#define EM_EV_DL_SDCCH_EST_FAILED     2
#define EM_EV_DL_FACCH_EST_PASSED     3
#define EM_EV_DL_FACCH_EST_FAILED     4
#define EM_EV_DL_SDCCH_3_EST_PASSED   5
#define EM_EV_DL_SDCCH_3_EST_FAILED   6
#define EM_EV_DL_SACCH_3_EST_PASSED   7
#define EM_EV_DL_SACCH_3_EST_FAILED   8
#define EM_EV_DL_SDCCH_REL            9
#define EM_EV_DL_FACCH_REL           10
#define EM_EV_DL_SDCCH_3_REL         11
#define EM_EV_DL_FACCH_3_REL         12
#define EM_EV_DL_SDCCH_SUSPEND       13
#define EM_EV_DL_FACCH_SUSPEND       14
#define EM_EV_DL_SDCCH_MINOR_ERR     15
#define EM_EV_DL_FACCH_MINOR_ERR     16
#define EM_EV_DL_SDCCH_3_MINOR_ERR   17
#define EM_EV_DL_SACCH_3_MINOR_ERR   18
#define EM_EV_DL_SDCCH_MAJOR_ERR     19
#define EM_EV_DL_FACCH_MAJOR_ERR     20
#define EM_EV_DL_SDCCH_3_MAJOR_ERR   21
#define EM_EV_DL_SACCH_3_MAJOR_ERR   22


/*
 * Event trace, radio resource management
 */
#define EM_EV_RR_SRCH_LIM_STARTED     1
#define EM_EV_RR_SRCH_LIM_PASSED      2
#define EM_EV_RR_SRCH_LIM_FAILED      3
#define EM_EV_RR_SRCH_FULL_START_MM   4
#define EM_EV_RR_SRCH_FULL_START_RR   5
#define EM_EV_RR_SRCH_FULL_PASSED     6
#define EM_EV_RR_SRCH_FULL_FAILED     7
#define EM_EV_RR_SRCH_HPLMN_START_RR  8
#define EM_EV_RR_SRCH_HPLMN_PASSED    9
#define EM_EV_RR_SRCH_HPLMN_FAILED   10
#define EM_EV_RR_SRCH_PLMN_START     11
#define EM_EV_RR_SRCH_PLMN_FINISHED  12
#define EM_EV_RR_IDLE_NO_SERVICE     13
#define EM_EV_RR_IDLE_LIM_SERVICE    14
#define EM_EV_RR_IDLE_FULL_SERVICE   15
#define EM_EV_RR_CELL_RESEL_START    16
#define EM_EV_RR_CELL_RESEL_END      17
#define EM_EV_RR_PAGING_DETECTED     18
#define EM_EV_RR_DOWNLINK_FAILURE    19
#define EM_EV_RR_CHANNEL_REQUEST     20
#define EM_EV_RR_IMM_ASS             21
#define EM_EV_RR_IMM_ASS_EXT         22
#define EM_EV_RR_IMM_ASS_REJ         23
#define EM_EV_RR_L2_CON_EST          24
#define EM_EV_RR_EARLY_CLASS_SEND    25
#define EM_EV_RR_CLASS_INTERROGATION 26
#define EM_EV_RR_ASS                 27
#define EM_EV_RR_ASS_FAIL_REJ        28
#define EM_EV_RR_ASS_FAIL_REC        29
#define EM_EV_RR_ASS_FAIL_LOSS       30
#define EM_EV_RR_ASS_COMPLETE        31
#define EM_EV_RR_HO_ASYNC            32
#define EM_EV_RR_HO_SYNC             33
#define EM_EV_RR_HO_PRE_SYNC         34
#define EM_EV_RR_HO_PSEUDO_SYNC      35
#define EM_EV_RR_HO_FAIL_REJ         36
#define EM_EV_RR_HO_FAIL_REC         37
#define EM_EV_RR_HO_FAIL_LOSS        38
#define EM_EV_RR_HO_COMPLETE         39
#define EM_EV_RR_FREQ_REDEF          40
#define EM_EV_RR_CIPH_SET            41
#define EM_EV_RR_CHAN_MOD_START      42
#define EM_EV_RR_CHAN_MOD_END        43
#define EM_EV_RR_CHAN_RELEASE        44
#define EM_EV_RR_RADIO_LINK_FAIL     45
#define EM_EV_RR_LAYER_2_LOSS        46
#define EM_EV_RR_STATUS_RECEIVED     47
#define EM_EV_RR_STATUS_SEND         48
#define EM_EV_RR_TCH_LOOP            49
#define EM_EV_RR_TEST_INTERFACE      50
#define EM_EV_RR_DEACTIVATION        51

/*
 * Event trace, mobility management
 */
#define EM_EV_MM_SIM_INSERT           1
#define EM_EV_MM_SIM_REMOVE           2
#define EM_EV_MM_SET_PLMN_MODE        3
#define EM_EV_MM_START_REG_LIM        4
#define EM_EV_MM_START_REG_FULL       5
#define EM_EV_MM_START_PLMN_AVAIL     6
#define EM_EV_MM_CS_NO_SERVICE        7
#define EM_EV_MM_CS_LIM_SERVICE       8
#define EM_EV_MM_CS_FULL_SERVICE      9
#define EM_EV_MM_CR_NO_SERVICE       10
#define EM_EV_MM_CR_LIM_SERVICE      11
#define EM_EV_MM_CR_FULL_SERVICE     12
#define EM_EV_MM_RESULT_PLMN_LIST    13
#define EM_EV_MM_IMSI_ATT_STARTED    14
#define EM_EV_MM_RR_CON_ESTABLISHED  15
#define EM_EV_MM_RR_CON_FAILED       16
#define EM_EV_MM_LOC_UPD_ACCEPT      17
#define EM_EV_MM_NORM_LUP_STARTED    18
#define EM_EV_MM_PERI_LUP_STARTED    19
#define EM_EV_MM_TMSI_REALLOC_START  20
#define EM_EV_MM_TMSI_REALLOC_CMP    21
#define EM_EV_MM_LOC_UPD_REJECT      22
#define EM_EV_MM_IMSI_DETACH         23
#define EM_EV_MM_ID_REQUEST          24
#define EM_EV_MM_ID_RESPONSE         25
#define EM_EV_MM_AUTH_REQUEST        26
#define EM_EV_MM_AUTH_RESPONSE       27
#define EM_EV_MM_AUTH_REJECT         28
#define EM_EV_MM_CM_SERV_REQ_CC      29
#define EM_EV_MM_CM_SERV_REQ_SS_SMS  30
#define EM_EV_MM_CM_SERV_ACC_CIPH    31
#define EM_EV_MM_CM_SERV_ACC_CMD     32
#define EM_EV_MM_CM_SERV_REJECT      33

/*
 * Infrastructure Data - Serving Cell Information
 */
#define EM_IN_SC_BCCH_ARFCN           1
#define EM_IN_SC_C1                   2
#define EM_IN_SC_RX                   3
#define EM_IN_SC_BSIC                 4
#define EM_IN_SC_DLT                  5
#define EM_IN_SC_TX_POWER             6
#define EM_IN_SC_TS                   7
#define EM_IN_SC_DEDI_ARFCN           8
#define EM_IN_SC_DEDI_RX_FULL         9
#define EM_IN_SC_DEDI_RX_SUB         10
#define EM_IN_SC_DEDI_RLT            11
#define EM_IN_SC_DEDI_TA             12
#define EM_IN_SC_DEDI_QUAL_FULL      13
#define EM_IN_SC_DEDI_QUAL_SUB       14
#define EM_IN_SC_NMR_RAW             15
#define EM_IN_SC_BCCH_LIST_RAW       16
#define EM_IN_SC_C2                  17
#define EM_IN_SC_LAC                 18
#define EM_IN_SC_BA                  19
#define EM_IN_SC_BQ                  20
#define EM_IN_SC_TIL_STATE           21

/*
 * Infrastructure Data - Neighbour Cell Information
 */
#define EM_IN_NC_NO_OF_NCELLS         1
#define EM_IN_NC_BCCH_1               2
#define EM_IN_NC_BCCH_2               3
#define EM_IN_NC_BCCH_3               4
#define EM_IN_NC_BCCH_4               5
#define EM_IN_NC_BCCH_5               6
#define EM_IN_NC_BCCH_6               7
#define EM_IN_NC_RX_1                 8
#define EM_IN_NC_RX_2                 9
#define EM_IN_NC_RX_3                10
#define EM_IN_NC_RX_4                11
#define EM_IN_NC_RX_5                12
#define EM_IN_NC_RX_6                13
#define EM_IN_NC_C1_1                14
#define EM_IN_NC_C1_2                15
#define EM_IN_NC_C1_3                16
#define EM_IN_NC_C1_4                17
#define EM_IN_NC_C1_5                18
#define EM_IN_NC_C1_6                19
#define EM_IN_NC_BSIC_1              20
#define EM_IN_NC_BSIC_2              21
#define EM_IN_NC_BSIC_3              22
#define EM_IN_NC_BSIC_4              23
#define EM_IN_NC_BSIC_5              24
#define EM_IN_NC_BSIC_6              25
#define EM_IN_NC_CID_1               26
#define EM_IN_NC_CID_2               27
#define EM_IN_NC_CID_3               28
#define EM_IN_NC_CID_4               29
#define EM_IN_NC_CID_5               30
#define EM_IN_NC_CID_6               31
#define EM_IN_NC_FN_OFFSET_1         32
#define EM_IN_NC_FN_OFFSET_2         33
#define EM_IN_NC_FN_OFFSET_3         34
#define EM_IN_NC_FN_OFFSET_4         35
#define EM_IN_NC_FN_OFFSET_5         36
#define EM_IN_NC_FN_OFFSET_6         37
#define EM_IN_NC_TA_OFFSET_1         38
#define EM_IN_NC_TA_OFFSET_2         39
#define EM_IN_NC_TA_OFFSET_3         40
#define EM_IN_NC_TA_OFFSET_4         41
#define EM_IN_NC_TA_OFFSET_5         42
#define EM_IN_NC_TA_OFFSET_6         43
#define EM_IN_NC_C2_1                44
#define EM_IN_NC_C2_2                45
#define EM_IN_NC_C2_3                46
#define EM_IN_NC_C2_4                47
#define EM_IN_NC_C2_5                48
#define EM_IN_NC_C2_6                49
#define EM_IN_NC_LAC_1               50
#define EM_IN_NC_LAC_2               51
#define EM_IN_NC_LAC_3               52
#define EM_IN_NC_LAC_4               53
#define EM_IN_NC_LAC_5               54
#define EM_IN_NC_LAC_6               55
#define EM_IN_NC_BA_1                56
#define EM_IN_NC_BA_2                57
#define EM_IN_NC_BA_3                58
#define EM_IN_NC_BA_4                59
#define EM_IN_NC_BA_5                60
#define EM_IN_NC_BA_6                61
#define EM_IN_NC_BQ_1                62
#define EM_IN_NC_BQ_2                63
#define EM_IN_NC_BQ_3                64
#define EM_IN_NC_BQ_4                65
#define EM_IN_NC_BQ_5                66
#define EM_IN_NC_BQ_6                67
#define EM_IN_NC_TIL_STATE_1         68
#define EM_IN_NC_TIL_STATE_2         69
#define EM_IN_NC_TIL_STATE_3         70
#define EM_IN_NC_TIL_STATE_4         71
#define EM_IN_NC_TIL_STATE_5         72
#define EM_IN_NC_TIL_STATE_6         73
#define EM_IN_NC_TIL_SYNC_CNT        74
#define EM_IN_NC_TIL_BCCH_CNT        75

/*
 * Infrastructure Data - Location and Paging Parameter
 */
#define EM_IN_LP_BS_PA_MFRMS          1
#define EM_IN_LP_T3212                2
#define EM_IN_LP_MCC                  3
#define EM_IN_LP_MNC                  4
#define EM_IN_LP_LAC                  5
#define EM_IN_LP_TMSI                 6
#define EM_IN_LP_LAC_RAW              7
#define EM_IN_LP_CI_RAW               8

#if defined (NEW_FRAME)
/*
 * to achieve backward compatibility with older definitions
 */
#define drv_SignalCB_Type           T_DRV_CB_FUNC
#define drv_SignalID_Type           T_DRV_SIGNAL
#define T_VSI_THANDLE               USHORT
#endif

/*
 * Prototypes
 */
#ifndef FF_EM_MODE 
EXTERN UBYTE em_Init                (void);
EXTERN void  em_Exit                (void);
#endif /* FF_EM_MODE */
EXTERN UBYTE em_Read_Parameter      (UBYTE               em_class, 
                                     UBYTE               em_subclass,
                                     UBYTE               em_type,
                                     em_data_type *      out_em_data);
EXTERN UBYTE em_Enable_Post_Mortem  (void);
EXTERN UBYTE em_Disable_Post_Mortem (void);
EXTERN UBYTE em_Read_Post_Mortem    (em_data_type *      out_em_data);

#endif