⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.c

📁 JENNIC无线传感器网络 ZIGBEE 文件资料
💻 C
字号:
/**************************************************************************** * * MODULE:             Queue * * COMPONENT:          queue.c,v * * VERSION:            AT-Jenie_Release_v1_RC3 * * REVISION:           1.3 * * DATED:              2007/09/25 09:03:21 * * STATUS:             Exp * * AUTHOR:             MRW * * DESCRIPTION:			Generic FIFO queue * *  * CHANGE HISTORY: * * queue.c,v * * *  * LAST MODIFIED BY:   mwild *                     $Modtime: $ * **************************************************************************** * *  (c) Copyright 2007 JENNIC Ltd * ****************************************************************************//****************************************************************************//***        Include files                                                 ***//****************************************************************************/#include <jendefs.h>#include "interrupt.h"#include "queue.h"/****************************************************************************//***        Macro Definitions                                             ***//****************************************************************************//****************************************************************************//***        Type Definitions                                              ***//****************************************************************************//****************************************************************************//***        Local Function Prototypes                                     ***//****************************************************************************//****************************************************************************//***        Exported Variables                                            ***//****************************************************************************//****************************************************************************//***        Local Variables                                               ***//****************************************************************************//****************************************************************************//***        Exported Functions                                            ***//****************************************************************************//****************************************************************************//***        Local Functions                                               ***//****************************************************************************//**************************************************************************** * * NAME: vQueue_AddItem * * DESCRIPTION: * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PUBLIC void vQueue__AddItem(tsQueue *psQueue, uint8 u8Item){    if (psQueue->u16Count < psQueue->u16Size)    {        /* Space available in buffer so add data */        psQueue->u8Buff[psQueue->u16Head++] = u8Item;        if (psQueue->u16Head == psQueue->u16Size) {            psQueue->u16Head = 0;        }        /* read, modify write operation must be atomic */        vInterrupt_Suspend();        psQueue->u16Count++;        vInterrupt_Resume();    }}/**************************************************************************** * * NAME: u8Queue_RemoveItem * * DESCRIPTION: * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PUBLIC uint8 u8Queue__RemoveItem(tsQueue *psQueue){    uint8 u8Item = 0;    if (psQueue->u16Count > 0)    {        /* Data available in buffer so remove data */        u8Item = psQueue->u8Buff[psQueue->u16Tail++];        if (psQueue->u16Tail == psQueue->u16Size) {            psQueue->u16Tail = 0;        }        /* read, modify write operation must be atomic */        vInterrupt_Suspend();        psQueue->u16Count--;        vInterrupt_Resume();    }    return u8Item;}/**************************************************************************** * * NAME: bQueue_Empty * * DESCRIPTION: * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PUBLIC bool_t bQueue__Empty(tsQueue *psQueue){    return psQueue->u16Count == 0;}/**************************************************************************** * * NAME: bQueue_Full * * DESCRIPTION: * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PUBLIC bool_t bQueue__Full(tsQueue *psQueue){    return psQueue->u16Count == psQueue->u16Size;}/**************************************************************************** * * NAME: vQueue_Flush * * DESCRIPTION: * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PUBLIC void vQueue__Flush(tsQueue *psQueue){    vInterrupt_Suspend();    psQueue->u16Count = psQueue->u16Head = psQueue->u16Tail = 0;    vInterrupt_Resume();}/**************************************************************************** * * NAME: vQueue_Count * * DESCRIPTION: * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * Count of number if items in queue * * NOTES: * None. ****************************************************************************/PUBLIC uint16 u16Queue__Count(tsQueue *psQueue){    return psQueue->u16Count;}/****************************************************************************//***        END OF FILE                                                   ***//****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -