AdiSense1000_V21 MBED API

Fork of AdiSense1000 by PoC_Team

Committer:
danodonovan
Date:
Mon Jan 22 17:40:50 2018 +0000
Revision:
24:5a2272a25ff1
Updating example to adisense1000 v1.0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danodonovan 24:5a2272a25ff1 1 /*!
danodonovan 24:5a2272a25ff1 2 ******************************************************************************
danodonovan 24:5a2272a25ff1 3 * @file: adi_sense_api.h
danodonovan 24:5a2272a25ff1 4 * @brief: ADI Sense Host Library Application Programming Interface (API)
danodonovan 24:5a2272a25ff1 5 *-----------------------------------------------------------------------------
danodonovan 24:5a2272a25ff1 6 */
danodonovan 24:5a2272a25ff1 7
danodonovan 24:5a2272a25ff1 8 /*
danodonovan 24:5a2272a25ff1 9 Copyright 2017 (c) Analog Devices, Inc.
danodonovan 24:5a2272a25ff1 10
danodonovan 24:5a2272a25ff1 11 All rights reserved.
danodonovan 24:5a2272a25ff1 12
danodonovan 24:5a2272a25ff1 13 Redistribution and use in source and binary forms, with or without
danodonovan 24:5a2272a25ff1 14 modification, are permitted provided that the following conditions are met:
danodonovan 24:5a2272a25ff1 15 - Redistributions of source code must retain the above copyright
danodonovan 24:5a2272a25ff1 16 notice, this list of conditions and the following disclaimer.
danodonovan 24:5a2272a25ff1 17 - Redistributions in binary form must reproduce the above copyright
danodonovan 24:5a2272a25ff1 18 notice, this list of conditions and the following disclaimer in
danodonovan 24:5a2272a25ff1 19 the documentation and/or other materials provided with the
danodonovan 24:5a2272a25ff1 20 distribution.
danodonovan 24:5a2272a25ff1 21 - Neither the name of Analog Devices, Inc. nor the names of its
danodonovan 24:5a2272a25ff1 22 contributors may be used to endorse or promote products derived
danodonovan 24:5a2272a25ff1 23 from this software without specific prior written permission.
danodonovan 24:5a2272a25ff1 24 - The use of this software may or may not infringe the patent rights
danodonovan 24:5a2272a25ff1 25 of one or more patent holders. This license does not release you
danodonovan 24:5a2272a25ff1 26 from the requirement that you obtain separate licenses from these
danodonovan 24:5a2272a25ff1 27 patent holders to use this software.
danodonovan 24:5a2272a25ff1 28 - Use of the software either in source or binary form, must be run
danodonovan 24:5a2272a25ff1 29 on or directly connected to an Analog Devices Inc. component.
danodonovan 24:5a2272a25ff1 30
danodonovan 24:5a2272a25ff1 31 THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR
danodonovan 24:5a2272a25ff1 32 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT,
danodonovan 24:5a2272a25ff1 33 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
danodonovan 24:5a2272a25ff1 34 IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT,
danodonovan 24:5a2272a25ff1 35 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
danodonovan 24:5a2272a25ff1 36 LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR
danodonovan 24:5a2272a25ff1 37 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
danodonovan 24:5a2272a25ff1 38 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
danodonovan 24:5a2272a25ff1 39 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
danodonovan 24:5a2272a25ff1 40 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
danodonovan 24:5a2272a25ff1 41 */
danodonovan 24:5a2272a25ff1 42
danodonovan 24:5a2272a25ff1 43 #ifndef __ADI_SENSE_1000_API_H__
danodonovan 24:5a2272a25ff1 44 #define __ADI_SENSE_1000_API_H__
danodonovan 24:5a2272a25ff1 45
danodonovan 24:5a2272a25ff1 46 #include "inc/adi_sense_types.h"
danodonovan 24:5a2272a25ff1 47 #include "inc/adi_sense_config_types.h"
danodonovan 24:5a2272a25ff1 48 #include "inc/adi_sense_platform.h"
danodonovan 24:5a2272a25ff1 49 #include "adi_sense_1000_config.h"
danodonovan 24:5a2272a25ff1 50 #include "adi_sense_1000_lut_data.h"
danodonovan 24:5a2272a25ff1 51
danodonovan 24:5a2272a25ff1 52 /*! @ingroup ADI_Sense_Api */
danodonovan 24:5a2272a25ff1 53
danodonovan 24:5a2272a25ff1 54 /*! @defgroup ADI_Sense_1000_Api ADI Sense 1000 Host Library API
danodonovan 24:5a2272a25ff1 55 * ADI Sense 1000 device-specific API function prototypes.
danodonovan 24:5a2272a25ff1 56 * These are supplementary to the common ADI Sense Host Library API.
danodonovan 24:5a2272a25ff1 57 * @{
danodonovan 24:5a2272a25ff1 58 */
danodonovan 24:5a2272a25ff1 59
danodonovan 24:5a2272a25ff1 60 #ifdef __cplusplus
danodonovan 24:5a2272a25ff1 61 extern "C" {
danodonovan 24:5a2272a25ff1 62 #endif
danodonovan 24:5a2272a25ff1 63
danodonovan 24:5a2272a25ff1 64 /*!
danodonovan 24:5a2272a25ff1 65 * @brief Read one or more device registers at the specified register address.
danodonovan 24:5a2272a25ff1 66 *
danodonovan 24:5a2272a25ff1 67 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 68 * @param[in] nAddress Register map address to read from
danodonovan 24:5a2272a25ff1 69 * @param[out] pData Pointer to return the register map data
danodonovan 24:5a2272a25ff1 70 * @param[in] nLength Number of bytes of data to read from the register map
danodonovan 24:5a2272a25ff1 71 *
danodonovan 24:5a2272a25ff1 72 * @return Status
danodonovan 24:5a2272a25ff1 73 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 74 *
danodonovan 24:5a2272a25ff1 75 * @details Provides direct byte-level read access to the device register map.
danodonovan 24:5a2272a25ff1 76 * The size and format of the register(s) must be known.
danodonovan 24:5a2272a25ff1 77 *
danodonovan 24:5a2272a25ff1 78 * @note Reads from special "keyhole" or "FIFO" registers will be handled
danodonovan 24:5a2272a25ff1 79 * according to documentation for those registers.
danodonovan 24:5a2272a25ff1 80 */
danodonovan 24:5a2272a25ff1 81 ADI_SENSE_RESULT adi_sense_1000_ReadRegister(
danodonovan 24:5a2272a25ff1 82 ADI_SENSE_DEVICE_HANDLE const hDevice,
danodonovan 24:5a2272a25ff1 83 uint16_t const nAddress,
danodonovan 24:5a2272a25ff1 84 void * const pData,
danodonovan 24:5a2272a25ff1 85 unsigned const nLength);
danodonovan 24:5a2272a25ff1 86
danodonovan 24:5a2272a25ff1 87 /*!
danodonovan 24:5a2272a25ff1 88 * @brief Write one or more device registers at the specified register address.
danodonovan 24:5a2272a25ff1 89 *
danodonovan 24:5a2272a25ff1 90 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 91 * @param[in] nAddress Register map address to read from
danodonovan 24:5a2272a25ff1 92 * @param[out] pData Pointer to return the register map data
danodonovan 24:5a2272a25ff1 93 * @param[in] nLength Number of bytes of data to read from the register map
danodonovan 24:5a2272a25ff1 94 *
danodonovan 24:5a2272a25ff1 95 * @return Status
danodonovan 24:5a2272a25ff1 96 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 97 *
danodonovan 24:5a2272a25ff1 98 * @details Provides direct byte-level write access to the device register map.
danodonovan 24:5a2272a25ff1 99 * The size and format of the register(s) must be known.
danodonovan 24:5a2272a25ff1 100 *
danodonovan 24:5a2272a25ff1 101 * @note Writes to read-only registers will be ignored by the device.
danodonovan 24:5a2272a25ff1 102 * @note Writes to special "keyhole" registers will be handled according to
danodonovan 24:5a2272a25ff1 103 * documentation for those registers.
danodonovan 24:5a2272a25ff1 104 */
danodonovan 24:5a2272a25ff1 105 ADI_SENSE_RESULT adi_sense_1000_WriteRegister(
danodonovan 24:5a2272a25ff1 106 ADI_SENSE_DEVICE_HANDLE const hDevice,
danodonovan 24:5a2272a25ff1 107 uint16_t const nAddress,
danodonovan 24:5a2272a25ff1 108 void * const pData,
danodonovan 24:5a2272a25ff1 109 unsigned const nLength);
danodonovan 24:5a2272a25ff1 110
danodonovan 24:5a2272a25ff1 111 /*!
danodonovan 24:5a2272a25ff1 112 * @brief Update power configuration settings on the device.
danodonovan 24:5a2272a25ff1 113 *
danodonovan 24:5a2272a25ff1 114 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 115 * @param[in] pPowerConfig Power configuration details
danodonovan 24:5a2272a25ff1 116 *
danodonovan 24:5a2272a25ff1 117 * @return Status
danodonovan 24:5a2272a25ff1 118 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 119 *
danodonovan 24:5a2272a25ff1 120 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 121 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 122 *
danodonovan 24:5a2272a25ff1 123 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 124 */
danodonovan 24:5a2272a25ff1 125 ADI_SENSE_RESULT adi_sense_1000_SetPowerConfig(
danodonovan 24:5a2272a25ff1 126 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 127 ADI_SENSE_1000_POWER_CONFIG *pPowerConfig);
danodonovan 24:5a2272a25ff1 128
danodonovan 24:5a2272a25ff1 129 /*!
danodonovan 24:5a2272a25ff1 130 * @brief Update measurement configuration settings on the device.
danodonovan 24:5a2272a25ff1 131 *
danodonovan 24:5a2272a25ff1 132 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 133 * @param[in] pMeasurementConfig Measurement configuration details
danodonovan 24:5a2272a25ff1 134 *
danodonovan 24:5a2272a25ff1 135 * @return Status
danodonovan 24:5a2272a25ff1 136 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 137 *
danodonovan 24:5a2272a25ff1 138 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 139 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 140 *
danodonovan 24:5a2272a25ff1 141 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 142 */
danodonovan 24:5a2272a25ff1 143 ADI_SENSE_RESULT adi_sense_1000_SetMeasurementConfig(
danodonovan 24:5a2272a25ff1 144 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 145 ADI_SENSE_1000_MEASUREMENT_CONFIG *pMeasurementConfig);
danodonovan 24:5a2272a25ff1 146
danodonovan 24:5a2272a25ff1 147 /*!
danodonovan 24:5a2272a25ff1 148 * @brief Update diagnostics configuration settings on the device.
danodonovan 24:5a2272a25ff1 149 *
danodonovan 24:5a2272a25ff1 150 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 151 * @param[in] pDiagnosticsConfig Diagnostics configuration details
danodonovan 24:5a2272a25ff1 152 *
danodonovan 24:5a2272a25ff1 153 * @return Status
danodonovan 24:5a2272a25ff1 154 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 155 *
danodonovan 24:5a2272a25ff1 156 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 157 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 158 *
danodonovan 24:5a2272a25ff1 159 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 160 */
danodonovan 24:5a2272a25ff1 161 ADI_SENSE_RESULT adi_sense_1000_SetDiagnosticsConfig(
danodonovan 24:5a2272a25ff1 162 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 163 ADI_SENSE_1000_DIAGNOSTICS_CONFIG *pDiagnosticsConfig);
danodonovan 24:5a2272a25ff1 164
danodonovan 24:5a2272a25ff1 165 /*!
danodonovan 24:5a2272a25ff1 166 * @brief Update channel configuration settings for a specific channel.
danodonovan 24:5a2272a25ff1 167 *
danodonovan 24:5a2272a25ff1 168 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 169 * @param[in] eChannelId Selects the channel to be updated
danodonovan 24:5a2272a25ff1 170 * @param[in] pChannelConfig Channel configuration details
danodonovan 24:5a2272a25ff1 171 *
danodonovan 24:5a2272a25ff1 172 * @return Status
danodonovan 24:5a2272a25ff1 173 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 174 *
danodonovan 24:5a2272a25ff1 175 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 176 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 177 * Allows individual channel configuration details to be dynamically
danodonovan 24:5a2272a25ff1 178 * adjusted without rewriting the full device configuration.
danodonovan 24:5a2272a25ff1 179 *
danodonovan 24:5a2272a25ff1 180 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 181 */
danodonovan 24:5a2272a25ff1 182 ADI_SENSE_RESULT adi_sense_1000_SetChannelConfig(
danodonovan 24:5a2272a25ff1 183 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 184 ADI_SENSE_1000_CHANNEL_ID eChannelId,
danodonovan 24:5a2272a25ff1 185 ADI_SENSE_1000_CHANNEL_CONFIG *pChannelConfig);
danodonovan 24:5a2272a25ff1 186
danodonovan 24:5a2272a25ff1 187 /*!
danodonovan 24:5a2272a25ff1 188 * @brief Update number of measurements-per-cycle for a specific channel.
danodonovan 24:5a2272a25ff1 189 *
danodonovan 24:5a2272a25ff1 190 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 191 * @param[in] eChannelId Selects the channel to be updated
danodonovan 24:5a2272a25ff1 192 * @param[in] nMeasurementsPerCycle Specifies the number of measurements to be
danodonovan 24:5a2272a25ff1 193 * obtained from this channel in each
danodonovan 24:5a2272a25ff1 194 * measurement cycle. Set as 0 to disable the
danodonovan 24:5a2272a25ff1 195 * channel (omit from measurement cycle).
danodonovan 24:5a2272a25ff1 196 *
danodonovan 24:5a2272a25ff1 197 * @return Status
danodonovan 24:5a2272a25ff1 198 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 199 *
danodonovan 24:5a2272a25ff1 200 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 201 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 202 * Allows individual channels to be dynamically enabled/disabled, and
danodonovan 24:5a2272a25ff1 203 * measurements-per-cycle to be adjusted.
danodonovan 24:5a2272a25ff1 204 *
danodonovan 24:5a2272a25ff1 205 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 206 */
danodonovan 24:5a2272a25ff1 207 ADI_SENSE_RESULT adi_sense_1000_SetChannelCount(
danodonovan 24:5a2272a25ff1 208 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 209 ADI_SENSE_1000_CHANNEL_ID eChannelId,
danodonovan 24:5a2272a25ff1 210 uint32_t nMeasurementsPerCycle);
danodonovan 24:5a2272a25ff1 211
danodonovan 24:5a2272a25ff1 212 /*!
danodonovan 24:5a2272a25ff1 213 * @brief Update the measurement threshold limits for a specified channel.
danodonovan 24:5a2272a25ff1 214 *
danodonovan 24:5a2272a25ff1 215 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 216 * @param[in] eChannelId Selects the channel to be updated
danodonovan 24:5a2272a25ff1 217 * @param[in] fHighThresholdLimit Optional maximum threshold value for each
danodonovan 24:5a2272a25ff1 218 * processed sample, to be checked prior to
danodonovan 24:5a2272a25ff1 219 * publishing. A channel ALERT condition is
danodonovan 24:5a2272a25ff1 220 * raised if the processed value is higher than
danodonovan 24:5a2272a25ff1 221 * this threshold. Set to NaN if not required.
danodonovan 24:5a2272a25ff1 222 * @param[in] fLowThresholdLimit Optional minimum threshold value for each
danodonovan 24:5a2272a25ff1 223 * processed sample, to be checked prior to
danodonovan 24:5a2272a25ff1 224 * publishing. A channel ALERT condition is
danodonovan 24:5a2272a25ff1 225 * raised if the processed value is lower than
danodonovan 24:5a2272a25ff1 226 * this threshold. Set to NaN if not required.
danodonovan 24:5a2272a25ff1 227 *
danodonovan 24:5a2272a25ff1 228 * @return Status
danodonovan 24:5a2272a25ff1 229 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 230 *
danodonovan 24:5a2272a25ff1 231 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 232 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 233 * Allows individual channel thresholds to be dynamically adjusted.
danodonovan 24:5a2272a25ff1 234 *
danodonovan 24:5a2272a25ff1 235 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 236 */
danodonovan 24:5a2272a25ff1 237 ADI_SENSE_RESULT adi_sense_1000_SetChannelThresholdLimits(
danodonovan 24:5a2272a25ff1 238 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 239 ADI_SENSE_1000_CHANNEL_ID eChannelId,
danodonovan 24:5a2272a25ff1 240 float32_t fHighThresholdLimit,
danodonovan 24:5a2272a25ff1 241 float32_t fLowThresholdLimit);
danodonovan 24:5a2272a25ff1 242
danodonovan 24:5a2272a25ff1 243 /*!
danodonovan 24:5a2272a25ff1 244 * @brief Update the extra settling time for a specified channel.
danodonovan 24:5a2272a25ff1 245 *
danodonovan 24:5a2272a25ff1 246 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 247 * @param[in] eChannelId Selects the channel to be updated
danodonovan 24:5a2272a25ff1 248 * @param[in] nSettlingTime A minimum settling time is applied internally for
danodonovan 24:5a2272a25ff1 249 * each channel, based on the sensor type. However,
danodonovan 24:5a2272a25ff1 250 * additional settling time (microseconds) can
danodonovan 24:5a2272a25ff1 251 * optionally be specified here. Set to 0 if not
danodonovan 24:5a2272a25ff1 252 * required.
danodonovan 24:5a2272a25ff1 253 *
danodonovan 24:5a2272a25ff1 254 * @return Status
danodonovan 24:5a2272a25ff1 255 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 256 *
danodonovan 24:5a2272a25ff1 257 * @details Translates configuration details provided into device-specific
danodonovan 24:5a2272a25ff1 258 * register settings and updates device configuration registers.
danodonovan 24:5a2272a25ff1 259 * Allows individual channel settling times to be dynamically adjusted.
danodonovan 24:5a2272a25ff1 260 *
danodonovan 24:5a2272a25ff1 261 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 262 */
danodonovan 24:5a2272a25ff1 263 ADI_SENSE_RESULT adi_sense_1000_SetChannelSettlingTime(
danodonovan 24:5a2272a25ff1 264 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 265 ADI_SENSE_1000_CHANNEL_ID eChannelId,
danodonovan 24:5a2272a25ff1 266 uint32_t nSettlingTime);
danodonovan 24:5a2272a25ff1 267
danodonovan 24:5a2272a25ff1 268 /*!
danodonovan 24:5a2272a25ff1 269 * @brief Assemble a list of separate Look-Up Tables into a single buffer
danodonovan 24:5a2272a25ff1 270 *
danodonovan 24:5a2272a25ff1 271 * @param[out] pLutBuffer Pointer to the Look-Up Table data buffer where
danodonovan 24:5a2272a25ff1 272 * the assembled Look-Up Table data will be placed
danodonovan 24:5a2272a25ff1 273 * @param[in] nLutBufferSize Allocated size, in bytes, of the output data buffer
danodonovan 24:5a2272a25ff1 274 * @param[in] nNumTables Number of tables to add to the Look-Up Table buffer
danodonovan 24:5a2272a25ff1 275 * @param[in] ppDesc Array of pointers to the table descriptors to be added
danodonovan 24:5a2272a25ff1 276 * @param[in] ppData Array of pointers to the table data to be added
danodonovan 24:5a2272a25ff1 277 *
danodonovan 24:5a2272a25ff1 278 * @return Status
danodonovan 24:5a2272a25ff1 279 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 280 *
danodonovan 24:5a2272a25ff1 281 * @details This utiliity function fills the Look-up Table header fields; then
danodonovan 24:5a2272a25ff1 282 * walks through the array of individual table descriptor and data
danodonovan 24:5a2272a25ff1 283 * pointers provided, appending (copying) each one to the Look-Up Table
danodonovan 24:5a2272a25ff1 284 * data buffer. The length and crc16 fields of each table descriptor
danodonovan 24:5a2272a25ff1 285 * will be calculated and filled by this function, but other fields in
danodonovan 24:5a2272a25ff1 286 * the descriptor structure must be filled by the caller beforehand.
danodonovan 24:5a2272a25ff1 287 *
danodonovan 24:5a2272a25ff1 288 * @note The assembled LUT data buffer filled by this function can then be
danodonovan 24:5a2272a25ff1 289 * written to the device memory using @adi_sense_1000_SetLutData.
danodonovan 24:5a2272a25ff1 290 */
danodonovan 24:5a2272a25ff1 291 ADI_SENSE_RESULT adi_sense_1000_AssembleLutData(
danodonovan 24:5a2272a25ff1 292 ADI_SENSE_1000_LUT * pLutBuffer,
danodonovan 24:5a2272a25ff1 293 unsigned nLutBufferSize,
danodonovan 24:5a2272a25ff1 294 unsigned const nNumTables,
danodonovan 24:5a2272a25ff1 295 ADI_SENSE_1000_LUT_DESCRIPTOR * const ppDesc[],
danodonovan 24:5a2272a25ff1 296 ADI_SENSE_1000_LUT_TABLE_DATA * const ppData[]);
danodonovan 24:5a2272a25ff1 297
danodonovan 24:5a2272a25ff1 298 /*!
danodonovan 24:5a2272a25ff1 299 * @brief Write Look-Up Table data to the device memory
danodonovan 24:5a2272a25ff1 300 *
danodonovan 24:5a2272a25ff1 301 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 302 * @param[out] pLutData Pointer to the Look-Up Table data structure
danodonovan 24:5a2272a25ff1 303 *
danodonovan 24:5a2272a25ff1 304 * @return Status
danodonovan 24:5a2272a25ff1 305 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 306 *
danodonovan 24:5a2272a25ff1 307 * @details Validates the Look-Up Table data format and loads it into
danodonovan 24:5a2272a25ff1 308 * device memory via dedicated keyhole registers.
danodonovan 24:5a2272a25ff1 309 *
danodonovan 24:5a2272a25ff1 310 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 311 */
danodonovan 24:5a2272a25ff1 312 ADI_SENSE_RESULT adi_sense_1000_SetLutData(
danodonovan 24:5a2272a25ff1 313 ADI_SENSE_DEVICE_HANDLE const hDevice,
danodonovan 24:5a2272a25ff1 314 ADI_SENSE_1000_LUT * const pLutData);
danodonovan 24:5a2272a25ff1 315
danodonovan 24:5a2272a25ff1 316 /*!
danodonovan 24:5a2272a25ff1 317 * @brief Write Look-Up Table raw data to the device memory
danodonovan 24:5a2272a25ff1 318 *
danodonovan 24:5a2272a25ff1 319 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 320 * @param[out] pLutData Pointer to the Look-Up Table raw data structure
danodonovan 24:5a2272a25ff1 321 *
danodonovan 24:5a2272a25ff1 322 * @return Status
danodonovan 24:5a2272a25ff1 323 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 324 *
danodonovan 24:5a2272a25ff1 325 * @details This can be used instead of @adi_sense_1000_SetLutData for
danodonovan 24:5a2272a25ff1 326 * loading LUT data from the alternative raw data format. See
danodonovan 24:5a2272a25ff1 327 * @adi_sense_1000_SetLutData for more information.
danodonovan 24:5a2272a25ff1 328 *
danodonovan 24:5a2272a25ff1 329 * @note Settings are not applied until adi_sense_ApplyConfigUpdates() is called
danodonovan 24:5a2272a25ff1 330 */
danodonovan 24:5a2272a25ff1 331 ADI_SENSE_RESULT adi_sense_1000_SetLutDataRaw(
danodonovan 24:5a2272a25ff1 332 ADI_SENSE_DEVICE_HANDLE const hDevice,
danodonovan 24:5a2272a25ff1 333 ADI_SENSE_1000_LUT_RAW * const pLutData);
danodonovan 24:5a2272a25ff1 334
danodonovan 24:5a2272a25ff1 335 /*!
danodonovan 24:5a2272a25ff1 336 * @brief Get the number of samples available when DATAREADY status is asserted.
danodonovan 24:5a2272a25ff1 337 *
danodonovan 24:5a2272a25ff1 338 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 339 * @param[in] bMeasurementMode Must be set to the same value used for @ref
danodonovan 24:5a2272a25ff1 340 * adi_sense_StartMeasurement().
danodonovan 24:5a2272a25ff1 341 * @param[out] peOperatingMode Pointer to return the configured operating mode
danodonovan 24:5a2272a25ff1 342 * @param[out] peDataReadMode Pointer to return the configured data publishing mode
danodonovan 24:5a2272a25ff1 343 * @param[out] pnSamplesPerDataready Pointer to return the calculated number of samples
danodonovan 24:5a2272a25ff1 344 * available when DATAREADY is asserted
danodonovan 24:5a2272a25ff1 345 * @param[out] pnSamplesPerCycle Pointer to return the calculated number of samples
danodonovan 24:5a2272a25ff1 346 * produced per measurement cycle
danodonovan 24:5a2272a25ff1 347 *
danodonovan 24:5a2272a25ff1 348 * @return Status
danodonovan 24:5a2272a25ff1 349 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 350 *
danodonovan 24:5a2272a25ff1 351 * @details Examines the current configuration settings in the device registers
danodonovan 24:5a2272a25ff1 352 * to calculate the number of samples available whenever the DATAREADY
danodonovan 24:5a2272a25ff1 353 * signal is asserted, along with other related information. This may
danodonovan 24:5a2272a25ff1 354 * be used to allocate buffers to store samples and to determine how
danodonovan 24:5a2272a25ff1 355 * many samples to retrieve whenever the DATAREADY status is asserted.
danodonovan 24:5a2272a25ff1 356 */
danodonovan 24:5a2272a25ff1 357 ADI_SENSE_RESULT adi_sense_1000_GetDataReadyModeInfo(
danodonovan 24:5a2272a25ff1 358 ADI_SENSE_DEVICE_HANDLE const hDevice,
danodonovan 24:5a2272a25ff1 359 ADI_SENSE_MEASUREMENT_MODE const eMeasurementMode,
danodonovan 24:5a2272a25ff1 360 ADI_SENSE_1000_OPERATING_MODE * const peOperatingMode,
danodonovan 24:5a2272a25ff1 361 ADI_SENSE_1000_DATAREADY_MODE * const peDataReadyMode,
danodonovan 24:5a2272a25ff1 362 uint32_t * const pnSamplesPerDataready,
danodonovan 24:5a2272a25ff1 363 uint32_t * const pnSamplesPerCycle);
danodonovan 24:5a2272a25ff1 364
danodonovan 24:5a2272a25ff1 365 /*!
danodonovan 24:5a2272a25ff1 366 * @brief Read the contents of the ADI Sense internal factory calibration table
danodonovan 24:5a2272a25ff1 367 *
danodonovan 24:5a2272a25ff1 368 * Calibration coefficients/gains/offsets are stored internally in a 2D table of
danodonovan 24:5a2272a25ff1 369 * 32-bit floating point values. Refer to product documentation for details of
danodonovan 24:5a2272a25ff1 370 * the rows and columns.
danodonovan 24:5a2272a25ff1 371 *
danodonovan 24:5a2272a25ff1 372 * @param[in] hDevice ADI Sense device context handle
danodonovan 24:5a2272a25ff1 373 * @param[in] pfBuffer Pointer to destination buffer for the calibration data
danodonovan 24:5a2272a25ff1 374 * @param[in] nMaxLen The buffer capacity in bytes (e.g. 672 for 56x3 table)
danodonovan 24:5a2272a25ff1 375 * @param[out] pnDataLen The number of bytes written to the buffer
danodonovan 24:5a2272a25ff1 376 * @param[out] pnRows Pointer to return the number of table rows (e.g. 56)
danodonovan 24:5a2272a25ff1 377 * @param[out] pnColumns Pointer to return the number of table columns (e.g. 3)
danodonovan 24:5a2272a25ff1 378 *
danodonovan 24:5a2272a25ff1 379 * @return Status
danodonovan 24:5a2272a25ff1 380 * - #ADI_SENSE_SUCCESS Call completed successfully.
danodonovan 24:5a2272a25ff1 381 * - #ADI_SENSE_FAILURE
danodonovan 24:5a2272a25ff1 382 * - #ADI_SENSE_INVALID_OPERATION Invalid register identifier.
danodonovan 24:5a2272a25ff1 383 */
danodonovan 24:5a2272a25ff1 384 ADI_SENSE_RESULT adi_sense_1000_ReadCalTable(
danodonovan 24:5a2272a25ff1 385 ADI_SENSE_DEVICE_HANDLE hDevice,
danodonovan 24:5a2272a25ff1 386 float *pfBuffer,
danodonovan 24:5a2272a25ff1 387 unsigned nMaxLen,
danodonovan 24:5a2272a25ff1 388 unsigned *pnDataLen,
danodonovan 24:5a2272a25ff1 389 unsigned *pnRows,
danodonovan 24:5a2272a25ff1 390 unsigned *pnColumns);
danodonovan 24:5a2272a25ff1 391
danodonovan 24:5a2272a25ff1 392 #ifdef __cplusplus
danodonovan 24:5a2272a25ff1 393 }
danodonovan 24:5a2272a25ff1 394 #endif
danodonovan 24:5a2272a25ff1 395
danodonovan 24:5a2272a25ff1 396 /*!
danodonovan 24:5a2272a25ff1 397 * @}
danodonovan 24:5a2272a25ff1 398 */
danodonovan 24:5a2272a25ff1 399
danodonovan 24:5a2272a25ff1 400 #endif /* __ADI_SENSE_1000_API_H__ */
danodonovan 24:5a2272a25ff1 401