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 SYS EvKit by Emre Eken

MAX30001-MAX32630FTHR ECG Evaluation System

The MAX30001 EVKIT SYS-MBED Evaluation System (EV System) is used to evaluates the MAX30001 sensor, which is an ECG (electrocardiogram), biopotential and bioimpedance analog front end solution for wearable applications. The full evaluation system consists of the MAX32630FTHR board, MAX30001 EVKIT sensor board and the evaluation software. The evaluation kit features ECG, PACE, R-to-R (R-peak timing) detection; bioimpedance (BioZ) AFE; and raw data logging.

The MAX30001 EVKIT evaluation system is assembled, tested and contains the necessary circuitry and connections to evaluate the MAX30001 ECG sensor.

When evaluated as an evaluation system, the MAX32630FTHR board provides the necessary logic rails, master clock, SPI, USB-to-Serial interfaces that are needed to evaluate the MAX30001 sensor board. MAX32630FTHR can be used as an independent development platform.

Communication between the PC and the MAX32630FTHR board is facilitated by a Windows 7, Windows 8 and Windows 10 compatible software that provides a simple and intuitive graphical user interface (GUI).

For more information, visit the wiki pages by clicking the wiki tab above and MAX30001EVSYS product page.

C++ source code, library for the MAX30001 ECG drivers are in the links at the bottom of this page. The sample code includes the ability to log data to the SD card of the MAX32630FTHR.

MAX30001 EVKIT Pinout Connections

/media/uploads/EmreE/max30001_sensor_board_connector_pinout.png

Where to Buy

MAX30001EVSYS-Buy

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 #include "mbed.h"
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 34 #include "StringHelper.h"
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 35
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 36 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 37 * @brief Process an array of hex alpha numeric strings representing arguments of
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 38 * type uint8
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 39 * @param args Array of strings to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 40 * @param argsUintPtr Pointer of uint8 to save converted arguments
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 41 * @param numberOf Number of strings to convert
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 42 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 43 void ProcessArgs(char args[32][32], uint8_t *argsUintPtr, int numberOf) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 44 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 45 int val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 46 for (i = 0; i < numberOf; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 47 sscanf(args[i], "%x", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 48 argsUintPtr[i] = (uint8_t)val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 49 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 50 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 51
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 52 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 53 * @brief Process an array of hex alpha numeric strings representing arguments of
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 54 * type uint32
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 55 * @param args Array of strings to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 56 * @param argsUintPtr Pointer of uint32 to save converted arguments
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 57 * @param numberOf Number of strings to convert
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 58 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 59 void ProcessArgs32(char args[32][32], uint32_t *argsUintPtr, int numberOf) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 60 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 61 int val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 62 for (i = 0; i < numberOf; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 63 sscanf(args[i], "%x", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 64 argsUintPtr[i] = val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 65 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 66 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 67
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 68 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 69 * @brief Process an array of decimal numeric strings representing arguments of
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 70 * type uint32
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 71 * @param args Array of strings to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 72 * @param argsUintPtr Pointer of uint32 to save converted arguments
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 73 * @param numberOf Number of strings to convert
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 74 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 75 void ProcessArgs32Dec(char args[32][32], uint32_t *argsUintPtr, int numberOf) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 76 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 77 int val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 78 for (i = 0; i < numberOf; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 79 sscanf(args[i], "%d", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 80 argsUintPtr[i] = val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 81 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 82 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 83
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 84 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 85 * @brief Parse a single string in decimal format to a uint32 number
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 86 * @param str String to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 87 * @returns Returns the converted number of type uint32
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 88 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 89 uint32_t ParseAsciiDecU32(char *str) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 90 uint32_t val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 91 sscanf(str, "%d", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 92 return val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 93 }
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 Parse a single string in hex format to a uint32 number
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 97 * @param str String to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 98 * @returns Returns the converted number of type uint32
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 99 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 100 uint32_t ParseAsciiHexU32(char *str) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 101 uint32_t val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 102 sscanf(str, "%x", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 103 return val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 104 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 105
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 106 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 107 * @brief Process a string that is "embedded" within another string using the /"
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 108 * delimiters
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 109 * @brief Extract the string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 110 * @param str String to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 111 * @returns Returns the string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 112 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 113 void ProcessString(char args[32][32], uint8_t *str, int numberOf) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 114 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 115 int start;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 116 uint8_t *ptr;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 117 uint8_t *strPtr;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 118 ptr = (uint8_t *)args;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 119 strPtr = str;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 120 start = 0;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 121 for (i = 0; i < numberOf; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 122 if ((start == 0) && (*ptr == '/"')) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 123 start = 1;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 124 ptr++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 125 continue;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 126 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 127 if ((start == 1) && (*ptr == '/"')) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 128 break;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 129 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 130 if (start == 1) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 131 *strPtr = *ptr;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 132 strPtr++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 133 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 134 ptr++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 135 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 136 // terminate the string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 137 *strPtr = 0;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 138 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 139
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 140 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 141 * @brief Parse an incoming string until a CRLF is encountered, dst will contain
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 142 * the parsed string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 143 * @param src source string to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 144 * @param dst destination string to contain the parsed incoming string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 145 * @param length length of incoming src string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 146 * @returns updated pointer in src string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 147 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 148 char *ParseUntilCRLF(char *src, char *dst, int length) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 149 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 150 char *srcPtr;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 151
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 152 srcPtr = src;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 153 i = 0;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 154 *dst = 0;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 155 while ((*srcPtr != 0) && (*srcPtr != 13)) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 156 dst[i] = *srcPtr;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 157 i++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 158 if (i >= length)
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 159 break;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 160 srcPtr++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 161 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 162 if (*srcPtr == 13)
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 163 srcPtr++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 164 if (*srcPtr == 10)
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 165 srcPtr++;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 166 dst[i] = 0; // terminate the string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 167 return srcPtr;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 168 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 169
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 170 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 171 * @brief Parse an incoming string hex value into an 8-bit value
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 172 * @param str string to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 173 * @returns 8-bit byte that is parsed from the string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 174 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 175 uint8_t StringToByte(char str[32]) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 176 int val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 177 uint8_t byt;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 178 sscanf(str, "%x", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 179 byt = (uint8_t)val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 180 return byt;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 181 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 182
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 183 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 184 * @brief Parse an incoming string hex value into 32-bit value
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 185 * @param str string to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 186 * @returns 32-bit value that is parsed from the string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 187 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 188 uint32_t StringToInt(char str[32]) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 189 int val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 190 uint32_t byt;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 191 sscanf(str, "%x", &val);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 192 byt = (uint32_t)val;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 193 return byt;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 194 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 195
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 196 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 197 * @brief Format a binary 8-bit array into a string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 198 * @param uint8Ptr byte buffer to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 199 * @param numberOf number of bytes in the buffer
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 200 * @param reply an array of strings to place the converted array values into
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 201 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 202 void FormatReply(uint8_t *uint8Ptr, int numberOf, char reply[32][32]) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 203 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 204 for (i = 0; i < numberOf; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 205 sprintf(reply[i], "%02X", uint8Ptr[i]);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 206 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 207 strcpy(reply[i], "\0");
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 208 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 209
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 210 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 211 * @brief Format a binary 32-bit array into a string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 212 * @param uint32Ptr 32-bit value buffer to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 213 * @param numberOf number of values in the buffer
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 214 * @param reply an array of strings to place the converted array values into
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 215 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 216 void FormatReply32(uint32_t *uint32Ptr, int numberOf, char reply[32][32]) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 217 int i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 218 for (i = 0; i < numberOf; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 219 sprintf(reply[i], "%02X", uint32Ptr[i]);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 220 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 221 strcpy(reply[i], "\0");
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 222 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 223
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 224 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 225 * @brief Format a binary 8-bit array into a string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 226 * @param data 8-bit value buffer to process
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 227 * @param length number of values in the buffer
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 228 * @param str output string buffer
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 229 * @return output string
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 230 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 231 char *BytesToHexStr(uint8_t *data, uint32_t length, char *str) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 232 uint32_t i;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 233 char tmpStr[8];
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 234 str[0] = 0;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 235 for (i = 0; i < length; i++) {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 236 sprintf(tmpStr, "%02X ", data[i]);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 237 strcat(str, tmpStr);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 238 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 239 return str;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 240 }
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 241