📄 tc.lst
字号:
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 1
C51 COMPILER V8.00, COMPILATION OF MODULE TC
OBJECT MODULE PLACED IN .\out_sst89e564\tc.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\tc.c LARGE BROWSE ORDER NOAREGS DEBUG OBJECTEXTEND PRINT(.\tc.lst) O
-BJECT(.\out_sst89e564\tc.obj)
line level source
1 /****************************************
2 * tc.c *
3 * excute touched card command *
4 * designed by liulixun *
5 * last update: 05-01-2007 *
6 ****************************************/
7 #include "includes.h"
8
9 static bit fWaitCmd = 0; // flag of waiting for host command
10 static unsigned int WaitCmdTime; // time before a host command come
11
12 void TcInit(void)
13 {
14 1 int ch;
15 1
16 1 ch = ParaRead(PARA_SWITCHS);
17 1
18 1 if(ch >= 0)
19 1 {
20 2 fNotice = ch & F_NOTICE;
21 2 fStopOnACK = ch & F_SNOA;
22 2 }
23 1 else
24 1 {
25 2 fNotice = 1;
26 2 fStopOnACK = 1;
27 2 }
28 1
29 1 // IC card
30 1 IccInit();
31 1 IccSetTimeout(1200);
32 1 }
33
34 // ticc command
35 unsigned int TcCommand(unsigned char *cmd, unsigned int len)
36 {
37 1 int i;
38 1 unsigned char ci;
39 1
40 1 // todo: for every command, sync card should be thinking
41 1
42 1 IccSelect(cmd[0]);
43 1
44 1 if(cmd[0] == IC_USER)
45 1 fWaitCmd = 0;
46 1
47 1 if(cmd[1] == CMD_RESET)
48 1 {
49 2 if(len != 2)
50 2 {
51 3 cmd[0] = ERRORCMDLEN;
52 3 return 1;
53 3 }
54 2 else
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 2
55 2 {
56 3 // send reset infomation to host
57 3 i = IccOpen(cmd+1);
58 3 if(i > 0)
59 3 {
60 4 cmd[0] = SUCCESS;
61 4 return i+1;
62 4 }
63 3 else
64 3 {
65 4 cmd[0] = FAIL;
66 4 return 1;
67 4 }
68 3 }
69 2 }
70 1 else if(cmd[1] == CMD_PACKEDCMD)
71 1 {
72 2 if(len < 6)
73 2 {
74 3 cmd[0] = ERRORCMDLEN;
75 3 return 1;
76 3 }
77 2 else
78 2 {
79 3 i = IccSendCmd(cmd+2, len-2, cmd+1);
80 3
81 3 if(i <= 0)
82 3 {
83 4 // command failed
84 4 cmd[0] = FAIL;
85 4 cmd[1] = (char)i;
86 4 return 2;
87 4 }
88 3 else
89 3 {
90 4 // command success, send command excute result
91 4 // pdu: response_data*n + response_sw*2
92 4 cmd[0] = SUCCESS;
93 4 return i+1;
94 4 }
95 3 }
96 2 }
97 1 else if(cmd[0] == IC_USER)
98 1 {
99 2 switch(cmd[1])
100 2 {
101 3 case CMD_SYNC_RESET:
102 3 if(len != 2)
103 3 {
104 4 cmd[0] = ERRORCMDLEN;
105 4 return 1;
106 4 }
107 3 i = IccSyncReset(cmd+1);
108 3 if(i <= 0)
109 3 {
110 4 cmd[0] = FAIL;
111 4 cmd[1] = i;
112 4 return 2;
113 4 }
114 3 cmd[0] = SUCCESS;
115 3 return i+1;
116 3
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 3
117 3 case CMD_SYNC_START:
118 3 if(len != 2)
119 3 {
120 4 cmd[0] = ERRORCMDLEN;
121 4 return 1;
122 4 }
123 3 IccSyncStart();
124 3 cmd[0] = SUCCESS;
125 3 return 1;
126 3
127 3 case CMD_SYNC_STOP:
128 3 if(len != 2)
129 3 {
130 4 cmd[0] = ERRORCMDLEN;
131 4 return 1;
132 4 }
133 3 IccSyncStop();
134 3 cmd[0] = SUCCESS;
135 3 return 1;
136 3
137 3 case CMD_SYNC_PUTCHAR_ACK:
138 3 if(len != 3)
139 3 {
140 4 cmd[0] = ERRORCMDLEN;
141 4 return 1;
142 4 }
143 3 i = IccSyncPutCharWaitACK(cmd[2]);
144 3 if(i == 0)
145 3 {
146 4 cmd[0] = SUCCESS;
147 4 return 1;
148 4 }
149 3 else
150 3 {
151 4 cmd[0] = FAIL;
152 4 return 1;
153 4 }
154 3 break;
155 3
156 3 case CMD_SYNC_GETCHAR_ACK:
157 3 if(len != 3)
158 3 {
159 4 cmd[0] = ERRORCMDLEN;
160 4 return 1;
161 4 }
162 3 cmd[1] = IccSyncGetCharSendACK(cmd[2]?0:1);
163 3 cmd[0] = SUCCESS;
164 3 return 2;
165 3
166 3 case CMD_SYNC_WR_ACK:
167 3 if(len > 13)
168 3 {
169 4 cmd[0] = ERRORCMDLEN;
170 4 return 1;
171 4 }
172 3 ci = cmd[len-1];
173 3 if(IccSyncWRWithACK(cmd+2, len-3, cmd+1, ci))
174 3 {
175 4 cmd[0] = SUCCESS;
176 4 return ci+1;
177 4 }
178 3 else
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 4
179 3 {
180 4 cmd[0] = FAIL;
181 4 cmd[1] = 0; // error ?
182 4 return 2;
183 4 }
184 3
185 3 case CMD_153_WR_EEPROM:
186 3 if(len > 68)
187 3 {
188 4 cmd[0] = ERRORCMDLEN;
189 4 return 1;
190 4 }
191 3 i = At153WriteEE(cmd[2], cmd[3], cmd+4, len-4);
192 3 if(i >= 0)
193 3 {
194 4 cmd[0] = SUCCESS;
195 4 cmd[1] = (unsigned char)i;
196 4 return 2;
197 4 }
198 3 else
199 3 {
200 4 cmd[0] = FAIL;
201 4 cmd[1] = (char)i; // error ?
202 4 return 2;
203 4 }
204 3
205 3 case CMD_153_RD_EEPROM:
206 3 if(len != 5)
207 3 {
208 4 cmd[0] = ERRORCMDLEN;
209 4 return 1;
210 4 }
211 3 i = At153ReadEE(cmd[2], cmd[3], cmd+1, cmd[4]);
212 3 if(i >= 0)
213 3 {
214 4 cmd[0] = SUCCESS;
215 4 return i+1;
216 4 }
217 3 else
218 3 {
219 4 cmd[0] = FAIL;
220 4 cmd[1] = (char)i; // error ?
221 4 return 2;
222 4 }
223 3
224 3 case CMD_153_VRF_PSWD:
225 3 if(len != 6)
226 3 {
227 4 cmd[0] = ERRORCMDLEN;
228 4 return 1;
229 4 }
230 3 i = At153VerifyPasswd(cmd[2], cmd+3);
231 3 if(i >= 0)
232 3 {
233 4 cmd[0] = SUCCESS;
234 4 cmd[1] = (unsigned char)i;
235 4 return 2;
236 4 }
237 3 else
238 3 {
239 4 cmd[0] = FAIL;
240 4 cmd[1] = (char)i;
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 5
241 4 return 2;
242 4 }
243 3
244 3 case CMD_153_INIT_AUTH:
245 3 if(len != 10)
246 3 {
247 4 cmd[0] = ERRORCMDLEN;
248 4 return 1;
249 4 }
250 3 i = At153InitAuth(cmd+2);
251 3 if(i >= 0)
252 3 {
253 4 cmd[0] = SUCCESS;
254 4 cmd[1] = (unsigned char)i;
255 4 return 2;
256 4 }
257 3 else
258 3 {
259 4 cmd[0] = FAIL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -