diff src/g23m-gsm/cc/cc_em.h @ 1:fa8dc04885d8

src/g23m-*: import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:25:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/g23m-gsm/cc/cc_em.h	Fri Oct 16 06:25:50 2020 +0000
@@ -0,0 +1,594 @@
+/*
++-----------------------------------------------------------------------------
+|  Project :
+|  Modul   :
++-----------------------------------------------------------------------------
+|  Copyright 2003 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 CC_EM_H
+#define CC_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_CC_BUFFER_SIZE        185
+
+/*
+*   EM_MAX_CC_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_CC_EVENTS        50
+
+/*
+*  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 CC_OFFSET              0x78
+
+/*
+*  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 CC_V_1                  (1 + CC_OFFSET)
+#define CC_V_2                  (2 + CC_OFFSET)
+#define CC_V_3                  (3 + CC_OFFSET)
+#define CC_V_4                  (4 + CC_OFFSET)
+#define CC_V_5                  (5 + CC_OFFSET)
+#define CC_V_6                  (6 + CC_OFFSET)
+#define CC_V_7                  (7 + CC_OFFSET)
+#define CC_V_8                  (8 + CC_OFFSET)
+#define CC_V_9                  (9 + CC_OFFSET)
+#define CC_V_10                 (10+ CC_OFFSET)
+#define CC_V_11                 (11+ CC_OFFSET)
+#define CC_V_12                 (12+ CC_OFFSET)
+#define CC_V_13                 (13+ CC_OFFSET)
+#define CC_V_14                 (14+ CC_OFFSET)
+#define CC_V_15                 (15+ CC_OFFSET)
+#define CC_V_16                 (16+ CC_OFFSET)
+#define CC_V_17                 (17+ CC_OFFSET)
+#define CC_V_18                 (18+ CC_OFFSET)
+#define CC_V_19                 (19+ CC_OFFSET)
+#define CC_V_20                 (20+ CC_OFFSET)
+#define CC_V_21                 (21+ CC_OFFSET)
+#define CC_V_22                 (22+ CC_OFFSET)
+#define CC_V_23                 (23+ CC_OFFSET)
+#define CC_V_24                 (24+ CC_OFFSET)
+#define CC_V_25                 (25+ CC_OFFSET)
+#define CC_V_26                 (26+ CC_OFFSET)
+#define CC_V_27                 (27+ CC_OFFSET)
+#define CC_V_28                 (28+ CC_OFFSET)
+#define CC_V_29                 (29+ CC_OFFSET)
+#define CC_V_30                 (30+ CC_OFFSET)
+#define CC_V_31                 (31+ CC_OFFSET)
+#define CC_V_32                 (32+ CC_OFFSET)
+#define CC_V_33                 (33+ CC_OFFSET)
+#define CC_V_34                 (34+ CC_OFFSET)
+#define CC_V_35                 (35+ CC_OFFSET)
+#define CC_V_36                 (36+ CC_OFFSET)
+#define CC_V_37                 (37+ CC_OFFSET)
+#define CC_V_38                 (38+ CC_OFFSET)
+#define CC_V_39                 (39+ CC_OFFSET)
+#define CC_V_40                 (40+ CC_OFFSET)
+#define CC_V_41                 (41+ CC_OFFSET)
+#define CC_V_42                 (42+ CC_OFFSET)
+#define CC_V_43                 (43+ CC_OFFSET)
+#define CC_V_44                 (44+ CC_OFFSET)
+#define CC_V_45                 (45+ CC_OFFSET)
+#define CC_V_46                 (46+ CC_OFFSET)
+#define CC_V_47                 (47+ CC_OFFSET)
+#define CC_V_48                 (48+ CC_OFFSET)
+#define CC_V_49                 (49+ CC_OFFSET)
+
+ EXTERN BOOL cc_v[EM_MAX_CC_EVENTS];
+
+ /*------functions ------*/
+
+ /*
+ *  Call control primitives Engineering Mode
+ *  Bitmask for the event tracing
+ */
+
+EXTERN void cc_em_cc_event_req      (T_EM_CC_EVENT_REQ *em_cc_event_req);
+EXTERN void em_init_cc_event_trace(void);
+
+/*
+ * If all entities are linked into one module these definitions
+ * prefix all these 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 em_write_buffer_4          _ENTITY_PREFIXED(em_write_buffer_4)
+  #define em_write_buffer_4a          _ENTITY_PREFIXED(em_write_buffer_4a)
+  #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);
+EXTERN UBYTE em_write_buffer_4           (UBYTE event_no, UBYTE value1, UBYTE value2);
+EXTERN UBYTE em_write_buffer_4a          (UBYTE event_no, UBYTE *ptr1, UBYTE value2); 
+EXTERN UBYTE check_write_index      (UBYTE n);
+
+
+EXTERN UBYTE em_cc_event_buffer[EM_CC_BUFFER_SIZE];
+EXTERN UBYTE em_cc_buffer_write;
+
+/* ---------------- Macro definitions ---------------------- */
+/* Please note: All called functions are stored in em_cc.c */
+
+#define EM_CC_START_MO_CALL \
+   /* Start MO call */\
+  if (cc_v[1])\
+  {\
+        cc_v[1] = em_write_buffer_3 (CC_V_1, mmcm_establish_req->ti);\
+  }  /* cc_v[1] */
+
+#define EM_CC_MM_CONNECTION_ESTABLISHED_MT \
+               /* MM connection established - MT */\
+              if (cc_v[2])\
+              {\
+                cc_v[2] = em_write_buffer_3 (CC_V_2, cc_data->index_ti);\
+              } /* cc_v[2] */
+
+#define EM_CC_MM_CONNECTION_ESTABLISHED_MO \
+   /* MM connection established - MO */\
+  if (cc_v[2])\
+  {\
+    cc_v[2] = em_write_buffer_3 (CC_V_2, est_cnf->ti);\
+  }  /* cc_v[2] */
+
+#define EM_CC_MM_CONNECTION_FAILED \
+   /* MM-Connection failed */\
+  if (cc_v[3])\
+  {\
+    cc_v[3] = em_write_buffer_3a (CC_V_3, err_ind->cause);\
+  }  /* cc_v[3] */
+
+#define EM_CC_SENT_SETUP_MESSAGE \
+      /* Sent SETUP message */\
+    if (cc_v[4])\
+    {\
+      cc_v[4] = em_write_buffer_4a ( CC_V_4, &data->sdu.buf[CC_ENCODE_OFFSET >> 3], cc_data->ti);\
+    } /* cc_v[4] */
+
+#define EM_CC_SENT_EMERGENCY_SETUP_MESSAGE \
+     /* Sent emergency setup message */\
+    if (cc_v[5])\
+    {\
+      cc_v[5] = em_write_buffer_3 (CC_V_5, cc_data->ti);\
+    } /* cc_v[5] */
+
+#define EM_CC_TIMEOUT_T303 \
+    /* Timeout T303 */\
+  if (cc_v[6])\
+  {\
+    cc_v[6] = em_write_buffer_3 (CC_V_6, cc_data->ti);\
+  }  /* cc_v[6] */
+
+#define EM_CC_CALL_PROCEEDING_RECEIVED \
+    /* Call proceeding received */\
+  if (cc_v[7])\
+  {\
+    cc_v[7] = em_write_buffer_3 (CC_V_7, cc_data->index_ti);\
+  } /* cc_v[7] */
+
+#define EM_CC_RELEASE_COMPLETE_RECEIVED \
+   /* RELEASE COMPLETE received */\
+  if ((cc_v[8]))\
+  {\
+    if (rel_com->v_cc_cause AND rel_com->cc_cause.v_cause) \
+      cc_v[8] = em_write_buffer_3a (CC_V_8, CAUSE_MAKE(DEFBY_STD, \
+                                                  ORIGSIDE_NET, \
+                                                  MNCC_CC_ORIGINATING_ENTITY,\
+                                                  rel_com->cc_cause.cause));\
+    else\
+      cc_v[8] = em_write_buffer_3a (CC_V_8, CAUSE_MAKE(DEFBY_CONDAT, \
+                                                  ORIGSIDE_NET, \
+                                                  MNCC_CC_ORIGINATING_ENTITY,\
+                                                  NOT_PRESENT_8BIT));\
+  } /* cc_v[8] */
+
+#define EM_CC_DISCONNECT_RECEIVED \
+   /* Disconnect received */\
+  if ((cc_v[9]))\
+  {\
+    if (disconnect->cc_cause.v_cause)\
+      cc_v[9] = em_write_buffer_3a (CC_V_9, CAUSE_MAKE(DEFBY_STD, \
+                                                  ORIGSIDE_NET, \
+                                                  MNCC_CC_ORIGINATING_ENTITY,\
+                                                  disconnect->cc_cause.cause));\
+     /* else we don't indicate the message as it was erroneous anyway; */\
+     /* note that the concept that only correct message are indicated is not kept here */\
+     /* 100% because e.g. checks for optional errors follow below; but to make it */\
+     /* simpler this is felt as acceptabe (otherwise we'd had to remember the cause value*/\
+     /* in a local variable because CCD_END is called pretty soon...)*/\
+  } /* cc_v[9] */
+
+#define EM_CC_CONNECT_RECEIVED\
+       /* Connect received */\
+      if (cc_v[10])\
+      {\
+        cc_v[10] = em_write_buffer_3 (CC_V_10, cc_data->index_ti);\
+      } /* cc_v[10] */
+
+
+#define EM_CC_ALERTING_RECEIVED \
+   /* Alert received */\
+  if (cc_v[11])\
+  {\
+    cc_v[11] = em_write_buffer_3 (CC_V_11, cc_data->index_ti);\
+  } /* cc_v[11] */
+
+#define EM_CC_PROGRESS_RECEIVED \
+        /* Progress received */\
+      if (cc_v[12])\
+      {\
+        cc_v[12] = em_write_buffer_3 (CC_V_12, cc_data->progress_desc[cc_data->index_ti]);\
+      } /* cc_v[12] */
+
+#define EM_CC_CONNECT_ACKNOWLEDGE\
+    /* Connect acknowledge sent*/\
+      if (cc_v[13])\
+      {\
+        cc_v[13] = em_write_buffer_3 (CC_V_12, cc_data->progress_desc[cc_data->index_ti]);\
+      } /* cc_v[13] */
+
+
+#define EM_CC_RELEASE_SENT \
+     /* Release sent */\
+    if (cc_v[14])\
+    {\
+      cc_v[14] = em_write_buffer_3a (CC_V_14, cc_data->cc_cause[cc_data->ti]);\
+    }  /* cc_v[14] */
+
+#define EM_CC_DOWNLINK_SETUP_RECEIVED \
+   if ((cc_v[15]) AND (_decodedMsg[0] EQ D_SETUP))\
+  {\
+    /* Downlink SETUP received  */\
+    cc_v[15] = em_write_buffer_4a ( CC_V_15, &data->sdu.buf[CC_ENCODE_OFFSET >> 3], cc_data->ti);\
+  } /* cc_v[15] */
+
+#define EM_CC_CALL_CONFIRM_SENT \
+  if (cc_v[16])\
+  {\
+    cc_v[16] = em_write_buffer_4a ( CC_V_16, &data->sdu.buf[CC_ENCODE_OFFSET >> 3], cc_data->ti);\
+  } /* cc_v[16] */
+
+#define EM_CC_STATUS_SENT \
+      /* Status sent */\
+      if (cc_v[17])\
+      {\
+        /* cause is mandatory, thus no validity check of cause necessary here */\
+        cc_v[17] = em_write_buffer_3a (CC_V_17, CAUSE_MAKE(DEFBY_STD, \
+                                                    ORIGSIDE_MS, \
+                                                    MNCC_CC_ORIGINATING_ENTITY, \
+                                                    status->cc_cause.cause));\
+      }  /* cc_v[17] */
+
+#define EM_CC_RELEASE_COMPLETE_SENT \
+    /* RELEASE COMPLETE sent */\
+  if (cc_v[18])\
+  {\
+    cc_v[18] = em_write_buffer_3a (CC_V_18,\
+                     /* cause of RELEASE COMPLETE is optional */\
+                     /* SBK-02-02-16: don't know why MSDEV compiler needs*/\
+                     /* cast to avoid warning here */\
+                     (USHORT) ((rel_com->v_cc_cause) ?\
+                        CAUSE_MAKE(DEFBY_STD, \
+                                   ORIGSIDE_MS,\
+                                   MNCC_CC_ORIGINATING_ENTITY,\
+                                   rel_com->cc_cause.cause)\
+                      : CAUSE_MAKE(DEFBY_STD,\
+                                   ORIGSIDE_MS, \
+                                   MNCC_CC_ORIGINATING_ENTITY, \
+                                   NOT_PRESENT_8BIT)));\
+  }  /* cc_v[18] */
+
+#define EM_CC_ALERTING_SENT\
+       /* Alerting sent */\
+      if (cc_v[19])\
+      {\
+        cc_v[19] = em_write_buffer_3 (CC_V_19, alert->ti);\
+      } /* cc_v[19] */
+
+#define EM_CC_CONNECT_SENT\
+       /* Connect sent */\
+      if (cc_v[20])\
+      {\
+        cc_v[20] = em_write_buffer_3 (CC_V_20, setup_res->ti);\
+      } /* cc_v[20] */
+
+#define EM_CC_CONNECT_ACKNOWLEDGE_RECEIVED \
+          /* Connect ackn received */\
+        if (cc_v[21])\
+        {\
+          cc_v[21] = em_write_buffer_3 (CC_V_21, cc_data->ti);\
+        }  /* cc_v[21] */
+
+#define EM_CC_DISCONNECT_SENT \
+    /* Disconnect sent */\
+  if (cc_v[22])\
+  {\
+   cc_v[22] = em_write_buffer_3a (CC_V_22, CAUSE_MAKE(DEFBY_STD, \
+                                                 ORIGSIDE_MS, \
+                                                 MNCC_CC_ORIGINATING_ENTITY,\
+                                                 MNCC_CAUSE_TIMER));\
+  }  /* cc_v[22] */
+
+#define EM_CC_CHANNEL_MODE_CHANGE \
+   /* Channel mode change */\
+  if (cc_v[23])\
+  {\
+    cc_v[23] = em_write_buffer_4 (CC_V_23, sync->sync_info.ch_info.ch_type, sync->sync_info.ch_info.ch_mode);\
+  }  /* cc_v[23] */
+
+#define EM_CC_NOTIFICATION_FROM_THE_NETWORK \
+        /* Notification from the network */\
+        if (cc_v[24])\
+        {\
+          cc_v[24] = em_write_buffer_3 (CC_V_24, notify->notific.nd);\
+        } /* cc_v[24] */
+
+#define EM_CC_NOTIFICATION_TO_THE_NETWORK \
+      /* Notification to the network */\
+      if (cc_v[25])\
+      {\
+        cc_v[25] = em_write_buffer_3 (CC_V_25, notify->nd);\
+      } /* cc_v[25] */
+
+#define EM_CC_FACILITY_FROM_THE_NETWORK \
+      /* Facility from the network */\
+      if (cc_v[26])\
+      {\
+        cc_v[26] = em_write_buffer_3 (CC_V_26, cc_data->index_ti);\
+      } /* cc_v[26] */
+
+#define EM_CC_FACILITY_TO_THE_NETWORK \
+        /* Facility to the network */\
+        if (cc_v[27])\
+        {\
+          cc_v[27] = em_write_buffer_3 (CC_V_27, cc_data->index_ti);\
+        } /* cc_v[27] */
+
+#define EM_CC_START_DTMF \
+   /* Start DTMF */\
+  if (cc_v[28])\
+  {\
+    cc_v[28] = em_write_buffer_3 (CC_V_28, start_dtmf->key_facility.key);\
+  }  /* cc_v[28] */
+
+
+#define EM_CC_START_DTMF_ACKNOWLEDGE \
+        /* Start DTMF acknowledge */\
+        if (cc_v[29])\
+        {\
+          cc_v[29] = em_write_buffer_3 (CC_V_29, cc_data->ti);\
+        } /* cc_v[29] */
+
+#define EM_CC_STOP_DTMF \
+  /* Stop DTMF */\
+  if (cc_v[30])\
+  {\
+   cc_v[30] = em_write_buffer_3a (CC_V_30, cc_data->cc_cause[cc_data->ti]);\
+  }  /* cc_v[30] */
+
+#define EM_CC_LOSS_OF_CONNECTION \
+    /* Loss of connection */\
+  if (cc_v[31])\
+  {\
+    cc_v[31] = em_write_buffer_3a (CC_V_31, rel_ind->cause);\
+  } /* cc_v[31] */
+
+#define EM_CC_REESTABLISHED_STARTED \
+  /* Re-establishment started */\
+  if (cc_v[32])\
+  {\
+    cc_v[32] = em_write_buffer_2 (CC_V_32);\
+  } /* cc_v[32] */
+
+#define EM_CC_REESTABLISHED_SUCCESSFUL \
+    /* Re-establishment successful */\
+  if (cc_v[33])\
+  {\
+    cc_v[33] = em_write_buffer_2 (CC_V_33);\
+  }  /* cc_v[33] */
+
+#define EM_CC_REESTABLISHED_FAILED \
+      /* Re-establishment failed */\
+      if (cc_v[34])\
+      {\
+        cc_v[34] = em_write_buffer_2 (CC_V_34);\
+      } /* cc_v[34] */
+
+#define EM_CC_STATUS_RECEIVED \
+  /* Status received */\
+  if (cc_v[35])\
+  {\
+    cc_v[35] = em_write_buffer_3a (CC_V_35, CAUSE_MAKE(DEFBY_STD, \
+                                                       ORIGSIDE_NET, \
+                                                       MNCC_CC_ORIGINATING_ENTITY, \
+                                                       status->cc_cause.cause));\
+  } /* cc_v[35] */
+
+#define EM_CC_STATUS_ENQUIRY_RECEIVED \
+        /* Status enquiry received */\
+        if (cc_v[36])\
+        {\
+          cc_v[36] = em_write_buffer_3 (CC_V_36, cc_data->ti);\
+        } /* cc_v[36] */
+
+#define EM_CC_CALL_HOLD \
+      /* Call hold */\
+      if (cc_v[37])\
+      {\
+        cc_v[37] = em_write_buffer_3 (CC_V_37, cc_data->index_ti);\
+      } /* cc_v[37] */
+
+#define EM_CC_CALL_HOLD_ACKNOWLEDGE \
+            /* Call hold ackn */\
+          if (cc_v[38])\
+          {\
+            cc_v[38] = em_write_buffer_3 (CC_V_38, cc_data->ti);\
+          } /* cc_v[38] */
+
+#define EM_CC_CALL_HOLD_REJECT \
+        /* Call hold rej - Info: the "_2" is because the name is used earlier  */\
+        if (cc_v[39])\
+        {\
+          cc_v[39] = em_write_buffer_3 (CC_V_39, cc_data->index_ti);\
+        } /* cc_v[39] */
+
+#define EM_CC_CALL_RETRIEVE \
+       /* Call retrieve */\
+      if (cc_v[40])\
+      {\
+        cc_v[40] = em_write_buffer_3 (CC_V_40, cc_data->index_ti);\
+      } /* cc_v[40] */
+
+#define EM_CC_CALL_RETRIEVE_ACKNOWLEDGE \
+          /* Call retrieve ackn */\
+          if (cc_v[41])\
+          {\
+            cc_v[41] = em_write_buffer_3 (CC_V_41, cc_data->index_ti);\
+          } /* cc_v[41] */
+
+#define EM_CC_CALL_RETRIEVE_REJECT \
+          /* Call retrieve rej */\
+          if (cc_v[42])\
+          {\
+            cc_v[42] = em_write_buffer_3 (CC_V_42, cc_data->index_ti);\
+          } /* cc_v[42] */
+
+#define EM_CC_MO_IN_CALL_MODIFICATION \
+        /* MO in call modification */\
+        if (cc_v[43])\
+        {\
+          cc_v[43] = em_write_buffer_3 (CC_V_43, cc_data->index_ti);\
+        } /* cc_v[43] */
+
+#define EM_CC_MO_IN_CALL_MODIFICATION_PASSED \
+          /* MO in call modification passed */\
+          if (cc_v[44])\
+          {\
+            cc_v[44] = em_write_buffer_3 (CC_V_44, cc_data->ti);\
+          } /* cc_v[44] */
+
+#define EM_CC_MO_IN_CALL_MODIFICATION_FAILED \
+        /* MO in call modification failed */\
+        if (cc_v[45])\
+        {\
+          cc_v[45] = em_write_buffer_3 (CC_V_45, cc_data->index_ti);\
+        } /* cc_v[45] */
+
+#define EM_CC_MT_IN_CALL_MODIFICATION_PASSED \
+     /* MT in call modification passed */\
+    if (cc_v[46])\
+    {\
+      cc_v[46] = em_write_buffer_3 (CC_V_46, cc_data->ti);\
+    } /* cc_v[46] */
+
+
+
+#define EM_CC_MT_IN_CALL_MODIFICATION_FAILED \
+  /* MT in-call modification failed */\
+  if (cc_v[47])\
+  {\
+    cc_v[47] = em_write_buffer_3 (CC_V_47, cc_data->ti);\
+  } /* cc_v[47] */
+
+#define EM_CC_USUER_TO_USER_DATA_SENT \
+      /* User 2 user data sent */\
+      if (cc_v[48])\
+        {\
+          cc_v[48] = em_write_buffer_3 (CC_V_48, cc_data->index_ti);\
+        } /* cc_v[49] */
+
+
+#define EM_CC_USER_TO_USER_DATA_RECEIVED \
+        /* User 2 user data received */\
+        if (cc_v[49])\
+        {\
+          cc_v[49] = em_write_buffer_3 (CC_V_49, cc_data->index_ti);\
+        } /* cc_v[49] */
+
+#else /*FF_EM_MODE not defined*/
+
+#define EM_CC_START_MO_CALL                 /* Event 1 */
+#define EM_CC_MM_CONNECTION_ESTABLISHED_MT /* Event 2 */
+#define EM_CC_MM_CONNECTION_ESTABLISHED_MO /* Event 2 */
+#define EM_CC_MM_CONNECTION_FAILED          /* Event 3 */
+#define EM_CC_SENT_SETUP_MESSAGE            /* Event 4 */
+#define EM_CC_SENT_EMERGENCY_SETUP_MESSAGE  /* Event 5 */
+#define EM_CC_TIMEOUT_T303              /* Event 6 */
+#define EM_CC_CALL_PROCEEDING_RECEIVED  /* Event 7 */
+#define EM_CC_RELEASE_COMPLETE_RECEIVED /* Event 8 */
+#define EM_CC_DISCONNECT_RECEIVED       /* Event 9 */
+#define EM_CC_CONNECT_RECEIVED          /* Event 10*/
+#define EM_CC_ALERTING_RECEIVED         /* Event 11*/
+#define EM_CC_PROGRESS_RECEIVED         /* Event 12*/
+#define EM_CC_CONNECT_ACKNOWLEDGE       /* Event 13*/
+#define EM_CC_RELEASE_SENT              /* Event 14*/
+#define EM_CC_DOWNLINK_SETUP_RECEIVED   /* Event 15*/
+#define EM_CC_CALL_CONFIRM_SENT         /* Event 16*/
+#define EM_CC_STATUS_SENT               /* Event 17*/
+#define EM_CC_RELEASE_COMPLETE_SENT     /* Event 18*/
+#define EM_CC_ALERTING_SENT             /* Event 19*/
+#define EM_CC_CONNECT_SENT              /* Event 20*/
+#define EM_CC_CONNECT_ACKNOWLEDGE_RECEIVED /* Event 21*/
+#define EM_CC_DISCONNECT_SENT           /* Event 22*/
+#define EM_CC_CHANNEL_MODE_CHANGE       /* Event 23*/
+#define EM_CC_NOTIFICATION_FROM_THE_NETWORK/* Event 24*/
+#define EM_CC_NOTIFICATION_TO_THE_NETWORK  /* Event 25*/
+#define EM_CC_FACILITY_FROM_THE_NETWORK    /* Evnet 26*/
+#define EM_CC_FACILITY_TO_THE_NETWORK      /* Event 27*/
+#define EM_CC_START_DTMF                /* Event 28*/
+#define EM_CC_START_DTMF_ACKNOWLEDGE       /* Event 29*/
+#define EM_CC_STOP_DTMF                 /* Event 30*/
+#define EM_CC_LOSS_OF_CONNECTION        /* Event 31*/
+#define EM_CC_REESTABLISHED_STARTED     /* Event 32*/
+#define EM_CC_REESTABLISHED_SUCCESSFUL  /* Event 33*/
+#define EM_CC_REESTABLISHED_FAILED      /* Event 34*/
+#define EM_CC_STATUS_RECEIVED              /* Event 35*/
+#define EM_CC_STATUS_ENQUIRY_RECEIVED      /* Event 36*/
+#define EM_CC_CALL_HOLD                    /* Event 37*/
+#define EM_CC_CALL_HOLD_ACKNOWLEDGE        /* Event 38*/
+#define EM_CC_CALL_HOLD_REJECT             /* Event 39*/
+#define EM_CC_CALL_RETRIEVE                /* Event 40*/
+#define EM_CC_CALL_RETRIEVE_ACKNOWLEDGE    /* Event 41*/
+#define EM_CC_CALL_RETRIEVE_REJECT         /* Event 42*/
+#define EM_CC_MO_IN_CALL_MODIFICATION      /* Event 43*/
+#define EM_CC_MO_IN_CALL_MODIFICATION_PASSED /* Event 44*/
+#define EM_CC_MO_IN_CALL_MODIFICATION_FAILED /* Event 45*/
+#define EM_CC_MT_IN_CALL_MODIFICATION_PASSED /* Event 46*/
+#define EM_CC_MT_IN_CALL_MODIFICATION_FAILED /* Event 47*/
+#define EM_CC_USUER_TO_USER_DATA_SENT       /* Event 48*/
+#define EM_CC_USER_TO_USER_DATA_RECEIVED   /* Event 49*/
+
+
+#endif  /* FF_EM_MODE */
+#endif /* CC_EM_H */