Platform drivers for Mbed.

Dependents:   EVAL-CN0535-FMCZ EVAL-CN0535-FMCZ EVAL-AD568x-AD569x EVAL-AD7606 ... more

adc_data_capture.h

Committer:
mahphalke
Date:
2021-07-13
Revision:
17:af1f2416dd26
Child:
18:5ae03a197e59

File content as of revision 17:af1f2416dd26:

/***************************************************************************//**
 *   @file   adc_data_capture.h
 *   @brief  Header for ADC data capture interfaces
********************************************************************************
 * Copyright (c) 2021 Analog Devices, Inc.
 * All rights reserved.
 *
 * This software is proprietary to Analog Devices, Inc. and its licensors.
 * By using this software you agree to the terms of the associated
 * Analog Devices Software License Agreement.
*******************************************************************************/

#ifndef _ADC_DATA_CAPTURE_H_
#define _ADC_DATA_CAPTURE_H_

/******************************************************************************/
/***************************** Include Files **********************************/
/******************************************************************************/

#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>

/******************************************************************************/
/********************** Macros and Constants Definition ***********************/
/******************************************************************************/

/******************************************************************************/
/********************** Variables and User Defined Data Types *****************/
/******************************************************************************/

/**
 * @struct data_capture_ops
 * @brief Structure holding function pointers that points to device specific
 * data capture functions
 */
struct data_capture_ops {
	/* Save the previous active channels value */
	int32_t (*save_prev_active_chns)(void);
	/* Restore (enable) the previous active channels */
	int32_t (*restore_prev_active_chns)(void);
	/* Enable ADC current (user input) channel */
	int32_t (*enable_curr_chn)(uint32_t chn);
	/* Disable ADC current (user input) channel */
	int32_t (*disable_curr_chn)(uint32_t chn);
	/* Disable all ADC channels */
	int32_t(*disable_all_chns)(void);
	/* Enable conversion for single sample read */
	int32_t (*enable_single_read_conversion)(void);
	/* Enable conversion for continuous sample read */
	int32_t (*enable_continuous_read_conversion)(uint32_t chn_mask);
	/* Disable conversion */
	int32_t (*disable_conversion)(void);
	/* Wait for conversion to finish on enabled channels and read conversion data */
	int32_t (*wait_for_conv_and_read_data)(uint32_t *read_data, uint8_t chn);
	/* Read ADC raw sample/data */
	int32_t (*read_sampled_data)(uint32_t *read_data, uint8_t buff_chn_indx);
	/* Trigger next continuous conversion sample read */
	int32_t (*trigger_next_cont_conversion)(void);
};

/******************************************************************************/
/************************ Public Declarations *********************************/
/******************************************************************************/

void save_data_capture_ops_instance(struct data_capture_ops *ops);
void start_data_capture(uint32_t ch_mask, uint8_t num_of_chns);
void data_capture_callback(void *ctx, uint32_t event, void *extra);
void stop_data_capture(void);
size_t buffered_data_read(char *pbuf, size_t bytes,
			  size_t offset, uint32_t active_chns_mask, uint8_t sample_size_in_bytes);
void store_requested_samples_count(size_t bytes, uint8_t sample_size_in_bytes);
int32_t single_data_read(uint8_t input_chn, uint32_t *raw_data);

#endif /* _ADC_DATA_CAPTURE_H_ */