annotate src/g23m-gsm/sms/sms_for.c @ 287:d85305a74518

aci2 AT@SPKR command: added query operation
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 27 Aug 2017 03:27:45 +0000
parents 27a4235405c6
children 1ed9de6c90bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
104
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 +-----------------------------------------------------------------------------
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 | Project : GSM-F&D (8411)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 | Modul : SMS_FOR
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 +-----------------------------------------------------------------------------
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 | Copyright 2002 Texas Instruments Berlin, AG
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 | All rights reserved.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 | This file is confidential and a trade secret of Texas
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 | Instruments Berlin, AG
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 | The receipt of or possession of this file does not convey
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 | any rights to reproduce or disclose its contents or to
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 | manufacture, use, or sell anything it may describe, in
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 | whole, or in part, without the specific written consent of
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 | Texas Instruments Berlin, AG.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 +-----------------------------------------------------------------------------
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 | Purpose : This Modul defines the functions for the formatter
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 | of the component SMS.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 +-----------------------------------------------------------------------------
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 #ifndef SMS_FOR_C
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 #define SMS_FOR_C
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 #define ENTITY_SMS
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 /*==== INCLUDES ===================================================*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 #include <string.h>
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 #include <stdlib.h>
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #include <stddef.h>
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 #include "typedefs.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 #include "pcm.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 #include "vsi.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 #include "custom.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #include "gsm.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 #include "message.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #include "ccdapi.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 #include "prim.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 #include "cus_sms.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 #include "cnf_sms.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 #include "mon_sms.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 #include "pei.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 #include "tok.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 #include "sms.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 #include "sms_em.h"
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 /*==== EXPORT ======================================================*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 /*==== PRIVAT ======================================================*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 /*==== VARIABLES ===================================================*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 #if !defined (SHARED_CCD_BUF)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 GLOBAL UBYTE _decodedMsg [MAX_MSTRUCT_LEN_SMS];
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 #else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 GLOBAL UBYTE * _decodedMsg;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 GLOBAL UBYTE _CCDbuf = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 #endif
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 /*==== FUNCTIONS ===================================================*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 | STATE : code ROUTINE : for_init_sms |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 PURPOSE : Initialize the formatter (void)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 GLOBAL void for_init_sms (void)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 // TRACE_FUNCTION ("for_init_sms()");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 | STATE : code ROUTINE : for_get_pd_ti |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 PURPOSE : Get protocol discriminator and transaction identifier if
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 the incoming message is of sufficient length to contain
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 anythiny useful, this means at least PD, TI and message type.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 LOCAL BOOL for_get_pd_ti (T_sdu *p_sdu, UBYTE *p_pd, UBYTE *p_ti)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 if (p_sdu->l_buf >= 16)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 *p_pd = p_sdu->buf[p_sdu->o_buf >> 3] & 0x0F;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 *p_ti = p_sdu->buf[p_sdu->o_buf >> 3] >> 4;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 *p_ti ^= 0x8;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 p_sdu->o_buf += BSIZE_TI_PD;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 p_sdu->l_buf -= BSIZE_TI_PD;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 return TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 TRACE_EVENT ("message too short");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 return FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 | STATE : code ROUTINE : for_get_new_mt_instance |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 PURPOSE : This function gets a new MT instance. Basically the same
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 is done here as in GET_NEW_SMS_INSTANCE(), but additionally
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 the special case that the CP-Layer of an old MT transaction
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 waits for the last CP-ACK before the MMSMS_RELEASE_REQ is
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 sent is handled.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 LOCAL T_SMS_DATA * for_get_new_mt_instance (UBYTE ti)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 GET_INSTANCE_DATA;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 TRACE_FUNCTION ("for_get_new_mt_instance()");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 * Check here whether we are awaiting the last CP-ACK for a MT transaction.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 * If so, take the new MT message as implicit CP-ACK.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 if (sms_data NEQ NULL) /*lint !e774 (sms_data NEQ NULL) always */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 if (sms_data->data[INST_MT].ti NEQ 0)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 /* Old MT instance still exists */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 sms_data->inst = INST_MT;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 switch (SMS_INST_GET_STATE (STATE_CP))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 case CP_WAIT_FOR_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 #ifdef GPRS
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 case CP_GSMS_MT_WAIT_FOR_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 #endif
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 if (SMS_INST.r_flag)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 * No further message for the old MT instance expected. Take the
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 * MMSMS_ESTABLISH_IND as implicit CP-ACK for the old instance.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 TRACE_EVENT ("Implicit CP-ACK");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 cp_data_ind_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 break; /* Do nothing */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 sms_data = GET_NEW_SMS_INSTANCE(ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 return sms_data;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 | STATE : code ROUTINE : for_ccd_rp_error_send |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 PURPOSE : Perform CCD Error check and send rp errors
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 LOCAL BOOL for_ccd_rp_error_send (T_D_CP_DATA *cp_data,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 T_SMS_DATA *sms_data, UBYTE rp_error)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 BOOL rp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 MCAST (cp_data1, U_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 if((SMS_INST_GET_STATE (STATE_CP)) EQ CP_MM_CONNECTION_ESTABLISHED)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 rp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 rl_build_rp_error (cp_data->cp_user_data_dl.reference,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 rp_error,cp_data1, NULL);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 SMS_EM_SEND_RP_ERROR;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 cp_data_req (cp_data1);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 cp_send_release_req (SMS_INST.ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 FREE_SMS_INSTANCE (SMS_INST.ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 return rp_error_send;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 | STATE : code ROUTINE : for_ccd_error_check |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 PURPOSE : Perform CCD Error check and returns errors
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 LOCAL BOOL for_ccd_error_check (UBYTE *_decodedMsg,T_sdu *buf_sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 T_SMS_DATA *sms_data,UBYTE ti)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 ULONG ccd_err = ERR_NO_MORE_ERROR;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 T_CCD_ERR_ENTRY *ccd_err_entry;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 UBYTE p_sdu;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 UBYTE cp_error_cause = 0;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 UBYTE length = 0;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 BOOL cp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 BOOL rp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 ccd_err_entry = malloc(sizeof(T_CCD_ERR_ENTRY));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 if(ccd_err_entry EQ NULL)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 TRACE_EVENT("for_ccd_error_check(): MALLOC returned NULL");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 return FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 memset(ccd_err_entry,0, sizeof(ccd_err_entry));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 /* Message offset value */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 p_sdu = (buf_sdu->o_buf/8) - 1;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 ccd_err = ccd_getFirstFault(&ccd_err_entry);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 do
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 * Need to set these values everytime we go through fault list of ccd
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 cp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 rp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235 /*lint -e415 Likely access of out-of-bounds pointer*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 switch(ccd_err)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 case ERR_ELEM_LEN: /* ignore message & send STATUS #96 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 * This ccd error will come when there is any error in IE length.
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 * If cp user data length is greater than 249 Octets then this error
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 * is because CP Message IE, so send CP-ERROR
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 * if cp user data length is less than 249, then this ccd error is
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 * because of rp IE length, so RP-ERROR
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 switch(_decodedMsg[0])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 length = buf_sdu->buf[p_sdu+2];
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252 * If CP User data length is more than 249 then CCD error is because
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 * of CP Message IE else it will be becasue of RP message IE
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254 * Send error accordingly
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 if(length < MAX_LEN_CP_USER_DATA)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 rp_error_send = for_ccd_rp_error_send((T_D_CP_DATA *)_decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 sms_data,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 SMS_RP_CS_INV_MAND_INFO);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 if(rp_error_send EQ FALSE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 * If Message is CP-ACK or CP-ERROR then this ccd error is due to CP
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270 * no need to differentiate between RP and CP, These two messages are
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 * intended for CP Layer, So send CP-ERROR
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 case B_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 case B_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 /* This flag will become FALSE, in case there is CCD warning, so make it
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 * TRUE till we get CCD Error, especially this will happen in default case
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 case ERR_COMPREH_REQUIRED: /* ignore message & send STATUS #96 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 * This error will come when Comprehension bit required set is having error in
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287 * IE.Comprehension bits can be set inside only CP-DATA message
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 * for RP-ERROR or RP-ACK
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 if(_decodedMsg[0] EQ D_CP_DATA)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
291 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
292 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293 * Comprehension bit error is in RP_ERROR or RP_ACK after RP Cause element
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295 rp_error_send = for_ccd_rp_error_send((T_D_CP_DATA *)_decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296 sms_data,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297 SMS_RP_CS_INV_MAND_INFO);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
298 if(rp_error_send EQ FALSE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
299 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
302 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
303 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
305
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
306 case ERR_MAND_ELEM_MISS: /* ignore message & send STATUS #96 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
307 /* See bit postions to check whether it is CP or RP Error */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
308 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
309 * Checking whether this error is in CP message element or RP
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
310 * message element. This is required to check because both CP and RP
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
311 * Layer decoding is done inside same CCD function
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
312 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
313 /* This is for CP Message decoding error - in Length*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
314 length = (buf_sdu->l_buf/8);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
315 switch(buf_sdu->buf[1])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
316 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
317 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 /* Evaluate length of Mandatory CP-DATA/CP-ERROR message */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319 if(length < MIN_CP_LEN)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
321 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
322 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
323 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
324 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
325 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
326 cp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
327 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
328 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
329
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
330 case B_CP_ERROR:/* This will not have RP DATA, so no need to check for RP */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
331 /* Evaluate length of Mandatory CP-DATA/CP-ERROR message */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
332 if(length < MIN_CP_LEN)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
333 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
334 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
335 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
336 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
337 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
338
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
339 case B_CP_ACK:/* This will not have RP DATA, so no need to check for RP */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
340 if(length < MIN_CP_ACK_LEN)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
341 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
342 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
343 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
344 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
345 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
346
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
347 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
348 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
349 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
350 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
351 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
352 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
353
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
354 case ERR_INVALID_MID: /* ignore message & send STATUS #97 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
355 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
356 * Checking whether this error is in CP message element or RP
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
357 * message element. This is required to check because both CP and RP
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
358 * Layer decoding is done inside same CCD function
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
359 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
360 /* See bit postions to check whether it is CP or RP Error */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
361 /* This is for CP Message decoding error - in Length*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
362 if ((buf_sdu->buf[1] NEQ D_CP_DATA)||(buf_sdu->buf[1] NEQ B_CP_ACK)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
363 ||(buf_sdu->buf[1] NEQ B_CP_ERROR))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
364 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
365 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
366 cp_error_cause = SMS_CP_CS_MSG_TYPE_NON_EXIST;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
367 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
368 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
369 /* Let RP Layer Handle This ccd error, eventually RP Layer will
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
370 * send RP-ERROR
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
371 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
372 /* This is for RP Message decoding error - in Length*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
373 cp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
374 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
375
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
376 case ERR_MSG_LEN: /* ignore message & send STATUS #96 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
377 /* Send CP-ERROR, some problem with Message Length, whole message is garbled */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
378 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
379 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
380 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
381
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
382 case ERR_LEN_MISMATCH: /* ignore message & send STATUS #96 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
383 /* Send CP-ERROR, some problem with Message Length, whole message is garbled */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
384 cp_error_send = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
385 cp_error_cause = SMS_CP_CS_INV_MAND_INFO;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
386 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
387 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
388 TRACE_EVENT_P1 ("Unexpected warnings/errors = %u", ccd_err);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
389 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
390 *Default warnings pass it to RP Layer, decoding at TP will take care of it
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
391 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
392 cp_error_send = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
393 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
394 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
395 /*lint +e415 Likely access of out-of-bounds pointer*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
396 ccd_err = ccd_getNextFault(&ccd_err_entry);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
397 }while(ccd_err != ERR_NO_MORE_ERROR);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
398
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
399 if(cp_error_send)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
400 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
401 cp_build_cp_error (cp_error_cause);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
402 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
403 * Check if the cmms_mode is enabled or not
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
404 * If enabled dont release the MM connection
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
405 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
406
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
407 if(!CMMS_ACTIVE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
408 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
409 cp_send_release_req (ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
410 SMS_INST_SET_STATE (STATE_CP, CP_IDLE);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
411 SMS_INST.r_flag = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
412 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
413 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
414 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
415 sms_data->cmms_release_pending = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
416 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
417
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
418 rl_error_ind (CAUSE_MAKE(DEFBY_STD, ORIGSIDE_MS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
419 SMSCP_ORIGINATING_ENTITY, cp_error_cause));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
420
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
421
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
422 FREE_SMS_INSTANCE (ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
423 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
424 /* These flags return value will decide whether to pass to rp layer further */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
425 return (!rp_error_send && !cp_error_send);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
426 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
427
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
428
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
429 /*---- PRIMITIVES --------------------------------------------------*/
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
430
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
431 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
432 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
433 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
434 | STATE : code ROUTINE : for_mmsms_establish_ind |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
435 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
436
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
437 PURPOSE : Processing the primitive MMSMS_ESTABLISH_IND
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
438
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
439 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
440
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
441 GLOBAL void for_mmsms_establish_ind (T_MMSMS_ESTABLISH_IND *mmsms_establish_ind)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
442 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
443 UBYTE ti;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
444 UBYTE pd;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
445 CHAR *msg_type;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
446 BOOL pass_to_rp = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
447
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
448
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
449 /* Enable the PCO to correctly decode the message */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
450 PPASS (mmsms_establish_ind, establish_ind, MMSMS_ESTABLISH_IND);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
451
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
452 TRACE_FUNCTION ("for_mmsms_establish_ind()");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
453
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
454 if (for_get_pd_ti (&establish_ind->sdu, &pd, &ti))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
455 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
456 if ((ti & 0x8) AND (pd EQ PD_SMS))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
457 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
458 register T_SMS_DATA *sms_data = for_get_new_mt_instance (ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
459
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
460 TRACE_EVENT_P1 ("TI %u", ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
461
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
462 if (sms_data)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
463 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
464 #if defined (GPRS)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
465 SMS_INST.downlink = SMS_DOWNLINK_MMSMS;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
466 #endif
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
467
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
468 SMS_INST.cp_ack_pending = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
469
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
470 CCD_START;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
471
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
472 if(ccd_decodeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
473 DOWNLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
474 (T_MSGBUF *) &establish_ind->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
475 (UBYTE *)_decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
476 NOT_PRESENT_8BIT) EQ ccdError)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
477 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
478 pass_to_rp = for_ccd_error_check(_decodedMsg,&establish_ind->sdu,sms_data,ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
479 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
480
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
481 if(pass_to_rp)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
482 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
483 switch (_decodedMsg[0])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
484 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
485 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
486 cp_est_ind_cp_data ((T_D_CP_DATA *)_decodedMsg);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
487 msg_type = "D_CP_DATA";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
488
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
489 SMS_EM_RECEIVE_CP_DATA;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
490
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
491 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
492
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
493 case B_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
494 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
495 MCAST (error, B_CP_ERROR);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
496
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
497 cp_est_ind_cp_error (error->cp_cause);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
498 msg_type = "B_CP_ERROR";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
499
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
500 SMS_EM_RECEIVE_CP_ERROR;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
501
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
502 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
503 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
504
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
505 case B_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
506 cp_est_ind_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
507 msg_type = "B_CP_ACK";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
508 SMS_EM_RECEIVE_CP_ACKNOWLEDGE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
509
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
510 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
511
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
512 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
513 cp_est_ind_cp_unknown ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
514 msg_type = "UNKNOWN_MESSAGE";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
515
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
516 SMS_EM_RECEIVE_UNKNOWN;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
517
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
518 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
519 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
520 TRACE_BINDUMP(sms_handle,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
521 TC_USER4,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
522 msg_type,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
523 (&(establish_ind->sdu.buf[0]) + ((establish_ind->sdu.o_buf >> 3) -1)),
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
524 ((establish_ind->sdu.l_buf >> 3) + 1));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
525 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
526 CCD_END;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
527 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
528 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
529 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
530 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
531 * no further instance available
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
532 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
533 CCD_START;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
534
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
535 ccd_decodeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
536 DOWNLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
537 (T_MSGBUF *) &establish_ind->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
538 (UBYTE *) _decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
539 NOT_PRESENT_8BIT);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
540
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
541 switch (_decodedMsg[0])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
542 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
543 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
544 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
545 MCAST (d_cp_data, D_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
546 MCAST (cp_data, U_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
547 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
548 * U_CP_DATA contains a maximum of 252 Bytes
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
549 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
550 PALLOC_SDU (data_req, MMSMS_DATA_REQ, LEN_U_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
551
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
552 data_req->sdu.o_buf = ENCODE_OFFSET;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
553
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
554 rl_build_rp_error (d_cp_data->cp_user_data_dl.reference,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
555 SMS_RP_CS_PROTOCOL_ERROR,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
556 cp_data, NULL);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
557
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
558 cp_data->msg_type = U_CP_DATA;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
559
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
560 ccd_codeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
561 UPLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
562 (T_MSGBUF *)&data_req->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
563 (UBYTE *)cp_data,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
564 NOT_PRESENT_8BIT);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
565
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
566 cp_add_pd_ti (ti, &data_req->sdu);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
567
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
568 TRACE_BINDUMP(sms_handle,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
569 TC_USER4,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
570 "U_CP_DATA",
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
571 (&(data_req->sdu.buf[0]) + ((data_req->sdu.o_buf >> 3) -1)),
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
572 ((data_req->sdu.l_buf >> 3) + 1));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
573 PSENDX (MM, data_req);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
574 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
575 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
576 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
577 TRACE_EVENT_P1 ("Unexpected Message = %u", _decodedMsg[0]);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
578 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
579 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
580 CCD_END;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
581 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
582 PALLOC (release_req, MMSMS_RELEASE_REQ);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
583
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
584 release_req->ti = ti;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
585 PSENDX (MM, release_req);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
586 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
587 SMS_EM_UNKNOWN_TRANSACTION;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
588 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
589 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
590 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
591 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
592 TRACE_EVENT_P2 ("TI or PD wrong, PD=%d, TI=%d", pd, ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
593 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
594 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
595 PFREE (establish_ind);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
596 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
597
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
598 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
599 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
600 | PROJECT : GSM-PS (8410) MODULE : SMS_FOR |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
601 | STATE : code ROUTINE : for_mmsms_data_ind |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
602 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
603
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
604 PURPOSE : Processing the primitive MMSMS_DATA_IND
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
605
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
606 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
607
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
608 GLOBAL void for_mmsms_data_ind (T_MMSMS_DATA_IND *mmsms_data_ind)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
609 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
610 UBYTE ti;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
611 UBYTE pd;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
612 CHAR *msg_type;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
613 BOOL pass_to_rp = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
614
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
615
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
616 /* Enable the PCO to correctly decode the message */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
617 PPASS (mmsms_data_ind, data_ind, MMSMS_DATA_IND);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
618
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
619 if (for_get_pd_ti (&data_ind->sdu, &pd, &ti))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
620 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
621 TRACE_FUNCTION_P1 ("for_mmsms_data_ind(TI=%u)", ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
622
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
623 if (/*((! ti) OR (ti >= 8)) AND*/ (pd EQ PD_SMS))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
624 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
625 register T_SMS_DATA *sms_data = GET_SMS_INSTANCE(ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
626
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
627 if (sms_data)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
628 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
629 CCD_START;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
630
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
631 if(ccd_decodeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
632 DOWNLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
633 (T_MSGBUF *) &data_ind->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
634 (UBYTE *)_decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
635 NOT_PRESENT_8BIT) EQ ccdError)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
636 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
637 pass_to_rp = for_ccd_error_check(_decodedMsg,&data_ind->sdu,sms_data,ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
638 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
639
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
640 if(pass_to_rp)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
641 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
642 switch (_decodedMsg[0])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
643 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
644 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
645 cp_data_ind_cp_data ((T_D_CP_DATA *)_decodedMsg);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
646 msg_type = "D_CP_DATA";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
647 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
648
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
649 case B_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
650 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
651 MCAST (error, B_CP_ERROR);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
652
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
653 cp_data_ind_cp_error (error->cp_cause);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
654 msg_type = "B_CP_ERROR";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
655 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
656 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
657
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
658 case B_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
659 cp_data_ind_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
660 msg_type = "B_CP_ACK";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
661 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
662 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
663 cp_data_ind_cp_unknown ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
664 msg_type = "UNKNOWN MESSAGE";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
665 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
666 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
667 TRACE_BINDUMP(sms_handle,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
668 TC_USER4,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
669 msg_type,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
670 (&(data_ind->sdu.buf[0]) + ((data_ind->sdu.o_buf >> 3) -1)),
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
671 ((data_ind->sdu.l_buf >> 3) + 1));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
672 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
673 CCD_END;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
674 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
675 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
676 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
677 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
678 TRACE_EVENT_P1 ("PD wrong, PD=%d", pd);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
679 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
680 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
681 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
682 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
683 TRACE_ERROR("for_mmsms_data_ind() error evaluating PD TI");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
684 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
685 PFREE (data_ind) ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
686 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
687
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
688 #if defined (GPRS)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
689 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
690 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
691 | PROJECT : GSM-PS (8410) MODULE : SMS_CP |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
692 | STATE : code ROUTINE : cp_ll_unitdata_ind |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
693 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
694
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
695 PURPOSE : Processing the signal LL_UNITDATA_IND (GSMS only).
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
696
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
697 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
698 GLOBAL void for_ll_unitdata_ind (T_LL_UNITDATA_IND *ll_unitdata_ind)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
699 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
700
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
701 UBYTE ti;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
702 UBYTE pd;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
703 CHAR *msg_type;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
704
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
705 T_SMS_DATA *sms_global = GET_INSTANCE(0);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
706
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
707 /* Enable the PCO to correctly decode the message */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
708 PPASS (ll_unitdata_ind, unitdata_ind, LL_UNITDATA_IND);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
709
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
710 TRACE_FUNCTION ("for_ll_unitdata_ind()");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
711
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
712 if (!(unitdata_ind->sapi EQ LL_SAPI_7))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
713 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
714 TRACE_EVENT ("SAPI not LL_SAPI_7");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
715 PFREE (unitdata_ind);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
716 return;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
717 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
718
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
719 if (sms_global) /*lint !e774 (sms_global) always */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
720 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
721 if (SMS_SMS_FLOW(sms_global) NEQ SMS_FLOW_AVAILABLE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
722 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
723 TRACE_ERROR ("unexpected primitive");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
724 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
725
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
726 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
727 * data has been received, mark flow status as busy
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
728 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
729 SMS_SMS_FLOW(sms_global) = SMS_FLOW_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
730 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
731
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
732 if (for_get_pd_ti (&unitdata_ind->sdu, &pd, &ti))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
733 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
734 if (/*((! ti) OR (ti >= 8)) AND*/ (pd EQ PD_SMS))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
735 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
736 register T_SMS_DATA *sms_data = GET_SMS_INSTANCE(ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
737
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
738 if (sms_data)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
739 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
740 CCD_START;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
741
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
742 ccd_decodeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
743 DOWNLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
744 (T_MSGBUF *) &unitdata_ind->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
745 (UBYTE *) _decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
746 NOT_PRESENT_8BIT);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
747
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
748 switch (_decodedMsg[0])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
749 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
750 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
751 cp_data_ind_cp_data ((T_D_CP_DATA *)_decodedMsg);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
752 msg_type = "D_CP_DATA";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
753 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
754
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
755 case B_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
756 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
757 MCAST (error, B_CP_ERROR);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
758
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
759 cp_data_ind_cp_error (error->cp_cause);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
760 msg_type = "B_CP_ERROR";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
761 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
762 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
763
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
764 case B_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
765 cp_data_ind_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
766 msg_type = "B_CP_ACK";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
767 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
768 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
769 cp_data_ind_cp_unknown ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
770 msg_type = "UNKNOWN MESSAGE";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
771 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
772 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
773 CCD_END;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
774 TRACE_BINDUMP(sms_handle,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
775 TC_USER4,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
776 msg_type,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
777 (&(unitdata_ind->sdu.buf[0]) + ((unitdata_ind->sdu.o_buf >> 3) -1)),
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
778 ((unitdata_ind->sdu.l_buf >> 3) + 1));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
779 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
780 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
781 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
782 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
783 * no SMS instance associated with pid, try to create new one
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
784 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
785 if (ti & 0x8)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
786 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
787 register T_SMS_DATA *sms_data = for_get_new_mt_instance (ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
788
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
789 if (sms_data)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
790 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
791 CCD_START;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
792
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
793 ccd_decodeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
794 DOWNLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
795 (T_MSGBUF *) &unitdata_ind->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
796 (UBYTE *) _decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
797 NOT_PRESENT_8BIT);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
798
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
799 SMS_INST_SET_STATE (STATE_CP, CP_GSMS_IDLE);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
800 SMS_INST.downlink = SMS_DOWNLINK_LL;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
801
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
802 switch (_decodedMsg[0])
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
803 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
804 case D_CP_DATA:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
805 cp_data_ind_cp_data ((T_D_CP_DATA*) _decodedMsg);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
806 msg_type = "D_CP_DATA";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
807 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
808
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
809 case B_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
810 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
811 MCAST (error, B_CP_ERROR);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
812
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
813 cp_data_ind_cp_error (error->cp_cause);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
814 msg_type = "B_CP_ERROR";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
815 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
816 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
817
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
818 case B_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
819 cp_data_ind_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
820 msg_type = "B_CP_ACK";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
821 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
822
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
823 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
824 cp_data_ind_cp_unknown ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
825 msg_type = "UNKNOWN MESSAGE";
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
826 break ;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
827 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
828 CCD_END;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
829 TRACE_BINDUMP(sms_handle,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
830 TC_USER4,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
831 msg_type,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
832 (&(unitdata_ind->sdu.buf[0]) + ((unitdata_ind->sdu.o_buf >> 3) -1)),
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
833 ((unitdata_ind->sdu.l_buf >> 3) + 1));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
834 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
835 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
836 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
837 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
838 * no further instance available, send rp error message
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
839 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
840 register T_SMS_DATA* sms_data_main = GET_INSTANCE(0);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
841 CCD_START;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
842
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
843 ccd_decodeMsg (CCDENT_SMS,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
844 DOWNLINK,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
845 (T_MSGBUF *) &unitdata_ind->sdu,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
846 (UBYTE *) _decodedMsg,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
847 NOT_PRESENT_8BIT);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
848 if (sms_data_main) /*lint !e774 (sms_data_main) always */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
849 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
850 if ((_decodedMsg[0] EQ D_CP_DATA) &&
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
851 (sms_data_main->llc_flow EQ SMS_LLC_AVAILABLE))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
852 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
853 UBYTE msg_ref;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
854
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
855 MCAST (d_cp_data, D_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
856 MCAST (cp_data, U_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
857 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
858 * U_CP_DATA contains a maximum of 252 Bytes
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
859 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
860 PALLOC_SDU (unitdata_req, LL_UNITDATA_REQ, LEN_U_CP_DATA);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
861
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
862 cp_init_ll_unitdata_req (unitdata_req);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
863 msg_ref = d_cp_data->cp_user_data_dl.reference;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
864
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
865 rl_build_rp_error_gprs (ti, unitdata_req, SMS_RP_CS_PROTOCOL_ERROR,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
866 msg_ref, cp_data, NULL);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
867 sms_data_main->llc_flow = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
868 TRACE_BINDUMP(sms_handle,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
869 TC_USER4,
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
870 "U_CP_DATA",
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
871 (&(unitdata_req->sdu.buf[0]) + ((unitdata_req->sdu.o_buf >> 3) -1)),
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
872 ((unitdata_req->sdu.l_buf >> 3) + 1));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
873 PSENDX (LLC, unitdata_req);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
874 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
875 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
876 CCD_END;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
877 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
878 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
879 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
880 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
881 TRACE_EVENT_P1 ("Unknown TI with response flag set, TI=%d", ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
882 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
883 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
884 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
885 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
886 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
887 TRACE_EVENT_P1 ("PD wrong, PD=%d", pd);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
888 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
889 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
890
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
891 PFREE (unitdata_ind);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
892
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
893 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
894 * Receive ready, if sending is not blocked
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
895 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
896 // if (SMS_LLC_FLOW(sms_global) NEQ SMS_LLC_BUSY_WAITING)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
897 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
898 cp_send_getunitdata_req ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
899 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
900 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
901
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
902 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
903 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
904 | PROJECT : GSM-PS (8410) MODULE : SMS_CP |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
905 | STATE : code ROUTINE : for_ll_unitready_ind |
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
906 +--------------------------------------------------------------------+
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
907
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
908 PURPOSE : Processing the signal LL_UNITREADY_IND (GSMS only).
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
909 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
910
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
911 GLOBAL void for_ll_unitready_ind (T_LL_UNITREADY_IND *unitready_ind)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
912 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
913 GET_INSTANCE_DATA;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
914
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
915 TRACE_FUNCTION ("ll_unitready_ind()");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
916
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
917 if ((unitready_ind->sapi NEQ LL_SAPI_7) || !sms_data) /*lint !e774 (!sms_data) never */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
918 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
919 TRACE_EVENT ("ll_unitready_ind(): SAPI not LL_SAPI_7 or no SMS instance");
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
920 PFREE (unitready_ind);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
921 return;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
922 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
923
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
924 if (SMS_LLC_FLOW(sms_data) EQ SMS_LLC_BUSY_WAITING)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
925 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
926 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
927 * find the message waiting for LLC
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
928 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
929 GET_MO_INSTANCE(sms_data);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
930
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
931 if (SMS_INST_GET_STATE (STATE_CP) EQ CP_GSMS_IDLE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
932 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
933 switch (SMS_CP_ACK_TYPE(sms_data))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
934 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
935 case SMS_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
936 cp_build_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
937 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
938
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
939 if (SMS_CP_UDL(sms_data) NEQ NULL)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
940 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
941 rl_data_ind (SMS_CP_UDL(sms_data));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
942 MFREE(SMS_CP_UDL(sms_data));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
943 SMS_CP_UDL(sms_data) = NULL;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
944 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
945 if (SMS_INST.r_flag)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
946 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
947 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
948 * terminate SMS instance
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
949 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
950 SMS_INST_SET_STATE (STATE_CP, CP_IDLE);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
951 SMS_INST.r_flag = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
952 FREE_SMS_INSTANCE (SMS_INST.ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
953 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
954 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
955
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
956 case SMS_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
957 cp_build_cp_error (SMS_CP_CAUSE(sms_data));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
958 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
959 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
960 * terminate SMS instance
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
961 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
962 SMS_INST_SET_STATE (STATE_CP, CP_IDLE);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
963 SMS_INST.r_flag = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
964 FREE_SMS_INSTANCE (SMS_INST.ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
965 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
966
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
967 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
968 SMS_LLC_FLOW(sms_data) = SMS_LLC_AVAILABLE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
969 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
970 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
971 SMS_CP_ACK_TYPE(sms_data) = SMS_CP_NONE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
972 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
973 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
974 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
975 SMS_LLC_FLOW(sms_data) = SMS_LLC_AVAILABLE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
976 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
977 if (SMS_LLC_FLOW(sms_data) EQ SMS_LLC_AVAILABLE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
978 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
979 GET_MT_INSTANCE(sms_data);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
980
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
981 switch (SMS_INST_GET_STATE (STATE_CP))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
982 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
983 case CP_GSMS_IDLE:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
984 case CP_GSMS_MT_WAIT_FOR_RP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
985 case CP_GSMS_MT_WAIT_FOR_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
986 switch (SMS_CP_ACK_TYPE(sms_data))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
987 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
988 case SMS_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
989 cp_build_cp_ack ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
990 if (SMS_INST_GET_STATE (STATE_CP) EQ CP_GSMS_MT_WAIT_FOR_CP_ACK)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
991 { /* stored CP-DATA will follow */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
992 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY_WAITING;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
993 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
994 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
995 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
996 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
997 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
998 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
999
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1000 case SMS_CP_ERROR:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1001 cp_build_cp_error (SMS_CP_CAUSE(sms_data));
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1002 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1003 /*
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1004 * terminate SMS instance
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1005 */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1006 SMS_INST_SET_STATE (STATE_CP, CP_IDLE);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1007 SMS_INST.r_flag = FALSE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1008 FREE_SMS_INSTANCE (SMS_INST.ti);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1009 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1010
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1011 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1012 if (SMS_INST_GET_STATE (STATE_CP) EQ CP_GSMS_MT_WAIT_FOR_CP_ACK
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1013 AND SMS_DATA_REQ(sms_data) NEQ 0)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1014 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1015 cp_send_data_gsms ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1016 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1017 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1018 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1019
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1020 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1021 SMS_CP_ACK_TYPE(sms_data) = SMS_CP_NONE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1022 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1023
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1024 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1025 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1026 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1027 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1028 if (SMS_LLC_FLOW(sms_data) EQ SMS_LLC_AVAILABLE)
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1029 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1030 GET_MO_INSTANCE(sms_data);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1031
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1032 switch (SMS_INST_GET_STATE (STATE_CP))
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1033 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1034 case CP_GSMS_MO_WAIT_FOR_CP_ACK:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1035 cp_send_data_gsms ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1036
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1037 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1038 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1039
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1040 case CP_GSMS_IDLE:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1041 cp_send_data_gsms ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1042 rl_proceed ();
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1043
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1044 SMS_INST.r_flag = TRUE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1045 SMS_INST_SET_STATE (STATE_CP, CP_GSMS_MO_WAIT_FOR_CP_ACK);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1046 SMS_LLC_FLOW(sms_data) = SMS_LLC_BUSY;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1047 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1048
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1049 default:
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1050 break;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1051 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1052 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1053 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1054 else
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1055 {
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1056 SMS_LLC_FLOW(sms_data) = SMS_LLC_AVAILABLE;
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1057 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1058 PFREE (unitready_ind);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1059
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1060 // cp_send_getunitdata_req (sms_data);
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1061 }
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1062
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1063 #endif /* GPRS */
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1064
27a4235405c6 src/g23m-gsm: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1065 #endif /* #ifndef SMS_FOR_C */