104
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3 | Project :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 5 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 6 | Copyright 2002 Texas Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 7 | All rights reserved.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 8 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 9 | This file is confidential and a trade secret of Texas
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 10 | Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 11 | The receipt of or possession of this file does not convey
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 12 | any rights to reproduce or disclose its contents or to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 13 | manufacture, use, or sell anything it may describe, in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 14 | whole, or in part, without the specific written consent of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 15 | Texas Instruments Berlin, AG.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 16 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 17 | Purpose : This Module defines the engineering mode (EM) device driver for the
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 | G23 protocol stack. This driver is used to control all engineering
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 19 | mode related functions.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 20 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 21 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 22
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23 #ifndef SMS_EM_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24 #define SMS_EM_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 26 #define ENTITY_SMS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 27
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 28 /*==== INCLUDES ===================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 29
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 #include <string.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31 #include <stdlib.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include <stddef.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "typedefs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "pcm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35 #include "vsi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36 #include "custom.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "gsm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38 #include "message.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "ccdapi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "prim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41 #include "cus_sms.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42 #include "cnf_sms.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 #include "mon_sms.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44 #include "pei.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45 #include "tok.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46 #include "sms.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47 #include "sms_em.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49 /*==== EXPORT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51 /*==== PRIVAT =====================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53 /*==== VARIABLES ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55 #ifdef FF_EM_MODE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56 GLOBAL UBYTE em_sms_event_buffer[EM_SMS_BUFFER_SIZE];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57 GLOBAL UBYTE em_sms_buffer_write;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59 /* Event tracing flags for EM */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60 GLOBAL BOOL sms_v[EM_MAX_SMS_EVENTS];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 62 static UBYTE em_sms_trace_occured;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 63
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 64 GLOBAL UBYTE em_change_flag = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66 #endif /* FF_EM_MODE */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 /*==== FUNCTIONS ==================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70 #ifdef FF_EM_MODE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71 LOCAL UBYTE check_write_index (UBYTE n);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 72
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 73 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 74 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 75 | Function : em_write_buffer_2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 | Parameters : Event number and length of data
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86 GLOBAL UBYTE em_write_buffer_2 (UBYTE event_no)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88 TRACE_FUNCTION ("sms_em_write_buffer_2()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 if(check_write_index(2)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92 em_sms_event_buffer[em_sms_buffer_write++] = 0; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 | Function : em_write_buffer_3
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105 | Parameters : Event number, length of data and value
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112 GLOBAL UBYTE em_write_buffer_3 (UBYTE event_no, UBYTE value)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114 TRACE_FUNCTION ("sms_em_write_buffer_3()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116 if(check_write_index(3)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 em_sms_event_buffer[em_sms_buffer_write++] = 1; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 em_sms_event_buffer[em_sms_buffer_write++] = value; /* Data to be stored */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 | Function : em_write_buffer_3a
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132 | Parameters : Event number, length of data and value (USHORT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 133 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 134 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 135 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 GLOBAL UBYTE em_write_buffer_3a (UBYTE event_no, USHORT value)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141 TRACE_FUNCTION ("sms_em_write_buffer_3a()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 if(check_write_index(4)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 em_sms_event_buffer[em_sms_buffer_write++] = 2; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 em_sms_event_buffer[em_sms_buffer_write++] = (UBYTE)(value >> 8); /* Data to be stored - MSB first */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147 em_sms_event_buffer[em_sms_buffer_write++] = (UBYTE)(value); /* LSB second */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 | Function : em_write_buffer_4
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 | Parameters : Event number, length of data, data value1 and value2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 GLOBAL UBYTE em_write_buffer_4 (UBYTE event_no, UBYTE value1, UBYTE value2)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 TRACE_FUNCTION ("sms_em_write_buffer_4()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 if(check_write_index(4)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173 em_sms_event_buffer[em_sms_buffer_write++] = 2; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174 em_sms_event_buffer[em_sms_buffer_write++] = value1; /* Value 1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 em_sms_event_buffer[em_sms_buffer_write++] = value2; /* Value 2 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 180 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 181
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 182 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 | Function : em_write_buffer_4a
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188 | Parameters : Event number, length of data, data value and cs (USHORT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 192 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 193 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 194
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 GLOBAL UBYTE em_write_buffer_4a (UBYTE event_no, UBYTE value, USHORT cs)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 TRACE_FUNCTION ("sms_em_write_buffer_4a()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199 if(check_write_index(5)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 em_sms_event_buffer[em_sms_buffer_write++] = 3; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202 em_sms_event_buffer[em_sms_buffer_write++] = value; /* Data */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203 em_sms_event_buffer[em_sms_buffer_write++] = (UBYTE)(cs >> 8); /* Data to be stored - MSB first */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 em_sms_event_buffer[em_sms_buffer_write++] = (UBYTE)(cs); /* LSB second */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 | Function : em_write_buffer_5
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 216 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 217 | Parameters : Event number, length of data, data value1 and value2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 218 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 222 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 223
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 224 GLOBAL UBYTE em_write_buffer_5 (UBYTE event_no, UBYTE value1, UBYTE value2, UBYTE value3)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 TRACE_FUNCTION ("sms_em_write_buffer_5()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228 if(check_write_index(5)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 229 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 230 em_sms_event_buffer[em_sms_buffer_write++] = 3; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 231 em_sms_event_buffer[em_sms_buffer_write++] = value1; /* Value 1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 em_sms_event_buffer[em_sms_buffer_write++] = value2; /* Value 2 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 em_sms_event_buffer[em_sms_buffer_write++] = value3; /* Value 3 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 | Function : em_write_buffer_6
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 | Description : Perform buffer check and store corresponding data in it.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246 | Parameters : Event number, length of data, data value and cs (USHORT)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253 GLOBAL UBYTE em_write_buffer_6 (UBYTE event_no, UBYTE value, UBYTE value1, UBYTE value2, UBYTE value3)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 TRACE_FUNCTION ("sms_em_write_buffer_6()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 if(check_write_index(6)) { /* Check write index */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 em_sms_event_buffer[em_sms_buffer_write++] = event_no; /* Event number */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 em_sms_event_buffer[em_sms_buffer_write++] = 4; /* Indicates the length of the data value */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260 em_sms_event_buffer[em_sms_buffer_write++] = value; /* Data */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261 em_sms_event_buffer[em_sms_buffer_write++] = value1; /* Data 1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262 em_sms_event_buffer[em_sms_buffer_write++] = value2; /* Data 2 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 em_sms_event_buffer[em_sms_buffer_write++] = value3; /* Data 3 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 return FALSE; /* Data is stored inside buffer, reset flag */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 return TRUE; /* No more space inside buffer, serve flag next time */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 | Function : check_write_index
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273 | Description : Checks the write index inside the buffer. No reset when
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274 | buffer is full.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 | Parameters : Number of bytes to be stored in buffer
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278 | Return : TRUE/FALSE
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283 LOCAL UBYTE check_write_index (UBYTE n)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 TRACE_FUNCTION ("sms_check_write_index()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 if (em_sms_buffer_write + n < EM_SMS_BUFFER_SIZE)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 ACI is informed about the first event trace, used for later data processing.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 if(em_sms_trace_occured == 0)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294 PALLOC(em_notification, EM_DATA_IND);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295 em_notification->entity = EM_SMS;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296 PSENDX(MMI, em_notification);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 em_sms_trace_occured++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 return TRUE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302 return FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307 | Function : em_init_sms_event_trace
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 | Description : Initialize the event tracing flags for SMS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311 | Parameters :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 | Return :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 GLOBAL void em_init_sms_event_trace(void)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 318 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 319 UBYTE i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 320
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 TRACE_FUNCTION ("em_init_sms_event_trace()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 for(i=1; i<EM_MAX_SMS_EVENTS; i++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324 sms_v[i] = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326 em_sms_buffer_write = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331 | Function : sms_em_sms_event_req
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333 | Description : Set the event tracing flags according the bitmask
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 335 | Parameters : Primitive - Bitmask
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 336 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 337 | Return :
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 +------------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 342 GLOBAL void sms_em_sms_event_req (T_EM_SMS_EVENT_REQ *em_sms_event_req)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 343 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 344 UBYTE i;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346 TRACE_FUNCTION ("sms_em_sms_event_req()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 347 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 348 * The event tracing flags are set according the bitmask. sms_v[i] are
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 349 * the flags belonging to the event number described in 8443.601
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 350 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 351 for(i=1; i<33; i++) {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 352 sms_v[i] = ((em_sms_event_req->bitmask_sms_l & (0x01<<(i-1))) > 0) ? TRUE : FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 353 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 354
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 355 for(i=33; i<(EM_MAX_SMS_EVENTS); i++) {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 356 sms_v[i] = ((em_sms_event_req->bitmask_sms_h & (0x01<<(i-1))) > 0) ? TRUE : FALSE;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 357 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 358
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 359 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 360 A new event trace is generated therefor the flag is set to 0.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 361 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 362 em_sms_trace_occured = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 363
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 364 PFREE(em_sms_event_req);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 365 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 366 #endif /* FF_EM_MODE */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 367
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 368 #endif /* SMS_EM_C */