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

📄 queue.h

📁 SmartARM2400系列开发板全套资料
💻 H
字号:
/***********************************************Copyright (c)*********************************************
**                                Guangzou ZLG-MCU Development Co.,LTD.
**                                     
**                                       http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:			    queue.h
** Last modified Date:      2007-09-20
** Last Version:		    1.0
** Descriptions:		    数据队列中间件
**
**--------------------------------------------------------------------------------------------------------
** Created by:			    chengmingji
** Created date:		    2007-07-08
** Version:				    1.0
** Descriptions:		    
**
**--------------------------------------------------------------------------------------------------------
** Modified by:			    lixiaocheng
** Modified Date:		    2007-09-08
** Version:				    1.0
** Descriptions:		    对代码格式重新排版
**
*********************************************************************************************************/
#ifndef __QUEUE_H
#define __QUEUE_H

/*********************************************************************************************************
  队列操作返回
*********************************************************************************************************/
#ifndef NOT_OK
#define NOT_OK              -1                                          /* 参数错误                     */
#endif

#define QUEUE_OK            1                                           /* 操作成功                     */

#define QUEUE_FULL          8                                           /* 返回队列满状态               */
#define QUEUE_EMPTY         4                                           /* 返回队列空状态               */

/*********************************************************************************************************
  下面的宏定义是传递给用户处理队列满时,判断对立是FIFO,还是LIFO
*********************************************************************************************************/
#define Q_WRITE_MODE        1                                           /* 操作成功                     */
#define Q_WRITE_FRONT_MODE  2                                           /* 操作成功                     */

/*********************************************************************************************************
  定义数据队列的数据类型
*********************************************************************************************************/
#ifndef QUEUE_DATA_TYPE
#define QUEUE_DATA_TYPE     uint8
#endif

/*********************************************************************************************************
  定义数据队列结构体
*********************************************************************************************************/
typedef struct {
    QUEUE_DATA_TYPE     *Out;                                           /* 指向数据输出位置             */
    QUEUE_DATA_TYPE     *In;                                            /* 指向数据输入位置             */
    QUEUE_DATA_TYPE     *End;                                           /* 指向Buf的结束位置            */
    uint16              NData;                                          /* 队列中数据个数               */
    uint16              MaxData;                                        /* 队列中允许存储的数据个数     */
    
    uint8               (* ReadEmpty)();                                /* 读空处理函数                 */
    uint8               (* WriteFull)();                                /* 写满处理函数                 */
    QUEUE_DATA_TYPE     Buf[1];                                         /* 存储数据的空间               */
} DataQueue;

/*********************************************************************************************************
  如果用户自己写数据队列,可以定义这个宏开关就可关闭下面的函数声明
*********************************************************************************************************/
#ifndef IN_QUEUE

/*********************************************************************************************************
** Function name:           QueueCreate
** Descriptions:            初始化数据队列
** Input parameters:        Buf      :为队列分配的存储空间地址
**                          SizeOfBuf:为队列分配的存储空间大小(字节)
**                          ReadEmpty:为队列读空时处理程序
**                          WriteFull:为队列写满时处理程序
** Output parameters:       NONE
** Returned value:          NOT_OK  :参数错误
**                          QUEUE_OK:成功
*********************************************************************************************************/
int QueueCreate(void       *Buf,
                uint32      SizeOfBuf,
                uint8    (* ReadEmpty)(),
                uint8    (* WriteFull)()
               );
               
/*********************************************************************************************************
** Function name:           QueueRead
** Descriptions:            获取队列中的数据
** Input parameters:        Ret:存储返回的消息的地址
**                          Buf:指向队列的指针
** Output parameters:       NONE
** Returned value:          NOT_OK     :参数错误
**                          QUEUE_OK   :收到消息
**                          QUEUE_EMPTY:队列空
*********************************************************************************************************/
int QueueRead(QUEUE_DATA_TYPE *Ret, void *Buf);


/*********************************************************************************************************
** Function name:           QueueWrite
** Descriptions:            FIFO方式发送数据
** Input parameters:        Buf :指向队列的指针
**                          Data:发送的数据
** Output parameters:       NONE
** Returned value:          NOT_OK    : 参数错误
**                          QUEUE_FULL: 队列满
**                          QUEUE_OK  : 发送成功
*********************************************************************************************************/
int QueueWrite(void *Buf, QUEUE_DATA_TYPE Data);

/*********************************************************************************************************
** Function name:           QueueWriteFront
** Descriptions:            LIFO方式发送数据
** Input parameters:        Buf :指向队列的指针
**                          Data:发送的数据
** Output parameters:       NONE
** Returned value:          NOT_OK    : 参数错误
**                          QUEUE_FULL: 队列满
**                          QUEUE_OK  : 发送成功
*********************************************************************************************************/
int QueueWriteFront(void *Buf, QUEUE_DATA_TYPE Data);

/*********************************************************************************************************
** Function name:           QueueNData
** Descriptions:            取得队列中数据数
** Input parameters:        Buf :指向队列的指针
** Output parameters:       NONE
** Returned value:          队列包含数据数
*********************************************************************************************************/
uint16 QueueNData(void *Buf);


/*********************************************************************************************************
** Function name:           QueueSize
** Descriptions:            取得队列总容量
** Input parameters:        Buf :指向队列的指针
** Output parameters:       NONE
** Returned value:          队列总容量
*********************************************************************************************************/
uint16 QueueSize(void *Buf);

/*********************************************************************************************************
** Function name:           OSQFlush
** Descriptions:            清空队列
** Input parameters:        Buf :指向队列的指针
** Output parameters:       NONE
** Returned value:          NONE
*********************************************************************************************************/
void QueueFlush(void *Buf);

#endif                                                                  /* IN_QUEUE                     */
/*********************************************************************************************************
   对中间件队列函数进行剪裁,如果是以.a方式提供该驱动库,该宏只表示那些函数是被剪裁了
*********************************************************************************************************/
#define EN_QUEUE_WRITE            1                                     /* 禁止(0)或允许(1)FIFO发送数据 */
#define EN_QUEUE_WRITE_FRONT      0                                     /* 禁止(0)或允许(1)LIFO发送数据 */
#define EN_QUEUE_NDATA            0                                     /* 禁止(0)或允许(1)取得队列     */
                                                                        /* 数据数目                     */
                                                                        
#define EN_QUEUE_SIZE             0                                     /* 禁止(0)或允许(1)取得队列     */
                                                                        /* 数据总容量                   */
                                                                        
#define EN_QUEUE_FLUSH            1                                     /* 禁止(0)或允许(1)清空队列     */


#endif                                                                  /* __QUEUE_H                    */
/*********************************************************************************************************
   END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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