📄 scmain.lst
字号:
C51 COMPILER V8.06 SCMAIN 01/31/2008 22:24:27 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE SCMAIN
OBJECT MODULE PLACED IN scmain.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE scmain.c OPTIMIZE(9,SPEED) MODDP2 INCDIR(C:\Cypress\USB\Targe
-t\Inc) DEFINE(__USE_USB__) DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------------------------------
2 // File Name: scmain program
3 // Description: use ezusb to test smallcard
4 //
5 // Copyright: Inventec Electronics(Tianjin) Co., Ltd.
6 // $Archive: scmain.c
7 // $Date: 2007-12-06
8 // $Revision: 1.00
9 //
10 //-----------------------------------------------------------------------------
11 // Copyright 2006, xsh.han@itc.inventec
12 //-----------------------------------------------------------------------------
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <string.h>
16 #include <ctype.h>
17
18 #include "scmain.h"
19 #include "cmdlist.h"
20 #include "serial.h"
21 #include "boards.h"
22
23 //------------------------------------------------------------------------------
24 //function prototype
25 //------------------------------------------------------------------------------
26 int do_handshake(void);
27 int do_select(void);
28 char *get_current_cmd(char * buff);
29 char *lookup_return_str(int ret_cmd);
30 int lookup_return_val(struct command_param *pm, char *cmd_str);
31 int (*lookup_command_func(struct command_name *pcmd,char *cmd_str))();
32
33 //------------------------------------------------------------------------------
34 //global variable
35 //------------------------------------------------------------------------------
36 //function pointer for blinking function
37 int (*fp_blinking)(unsigned char) = (int(*)(unsigned char))NULL;
38 //function pointer for select card entry
39 int (*fp_card_selected)(char*) = (int(*)(char *))NULL;
40
41
42 //------------------------------------------------------------------------------
43 //extern funtion prototype
44 //------------------------------------------------------------------------------
45 extern int do_show_help();
46
47 //------------------------------------------------------------------------------
48 //command function param
49 //------------------------------------------------------------------------------
50 const struct command_name xdata cmd_main[] = {
51 {"HANDSHAKE", do_handshake},
52 {"SELECT", do_select},
53 {0, 0}
54 };
C51 COMPILER V8.06 SCMAIN 01/31/2008 22:24:27 PAGE 2
55
56 const struct command_param xdata return_param[] = {
57 {"ERROR :", RET_ERROR},
58 {"OK :", RET_OK},
59 {"DONE :", RET_DONE},
60 {"PASS :", RET_PASS},
61 {"FAIL :", RET_FAIL},
62 {"ON :", RET_ON},
63 {"OFF :", RET_OFF},
64 {0, 0}
65 };
66
67 //------------------------------------------------------------------------------
68 //extern variable & function
69 //------------------------------------------------------------------------------
70 extern BYTE xdata g_in_buffer[];
71 extern WORD xdata g_in_buffer_len;
72 extern struct command_list *g_cmdlist;
73 extern struct command_list *g_retlist;
74
75 extern struct command_list *add_to_cmdlist(char * cmd);
76 extern void free_cmdlist();
77 extern struct command_list *add_to_retlist(char * cmd);
78 extern void free_retlist();
79
80
81 //--------------------------------------------------------------------------------
82 //strcmp function for no case
83 //--------------------------------------------------------------------------------
84 char mydef_toupper(char c)
85 {
86 1 if (c>='a' && c<='z') {
87 2 return(c&0xDF);
88 2 }
89 1
90 1 return c;
91 1 }
92
93 //--------------------------------------------------------------------------------
94 //strcmp function for no case
95 //--------------------------------------------------------------------------------
96 int mydef_strcasecmp(char *dst, char *src)
97 {
98 1 char f,l;
99 1
100 1 do {
101 2 f = mydef_toupper(*(dst++));
102 2 l = mydef_toupper(*(src++));
103 2 //f = *(dst++);
104 2 //l = *(src++);
105 2 //f = mydef_toupper(f);
106 2 //l = mydef_toupper(l);
107 2 } while ( f && l && (f == l));
108 1
109 1 return (f-l);
110 1 }
111
112 //--------------------------------------------------------------------------------
113 //receive shakehands command,just return ok.
114 //--------------------------------------------------------------------------------
115 int do_handshake()
116 {
C51 COMPILER V8.06 SCMAIN 01/31/2008 22:24:27 PAGE 3
117 1 //PDEBUG("do_handshake:\r\n");
118 1 return RET_OK;
119 1 }
120
121 //--------------------------------------------------------------------------------
122 //receive select card command
123 //--------------------------------------------------------------------------------
124 int do_select()
125 {
126 1 char cmd[MAX_CMD_LENGTH];
127 1 int ret=0;
128 1
129 1 //PDEBUG("do_select:\r\n");
130 1 memset (cmd, '\0', sizeof (cmd));
131 1 if (get_current_cmd(cmd)!=NULL){
132 2 fp_card_selected = lookup_command_func(cmd_card_entry,cmd);
133 2 if (fp_card_selected != NULL) {
134 3 //so card select command
135 3 ret = (*fp_card_selected)("SELECT");
136 3 return(ret);
137 3 }
138 2 }
139 1
140 1 //clear select card
141 1 fp_card_selected = (int(*)(char *))NULL;
142 1 return RET_ERROR;
143 1 }
144
145 //--------------------------------------------------------------------------------
146 //lookup command
147 //--------------------------------------------------------------------------------
148 int (*lookup_command_func(struct command_name *pcmd,char *cmd_str))()
149 {
150 1 struct command_name *bp;
151 1
152 1 for (bp = pcmd; bp->command != NULL; bp++){
153 2 if (mydef_strcasecmp(bp->command, cmd_str) == 0){
154 3 return (bp->fn);
155 3 //return(bp->fn());
156 3 }
157 2 }
158 1 return ((int (*)()) NULL);
159 1 //return (-1);
160 1 }
161
162 //--------------------------------------------------------------------------------
163 //lookup param
164 //--------------------------------------------------------------------------------
165 char *lookup_return_str(int ret_cmd)
166 {
167 1 struct command_param *rp;
168 1
169 1 for (rp = return_param; rp->name; rp++){
170 2 if (rp->val==ret_cmd){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -