Source code for Maxim Sensor Hub Communications. Mostly C library for MAX32664 sensor hub communications.

Committer:
gmehmet
Date:
Mon Dec 17 07:56:04 2018 +0000
Revision:
0:23dade9a66bf
as Library

Who changed what in which revision?

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