⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tc.lst

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -