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

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

?? p16_drv.h

?? 《嵌入式系統 Web 服務器:TCP/IP Lean》
?? H
字號:
/* Low-level driver functions for PIC Web server 
** Copyright (c) Iosoft Ltd 2001
** This software is only licensed for distribution in the Iosoft ChipWeb package
** and may only be used for personal experimentation by the purchaser 
** of that package, on condition that this copyright notice is retained. 
** For commercial licensing, contact license@iosoft.co.uk
**
** This is experimental software; use it entirely at your own risk */

/* Revisions:
** v0.01 JPB 17/12/00 Functions extracted from PIC_SLIP v0.01
*/

/* Globals */
BOOL checkflag;             // Checksum flag & byte values
BYTE checkhi, checklo;

BYTE ungot_byte;
BOOL ungot;

/* Prototypes for this file */
int get_data(BYTE *ptr, int maxlen);
BOOL get_byte(BYTE &b);
void unget_byte(BYTE &b);
BOOL get_word(WORD &w);
BOOL get_lword(LWORD &lw);
void discard_data(void);
BOOL match_byte(BYTE b);
BOOL match_word(WORD w);
void skip_space(void);
BOOL skip_byte();
BOOL skip_word();
BOOL skip_lword();
int check_str(char *s);
void check_byte(BYTE b);
void check_word(WORD w);
void check_lword(LWORD &lw);
void check_bytes(BYTE *dat, int len);
void put_byte(BYTE b);
void put_str(char *s);
void put_word(WORD w);
void put_data(BYTE *data, int len);
void put_lword(LWORD &lw);
void swapw(WORD &val);

/* Get incoming data in buffer; discard any buffer overflow */
int get_data(BYTE *ptr, int maxlen)
{
    BYTE b;
    int n=0;

    while (maxlen-- > 0 && get_byte(b))
    {
        *ptr++ = b;
        n++;
    }
    discard_data();
    return(n);
}

/* Discard incoming data */
void discard_data(void)
{
    while (!atend)
        getch_net();
}

/* Get an incoming byte value, return 0 if end of message */
BOOL get_byte(BYTE &b)
{
    if (ungot)
        b = ungot_byte;
    else
        b = getch_net();
    ungot = 0;
    return(!atend);
}

/* Unget (push back) an incoming byte value */
void unget_byte(BYTE &b)
{
    ungot_byte = b;
    ungot = 1;
}

/* Get an incoming word value, return 0 if end of message */
BOOL get_word(WORD &w)
{
    BYTE hi, lo;

    hi = getch_net();
    lo = getch_net();
    w = ((WORD)hi<<8) | (WORD)lo;
    return(!atend);
}
/* Get an incoming lword value, return 0 if end of message */
BOOL get_lword(LWORD &lw)
{
    lw.b[3] = getch_net();
    lw.b[2] = getch_net();
    lw.b[1] = getch_net();
    lw.b[0] = getch_net();
    return(!atend);
}

/* Match an incoming byte value, return 0 not matched, or end of message */
BOOL match_byte(BYTE b)
{
    return(b==getch_net() && !atend);
}
/* Match an incoming byte value, return 0 not matched, or end of message */
BOOL match_word(WORD w)
{
    WORD inw;

    return(get_word(inw) && inw==w);
}

/* Match longword */
BOOL match_lword(LWORD &lw)
{
    return (match_byte(lw.b[3]) && match_byte(lw.b[2]) && 
        match_byte(lw.b[1]) && match_byte(lw.b[0]));
}

/* Skip whitespace & ctrl chars in incoming data, return 0 if none */
void skip_space(void)
{          
    BYTE b;
    BOOL ok=0;
    
    while (get_byte(b) && b<=' ')
        ok = 1;
    if (ok)
        unget_byte(b);
}

/* Skip an incoming byte value, return 0 if end of message */
BOOL skip_byte(void)
{
    getch_net();
    return(!atend);
}
/* Skip an incoming word value, return 0 if end of message */
BOOL skip_word(void)
{
    getch_net();
    getch_net();
    return(!atend);
}
/* Skip an incoming lword value, return 0 if end of message */
BOOL skip_lword(void)
{
    getch_net();
    getch_net();
    getch_net();
    getch_net();
    return(!atend);
}
 
/* Compute checksum of a string, return its length */
int check_str(char *s)
{
    char c;
    int n=0;

    while ((c = s[n])!=0)
    {
        check_byte(c);
        n++;
    }
    return(n);
}

/* Add byte to checksum value */
void check_byte(BYTE b)
{
    if (checkflag)
    {
        if ((checklo = b+checklo) < b)
        {
            if (++checkhi == 0)
                checklo++;
        }
    }
    else
    {
        if ((checkhi = b+checkhi) < b)
        {
            if (++checklo == 0)
                checkhi++;
        }
    }
    checkflag = !checkflag;
}
/* Add word to checksum value */
void check_word(WORD w)
{
    check_byte(w>>8);
    check_byte(w);
}
/* Add longword to checksum value */
void check_lword(LWORD &lw)
{
    check_byte(lw.b[3]);
    check_byte(lw.b[2]);
    check_byte(lw.b[1]);
    check_byte(lw.b[0]);
}

/* Add array of bytes to checksum value */
void check_bytes(BYTE *dat, int len)
{
    while (len--)
        check_byte(*dat++);
}

/* Send a byte to the network buffer */
void put_byte(BYTE b)
{
    putch_net(b);
}

/* Send a string out to the SLIP link, add to checksum */
void put_str(char *s)
{
    while (*s)
        putch_net(*s++);
}

/* Send a word out to the SLIP link, then add to checksum */
void put_word(WORD w)
{
    putch_net(w >> 8);
    putch_net(w);
}

void put_lword(LWORD &lw)
{
    putch_net(lw.b[3]);
    putch_net(lw.b[2]);
    putch_net(lw.b[1]);
    putch_net(lw.b[0]);
}

void put_data(BYTE *data, int len)
{
    while (len--)
        putch_net(*data++);
}

/* Swap the bytes in a word */
void swapw(WORD &val)
{
    val = (val >> 8) | ((val << 8) & 0xff00);
}

/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费精品视频在线| 欧美日韩精品一区二区三区蜜桃| av在线综合网| 日韩欧美一级特黄在线播放| 成人欧美一区二区三区小说 | 精品一区二区三区影院在线午夜| 99re热视频精品| 久久久国产午夜精品 | 国内外精品视频| 欧美亚洲免费在线一区| 国产精品美女www爽爽爽| 久久精品国产999大香线蕉| 在线观看成人小视频| 亚洲欧洲日韩女同| 国产成人免费视频网站| 精品裸体舞一区二区三区| 日韩精品亚洲专区| 欧美三级一区二区| 亚洲综合成人在线视频| 97se狠狠狠综合亚洲狠狠| 欧美激情一区二区三区不卡 | 亚洲成人资源在线| 色综合久久中文字幕综合网| 国产精品美女久久久久aⅴ| 国产一区视频在线看| 欧美一级日韩免费不卡| 视频在线观看国产精品| 91精品国产综合久久精品麻豆| 亚洲自拍另类综合| 色94色欧美sute亚洲线路一久| 日韩一区在线播放| 97久久精品人人澡人人爽| 综合婷婷亚洲小说| 色综合中文字幕国产 | 一区二区三区欧美日韩| 色婷婷国产精品综合在线观看| 亚洲欧美日韩综合aⅴ视频| 99re66热这里只有精品3直播| 中文字幕国产一区二区| av电影天堂一区二区在线观看| 欧美激情一区二区三区| 波多野结衣一区二区三区| 18成人在线观看| 91精品91久久久中77777| 午夜欧美电影在线观看| 欧美一区二区精品在线| 国产麻豆日韩欧美久久| 国产精品乱人伦一区二区| 色综合网色综合| 美女尤物国产一区| 欧美成人在线直播| 国产一区二区不卡在线| 中文字幕一区免费在线观看| 91精品1区2区| 久久精品国产一区二区| 国产欧美综合色| 91九色02白丝porn| 麻豆视频一区二区| 综合自拍亚洲综合图不卡区| 欧美日韩成人综合| 国内不卡的二区三区中文字幕| 中文字幕欧美日韩一区| 欧美色视频在线| 国产精品资源在线观看| 一区二区不卡在线播放 | 日韩精品亚洲一区二区三区免费| 91精品国产一区二区三区蜜臀| 韩国成人精品a∨在线观看| 亚洲视频一二三区| 欧美一级精品在线| 99久久精品国产导航| 日韩av二区在线播放| 欧美国产日韩一二三区| 欧美精品在线一区二区三区| 国产精品乡下勾搭老头1| 亚洲二区在线视频| 国产精品色一区二区三区| 欧美日韩国产中文| 成人一区在线看| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩区在线观看| 不卡av电影在线播放| 美女被吸乳得到大胸91| 亚洲综合在线视频| 国产精品人妖ts系列视频| 日韩一区二区三区免费看 | 国产精品久久久久天堂| 欧美一区二区三区的| 在线日韩av片| 成人av在线网| 国产成人在线看| 另类小说综合欧美亚洲| 亚洲成人av电影| 亚洲精品中文字幕在线观看| 久久精品一二三| 精品福利一区二区三区| 91精品麻豆日日躁夜夜躁| 在线看日本不卡| 色视频欧美一区二区三区| 成人成人成人在线视频| 国产剧情一区在线| av不卡在线观看| 成人精品在线视频观看| 国产一区二区三区在线观看免费视频| 亚洲国产色一区| 一区二区三区四区不卡在线| 亚洲欧美中日韩| 亚洲欧洲av在线| 亚洲免费观看高清完整版在线| 欧美激情综合在线| 国产精品视频观看| 中文久久乱码一区二区| 欧美国产日韩亚洲一区| 久久久久亚洲综合| 欧美精彩视频一区二区三区| 久久久久久亚洲综合| 国产午夜精品久久久久久免费视| 欧美精品一区二区三区视频 | 欧美美女黄视频| 欧美日韩国产不卡| 在线成人小视频| 日韩欧美中文一区| 精品国产乱码久久久久久1区2区| 337p日本欧洲亚洲大胆色噜噜| 精品久久五月天| 国产网站一区二区| 中文字幕一区二区三中文字幕| 国产精品久久久久影院色老大| 亚洲三级视频在线观看| 亚洲综合色噜噜狠狠| 日韩精品高清不卡| 另类综合日韩欧美亚洲| 国产99久久久国产精品潘金| 成人免费毛片aaaaa**| 91视频在线观看| 在线播放中文一区| 精品粉嫩超白一线天av| 国产精品激情偷乱一区二区∴| 亚洲欧洲综合另类| 日韩激情在线观看| av午夜一区麻豆| 在线免费观看视频一区| 777精品伊人久久久久大香线蕉| 欧美videos大乳护士334| 国产精品嫩草影院av蜜臀| 亚洲大片在线观看| 国产精品18久久久久久久久| 91首页免费视频| 精品久久久久久久久久久久久久久久久 | 91精品国产一区二区三区香蕉| 久久免费视频色| 一区二区三区中文字幕在线观看| 日韩av在线免费观看不卡| 大陆成人av片| 6080yy午夜一二三区久久| 国产清纯白嫩初高生在线观看91 | 青娱乐精品视频| 丁香激情综合国产| 欧美日韩国产经典色站一区二区三区 | 国产精品福利一区二区三区| 亚洲国产日产av| 国产1区2区3区精品美女| 欧美日韩在线播放三区四区| 国产欧美日韩精品在线| 午夜天堂影视香蕉久久| 成人av网址在线观看| 日韩精品一区二| 亚洲精品高清在线| 成人丝袜高跟foot| 日韩一级黄色片| 夜夜嗨av一区二区三区四季av| 国产一区二区在线看| 欧美精品一二三四| 亚洲美女区一区| 成人一级片在线观看| 精品欧美一区二区久久| 亚洲一区二区在线观看视频| 丁香婷婷综合色啪| 精品卡一卡二卡三卡四在线| 亚洲国产精品视频| 色婷婷精品久久二区二区蜜臀av| 国产欧美综合在线| 国产精品资源在线| 欧美岛国在线观看| 秋霞国产午夜精品免费视频| 91久久香蕉国产日韩欧美9色| 国产午夜亚洲精品羞羞网站| 久99久精品视频免费观看| 欧美精品xxxxbbbb| 亚洲成人av中文| 欧美三级视频在线播放| 亚洲美女偷拍久久| 色八戒一区二区三区| 亚洲色图在线视频| 色综合久久综合网| 亚洲最大成人网4388xx| 欧美午夜电影一区| 亚洲国产中文字幕| 欧美久久久久中文字幕| 日韩精品一级二级 |