view src/g23m-gsm/sim/sim_em.h @ 347:78d1df0b8487

aci2: AT%CBC and AT@CHARGE implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 16 Dec 2017 00:37:43 +0000
parents 27a4235405c6
children
line wrap: on
line source

/*
+-----------------------------------------------------------------------------
|  Project :
|  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 : Engineering Mode (EM) Declarations + Macros
|
+-----------------------------------------------------------------------------
*/
#ifndef SIM_EM_H
#define SIM_EM_H

#ifdef FF_EM_MODE

/* ------------ data declarations for EM ---------------- */
/*
 *  Ring buffer is by one bigger than max. number of prims, because it
 *  needs always one termination entry.
 *  To optimize the buffersize, the data is packed in the buffer as follows:
 *  type, length, value
 *  Value is the combination of the additional parameters as defined in 8443.601, coded as UBYTE.
*/
#define EM_SIM_BUFFER_SIZE            67

/*
*   EM_MAX_SIM_EVENTS defines maximum number of event traces for the engineering mode.
*   The number is increased by one to ensure that the event numbers defined in the
*   corresponding document are the same as in the sources.
*/
#define EM_MAX_SIM_EVENTS           26

/*
*  The offset is used to indicate the source entity the event trace is from.
*  L1/ALR = 0x00, DL = 0x2D, RR = 0x37, MM = 0x5F, CC = 0x78, SS = 0xAF, SMS = 0xBE, SIM = E1
*/
#define SIM_OFFSET                0xE1

/*
*  Type is combination of entity index(upper nibble) plus event number(lower nibble).
*  Bit 8  7  6  5  4  3  2  1
*  |    entity    |  event number |
*/

#define SIM_V_1              (1 + SIM_OFFSET)
#define SIM_V_2              (2 + SIM_OFFSET)
#define SIM_V_3              (3 + SIM_OFFSET)
#define SIM_V_4              (4 + SIM_OFFSET)
#define SIM_V_5              (5 + SIM_OFFSET)
#define SIM_V_6              (6 + SIM_OFFSET)
#define SIM_V_7              (7 + SIM_OFFSET)
#define SIM_V_8              (8 + SIM_OFFSET)
#define SIM_V_9              (9 + SIM_OFFSET)
#define SIM_V_10             (10+ SIM_OFFSET)
#define SIM_V_11             (11+ SIM_OFFSET)
#define SIM_V_12             (12+ SIM_OFFSET)
#define SIM_V_13             (13+ SIM_OFFSET)
#define SIM_V_14             (14+ SIM_OFFSET)
#define SIM_V_15             (15+ SIM_OFFSET)
#define SIM_V_16             (16+ SIM_OFFSET)
#define SIM_V_17             (17+ SIM_OFFSET)
#define SIM_V_18             (18+ SIM_OFFSET)
#define SIM_V_19             (19+ SIM_OFFSET)
#define SIM_V_20             (20+ SIM_OFFSET)
#define SIM_V_21             (21+ SIM_OFFSET)
#define SIM_V_22             (22+ SIM_OFFSET)
#define SIM_V_23             (23+ SIM_OFFSET)
#define SIM_V_24             (24+ SIM_OFFSET)
#define SIM_V_25             (25+ SIM_OFFSET)


/* Event tracing flags for EM */
EXTERN BOOL sim_v[EM_MAX_SIM_EVENTS];

/*---------Functions ---------*/

/*
 *  SIM primitives Engineering Mode
 *  Bitmask for the event tracing
 */

EXTERN void sim_em_sim_event_req      (T_EM_SIM_EVENT_REQ *em_sim_event_req);
EXTERN void em_init_sim_event_trace   (void);

/*
 * If all entities are linked into one module this definitions
 * prefixes all this functions with the enity name
 */
#ifdef OPTION_MULTITHREAD
  #define em_write_buffer_2        _ENTITY_PREFIXED(em_write_buffer_2)
  #define em_write_buffer_3        _ENTITY_PREFIXED(em_write_buffer_3)
  #define em_write_buffer_3a       _ENTITY_PREFIXED(em_write_buffer_3a)
  #define check_write_index   _ENTITY_PREFIXED(check_write_index)
#endif

EXTERN UBYTE em_write_buffer_2       (UBYTE event_no);
EXTERN UBYTE em_write_buffer_3       (UBYTE event_no, UBYTE value);
EXTERN UBYTE em_write_buffer_3a      (UBYTE event_no, USHORT value);
static UBYTE check_write_index  (UBYTE n);

/*-----------------------Event Macro Definition -----------*/

#define SIM_EM_READ_BINARY_FILE\
  /* Read binary file */\
  if (sim_v[1])\
  {\
    sim_v[1] = em_write_buffer_3a (SIM_V_1, sim_read_req->datafield);\
  }  /* sim_v[1] */

#define SIM_EM_READ_RECORD_FILE\
    /* Read record file */\
  if (sim_v[2])\
  {\
    sim_v[2] = em_write_buffer_3a (SIM_V_2, sim_read_record_req->datafield);\
  }  /* sim_v[2] */

#define SIM_EM_UPDATE_BINARY_FILE\
 /* Update binary file */\
  if (sim_v[3])\
  {\
    sim_v[3] = em_write_buffer_3a (SIM_V_3, sim_update_req->datafield);\
  }  /* sim_v[3] */

#define SIM_EM_UPDATE_RECORD\
 /* Update record */\
  if (sim_v[4])\
  {\
    sim_v[4] = em_write_buffer_3a (SIM_V_4, sim_update_record_req->datafield);\
  }  /* sim_v[4] */

#define SIM_EM_INCREMENT_FILE\
    /* Increment file */\
  if (sim_v[5])\
  {\
    sim_v[5] = em_write_buffer_3a (SIM_V_5, sim_increment_req->datafield);\
  }  /* sim_v[5] */

#define SIM_EM_VERIFY_PIN\
    /* Verify PIN */\
  if (sim_v[6])\
  {\
    sim_v[6] = em_write_buffer_3 (SIM_V_6, sim_verify_pin_req->pin_id);\
  }  /* sim_v[6] */

#define SIM_EM_CHANGE_PIN\
   /* Change PIN */\
  if (sim_v[7])\
  {\
    sim_v[7] = em_write_buffer_3 (SIM_V_7, sim_change_pin_req->pin_id);\
  }  /* sim_v[7] */

#define SIM_EM_DISABLE_PIN\
   /* Disable PIN */\
  if (sim_v[8])\
  {\
    sim_v[8] = em_write_buffer_3 (SIM_V_8, NOT_PRESENT_8BIT);\
  }  /* sim_v[8] */

#define SIM_EM_ENABLE_PIN\
   /* Enable PIN */\
  if (sim_v[9])\
  {\
    sim_v[9] = em_write_buffer_3 (SIM_V_9, NOT_PRESENT_8BIT);\
  }  /* sim_v[9] */

#define SIM_EM_UNBLOCK_PIN\
    /* Unblock PIN */\
  if (sim_v[10])\
  {\
    sim_v[10] = em_write_buffer_3 (SIM_V_10, sim_unblock_req->pin_id);\
  }  /* sim_v[10] */

#define SIM_EM_AUTHENTICATION\
   /* Authentication */\
  if (sim_v[11])\
  {\
    sim_v[11] = em_write_buffer_2 (SIM_V_11);\
  }  /* sim_v[11] */

#define SIM_EM_SIM_ACTIVATION_STARTED\
        /* SIM activation started */\
      if (sim_v[12])\
      {\
        sim_v[12] = em_write_buffer_2 (SIM_V_12);\
      }  /* sim_v[12] */

#define SIM_EM_SIM_ACTIVATION_RESULT\
       /* SIM activation result */\
        if (sim_v[13])\
        {\
          sim_v[13] = em_write_buffer_3a (SIM_V_13, sim_activate_cnf->cause);\
        }  /* sim_v[13] */

#define SIM_EM_READ_MMI_PARAMETER\
   /* Read MMI parameters */\
  if (sim_v[14])\
  {\
    sim_v[14] = em_write_buffer_2 (SIM_V_14);\
  }  /* sim_v[14] */

#define SIM_EM_READ_MM_PARAMETER\
 /* Read MM parameters */\
  if (sim_v[15])\
  {\
    sim_v[15] = em_write_buffer_2 (SIM_V_15);\
  }  /* sim_v[15] */

#define SIM_EM_READ_SMS_PARAMETER\
   /* Read SMS parameters */\
  if (sim_v[16])\
  {\
    sim_v[16] = em_write_buffer_2 (SIM_V_16);\
  }  /* sim_v[16] */

#define SIM_EM_SIM_REMOVE\
     /* SIM removing */\
    if (sim_v[17])\
    {\
      sim_v[17] = em_write_buffer_2 (SIM_V_17);\
    }  /* sim_v[17] */

#define SIM_EM_PARAMETER_UPDATE\
   /* Parameter update */\
  if (sim_v[18])\
  {\
    sim_v[18] = em_write_buffer_2 (SIM_V_18);\
  }  /* sim_v[18] */

#define SIM_EM_PARAMETER_SYNCHRONISATION\
   /* Parameter synchronisation */\
  if (sim_v[19])\
  {\
    sim_v[19] = em_write_buffer_2 (SIM_V_19);\
  }  /* sim_v[19] */

#define SIM_EM_FDN_ENABLE\
              /* FDN enable */\
            if (sim_v[20])\
            {\
              sim_v[20] = em_write_buffer_2 (SIM_V_20);\
            }  /* sim_v[20] */

#define SIM_EM_ADN_ENABLE\
             /* ADN enable */\
            if (sim_v[21])\
            {\
              sim_v[21] = em_write_buffer_2 (SIM_V_21);\
            }  /* sim_v[21] */

#define SIM_EM_SIM_TOOLKIT_ACTIVATION\
       /* SIM Toolkit activation */\
      if (sim_v[22])\
      {\
        sim_v[22] = em_write_buffer_2 (SIM_V_22);\
      }  /* sim_v[22] */

#define SIM_EM_PROACTIVE_COMMAND\
              /* Proactive cmd */\
            if (sim_v[23])\
            {\
              sim_v[23] = em_write_buffer_3 (SIM_V_23, cmd_type);\
            }  /* sim_v[23] */

#define SIM_EM_TERMINAL_RESPONSE\
  /* Terminal Response */\
  if (sim_v[24])\
  {\
    sim_v[24] = em_write_buffer_3a (SIM_V_24, sw1sw2);\
  }  /* sim_v[24] */

#define SIM_EM_ENVELOPE\
 /* Envelope */\
  if (sim_v[24])\
  {\
    sim_v[24] = em_write_buffer_3a (SIM_V_24, sw1sw2);\
  }  /* sim_v[24] */

#else /*FF_EM_MODE not defined*/

#define SIM_EM_READ_BINARY_FILE           /*Event  1*/
#define SIM_EM_READ_RECORD_FILE           /*Event  2*/
#define SIM_EM_UPDATE_BINARY_FILE         /*Event  3*/
#define SIM_EM_UPDATE_RECORD              /*Event  4*/
#define SIM_EM_INCREMENT_FILE             /*Event  5*/
#define SIM_EM_VERIFY_PIN                 /*Event  6*/
#define SIM_EM_CHANGE_PIN                 /*Event  7*/
#define SIM_EM_DISABLE_PIN                /*Event  8*/
#define SIM_EM_ENABLE_PIN                 /*Event  9*/
#define SIM_EM_UNBLOCK_PIN                /*Event 10*/
#define SIM_EM_AUTHENTICATION             /*Event 11*/ 
#define SIM_EM_SIM_ACTIVATION_STARTED     /*Event 12*/
#define SIM_EM_SIM_ACTIVATION_RESULT      /*Event 13*/
#define SIM_EM_READ_MMI_PARAMETER         /*Event 14*/
#define SIM_EM_READ_MM_PARAMETER          /*Event 15*/
#define SIM_EM_READ_SMS_PARAMETER         /*Event 16*/
#define SIM_EM_SIM_REMOVE                 /*Event 17*/
#define SIM_EM_PARAMETER_UPDATE           /*Event 18*/
#define SIM_EM_PARAMETER_SYNCHRONISATION  /*Event 19*/
#define SIM_EM_FDN_ENABLE                 /*Event 20*/
#define SIM_EM_ADN_ENABLE                 /*Event 21*/
#define SIM_EM_SIM_TOOLKIT_ACTIVATION     /*Event 22*/
#define SIM_EM_PROACTIVE_COMMAND          /*Event 23*/
#define SIM_EM_TERMINAL_RESPONSE          /*Event 24*/
#define SIM_EM_ENVELOPE                   /*Event 25*/

#endif /*FF_EM_MODE*/
#endif /* SIM_EM_H */