1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : line
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : This modul ...
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #include <stdio.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #include <stdlib.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #include <ctype.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #include "typedefs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #include "vsi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "pei.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "aci_mem.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "p_aci.val"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "line_edit.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "line_edit_intern.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "line_split_intern.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 GLOBAL char g_ledit_echoBuf[MAX_CMD_LEN+1];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 static T_LEDIT_SRC_MAINTAIN *rootSrc = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* state machine functions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 static T_LEDIT_RSLT ledit_idle (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 static T_LEDIT_RSLT ledit_prefix_a (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 static T_LEDIT_RSLT ledit_prefix_t (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 static T_LEDIT_RSLT ledit_repeat (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 static T_LEDIT_RSLT ledit_collect (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 static T_LEDIT_RSLT ledit_run_cmd (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 /* help functions */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 static T_LEDIT_SRC_MAINTAIN *ledit_getNewSrcMaintain (T_LEDIT_SRC_MAINTAIN *lesm);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 static T_LEDIT_SRC_MAINTAIN *ledit_getSrcM (UBYTE src_id, const UBYTE *chars, USHORT len);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 static T_LEDIT_SRC_MAINTAIN *ledit_getSrc (UBYTE src_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 static T_LEDIT_RSLT ledit_remove_src (T_LEDIT_SRC_MAINTAIN *lesm);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 static T_LEDIT_RSLT ledit_check_param (const UBYTE *chars, USHORT len);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 static T_LEDIT_RSLT ledit_clear_lineBuf(T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 static T_LEDIT_RSLT ledit_clear_all (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 static T_LEDIT_RSLT ledit_backup (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 static T_LEDIT_RSLT ledit_echo (T_LEDIT_INTERN *leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 static void ledit_echo_clear (void);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 | STATE : code ROUTINE : ledit_set_config |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 PURPOSE : - configure CR, LF, BS chars --> similiar to S3, S4, S5
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 - configure echo --> similiar to ATE echo cmds in command mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 - configure echo --> similiar to ATF echo cmds in data mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 T_LEDIT_RSLT ledit_set_config (UBYTE src_id, T_LEDIT line)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 T_LEDIT_SRC_MAINTAIN *lineSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 UBYTE *chars = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 USHORT len = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 * get the maintenance for this AT source or create a new one or die
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 if ((lineSrcM = ledit_getSrcM (src_id, chars, len)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 * some checks of T_LEDIT line
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 if (line.atE NEQ 0xFF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 if ((line.atE EQ TRUE) OR (line.atE EQ FALSE))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 lineSrcM->leditInt->lineHabit.atE = line.atE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 if (line.S3 NEQ 0xFF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 if (line.S3 < 128)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 lineSrcM->leditInt->lineHabit.S3 = line.S3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 if (line.S4 NEQ 0xFF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 if (line.S4 < 128)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 lineSrcM->leditInt->lineHabit.S4 = line.S4;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 if (line.S5 NEQ 0xFF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 if (line.S5 < 128)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 lineSrcM->leditInt->lineHabit.S5 = line.S5;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 if (line.smsEnd NEQ 0xFF)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 if (line.smsEnd < 128)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 lineSrcM->leditInt->lineHabit.smsEnd = line.smsEnd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 | STATE : code ROUTINE : ledit_ctrl |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 PURPOSE : - inform and control line edit
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 - in err will be error code and error message of line edit
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 T_LEDIT_RSLT ledit_ctrl (UBYTE src_id, T_LEDIT_CTRL ctrl, T_LEDIT_ERR **err)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 T_LEDIT_SRC_MAINTAIN *lineSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 TRACE_FUNCTION ("ledit_ctrl()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 * get the maintenance for this AT source or create a new one or die
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 if ((lineSrcM = ledit_getSrcM (src_id, NULL, 0)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 switch (ctrl)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 case LEDIT_CTRL_PROMPT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 ledit_echo_clear();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 strcpy (g_ledit_echoBuf,"> ");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 TRACE_EVENT("ledit_ctrl(): prompt for SMS editing");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 case LEDIT_CTRL_CRLF_PROMPT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 ledit_echo_clear();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 /* (IRA 13, 10, 62, 32) see 07.05 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 g_ledit_echoBuf[0] = 0x0D; /* lineSrcM->leditInt->lineHabit.S3; */ /* CR */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 g_ledit_echoBuf[1] = 0x0A; /* lineSrcM->leditInt->lineHabit.S4; */ /* LF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 g_ledit_echoBuf[2] = 0x3E; /* '>' */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 g_ledit_echoBuf[3] = 0x20; /* ' ' */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 g_ledit_echoBuf[4] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 TRACE_EVENT("ledit_ctrl(): default settings for line behaviour");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 case LEDIT_CTRL_CMPL:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 TRACE_EVENT("ledit_ctrl(): reset ledit internals");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 ledit_clear_all(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 case LEDIT_CTRL_REMOVE_SRC:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 ledit_remove_src(lineSrcM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 case LEDIT_CTRL_ERROR:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 if (err)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 *err = &lineSrcM->leditInt->err;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 case LEDIT_CTRL_MORE_CMDS: /* query whether there are more than one cmd */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 if (lineSrcM->leditInt->cmdGetIter < lineSrcM->leditInt->cmdIndex) /* check if cmdline already fully parsed */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 TRACE_EVENT("ledit_ctrl(): are there more commands ? Yes !");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 TRACE_EVENT("ledit_ctrl(): are there more commands ? No !");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 if (*err)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 (*err)->code = LEDIT_ERR_Unknown;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 (*err)->msg = ledit_err[LEDIT_ERR_Unknown].msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 | STATE : code ROUTINE : ledit_get_first |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 T_LEDIT_RSLT ledit_get_first (UBYTE src_id, T_LEDIT_ATCMD **cmd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 T_LEDIT_SRC_MAINTAIN *lesm = ledit_getSrc(src_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 TRACE_FUNCTION ("ledit_get_first()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 *cmd = NULL; /* init with no command available */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 if (lesm EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 if (lesm->leditInt->cmdm EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 *cmd = lesm->leditInt->cmdm->cmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 | STATE : code ROUTINE : ledit_get_next |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 T_LEDIT_RSLT ledit_get_next (UBYTE src_id, T_LEDIT_ATCMD **cmd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 T_LEDIT_ATCMD_M **curCmd = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 T_LEDIT_SRC_MAINTAIN *lesm = ledit_getSrc(src_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 TRACE_FUNCTION ("ledit_get_next()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 *cmd = NULL; /* init with no command available */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 if (lesm EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 ++(lesm->leditInt->cmdGetIter); /* 1 .. n */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 ledit_free_cmd(lesm->leditInt); /* clear all (=previous) commands */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 lesm->leditInt->cmdm = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 if (ledit_split(lesm->leditInt) EQ LEDIT_CMPL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 curCmd = &(lesm->leditInt->cmdm);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 if (*curCmd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 *cmd = (*curCmd)->cmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 return (LEDIT_FAIL); /* no further command available */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 | STATE : code ROUTINE : ledit_get_current |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 PURPOSE : - for text mode relevant functions, which have to be called twice
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 1. with the destination adress
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 2. with the text
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 T_LEDIT_RSLT ledit_get_current (UBYTE src_id, T_LEDIT_ATCMD **cmd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 T_LEDIT_SRC_MAINTAIN *lesm = ledit_getSrc(src_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 TRACE_FUNCTION ("ledit_get_current()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 *cmd = NULL; /* init with no command available */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 if (lesm EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 if (lesm->leditInt->cmdm EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 *cmd = lesm->leditInt->cmdm->cmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 | STATE : code ROUTINE : ledit_text |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 - switch from cmd mode to text mode
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 T_LEDIT_RSLT ledit_text (UBYTE src_id, const UBYTE *chars, USHORT len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 T_LEDIT_SRC_MAINTAIN *lineSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 char c = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 static unsigned int beginline; /* first character position in current line */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 TRACE_FUNCTION ("ledit_text()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 * get the maintenance for this AT source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 if ((lineSrcM = ledit_getSrcM (src_id, chars, len)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 ledit_echo_clear ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 * we use the cmdBuffer to store the text, so clean it up at first calling of this function
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 * in case of text sent in several chunks (this function is called again), concatenate them
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 * by leaving the copy iterator and the cmdBuffer untouched
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 * txtChunk is a binary flag
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 if (lineSrcM->leditInt->txtChunk EQ FALSE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 ledit_clear_lineBuf (lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 lineSrcM->leditInt->txtChunk = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 beginline=0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 while (lineSrcM->leditInt->srcBufIter < len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 c = lineSrcM->leditInt->srcBuffer[lineSrcM->leditInt->srcBufIter];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 if (lineSrcM->leditInt->copyIter EQ MAX_CMD_LEN) /* FIXME: Should be depending to csca arround 160 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 if (c EQ 0x1b)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 else if (c EQ lineSrcM->leditInt->lineHabit.S5)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 else if (c EQ lineSrcM->leditInt->lineHabit.smsEnd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 return (LEDIT_IGNORE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 if (c EQ 0x1b) /* ESC */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 if (lineSrcM->leditInt->smsBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 ACI_MFREE (lineSrcM->leditInt->smsBuffer); /* at first delete possible last text */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 lineSrcM->leditInt->smsBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 lineSrcM->leditInt->txtChunk = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 return (LEDIT_ESC); /* don't generate any error message */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 else if (c EQ lineSrcM->leditInt->lineHabit.smsEnd) /* CTRL-Z, for all non V25.ter conform rockers */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 lineSrcM->leditInt->origBuffer[lineSrcM->leditInt->origBufIter++] = '\0'; /* terminate text */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 lineSrcM->leditInt->lineBuffer[lineSrcM->leditInt->copyIter++] = '\0'; /* terminate text */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 if (lineSrcM->leditInt->smsBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 ACI_MFREE (lineSrcM->leditInt->smsBuffer); /* at first delete possible last text */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 ACI_MALLOC(lineSrcM->leditInt->smsBuffer, ((lineSrcM->leditInt->copyIter+1) * sizeof(char)));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 if (lineSrcM->leditInt->smsBuffer EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 strcpy (lineSrcM->leditInt->smsBuffer, lineSrcM->leditInt->lineBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 lineSrcM->leditInt->txtChunk = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 else if (c EQ lineSrcM->leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 lineSrcM->leditInt->origBuffer[lineSrcM->leditInt->origBufIter++] = 0x0a; /* add newline into SMS */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 lineSrcM->leditInt->lineBuffer[lineSrcM->leditInt->copyIter++] = 0x0a; /* add newline into SMS */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 * split text, so emit promp "> " again
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 g_ledit_echoBuf[lineSrcM->leditInt->srcBufIter] = 0x0d; /* lineSrcM->leditInt->lineHabit.S3; */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 g_ledit_echoBuf[lineSrcM->leditInt->srcBufIter+1] = 0x0a; /* lineSrcM->leditInt->lineHabit.S4; */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 g_ledit_echoBuf[lineSrcM->leditInt->srcBufIter+2] = 0x3e; /* '>' */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 g_ledit_echoBuf[lineSrcM->leditInt->srcBufIter+3] = 0x20; /* ' ' */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 beginline = lineSrcM->leditInt->copyIter; /* reset line */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 else if (c EQ lineSrcM->leditInt->lineHabit.S4)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 ; /* ignore Linefeeds */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 else if (c EQ lineSrcM->leditInt->lineHabit.S5) /* backspace */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 * delete last character in cmd buffer by setting iterator one step back
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 if (lineSrcM->leditInt->copyIter > beginline)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 --(lineSrcM->leditInt->origBufIter);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 --(lineSrcM->leditInt->copyIter);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 g_ledit_echoBuf[lineSrcM->leditInt->srcBufIter] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 return (LEDIT_COLLECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 return (LEDIT_IGNORE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 lineSrcM->leditInt->origBuffer[lineSrcM->leditInt->origBufIter++] = c; /* copy character to cmd buffer */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 lineSrcM->leditInt->lineBuffer[lineSrcM->leditInt->copyIter++] = c; /* copy character to cmd buffer */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 g_ledit_echoBuf[lineSrcM->leditInt->srcBufIter] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 ++(lineSrcM->leditInt->srcBufIter);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 return (LEDIT_COLLECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 | STATE : code ROUTINE : ledit_get_text |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 T_LEDIT_RSLT ledit_get_text (UBYTE src_id, char **txt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 T_LEDIT_SRC_MAINTAIN *lineSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 * get the maintenance for this AT source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 if ((lineSrcM = ledit_getSrcM (src_id, NULL, 0)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 if (*txt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 ACI_MFREE (*txt); /* free the cmd parameter part */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 ACI_MALLOC (*txt, (strlen(lineSrcM->leditInt->smsBuffer)+1) * sizeof(char));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 if (*txt EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 * the complementary ACI_MFREE takes place in ledit_ctrl (src_params->src_id,LEDIT_CTRL_CMPL, NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 * which has to called for success or fail of a AT cmd line. grep in ati_cmd.c and ati_ret.c
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 if (lineSrcM->leditInt->smsBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 strcpy (*txt, lineSrcM->leditInt->smsBuffer); /* the parameter of the AT cmd is now the SMS text */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 **txt = '\0'; /* in case of 0 byte text */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 | STATE : code ROUTINE : ledit_backup |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 PURPOSE : - for possible next A/ back up the current cmd line
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 NOW: we shift the lineBuffer to execBuffer for execution!!!
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 static T_LEDIT_RSLT ledit_backup (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 if (leditInt->execBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 ACI_MFREE (leditInt->execBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 leditInt->execBuffer = leditInt->lineBuffer;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 leditInt->lineBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545 | STATE : code ROUTINE : ledit_echo_clear |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 static void ledit_echo_clear (void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 memset(g_ledit_echoBuf, '\0', sizeof(g_ledit_echoBuf));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 | STATE : code ROUTINE : ledit_echo |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 PURPOSE : - for echoing put the current chars into the g_ledit_echoBuffer
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 but attention:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 all chars before the first [aA] are ignored
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 the same between [aA] and [tT]
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 Example : "murx blah fiT + cFun = 1" will be echoed as
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 - ------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 "aT + cFun = 1"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 static T_LEDIT_RSLT ledit_echo (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 int i = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 while (g_ledit_echoBuf[i]) /* skip possible [aAtT] */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 ++i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 while (leditInt->srcBufIterE < leditInt->len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 g_ledit_echoBuf[i] = leditInt->srcBuffer[leditInt->srcBufIterE];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 if (leditInt->srcBuffer[leditInt->srcBufIterE] EQ leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 ++i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 ++(leditInt->srcBufIterE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 ++i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 g_ledit_echoBuf[i] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 leditInt->srcBufIterE = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 | STATE : code ROUTINE : ledit_remove_src |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 static T_LEDIT_RSLT ledit_remove_src (T_LEDIT_SRC_MAINTAIN *lesm)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 T_LEDIT_SRC_MAINTAIN *ledSrcM = rootSrc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 T_LEDIT_SRC_MAINTAIN *tmp = rootSrc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 if (rootSrc EQ lesm)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 tmp = rootSrc->next;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 ledit_clear_all (rootSrc->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 ACI_MFREE (rootSrc->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 rootSrc->leditInt = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618 rootSrc = tmp;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 while(ledSrcM)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 if (ledSrcM EQ lesm)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627 tmp->next = ledSrcM->next;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 ledit_clear_all (ledSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 ACI_MFREE (ledSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 ACI_MFREE (ledSrcM);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 ledSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 tmp = ledSrcM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 ledSrcM = ledSrcM->next;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 | STATE : code ROUTINE : ledit_getNewSrcMaintain |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 static T_LEDIT_SRC_MAINTAIN *ledit_getNewSrcMaintain (T_LEDIT_SRC_MAINTAIN *lesm)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 static
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 T_LEDIT ledit_initial = {13, 10, 8, 1, 0x1a};
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 /* S3 S4 S5 E, smsEnd */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 ACI_MALLOC(lesm, (sizeof (T_LEDIT_SRC_MAINTAIN)));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 if (lesm EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 return NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 lesm->next = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 ACI_MALLOC(lesm->leditInt,(sizeof (T_LEDIT_INTERN)));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 if (lesm->leditInt EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 ACI_MFREE (lesm);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 lesm = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 return NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 memset(lesm->leditInt, '\0', sizeof (T_LEDIT_INTERN));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 lesm->leditInt->copyIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673 lesm->leditInt->srcBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 lesm->leditInt->srcBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 lesm->leditInt->smsBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 lesm->leditInt->lineBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679 lesm->leditInt->lineBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 lesm->leditInt->origBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 lesm->leditInt->origBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 lesm->leditInt->execBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 lesm->leditInt->execBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 lesm->leditInt->state = ledit_idle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 lesm->leditInt->lineHabit = ledit_initial;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689 lesm->leditInt->err.code = LEDIT_ERR_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690 lesm->leditInt->err.msg = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691 lesm->leditInt->isStr = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692 lesm->leditInt->cmdGetIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693 lesm->leditInt->cmdm = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 ledit_clear_all(lesm->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 return lesm;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 | STATE : code ROUTINE : ledit_getSrcM |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 static T_LEDIT_SRC_MAINTAIN *ledit_getSrcM (UBYTE src_id, const UBYTE *chars, USHORT len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 static BOOL firstCall = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 T_LEDIT_SRC_MAINTAIN *ledSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 T_LEDIT_SRC_MAINTAIN *tmp = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 * get the very first AT source maintenance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 if (firstCall)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
719 firstCall = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
720 if ((rootSrc = ledit_getNewSrcMaintain (rootSrc)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
721 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
722 return NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
723 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
724 rootSrc->leditInt->src_id = src_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
725 rootSrc->leditInt->srcBufIterE = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
726 rootSrc->leditInt->srcBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
727 rootSrc->leditInt->srcBuffer = chars;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
728 rootSrc->leditInt->len = len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
729 return rootSrc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
730 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
731 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
732 * do we have a maintenance for this src_id ?
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
733 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
734 ledSrcM = rootSrc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
735 tmp = rootSrc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
736 while(ledSrcM AND ledSrcM->leditInt->src_id NEQ src_id)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
737 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
738 tmp = ledSrcM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
739 ledSrcM = ledSrcM->next;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
740 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
741 if (ledSrcM EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
742 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
743 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
744 * No, this AT source called line edit for the very first time
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
745 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
746 if ((ledSrcM = ledit_getNewSrcMaintain (ledSrcM)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
747 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
748 return NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
749 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
750 tmp->next = ledSrcM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
751 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
752
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
753 ledSrcM->leditInt->src_id = src_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
754 ledSrcM->leditInt->srcBufIterE = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
755 ledSrcM->leditInt->srcBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
756 ledSrcM->leditInt->srcBuffer = chars;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
757 ledSrcM->leditInt->len = len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
758 ledSrcM->leditInt->err.msg = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
759 ledSrcM->leditInt->err.code = LEDIT_ERR_NONE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
760
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
761 return ledSrcM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
762 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
763
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
764 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
765 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
766 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
767 | STATE : code ROUTINE : ledit_getSrc |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
768 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
769
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
770 PURPOSE : get an existing source maintenance
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
771 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
772
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
773 static T_LEDIT_SRC_MAINTAIN *ledit_getSrc (UBYTE src_id)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
774 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
775 T_LEDIT_SRC_MAINTAIN *ledSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
776
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
777 ledSrcM = rootSrc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
778
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
779 while(ledSrcM AND ledSrcM->leditInt->src_id NEQ src_id)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
780 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
781 ledSrcM = ledSrcM->next;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
782 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
783 if (ledSrcM EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
784 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
785 return NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
786 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
787 return ledSrcM;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
788 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
789
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
790
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
791 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
792 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
793 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
794 | STATE : code ROUTINE : ledit_check_param |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
795 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
796
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
797 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
798 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
799
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
800 static T_LEDIT_RSLT ledit_check_param (const UBYTE *chars, USHORT len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
801 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
802 if (len EQ 0
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
803 OR chars EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
804 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
805 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
806 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
807 if (len > MAX_CMD_LEN)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
808 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
809 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
810 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
811 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
812 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
813
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
814
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
815 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
816 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
817 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
818 | STATE : code ROUTINE : ledit_cmd |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
819 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
820
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
821 PURPOSE : - receive char, chars or complete AT-string sent by UART, bluetooth, SAT, ...
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
822 - run the state machine to build up valid AT commands
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
823 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
824
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
825 T_LEDIT_RSLT ledit_cmd (UBYTE src_id, const UBYTE *chars, USHORT len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
826 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
827 T_LEDIT_RSLT rv = LEDIT_COLLECT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
828 T_LEDIT_SRC_MAINTAIN *lineSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
829
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
830 TRACE_FUNCTION ("ledit_cmd()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
831
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
832 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
833 * get the maintenance for this AT source or create a new one or die
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
834 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
835 if ((lineSrcM = ledit_getSrcM (src_id, chars, len)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
836 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
837 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
838 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
839 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
840 * at first check, whether the last cmd line is already processed by ATI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
841 * ATI will call then ledit_ctrl(src_id,LEDIT_CTRL_CMPL,NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
842 * which reset the state machine
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
843 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
844 if (lineSrcM->leditInt->state EQ ledit_run_cmd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
845 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
846 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
847 * ATI did not confirmed the last cmd line
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
848 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
849 lineSrcM->leditInt->err.code = LEDIT_ERR_LastCmdPending;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
850 lineSrcM->leditInt->err.msg = ledit_err[LEDIT_ERR_LastCmdPending].msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
851 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
852 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
853
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
854 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
855 * the caller of ledit_cmd is responsible to echoing the passed chars back
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
856 * so clear at first the old chars from the last call of ledit_cmd
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
857 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
858 ledit_echo_clear();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
859
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
860 if (ledit_check_param(chars, len) EQ LEDIT_FAIL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
861 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
862 lineSrcM->leditInt->err.code = LEDIT_ERR_NoValidCommand;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
863 lineSrcM->leditInt->err.msg = ledit_err[LEDIT_ERR_NoValidCommand].msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
864 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
865 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
866 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
867 * the chars of the raw source cmd line can be parsed now
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
868 * call state machine and check the return value
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
869 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
870 while ((lineSrcM->leditInt->srcBufIter < len) AND ((rv EQ LEDIT_COLLECT) OR (rv EQ LEDIT_IGNORE)))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
871 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
872 rv = (*lineSrcM->leditInt->state)(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
873 if (rv EQ LEDIT_FAIL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
874 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
875 ledit_clear_all(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
876 if (lineSrcM->leditInt->lineHabit.atE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
877 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
878 ledit_echo(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
879 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
880 return rv;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
881 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
882 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
883 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
884 * the chars [aAtT] have already been put into g_ledit_echoBuf by these states
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
885 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
886 if ((lineSrcM->leditInt->state NEQ ledit_prefix_a)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
887 AND(lineSrcM->leditInt->state NEQ ledit_prefix_t))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
888 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
889 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
890 * but then, put all chars after [tT] into g_ledit_echoBuf
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
891 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
892 if (lineSrcM->leditInt->lineHabit.atE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
893 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
894 ledit_echo(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
895 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
896 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
897 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
898 * if ready to execute, state machine will call ledit_run_cmd()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
899 * or in case of A/ ledit_repeat() first and then ledit_run_cmd()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
900 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
901 if (lineSrcM->leditInt->state EQ ledit_repeat)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
902 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
903 rv = (*lineSrcM->leditInt->state)(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
904 if (rv EQ LEDIT_FAIL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
905 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
906 ledit_clear_all(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
907 TRACE_EVENT ("ledit_cmd(): ledit_repeat FAILED");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
908 return rv;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
909 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
910 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
911
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
912 if (lineSrcM->leditInt->state EQ ledit_run_cmd)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
913 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
914 rv = (*lineSrcM->leditInt->state)(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
915 if (rv EQ LEDIT_FAIL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
916 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
917 ledit_clear_all(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
918 if (lineSrcM->leditInt->lineHabit.atE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
919 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
920 ledit_echo(lineSrcM->leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
921 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
922 ledit_echo_clear();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
923 TRACE_EVENT ("ledit_cmd(): ledit_run_cmd FAILED");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
924 return rv;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
925 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
926 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
927 TRACE_EVENT_P1 ("ledit_cmd(): returns with %d", rv);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
928 return rv;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
929 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
930
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
931 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
932 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
933 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
934 | STATE : code ROUTINE : ledit_idle |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
935 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
936
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
937 PURPOSE : - state 1 of command line parser
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
938 - start parsing of AT command line with received [aA]
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
939 - is final state with received '\0'
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
940 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
941 static T_LEDIT_RSLT ledit_idle (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
942 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
943 char c = leditInt->srcBuffer[leditInt->srcBufIter++];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
944 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
945 TRACE_FUNCTION ("ledit_idle()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
946 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
947 if(c EQ leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
948 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
949 return (LEDIT_OK); /* simple <CR> will emit an OK */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
950 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
951
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
952 switch (c)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
953 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
954 case 'a':
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
955 case 'A':
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
956 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
957 if (leditInt->lineHabit.atE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
958 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
959 g_ledit_echoBuf[0] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
960 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
961 leditInt->state = ledit_prefix_a;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
962 return (LEDIT_COLLECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
963 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
964 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
965 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
966 TRACE_EVENT_P1("ledit_idle(): ignored character is %d", c);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
967 return (LEDIT_IGNORE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
968 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
969 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
970 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
971 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
972 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
973 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
974 | STATE : code ROUTINE : ledit_prefix_a |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
975 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
976
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
977 PURPOSE : - state 2 of command line parser
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
978
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
979 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
980
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
981 static void ledit_prefix_help (T_LEDIT_INTERN *leditInt, char c)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
982 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
983 if (leditInt->lineHabit.atE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
984 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
985 if ((g_ledit_echoBuf[0] EQ 'a') OR (g_ledit_echoBuf[0] EQ 'A'))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
986 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
987 g_ledit_echoBuf[1] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
988 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
989 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
990 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
991 g_ledit_echoBuf[0] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
992 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
993 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
994 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
995
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
996 static T_LEDIT_RSLT ledit_prefix_a (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
997 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
998 char c = leditInt->srcBuffer[leditInt->srcBufIter++];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
999 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1000 TRACE_FUNCTION ("ledit_prefix_a()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1001 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1002 if(c EQ leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1003 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1004 return (LEDIT_FAIL); /* A<CR> (or what has been set for S3) makes no sense */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1005 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1006
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1007 switch (c)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1008 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1009 case SLASH: /* '/' will not be echoed */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1010 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1011 leditInt->state = ledit_repeat;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1012 return (LEDIT_EXCT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1013 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1014 case 't':
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1015 case 'T':
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1016 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1017 ledit_prefix_help (leditInt, c);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1018 leditInt->srcBufIterE = leditInt->srcBufIter;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1019 leditInt->state = ledit_prefix_t;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1020 return (LEDIT_COLLECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1021 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1022 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1023 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1024 if(c EQ leditInt->lineHabit.S5) /* backspace */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1025 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1026 ledit_prefix_help (leditInt, c);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1027 leditInt->state = ledit_idle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1028 return (LEDIT_COLLECT); /* A<S5> go back */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1029 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1030 return (LEDIT_IGNORE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1031 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1032 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1033 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1034 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1035 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1036 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1037 | STATE : code ROUTINE : ledit_prefix_t |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1038 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1039
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1040 PURPOSE : - state 3 of command line parser
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1041
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1042 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1043 static T_LEDIT_RSLT ledit_prefix_t (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1044 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1045 char c = leditInt->srcBuffer[leditInt->srcBufIter++];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1046 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1047 TRACE_FUNCTION ("ledit_prefix_t()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1048 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1049 if(c EQ leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1050 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1051
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1052 if (leditInt->lineHabit.atE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1053 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1054 g_ledit_echoBuf[2] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1055 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1056 return (LEDIT_OK); /* AT<CR> will emit an OK */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1057 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1058 if(c EQ leditInt->lineHabit.S5) /* backspace */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1059 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1060 ledit_prefix_help (leditInt, c);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1061 leditInt->state = ledit_prefix_a;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1062 return (LEDIT_COLLECT); /* AT<S5> go back */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1063 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1064 leditInt->srcBufIter--; /* collect needs the first character after "AT", as well */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1065 leditInt->state = ledit_collect;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1066 return (LEDIT_COLLECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1067 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1068 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1069 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1070 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1071 | STATE : code ROUTINE : ledit_collect |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1072 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1073
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1074 PURPOSE : - state 4 of command line parser
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1075
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1076 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1077 static T_LEDIT_RSLT ledit_repeat (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1078 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1079 TRACE_FUNCTION ("ledit_repeat()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1080
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1081 ++(leditInt->srcBufIter); /* to reach the end of cmd line */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1082
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1083 if (leditInt->execBuffer AND leditInt->execBuffer[0]) /* is there anything to repeat? */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1084 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1085 if (leditInt->lineBuffer) /* discard current "A/" */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1086 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1087 ACI_MFREE(leditInt->lineBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1088 leditInt->lineBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1089 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1090
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1091 if (leditInt->origBuffer) /* discard current "A/" */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1092 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1093 ACI_MFREE(leditInt->origBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1094 leditInt->origBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1095 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1096
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1097 ledit_echo_clear ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1098 leditInt->state = ledit_run_cmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1099 return (LEDIT_EXCT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1100 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1101 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1102 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1103 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1104 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1105 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1106 | STATE : code ROUTINE : ledit_collect |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1107 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1108
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1109 PURPOSE : - state 4 of command line parser
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1110
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1111 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1112 static T_LEDIT_RSLT ledit_collect (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1113 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1114 int i = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1115 char c = leditInt->srcBuffer[leditInt->srcBufIter++];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1116 USHORT len = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1117 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1118 TRACE_FUNCTION ("ledit_collect()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1119 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1120 if (leditInt->lineBuffer EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1121 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1122 ledit_clear_lineBuf(leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1123 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1124
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1125 while (i < leditInt->len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1126 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1127 if (leditInt->copyIter+2 EQ MAX_CMD_LEN) /* some precheck, +2 for "AT" */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1128 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1129 if (c EQ leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1130 ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1131 else if (c EQ leditInt->lineHabit.S5)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1132 ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1133 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1134 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1135 ledit_prefix_help(leditInt, '\a');
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1136 return (LEDIT_IGNORE); /* loop on all other commands if we would exceed the string */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1137 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1138 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1139
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1140 if(c EQ leditInt->lineHabit.S3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1141 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1142 leditInt->origBuffer[leditInt->origBufIter] = '\0'; /* terminate cmd string */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1143 leditInt->lineBuffer[leditInt->copyIter] = '\0'; /* terminate cmd string */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1144 if (leditInt->isStr NEQ FALSE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1145 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1146 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1147 * a string parameter did not end with "
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1148 * e.g: at+cpbw=1,"+491721212",145,"D2 Kundenbetreuung <--- missing closing "
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1149 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1150 leditInt->err.code = LEDIT_ERR_NoValidCommand;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1151 leditInt->err.msg = ledit_err[LEDIT_ERR_NoValidCommand].msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1152 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1153 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1154 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1155 * for possibly repeating backup the current cmd line
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1156 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1157 ledit_backup(leditInt);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1158 leditInt->state = ledit_run_cmd;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1159 leditInt->origBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1160 leditInt->copyIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1161 return (LEDIT_EXCT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1162 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1163 else if(c EQ leditInt->lineHabit.S4)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1164 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1165 ; /* ignore LF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1166 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1167 else if(c EQ leditInt->lineHabit.S5)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1168 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1169 len = leditInt->origBufIter;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1170 if ( leditInt->origBuffer[--(len)] EQ '"' ) /* Checks if the character to be deleted is '"' */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1171 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1172 leditInt->isStr = !(leditInt->isStr); /* Toggles the variable "isStr" when '"" got deleted */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1173 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1174 if (leditInt->copyIter > 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1175 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1176 --(leditInt->copyIter); /* delete last character in cmd buffer by setting iterator i one step back */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1177 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1178 if (leditInt->origBufIter > 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1179 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1180 --(leditInt->origBufIter); /* delete last character in cmd buffer by setting iterator i one step back */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1181 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1182 if (leditInt->copyIter EQ 0) /* reached first character after "AT" */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1183 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1184 leditInt->state = ledit_prefix_t; /* Fall back into state 't' */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1185 ledit_prefix_help (leditInt, c);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1186 leditInt->origBuffer[leditInt->origBufIter] = '\0'; /* Terminate Command !!! ACI-FIX-12036 AV2 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1187 leditInt->lineBuffer[leditInt->copyIter] = '\0'; /* Terminate Command !!! ACI-FIX-12036 AV2 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1188 return (LEDIT_COLLECT); /* AT<S5> go back */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1189 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1190 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1191 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1192 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1193 switch (c)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1194 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1195 case WS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1196 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1197 if (leditInt->isStr) /* don't modify anything within string e.g.: "BlAh 1234" */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1198 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1199 leditInt->origBuffer[leditInt->origBufIter++] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1200 leditInt->lineBuffer[leditInt->copyIter++] = c;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1201 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1202 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1203 break; /* just to eat up white space */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1204 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1205 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1206 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1207 if ((c > 0x20) AND (!(c & 0x80))) /* only printable chars with 7 bits */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1208 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1209 if (c EQ '"')
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1210 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1211 leditInt->isStr = !(leditInt->isStr);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1212 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1213 leditInt->origBuffer[leditInt->origBufIter++] = c; /* copy character to cmd buffer */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1214 if (!(leditInt->isStr) AND c >= 'a' AND c <= 'z')
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1215 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1216 c -= 0x20; /* to upper */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1217 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1218 leditInt->lineBuffer[leditInt->copyIter++] = c; /* copy character to cmd buffer */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1219 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1220 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1221 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1222 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1223 c = leditInt->srcBuffer[leditInt->srcBufIter++];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1224 ++i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1225 if (leditInt->srcBufIter > leditInt->len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1226 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1227 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1228 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1229 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1230 leditInt->origBuffer[leditInt->origBufIter] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1231 leditInt->lineBuffer[leditInt->copyIter] = '\0'; /* Terminate Command !!! ACI-FIX-12036 AV2 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1232
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1233 return (LEDIT_COLLECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1234 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1235
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1236 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1237 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1238 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1239 | STATE : code ROUTINE : ledit_run_cmd |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1240 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1241
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1242 PURPOSE : - state 5 of command line parser
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1243
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1244 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1245 static T_LEDIT_RSLT ledit_run_cmd (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1246 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1247 TRACE_FUNCTION("ledit_run_cmd()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1248 leditInt->cmdIndex = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1249 leditInt->cmdGetIter = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1250 ledit_free_cmd(leditInt); /* clear all (=previous) commands */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1251 leditInt->cmdm = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1252 return (ledit_split (leditInt));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1253 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1254
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1255 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1256 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1257 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1258 | STATE : code ROUTINE : ledit_clear_cmdBuf |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1259 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1260
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1261 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1262 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1263 static T_LEDIT_RSLT ledit_clear_lineBuf (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1264 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1265 if (leditInt->lineBuffer EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1266 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1267 ACI_MALLOC(leditInt->lineBuffer,((MAX_CMD_LEN+1) * sizeof (char)));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1268 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1269 if (leditInt->lineBuffer EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1270 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1271
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1272 memset(leditInt->lineBuffer, '\0',(MAX_CMD_LEN+1) * sizeof (char));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1273 if (leditInt->origBuffer EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1274 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1275 ACI_MALLOC(leditInt->origBuffer,((MAX_CMD_LEN+1) * sizeof (char)));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1276 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1277 if (leditInt->origBuffer EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1278 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1279
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1280 memset(leditInt->origBuffer, '\0',(MAX_CMD_LEN+1) * sizeof (char));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1281 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1282 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1283
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1284 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1285 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1286 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1287 | STATE : code ROUTINE : ledit_clear_all |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1288 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1289
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1290 PURPOSE : -
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1291 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1292 static T_LEDIT_RSLT ledit_clear_all (T_LEDIT_INTERN *leditInt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1293 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1294 ledit_free_cmd(leditInt); /* maintained by ledit_split */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1295 leditInt->cmdm = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1296
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1297 if (leditInt->smsBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1298 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1299 ACI_MFREE (leditInt->smsBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1300 leditInt->smsBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1301 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1302
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1303 if (leditInt->lineBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1304 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1305 ACI_MFREE (leditInt->lineBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1306 leditInt->lineBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1307 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1308 if (leditInt->origBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1309 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1310 ACI_MFREE (leditInt->origBuffer);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1311 leditInt->origBuffer = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1312 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1313
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1314 leditInt->txtChunk = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1315 leditInt->copyIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1316 leditInt->origBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1317 leditInt->lineBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1318 leditInt->execBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1319 leditInt->srcBufIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1320 leditInt->cmdGetIter = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1321 leditInt->cmdIndex = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1322 leditInt->isStr = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1323 leditInt->state = ledit_idle; /* reset to default state */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1324 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1325 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1326
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1327
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1328 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1329 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1330 | PROJECT : GSM-F&D (8411) MODULE : LINE_EDIT_LIB |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1331 | STATE : code ROUTINE : ledit_trace_line |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1332 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1333
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1334 PURPOSE : prepare a text buffer for tracing of an AT cmd line.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1335 a cmd line is ready for tracing after receiving of the termination
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1336 character<S3> and removing of all non necessary characters,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1337 e.g.: white spaces and the the characters in the mAlberTO phenomenon
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1338 " m a lb er t o<S3>" is interpreted as ATO !
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1339 the characters can come in as single chars, chunk of chars or as complete line.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1340 the actual trace takes place with trace_cmd_line()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1341
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1342 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1343
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1344 T_LEDIT_RSLT ledit_trace_line (UBYTE src_id, char *txt)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1345 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1346 T_LEDIT_SRC_MAINTAIN *lineSrcM = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1347 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1348 * get the maintenance for this AT source
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1349 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1350 if ((lineSrcM = ledit_getSrcM (src_id, NULL, 0)) EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1351 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1352 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1353 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1354
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1355 if (lineSrcM->leditInt->execBuffer)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1356 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1357 strncpy (txt, lineSrcM->leditInt->execBuffer, 77); /* limit to 77 chars, 2 are used for "AT" */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1358 txt[77] = '\0';
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1359 return (LEDIT_CMPL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1360 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1361 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1362 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1363 return (LEDIT_FAIL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1364 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1365 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1366
|