Host software for the MAX30001 ECG, PACE, biopotential, bioimpedance, R-to-R peak sensor. Hosted on the MAX32630FTHR.

Dependencies:   SDFileSystem USBDevice max32630fthr

Fork of MAX30001-MAX32630FTHR-ECG-EVKIT by Maxim Integrated

Committer:
Emre.Eken
Date:
Tue Jul 24 15:22:35 2018 +0300
Revision:
13:6031b0bd9773
Parent:
0:8e4630a71eb1
.hgtags is added.

Who changed what in which revision?

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