📄 tc.lst
字号:
260 4 cmd[1] = (char)i;
261 4 return 2;
262 4 }
263 3
264 3 case CMD_153_VRF_AUTH:
265 3 if(len != 10)
266 3 {
267 4 cmd[0] = ERRORCMDLEN;
268 4 return 1;
269 4 }
270 3 i = At153VerifyAuth(cmd+2);
271 3 if(i >= 0)
272 3 {
273 4 cmd[0] = SUCCESS;
274 4 cmd[1] = (unsigned char)i;
275 4 return 2;
276 4 }
277 3 else
278 3 {
279 4 cmd[0] = FAIL;
280 4 cmd[1] = (char)i;
281 4 return 2;
282 4 }
283 3
284 3 case CMD_153_WR_FUSE:
285 3 if(len != 3)
286 3 {
287 4 cmd[0] = ERRORCMDLEN;
288 4 return 1;
289 4 }
290 3 i = At153WriteFS(cmd[2]);
291 3 if(i >= 0)
292 3 {
293 4 cmd[0] = SUCCESS;
294 4 cmd[1] = (unsigned char)i;
295 4 return 2;
296 4 }
297 3 else
298 3 {
299 4 cmd[0] = FAIL;
300 4 cmd[1] = (char)i;
301 4 return 2;
302 4 }
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 6
303 3
304 3 case CMD_153_RD_FUSE:
305 3 if(len != 2)
306 3 {
307 4 cmd[0] = ERRORCMDLEN;
308 4 return 1;
309 4 }
310 3 i = At153ReadFS();
311 3 if(i >= 0)
312 3 {
313 4 cmd[0] = SUCCESS;
314 4 cmd[1] = (unsigned char)i;
315 4 return 2;
316 4 }
317 3 else
318 3 {
319 4 cmd[0] = FAIL;
320 4 cmd[1] = (char)i;
321 4 return 2;
322 4 }
323 3
324 3 case CMD_SLE_RD_MMEM: // UDP: Address
325 3 if(len != 3)
326 3 {
327 4 cmd[0] = ERRORCMDLEN;
328 4 return 1;
329 4 }
330 3 cmd[0] = SUCCESS;
331 3 return 1 + Sle4442ReadMainMem(cmd[2], cmd+1);
332 3
333 3 case CMD_SLE_UPD_MMEM: // UDP: address + data
334 3 if(len != 4)
335 3 {
336 4 cmd[0] = ERRORCMDLEN;
337 4 return 1;
338 4 }
339 3 Sle4442WriteMainMem(cmd[2], cmd[3]);
340 3 cmd[0] = SUCCESS;
341 3 return 1;
342 3
343 3 case CMD_SLE_RD_PMEM: // UDP: NULL
344 3 if(len != 2)
345 3 {
346 4 cmd[0] = ERRORCMDLEN;
347 4 return 1;
348 4 }
349 3 Sle4442ReadProtectMem(cmd+1);
350 3 cmd[0] = SUCCESS;
351 3 return 5;
352 3
353 3 case CMD_SLE_UPD_PMEM: // UDP: address + data
354 3 if(len != 4)
355 3 {
356 4 cmd[0] = ERRORCMDLEN;
357 4 return 1;
358 4 }
359 3 Sle4442WriteProtectMem(cmd[2], cmd[3]);
360 3 cmd[0] = SUCCESS;
361 3 return 1;
362 3
363 3 case CMD_SLE_RD_SMEM: // UDP: NULL
364 3 if(len != 2)
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 7
365 3 {
366 4 cmd[0] = ERRORCMDLEN;
367 4 return 1;
368 4 }
369 3 Sle4442ReadSecurityMem(cmd+1);
370 3 cmd[0] = SUCCESS;
371 3 return 5;
372 3
373 3 case CMD_SLE_UPD_SMEM: // UDP: address + data
374 3 if(len != 4)
375 3 {
376 4 cmd[0] = ERRORCMDLEN;
377 4 return 1;
378 4 }
379 3 Sle4442WriteSecurityMem(cmd[2], cmd[3]);
380 3 cmd[0] = SUCCESS;
381 3 return 1;
382 3
383 3 case CMD_SLE_VERIFY: // UDP: address + data
384 3 if(len != 4)
385 3 {
386 4 cmd[0] = ERRORCMDLEN;
387 4 return 1;
388 4 }
389 3 Sle4442Verify(cmd[2], cmd[3]);
390 3 cmd[0] = SUCCESS;
391 3 return 1;
392 3
393 3 case CMD_SLE_CMD: // UDP: to be defined
394 3
395 3 default:
396 3 cmd[0] = ERRORCMD;
397 3 return 1;
398 3 }
399 2 }
400 1 else
401 1 {
402 2 cmd[0] = ERRORCMD;
403 2 return 1;
404 2 }
405 1 }
406
407 // check if a card is inserted into the slot and beep and led
408 // and send notice to host
409 void CardSlot(void)
410 {
411 1 static bit fCardIn = 0;
412 1 unsigned char buf[3];
413 1 static unsigned char cnt = 0;
414 1
415 1 // todo: check overload
416 1 if(IccUserOverLoad())
417 1 {
418 2 // todo: notice host ?
419 2 // power off
420 2 IccUserPower(0);
421 2 // eject card
422 2 IccUserEject();
423 2 // beep
424 2 beep(10, 5);
425 2 // notice host
426 2 #ifdef TCOVERLOAD
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 8
427 2 buf[0] = TCOVERLOAD;
428 2 CommSend(buf, 1);
429 2 #endif
430 2 }
431 1
432 1 if(IccUserTest())
433 1 {
434 2 if(!fCardIn)
435 2 {
436 3 fCardIn = 1;
437 3 // starttime = GetTickCount();
438 3
439 3 if(fTCBeep)
440 3 {
441 4 beep(2, 10);
442 4 }
443 3
444 3 CardLed(0, 1);
445 3
446 3 // 通知主机有卡
447 3 if(fNotice)
448 3 {
449 4 buf[0] = TCARD;
450 4 buf[1] = 1;
451 4
452 4 if(!fStopOnACK)
453 4 {
454 5 CommSendNotWaitAck(buf, 2); ///////////////////////////////////////////
455 5 WaitCmdTime = GetTickCount();
456 5 fWaitCmd = 1;
457 5 }
458 4 else if(!CommSend(buf, 2))
459 4 {
460 5 fCardIn = 0;
461 5 CardLed(0, 0);
462 5 cnt ++;
463 5
464 5 // if 3 times host no response, eject card
465 5 if(cnt > 3)
466 5 {
467 6 IccUserEject();
468 6 beep(3, 25);
469 6 }
470 5 }
471 4 }
472 3 }
473 2 }
474 1 else
475 1 {
476 2 cnt = 0;
477 2 if(fCardIn)
478 2 {
479 3 fCardIn = 0;
480 3
481 3 if(fTCBeep)
482 3 {
483 4 beep(1, 40);
484 4 }
485 3
486 3 CardLed(0, 0);
487 3
488 3 if(fNotice)
C51 COMPILER V8.00 TC 04/23/2009 15:56:18 PAGE 9
489 3 {
490 4 buf[0] = TCARD;
491 4 buf[1] = 0;
492 4
493 4 #if 1
494 4 CommSendNotWaitAck(buf, 2); //////////////////////////////////////
495 4 #else
CommSend(buf, 2);
#endif
498 4 }
499 3 }
500 2 }
501 1
502 1 if(fWaitCmd)
503 1 {
504 2 if(GetTickCount() - WaitCmdTime >= 1000)
505 2 {
506 3 fCardIn = 0;
507 3 fWaitCmd = 0;
508 3 IccUserEject();
509 3 beep(3, 25);
510 3 }
511 2 }
512 1 }
513
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2410 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 3 11
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -