ADISense1000 Version 2.1 code base

Fork of AdiSense1000_V21 by Sean Wilson

Branch:
v2.0
Revision:
29:57edca10d78c
Parent:
27:567abf893938
Child:
30:119ff4f3aef6
--- a/inc/adi_sense_api.h	Mon Mar 26 20:28:05 2018 +0100
+++ b/inc/adi_sense_api.h	Tue May 22 13:45:24 2018 +0100
@@ -81,6 +81,8 @@
     /*!< SPI connection parameters, required if SPI connection type is used */
     ADI_SENSE_PLATFORM_GPIO_CONFIG gpio;
     /*!< GPIO connection parameters, for device reset and status I/O signals */
+    ADI_SENSE_PLATFORM_LOG_CONFIG  log;
+    /*!< Log interface connection parameters, for display/routing of log messages */
 } ADI_SENSE_CONNECTION;
 
 /*! Bit masks (flags) for the different device status indicators. */
@@ -99,6 +101,8 @@
     /*!< Indicates that a configuration error condition has been detected by the device */
     ADI_SENSE_DEVICE_STATUS_LUT_ERROR    = (1 << 6),
     /*!< Indicates that a look-up table error condition has been detected by the device */
+    ADI_SENSE_DEVICE_STATUS_EXT_FLASH_ERROR = (1 << 7),
+    /*!< Indicates that an external flash memory error condition has been detected by the device */
 } ADI_SENSE_DEVICE_STATUS_FLAGS;
 
 /*! Bit masks (flags) for the different diagnostics status indicators. */
@@ -111,14 +115,6 @@
     /*!< Indicates Low Voltage on Internal Supply Voltages */
     ADI_SENSE_DIAGNOSTICS_STATUS_SUPPLY_CAP_ERROR     = (1 << 3),
     /*!< Indicates Fault on Internal Supply Regulator Capacitor */
-    ADI_SENSE_DIAGNOSTICS_STATUS_AINM_UV_ERROR        = (1 << 4),
-    /*!< Indicates Under-Voltage Error on Negative Analog Input */
-    ADI_SENSE_DIAGNOSTICS_STATUS_AINM_OV_ERROR        = (1 << 5),
-    /*!< Indicates Over-Voltage Error on Negative Analog Input */
-    ADI_SENSE_DIAGNOSTICS_STATUS_AINP_UV_ERROR        = (1 << 6),
-    /*!< Indicates Under-Voltage Error on Positive Analog Input */
-    ADI_SENSE_DIAGNOSTICS_STATUS_AINP_OV_ERROR        = (1 << 7),
-    /*!< Indicates Over-Voltage Error on Positive Analog Input */
     ADI_SENSE_DIAGNOSTICS_STATUS_CONVERSION_ERROR     = (1 << 8),
     /*!< Indicates Error During Internal ADC Conversions */
     ADI_SENSE_DIAGNOSTICS_STATUS_CALIBRATION_ERROR    = (1 << 9),
@@ -149,10 +145,6 @@
     /*!< Indicates digital sensor not-ready error condition detected on the channel */
     ADI_SENSE_CHANNEL_ALERT_COMP_NOT_READY   = (1 << 10),
     /*!< Indicates compensation channel not-ready error condition detected on the channel */
-    ADI_SENSE_CHANNEL_ALERT_UNDER_VOLTAGE    = (1 << 11),
-    /*!< Indicates under-voltage condition detected on the channel */
-    ADI_SENSE_CHANNEL_ALERT_OVER_VOLTAGE     = (1 << 12),
-    /*!< Indicates over-voltage condition detected on the channel */
     ADI_SENSE_CHANNEL_ALERT_LUT_UNDER_RANGE  = (1 << 13),
     /*!< Indicates raw sample was under the available LUT/equation range */
     ADI_SENSE_CHANNEL_ALERT_LUT_OVER_RANGE   = (1 << 14),
@@ -211,6 +203,14 @@
      *   samples are returned based on FFT-specific configuration parameters. */
 } ADI_SENSE_MEASUREMENT_MODE;
 
+/*! Identifiers for the user configuration slots in persistent memory. */
+typedef enum {
+    ADI_SENSE_FLASH_CONFIG_1,
+    ADI_SENSE_FLASH_CONFIG_2,
+    ADI_SENSE_FLASH_CONFIG_3,
+    ADI_SENSE_FLASH_CONFIG_4,
+} ADI_SENSE_USER_CONFIG_SLOT;
+
 
 /******************************************************************************
  * ADISENSE High-Level API function prototypes
@@ -290,6 +290,26 @@
     void                           * const pCallbackParam);
 
 /*!
+ * @brief Trigger a shut down of the device.
+ *
+ * @param[in] hDevice ADISENSE device context handle
+ *
+ * @return Status
+ *         - #ADI_SENSE_SUCCESS Call completed successfully.
+ *
+ * @details Instructs the ADISENSE device to initiate a shut down,
+ *          typically used to conserve power when the device is not
+ *          in use.  The device may be restarted by calling
+ *          @ref adi_sense_Reset().  Note that active configuration
+ *          settings are not preserved during shutdown and must be
+ *          reloaded after the device has become ready again.
+ *
+ * @note No other command must be running when this is called.
+ */
+ADI_SENSE_RESULT adi_sense_Shutdown(
+    ADI_SENSE_DEVICE_HANDLE    const hDevice);
+
+/*!
  * @brief Reset the ADISENSE device.
  *
  * @param[in] hDevice ADISENSE device context handle
@@ -377,6 +397,7 @@
  * @brief Store the configuration settings to persistent memory on the device.
  *
  * @param[in] hDevice ADISENSE device context handle
+ * @param[in] eSlotId User configuration slot in persistent memory
  *
  * @return Status
  *         - #ADI_SENSE_SUCCESS Call completed successfully.
@@ -388,12 +409,14 @@
  * @note Do not power down the device while this command is running.
  */
 ADI_SENSE_RESULT adi_sense_SaveConfig(
-    ADI_SENSE_DEVICE_HANDLE    const hDevice);
+    ADI_SENSE_DEVICE_HANDLE    const hDevice,
+    ADI_SENSE_USER_CONFIG_SLOT const eSlotId);
 
 /*!
  * @brief Restore configuration settings from persistent memory on the device.
  *
  * @param[in] hDevice ADISENSE device context handle
+ * @param[in] eSlotId User configuration slot in persistent memory
  *
  * @return Status
  *         - #ADI_SENSE_SUCCESS Call completed successfully.
@@ -404,9 +427,75 @@
  * @note No other command must be running when this is called.
  */
 ADI_SENSE_RESULT adi_sense_RestoreConfig(
+    ADI_SENSE_DEVICE_HANDLE    const hDevice,
+    ADI_SENSE_USER_CONFIG_SLOT const eSlotId);
+
+/*!
+ * @brief Erases the external flash memory.
+ *
+ * @param[in] hDevice ADISENSE device context handle
+ *
+ * @return Status
+ *         - #ADI_SENSE_SUCCESS Call completed successfully.
+ *
+ * @details Sends the bulk erase instruction to the external flash
+ *          device. All stored samples are deleted.
+ *          It is a blocking operation and takes tens of seconds to
+ *          complete.
+ *
+ * @note No other command must be running when this is called.
+ */
+ADI_SENSE_RESULT adi_sense_EraseExternalFlash(
     ADI_SENSE_DEVICE_HANDLE    const hDevice);
 
 /*!
+ * @brief Gets the number of samples stored in the external flash
+ *        memory.
+ *
+ * @param[in] hDevice ADISENSE device context handle
+ * @param[in] pSampleCount Address of the return value.
+ *
+ * @return Status
+ *         - #ADI_SENSE_SUCCESS Call completed successfully.
+ *
+ * @note No other command must be running when this is called.
+ */
+ADI_SENSE_RESULT adi_sense_GetExternalFlashSampleCount(
+    ADI_SENSE_DEVICE_HANDLE    const hDevice,
+    uint32_t * nSampleCount);
+
+// DEBUG - TO BE DELETED
+ADI_SENSE_RESULT adi_sense_SetExternalFlashIndex(
+    ADI_SENSE_DEVICE_HANDLE    const hDevice,
+    uint32_t nStartIndex);
+
+/*!
+ * @brief Read measurement samples stored in the the external flash memory.
+ *
+ * @param[in]  hDevice          ADISENSE device context handle
+ * @param[out] pSamples         Pointer to return a set of requested data
+ *                              samples.
+ * @param[in]  nStartIndex      Index of first sample to retrieve.
+ * @param[in]  nBytesPerSample  The size, in bytes, of each sample.
+ * @param[in]  nRequested       Number of requested data samples.
+ * @param[out] pnReturned       Number of valid data samples successfully
+ *                              retrieved.
+ *
+ * @return Status
+ *         - #ADI_SENSE_SUCCESS Call completed successfully.
+ *
+ * @details Reads the status registers and extracts the relevant information
+ *          to return to the caller.
+ *
+ */
+ADI_SENSE_RESULT adi_sense_GetExternalFlashData(
+    ADI_SENSE_DEVICE_HANDLE    const hDevice,
+    ADI_SENSE_DATA_SAMPLE    * const pSamples,
+    uint32_t                   const nIndex,
+    uint32_t                   const nRequested,
+    uint32_t                 * const pnReturned);
+
+/*!
  * @brief Store the LUT data to persistent memory on the device.
  *
  * @param[in] hDevice ADISENSE device context handle
@@ -519,6 +608,24 @@
     ADI_SENSE_DEVICE_HANDLE    const hDevice);
 
 /*!
+ * @brief Run built-in digital calibration on the device.
+ *
+ * @param[in] hDevice ADISENSE device context handle
+ *
+ * @return Status
+ *         - #ADI_SENSE_SUCCESS Call completed successfully.
+ *
+ * @details Instructs the ADISENSE device to execute its calibration
+ *          routines, on any enabled digital channels, according to the
+ *          current applied configuration settings.  Device status registers
+ *          will be updated to indicate if any errors were detected.
+ *
+ * @note No other command must be running when this is called.
+ */
+ADI_SENSE_RESULT adi_sense_RunDigitalCalibration(
+    ADI_SENSE_DEVICE_HANDLE    const hDevice);
+
+/*!
  * @brief Read the current status from the device registers.
  *
  * @param[in]  hDevice ADISENSE device context handle