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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? buffer.c

?? 該源碼是針對(duì)支持Mux技術(shù)的手機(jī)Modem的驅(qū)動(dòng)
?? C
字號(hào):
/* * buffer.c -- Implementation of functions defined in buffer.h * * Copyright (C) 2003 Tuukka Karvonen <tkarvone@iki.fi> * * Version 1.0 October 2003 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * */#include "buffer.h"#include "gsm0710.h"#include <stdlib.h>#include <string.h>#include <stdio.h>#include <syslog.h>const unsigned char r_crctable[256] = { //reversed, 8-bit, poly=0x07   0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75,   0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0xEA, 0x7B,   0x1C, 0x8D, 0xFF, 0x6E, 0x1B, 0x8A, 0xF8, 0x69,   0x12, 0x83, 0xF1, 0x60, 0x15, 0x84, 0xF6, 0x67,   0x38, 0xA9, 0xDB, 0x4A, 0x3F, 0xAE, 0xDC, 0x4D,   0x36, 0xA7, 0xD5, 0x44, 0x31, 0xA0, 0xD2, 0x43,   0x24, 0xB5, 0xC7, 0x56, 0x23, 0xB2, 0xC0, 0x51,   0x2A, 0xBB, 0xC9, 0x58, 0x2D, 0xBC, 0xCE, 0x5F,   0x70, 0xE1, 0x93, 0x02, 0x77, 0xE6, 0x94, 0x05,   0x7E, 0xEF, 0x9D, 0x0C, 0x79, 0xE8, 0x9A, 0x0B,   0x6C, 0xFD, 0x8F, 0x1E, 0x6B, 0xFA, 0x88, 0x19,   0x62, 0xF3, 0x81, 0x10, 0x65, 0xF4, 0x86, 0x17,   0x48, 0xD9, 0xAB, 0x3A, 0x4F, 0xDE, 0xAC, 0x3D,   0x46, 0xD7, 0xA5, 0x34, 0x41, 0xD0, 0xA2, 0x33,   0x54, 0xC5, 0xB7, 0x26, 0x53, 0xC2, 0xB0, 0x21,   0x5A, 0xCB, 0xB9, 0x28, 0x5D, 0xCC, 0xBE, 0x2F,   0xE0, 0x71, 0x03, 0x92, 0xE7, 0x76, 0x04, 0x95,   0xEE, 0x7F, 0x0D, 0x9C, 0xE9, 0x78, 0x0A, 0x9B,   0xFC, 0x6D, 0x1F, 0x8E, 0xFB, 0x6A, 0x18, 0x89,   0xF2, 0x63, 0x11, 0x80, 0xF5, 0x64, 0x16, 0x87,   0xD8, 0x49, 0x3B, 0xAA, 0xDF, 0x4E, 0x3C, 0xAD,   0xD6, 0x47, 0x35, 0xA4, 0xD1, 0x40, 0x32, 0xA3,   0xC4, 0x55, 0x27, 0xB6, 0xC3, 0x52, 0x20, 0xB1,   0xCA, 0x5B, 0x29, 0xB8, 0xCD, 0x5C, 0x2E, 0xBF,   0x90, 0x01, 0x73, 0xE2, 0x97, 0x06, 0x74, 0xE5,   0x9E, 0x0F, 0x7D, 0xEC, 0x99, 0x08, 0x7A, 0xEB,   0x8C, 0x1D, 0x6F, 0xFE, 0x8B, 0x1A, 0x68, 0xF9,   0x82, 0x13, 0x61, 0xF0, 0x85, 0x14, 0x66, 0xF7,   0xA8, 0x39, 0x4B, 0xDA, 0xAF, 0x3E, 0x4C, 0xDD,   0xA6, 0x37, 0x45, 0xD4, 0xA1, 0x30, 0x42, 0xD3,   0xB4, 0x25, 0x57, 0xC6, 0xB3, 0x22, 0x50, 0xC1,   0xBA, 0x2B, 0x59, 0xC8, 0xBD, 0x2C, 0x5E, 0xCF };unsigned char make_fcs(const unsigned char *input, int count) {  unsigned char fcs = 0xFF;  int i;  for (i = 0; i < count; i++) {    fcs = r_crctable[fcs^input[i]];  }  return (0xFF-fcs);}GSM0710_Buffer *gsm0710_buffer_init() {  GSM0710_Buffer *buf;  if ((buf = malloc(sizeof(GSM0710_Buffer)))) {    memset(buf, 0, sizeof(GSM0710_Buffer));    buf->readp = buf->data;    buf->writep = buf->data;    buf->endp = buf->data + GSM0710_BUFFER_SIZE;  }  return buf;}void gsm0710_buffer_destroy(GSM0710_Buffer *buf) {  free(buf);}int gsm0710_buffer_write(GSM0710_Buffer *buf, const char *input, int count) {  int c=buf->endp - buf->writep;  count = min(count, gsm0710_buffer_free(buf));  if (count > c) {    memcpy(buf->writep, input, c);    memcpy(buf->data, input+c, count-c);    buf->writep = buf->data + (count-c);  } else {    memcpy(buf->writep, input, count);    buf->writep += count;    if (buf->writep == buf->endp)      buf->writep = buf->data;  }      return count;}GSM0710_Frame *gsm0710_buffer_get_frame(GSM0710_Buffer *buf) {  int end;  int length_needed = 5; // channel, type, length, fcs, flag  unsigned char *data;  unsigned char fcs = 0xFF;  GSM0710_Frame *frame = NULL;  // Find start flag  while (!buf->flag_found && gsm0710_buffer_length(buf) > 0)   {    if (*buf->readp == F_FLAG)      buf->flag_found = 1;    INC_BUF_POINTER(buf, buf->readp);  }  if (!buf->flag_found) // no frame started    return NULL;  // skip empty frames (this causes troubles if we're using DLC 62)  while (gsm0710_buffer_length(buf) > 0 && 	 (*buf->readp == F_FLAG))   {    INC_BUF_POINTER(buf, buf->readp);  }  if (gsm0710_buffer_length(buf) >= length_needed)   {    data = buf->readp;    frame = malloc(sizeof(GSM0710_Frame));    frame->channel = ((*data & 252) >> 2);    fcs = r_crctable[fcs^*data];    INC_BUF_POINTER(buf,data);    frame->control = *data;    fcs = r_crctable[fcs^*data];    INC_BUF_POINTER(buf,data);    frame->data_length = (*data & 254) >> 1;    fcs = r_crctable[fcs^*data];    if ((*data & 1) == 0)     {      /* Current spec (version 7.1.0) states these kind of frames to be invalid       * Long lost of sync might be caused if we would expect a long       * frame because of an error in length field.      INC_BUF_POINTER(buf,data);      frame->data_length += (*data*128);      fcs = r_crctable[fcs^*data];      length_needed++;      */      free(frame);      buf->readp = data;      buf->flag_found = 0;      return gsm0710_buffer_get_frame(buf);    }    length_needed += frame->data_length;    if (!(gsm0710_buffer_length(buf) >= length_needed))     {      free(frame);      return NULL;    }    INC_BUF_POINTER(buf,data);    //extract data    if (frame->data_length > 0)     {      if ((frame->data = malloc(sizeof(char)*frame->data_length)))       {	end = buf->endp - data;	if (frame->data_length > end) 	{	  memcpy(frame->data, data, end);	  memcpy(frame->data+end, buf->data, frame->data_length-end);	  data = buf->data + (frame->data_length-end);	} 	else 	{	  memcpy(frame->data, data, frame->data_length);	  data += frame->data_length;	  if (data == buf->endp)	    data = buf->data;	}	if (FRAME_IS(UI, frame)) 	{	  for (end = 0; end < frame->data_length; end++)	    fcs = r_crctable[fcs^(frame->data[end])];	}    }     else     {	syslog(LOG_ALERT,"Out of memory, when allocating space for frame data.\n");	frame->data_length = 0;      }    }    // check FCS    if (r_crctable[fcs^(*data)] != 0xCF) {      syslog(LOG_INFO,"Dropping frame: FCS doesn't match\n");      destroy_frame(frame);      buf->flag_found = 0;      buf->dropped_count++;      buf->readp = data;      return gsm0710_buffer_get_frame(buf);    } else {      // check end flag      INC_BUF_POINTER(buf,data);      if (*data != F_FLAG) {	syslog(LOG_WARNING, "Dropping frame: End flag not found. Instead: %d\n", *data);	destroy_frame(frame);	buf->flag_found = 0;	buf->dropped_count++;	buf->readp = data;	return gsm0710_buffer_get_frame(buf);      } else {	buf->received_count++;      }      INC_BUF_POINTER(buf,data);    }    buf->readp = data;  }  return frame;}void destroy_frame(GSM0710_Frame *frame) {  if (frame->data_length > 0)    free(frame->data);  free(frame);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本成人在线不卡视频| 国产成人自拍网| 国产精品乱码一区二三区小蝌蚪| 在线观看亚洲精品| 国产一区二区三区不卡在线观看| 亚洲小少妇裸体bbw| 国产欧美日本一区视频| 日韩欧美国产不卡| 欧美日韩激情一区| 欧美三片在线视频观看| 91亚洲国产成人精品一区二区三| 国产综合成人久久大片91| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲国产高清在线| 欧美不卡视频一区| 91精品国产欧美一区二区成人| 91在线国内视频| 国产91高潮流白浆在线麻豆| 免费成人美女在线观看| 日本欧美加勒比视频| 亚洲美女少妇撒尿| 国产精品国产三级国产aⅴ无密码| 精品久久久久久亚洲综合网| 欧美精品一卡两卡| 欧美日韩在线亚洲一区蜜芽| 99国产精品99久久久久久| 春色校园综合激情亚洲| 国产91富婆露脸刺激对白| 国产成人精品免费一区二区| 国产精品一区二区91| 美女在线视频一区| 琪琪久久久久日韩精品| 视频在线观看国产精品| 亚洲一区二区三区视频在线| 一区二区国产视频| 亚洲最快最全在线视频| 亚洲综合清纯丝袜自拍| 亚洲精品一卡二卡| 一区二区三区美女视频| 亚洲一卡二卡三卡四卡五卡| 一区二区三区中文字幕在线观看| 亚洲精品综合在线| 亚洲国产aⅴ成人精品无吗| 亚洲国产精品麻豆| 午夜精品一区二区三区三上悠亚 | 国产日韩高清在线| 欧美极品美女视频| 国产精品免费人成网站| 亚洲色图在线视频| 日韩亚洲欧美成人一区| 国产精品99久久久久久有的能看| 精品久久久久久最新网址| 精品少妇一区二区三区在线播放| 精品国精品自拍自在线| 久久久久久久电影| 综合av第一页| 午夜欧美一区二区三区在线播放 | 国产在线看一区| 国产成人av影院| 99久久精品免费看国产免费软件| 色吊一区二区三区| 欧美一区二区三区免费大片 | 亚洲小少妇裸体bbw| 三级久久三级久久久| 国精品**一区二区三区在线蜜桃| 国产一区二区三区免费看| aaa亚洲精品一二三区| 欧美性色综合网| 欧美不卡一区二区三区四区| 国产精品嫩草久久久久| 亚洲第一电影网| 国产精品一级在线| 日韩美女一区二区三区四区| 国产性做久久久久久| 亚洲黄色免费电影| 免费在线看一区| 91在线视频免费观看| 91精品欧美久久久久久动漫| 亚洲国产精品二十页| 五月天久久比比资源色| 国产成人午夜精品影院观看视频| 欧美在线你懂的| 精品久久久久久无| 亚洲综合在线第一页| 国产综合色视频| 欧美日韩一区二区三区不卡| 国产欧美日韩激情| 石原莉奈在线亚洲二区| 不卡av电影在线播放| 欧美一区二区三区性视频| 国产精品嫩草久久久久| 免费成人你懂的| 91精品福利视频| 久久久一区二区三区捆绑**| 性欧美大战久久久久久久久| 成人av免费网站| 日韩欧美一区二区免费| 一区二区三区色| 懂色av噜噜一区二区三区av| 91精品国产91久久久久久一区二区| 国产精品伦理在线| 国模大尺度一区二区三区| 欧美高清一级片在线| 亚洲欧美综合另类在线卡通| 国产一区二区调教| 欧美一区二区三级| 亚洲va国产va欧美va观看| 99精品视频在线免费观看| 久久综合给合久久狠狠狠97色69| 亚洲午夜电影在线观看| 成人h精品动漫一区二区三区| 精品裸体舞一区二区三区| 日韩激情视频在线观看| 欧美性一区二区| 亚洲精品精品亚洲| 成人免费视频视频在线观看免费 | 欧美日韩美少妇| 亚洲欧美电影院| 国产精品一区在线观看你懂的| 久久午夜色播影院免费高清| 337p亚洲精品色噜噜噜| 精品久久久久久久久久久久久久久| 亚洲风情在线资源站| 色综合色狠狠综合色| 亚洲视频电影在线| 色婷婷精品大在线视频| 《视频一区视频二区| 成人av影视在线观看| 中文字幕免费一区| 国产成人午夜99999| 国产欧美精品区一区二区三区 | 激情久久久久久久久久久久久久久久| 91精品欧美一区二区三区综合在| 一区二区三区视频在线看| 91高清视频在线| 亚洲国产精品久久久久婷婷884| 日本高清不卡一区| 亚洲一区二区三区视频在线| 欧美色图在线观看| 午夜天堂影视香蕉久久| 91精品蜜臀在线一区尤物| 老司机精品视频导航| 日韩免费高清av| 国产精品一二三在| 中文字幕亚洲区| 色激情天天射综合网| 视频一区二区三区在线| 日韩视频一区二区在线观看| 久久91精品国产91久久小草| www激情久久| 不卡一二三区首页| 一区二区三区产品免费精品久久75| 欧美三级韩国三级日本三斤| 免费黄网站欧美| 久久久久亚洲综合| 99精品欧美一区二区蜜桃免费 | 欧美mv日韩mv亚洲| 国产一区二区在线观看视频| 国产精品萝li| 欧美日韩精品一区二区天天拍小说 | 国产不卡视频在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91久久线看在观草草青青| 日韩av一区二| 国产欧美视频一区二区| 在线一区二区三区| 老司机精品视频导航| 国产精品乱人伦中文| 欧美日韩卡一卡二| 国产成人免费在线观看| 亚洲影视在线观看| 久久人人超碰精品| 色综合久久66| 精品中文字幕一区二区| 亚洲视频一二区| 欧美大片免费久久精品三p| 国产丶欧美丶日本不卡视频| 亚洲欧洲综合另类| 亚洲精品在线观| 欧美午夜片在线观看| 国产精品自产自拍| 图片区小说区区亚洲影院| 久久久高清一区二区三区| 日本乱码高清不卡字幕| 国产在线国偷精品免费看| 亚洲福中文字幕伊人影院| 国产女人18毛片水真多成人如厕 | 国产欧美精品日韩区二区麻豆天美| 欧美三级一区二区| 成人激情免费电影网址| 日产国产高清一区二区三区| 国产精品女主播av| 精品日韩在线一区| 欧美日韩一区不卡| av在线免费不卡| 国产精品99久久久久久似苏梦涵| 五月激情综合婷婷| 亚洲免费看黄网站| 国产日本欧美一区二区| 日韩一区二区三区四区五区六区|