Example Host software for integration of MAX3266x chips (, MAX32664GWEB) equipped with Heart Rate from Wrist Algorithm. This is “stand-alone” software that runs on the MAX32630 low-power microcontroller to display heart rate on the display of the MAXREFDES101 reference design. It is intended provide a simple example of how to initialize and communicate with the sensor hub. Windows and Android communications are not supported.

Dependencies:   Maxim_Sensor_Hub_Communications BMI160 whrmDemoUI max32630hsp3

Fork of Host_Software_MAX32664GWEB_HR_wrist by mehmet gok

Committer:
gmehmet
Date:
Mon Dec 17 10:34:32 2018 +0300
Revision:
0:ddc2fef69ef9
First Commit New Repo name

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gmehmet 0:ddc2fef69ef9 1 /*******************************************************************************
gmehmet 0:ddc2fef69ef9 2 * Copyright (C) 2018 Maxim Integrated Products, Inc., All Rights Reserved.
gmehmet 0:ddc2fef69ef9 3 *
gmehmet 0:ddc2fef69ef9 4 * Permission is hereby granted, free of charge, to any person obtaining a
gmehmet 0:ddc2fef69ef9 5 * copy of this software and associated documentation files (the "Software"),
gmehmet 0:ddc2fef69ef9 6 * to deal in the Software without restriction, including without limitation
gmehmet 0:ddc2fef69ef9 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
gmehmet 0:ddc2fef69ef9 8 * and/or sell copies of the Software, and to permit persons to whom the
gmehmet 0:ddc2fef69ef9 9 * Software is furnished to do so, subject to the following conditions:
gmehmet 0:ddc2fef69ef9 10 *
gmehmet 0:ddc2fef69ef9 11 * The above copyright notice and this permission notice shall be included
gmehmet 0:ddc2fef69ef9 12 * in all copies or substantial portions of the Software.
gmehmet 0:ddc2fef69ef9 13 *
gmehmet 0:ddc2fef69ef9 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
gmehmet 0:ddc2fef69ef9 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
gmehmet 0:ddc2fef69ef9 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
gmehmet 0:ddc2fef69ef9 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
gmehmet 0:ddc2fef69ef9 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
gmehmet 0:ddc2fef69ef9 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
gmehmet 0:ddc2fef69ef9 20 * OTHER DEALINGS IN THE SOFTWARE.
gmehmet 0:ddc2fef69ef9 21 *
gmehmet 0:ddc2fef69ef9 22 * Except as contained in this notice, the name of Maxim Integrated
gmehmet 0:ddc2fef69ef9 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
gmehmet 0:ddc2fef69ef9 24 * Products, Inc. Branding Policy.
gmehmet 0:ddc2fef69ef9 25 *
gmehmet 0:ddc2fef69ef9 26 * The mere transfer of this software does not imply any licenses
gmehmet 0:ddc2fef69ef9 27 * of trade secrets, proprietary technology, copyrights, patents,
gmehmet 0:ddc2fef69ef9 28 * trademarks, maskwork rights, or any other form of intellectual
gmehmet 0:ddc2fef69ef9 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
gmehmet 0:ddc2fef69ef9 30 * ownership rights.
gmehmet 0:ddc2fef69ef9 31 *******************************************************************************
gmehmet 0:ddc2fef69ef9 32 */
gmehmet 0:ddc2fef69ef9 33
gmehmet 0:ddc2fef69ef9 34 #ifndef SOURCE_SHCOMM_H_
gmehmet 0:ddc2fef69ef9 35 #define SOURCE_SHCOMM_H_
gmehmet 0:ddc2fef69ef9 36
gmehmet 0:ddc2fef69ef9 37 /*
gmehmet 0:ddc2fef69ef9 38 #ifdef __cplusplus
gmehmet 0:ddc2fef69ef9 39 extern "C" {
gmehmet 0:ddc2fef69ef9 40 #endif
gmehmet 0:ddc2fef69ef9 41 */
gmehmet 0:ddc2fef69ef9 42
gmehmet 0:ddc2fef69ef9 43 // Sensor/Algo indicies
gmehmet 0:ddc2fef69ef9 44 #define SH_SENSORIDX_MAX8614X 0x00
gmehmet 0:ddc2fef69ef9 45 #define SH_SENSORIDX_MAX30205 0x01
gmehmet 0:ddc2fef69ef9 46 #define SH_SENSORIDX_MAX30001 0x02
gmehmet 0:ddc2fef69ef9 47 #define SH_SENSORIDX_MAX30101 0x03
gmehmet 0:ddc2fef69ef9 48 #define SH_SENSORIDX_ACCEL 0x04
gmehmet 0:ddc2fef69ef9 49 #define SH_NUM_CURRENT_SENSORS 5
gmehmet 0:ddc2fef69ef9 50
gmehmet 0:ddc2fef69ef9 51 #define SH_ALGOIDX_AGC 0x00
gmehmet 0:ddc2fef69ef9 52 #define SH_ALGOIDX_AEC 0x01
gmehmet 0:ddc2fef69ef9 53 #define SH_ALGOIDX_WHRM 0x02
gmehmet 0:ddc2fef69ef9 54 #define SH_ALGOIDX_ECG 0x03
gmehmet 0:ddc2fef69ef9 55 #define SH_ALGOIDX_BPT 0x04
gmehmet 0:ddc2fef69ef9 56 #define SH_ALGOIDX_WSPO2 0x05
gmehmet 0:ddc2fef69ef9 57 #define SH_NUM_CURRENT_ALGOS 6
gmehmet 0:ddc2fef69ef9 58
gmehmet 0:ddc2fef69ef9 59 #define PADDING_BYTE (0xEE)
gmehmet 0:ddc2fef69ef9 60 #define DATA_BYTE (0xED)
gmehmet 0:ddc2fef69ef9 61
gmehmet 0:ddc2fef69ef9 62
gmehmet 0:ddc2fef69ef9 63 #define SS_I2C_8BIT_SLAVE_ADDR 0xAA
gmehmet 0:ddc2fef69ef9 64 #define SS_DEFAULT_CMD_SLEEP_MS 2
gmehmet 0:ddc2fef69ef9 65 #define SS_DUMP_REG_SLEEP_MS 100
gmehmet 0:ddc2fef69ef9 66 #define SS_ENABLE_SENSOR_SLEEP_MS 20
gmehmet 0:ddc2fef69ef9 67
gmehmet 0:ddc2fef69ef9 68 #define SH_INPUT_DATA_DIRECT_SENSOR 0x00
gmehmet 0:ddc2fef69ef9 69 #define SH_INPUT_DATA_FROM_HOST 0x01
gmehmet 0:ddc2fef69ef9 70
gmehmet 0:ddc2fef69ef9 71 #define SS_FAM_R_STATUS 0x00
gmehmet 0:ddc2fef69ef9 72 #define SS_CMDIDX_STATUS 0x00
gmehmet 0:ddc2fef69ef9 73 #define SS_SHIFT_STATUS_ERR 0
gmehmet 0:ddc2fef69ef9 74 #define SS_MASK_STATUS_ERR (0x07 << SS_SHIFT_STATUS_ERR)
gmehmet 0:ddc2fef69ef9 75 #define SS_SHIFT_STATUS_DATA_RDY 3
gmehmet 0:ddc2fef69ef9 76 #define SS_MASK_STATUS_DATA_RDY (1 << SS_SHIFT_STATUS_DATA_RDY)
gmehmet 0:ddc2fef69ef9 77 #define SS_SHIFT_STATUS_FIFO_OUT_OVR 4
gmehmet 0:ddc2fef69ef9 78 #define SS_MASK_STATUS_FIFO_OUT_OVR (1 << SS_SHIFT_STATUS_FIFO_OUT_OVR)
gmehmet 0:ddc2fef69ef9 79 #define SS_SHIFT_STATUS_FIFO_IN_OVR 5
gmehmet 0:ddc2fef69ef9 80 #define SS_MASK_STATUS_FIFO_IN_OVR (1 << SS_SHIFT_STATUS_FIFO_IN_OVR)
gmehmet 0:ddc2fef69ef9 81
gmehmet 0:ddc2fef69ef9 82 #define SS_SHIFT_STATUS_LOG_OVR 6
gmehmet 0:ddc2fef69ef9 83 #define SS_MASK_STATUS_LOG_OVR (1 << SS_SHIFT_STATUS_LOG_OVR)
gmehmet 0:ddc2fef69ef9 84
gmehmet 0:ddc2fef69ef9 85 #define SS_SHIFT_STATUS_LOG_RDY 7
gmehmet 0:ddc2fef69ef9 86 #define SS_MASK_STATUS_LOG_RDY (1 << SS_SHIFT_STATUS_LOG_RDY)
gmehmet 0:ddc2fef69ef9 87
gmehmet 0:ddc2fef69ef9 88
gmehmet 0:ddc2fef69ef9 89
gmehmet 0:ddc2fef69ef9 90 #define SS_FAM_W_MODE 0x01
gmehmet 0:ddc2fef69ef9 91 #define SS_FAM_R_MODE 0x02
gmehmet 0:ddc2fef69ef9 92 #define SS_CMDIDX_MODE 0x00
gmehmet 0:ddc2fef69ef9 93 #define SS_SHIFT_MODE_SHDN 0
gmehmet 0:ddc2fef69ef9 94 #define SS_MASK_MODE_SHDN (1 << SS_SHIFT_MODE_SHDN)
gmehmet 0:ddc2fef69ef9 95 #define SS_SHIFT_MODE_RESET 1
gmehmet 0:ddc2fef69ef9 96 #define SS_MASK_MODE_RESET (1 << SS_SHIFT_MODE_RESET)
gmehmet 0:ddc2fef69ef9 97 #define SS_SHIFT_MODE_FIFORESET 2
gmehmet 0:ddc2fef69ef9 98 #define SS_MASK_MODE_FIFORESET (1 << SS_SHIFT_MODE_FIFORESET)
gmehmet 0:ddc2fef69ef9 99 #define SS_SHIFT_MODE_BOOTLDR 3
gmehmet 0:ddc2fef69ef9 100 #define SS_MASK_MODE_BOOTLDR (1 << SS_SHIFT_MODE_BOOTLDR)
gmehmet 0:ddc2fef69ef9 101
gmehmet 0:ddc2fef69ef9 102 /*MYG*/
gmehmet 0:ddc2fef69ef9 103 #define SH_MODE_REQUEST_RET_BYTES (2)
gmehmet 0:ddc2fef69ef9 104 #define SH_MODE_REQUEST_DELAY (2)
gmehmet 0:ddc2fef69ef9 105 #define SH_STATUS_REQUEST_RET_BYTES (2)
gmehmet 0:ddc2fef69ef9 106 #define SH_STATUS_REQUEST_DELAY (2)
gmehmet 0:ddc2fef69ef9 107
gmehmet 0:ddc2fef69ef9 108
gmehmet 0:ddc2fef69ef9 109
gmehmet 0:ddc2fef69ef9 110 #define SS_I2C_READ 0x03
gmehmet 0:ddc2fef69ef9 111
gmehmet 0:ddc2fef69ef9 112 #define SS_FAM_W_COMMCHAN 0x10
gmehmet 0:ddc2fef69ef9 113 #define SS_FAM_R_COMMCHAN 0x11
gmehmet 0:ddc2fef69ef9 114 #define SS_CMDIDX_OUTPUTMODE 0x00
gmehmet 0:ddc2fef69ef9 115 #define SS_SHIFT_OUTPUTMODE_DATATYPE 0
gmehmet 0:ddc2fef69ef9 116 #define SS_MASK_OUTPUTMODE_DATATYPE (0x03 << SS_SHIFT_OUTPUTMODE_DATATYPE)
gmehmet 0:ddc2fef69ef9 117 #define SS_DATATYPE_PAUSE 0
gmehmet 0:ddc2fef69ef9 118 #define SS_DATATYPE_RAW 1
gmehmet 0:ddc2fef69ef9 119 #define SS_DATATYPE_ALGO 2
gmehmet 0:ddc2fef69ef9 120 #define SS_DATATYPE_BOTH 3
gmehmet 0:ddc2fef69ef9 121 #define SS_SHIFT_OUTPUTMODE_SC_EN 2
gmehmet 0:ddc2fef69ef9 122 #define SS_MASK_OUTPUTMODE_SC_EN (1 << SS_SHIFT_OUTPUTMODE_SC_EN)
gmehmet 0:ddc2fef69ef9 123 #define SS_CMDIDX_FIFOAFULL 0x01
gmehmet 0:ddc2fef69ef9 124
gmehmet 0:ddc2fef69ef9 125 #define SS_FAM_R_OUTPUTFIFO 0x12
gmehmet 0:ddc2fef69ef9 126 #define SS_CMDIDX_OUT_NUMSAMPLES 0x00
gmehmet 0:ddc2fef69ef9 127 #define SS_CMDIDX_READFIFO 0x01
gmehmet 0:ddc2fef69ef9 128
gmehmet 0:ddc2fef69ef9 129 #define SS_FAM_R_INPUTFIFO 0x13
gmehmet 0:ddc2fef69ef9 130 #define SS_CMDIDX_SAMPLE_SIZE 0x00
gmehmet 0:ddc2fef69ef9 131 #define SS_CMDIDX_INPUT_FIFO_SIZE 0x01
gmehmet 0:ddc2fef69ef9 132 #define SS_CMDIDX_SENSOR_FIFO_SIZE 0x02
gmehmet 0:ddc2fef69ef9 133 #define SS_CMDIDX_NUM_SAMPLES_SENSOR_FIFO 0x03
gmehmet 0:ddc2fef69ef9 134 #define SS_CMDIDX_NUM_SAMPLES_INPUT_FIFO 0x04
gmehmet 0:ddc2fef69ef9 135
gmehmet 0:ddc2fef69ef9 136 #define SS_FAM_W_INPUTFIFO 0x14
gmehmet 0:ddc2fef69ef9 137 #define SS_CMDIDN_WRITEFIFO 0x00
gmehmet 0:ddc2fef69ef9 138 #define SS_CMDIDX_WRITE_FIFO 0x00
gmehmet 0:ddc2fef69ef9 139
gmehmet 0:ddc2fef69ef9 140 #define SS_FAM_W_WRITEREG 0x40
gmehmet 0:ddc2fef69ef9 141 #define SS_FAM_R_READREG 0x41
gmehmet 0:ddc2fef69ef9 142 #define SS_FAM_R_REGATTRIBS 0x42
gmehmet 0:ddc2fef69ef9 143 #define SS_FAM_R_DUMPREG 0x43
gmehmet 0:ddc2fef69ef9 144
gmehmet 0:ddc2fef69ef9 145 #define SS_FAM_W_SENSORMODE 0x44
gmehmet 0:ddc2fef69ef9 146 #define SS_FAM_R_SENSORMODE 0x45
gmehmet 0:ddc2fef69ef9 147
gmehmet 0:ddc2fef69ef9 148 //TODO: Fill in known configuration parameters
gmehmet 0:ddc2fef69ef9 149 #define SS_FAM_W_ALGOCONFIG 0x50
gmehmet 0:ddc2fef69ef9 150 #define SS_FAM_R_ALGOCONFIG 0x51
gmehmet 0:ddc2fef69ef9 151 #define SS_CFGIDX_AGC_TARGET 0x00
gmehmet 0:ddc2fef69ef9 152 #define SS_CFGIDX_AGC_CORR_COEFF 0x01
gmehmet 0:ddc2fef69ef9 153 #define SS_CFGIDX_AGC_SENSITIVITY 0x02
gmehmet 0:ddc2fef69ef9 154 #define SS_CFGIDX_AGC_SMP_AVG 0x03
gmehmet 0:ddc2fef69ef9 155
gmehmet 0:ddc2fef69ef9 156 #define SS_CFGIDX_WHRM_SR 0x00
gmehmet 0:ddc2fef69ef9 157 #define SS_CFGIDX_WHRM_MAX_HEIGHT 0x01
gmehmet 0:ddc2fef69ef9 158 #define SS_CFGIDX_WHRM_MAX_WEIGHT 0x02
gmehmet 0:ddc2fef69ef9 159 #define SS_CFGIDX_WHRM_MAX_AGE 0x03
gmehmet 0:ddc2fef69ef9 160 #define SS_CFGIDX_WHRM_MIN_HEIGHT 0x04
gmehmet 0:ddc2fef69ef9 161 #define SS_CFGIDX_WHRM_MIN_WEIGHT 0x05
gmehmet 0:ddc2fef69ef9 162 #define SS_CFGIDX_WHRM_MIN_AGE 0x06
gmehmet 0:ddc2fef69ef9 163 #define SS_CFGIDX_WHRM_DEF_HEIGHT 0x07
gmehmet 0:ddc2fef69ef9 164 #define SS_CFGIDX_WHRM_DEF_WEIGHT 0x08
gmehmet 0:ddc2fef69ef9 165 #define SS_CFGIDX_WHRM_DEF_AGE 0x09
gmehmet 0:ddc2fef69ef9 166 #define SS_CFGIDX_WHRM_INIT_HR 0x0A
gmehmet 0:ddc2fef69ef9 167
gmehmet 0:ddc2fef69ef9 168 #define SS_CFGIDX_BP_USE_MED 0x00
gmehmet 0:ddc2fef69ef9 169 #define SS_CFGIDX_BP_SYS_BP_CAL 0x01
gmehmet 0:ddc2fef69ef9 170 #define SS_CFGIDX_BP_DIA_BP_CAL 0x02
gmehmet 0:ddc2fef69ef9 171 #define SS_CFGIDX_BP_CAL_DATA 0x03
gmehmet 0:ddc2fef69ef9 172 #define SS_CFGIDX_BP_EST_DATE 0x04
gmehmet 0:ddc2fef69ef9 173 #define SS_CFGIDX_BP_EST_NONREST 0x05
gmehmet 0:ddc2fef69ef9 174
gmehmet 0:ddc2fef69ef9 175 #define SS_FAM_W_ALGOMODE 0x52
gmehmet 0:ddc2fef69ef9 176 #define SS_FAM_R_ALGOMODE 0x53
gmehmet 0:ddc2fef69ef9 177
gmehmet 0:ddc2fef69ef9 178 #define SS_FAM_W_EXTERNSENSORMODE 0x60
gmehmet 0:ddc2fef69ef9 179 #define SS_FAM_R_EXTERNSENSORMODE 0x61
gmehmet 0:ddc2fef69ef9 180
gmehmet 0:ddc2fef69ef9 181 #define SS_FAM_R_SELFTEST 0x70
gmehmet 0:ddc2fef69ef9 182
gmehmet 0:ddc2fef69ef9 183 #define SS_FAM_W_BOOTLOADER 0x80
gmehmet 0:ddc2fef69ef9 184 #define SS_CMDIDX_SETIV 0x00
gmehmet 0:ddc2fef69ef9 185 #define SS_CMDIDX_SETAUTH 0x01
gmehmet 0:ddc2fef69ef9 186 #define SS_CMDIDX_SETNUMPAGES 0x02
gmehmet 0:ddc2fef69ef9 187 #define SS_CMDIDX_ERASE 0x03
gmehmet 0:ddc2fef69ef9 188 #define SS_CMDIDX_SENDPAGE 0x04
gmehmet 0:ddc2fef69ef9 189 #define SS_CMDIDX_ERASE_PAGE 0x05
gmehmet 0:ddc2fef69ef9 190 #define SS_FAM_R_BOOTLOADER 0x81
gmehmet 0:ddc2fef69ef9 191 #define SS_CMDIDX_BOOTFWVERSION 0x00
gmehmet 0:ddc2fef69ef9 192 #define SS_CMDIDX_PAGESIZE 0x01
gmehmet 0:ddc2fef69ef9 193
gmehmet 0:ddc2fef69ef9 194 #define SS_FAM_W_BOOTLOADER_CFG 0x82
gmehmet 0:ddc2fef69ef9 195 #define SS_FAM_R_BOOTLOADER_CFG 0x83
gmehmet 0:ddc2fef69ef9 196 #define SS_CMDIDX_BL_SAVE 0x00
gmehmet 0:ddc2fef69ef9 197 #define SS_CMDIDX_BL_ENTRY 0x01
gmehmet 0:ddc2fef69ef9 198 #define SS_BL_CFG_ENTER_BL_MODE 0x00
gmehmet 0:ddc2fef69ef9 199 #define SS_BL_CFG_EBL_PIN 0x01
gmehmet 0:ddc2fef69ef9 200 #define SS_BL_CFG_EBL_POL 0x02
gmehmet 0:ddc2fef69ef9 201 #define SS_CMDIDX_BL_EXIT 0x02
gmehmet 0:ddc2fef69ef9 202 #define SS_BL_CFG_EXIT_BL_MODE 0x00
gmehmet 0:ddc2fef69ef9 203 #define SS_BL_CFG_TIMEOUT 0x01
gmehmet 0:ddc2fef69ef9 204
gmehmet 0:ddc2fef69ef9 205 /* Enable logging/debugging */
gmehmet 0:ddc2fef69ef9 206 #define SS_FAM_R_LOG 0x90
gmehmet 0:ddc2fef69ef9 207 #define SS_CMDIDX_R_LOG_DATA 0x00
gmehmet 0:ddc2fef69ef9 208 #define SS_CMDIDX_R_LOG_LEN 0x01
gmehmet 0:ddc2fef69ef9 209
gmehmet 0:ddc2fef69ef9 210 #define SS_CMDIDX_R_LOG_LEVEL 0x02
gmehmet 0:ddc2fef69ef9 211 #define SS_LOG_DISABLE 0x00
gmehmet 0:ddc2fef69ef9 212 #define SS_LOG_CRITICAL 0x01
gmehmet 0:ddc2fef69ef9 213 #define SS_LOG_ERROR 0x02
gmehmet 0:ddc2fef69ef9 214 #define SS_LOG_INFO 0x04
gmehmet 0:ddc2fef69ef9 215 #define SS_LOG_DEBUG 0x08
gmehmet 0:ddc2fef69ef9 216
gmehmet 0:ddc2fef69ef9 217 #define SS_FAM_W_LOG_CFG 0x91
gmehmet 0:ddc2fef69ef9 218 #define SS_CMDIDX_LOG_GET_LEVEL 0x00
gmehmet 0:ddc2fef69ef9 219 #define SS_CMDIDX_LOG_SET_LEVEL 0x01
gmehmet 0:ddc2fef69ef9 220
gmehmet 0:ddc2fef69ef9 221 #define SS_FAM_R_IDENTITY 0xFF
gmehmet 0:ddc2fef69ef9 222 #define SS_CMDIDX_PLATTYPE 0x00
gmehmet 0:ddc2fef69ef9 223 #define SS_CMDIDX_PARTID 0x01
gmehmet 0:ddc2fef69ef9 224 #define SS_CMDIDX_REVID 0x02
gmehmet 0:ddc2fef69ef9 225 #define SS_CMDIDX_FWVERSION 0x03
gmehmet 0:ddc2fef69ef9 226 #define SS_CMDIDX_AVAILSENSORS 0x04
gmehmet 0:ddc2fef69ef9 227 #define SS_CMDIDX_DRIVERVER 0x05
gmehmet 0:ddc2fef69ef9 228 #define SS_CMDIDX_AVAILALGOS 0x06
gmehmet 0:ddc2fef69ef9 229 #define SS_CMDIDX_ALGOVER 0x07
gmehmet 0:ddc2fef69ef9 230
gmehmet 0:ddc2fef69ef9 231
gmehmet 0:ddc2fef69ef9 232 /* Newly added ones; checko for collosion or repeats with the ones above */
gmehmet 0:ddc2fef69ef9 233 #define SS_RESET_TIME 10
gmehmet 0:ddc2fef69ef9 234 #define SS_STARTUP_TO_BTLDR_TIME 20
gmehmet 0:ddc2fef69ef9 235 #define SS_STARTUP_TO_MAIN_APP_TIME 1000
gmehmet 0:ddc2fef69ef9 236
gmehmet 0:ddc2fef69ef9 237 #define SS_MAX_SUPPORTED_SENSOR_NUM 0xFE
gmehmet 0:ddc2fef69ef9 238 #define SS_MAX_SUPPORTED_ALGO_NUM 0xFE
gmehmet 0:ddc2fef69ef9 239
gmehmet 0:ddc2fef69ef9 240 #define SS_APPPLICATION_MODE 0x00
gmehmet 0:ddc2fef69ef9 241 #define SS_BOOTLOADER_MODE 0x08
gmehmet 0:ddc2fef69ef9 242
gmehmet 0:ddc2fef69ef9 243 typedef enum {
gmehmet 0:ddc2fef69ef9 244 SS_SUCCESS =0x00,
gmehmet 0:ddc2fef69ef9 245 SS_ERR_COMMAND =0x01,
gmehmet 0:ddc2fef69ef9 246 SS_ERR_UNAVAILABLE =0x02,
gmehmet 0:ddc2fef69ef9 247 SS_ERR_DATA_FORMAT =0x03,
gmehmet 0:ddc2fef69ef9 248 SS_ERR_INPUT_VALUE =0x04,
gmehmet 0:ddc2fef69ef9 249 SS_ERR_BTLDR_GENERAL =0x80,
gmehmet 0:ddc2fef69ef9 250 SS_ERR_BTLDR_CHECKSUM =0x81,
gmehmet 0:ddc2fef69ef9 251 SS_ERR_TRY_AGAIN =0xFE,
gmehmet 0:ddc2fef69ef9 252 SS_ERR_UNKNOWN =0xFF,
gmehmet 0:ddc2fef69ef9 253
gmehmet 0:ddc2fef69ef9 254 } SS_STATUS;
gmehmet 0:ddc2fef69ef9 255
gmehmet 0:ddc2fef69ef9 256
gmehmet 0:ddc2fef69ef9 257
gmehmet 0:ddc2fef69ef9 258 /* ***************************************************************************************** *
gmehmet 0:ddc2fef69ef9 259 * *
gmehmet 0:ddc2fef69ef9 260 * SENSOR HUB COMMUNICATION INTERFACE ( Defined in MAX32664 User Guide ) API FUNCTIONS *
gmehmet 0:ddc2fef69ef9 261 * *
gmehmet 0:ddc2fef69ef9 262 * *
gmehmet 0:ddc2fef69ef9 263 * ***************************************************************************************** */
gmehmet 0:ddc2fef69ef9 264
gmehmet 0:ddc2fef69ef9 265
gmehmet 0:ddc2fef69ef9 266 /**
gmehmet 0:ddc2fef69ef9 267 * @brief Func to write to sensor hub via sending generic command byte sequences
gmehmet 0:ddc2fef69ef9 268 *
gmehmet 0:ddc2fef69ef9 269 * @param[in] tx_buf - command byte sequence
gmehmet 0:ddc2fef69ef9 270 * @param[in] tx_len - command byte sequence length in bytes
gmehmet 0:ddc2fef69ef9 271 * @param[in] sleep_ms - time to wait for sensor hub to report statuss
gmehmet 0:ddc2fef69ef9 272 *
gmehmet 0:ddc2fef69ef9 273 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 274 */
gmehmet 0:ddc2fef69ef9 275 int sh_write_cmd( uint8_t *tx_buf,
gmehmet 0:ddc2fef69ef9 276 int tx_len,
gmehmet 0:ddc2fef69ef9 277 int sleep_ms );
gmehmet 0:ddc2fef69ef9 278
gmehmet 0:ddc2fef69ef9 279
gmehmet 0:ddc2fef69ef9 280 /**
gmehmet 0:ddc2fef69ef9 281 * @brief Func to write to sensor hub via sending generic command byte sequences and data bytes
gmehmet 0:ddc2fef69ef9 282 *
gmehmet 0:ddc2fef69ef9 283 * @param[in] cmd_bytes - command byte sequence
gmehmet 0:ddc2fef69ef9 284 * @param[in] cmd_bytes_len - command byte sequence length in bytes
gmehmet 0:ddc2fef69ef9 285 * @param[in] data - data byte array to be sent following cmd bytes
gmehmet 0:ddc2fef69ef9 286 * @param[in] data_len - data array size in bytes
gmehmet 0:ddc2fef69ef9 287 * @param[in] cmd_delay_ms - time to wait for sensor hub to report status
gmehmet 0:ddc2fef69ef9 288 *
gmehmet 0:ddc2fef69ef9 289 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 290 */
gmehmet 0:ddc2fef69ef9 291 int sh_write_cmd_with_data(uint8_t *cmd_bytes,
gmehmet 0:ddc2fef69ef9 292 int cmd_bytes_len,
gmehmet 0:ddc2fef69ef9 293 uint8_t *data,
gmehmet 0:ddc2fef69ef9 294 int data_len,
gmehmet 0:ddc2fef69ef9 295 int cmd_delay_ms);
gmehmet 0:ddc2fef69ef9 296
gmehmet 0:ddc2fef69ef9 297
gmehmet 0:ddc2fef69ef9 298 /**
gmehmet 0:ddc2fef69ef9 299 * @brief Func to read from sensor hub via sending generic command byte sequences
gmehmet 0:ddc2fef69ef9 300 *
gmehmet 0:ddc2fef69ef9 301 * @param[in] cmd_bytes - command byte sequence
gmehmet 0:ddc2fef69ef9 302 * @param[in] cmd_bytes_len - command byte sequence length in bytes
gmehmet 0:ddc2fef69ef9 303 * @param[in] data - data byte array to be sent following cmd bytes
gmehmet 0:ddc2fef69ef9 304 * @param[in] data_len - data array size in bytes
gmehmet 0:ddc2fef69ef9 305 * @param[out] rxbuf - byte buffer to store incoming data (including status byte)
gmehmet 0:ddc2fef69ef9 306 * @param[in] rxbuf_sz - incoming data buffer size in bytes ( to prevent overflow)
gmehmet 0:ddc2fef69ef9 307 * @param[in] cmd_delay_ms - time to wait for sensor hub to report status
gmehmet 0:ddc2fef69ef9 308 *
gmehmet 0:ddc2fef69ef9 309 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 310 */
gmehmet 0:ddc2fef69ef9 311 int sh_read_cmd( uint8_t *cmd_bytes,
gmehmet 0:ddc2fef69ef9 312 int cmd_bytes_len,
gmehmet 0:ddc2fef69ef9 313 uint8_t *data,
gmehmet 0:ddc2fef69ef9 314 int data_len,
gmehmet 0:ddc2fef69ef9 315 uint8_t *rxbuf,
gmehmet 0:ddc2fef69ef9 316 int rxbuf_sz,
gmehmet 0:ddc2fef69ef9 317 int sleep_ms );
gmehmet 0:ddc2fef69ef9 318
gmehmet 0:ddc2fef69ef9 319
gmehmet 0:ddc2fef69ef9 320 /**
gmehmet 0:ddc2fef69ef9 321 * @brief func to read sensor hub status
gmehmet 0:ddc2fef69ef9 322 * @param[out] hubStatus - pointer to output byte sesnor hub status will be written
gmehmet 0:ddc2fef69ef9 323 * @details ensor hub status byte: [2:0] -> 0 : no Err , 1: comm failure with sensor
gmehmet 0:ddc2fef69ef9 324 * [3] -> 0 : FIFO below threshold; 1: FIFO filled to threshold or above.
gmehmet 0:ddc2fef69ef9 325 * [4] -> 0 : No FIFO overflow; 1: Sensor Hub Output FIFO overflowed, data lost.
gmehmet 0:ddc2fef69ef9 326 * [5] -> 0 : No FIFO overflow; 1: Sensor Hub Input FIFO overflowed, data lost.
gmehmet 0:ddc2fef69ef9 327 * [6] -> 0 : Sensor Hub ready; 1: Sensor Hub is busy processing.
gmehmet 0:ddc2fef69ef9 328 * [6] -> reserved.
gmehmet 0:ddc2fef69ef9 329 *
gmehmet 0:ddc2fef69ef9 330 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 331 */
gmehmet 0:ddc2fef69ef9 332 int sh_get_sensorhub_status(uint8_t *hubStatus);
gmehmet 0:ddc2fef69ef9 333
gmehmet 0:ddc2fef69ef9 334
gmehmet 0:ddc2fef69ef9 335 /**
gmehmet 0:ddc2fef69ef9 336 * @brief func to read sensor operating mode
gmehmet 0:ddc2fef69ef9 337 *
gmehmet 0:ddc2fef69ef9 338 * @param[in] hubMode - pointer to output byte mode will be written
gmehmet 0:ddc2fef69ef9 339 * @details 0x00: application operating mode
gmehmet 0:ddc2fef69ef9 340 * 0x08: bootloader operating mode
gmehmet 0:ddc2fef69ef9 341 *
gmehmet 0:ddc2fef69ef9 342 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 343 */
gmehmet 0:ddc2fef69ef9 344 int sh_get_sensorhub_operating_mode(uint8_t *hubMode);
gmehmet 0:ddc2fef69ef9 345
gmehmet 0:ddc2fef69ef9 346
gmehmet 0:ddc2fef69ef9 347 /**
gmehmet 0:ddc2fef69ef9 348 * @brief func to set sensor hub operating mode
gmehmet 0:ddc2fef69ef9 349 *
gmehmet 0:ddc2fef69ef9 350 * @param[out] hubMode - pointer to output byte mode will be written
gmehmet 0:ddc2fef69ef9 351 * @details 0x00: application operating mode
gmehmet 0:ddc2fef69ef9 352 * 0x02: soft reset
gmehmet 0:ddc2fef69ef9 353 * 0x08: bootloader operating mode
gmehmet 0:ddc2fef69ef9 354 *
gmehmet 0:ddc2fef69ef9 355 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 356 */
gmehmet 0:ddc2fef69ef9 357 int sh_set_sensorhub_operating_mode(uint8_t hubMode);
gmehmet 0:ddc2fef69ef9 358
gmehmet 0:ddc2fef69ef9 359
gmehmet 0:ddc2fef69ef9 360 /**
gmehmet 0:ddc2fef69ef9 361 * @brief func to set sensorhub data output mode
gmehmet 0:ddc2fef69ef9 362 *
gmehmet 0:ddc2fef69ef9 363 * @param[in] data_type : 1 byte output format
gmehmet 0:ddc2fef69ef9 364 * @details outpur format 0x00 : no data
gmehmet 0:ddc2fef69ef9 365 * 0x01 : sensor data SS_DATATYPE_RAW
gmehmet 0:ddc2fef69ef9 366 * 0x02 : algo data SS_DATATYPE_ALGO
gmehmet 0:ddc2fef69ef9 367 * 0x03 : algo+sensor SS_DATATYPE_BOTH
gmehmet 0:ddc2fef69ef9 368 *
gmehmet 0:ddc2fef69ef9 369 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 370 */
gmehmet 0:ddc2fef69ef9 371 int sh_set_data_type(int data_type, bool sc_en);
gmehmet 0:ddc2fef69ef9 372
gmehmet 0:ddc2fef69ef9 373
gmehmet 0:ddc2fef69ef9 374 /**
gmehmet 0:ddc2fef69ef9 375 * @brief func to get sensorhub data output mode
gmehmet 0:ddc2fef69ef9 376 *
gmehmet 0:ddc2fef69ef9 377 * @param[out] data_type - pointer to byte, output format will be written to.
gmehmet 0:ddc2fef69ef9 378 *
gmehmet 0:ddc2fef69ef9 379 * @param[out] sc_en - pointer to boolean, sample count enable/disable status format will be written to.
gmehmet 0:ddc2fef69ef9 380 * If true, SmartSensor is prepending data with 1 byte sample count.
gmehmet 0:ddc2fef69ef9 381 *
gmehmet 0:ddc2fef69ef9 382 * @details output format 0x00 : only algorithm data
gmehmet 0:ddc2fef69ef9 383 * 0x01 : only raw sensor data
gmehmet 0:ddc2fef69ef9 384 * 0x02 : algo + raw sensor data
gmehmet 0:ddc2fef69ef9 385 * 0x03 : no data
gmehmet 0:ddc2fef69ef9 386 *
gmehmet 0:ddc2fef69ef9 387 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 388 */
gmehmet 0:ddc2fef69ef9 389 int sh_get_data_type(int *data_type, bool *sc_en);
gmehmet 0:ddc2fef69ef9 390
gmehmet 0:ddc2fef69ef9 391
gmehmet 0:ddc2fef69ef9 392 /**
gmehmet 0:ddc2fef69ef9 393 * @brief func to set the number of samples for the SmartSensor to collect
gmehmet 0:ddc2fef69ef9 394 * before issuing an mfio event reporting interrupt
gmehmet 0:ddc2fef69ef9 395 *
gmehmet 0:ddc2fef69ef9 396 * @param[in] thresh - Number of samples (1-255) to collect before interrupt
gmehmet 0:ddc2fef69ef9 397 *
gmehmet 0:ddc2fef69ef9 398 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 399 */
gmehmet 0:ddc2fef69ef9 400 int sh_set_fifo_thresh( int threshold );
gmehmet 0:ddc2fef69ef9 401
gmehmet 0:ddc2fef69ef9 402
gmehmet 0:ddc2fef69ef9 403 /**
gmehmet 0:ddc2fef69ef9 404 * @brief func to get the number of samples the SmartSensor will collect
gmehmet 0:ddc2fef69ef9 405 * before issuing an mfio event reporting interrupt
gmehmet 0:ddc2fef69ef9 406 *
gmehmet 0:ddc2fef69ef9 407 * @param[out] thresh - Number of samples (1-255) collected before interrupt
gmehmet 0:ddc2fef69ef9 408 *
gmehmet 0:ddc2fef69ef9 409 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 410 */
gmehmet 0:ddc2fef69ef9 411 int sh_get_fifo_thresh(int *thresh);
gmehmet 0:ddc2fef69ef9 412
gmehmet 0:ddc2fef69ef9 413
gmehmet 0:ddc2fef69ef9 414 /**
gmehmet 0:ddc2fef69ef9 415 * @brief func to check that the SmartSensor is connected
gmehmet 0:ddc2fef69ef9 416 *
gmehmet 0:ddc2fef69ef9 417 * @return 1 byte connection status 0x00: on connection
gmehmet 0:ddc2fef69ef9 418 */
gmehmet 0:ddc2fef69ef9 419 int sh_ss_comm_check(void);
gmehmet 0:ddc2fef69ef9 420
gmehmet 0:ddc2fef69ef9 421
gmehmet 0:ddc2fef69ef9 422 /**
gmehmet 0:ddc2fef69ef9 423 * @brief func to get the number of available samples in SmartSensor output FIFO
gmehmet 0:ddc2fef69ef9 424 *
gmehmet 0:ddc2fef69ef9 425 * @param[out] numSamples - number of data struct samples (1-255)
gmehmet 0:ddc2fef69ef9 426 *
gmehmet 0:ddc2fef69ef9 427 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 428 */
gmehmet 0:ddc2fef69ef9 429 int sh_num_avail_samples(int *numSamples);
gmehmet 0:ddc2fef69ef9 430
gmehmet 0:ddc2fef69ef9 431
gmehmet 0:ddc2fef69ef9 432 /**
gmehmet 0:ddc2fef69ef9 433 * @brief func to pull samples from SmartSensor output FIFO
gmehmet 0:ddc2fef69ef9 434 *
gmehmet 0:ddc2fef69ef9 435 * @param[in] numSamples - number of data struct samples to be pulled
gmehmet 0:ddc2fef69ef9 436 * @param[in] sampleSize - size of cumulative data sample struct (based on enabled sesnors+algorithms) in bytes
gmehmet 0:ddc2fef69ef9 437 * @param[out] databuf - buffer samples be written
gmehmet 0:ddc2fef69ef9 438 * @param[in] databufSize - size of provided buffer size samples to be written
gmehmet 0:ddc2fef69ef9 439 *
gmehmet 0:ddc2fef69ef9 440 * @return 1 byte status: 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 441 */
gmehmet 0:ddc2fef69ef9 442 int sh_read_fifo_data( int numSamples, int sampleSize, uint8_t* databuf, int databufSz);
gmehmet 0:ddc2fef69ef9 443
gmehmet 0:ddc2fef69ef9 444
gmehmet 0:ddc2fef69ef9 445 /**
gmehmet 0:ddc2fef69ef9 446 * @brief func to set register of a device onboard SmartSensor
gmehmet 0:ddc2fef69ef9 447 *
gmehmet 0:ddc2fef69ef9 448 * @param[in] idx - Index of device to read
gmehmet 0:ddc2fef69ef9 449 * @param[in] addr - Register address
gmehmet 0:ddc2fef69ef9 450 * @param[in] val - Register value
gmehmet 0:ddc2fef69ef9 451 * @param[in] regSz - Size of sensor device register in bytes
gmehmet 0:ddc2fef69ef9 452 *
gmehmet 0:ddc2fef69ef9 453 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 454 */
gmehmet 0:ddc2fef69ef9 455 int sh_set_reg(int idx, uint8_t addr, uint32_t val, int regSz);
gmehmet 0:ddc2fef69ef9 456
gmehmet 0:ddc2fef69ef9 457
gmehmet 0:ddc2fef69ef9 458 /**
gmehmet 0:ddc2fef69ef9 459 * @brief func to read register from a device onboard SmartSensor
gmehmet 0:ddc2fef69ef9 460 *
gmehmet 0:ddc2fef69ef9 461 * @param[in] idx - Index of device to read
gmehmet 0:ddc2fef69ef9 462 * @param[in] addr - Register address
gmehmet 0:ddc2fef69ef9 463 * @param[out] val - Register value
gmehmet 0:ddc2fef69ef9 464 *
gmehmet 0:ddc2fef69ef9 465 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 466 */
gmehmet 0:ddc2fef69ef9 467 int sh_get_reg(int idx, uint8_t addr, uint32_t *val);
gmehmet 0:ddc2fef69ef9 468
gmehmet 0:ddc2fef69ef9 469
gmehmet 0:ddc2fef69ef9 470 // depricated: int sh_sensor_enable( int idx , int sensorSampleSz);
gmehmet 0:ddc2fef69ef9 471 /**
gmehmet 0:ddc2fef69ef9 472 * @brief func to enable a sensor device onboard SmartSensor
gmehmet 0:ddc2fef69ef9 473 *
gmehmet 0:ddc2fef69ef9 474 * @param[in] idx - index of sensor device( i.e max8614x) to enable
gmehmet 0:ddc2fef69ef9 475 * @param[in] sensorSampleSz - sample size of sensor device( i.e max8614x) to enable
gmehmet 0:ddc2fef69ef9 476 * @param[in] ext_mode - enable extermal data input to Sensot Hub, ie accelerometer data for WHRM+WSPo2
gmehmet 0:ddc2fef69ef9 477 *
gmehmet 0:ddc2fef69ef9 478 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 479 */
gmehmet 0:ddc2fef69ef9 480 int sh_sensor_enable( int idx , int sensorSampleSz , uint8_t ext_mode );
gmehmet 0:ddc2fef69ef9 481
gmehmet 0:ddc2fef69ef9 482
gmehmet 0:ddc2fef69ef9 483 /**
gmehmet 0:ddc2fef69ef9 484 * @brief func to disable a device on the SmartSensor
gmehmet 0:ddc2fef69ef9 485 *
gmehmet 0:ddc2fef69ef9 486 * @param[in] idx - Index of device
gmehmet 0:ddc2fef69ef9 487 *
gmehmet 0:ddc2fef69ef9 488 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 489 */
gmehmet 0:ddc2fef69ef9 490 int sh_sensor_disable( int idx );
gmehmet 0:ddc2fef69ef9 491
gmehmet 0:ddc2fef69ef9 492
gmehmet 0:ddc2fef69ef9 493 /**
gmehmet 0:ddc2fef69ef9 494 * @brief func to get the total number of samples the input FIFO can hold
gmehmet 0:ddc2fef69ef9 495 *
gmehmet 0:ddc2fef69ef9 496 * @param[in] fifo_size - intger input FIFO capacity will be written to.
gmehmet 0:ddc2fef69ef9 497 *
gmehmet 0:ddc2fef69ef9 498 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 499 */
gmehmet 0:ddc2fef69ef9 500 int sh_get_input_fifo_size(int *fifo_size);
gmehmet 0:ddc2fef69ef9 501
gmehmet 0:ddc2fef69ef9 502
gmehmet 0:ddc2fef69ef9 503 /**
gmehmet 0:ddc2fef69ef9 504 * @brief func to send ass external sensor data (accelerometer) to sensor hub's input FIFO
gmehmet 0:ddc2fef69ef9 505 *
gmehmet 0:ddc2fef69ef9 506 * @param[in] tx_buf - host sample data to be send to sensor hub input FIFO
gmehmet 0:ddc2fef69ef9 507 * @param[in] tx_buf_sz - number of bytes of tx_buf
gmehmet 0:ddc2fef69ef9 508 * @param[out] nb_written - number of samples succesfully written to sensor hub's input FIFO
gmehmet 0:ddc2fef69ef9 509 *
gmehmet 0:ddc2fef69ef9 510 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 511 */
gmehmet 0:ddc2fef69ef9 512 int sh_feed_to_input_fifo(uint8_t *tx_buf, int tx_buf_sz, int *nb_written);
gmehmet 0:ddc2fef69ef9 513
gmehmet 0:ddc2fef69ef9 514
gmehmet 0:ddc2fef69ef9 515 /**
gmehmet 0:ddc2fef69ef9 516 * @brief func to get the total number of bytes in the sensor hub's input FIFO
gmehmet 0:ddc2fef69ef9 517 *
gmehmet 0:ddc2fef69ef9 518 * @param[in] fifo_size - total number of sample bytes available in input FIFO
gmehmet 0:ddc2fef69ef9 519 *
gmehmet 0:ddc2fef69ef9 520 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 521 */
gmehmet 0:ddc2fef69ef9 522 int sh_get_num_bytes_in_input_fifo(int *fifo_size);
gmehmet 0:ddc2fef69ef9 523
gmehmet 0:ddc2fef69ef9 524
gmehmet 0:ddc2fef69ef9 525 /**
gmehmet 0:ddc2fef69ef9 526 * @brief func to enable an algorithm on SmartSensor
gmehmet 0:ddc2fef69ef9 527 *
gmehmet 0:ddc2fef69ef9 528 * @param[in] idx - index of algorithm to enable
gmehmet 0:ddc2fef69ef9 529 * @param[in] sensorSampleSz - sample size of algorithm to enable
gmehmet 0:ddc2fef69ef9 530 *
gmehmet 0:ddc2fef69ef9 531 * @details idx - 0x00 : AGC
gmehmet 0:ddc2fef69ef9 532 * 0x01 : AEC
gmehmet 0:ddc2fef69ef9 533 * 0x02 : WHRM/Maximfast
gmehmet 0:ddc2fef69ef9 534 * 0x03 : ECG
gmehmet 0:ddc2fef69ef9 535 * 0x04 : BPT
gmehmet 0:ddc2fef69ef9 536 * 0x05 : SPo2
gmehmet 0:ddc2fef69ef9 537 * 0x06 : HRM/Maximfast finger
gmehmet 0:ddc2fef69ef9 538 *
gmehmet 0:ddc2fef69ef9 539 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 540 */
gmehmet 0:ddc2fef69ef9 541 int sh_enable_algo(int idx , int algoSampleSz);
gmehmet 0:ddc2fef69ef9 542
gmehmet 0:ddc2fef69ef9 543
gmehmet 0:ddc2fef69ef9 544 /**
gmehmet 0:ddc2fef69ef9 545 * @brief func to disable an algorithm on the SmartSensor
gmehmet 0:ddc2fef69ef9 546 *
gmehmet 0:ddc2fef69ef9 547 * @param[in] idx - index of algorithm to disable
gmehmet 0:ddc2fef69ef9 548 *
gmehmet 0:ddc2fef69ef9 549 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 550 */
gmehmet 0:ddc2fef69ef9 551 int sh_disable_algo(int idx);
gmehmet 0:ddc2fef69ef9 552
gmehmet 0:ddc2fef69ef9 553
gmehmet 0:ddc2fef69ef9 554 /**
gmehmet 0:ddc2fef69ef9 555 * @brief func to set the value of an algorithm configuration parameter
gmehmet 0:ddc2fef69ef9 556 *
gmehmet 0:ddc2fef69ef9 557 * @param[in] algo_idx - index of algorithm
gmehmet 0:ddc2fef69ef9 558 * @param[in] cfg_idx - index of configuration parameter
gmehmet 0:ddc2fef69ef9 559 * @param[in] cfg Array - byte array of configuration
gmehmet 0:ddc2fef69ef9 560 * @param[in] cfg_sz - size of cfg array
gmehmet 0:ddc2fef69ef9 561 *
gmehmet 0:ddc2fef69ef9 562 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 563 */
gmehmet 0:ddc2fef69ef9 564 int sh_set_algo_cfg(int algo_idx, int cfg_idx, uint8_t *cfg, int cfg_sz);
gmehmet 0:ddc2fef69ef9 565
gmehmet 0:ddc2fef69ef9 566
gmehmet 0:ddc2fef69ef9 567 /**
gmehmet 0:ddc2fef69ef9 568 * @brief func to get the value of an algorithm configuration parameter
gmehmet 0:ddc2fef69ef9 569 *
gmehmet 0:ddc2fef69ef9 570 * @param[in] algo_idx - index of algorithm
gmehmet 0:ddc2fef69ef9 571 * @param[in] cfg_idx - index of configuration parameter
gmehmet 0:ddc2fef69ef9 572 * @param[out] cfg - array of configuration bytes to be filled in
gmehmet 0:ddc2fef69ef9 573 * @param[in] cfg_sz - number of configuration parameter bytes to be read
gmehmet 0:ddc2fef69ef9 574 *
gmehmet 0:ddc2fef69ef9 575 * @return 1 byte status (SS_STATUS) : 0x00 (SS_SUCCESS) on success
gmehmet 0:ddc2fef69ef9 576 */
gmehmet 0:ddc2fef69ef9 577 int sh_get_algo_cfg(int algo_idx, int cfg_idx, uint8_t *cfg, int cfg_sz);
gmehmet 0:ddc2fef69ef9 578
gmehmet 0:ddc2fef69ef9 579 /**
gmehmet 0:ddc2fef69ef9 580 * @brief func to pull sensor, algo data sample bytes from sensor hub. outpur buffer, Content of the buffer depends on
gmehmet 0:ddc2fef69ef9 581 * enabled sensors, algorithms and their sample sizes.
gmehmet 0:ddc2fef69ef9 582 *
gmehmet 0:ddc2fef69ef9 583 * @param[out] databuf - byte buffer to hold pulled samples
gmehmet 0:ddc2fef69ef9 584 * @param[in] databufLen - size of provided databuf in bytes
gmehmet 0:ddc2fef69ef9 585 * @param[out] nSamplesRea - number of pulled samples in databuf
gmehmet 0:ddc2fef69ef9 586 *
gmehmet 0:ddc2fef69ef9 587 * @return N/A
gmehmet 0:ddc2fef69ef9 588 */
gmehmet 0:ddc2fef69ef9 589 void sh_ss_execute_once( uint8_t *databuf , int databufLen , int *nSamplesRead);
gmehmet 0:ddc2fef69ef9 590
gmehmet 0:ddc2fef69ef9 591
gmehmet 0:ddc2fef69ef9 592
gmehmet 0:ddc2fef69ef9 593
gmehmet 0:ddc2fef69ef9 594
gmehmet 0:ddc2fef69ef9 595
gmehmet 0:ddc2fef69ef9 596
gmehmet 0:ddc2fef69ef9 597 /* *************************************************************************************** *
gmehmet 0:ddc2fef69ef9 598 * DEMO SPECIFIC DECLERATIONS, NOT RELATED TO SENSOR HUB INTERFACE API. *
gmehmet 0:ddc2fef69ef9 599 * *
gmehmet 0:ddc2fef69ef9 600 * * *
gmehmet 0:ddc2fef69ef9 601 ******************************************************************************************/
gmehmet 0:ddc2fef69ef9 602
gmehmet 0:ddc2fef69ef9 603 void sh_init_hwcomm_interface();
gmehmet 0:ddc2fef69ef9 604 bool sh_has_mfio_event(void);
gmehmet 0:ddc2fef69ef9 605 void sh_enable_irq_mfioevent(void);
gmehmet 0:ddc2fef69ef9 606 void sh_disable_irq_mfioevent(void);
gmehmet 0:ddc2fef69ef9 607 void sh_clear_mfio_event_flag(void);
gmehmet 0:ddc2fef69ef9 608 int sh_hard_reset(int wakeupMode);
gmehmet 0:ddc2fef69ef9 609
gmehmet 0:ddc2fef69ef9 610 extern uint8_t sh_write_buf[];
gmehmet 0:ddc2fef69ef9 611
gmehmet 0:ddc2fef69ef9 612 /*
gmehmet 0:ddc2fef69ef9 613 #ifdef __cplusplus
gmehmet 0:ddc2fef69ef9 614 }
gmehmet 0:ddc2fef69ef9 615 #endif
gmehmet 0:ddc2fef69ef9 616 */
gmehmet 0:ddc2fef69ef9 617
gmehmet 0:ddc2fef69ef9 618
gmehmet 0:ddc2fef69ef9 619
gmehmet 0:ddc2fef69ef9 620 #endif /* _SENSOR_HUB_H */
gmehmet 0:ddc2fef69ef9 621
gmehmet 0:ddc2fef69ef9 622
gmehmet 0:ddc2fef69ef9 623
gmehmet 0:ddc2fef69ef9 624
gmehmet 0:ddc2fef69ef9 625