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

📄 fifo.h

📁 Keil下移植好的lwip基于c166
💻 H
字号:
#ifndef FIFO_H
#define FIFO_H

#include "lwip/sys.h"

/** How many bytes in fifo */
#define FIFOSIZE 2048

/** fifo data structure, this one is passed to all fifo functions */
typedef struct fifo_t {
  u8_t data[FIFOSIZE+10]; /// data segment, +10 is a hack probably not needed.. FIXME!
  int dataslot;			  /// index to next char to be read
  int emptyslot;		  /// index to next empty slot
  int len;				  /// len probably not needed, may be calculated from dataslot and emptyslot in conjunction with FIFOSIZE

  sys_sem_t sem;		/// semaphore protecting simultaneous data manipulation
  sys_sem_t getSem;		/// sepaphore used to signal new data if getWaiting is set
  u8_t getWaiting;		/// flag used to indicate that fifoget is waiting for data. fifoput is suposed to clear 
  						/// this flag prior to signaling the getSem semaphore
} fifo_t;


/**
*   Get a character from fifo
*   Blocking call.
*	@param 	pointer to fifo data structure
*	@return	character read from fifo
*/
u8_t fifoGet(fifo_t * fifo);

/**
*   Get a character from fifo
*   Non blocking call.
*	@param 	pointer to fifo data structure
*	@return	character read from fifo, or < zero if non was available
*/
s16_t fifoGetNonBlock(fifo_t * fifo);

/**
*	fifoput is called by the signalhandler when new data has arrived (or some other event is indicated)
*   fifoput reads directly from the serialport and is thus highly dependent on unix arch at this moment
*	@param 	fifo pointer to fifo data structure
*	@param	fd	unix file descriptor
*/
void fifoPut(fifo_t * fifo, int fd);

/**
*   fifoinit initiate fifo
*	@param 	fifo	pointer to fifo data structure, allocated by the user
*/
void fifoInit(fifo_t * fifo);

#endif

⌨️ 快捷键说明

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