do_setpara.c
上传用户:shyuanyi
上传日期:2008-05-24
资源大小:69k
文件大小:12k
源码类别:

RFID编程

开发平台:

C/C++

  1. #include  "My_head.h"
  2. #include  "key.h"
  3. #include  "mem_addr.h"
  4. /*************************************************/
  5. /*
  6. void  My_KeyBuf_Clear(void)
  7. {
  8.    memset(&thekey,0,sizeof(thekey));
  9. }
  10. bit  My_Save_Key(BYTE  Key)
  11. {
  12.    if(thekey.key_count>KEY_SIZE-1)return(FALSE);
  13.    thekey.key_buf[thekey.key_count++]=Key;
  14.    return(TRUE);
  15. }
  16. bit  My_Back_Key(void)
  17. {
  18.   if(thekey.key_count<1)return(FALSE);
  19.   thekey.key_count--;
  20.   return(TRUE);
  21. }
  22. void  My_Dis_KeyBuf(void)
  23. {
  24.    BYTE  buf[8];
  25.    char  i,j=thekey.key_count-1;
  26.    for(i=7;(i>=0)&&(j>=0);i--,j--)
  27.    {
  28.      buf[i]=~D_DISPLAY[thekey.key_buf[j]];
  29.    }
  30.    for(;i>=0;i--)buf[i]=~D_DISPLAY[18];
  31.    Display_str(buf);//Do_Led(buf[0]);
  32. }
  33. */
  34. BYTE code  for_test_str[]={1,2,3,4,5,6,7,8,9,0};
  35. BYTE code  my_super_str[]={1,6,7,3,8,8,8,8,2,2};
  36. //bit  set_del_enble_flag=FALSE;
  37. bit  my_for_test_bit=FALSE;
  38. /*
  39. bit  Chech_PassWord(void)
  40.    {
  41.     BYTE  *ptr=thekey.key_buf,i,j;
  42.     if(ptr[1]!= KEY_FUN )return(FALSE);
  43. set_del_enble_flag=my_for_test_bit=FALSE;//"功能+功能+任何键+确认"将注销权限!!
  44. if(!memcmp(&ptr[2],for_test_str,10)) 
  45.       {
  46.    my_for_test_bit=TRUE;
  47.        Stop_Timer(SETDEL_PASSWORD_Tevent);
  48.    Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_PRESSKEY_TIME);
  49.    return(TRUE);
  50.   }
  51. if(!memcmp(&ptr[2],my_super_str,10))
  52.     {
  53.    memcpy(op_user_info.op_password,"x11x11x11",3);
  54.    if(Saveparam_To_Mem()!=SUCCESS)return(FALSE);
  55.    set_del_enble_flag=TRUE;
  56.        Stop_Timer(SETDEL_PASSWORD_Tevent);
  57.    Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_PRESSKEY_TIME);
  58.    return(TRUE);
  59.   }
  60. for(i=2;i<8;i++)
  61.   {
  62.    if(i%2)j=op_user_info.op_password[(i-2)/2]&0x0f;
  63.    else   j=op_user_info.op_password[(i-2)/2]>>0x4;
  64.    //SendStr(&ptr[i],1);SendStr(&j,1);
  65.    if(ptr[i] != j)return(FALSE);
  66.   }
  67. if(thekey.key_count<9)
  68.   {
  69.        set_del_enble_flag=TRUE;
  70.        Stop_Timer(SETDEL_PASSWORD_Tevent);
  71.    Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_PRESSKEY_TIME);
  72.        return(TRUE);//password is right!
  73.       }
  74. if((ptr[8] != KEY_FUN) || (thekey.key_count != 15))return(FALSE);
  75. //modify  password
  76. for(i=9;i<15;i++)if(ptr[i]>9)return(FALSE);
  77. for(i=9;i<15;i+=2)
  78.   {
  79.    op_user_info.op_password[(i-9)/2] = (ptr[i]<<4)|(ptr[i+1]&0xf);
  80.   }
  81. //SendStr(op_user_info.op_password,3);
  82.     if((i=Saveparam_To_Mem())!=SUCCESS)return(FALSE);
  83. set_del_enble_flag=TRUE;
  84.     Stop_Timer(SETDEL_PASSWORD_Tevent);
  85.     Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_PRESSKEY_TIME);
  86. return(TRUE);
  87. }
  88. */
  89. void  Into_SeedCardInit(void)
  90. {
  91.   Do_DisLed_Flash(0xff,0x00,25);
  92.   //Stop_Timer(DIS_CLOCKEVENT_Tevent);
  93.   Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);
  94.   Stop_Timer(WAIT_EXIT_Tevent);
  95.   Set_TimerEvent(WAIT_EXIT_Tevent,WAIT_EXIT_TIME);
  96.   SetCurState(MY_TEST_STATUS);
  97. }
  98. BYTE  Do_SetPara(void)
  99. {
  100.     BYTE  idata *ptr=thekey.key_buf;
  101.     BYTE  count =thekey.key_count,i;
  102.     if( (count<4) || (ptr[3]!=KEY_FUN) )return(FORMAT_ERR);
  103.     switch(ptr[1])
  104.       {
  105.    case  0: //一些初始化操作;
  106.             switch(ptr[2])
  107.    {
  108. case  0:  //所有内存初始(恢复出厂状态)
  109.           if(count>4)return(FORMAT_ERR);
  110.   //WAIT SEEDCARD OR OPCARD OR ENTER KEY
  111.   //OLSE  PRESS CANCAL KAY!
  112.   //需要操作员卡???
  113.   count=ClearConParam_From_Mem();
  114.   if(count!=SUCCESS)return(count);
  115.   break;
  116.  case  1: //--单位用户用子卡初始化
  117.   if((con_statusinfo.con_records>0))return(OP_UNALLOWED);//可能还有消费数据
  118.           if(count>4)return(FORMAT_ERR);
  119.   Into_SeedCardInit();//进入!
  120.   return(SUCCESS);
  121.  case  2:  //--修改机号
  122.   if((con_statusinfo.con_records>0))return(OP_UNALLOWED);//可能还有消费数据
  123.           if((count<5)||(count>8))return(FORMAT_ERR);
  124.           equip_addr.number_addr=0;
  125.   for(i=4;i<count;i++)
  126.   {
  127.       if(ptr[i]>9)continue;     //for KEY_FUN!
  128.       equip_addr.number_addr *= 10;
  129.       equip_addr.number_addr += ptr[i];
  130.   }
  131.   break;
  132.  case  3: //--修改模式
  133. /*   if((count<5)||(count>5)||(ptr[4]<1)||(ptr[4]>4))return(FORMAT_ERR);
  134.   con_param_info.con_mode = ptr[4];
  135.                               Dis_ConMode();*/
  136.   break;
  137.  default: return(FORMAT_ERR);
  138.     }
  139.                  break;
  140.    case  1:  //修改时间参数1(金额)
  141.              switch(ptr[2])
  142.     {
  143.  case  0:
  144.  case  1:
  145.  case  2:
  146.  case  3:
  147.  case  4: //定义消费时间段(1-5)
  148.           if((count<5)||(count>8))return(FORMAT_ERR);
  149.   break;
  150.  case  7://记时消费模式下的单位时间(时、分);
  151.           break;
  152.  case  8://设置机器时钟(时分秒)
  153.           break;
  154.  case  9://设置机器时钟(年月日)
  155.           break;
  156.  default:break;
  157. }
  158.  break;
  159.    case  2:  //修改消费参数1(金额)
  160.              switch(ptr[2])
  161.     {
  162.  case  0:
  163.  case  1:
  164.  case  2:
  165.  case  3:
  166.  case  4:  //时间段(1-5)定值金额(单位:分)
  167.     /*       if((count<5)||(count>9))return(FORMAT_ERR);
  168.            con_param_info.dz_money[ptr[2]]=0;
  169.    for(i=4;i<count;i++)
  170.    {
  171.       if(ptr[i]>9)continue;     //for KEY_FUN!
  172.       con_param_info.dz_money[ptr[2]] *= 10;
  173.       con_param_info.dz_money[ptr[2]] += ptr[i];
  174.    }*/
  175.    break;
  176.  case  9:  //修改卡最大有效余额。(单位:分)
  177.     /*       if((count<5)||(count>11))return(FORMAT_ERR);
  178.            con_param_info.max_money=0;
  179.    for(i=4;i<count;i++)
  180.    {
  181.       if(ptr[i]>9)continue;     //for KEY_FUN!
  182.       con_param_info.max_money *= 10;
  183.       con_param_info.max_money += ptr[i];
  184.    }*/
  185.    break;
  186.  default:  return(FORMAT_ERR);
  187.     }
  188.  break;
  189.    case  3:  //修改消费参数2
  190.              switch(ptr[2])
  191.     {
  192.  case  0:
  193.  case  1:
  194.  case  2:
  195.  case  3:
  196.  case  4:  //记时消费模式下单位金额(与时间段对应,单位:分)
  197.      /*      if((count<5)||(count>9))return(FORMAT_ERR);
  198.            con_param_info.Js_money[ptr[2]]=0;
  199.    for(i=4;i<count;i++)
  200.    {
  201.       if(ptr[i]>9)continue;     //for KEY_FUN!
  202.       con_param_info.Js_money[ptr[2]] *= 10;
  203.       con_param_info.Js_money[ptr[2]] += ptr[i];
  204.    }*/
  205.    break;
  206.  default:  return(FORMAT_ERR);
  207.     }
  208.  break;
  209.    default:  return(FORMAT_ERR);
  210.   }
  211.      //不需要卡片的往这边来。
  212.  count=Saveparam_To_Mem();
  213.  do_buzzer(BUZZER_SUCCESS);
  214.  Dis_Err(count);
  215.  Stop_Timer(DISPLAY_DELAYEVENT_Tevent);//msut!!
  216.  Set_TimerEvent(DISPLAY_DELAYEVENT_Tevent,DISPLAY_DELAYEVENT_TIME);
  217.  Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);//(1)
  218.  SetCurState(IDEL_STATUS);
  219.      return(SUCCESS);
  220. }
  221. void  Do_My_EquipCheck(void)
  222. {
  223.    /*
  224.    BYTE   i;
  225.    /*****************************
  226.    if((KeyStr.Keys[0] == '#')&&(KeyStr.Keys[1] == '*')&&(KeyStr.Keys[2] =='#'))
  227.      { //this is a test!!
  228.        mysometest();
  229.    Renew_To_AllInit();
  230.    return;
  231.  }
  232.    /*****************************
  233.    if((KeyStr.Keys[0] == '#')&&(KeyStr.Keys[1] == '0')&&(KeyStr.Keys[2] =='#'))
  234.      {//this is a test!!
  235.   memcpy(incallcode.Codes,"00000",5);//display version
  236.   incallcode.Codes[5]=MyReVision_Str[0];
  237.   incallcode.Codes[6]=MyReVision_Str[1];
  238.   incallcode.Codes[7]=MyReVision_Str[2];
  239.       incallcode.Count=8;
  240.       WaitHookUp();
  241.       RLS_SEND_RING;delay_seconds(1);RLS_STOP_RING;
  242.       send_CID_flag=FALSE;
  243.     Send_CallInCode();
  244.   send_CID_flag=FALSE;
  245.   Renew_To_AllInit();
  246.   Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_KEY_TIME);
  247.   return;
  248.  }
  249.    if((KeyStr.Keys[0] == '*')&&(KeyStr.Keys[1] == '*')&&(KeyStr.Keys[2] == '#'))
  250.      {
  251.   set_del_enble_flag=my_for_test_bit=FALSE;
  252.   Renew_To_AllInit();
  253.   return;
  254.  }
  255.    if((KeyStr.Keys[0] == '*')&&(KeyStr.Keys[1] == '0')&&(KeyStr.Keys[2] == '#'))
  256.      {
  257.       Display_Sign();
  258.   Renew_To_AllInit();
  259.   Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_KEY_TIME);
  260.   return;
  261.  }
  262.    if((KeyStr.Keys[0] == '*')&&(KeyStr.Keys[1] == '1')&&(KeyStr.Keys[2] == '#'))
  263.      {
  264.       if(Test_24lc64())memcpy (incallcode.Codes,"11111111",INCALLCODE_SIZE);
  265.   else  memcpy (incallcode.Codes,"33333333",INCALLCODE_SIZE);
  266.       incallcode.Count=8;
  267.       WaitHookUp();
  268.       RLS_SEND_RING;delay_seconds(1);RLS_STOP_RING;
  269.       send_CID_flag=FALSE;
  270.     Send_CallInCode();
  271.   send_CID_flag=FALSE;
  272.   Renew_To_AllInit();
  273.       Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_KEY_TIME);
  274.   return;
  275.  }
  276.    if((KeyStr.Keys[0] == '*')&&(KeyStr.Keys[1] == '2')&&(KeyStr.Keys[2] == '#'))
  277.      {
  278.       WaitHookUp();
  279.   RLS_SEND_FJ;
  280.   delay_seconds(2);
  281.   RLS_SEND_RING;
  282.   delay_seconds(2);
  283.   Renew_To_AllInit();
  284.       Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_KEY_TIME);
  285.   return;
  286.  }
  287.    if((KeyStr.Keys[KeyStr.Count-2] == '*')&&(KeyStr.Keys[KeyStr.Count-1] == '#'))
  288.      {
  289.   memcpy (incallcode.Codes,KeyStr.Keys,INCALLCODE_SIZE);
  290.   if(KeyStr.Count>INCALLCODE_SIZE)incallcode.Count=INCALLCODE_SIZE;
  291.   else  incallcode.Count=KeyStr.Count;
  292.   WaitHookUp();
  293.      RLS_SEND_RING;
  294.   delay_seconds(1);
  295.   RLS_STOP_RING;
  296.       send_CID_flag=FALSE;
  297.   Send_CallInCode();
  298.       send_CID_flag=FALSE;
  299.   Renew_To_AllInit();
  300.       Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_KEY_TIME);
  301.   return;
  302.  }
  303.   */
  304. }
  305. /*
  306. BYTE  Do_SetParaKey_Even_11(BYTE Key)
  307. {
  308.   BYTE   i;
  309.   if(Key > KEY_MAX-1)return(Key);
  310.   Stop_Timer(WAIT_PRESSKEY_Tevent);
  311.   Set_TimerEvent(WAIT_PRESSKEY_Tevent,SET_PRESSKEY_TIME);
  312.   switch(Key)
  313.     {
  314.  case KEY_0 : Key =0; break;
  315.  case KEY_1 : Key =1; break;
  316.  case KEY_2 : Key =2; break;
  317.  case KEY_3 : Key =3; break;
  318.  case KEY_4 : Key =4; break;
  319.  case KEY_5 : Key =5; break;
  320.  case KEY_6 : Key =6; break;
  321.  case KEY_7 : Key =7; break;
  322.  case KEY_8 : Key =8; break;
  323.  case KEY_9 : Key =9; break;
  324.  case KEY_FUN:Key =19;break;
  325.  case KEY_ENTER1:
  326.  case KEY_ENTER2:
  327.   if(Chech_PassWord())
  328.  {
  329.   do_buzzer(BUZZER_SUCCESS);
  330.       Dis_Err(SUCCESS);
  331.     Stop_Timer(DISPLAY_DELAYEVENT_Tevent);//msut!!
  332.       Set_TimerEvent(DISPLAY_DELAYEVENT_Tevent,DISPLAY_DELAYEVENT_TIME);
  333.       Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);//(1)
  334.   SetCurState(IDEL_STATUS);
  335.   return(SUCCESS);
  336.  }
  337.                  if(my_for_test_bit)
  338.  {
  339.   Do_My_EquipCheck();
  340.   Renew_To_AllInit();
  341.   return(0);
  342.  }
  343.  if(!set_del_enble_flag)
  344.  {
  345.       //SendStr("T:",2);
  346.                       My_Do_Buzzer(350,3);//do_buzzer(BUZZER_ERROR);
  347.       Dis_Err(PWDPOWER_ERR_CODE);
  348.     Stop_Timer(DISPLAY_DELAYEVENT_Tevent);//msut!!
  349.       Set_TimerEvent(DISPLAY_DELAYEVENT_Tevent,DISPLAY_DELAYEVENT_TIME);
  350.       Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);//(1)
  351.   SetCurState(IDEL_STATUS);
  352.   return(PWDPOWER_ERR_CODE);
  353.  }
  354.        if((i=Do_SetPara())!=SUCCESS)
  355.  {
  356.  do_buzzer(BUZZER_ERROR);
  357.      Dis_Err(i);
  358.    Stop_Timer(DISPLAY_DELAYEVENT_Tevent);//msut!!
  359.      Set_TimerEvent(DISPLAY_DELAYEVENT_Tevent,DISPLAY_DELAYEVENT_TIME);
  360.      Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);//(1)
  361.  SetCurState(IDEL_STATUS);
  362.  return(FAILURE);
  363.  }
  364.  Stop_Timer(SETDEL_PASSWORD_Tevent);
  365.  Set_TimerEvent(SETDEL_PASSWORD_Tevent,SET_PRESSKEY_TIME);
  366.  return(SUCCESS);
  367.  case KEY_CANCEL:Renew_To_AllInit();
  368.  return(0);
  369.  case KEY_BACK: if(!My_Back_Key())
  370.                  {
  371.   Renew_To_AllInit();
  372.   return(0);
  373.  }
  374.                  My_Dis_KeyBuf();
  375.      return(0);
  376.      default:return(Key);
  377. }
  378.    if(!My_Save_Key(Key))do_buzzer(BUZZER_ALARM);
  379.    else  My_Dis_KeyBuf();
  380.    return(SUCCESS);
  381. }
  382. */