ME11B Sample Code in Maxim Integrated Team
Dependencies: BMI160 max32630hsp3 MemoryLCD USBDevice
Fork of Host_Software_MAX32664GWEB_HR_EXTENDED by
SHMAX8614X/SH_Max8614x_BareMetal.h@3:b8989dab0f88, 2019-03-25 (annotated)
- Committer:
- seyhmuscacina
- Date:
- Mon Mar 25 07:40:37 2019 +0000
- Revision:
- 3:b8989dab0f88
- Parent:
- 0:ac4dea3e2894
Fork the repository
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
seyhmus.cacina | 0:ac4dea3e2894 | 1 | /******************************************************************************* |
seyhmus.cacina | 0:ac4dea3e2894 | 2 | * Copyright (C) 2018 Maxim Integrated Products, Inc., All Rights Reserved. |
seyhmus.cacina | 0:ac4dea3e2894 | 3 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
seyhmus.cacina | 0:ac4dea3e2894 | 5 | * copy of this software and associated documentation files (the "Software"), |
seyhmus.cacina | 0:ac4dea3e2894 | 6 | * to deal in the Software without restriction, including without limitation |
seyhmus.cacina | 0:ac4dea3e2894 | 7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
seyhmus.cacina | 0:ac4dea3e2894 | 8 | * and/or sell copies of the Software, and to permit persons to whom the |
seyhmus.cacina | 0:ac4dea3e2894 | 9 | * Software is furnished to do so, subject to the following conditions: |
seyhmus.cacina | 0:ac4dea3e2894 | 10 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 11 | * The above copyright notice and this permission notice shall be included |
seyhmus.cacina | 0:ac4dea3e2894 | 12 | * in all copies or substantial portions of the Software. |
seyhmus.cacina | 0:ac4dea3e2894 | 13 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
seyhmus.cacina | 0:ac4dea3e2894 | 15 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
seyhmus.cacina | 0:ac4dea3e2894 | 16 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
seyhmus.cacina | 0:ac4dea3e2894 | 17 | * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES |
seyhmus.cacina | 0:ac4dea3e2894 | 18 | * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
seyhmus.cacina | 0:ac4dea3e2894 | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
seyhmus.cacina | 0:ac4dea3e2894 | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
seyhmus.cacina | 0:ac4dea3e2894 | 21 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 22 | * Except as contained in this notice, the name of Maxim Integrated |
seyhmus.cacina | 0:ac4dea3e2894 | 23 | * Products, Inc. shall not be used except as stated in the Maxim Integrated |
seyhmus.cacina | 0:ac4dea3e2894 | 24 | * Products, Inc. Branding Policy. |
seyhmus.cacina | 0:ac4dea3e2894 | 25 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 26 | * The mere transfer of this software does not imply any licenses |
seyhmus.cacina | 0:ac4dea3e2894 | 27 | * of trade secrets, proprietary technology, copyrights, patents, |
seyhmus.cacina | 0:ac4dea3e2894 | 28 | * trademarks, maskwork rights, or any other form of intellectual |
seyhmus.cacina | 0:ac4dea3e2894 | 29 | * property whatsoever. Maxim Integrated Products, Inc. retains all |
seyhmus.cacina | 0:ac4dea3e2894 | 30 | * ownership rights. |
seyhmus.cacina | 0:ac4dea3e2894 | 31 | ******************************************************************************* |
seyhmus.cacina | 0:ac4dea3e2894 | 32 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 33 | #ifndef SH_Max8614x_BareMetal_H_ |
seyhmus.cacina | 0:ac4dea3e2894 | 34 | #define SH_Max8614x_BareMetal_H_ |
seyhmus.cacina | 0:ac4dea3e2894 | 35 | |
seyhmus.cacina | 0:ac4dea3e2894 | 36 | #include <stdint.h> |
seyhmus.cacina | 0:ac4dea3e2894 | 37 | #include <stdio.h> |
seyhmus.cacina | 0:ac4dea3e2894 | 38 | #include "demoDefinitions.h" |
seyhmus.cacina | 0:ac4dea3e2894 | 39 | |
seyhmus.cacina | 0:ac4dea3e2894 | 40 | |
seyhmus.cacina | 0:ac4dea3e2894 | 41 | #define COMM_SUCCESS 0 |
seyhmus.cacina | 0:ac4dea3e2894 | 42 | #define COMM_GENERAL_ERROR -1 |
seyhmus.cacina | 0:ac4dea3e2894 | 43 | #define COMM_INVALID_PARAM -254 |
seyhmus.cacina | 0:ac4dea3e2894 | 44 | #define COMM_NOT_RECOGNIZED -255 |
seyhmus.cacina | 0:ac4dea3e2894 | 45 | |
seyhmus.cacina | 0:ac4dea3e2894 | 46 | enum enAlgoMode{ |
seyhmus.cacina | 0:ac4dea3e2894 | 47 | kAlgoModeHeartRate = 0, |
seyhmus.cacina | 0:ac4dea3e2894 | 48 | reinitHeartRate = 1, |
seyhmus.cacina | 0:ac4dea3e2894 | 49 | }; |
seyhmus.cacina | 0:ac4dea3e2894 | 50 | |
seyhmus.cacina | 0:ac4dea3e2894 | 51 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 52 | * @brief Get the value of register at addr |
seyhmus.cacina | 0:ac4dea3e2894 | 53 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 54 | * @param[in] addr - adress of the register |
seyhmus.cacina | 0:ac4dea3e2894 | 55 | * @param[out] val - value at the register |
seyhmus.cacina | 0:ac4dea3e2894 | 56 | |
seyhmus.cacina | 0:ac4dea3e2894 | 57 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 58 | void SH_Max8614x_get_reg(uint8_t addr, uint32_t *val); |
seyhmus.cacina | 0:ac4dea3e2894 | 59 | |
seyhmus.cacina | 0:ac4dea3e2894 | 60 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 61 | * @brief Write a value to the register at address addr |
seyhmus.cacina | 0:ac4dea3e2894 | 62 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 63 | * @param[in] addr - adress of the register to write |
seyhmus.cacina | 0:ac4dea3e2894 | 64 | * @param[in] val - value of the register to write |
seyhmus.cacina | 0:ac4dea3e2894 | 65 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 66 | void SH_Max8614x_set_reg(uint8_t addr, uint32_t val); |
seyhmus.cacina | 0:ac4dea3e2894 | 67 | |
seyhmus.cacina | 0:ac4dea3e2894 | 68 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 69 | * @brief Initialize Max86140 with default configuration |
seyhmus.cacina | 0:ac4dea3e2894 | 70 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 71 | * @param[in] paramAlgoMode - the mode of the algorithm to initialize |
seyhmus.cacina | 0:ac4dea3e2894 | 72 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 73 | * @return 0 on SUCCESS |
seyhmus.cacina | 0:ac4dea3e2894 | 74 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 75 | int SH_Max8614x_default_init(enum enAlgoMode paramAlgoMode); |
seyhmus.cacina | 0:ac4dea3e2894 | 76 | |
seyhmus.cacina | 0:ac4dea3e2894 | 77 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 78 | * @brief Check the data stored in the Sensor Hub. Reads and prints |
seyhmus.cacina | 0:ac4dea3e2894 | 79 | * the data if available |
seyhmus.cacina | 0:ac4dea3e2894 | 80 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 81 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 82 | int SH_Max8614x_data_report_execute(void); |
seyhmus.cacina | 0:ac4dea3e2894 | 83 | |
seyhmus.cacina | 0:ac4dea3e2894 | 84 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 85 | * @brief Stops the active sensors and algorithms |
seyhmus.cacina | 0:ac4dea3e2894 | 86 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 87 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 88 | void SH_Max8614x_stop(void); |
seyhmus.cacina | 0:ac4dea3e2894 | 89 | |
seyhmus.cacina | 0:ac4dea3e2894 | 90 | |
seyhmus.cacina | 0:ac4dea3e2894 | 91 | extern uint16_t HrmResult; |
seyhmus.cacina | 0:ac4dea3e2894 | 92 | extern uint8_t HrmConfidence; |
seyhmus.cacina | 0:ac4dea3e2894 | 93 | |
seyhmus.cacina | 0:ac4dea3e2894 | 94 | |
seyhmus.cacina | 0:ac4dea3e2894 | 95 | /* define to see debug messages*/ |
seyhmus.cacina | 0:ac4dea3e2894 | 96 | //#define DEBUG_INFO |
seyhmus.cacina | 0:ac4dea3e2894 | 97 | |
seyhmus.cacina | 0:ac4dea3e2894 | 98 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 99 | * @brief gets the data format of reported whrm algo result sample , in form of struct fields with number of bits they are represented. |
seyhmus.cacina | 0:ac4dea3e2894 | 100 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 101 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 102 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 103 | * @return 0 |
seyhmus.cacina | 0:ac4dea3e2894 | 104 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 105 | int SH_Max8614x_get_whrm_dataformat(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 106 | |
seyhmus.cacina | 0:ac4dea3e2894 | 107 | |
seyhmus.cacina | 0:ac4dea3e2894 | 108 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 109 | * @brief sets the register value of ppg sensor (8614x is connected to ME11 SENSOR HUB for this demo but can be used for all sensors physically |
seyhmus.cacina | 0:ac4dea3e2894 | 110 | * connected to ME11 SENSOR HUB). |
seyhmus.cacina | 0:ac4dea3e2894 | 111 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 112 | * @param[in] addr_value_args : byte string including command followed by register address in hex and register value in hex |
seyhmus.cacina | 0:ac4dea3e2894 | 113 | * "set_reg ppgsensor 0xAB 0xCD" or "set_reg ppgsensor AB CD" |
seyhmus.cacina | 0:ac4dea3e2894 | 114 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 115 | * @return 0x00 on success and prints on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 116 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 117 | int SH_Max8614x_set_ppgreg(const char *addr_value_args); |
seyhmus.cacina | 0:ac4dea3e2894 | 118 | |
seyhmus.cacina | 0:ac4dea3e2894 | 119 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 120 | * @brief gets the register value of ppg sensor (8614x is connected to ME11 SENSOR HUB for this demo but can be used for all sensors physically |
seyhmus.cacina | 0:ac4dea3e2894 | 121 | * connected to ME11 SENSOR HUB). |
seyhmus.cacina | 0:ac4dea3e2894 | 122 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 123 | * @param[in] addr_arg: byte string including command followed by register address in hex |
seyhmus.cacina | 0:ac4dea3e2894 | 124 | * "set_reg ppgsensor 0xAB" or "set_reg ppgsensor AB" |
seyhmus.cacina | 0:ac4dea3e2894 | 125 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 126 | * @return 0x00 on success and prints register value on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 127 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 128 | int SH_Max8614x_get_ppgreg(const char *addr_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 129 | |
seyhmus.cacina | 0:ac4dea3e2894 | 130 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 131 | * @brief initalizes and starts whrm measurement from ME11 SENSOR HUB. |
seyhmus.cacina | 0:ac4dea3e2894 | 132 | * It default initilizes datatype(to BOTH) input fifo lenght(to 5 , this is FIFO used by accel data from host) |
seyhmus.cacina | 0:ac4dea3e2894 | 133 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 134 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 135 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 136 | ** @return 0x00 on success and prints status on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 137 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 138 | int SH_Max8614x_measure_whrm(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 139 | |
seyhmus.cacina | 0:ac4dea3e2894 | 140 | |
seyhmus.cacina | 0:ac4dea3e2894 | 141 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 142 | * @brief starts self test of ppg sensor |
seyhmus.cacina | 0:ac4dea3e2894 | 143 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 144 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 145 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 146 | ** @return 0x00 on success and prints status on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 147 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 148 | int SH_Max8614x_self_test_ppg(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 149 | |
seyhmus.cacina | 0:ac4dea3e2894 | 150 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 151 | * @brief starts self test of accelerometer sensor physically connected to ME11 SENSOR HUB |
seyhmus.cacina | 0:ac4dea3e2894 | 152 | * NOTE:Not supported within this demo as Customer is assumed to feed accel data from HOST. |
seyhmus.cacina | 0:ac4dea3e2894 | 153 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 154 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 155 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 156 | ** @return 0x00 on success and prints status on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 157 | */ |
seyhmus.cacina | 0:ac4dea3e2894 | 158 | int SH_Max8614x_self_test_acc(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 159 | |
seyhmus.cacina | 0:ac4dea3e2894 | 160 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 161 | * @brief sets the aec algo usage of SPO2 algorithm |
seyhmus.cacina | 0:ac4dea3e2894 | 162 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 163 | * @param[in] onoff_arg : byte string including command followed by mode value in HEX uo to 1 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 164 | * "set_cfg whrm aecenable 0/1" 0:off 1: On |
seyhmus.cacina | 0:ac4dea3e2894 | 165 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 166 | *@return status info, 0x00 on success |
seyhmus.cacina | 0:ac4dea3e2894 | 167 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 168 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 169 | int SH_Max8614x_set_whrm_aecusage(const char *onoff_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 170 | |
seyhmus.cacina | 0:ac4dea3e2894 | 171 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 172 | * @brief gets the aec algo usage of SPO2 algorithm |
seyhmus.cacina | 0:ac4dea3e2894 | 173 | * prints aec algo usage usage on/off value commnad console. 0 : Off 1: On |
seyhmus.cacina | 0:ac4dea3e2894 | 174 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 175 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 176 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 177 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 178 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 179 | int SH_Max8614x_get_whrm_aecusage(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 180 | |
seyhmus.cacina | 0:ac4dea3e2894 | 181 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 182 | * @brief sets the skin contact detection usage of SPO2 algorithm |
seyhmus.cacina | 0:ac4dea3e2894 | 183 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 184 | * @param[in] onoff_arg : byte string including command followed by mode value in HEX uo to 1 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 185 | * "set_cfg whrm aecenable 0/1" 0:off 1: On |
seyhmus.cacina | 0:ac4dea3e2894 | 186 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 187 | *@return status info, 0x00 on success |
seyhmus.cacina | 0:ac4dea3e2894 | 188 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 189 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 190 | int SH_Max8614x_set_whrm_scdusage(const char *onoff_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 191 | |
seyhmus.cacina | 0:ac4dea3e2894 | 192 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 193 | * @brief gets the skin contact detection usage of SPO2 algorithm |
seyhmus.cacina | 0:ac4dea3e2894 | 194 | * prints skin contact detection usage on/off value commnad console. 0 : Off 1: On |
seyhmus.cacina | 0:ac4dea3e2894 | 195 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 196 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 197 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 198 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 199 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 200 | int SH_Max8614x_get_whrm_scdusage(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 201 | |
seyhmus.cacina | 0:ac4dea3e2894 | 202 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 203 | * @brief sets the adjustment period parameter for skin contact detection for SPO2 algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 204 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 205 | * @param[in] period_arg : byte string including command followed by period value in HEX up to 4 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 206 | * "set_cfg whrm scdadjperiod 0xABCD" |
seyhmus.cacina | 0:ac4dea3e2894 | 207 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 208 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 209 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 210 | int SH_Max8614x_set_whrm_scdadjperiod(const char *period_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 211 | |
seyhmus.cacina | 0:ac4dea3e2894 | 212 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 213 | * @brief Gets the adjustment period parameter for skin contact detection for SPO2 algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 214 | * prints SPo2 period value on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 215 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 216 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 217 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 218 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 219 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 220 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 221 | int SH_Max8614x_get_whrm_scdadjperiod(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 222 | |
seyhmus.cacina | 0:ac4dea3e2894 | 223 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 224 | * @brief sets the debounce window parameter for skin contact detection for SPO2 algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 225 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 226 | * @param[in] dwindow_arg : byte string including command followed by debounce window value in HEX up to 4 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 227 | * "set_cfg whrm scddebouncewin 0xABCD" |
seyhmus.cacina | 0:ac4dea3e2894 | 228 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 229 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 230 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 231 | int SH_Max8614x_set_whrm_scddebouncewin(const char *dwindow_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 232 | |
seyhmus.cacina | 0:ac4dea3e2894 | 233 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 234 | * @brief gets the debounce window parameter for skin contact detection for SPO2 algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 235 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 236 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 237 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 238 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 239 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 240 | int SH_Max8614x_get_whrm_scddebouncewin(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 241 | |
seyhmus.cacina | 0:ac4dea3e2894 | 242 | |
seyhmus.cacina | 0:ac4dea3e2894 | 243 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 244 | * @brief sets the motion threshold parameter for WHRM algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 245 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 246 | * @param[in] timeout_arg : byte string including command followed by motion threshold value in HEX up to 4 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 247 | * "set_cfg whrm motionthreshold 0xABCD" |
seyhmus.cacina | 0:ac4dea3e2894 | 248 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 249 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 250 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 251 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 252 | int SH_Max8614x_set_whrm_motionthresh(const char *motion_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 253 | |
seyhmus.cacina | 0:ac4dea3e2894 | 254 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 255 | * @brief Gets the motion threshold for WHRM algorithm. prints WHRM algorith motion threshold value on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 256 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 257 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 258 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 259 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 260 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 261 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 262 | int SH_Max8614x_get_whrm_motionthresh(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 263 | |
seyhmus.cacina | 0:ac4dea3e2894 | 264 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 265 | * @brief sets the minimum photodiode current parameter for WHRM algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 266 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 267 | * @param[in] curr_arg : byte string including command followed by diode current value in HEX up to 4 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 268 | * "set_cfg whrm motionthreshold 0xABCD" |
seyhmus.cacina | 0:ac4dea3e2894 | 269 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 270 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 271 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 272 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 273 | int SH_Max8614x_set_whrm_minpdiodecurr(const char *curr_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 274 | |
seyhmus.cacina | 0:ac4dea3e2894 | 275 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 276 | * @brief Gets the minimum photodiode current parameter for WHRM algorithm. prints WHRM algorithm photodiode current parameter value on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 277 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 278 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 279 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 280 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 281 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 282 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 283 | int SH_Max8614x_get_whrm_minpdiodecurr(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 284 | |
seyhmus.cacina | 0:ac4dea3e2894 | 285 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 286 | * @brief sets the sensor photodiode configuration for WHRM algorithm. |
seyhmus.cacina | 0:ac4dea3e2894 | 287 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 288 | * @param[in] pdcfg_arg : byte string including command followed by photodiode configuration value in HEX up to 1 hexadecimal digits. |
seyhmus.cacina | 0:ac4dea3e2894 | 289 | "set_cfg whrm pdconfig 0xA" or "set_cfg whrm pdconfig A" |
seyhmus.cacina | 0:ac4dea3e2894 | 290 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 291 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 292 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 293 | int SH_Max8614x_set_whrm_pdiodeconfig(const char *cfg_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 294 | |
seyhmus.cacina | 0:ac4dea3e2894 | 295 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 296 | * @brief Gets the sensor photodiode configuration for WHRM algorithm. prints WHRM algorithm photodiode configuration on command console |
seyhmus.cacina | 0:ac4dea3e2894 | 297 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 298 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 299 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 300 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 301 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 302 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 303 | int SH_Max8614x_get_whrm_pdiodeconfig(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 304 | |
seyhmus.cacina | 0:ac4dea3e2894 | 305 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 306 | * @brief Sends raw byte stream to ME11 SENSOR HUB. For debug purposes mainly. |
seyhmus.cacina | 0:ac4dea3e2894 | 307 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 308 | * @param[in] raw_data : byte stream to be send |
seyhmus.cacina | 0:ac4dea3e2894 | 309 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 310 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 311 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 312 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 313 | //int SH_Max8614x_send_raw(const char *raw_data); |
seyhmus.cacina | 0:ac4dea3e2894 | 314 | |
seyhmus.cacina | 0:ac4dea3e2894 | 315 | |
seyhmus.cacina | 0:ac4dea3e2894 | 316 | |
seyhmus.cacina | 0:ac4dea3e2894 | 317 | /** |
seyhmus.cacina | 0:ac4dea3e2894 | 318 | * @brief Stops sensor+algorithm data acquisition and operation for all algorithms of ME11 sensor HUB . |
seyhmus.cacina | 0:ac4dea3e2894 | 319 | * Mainly for use in this demo code!! |
seyhmus.cacina | 0:ac4dea3e2894 | 320 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 321 | * @param[in] null_arg : NULL string, just to match the form of command table function pointer type |
seyhmus.cacina | 0:ac4dea3e2894 | 322 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 323 | * @return status info, 0x00 on success. |
seyhmus.cacina | 0:ac4dea3e2894 | 324 | * |
seyhmus.cacina | 0:ac4dea3e2894 | 325 | **/ |
seyhmus.cacina | 0:ac4dea3e2894 | 326 | int SH_Max8614x_stop_acquisition(const char *null_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 327 | |
seyhmus.cacina | 0:ac4dea3e2894 | 328 | |
seyhmus.cacina | 0:ac4dea3e2894 | 329 | #if defined(RAW_DATA_ONLY) |
seyhmus.cacina | 0:ac4dea3e2894 | 330 | int SH_Max8614x_disable_whrm(const char *onoff_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 331 | int SH_Max8614x_enable_pureraw(const char *onoff_arg); |
seyhmus.cacina | 0:ac4dea3e2894 | 332 | #define NUMCMDS8614X (24) |
seyhmus.cacina | 0:ac4dea3e2894 | 333 | #else |
seyhmus.cacina | 0:ac4dea3e2894 | 334 | #define NUMCMDS8614X (22) |
seyhmus.cacina | 0:ac4dea3e2894 | 335 | #endif |
seyhmus.cacina | 0:ac4dea3e2894 | 336 | |
seyhmus.cacina | 0:ac4dea3e2894 | 337 | /*Number of commands accosicated with 8614x sesnor command table*/ |
seyhmus.cacina | 0:ac4dea3e2894 | 338 | |
seyhmus.cacina | 0:ac4dea3e2894 | 339 | #define CONSOLE_STR_BUF_SZ ((int)1024); |
seyhmus.cacina | 0:ac4dea3e2894 | 340 | |
seyhmus.cacina | 0:ac4dea3e2894 | 341 | |
seyhmus.cacina | 0:ac4dea3e2894 | 342 | typedef int (*cmdExecFunc)( const char*); // typedef void (*cmdExecFunc)( const void*); |
seyhmus.cacina | 0:ac4dea3e2894 | 343 | |
seyhmus.cacina | 0:ac4dea3e2894 | 344 | typedef struct { |
seyhmus.cacina | 0:ac4dea3e2894 | 345 | char const* cmdStr; |
seyhmus.cacina | 0:ac4dea3e2894 | 346 | cmdExecFunc execute; |
seyhmus.cacina | 0:ac4dea3e2894 | 347 | char const *help; |
seyhmus.cacina | 0:ac4dea3e2894 | 348 | }cmd_interface_t; |
seyhmus.cacina | 0:ac4dea3e2894 | 349 | |
seyhmus.cacina | 0:ac4dea3e2894 | 350 | |
seyhmus.cacina | 0:ac4dea3e2894 | 351 | static int command_help(const char *str); |
seyhmus.cacina | 0:ac4dea3e2894 | 352 | |
seyhmus.cacina | 0:ac4dea3e2894 | 353 | |
seyhmus.cacina | 0:ac4dea3e2894 | 354 | const cmd_interface_t CMDTABLE8614x[] = { |
seyhmus.cacina | 0:ac4dea3e2894 | 355 | |
seyhmus.cacina | 0:ac4dea3e2894 | 356 | { "get_format whrmdata" , SH_Max8614x_get_whrm_dataformat , "returns whrm algo sample format in terms of bit fileds" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 357 | { "enable_measurement whrm" , SH_Max8614x_measure_whrm , "start whrm measurement with default settings" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 358 | { "get_reg ppgsensor" , SH_Max8614x_get_ppgreg , "get register value of 8614x sensor, usage: get_reg ppgsensor rAddr(1byte)" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 359 | { "set_reg ppgsensor" , SH_Max8614x_set_ppgreg , "set register value of 8614x sensor, usage : set_reg ppgsensor rAddr(1byte) rval(1byte)" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 360 | { "self_test ppgsensor" , SH_Max8614x_self_test_ppg , "starts self test of onboard ppg sensor" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 361 | { "self_test accel" , SH_Max8614x_self_test_acc , "starts self test of onboard accel sensor" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 362 | { "set_cfg whrm aecenable" , SH_Max8614x_set_whrm_aecusage , "on/off whrm aec algo, usage: set_cfg whrm aec X , X: 0 off 1 on" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 363 | { "get_cfg whrm aecenable" , SH_Max8614x_get_whrm_aecusage , "check if aec algo for whrm is on/off" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 364 | { "set_cfg whrm scdenable" , SH_Max8614x_set_whrm_scdusage , "on/off whrm skin contact detection, usage: set_cfg whrm scd X , X: 0 off 1 on" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 365 | { "get_cfg whrm scdenable" , SH_Max8614x_get_whrm_scdusage , "check if whrm skin contact detection is on/off" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 366 | { "set_cfg whrm scdadjperiod" , SH_Max8614x_set_whrm_scdadjperiod , "sets photo diode adj peroiod for whrm scd algo, usage: set_cfg whrm scdadjperiod period(numeric)" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 367 | { "get_cfg whrm scdadjperiod" , SH_Max8614x_get_whrm_scdadjperiod , "gets photo diode adj peroiod for whrm scd algo" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 368 | { "set_cfg whrm scddebouncewin" , SH_Max8614x_set_whrm_scddebouncewin , "sets debounce window for whrm scd algo, usage: set_cfg whrm scddebouncewin window(numeric)" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 369 | { "get_cfg whrm scddebouncewin" , SH_Max8614x_get_whrm_scddebouncewin , "gets debounce window for whrm scd algo" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 370 | { "set_cfg whrm motionthreshold" , SH_Max8614x_set_whrm_motionthresh , "sets motion threshold for whrm, usage: set_cfg whrm motionthreshold threshold(numeric)" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 371 | { "get_cfg whrm motionthreshold" , SH_Max8614x_get_whrm_motionthresh , "gets motion threshold for whrm" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 372 | { "set_cfg whrm minpdcurrent" , SH_Max8614x_set_whrm_minpdiodecurr , "sets photodiode current range for whrm, usage: set_cfg whrm minpdcurrent current(numeric)" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 373 | { "get_cfg whrm minpdcurrent" , SH_Max8614x_get_whrm_minpdiodecurr , "gets photodiode current rangefor whrm" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 374 | { "set_cfg whrm pdconfig" , SH_Max8614x_set_whrm_pdiodeconfig , "sets photdiode config for whrm, usage: set_cfg whrmaecscd pdconfig configstring" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 375 | { "get_cfg whrm pdconfig" , SH_Max8614x_get_whrm_pdiodeconfig , "gets photdiode config for whrm" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 376 | { "stop" , SH_Max8614x_stop_acquisition , "stops raw&algorithm data acquisition within 8614x instance of hub" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 377 | { "help" , command_help , "commnand info" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 378 | #if defined(RAW_DATA_ONLY) |
seyhmus.cacina | 0:ac4dea3e2894 | 379 | { "disable_whrm" , SH_Max8614x_disable_whrm , "disable algorithms" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 380 | { "enable_raw_only" , SH_Max8614x_enable_pureraw , "enable just raw ppg data" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 381 | #endif |
seyhmus.cacina | 0:ac4dea3e2894 | 382 | // { "send_raw" , SH_Max8614x_send_raw , "sends raw data to sensor hub, usage: send_raw datastring" }, |
seyhmus.cacina | 0:ac4dea3e2894 | 383 | }; |
seyhmus.cacina | 0:ac4dea3e2894 | 384 | |
seyhmus.cacina | 0:ac4dea3e2894 | 385 | |
seyhmus.cacina | 0:ac4dea3e2894 | 386 | static int command_help(const char *str){ |
seyhmus.cacina | 0:ac4dea3e2894 | 387 | int cmdIdx = 0; |
seyhmus.cacina | 0:ac4dea3e2894 | 388 | |
seyhmus.cacina | 0:ac4dea3e2894 | 389 | SERIALOUT("AVAILABLE COMMANDS: \r\n\r\n"); |
seyhmus.cacina | 0:ac4dea3e2894 | 390 | while( cmdIdx != NUMCMDS8614X){ |
seyhmus.cacina | 0:ac4dea3e2894 | 391 | SERIALOUT(" %s : \r\n %s \r\n\r\n", CMDTABLE8614x[cmdIdx].cmdStr , CMDTABLE8614x[cmdIdx].help ); |
seyhmus.cacina | 0:ac4dea3e2894 | 392 | cmdIdx++; |
seyhmus.cacina | 0:ac4dea3e2894 | 393 | }; |
seyhmus.cacina | 0:ac4dea3e2894 | 394 | |
seyhmus.cacina | 0:ac4dea3e2894 | 395 | } |
seyhmus.cacina | 0:ac4dea3e2894 | 396 | |
seyhmus.cacina | 0:ac4dea3e2894 | 397 | |
seyhmus.cacina | 0:ac4dea3e2894 | 398 | #endif |
seyhmus.cacina | 0:ac4dea3e2894 | 399 | |
seyhmus.cacina | 0:ac4dea3e2894 | 400 | |
seyhmus.cacina | 0:ac4dea3e2894 | 401 |