Maxim Integrated / MAX30001EVSYSKIT
Committer:
Emre.Eken
Date:
Wed Jun 27 14:17:34 2018 +0300
Revision:
1:957e5bad16c2
first rev

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Emre.Eken 1:957e5bad16c2 1 /*******************************************************************************
Emre.Eken 1:957e5bad16c2 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
Emre.Eken 1:957e5bad16c2 3 *
Emre.Eken 1:957e5bad16c2 4 * Permission is hereby granted, free of charge, to any person obtaining a
Emre.Eken 1:957e5bad16c2 5 * copy of this software and associated documentation files (the "Software"),
Emre.Eken 1:957e5bad16c2 6 * to deal in the Software without restriction, including without limitation
Emre.Eken 1:957e5bad16c2 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
Emre.Eken 1:957e5bad16c2 8 * and/or sell copies of the Software, and to permit persons to whom the
Emre.Eken 1:957e5bad16c2 9 * Software is furnished to do so, subject to the following conditions:
Emre.Eken 1:957e5bad16c2 10 *
Emre.Eken 1:957e5bad16c2 11 * The above copyright notice and this permission notice shall be included
Emre.Eken 1:957e5bad16c2 12 * in all copies or substantial portions of the Software.
Emre.Eken 1:957e5bad16c2 13 *
Emre.Eken 1:957e5bad16c2 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
Emre.Eken 1:957e5bad16c2 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Emre.Eken 1:957e5bad16c2 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Emre.Eken 1:957e5bad16c2 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
Emre.Eken 1:957e5bad16c2 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
Emre.Eken 1:957e5bad16c2 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
Emre.Eken 1:957e5bad16c2 20 * OTHER DEALINGS IN THE SOFTWARE.
Emre.Eken 1:957e5bad16c2 21 *
Emre.Eken 1:957e5bad16c2 22 * Except as contained in this notice, the name of Maxim Integrated
Emre.Eken 1:957e5bad16c2 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
Emre.Eken 1:957e5bad16c2 24 * Products, Inc. Branding Policy.
Emre.Eken 1:957e5bad16c2 25 *
Emre.Eken 1:957e5bad16c2 26 * The mere transfer of this software does not imply any licenses
Emre.Eken 1:957e5bad16c2 27 * of trade secrets, proprietary technology, copyrights, patents,
Emre.Eken 1:957e5bad16c2 28 * trademarks, maskwork rights, or any other form of intellectual
Emre.Eken 1:957e5bad16c2 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
Emre.Eken 1:957e5bad16c2 30 * ownership rights.
Emre.Eken 1:957e5bad16c2 31 *
Emre.Eken 1:957e5bad16c2 32 ********************************************************************************
Emre.Eken 1:957e5bad16c2 33 */
Emre.Eken 1:957e5bad16c2 34 #ifndef _RPCFIFO_H_
Emre.Eken 1:957e5bad16c2 35 #define _RPCFIFO_H_
Emre.Eken 1:957e5bad16c2 36
Emre.Eken 1:957e5bad16c2 37 #include <stdint.h>
Emre.Eken 1:957e5bad16c2 38
Emre.Eken 1:957e5bad16c2 39 /// Structure used for FIFO management
Emre.Eken 1:957e5bad16c2 40 typedef struct {
Emre.Eken 1:957e5bad16c2 41 unsigned int length; ///< FIFO size (number of elements)
Emre.Eken 1:957e5bad16c2 42 void *data; ///< pointer to the FIFO buffer
Emre.Eken 1:957e5bad16c2 43 unsigned int rindex; ///< current FIFO read index
Emre.Eken 1:957e5bad16c2 44 unsigned int windex; ///< current FIFO write index
Emre.Eken 1:957e5bad16c2 45 } fifo_t;
Emre.Eken 1:957e5bad16c2 46
Emre.Eken 1:957e5bad16c2 47 /**
Emre.Eken 1:957e5bad16c2 48 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 49 * @param mem memory buffer to use for FIFO element storage
Emre.Eken 1:957e5bad16c2 50 * @param length number of elements that the memory buffer can contain
Emre.Eken 1:957e5bad16c2 51 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 52 */
Emre.Eken 1:957e5bad16c2 53 void fifo_init(fifo_t *fifo, void *mem, unsigned int length);
Emre.Eken 1:957e5bad16c2 54
Emre.Eken 1:957e5bad16c2 55 /**
Emre.Eken 1:957e5bad16c2 56 * @brief Adds and 8-bit element to the FIFO
Emre.Eken 1:957e5bad16c2 57 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 58 * @param element element to add to the FIFO
Emre.Eken 1:957e5bad16c2 59 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 60 */
Emre.Eken 1:957e5bad16c2 61 int fifo_put8(fifo_t *fifo, uint8_t element);
Emre.Eken 1:957e5bad16c2 62
Emre.Eken 1:957e5bad16c2 63 /**
Emre.Eken 1:957e5bad16c2 64 * @brief Gets the next 8-bit element to the FIFO
Emre.Eken 1:957e5bad16c2 65 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 66 * @param element pointer to where to store the element from the FIFO
Emre.Eken 1:957e5bad16c2 67 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 68 */
Emre.Eken 1:957e5bad16c2 69 int fifo_get8(fifo_t *fifo, uint8_t *element);
Emre.Eken 1:957e5bad16c2 70
Emre.Eken 1:957e5bad16c2 71 /**
Emre.Eken 1:957e5bad16c2 72 * @brief Adds the next 16-bit element to the FIFO
Emre.Eken 1:957e5bad16c2 73 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 74 * @param element element to add to the FIFO
Emre.Eken 1:957e5bad16c2 75 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 76 */
Emre.Eken 1:957e5bad16c2 77 int fifo_put16(fifo_t *fifo, uint16_t element);
Emre.Eken 1:957e5bad16c2 78
Emre.Eken 1:957e5bad16c2 79 /**
Emre.Eken 1:957e5bad16c2 80 * @brief Gets the next 16-bit element to the FIFO
Emre.Eken 1:957e5bad16c2 81 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 82 * @param element pointer to where to store the element from the FIFO
Emre.Eken 1:957e5bad16c2 83 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 84 */
Emre.Eken 1:957e5bad16c2 85 int fifo_get16(fifo_t *fifo, uint16_t *element);
Emre.Eken 1:957e5bad16c2 86
Emre.Eken 1:957e5bad16c2 87 /**
Emre.Eken 1:957e5bad16c2 88 * @brief Adds the next 16-bit element to the FIFO
Emre.Eken 1:957e5bad16c2 89 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 90 * @param element element to add to the FIFO
Emre.Eken 1:957e5bad16c2 91 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 92 */
Emre.Eken 1:957e5bad16c2 93 int fifo_put32(fifo_t *fifo, uint32_t element);
Emre.Eken 1:957e5bad16c2 94
Emre.Eken 1:957e5bad16c2 95 /**
Emre.Eken 1:957e5bad16c2 96 * @brief Gets the next 16-bit element to the FIFO
Emre.Eken 1:957e5bad16c2 97 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 98 * @param element pointer to where to store the element from the FIFO
Emre.Eken 1:957e5bad16c2 99 * @returns 0 if successful, -1 upon failure
Emre.Eken 1:957e5bad16c2 100 */
Emre.Eken 1:957e5bad16c2 101 int fifo_get32(fifo_t *fifo, uint32_t *element);
Emre.Eken 1:957e5bad16c2 102
Emre.Eken 1:957e5bad16c2 103 /**
Emre.Eken 1:957e5bad16c2 104 * @brief Immediately resets the FIFO to the empty state
Emre.Eken 1:957e5bad16c2 105 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 106 */
Emre.Eken 1:957e5bad16c2 107 void fifo_clear(fifo_t *fifo);
Emre.Eken 1:957e5bad16c2 108
Emre.Eken 1:957e5bad16c2 109 /**
Emre.Eken 1:957e5bad16c2 110 * @brief Determines if the FIFO is empty
Emre.Eken 1:957e5bad16c2 111 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 112 * @returns #TRUE if FIFO is empty, #FALSE otherwise
Emre.Eken 1:957e5bad16c2 113 */
Emre.Eken 1:957e5bad16c2 114 int fifo_empty(fifo_t *fifo);
Emre.Eken 1:957e5bad16c2 115
Emre.Eken 1:957e5bad16c2 116 /**
Emre.Eken 1:957e5bad16c2 117 * @brief FIFO status function
Emre.Eken 1:957e5bad16c2 118 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 119 * @returns #TRUE if FIFO is full, #FALSE otherwise
Emre.Eken 1:957e5bad16c2 120 */
Emre.Eken 1:957e5bad16c2 121 int fifo_full(fifo_t *fifo);
Emre.Eken 1:957e5bad16c2 122
Emre.Eken 1:957e5bad16c2 123 /**
Emre.Eken 1:957e5bad16c2 124 * @brief FIFO status function
Emre.Eken 1:957e5bad16c2 125 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 126 * @returns the number of elements currently in the FIFO
Emre.Eken 1:957e5bad16c2 127 */
Emre.Eken 1:957e5bad16c2 128 unsigned int fifo_level(fifo_t *fifo);
Emre.Eken 1:957e5bad16c2 129
Emre.Eken 1:957e5bad16c2 130 /**
Emre.Eken 1:957e5bad16c2 131 * @brief FIFO status function
Emre.Eken 1:957e5bad16c2 132 * @param fifo FIFO on which to perform the operation
Emre.Eken 1:957e5bad16c2 133 * @returns the remaining elements that can be added to the FIFO
Emre.Eken 1:957e5bad16c2 134 */
Emre.Eken 1:957e5bad16c2 135 unsigned int fifo_remaining(fifo_t *fifo);
Emre.Eken 1:957e5bad16c2 136
Emre.Eken 1:957e5bad16c2 137 #endif // _RPCFIFO_H_
Emre.Eken 1:957e5bad16c2 138