亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? level3.c

?? em公司的RFID源程序,適合EM4094,絕對震撼!
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
*-------------------------------------------------------------------------------
*--  RCSId: $Id: level3.c,v 1.50 2005-04-12 14:54:27+02 mjg Exp mjg $
*--         $Name:  $
*-------------------------------------------------------------------------------
*-- level3.c - High level data transformations and main loop 
*-------------------------------------------------------------------------------
*-- $Log: level3.c,v $
*-- Revision 1.50  2005-04-12 14:54:27+02  mjg
*-- switch to normal mode
*--
*-- Revision 1.49  2005-03-21 17:01:04+01  mjg
*-- Uplink timing tuned
*--
*-- Revision 1.47  2005-02-28 13:35:30+01  mjg
*-- EM4006 uid crc check
*--
*-- Revision 1.46  2005-02-25 11:23:13+01  mjg
*-- EM4006 extraction routine, no crc check
*--
*-- Revision 1.45  2005-02-25 11:19:41+01  mjg
*-- EM4006 extraction routine, no crc check
*--
*-- Revision 1.44  2005-02-25 09:12:50+01  mjg
*-- EM4006 decode mode
*--
*-- Revision 1.43  2005-02-23 16:04:15+01  mjg
*-- EM4006 raw mode, not tested
*--
*-- Revision 1.42  2005-02-21 18:13:55+01  mjg
*-- hubneme IV
*--
*-- Revision 1.41  2005-02-21 10:56:31+01  mjg
*-- hubneme III
*--
*-- Revision 1.40  2005-02-21 10:47:42+01  mjg
*-- hubneme III
*--
*-- Revision 1.38  2005-01-19 15:53:51+01  mjg
*-- EM4034 EAS off support corrected
*--
*-- Revision 1.37  2004-12-13 08:49:33+01  mjg
*-- compiler sensitive code in HWTransaction
*--
*-- Revision 1.36  2004-12-07 17:22:17+01  mjg
*-- version 4 of 1TS ready
*--
*-- Revision 1.35  2004-12-07 15:22:21+01  mjg
*-- 1.33 strikes back!
*--
*-- Revision 1.33  2004-06-30 12:47:41+02  mjg
*-- key selection extension
*--
*-- Revision 1.32  2004-05-31 16:41:51+02  mjg
*-- single carrier too slow caused CRC errors, speeded up
*--
*-- Revision 1.31  2004-05-21 09:29:37+02  mjg
*-- startup inventory, to toggle EAS off for EM4034
*--
*-- Revision 1.30  2004-05-10 09:23:28+02  mjg
*-- to toggle EAS off
*--
*-- Revision 1.29  2004-05-07 08:10:25+02  mjg
*-- HW auth passed
*--
*-- Revision 1.28  2004-04-27 17:05:44+02  mjg
*-- to better test the design
*--
*-- Revision 1.27  2004-04-21 15:48:47+02  mjg
*-- FSK low data rate support
*--
*-- Revision 1.26  2004-04-21 13:05:21+02  mjg
*-- EOF ignored because of FSK and 4034 support
*--
*-- Revision 1.25  2004-04-13 11:21:39+02  mjg
*-- sync
*--
*-- Revision 1.24  2004-03-25 16:09:19+01  mjg
*-- to add delayed EOF feature
*--
*-- Revision 1.23  2004-03-25 15:13:23+01  mjg
*-- to add delayed EOF feature
*--
*-- Revision 1.22  2004-03-24 13:35:36+01  mjg
*-- error msg needs better handling
*--
*-- Revision 1.21  2004-03-15 16:59:06+01  mjg
*-- to check SPI
*--
*-- Revision 1.20  2004-02-16 08:04:11+01  mjg
*-- preliminary CD
*--
*-- Revision 1.18  2004-02-10 19:24:40+01  mjg
*-- FSK to add valid bits
*--
*-- Revision 1.17  2004-02-10 18:30:46+01  mjg
*-- dual carrier raw, decoded 1st try
*--
*-- Revision 1.16  2004-02-09 18:03:33+01  mjg
*-- raw dual carrier capture
*--
*-- Revision 1.15  2004-02-08 12:30:52+01  mjg
*-- Decode var removed, FSK polling added
*--
*-- Revision 1.14  2004-02-07 14:59:47+01  mjg
*-- Response parsing correction
*--
*-- Revision 1.13  2004-02-03 08:42:52+01  mjg
*-- hubneme II
*--
*-- Revision 1.12  2004-02-03 07:24:37+01  mjg
*-- fwd debug implemented and removed from being compiled
*--
*-- Revision 1.11  2004-01-19 14:08:05+01  mjg
*-- hubneme I
*--
*-- Revision 1.10  2004-01-14 14:57:35+01  mjg
*-- to Invenotry version 2
*--
*-- Revision 1.9  2003-12-11 17:37:20+01  mjg
*-- yes
*--
*-- Revision 1.8  2003-12-11 16:33:41+01  mjg
*-- 1TS gives too much responses, stayquiet ?
*--
*-- Revision 1.7  2003-12-10 08:15:48+01  mjg
*-- to add dbg code
*--
*-- Revision 1.6  2003-12-09 12:43:01+01  mjg
*-- to 1TS inventory
*--
*-- Revision 1.5  2003-12-09 12:42:44+01  mjg
*-- to 1TS inventory
*--
*-- Revision 1.3  2003-12-05 08:38:56+01  mjg
*-- write update
*--
*-- Revision 1.2  2003-12-04 15:58:08+01  mjg
*-- to write
*--
*-- Revision 1.1  2003-12-01 08:18:04+01  mjg
*-- single carrier low drate level1 ok
*--
*-- Revision 1.0  2003-11-26 09:01:02+01  mjg
*-- Initial revision
*--
*-------------------------------------------------------------------------------
*/


#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/wdt.h>
#include "level4.h"
#include "level3.h"
#include "level2.h"
#include "level1.h"

//--------------------------------------------------------------
//global variables

uint8_t maxCaptureTimeLow;           //lower part of current maximum capture time (used to initialise TCNT1)
uint8_t maxCaptureTimeHi;            //upper part of current maximum capture time (expected value 0xFF or 0xFE only)

//--------------------------------------------------------------
//local declarations

#define STD_WAIT 145                  //~318us = (145+13)x32 @ 16MHz , 13x32 uC clocks is a setup reserve

uint8_t clean_data_cnt;               //clean response data length

uint16_t maxTGeneral;                 //current datarate maximum response capture time
uint16_t maxTwa1ee;                   //

uint8_t signed_crc;                   //flag of signed response

uint8_t authSelectFlag;               //disable selection before HW Authentication

void SendCaptureData( uint8_t cmd, uint8_t ack );
void Compute_Timeouts( uint8_t flags );

uint8_t Inventory(void);
uint8_t HW_Authentication(void);
uint8_t ToggleEAS(void);
uint8_t GeneralRead(void);
uint8_t GeneralWrite(void);
void RF_Reset(void);
uint8_t SwitchToNormalMode(void);

//--------------------------------------------------------------
// main loop routine
//--------------------------------------------------------------

void main_receiver(void) {
  uint8_t check_stat;
  uint8_t fwd_bit_count;
  uint8_t i;
  uint16_t pom;

  if (watchdog_reset != 0) {
    FormatResponse_Short( 0x00, ERR_ASIC_ANTENNA_FAULT );
  } else {
    decode_number = 2;
    forward_link_type = 0x01;               //default value = 1 from 4 forward link    
  }

  while (21) {                              // infinite loop

    wdt_reset();                            // reset the watchdog

    if((check_stat = CheckIncommingMessage()) != UART_MESSAGE_OK)     // check any incoming message
      FormatResponse_Short( 0, check_stat );
    else {                                                            // no error, processing command

      forward_ptr = data_buffer;            // initialize fwd pointer
      fwd_bit_count = 0;
  
      switch (uart_command) {

//...............................................................................................

        case 0x83 :                               //1TS Inventory
          Inventory();
          Wait(512);
          FormatResponse_Short( uart_command, Inventory() );
          break;

//...............................................................................................

        case 0x88 :                               //general read command
          i = GeneralRead();

          if (debug_mode == 0) {

            if (clean_data_cnt == 0)
              SendCaptureData( uart_command, i );
            else
              FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );

          } else 
          if (debug_mode == 2) 
            SendCaptureData( uart_command, ERR_EM4035_CAPT_DATA );
          else
            FormatResponse_Data( uart_command, ERR_EM4035_RAW_DATA, capture_cnt, (uint8_t*)capture.capture_data );

          break;

//...............................................................................................

        case 0x89 :                               //HW Authentication
          authSelectFlag = 0;

          i = HW_Authentication();
      
          if (i == UART_MESSAGE_OK)
            FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );
          else
            SendCaptureData( uart_command, i );
          break;

//...............................................................................................

        case 0x8A :                               //Toggle EAS
          i = ToggleEAS();

          if (i == UART_MESSAGE_OK)
            FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );
          else
            SendCaptureData( uart_command, i );
          break;

//...............................................................................................

        case 0x8B :                               //Startup Invenotry

          //RF Reset
          RF_Reset();

          i = GeneralRead();

          if (debug_mode == 0) {

            if (clean_data_cnt == 0)
              SendCaptureData( uart_command, i );
            else
              FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );

          } else 
          if (debug_mode == 2) 
            SendCaptureData( uart_command, ERR_EM4035_CAPT_DATA );
          else
            FormatResponse_Data( uart_command, ERR_EM4035_RAW_DATA, capture_cnt, (uint8_t*)capture.capture_data );

          break;

//...............................................................................................

        case 0x8C :                               //HW Authentication without Select
          authSelectFlag = 1;
          i = HW_Authentication();
      
          if (i == UART_MESSAGE_OK)
            FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );
          else
            SendCaptureData( uart_command, i );
          break;

//...............................................................................................

        case 0x8D :                               //Switch to Normal mode
          i = SwitchToNormalMode();

          if (clean_data_cnt == 0) {
            SendCaptureData( uart_command, i );
          } else {
            FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );
          }
          break;

//...............................................................................................

        case 0x90 :                               //general write command

          i = GeneralWrite();

          if (debug_mode == 0) {

            if ((i == UART_MESSAGE_OK) && (clean_data_cnt != 0)) {
              FormatResponse_Data( uart_command, i, clean_data_cnt, (uint8_t*)data_buffer );
            } else {          
              SendCaptureData( uart_command, i );
            }
          }
          else
          if (debug_mode == 2) 
            SendCaptureData( uart_command, ERR_EM4035_CAPT_DATA );
          else
            FormatResponse_Data( uart_command, ERR_EM4035_RAW_DATA, capture_cnt, (uint8_t*)capture.capture_data );

          break;

//...............................................................................................

        case 0x98 :                               //Read EM4006 UID

          EM4006_bitRate = (19 * (uint32_t)EM4006_bitRate) / 16;
          pom = EM4006_bitRate * 6;               //capture for max 384 bit periods
          EM4006_bitRate >>= 3;                   //T1 runs at clk/8 due to full bitrate range

          ClearCaptureBuffers();

          maxCaptureTimeLow = (uint8_t)pom; 
          maxCaptureTimeHi = pom >> 8; 
   
          Capture(5);

          if (debug_mode == 0) {

            clean_data_cnt = 0;

            i = Extract_EM4006( capture_cnt );

            if (i == UART_MESSAGE_OK)
              FormatResponse_Data( uart_command, UART_MESSAGE_OK, 10, (uint8_t*)data_buffer );
            else
              SendCaptureData( uart_command, i );
          }
          else
          if (debug_mode == 2) 
            SendCaptureData( uart_command, UART_MESSAGE_OK );
          else
            FormatResponse_Data( uart_command, UART_MESSAGE_OK, capture_cnt, (uint8_t*)capture.capture_data );

          break;

//...............................................................................................

        case 0xF0 :                               //RF reset using SPI configuration word
          WriteSPI( write_4094_low & 0xFFFE, write_4094_hi );
          FormatResponse_Short( uart_command, 0x00 );

          wdt_disable();

          i = write_tag_memory_delay;
          while (i-->0) {
            Wait(16384);
          }

          wdt_enable(0x7);

          WriteSPI( write_4094_low | 1, write_4094_hi );
          break;

//...............................................................................................

        case 0x00 :                               //no command
          continue;

//...............................................................................................

        default:
          FormatResponse_Short( 0, ERR_UART_UNKNOWN_CMD );
          break;
      }

      uart_command = 0;

    }

  }
}

//--------------------------------------------------------------
//compute the timeouts according to the flag byte
//
void Compute_Timeouts(uint8_t flags) {

  register uint16_t pom;
  register uint16_t corr;

  pom = expectedResponseLen * 16;        //512RF/32 = 16 TCNT0 pulses per bit
  pom += 128;                            //reserve
  corr = expectedResponseLen / 2 + 2;    //correction for dual carrier

  if ((flags & 2) == 0)
    pom *= 4;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜电影网亚洲视频| 亚洲一二三四久久| 欧美精选在线播放| 成人av综合一区| 蓝色福利精品导航| 亚洲成人午夜影院| 亚洲天堂网中文字| 日本一区二区视频在线| 欧美一区二区三区婷婷月色| 日本精品一区二区三区高清 | 成人黄色综合网站| 紧缚奴在线一区二区三区| 亚洲电影视频在线| 伊人色综合久久天天人手人婷| 久久久久久夜精品精品免费| 日韩午夜小视频| 欧美一区二区在线看| 欧美日韩一区高清| 色狠狠色噜噜噜综合网| 99视频精品全部免费在线| 福利一区二区在线| 国产成人精品一区二| 国产精品一区免费视频| 狠狠色狠狠色综合系列| 精品影视av免费| 日韩激情av在线| 首页综合国产亚洲丝袜| 亚洲国产一区二区视频| 亚洲一区在线视频| 一区二区三区91| 一区二区三区电影在线播| 亚洲日本在线a| 亚洲欧美欧美一区二区三区| 亚洲视频一区二区在线| 亚洲男人的天堂在线观看| 亚洲视频中文字幕| 一区二区久久久| 午夜精品福利一区二区蜜股av| 亚洲综合图片区| 午夜精品久久久久久久久久 | 亚洲成人7777| 亚洲国产欧美在线| 亚洲成人激情自拍| 日本伊人色综合网| 久99久精品视频免费观看| 精品一区二区三区免费观看| 老汉av免费一区二区三区| 国产精品自在在线| 国产精品中文有码| 99久久精品一区| 欧美体内she精高潮| 91麻豆精品国产91久久久| 日韩午夜在线观看| 欧美激情一区二区三区四区 | 国产综合久久久久久久久久久久| 国产一区福利在线| 成人免费毛片高清视频| 一本久久综合亚洲鲁鲁五月天 | 蜜臀精品一区二区三区在线观看| 免费成人av资源网| 国产大片一区二区| 91免费看`日韩一区二区| 欧美在线观看一区| 精品久久久久久久久久久久久久久| 国产视频亚洲色图| 亚洲嫩草精品久久| 免费精品99久久国产综合精品| 国产呦萝稀缺另类资源| 91麻豆6部合集magnet| 欧美日韩国产大片| 国产日产欧美一区二区视频| 一区二区三区中文字幕| 喷白浆一区二区| av中文字幕不卡| 欧美另类z0zxhd电影| 久久久精品日韩欧美| 一区二区免费在线| 国产一区 二区 三区一级| 91免费观看视频| 欧美一区二区三区视频免费 | 色偷偷久久一区二区三区| 91精品国产麻豆国产自产在线 | 午夜视频在线观看一区二区 | 在线亚洲一区二区| 日韩你懂的在线播放| 亚洲欧洲日韩av| 麻豆国产欧美一区二区三区| 99久久精品一区二区| 日韩欧美一二三四区| 亚洲欧美国产高清| 国产精品中文字幕欧美| 欧美久久久影院| 亚洲人成人一区二区在线观看| 精品一区二区在线免费观看| 欧美在线制服丝袜| 国产精品久久三| 精品午夜久久福利影院| 在线观看成人小视频| 国产精品少妇自拍| 六月丁香综合在线视频| 在线免费观看不卡av| 国产精品乱子久久久久| 日本美女一区二区| 欧美视频在线一区| 亚洲欧洲日产国产综合网| 久久成人免费日本黄色| 欧美三级在线播放| 一个色妞综合视频在线观看| 成人久久久精品乱码一区二区三区 | 午夜久久久久久电影| gogogo免费视频观看亚洲一| 精品国偷自产国产一区| 亚洲午夜电影在线观看| 91视频你懂的| 亚洲四区在线观看| 成人av网址在线| 欧美经典三级视频一区二区三区| 极品少妇xxxx偷拍精品少妇| 欧美一区二区三区在线观看| 亚洲午夜免费电影| 欧美性三三影院| 亚洲午夜激情网页| 在线观看三级视频欧美| 亚洲免费在线播放| 91美女精品福利| 亚洲日本va午夜在线电影| av亚洲精华国产精华精华| 国产欧美精品一区aⅴ影院| 国产精品一区二区久久不卡| 久久先锋影音av鲁色资源| 久久99国产精品麻豆| 日韩你懂的在线观看| 久久精品国产精品亚洲红杏 | 欧美一级午夜免费电影| 日韩福利视频网| 91精品国产综合久久久蜜臀图片| 五月天国产精品| 欧美日本视频在线| 日韩电影免费在线看| 欧美成人伊人久久综合网| 麻豆成人久久精品二区三区小说| 日韩免费高清av| 国产一区二区三区在线观看精品| 精品国产乱码久久久久久1区2区 | 热久久久久久久| 欧美大黄免费观看| 国产乱色国产精品免费视频| 久久久噜噜噜久久人人看 | 性久久久久久久久久久久| 欧美日韩成人高清| 精品一区二区三区久久| 国产欧美日韩视频一区二区| www.66久久| 午夜精品福利一区二区三区蜜桃| 777亚洲妇女| 激情综合网最新| 中文字幕在线不卡一区| 色欧美日韩亚洲| 日韩不卡在线观看日韩不卡视频| 欧美成人福利视频| 成人av网站免费观看| 亚洲va欧美va天堂v国产综合| 日韩欧美一区二区免费| 波多野结衣欧美| 日韩国产高清影视| 国产日韩亚洲欧美综合| 色香色香欲天天天影视综合网| 日韩电影一区二区三区四区| 久久久久国产精品免费免费搜索| 91免费看视频| 久久99久久精品| 国产精品久久久久久久久免费丝袜 | 日韩av中文字幕一区二区| 久久久亚洲综合| 色婷婷精品大在线视频| 精品一区二区三区欧美| 亚洲欧洲综合另类| 精品久久久久久综合日本欧美| av男人天堂一区| 久久电影网站中文字幕| 亚洲欧美怡红院| 精品福利在线导航| 日本精品裸体写真集在线观看 | 欧美综合欧美视频| 国产成人免费在线观看不卡| 亚洲一线二线三线视频| 国产亲近乱来精品视频 | 欧美色国产精品| 国产91在线观看丝袜| 首页亚洲欧美制服丝腿| 中文字幕在线视频一区| 欧美一区二区免费视频| 91免费国产视频网站| 国产精品18久久久久| 亚洲国产wwwccc36天堂| 欧美国产成人在线| 日韩区在线观看| 欧美三片在线视频观看| av一区二区三区黑人| 国产在线视频精品一区|