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

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

?? probe_com.c

?? ucos2.86版本結合STM板極支持包
?? C
?? 第 1 頁 / 共 5 頁
字號:
    tx_buf_start = tx_buf;                                          /* Save beginning of TX buffer in case packet           */
                                                                    /*  ... ends up being too long.                         */
    tx_length    = PROBE_COM_SIZE_TX_HEADER;                        /* Initial TX packet length = 4 = size of header        */

    if (rx_pkt_sz  < 7) {                                           /* If the RX data packet is NOT expected size           */
                                                                    /*        =  2      (= Rx header size   )               */
                                                                    /*        +  5      (= 1 item descriptor)               */
        return (ProbeCom_CmdError(tx_buf, PROBE_COM_STATUS_RX_PKT_WRONG_SIZE));
    }

                                                                    /* No error (yet)                                       */
                                                                    /*  (a) Save TX data segment header                     */
    tx_buf[0]  = PROBE_COM_FMT_TX_MULTIPLE_RD_LO;                   /*          (i) TX packet format                        */
    tx_buf[1]  = PROBE_COM_FMT_TX_MULTIPLE_RD_HI;
    tx_buf[2]  = PROBE_COM_STATUS_OK;                               /*         (ii) Target status                           */
    tx_buf[3]  = ProbeCom_PktModifier();                            /*        (iii) Modifier                                */
    tx_buf    += PROBE_COM_SIZE_TX_HEADER;

    rx_pkt_ix  = 7;                                                 /*  (b) Receive packet index after first item           */
                                                                    /*        =  2      (= Rx header size   )               */
                                                                    /*        +  5      (= 1 item descriptor)               */

#if (PROBE_COM_STAT_EN == DEF_ENABLED)
    sym_ctr      = 0;
    sym_byte_ctr = 0;
#endif
                                                                    /*  (c) Store data for each item                        */
    while (rx_pkt_ix <= rx_pkt_sz) {
        nbytes     =  rx_buf[0];
        addr       = (rx_buf[4] << 8) + rx_buf[3];
        addr       = (addr      << 8) + rx_buf[2];
        addr       = (addr      << 8) + rx_buf[1];

        rx_buf    += 5;

        tx_length += nbytes;                                        /*        (iii) Add number of bytes to pkt len.         */

        if (tx_length > tx_buf_sz) {                                /*         (iv) Will be too long for TX buffer?         */
            tx_buf = tx_buf_start;
            return (ProbeCom_CmdError(tx_buf, PROBE_COM_STATUS_TX_PKT_TOO_LARGE));
        }

#if (PROBE_COM_STAT_EN == DEF_ENABLED)
        sym_ctr++;                                                  /*          (v) Increment local sym. counter            */
        sym_byte_ctr += nbytes;
#endif

        Mem_Copy((void *)tx_buf, (void *)((CPU_ADDR)addr), nbytes); /*         (vi) Otherwise, save TX data                 */

        tx_buf    += nbytes;
        rx_pkt_ix += 5;
    }

#if (PROBE_COM_STAT_EN == DEF_ENABLED)
        ProbeCom_TxSymCtr     += sym_ctr;                           /* Increment global sym. counter                        */
        ProbeCom_TxSymByteCtr += sym_byte_ctr;
#endif

    return (tx_length);
}


/*
*********************************************************************************************************
*                                    Respond to FMT_STR_GET Command
*
* Description: This routine is called to parse the FMT_STR_GET command.  This command asks the target
*              to send a string that it is currently storing.
*
* Argument(s): rx_buf       is a pointer to the receive  buffer
*              tx_buf       is a pointer to the transmit buffer
*              rx_pkt_sz    is the size  of the receive  packet
*              tx_buf_sz    is the size  of the transmit buffer
*
* Returns    : The number of bytes written to the tx buffer.
*
* Note(s)    : (1) The RX format:
*
*                   (A) A 2-byte format  , indicating the data segment format;                      AND
*                   (B) A 2-byte padding.
*
*                         +-------------------------+-------------------------+
*                         |          Format         |         Padding         |
*                         +-------------------------+-------------------------+
*
*              (2) The TX format:
*                   (A) A 2-byte format  , indicating the data segment format;                      AND
*                   (B) A 1-byte status  , indicating the status after the request;                 AND
*                   (C) A 1-byte modifier;                                                          AND
*                   (d) A n-byte string  , the string which is stored in the target's buffer.
*
*                         +-------------------------+------------+------------+
*                         |          Format         |   Status   |  Modifier  |
*                         +-------------------------+------------+------------+
*                         |                       String                      |
*                         |                         .                         |
*                         |                         .                         |
*                         |                         .                         |
*                         +---------------------------------------------------+
*
*              (3) See Notes for ProbeCom_TxStr().
*********************************************************************************************************
*/

#if (PROBE_COM_SUPPORT_STR == DEF_TRUE)
static  CPU_INT16U  ProbeCom_CmdStrGet (CPU_INT08U  *rx_buf,
                                        CPU_INT08U  *tx_buf,
                                        CPU_INT16U   rx_pkt_sz,
                                        CPU_INT16U   tx_buf_sz)
{
    CPU_INT08U   error;
    CPU_INT32U   wr_ix;
    CPU_INT32U   rd_ix;
    CPU_INT16U   nbytes;

    CPU_INT32U   nbytes_rd;
    CPU_INT32U   rd_ix_n;
    CPU_INT08U  *tx_buf_p;


    error  = PROBE_COM_STATUS_OK;
    wr_ix  = ProbeComStrBufWrIx;
    rd_ix  = ProbeComStrBufRdIx;
    nbytes = 0;

    if (rx_pkt_sz == 4) {                                           /* If RX data segment is the expected size              */
                                                                    /*        =  2      (= Rx header size)                  */
                                                                    /*        +  2      (= Padding       )                  */

        if (wr_ix == rd_ix) {                                       /*  (a) If there is NO string, then error               */
            error = PROBE_COM_STATUS_STR_NONE;
        }

    } else {                                                        /* If RX data segment is NOT the expected size          */

        error = PROBE_COM_STATUS_RX_PKT_WRONG_SIZE;
    }

    if (error != PROBE_COM_STATUS_OK) {                             /* Error                                                */
        return (ProbeCom_CmdError(tx_buf, error));

    } else {                                                        /* No error                                             */
                                                                    /*  (a) Save TX data segment header                     */
        ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_TX_STR_GET);      /*          (i) TX packet format                        */
        ProbeCom_StoINT8U( &tx_buf, PROBE_COM_STATUS_OK);           /*         (ii) Target status                           */
        ProbeCom_StoINT8U( &tx_buf, 0);                             /*        (iii) Modifier                                */

        tx_buf_p = tx_buf;

        if (wr_ix > rd_ix) {                                        /*  (b) If wr_ix > rd_ix                                */
                                                                    /*  ... Store in pkt the bytes [rd_ix, wr_ix)           */

            nbytes_rd = wr_ix - rd_ix;                              /*          (i) Calculate num. bytes to read            */

            if (nbytes_rd >= tx_buf_sz - PROBE_COM_SIZE_TX_HEADER - 1) {    /* (ii) If too much to fit in packet            */
                                                                    /*         .... Store only [rd_ix,rd_ix + tx_buf_sz - 5)*/
                                                                    /*         .... Where 5 = 1 (NULL byte)                 */
                                                                    /*                      + 4 (TX header)                 */
                nbytes_rd = tx_buf_sz - PROBE_COM_SIZE_TX_HEADER - 1;
                rd_ix_n   = rd_ix + tx_buf_sz - PROBE_COM_SIZE_TX_HEADER;

            } else {
                rd_ix_n   = wr_ix;
            }

            nbytes = nbytes_rd;                                     /*        (iii) Store number of bytes read              */
                                                                    /*         (iv) Read from the string buffer             */
            Mem_Copy((void *)tx_buf, (void *)&ProbeComStrBuf[rd_ix], nbytes_rd);

            ProbeComStrBufRdIx = rd_ix_n;                           /*          (v) Update global read index                */

        } else {                                                    /*  (c) If wr_ix < rd_ix                                */
                                                                    /*  ... Store in pkt the bytes [rd_ix, end_ix)          */
                                                                    /*  ... Then store in pkt the bytes [0, wr_ix)          */

            nbytes_rd = PROBE_COM_STR_BUF_SIZE - rd_ix;             /*          (i) Calculate num. bytes to read            */

            if (nbytes_rd >= tx_buf_sz - PROBE_COM_SIZE_TX_HEADER - 1) {    /* (ii) If to much to fit in packet             */
                                                                    /*         .... Store only [rd_ix, rd_ix + tx_buf_sz)   */

                nbytes  = tx_buf_sz - PROBE_COM_SIZE_TX_HEADER - 1; /*              (A) Store number of bytes read          */
                rd_ix_n = rd_ix + tx_buf_sz - PROBE_COM_SIZE_TX_HEADER;
                                                                    /*              (B) Read from string buffer             */
                Mem_Copy((void *)tx_buf, (void *)&ProbeComStrBuf[rd_ix], nbytes);

                ProbeComStrBufRdIx  = rd_ix_n;                      /*              (C) Update global read index            */

            } else {                                                /*         (iii) If not too much for packet             */

                                                                    /*               ------- [rd_ix, end_ix) ------         */

                nbytes  = nbytes_rd;                                /*              (A) Store number of bytes read          */
                rd_ix_n = 0;                                        /*              (B) Buffer read ix after read           */

                                                                    /*              (C) Read from the string buffer         */
                Mem_Copy((void *)tx_buf, (void *)&ProbeComStrBuf[rd_ix], nbytes_rd);
                rd_ix     = rd_ix_n;                                /*              (D) Update local read index             */

                                                                    /*               --------- [0, wr_ix) ---------         */
                tx_buf   += nbytes_rd;
                nbytes_rd = wr_ix;                                  /*              (E) Number of bytes to read             */

                                                                    /*              (F) Too much to fit in packet           */
                if (nbytes_rd + nbytes >= tx_buf_sz - PROBE_COM_SIZE_TX_HEADER - 1) {
                                                                    /*              ... Store only [0, tx_buf_sz - 5]       */
                    nbytes_rd = tx_buf_sz - nbytes - PROBE_COM_SIZE_TX_HEADER - 1;
                }

                nbytes  += nbytes_rd;                               /*              (G) Update total num. bytes read        */
                rd_ix_n  = rd_ix + nbytes_rd;                       /*              (H) Buffer read ix after read           */

                                                                    /*              (I) Read from the string buffer         */
                Mem_Copy((void *)tx_buf, (void *)&ProbeComStrBuf[rd_ix], nbytes_rd);

                ProbeComStrBufRdIx = rd_ix_n;                       /*              (J) Update global read index            */
            }
        }

      *(tx_buf_p + nbytes) = 0;

#if (PROBE_COM_STAT_EN == DEF_ENABLED)
        ProbeCom_TxStrCtr += nbytes;
#endif

        return (nbytes + PROBE_COM_SIZE_TX_HEADER + 1);             /*  (d) Return TX data segment size                     */
                                                                    /*        =  nbytes (= String    size)                  */
                                                                    /*        +  4      (= Tx header size)                  */
                                                                    /*        +  1      (= NULL byte     )                  */
    }
}
#endif


/*
*********************************************************************************************************
*********************************************************************************************************
**                                    Static Buffer Functions
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                 GET DATA FROM DATA SEGMENT BUFFER
*
* Description: This routine is called to retrieve data from a buffer.
*
* Argument(s): None.
*
* Returns    : Either an 8-, 16-, or 32-bit datum.
*********************************************************************************************************
*/

static  CPU_INT08U  ProbeCom_GetINT8U (CPU_INT08U **buf)
{
    return (*((*buf)++));
}


static  CPU_INT16U  ProbeCom_GetINT16U (CPU_INT08U **buf)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区观看视频| 国产欧美精品一区| 日韩一区有码在线| 久久国产福利国产秒拍| 欧美午夜电影一区| 久久久久久久综合狠狠综合| 亚洲国产精品一区二区www在线| 久久精品国产精品亚洲精品| 欧美亚洲国产bt| 欧美激情在线一区二区三区| 亚洲电影一级片| eeuss鲁片一区二区三区在线观看| 91在线免费播放| 精品毛片乱码1区2区3区| 亚洲国产综合人成综合网站| 成人综合在线视频| 久久精品综合网| 精品一区二区三区蜜桃| 日韩欧美二区三区| 日韩av一区二区三区四区| 九九热在线视频观看这里只有精品| 高清不卡在线观看av| 欧美激情综合五月色丁香| 国产aⅴ综合色| 欧美一级高清片在线观看| 一区二区激情视频| 91精品国产综合久久精品性色| 亚洲一区二区av在线| 欧美日韩高清一区二区三区| 亚洲国产一区二区三区| 欧美网站一区二区| 日本美女一区二区| 国产欧美一区视频| 国产不卡视频在线观看| 欧美日韩国产精选| 亚洲女同ⅹxx女同tv| 图片区小说区区亚洲影院| 天天影视色香欲综合网老头| 国产伦精品一区二区三区免费| 美女视频网站久久| 欧美群妇大交群的观看方式| 欧美精品久久一区二区三区| 国产亚洲欧洲997久久综合 | 国产麻豆精品theporn| 91亚洲永久精品| 欧美午夜精品理论片a级按摩| 一本色道久久综合亚洲aⅴ蜜桃| 777欧美精品| 日韩成人午夜精品| 欧美午夜精品一区二区蜜桃| 精品久久久久久亚洲综合网| 午夜精品免费在线| 91成人在线免费观看| 亚洲猫色日本管| 成人一区二区在线观看| 国产精品久久久久三级| 成人av高清在线| 亚洲视频一区在线观看| av电影在线观看一区| 一级特黄大欧美久久久| 欧洲精品一区二区三区在线观看| 精品国产成人在线影院| 国产99久久久国产精品潘金| 国产目拍亚洲精品99久久精品| caoporn国产精品| 国产精品伦理在线| 欧美精品精品一区| 国产伦精一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 欧美午夜精品免费| 国产精品一区二区x88av| 依依成人精品视频| 欧美日韩国产精品成人| 国产不卡在线视频| 亚洲大片精品永久免费| 国产亚洲综合在线| 欧美狂野另类xxxxoooo| 麻豆精品一区二区三区| 亚洲日本乱码在线观看| 欧美精品一区视频| av电影天堂一区二区在线| 日本在线播放一区二区三区| 国产精品狼人久久影院观看方式| 色婷婷综合视频在线观看| 久久激情五月激情| 中文字幕综合网| 精品奇米国产一区二区三区| 国产盗摄精品一区二区三区在线 | 久久久青草青青国产亚洲免观| 波多野结衣视频一区| 日韩不卡在线观看日韩不卡视频| 欧美sm极限捆绑bd| 国产欧美精品一区二区三区四区| 成人高清视频在线| 中文字幕一区二区三区乱码在线| 在线观看av一区| 亚洲午夜精品一区二区三区他趣| 日韩免费高清视频| 久久成人免费电影| 91精品国产免费| 在线观看欧美精品| 在线观看亚洲精品| 欧美日韩一区二区在线观看视频| 日本高清不卡aⅴ免费网站| 国产在线不卡视频| 国产在线播放一区二区三区| 国产一区二区三区高清播放| 国产综合久久久久久鬼色| 国产专区综合网| 蜜桃精品视频在线| 欧美aaaaa成人免费观看视频| 日本一区中文字幕| 激情久久五月天| 99re热这里只有精品视频| 不卡的av电影| 在线观看www91| 精品国产一区二区三区av性色| 欧美亚洲另类激情小说| 欧美日韩一二三| 欧美激情一区二区三区蜜桃视频| 国产三级一区二区| 中文字幕一区二区5566日韩| 欧美高清在线精品一区| 午夜精品久久久久| 国产电影精品久久禁18| 欧美日本一区二区| 国产精品久久久久久亚洲毛片| 日本视频在线一区| 91亚洲精品久久久蜜桃| 欧美剧情片在线观看| 国产三级欧美三级日产三级99 | 国产福利一区二区三区视频| 欧美在线免费播放| 亚洲精品视频一区二区| 粉嫩av一区二区三区粉嫩| 欧美大胆人体bbbb| 亚洲一区成人在线| 91浏览器打开| 精品国产电影一区二区| 亚洲伊人色欲综合网| 欧美日韩国产高清一区| 三级一区在线视频先锋| 69久久夜色精品国产69蝌蚪网| 亚洲一区二区三区四区不卡| 97久久久精品综合88久久| 亚洲欧洲色图综合| 一本大道久久a久久精品综合| ㊣最新国产の精品bt伙计久久| 不卡视频一二三| 亚洲裸体在线观看| 欧美精品在线视频| 理论电影国产精品| 日韩欧美在线影院| 国产老妇另类xxxxx| 亚洲丝袜自拍清纯另类| 欧美视频一区在线| 国产一区啦啦啦在线观看| 国产性色一区二区| 色偷偷久久一区二区三区| 蜜臀国产一区二区三区在线播放| 欧美电影免费观看高清完整版 | 色老汉av一区二区三区| 亚洲另类中文字| 久久精品视频在线看| 欧美色网站导航| 成人黄色在线看| 久久99精品久久只有精品| 久国产精品韩国三级视频| 婷婷六月综合亚洲| 久久久亚洲精品一区二区三区| 国产成人在线影院| 激情综合一区二区三区| 亚洲午夜一区二区| 免费在线看一区| 亚洲一区二区在线播放相泽| 久久久久久久一区| 欧美一区欧美二区| 欧美精品丝袜久久久中文字幕| 不卡在线视频中文字幕| 美国十次了思思久久精品导航| 亚洲午夜影视影院在线观看| 国产色产综合色产在线视频| 26uuu亚洲| 精品毛片乱码1区2区3区| 欧美午夜电影在线播放| 欧美在线视频全部完| 91国产视频在线观看| 色综合久久久久综合99| www.成人网.com| 91亚洲精品乱码久久久久久蜜桃 | 不卡一区二区在线| 国产91精品一区二区麻豆亚洲| 激情av综合网| 国产成人精品免费| 99久久精品国产一区| 色噜噜狠狠成人中文综合| 成人动漫av在线| 99re视频精品| 粉嫩一区二区三区性色av| 精品伊人久久久久7777人|