diff options
| author | hathach <[email protected]> | 2012-11-28 11:53:23 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2012-11-28 11:53:23 +0700 |
| commit | 851f5bfd06c837626ddf06f1c326970763d07010 (patch) | |
| tree | f8d2b65856ef7d9eb6e0f9ffd8e67ec0c46789f7 /tinyusb/common/fifo.h | |
| parent | a5eecb40555d5053393dd3d0916fa63bfa9a6b18 (diff) | |
make keyboard device work with lpc1347
Diffstat (limited to 'tinyusb/common/fifo.h')
| -rw-r--r-- | tinyusb/common/fifo.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tinyusb/common/fifo.h b/tinyusb/common/fifo.h new file mode 100644 index 000000000..1019c8bde --- /dev/null +++ b/tinyusb/common/fifo.h @@ -0,0 +1,76 @@ +/* + * fifo.h + * + * Created on: Nov 27, 2012 + * Author: hathach ([email protected]) + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach ([email protected]) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the tiny usb stack. + */ + +#ifndef _TUSB_FIFO_H_ +#define _TUSB_FIFO_H_ + +#include "common/common.h" + +/* ToDo: Describe each field in fifo_t */ +typedef struct _fifo_t +{ + uint8_t* buf; + uint16_t size; + volatile uint16_t len; + volatile uint16_t wr_ptr; + volatile uint16_t rd_ptr; + bool overwritable; + IRQn_Type irq; +} fifo_t; + +void fifo_init(fifo_t* f, uint8_t* buffer, uint16_t size, bool overwritable, IRQn_Type irq); +bool fifo_write(fifo_t* f, uint8_t data); +bool fifo_read(fifo_t* f, uint8_t *data); +uint16_t fifo_readArray(fifo_t* f, uint8_t * rx, uint16_t maxlen); +void fifo_clear(fifo_t*); + +static inline bool fifo_isEmpty(fifo_t* f) +{ + return (f->len == 0); +} + +static inline bool fifo_isFull(fifo_t* f) +{ + return (f->len == f->size); +} + +static inline uint16_t fifo_getLength(fifo_t* f) +{ + return f->len; +} + +#endif /* _TUSB_FIFO_H_ */ |
