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

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

?? serialq.c

?? Zigbee無線網絡節點的串口控制LED燈
?? C
字號:
/****************************************************************************
 *
 * MODULE:             uart.c
 *
 * COMPONENT:          $RCSfile: serialq.c,v $
 *
 * VERSION:            $Name:  $
 *
 * REVISION:           $Revision: 1.1 $
 *
 * DATED:              $Date: 2008/01/30 09:52:07 $
 *
 * STATUS:             $State: Exp $
 *
 * AUTHOR:             Ian Morris
 *
 * DESCRIPTION
 *
 * CHANGE HISTORY:
 *
 * $Log: serialq.c,v $ * Revision 1.1  2008/01/30 09:52:07  lmitch * Updated to work with new SDK * * Revision 1.1  2006/07/24 14:40:11  rmm * First Release 1v0 (Based on Application Note JN-AN-1005-Wireless-UART Version 1.5). *
 *
 *
 * LAST MODIFIED BY:   $Author: lmitch $
 *                     $Modtime: $
 *
 *
 ****************************************************************************
 * * This software is owned by Jennic and/or its supplier and is protected * under applicable copyright laws. All rights are reserved. We grant You, * and any third parties, a license to use this software solely and * exclusively on Jennic products. You, and any third parties must reproduce * the copyright and warranty notice and any other legend of ownership on each * copy or partial copy of the software. * * THIS SOFTWARE IS PROVIDED "AS IS". JENNIC MAKES NO WARRANTIES, WHETHER * EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, * ACCURACY OR LACK OF NEGLIGENCE. JENNIC SHALL NOT, IN ANY CIRCUMSTANCES, * BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, SPECIAL, * INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON WHATSOEVER. * * Copyright Jennic Ltd 2005, 2006, 2007. All rights reserved * ****************************************************************************/
/****************************************************************************/
/***        Include files                                                 ***/
/****************************************************************************/
#include <jendefs.h>
#include <AppHardwareApi.h>

#include "serialq.h"

/****************************************************************************/
/***        Macro Definitions                                             ***/
/****************************************************************************/
#define MAX_CIRCBUFF_SIZE   128
#define NBR_QUEUES          2

/****************************************************************************/
/***        Type Definitions                                              ***/
/****************************************************************************/
typedef struct
{
    uint8  u8Head;
    uint8  u8Tail;
    uint8  u8Count;
    uint8  u8Buff[MAX_CIRCBUFF_SIZE];
} tsCircBuff;

/****************************************************************************/
/***        Local Function Prototypes                                     ***/
/****************************************************************************/

/****************************************************************************/
/***        Exported Variables                                            ***/
/****************************************************************************/

/****************************************************************************/
/***        Local Variables                                               ***/
/****************************************************************************/
PRIVATE tsCircBuff sRxQueue, sTxQueue;
PRIVATE const tsCircBuff *apsQueueList[NBR_QUEUES] = { &sRxQueue, &sTxQueue };

/****************************************************************************/
/***        Exported Functions                                            ***/
/****************************************************************************/

/****************************************************************************/
/***        Local Functions                                               ***/
/****************************************************************************/
PRIVATE void vSerialQ_Flush(eQueueRef eQueue);

/****************************************************************************
 *
 * NAME: vSerialQ_Init
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PUBLIC void vSerialQ_Init(void)
{
    vSerialQ_Flush(RX_QUEUE);
    vSerialQ_Flush(TX_QUEUE);
}

/****************************************************************************
 *
 * NAME: vSerialQ_AddItem
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PUBLIC void vSerialQ_AddItem(eQueueRef eQueue, uint8 u8Item)
{
    tsCircBuff *psQueue;

    psQueue = (tsCircBuff *)apsQueueList[eQueue]; /* Set pointer to the requested queue */

    if(!bSerialQ_Full(eQueue))
    {
        psQueue->u8Buff[psQueue->u8Head] = u8Item;
        psQueue->u8Head = (psQueue->u8Head + 1) % MAX_CIRCBUFF_SIZE;
        psQueue->u8Count++;
    }
}

/****************************************************************************
 *
 * NAME: u8SerialQ_RemoveItem
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PUBLIC uint8 u8SerialQ_RemoveItem(eQueueRef eQueue)
{
    uint8 u8Item = 0;
    tsCircBuff *psQueue;

    psQueue = (tsCircBuff *)apsQueueList[eQueue]; /* Set pointer to the requested queue */

    if(!bSerialQ_Empty(eQueue))
    {
        u8Item = psQueue->u8Buff[psQueue->u8Tail];
        psQueue->u8Tail = (psQueue->u8Tail + 1) % MAX_CIRCBUFF_SIZE;
        psQueue->u8Count--;
    }
    return(u8Item);
}

/****************************************************************************
 *
 * NAME: bSerialQ_Empty
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PUBLIC bool_t bSerialQ_Empty(eQueueRef eQueue)
{
    bool_t bResult = FALSE;
    tsCircBuff *psQueue;

    psQueue = (tsCircBuff *)apsQueueList[eQueue]; /* Set pointer to the requested queue */

    if(psQueue->u8Count == 0U)
    {
        bResult = TRUE;
    }

    return(bResult);
}

/****************************************************************************
 *
 * NAME: bSerialQ_Full
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PUBLIC bool_t bSerialQ_Full(eQueueRef eQueue)
{
    bool_t bResult = FALSE;
    tsCircBuff *psQueue;

    psQueue = (tsCircBuff *)apsQueueList[eQueue]; /* Set pointer to the requested queue */

    if(psQueue->u8Count == MAX_CIRCBUFF_SIZE)
    {
	    bResult = TRUE;
    }

    return(bResult);
}

/****************************************************************************
 *
 * NAME: vSerialQ_Flush
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vSerialQ_Flush(eQueueRef eQueue)
{
    tsCircBuff *psQueue;

    psQueue = (tsCircBuff *)apsQueueList[eQueue]; /* Set pointer to the requested queue */

    psQueue->u8Head  = 0;
    psQueue->u8Tail  = 0;
    psQueue->u8Count = 0;
}

/****************************************************************************/
/***        END OF FILE                                                   ***/
/****************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色手机在线观看| 92精品国产成人观看免费| 亚洲免费在线播放| 最好看的中文字幕久久| 国产精品美女www爽爽爽| 国产女同性恋一区二区| 久久精品人人做人人综合| 久久亚洲精精品中文字幕早川悠里| 欧美日本在线观看| 在线成人av网站| 欧美一级高清片| 久久久久久免费网| 国产精品丝袜一区| 亚洲欧美日韩在线不卡| 亚洲老司机在线| 日韩激情视频在线观看| 免费在线观看一区二区三区| 免费成人深夜小野草| 国产在线麻豆精品观看| 成人综合在线观看| 在线观看成人免费视频| 欧美一级理论性理论a| 久久久久亚洲综合| 亚洲色图欧美在线| 亚洲成人精品一区| 精品一区二区三区av| 国产suv精品一区二区6| 色婷婷综合久久久| 日韩欧美一区二区视频| 国产女人水真多18毛片18精品视频 | 国产精品久久久久久久第一福利| 国产精品久久久久久久久免费桃花 | 国产乱国产乱300精品| 成人小视频在线| 欧美精品在线观看一区二区| 337p日本欧洲亚洲大胆色噜噜| 国产精品国产a| 日韩高清在线观看| 成人毛片在线观看| 欧美另类久久久品| 欧美成人aa大片| 亚洲三级电影全部在线观看高清| 亚洲va欧美va国产va天堂影院| 久久国产婷婷国产香蕉| 色综合久久88色综合天天| 亚洲色图视频网站| 国产一区二区三区在线观看精品 | 在线免费观看一区| 亚洲精品一区二区三区四区高清 | 日本韩国视频一区二区| 2019国产精品| 天堂久久一区二区三区| 成人免费黄色在线| www日韩大片| 日韩中文字幕1| av一区二区三区| 亚洲精品一区二区三区蜜桃下载| 亚洲女人的天堂| 成人一区二区三区视频在线观看| 5566中文字幕一区二区电影| 国产精品的网站| 懂色av一区二区三区蜜臀| 欧美肥妇毛茸茸| 亚洲综合一二区| 91蜜桃婷婷狠狠久久综合9色| 精品国免费一区二区三区| 天天做天天摸天天爽国产一区 | 成人精品鲁一区一区二区| 日韩视频国产视频| 日韩精品91亚洲二区在线观看 | 久久爱www久久做| 91精品国产黑色紧身裤美女| 中文字幕日本乱码精品影院| 国产福利一区在线| 久久综合色之久久综合| 美国欧美日韩国产在线播放| 欧美色视频在线观看| 一区二区国产视频| 91免费精品国自产拍在线不卡 | 亚洲国产经典视频| 国产伦精品一区二区三区在线观看| 91精品免费在线| 青草av.久久免费一区| 亚洲人成网站精品片在线观看 | 亚洲一区影音先锋| 欧美系列一区二区| 五月婷婷综合网| 在线播放日韩导航| 蜜芽一区二区三区| 精品成人一区二区三区| 韩国午夜理伦三级不卡影院| 国产日韩精品一区二区三区在线| 九九久久精品视频| 国产欧美精品一区二区色综合朱莉| 国产成人综合网| 亚洲三级小视频| 欧美日韩国产色站一区二区三区| 三级欧美在线一区| 26uuu国产电影一区二区| 国产乱码一区二区三区| 国产精品理论片| 在线免费亚洲电影| 日本不卡一区二区| 国产精品三级av| 欧美亚洲免费在线一区| 久久精品国产在热久久| 亚洲国产高清在线| 欧美日本在线播放| 国产69精品久久久久毛片| 综合久久给合久久狠狠狠97色 | 日韩久久精品一区| 久久久久久久网| 色系网站成人免费| 毛片av一区二区| 亚洲另类在线一区| 久久综合九色综合欧美98| 日本黄色一区二区| 国产美女精品一区二区三区| 国产精品福利电影一区二区三区四区| 欧美性色黄大片| 国产精品99久久久久久宅男| 亚洲国产日韩a在线播放 | bt欧美亚洲午夜电影天堂| 一区二区国产盗摄色噜噜| 精品日产卡一卡二卡麻豆| 成人午夜免费视频| 美女看a上一区| 亚洲欧美另类在线| 久久久噜噜噜久噜久久综合| 欧美日韩中文国产| 91在线视频网址| 国产精品系列在线观看| 日韩国产精品久久久| ㊣最新国产の精品bt伙计久久| 欧美一区二区私人影院日本| 91亚洲精华国产精华精华液| 久久国产综合精品| 日韩高清一级片| 亚洲国产日韩av| 亚洲欧美另类久久久精品2019| 久久精品欧美日韩| 精品99一区二区三区| 中文字幕综合网| 日韩欧美激情一区| 三级影片在线观看欧美日韩一区二区| 欧美在线free| 色婷婷亚洲综合| 99re热这里只有精品免费视频| 国产伦理精品不卡| 国产电影一区在线| 韩国精品一区二区| 精品在线一区二区三区| 奇米在线7777在线精品| 日本不卡视频在线| 美洲天堂一区二卡三卡四卡视频| 午夜视频一区二区| 天天色 色综合| 美国毛片一区二区| 激情综合网最新| 国产精品一区二区在线观看网站| 久久91精品国产91久久小草| 美女视频黄久久| 精品亚洲成a人在线观看 | 久久99精品国产91久久来源| 肉色丝袜一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 捆绑调教一区二区三区| 欧美日韩一区二区电影| 欧美日韩在线精品一区二区三区激情| 欧美性做爰猛烈叫床潮| 欧美日韩一区二区三区在线看| 欧美高清dvd| 久久精品一区二区| 国产精品福利影院| 亚洲电影欧美电影有声小说| 亚洲国产日韩av| 国产一区免费电影| 91麻豆免费视频| 日韩一区二区三区视频| 精品国产精品一区二区夜夜嗨 | 99国内精品久久| 91精品黄色片免费大全| 精品av综合导航| 亚洲精品国久久99热| 日韩激情视频网站| 懂色一区二区三区免费观看| 91片在线免费观看| 日韩欧美中文一区二区| 国产免费成人在线视频| 亚洲午夜免费福利视频| 六月丁香婷婷色狠狠久久| 成人av电影在线| 91精品国产欧美一区二区| 国产欧美日韩在线| 日韩激情视频网站| 91浏览器在线视频| 久久久亚洲精品石原莉奈| 亚洲综合色婷婷| 国产成a人亚洲精| 日韩欧美国产三级电影视频|