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

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

?? dispatcher.c

?? A dispatcher system using leaky bucket architecture. The code was written for HC12, HCS08, and compi
?? C
字號:
/** ###################################################################
**     Filename  : dispatcher.C
**     Project   : rs232
**     Processor : MC9S08GT60CFB
**     Compiler  : CodeWarrior HCS08 C Compiler
**     Date/Time : 10/3/2007, 8:29 PM
**     Contents  :
**         User source code
**
**     (c) Copyright UNIS, spol. s r.o. 1997-2008
**     UNIS, spol. s r.o.
**     Jundrovska 33
**     624 00 Brno
**     Czech Republic
**     http      : www.processorexpert.com
**     mail      : info@processorexpert.com
** ###################################################################*/

/* MODULE dispatcher */
#include "dispatcher.h"

///Leaky Loop Variables///
  byte dp_buffer[DMAXBSIZE];
  byte dp_packetrecieved[DMAXBSIZE]; 
  
  int dp_pstart, dp_pend, dp_pendreal;
  int dp_Rpacketsize;
  
  int dp_m,dp_q,dp_v,dp_endpacket;
  int testAshkan;
  
/// Dispatcher Variables ///  
/// The variables with small names are local variables used differently in different places //
  FunctionsTable fTable[FTABLESIZE];
  int dp_availableFunctions;
  int dp_i,dp_d, dp_fc ,  dp_fnamestart,dp_fnameend  ;
  byte * dp_fargumentptr;

  

  
////////////////// LEAKY LOOP ////////////////////////////////////////
  

byte dispatcher_LeakyLoop_charAt ( int im ) {
  while (im>=DMAXBSIZE) {
    im = im -  DMAXBSIZE;
  }
  return (dp_buffer[im]); 

}

//When a character Arrives,
//We first put it in the leaky loop bucket
//then we try to process it, if it contain a '/'  (it resemble a package)

void dispatcher_inchar(byte* inChar,int dp_size ) {
      
    dispatcher_LeakyLoop_Inchar(inChar,dp_size);
    
    //Check if there is a full packet in the leaking loop;
    for ( dp_v = 0 ; dp_v<dp_size ; dp_v++) {
      AS1_SendChar(inChar[dp_v]);
      if ( inChar[dp_v] == '/' ) {
        if (dispatcher_LeakyLoop_getpacket(dp_packetrecieved,&dp_Rpacketsize) ) {
            //AS1_SendChar('-');
            dispatcher_dispatch ( dp_packetrecieved ,dp_Rpacketsize); 
        } 
    }
  }
  
  
}


  
//Returns True if there is such a package.  
//and put it in packetrecieved and put the size in recievedSize

bool dispatcher_LeakyLoop_getpacket(byte *packetrecieved, int *recievedSize) {

  (*recievedSize) = 0;
  //find the begining of the packet in the buffer 
  for ( dp_q = dp_pstart; dp_q < dp_pend ; dp_q ++ ) {
    if ( dispatcher_LeakyLoop_charAt(dp_q) == '/' &&
         dispatcher_LeakyLoop_charAt(dp_q+1) == ',' &&
         dp_q+1 < dp_pend ) {
         
          dp_pstart = dp_q;
          break;
         }
  }
  
  for ( dp_q = dp_pstart; dp_q < dp_pend ; dp_q ++ ) {
    if ( dispatcher_LeakyLoop_charAt(dp_q-1) == ',' &&
         dispatcher_LeakyLoop_charAt(dp_q) == '/' &&
         dp_q < dp_pend ) {
         
          dp_endpacket = dp_q+1;
         }
  }
  
  
  
//dp_pend points to the memory cell which we would right :D  
 if ( dispatcher_LeakyLoop_charAt(dp_pstart) == '/'
  && dispatcher_LeakyLoop_charAt(dp_pstart+1) == ','
  && dispatcher_LeakyLoop_charAt(dp_endpacket-2) == ','
  && dispatcher_LeakyLoop_charAt(dp_endpacket-1) == '/'    ) {
  
     for (dp_q =0 ;  dp_q < dp_endpacket- dp_pstart; dp_q++) {
      packetrecieved[dp_q] = dispatcher_LeakyLoop_charAt(dp_pstart + dp_q);
      (*recievedSize)++;
    }
    
    dp_pstart= dp_endpacket;
    return TRUE;
  }else{
    return FALSE; 
  }
}



void dispatcher_LeakyLoop_Inchar(byte* inChar,int dp_size ) {
    if ( dp_pend + dp_size >= dp_pstart + DMAXBSIZE ) //We have more characters in the buffer than possible
    {
        /* !!!!!!!!!!! ERROR !!!!!!!!!!!!!!!!!! */
        dp_pend = dp_pstart = 0;
    }
    
    //If both pointers have gone through one loop, it's like non of them have !
    if ( (dp_pend >= DMAXBSIZE)  && (dp_pstart >= DMAXBSIZE) ) { 
      dp_pend = dp_pend - DMAXBSIZE;
      dp_pstart= dp_pstart - DMAXBSIZE;
    }
    
    //Add the incomming characters to the buffer
    for (dp_m = 0 ; dp_m<dp_size ; dp_m++) {
      if ( dp_pend>= DMAXBSIZE) {
        dp_pendreal = dp_pend - DMAXBSIZE;
      }else {
        dp_pendreal = dp_pend;
      }
      
      dp_buffer[ dp_pendreal ] = inChar[dp_m] ;     //Put the incoming character at the end of the buffer
      dp_pend ++;                             //Increase the pointer to the end of the buffer
    }
  }
   
  
  //////////////////// Dispatcher ////////////////////////////
  
  void dispatcher_init(void) {
     //Leaky Loop init 
     dp_pstart = dp_pend = dp_pendreal = 0;
     
     //Dispatcher init
     dp_availableFunctions = 0;
  }

  void dispatcher_clearFtable(void) {
      dp_availableFunctions = 0; 
  }  
  
  void dispatcher_addFunction(byte *Name,void (*functionPointer)(byte *inStructure)) {
    dp_i = 0;
    
    //Copy the CString Name to the name :D
    while ( Name[dp_i] != '\n' && dp_i<MessageHeaderMaxLength ) {
      fTable[dp_availableFunctions].channelName[dp_i] = Name[dp_i];
      dp_i++;
    }
    
    if ( dp_i < 1 )
     return;
    
    if ( functionPointer == 0 )
      return;
    
    //Copy the function pointer to the fTable.
    fTable[dp_availableFunctions].functionPointer = functionPointer; 
    
    dp_availableFunctions ++ ;
  }


  
  void dispatcher_dispatch(byte *Packet, int psize  ) {
  dp_fnamestart=dp_fnameend=0;
  
    //Get the name of the function
    for ( dp_d = 0 ; dp_d<psize ; dp_d ++ ) {
      if (Packet[dp_d]==',') {
        dp_fnamestart = dp_d+1 ; //The first character after ,
        break;
      }
    }
  
    for ( dp_d = dp_fnamestart+1 ; dp_d<psize ; dp_d ++ ) {
      if (Packet[dp_d]==','){
        dp_fnameend = dp_d ;
        break;
      }
    }
    
    
    //Try to search for the function name
    for ( dp_fc  = 0 ; dp_fc <dp_availableFunctions; dp_fc ++) {
        
        dp_d = 0;
        while (  fTable[dp_fc].channelName[dp_d] == Packet[ dp_fnamestart + dp_d]   ){
        
            if ( dp_d == dp_fnameend- dp_fnamestart -1 ) {
              //The name is a full match 
              dp_fargumentptr = Packet + dp_fnameend+1 ;
              (*fTable[dp_fc].functionPointer)( (byte *)dp_fargumentptr  );  //Call the function which handle that packet
            }
            dp_d++;
        }
        
    }
    
   }
 
 


/* END dispatcher */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线免费观看| 亚洲一区在线电影| 麻豆一区二区在线| xnxx国产精品| 国产一区二区三区四区五区美女| 日韩免费在线观看| 一本大道久久a久久精品综合| 一区二区三区国产豹纹内裤在线 | 中文字幕巨乱亚洲| 欧美性色综合网| 国产精品一区专区| 天堂va蜜桃一区二区三区 | 成人精品国产免费网站| 日本 国产 欧美色综合| 国产精品网站在线| 久久午夜羞羞影院免费观看| 色综合久久66| 麻豆免费精品视频| 亚洲第一福利一区| 亚洲一区在线观看免费观看电影高清| 国产欧美一区二区精品仙草咪| 欧美一级日韩免费不卡| 欧美视频一区二| 日本高清免费不卡视频| 91香蕉视频污| 欧美视频在线一区| 在线播放一区二区三区| 一本一本久久a久久精品综合麻豆| 丁香桃色午夜亚洲一区二区三区| 久久99国产精品麻豆| 国产精品18久久久| a亚洲天堂av| 欧美日韩和欧美的一区二区| 欧美色综合网站| 欧美日韩久久久一区| 欧美一区午夜视频在线观看 | 欧美视频在线不卡| 51久久夜色精品国产麻豆| 欧美电影免费观看完整版| 欧美一区中文字幕| 亚洲欧洲性图库| 香蕉乱码成人久久天堂爱免费| 奇米影视一区二区三区| 国产电影一区二区三区| 在线观看网站黄不卡| 精品1区2区在线观看| 亚洲综合色婷婷| 成人自拍视频在线| 欧美日韩精品高清| 国产精品丝袜久久久久久app| 亚洲欧美日韩国产手机在线| 久久机这里只有精品| 欧美四级电影在线观看| 亚洲视频一二区| 成人国产亚洲欧美成人综合网 | 成人高清在线视频| 精品福利一区二区三区| 一区二区欧美在线观看| 国产成人综合亚洲网站| 91精品免费观看| 亚洲欧美日韩国产另类专区| 狠狠色丁香久久婷婷综合丁香| 欧美在线综合视频| 国产亚洲一二三区| 麻豆精品久久精品色综合| 欧美性xxxxxxxx| 亚洲人xxxx| 91麻豆国产福利精品| 国产精品网曝门| 粉嫩在线一区二区三区视频| 欧美—级在线免费片| 久久99深爱久久99精品| 26uuu色噜噜精品一区二区| 久久av老司机精品网站导航| 欧美午夜精品一区二区三区 | 亚洲精品伦理在线| 欧美色图第一页| 日韩精品成人一区二区三区| 欧美日韩一区二区三区四区 | 日韩三级中文字幕| 免费成人美女在线观看.| 精品美女在线播放| 92精品国产成人观看免费| 亚洲福利电影网| 日韩欧美电影在线| 色屁屁一区二区| 激情深爱一区二区| 久久精品日产第一区二区三区高清版| 国产91精品入口| 天天做天天摸天天爽国产一区| 2017欧美狠狠色| 欧美片网站yy| 色综合久久久久久久| 日本特黄久久久高潮| 亚洲色图.com| 久久久久久久久蜜桃| 色婷婷精品大视频在线蜜桃视频| 日本不卡1234视频| 亚洲精品高清在线| 久久亚洲一区二区三区明星换脸| 91免费视频观看| 国产成人av一区二区| 亚洲国产成人porn| 一二三四社区欧美黄| 久久这里都是精品| 欧美成人精品二区三区99精品| 欧美性生活大片视频| 国产成人超碰人人澡人人澡| 久久国产精品无码网站| 乱一区二区av| 国产精品卡一卡二卡三| 欧美性感一区二区三区| 免费看欧美美女黄的网站| 久久婷婷国产综合精品青草| 色综合久久九月婷婷色综合| 精品一二三四区| 中文字幕一区二区三| 宅男噜噜噜66一区二区66| 精品一区二区免费视频| 亚洲一区日韩精品中文字幕| 久久久久久久久久久久久夜| 欧美精品123区| 欧美日韩一区二区在线观看视频| 国产剧情在线观看一区二区| 日本视频一区二区| 亚洲乱码国产乱码精品精小说| 久久久精品2019中文字幕之3| 精品视频全国免费看| 欧美性生活大片视频| 精品999久久久| 成人免费在线播放视频| 亚洲免费成人av| 久久97超碰色| 91美女福利视频| 欧美精品黑人性xxxx| 国产精品丝袜一区| 麻豆精品一区二区av白丝在线| 不卡视频免费播放| 欧美不卡视频一区| 亚洲成av人影院在线观看网| 国产在线一区二区| 色综合久久99| 久久夜色精品国产欧美乱极品| 亚洲一区中文日韩| 国产传媒日韩欧美成人| 欧美成人一区二区三区| 亚洲一区二区在线播放相泽| 不卡的电影网站| 国产精品欧美综合在线| 国产一区二区毛片| 91精品午夜视频| 免费欧美在线视频| 91精品国产福利| 国内精品久久久久影院色| 欧美一区二区福利视频| 性久久久久久久| 日韩午夜在线观看视频| 婷婷综合五月天| 欧美一二三在线| 国模套图日韩精品一区二区| 久久精品免费在线观看| 99精品在线观看视频| 洋洋av久久久久久久一区| 欧美日韩电影在线| 激情文学综合插| 亚洲男同1069视频| 91精品在线免费| 国产精品一区二区男女羞羞无遮挡| 欧美激情中文不卡| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲美女一区二区三区| 日韩视频免费观看高清完整版| 国产精品自拍av| 亚洲国产美女搞黄色| 久久久精品天堂| 欧美日本国产视频| 成人污视频在线观看| 美女在线视频一区| 一区二区三区国产豹纹内裤在线| 亚洲精品在线电影| 欧美视频日韩视频| 99久久夜色精品国产网站| 久久国产夜色精品鲁鲁99| 日韩电影在线观看电影| 亚洲另类在线一区| 国产精品网曝门| 国产欧美综合色| 久久免费的精品国产v∧| 在线播放欧美女士性生活| 色欧美片视频在线观看| 成人久久18免费网站麻豆| 久久91精品久久久久久秒播| 午夜激情综合网| 亚洲夂夂婷婷色拍ww47| 亚洲综合一区在线| 亚洲乱码国产乱码精品精98午夜| 国产精品久久久久久亚洲毛片| 国产三级精品在线| 中文字幕五月欧美| 亚洲精品高清在线|