Forked repository for pushing changes

Committer:
pmallick
Date:
Mon Sep 27 04:22:15 2021 +0000
Revision:
19:ed7c2dac92bd
Added support for analog read and write functionality

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pmallick 19:ed7c2dac92bd 1 /***************************************************************************//**
pmallick 19:ed7c2dac92bd 2 * @file aout.h
pmallick 19:ed7c2dac92bd 3 * @author PMallick (Pratyush.Mallick@analog.com)
pmallick 19:ed7c2dac92bd 4 ********************************************************************************
pmallick 19:ed7c2dac92bd 5 * Copyright (c) 2021 Analog Devices, Inc.
pmallick 19:ed7c2dac92bd 6 * All rights reserved.
pmallick 19:ed7c2dac92bd 7 *
pmallick 19:ed7c2dac92bd 8 * This software is proprietary to Analog Devices, Inc. and its licensors.
pmallick 19:ed7c2dac92bd 9 * By using this software you agree to the terms of the associated
pmallick 19:ed7c2dac92bd 10 * Analog Devices Software License Agreement.
pmallick 19:ed7c2dac92bd 11 *******************************************************************************/
pmallick 19:ed7c2dac92bd 12
pmallick 19:ed7c2dac92bd 13 #ifndef AOUT_H
pmallick 19:ed7c2dac92bd 14 #define AOUT_H
pmallick 19:ed7c2dac92bd 15
pmallick 19:ed7c2dac92bd 16 /******************************************************************************/
pmallick 19:ed7c2dac92bd 17 /***************************** Include Files **********************************/
pmallick 19:ed7c2dac92bd 18 /******************************************************************************/
pmallick 19:ed7c2dac92bd 19
pmallick 19:ed7c2dac92bd 20 #include <stdint.h>
pmallick 19:ed7c2dac92bd 21
pmallick 19:ed7c2dac92bd 22 /******************************************************************************/
pmallick 19:ed7c2dac92bd 23 /********************** Macros and Constants Definitions **********************/
pmallick 19:ed7c2dac92bd 24 /******************************************************************************/
pmallick 19:ed7c2dac92bd 25
pmallick 19:ed7c2dac92bd 26 /******************************************************************************/
pmallick 19:ed7c2dac92bd 27 /*************************** Types Declarations *******************************/
pmallick 19:ed7c2dac92bd 28 /******************************************************************************/
pmallick 19:ed7c2dac92bd 29 /**
pmallick 19:ed7c2dac92bd 30 * @struct aout_init_param
pmallick 19:ed7c2dac92bd 31 * @brief Structure holding the parameters for analog output initialization
pmallick 19:ed7c2dac92bd 32 */
pmallick 19:ed7c2dac92bd 33 struct aout_init_param {
pmallick 19:ed7c2dac92bd 34 /* Analog output pin number */
pmallick 19:ed7c2dac92bd 35 int32_t number;
pmallick 19:ed7c2dac92bd 36 /* Min output range of DAC in volts */
pmallick 19:ed7c2dac92bd 37 float aout_min_v;
pmallick 19:ed7c2dac92bd 38 /* Max output range of DAC in volts */
pmallick 19:ed7c2dac92bd 39 float aout_max_v;
pmallick 19:ed7c2dac92bd 40 /* Analog output reference voltage */
pmallick 19:ed7c2dac92bd 41 float vref;
pmallick 19:ed7c2dac92bd 42 /* Analog output platform specific functions */
pmallick 19:ed7c2dac92bd 43 const struct aout_platform_ops *platform_ops;
pmallick 19:ed7c2dac92bd 44 };
pmallick 19:ed7c2dac92bd 45
pmallick 19:ed7c2dac92bd 46 /**
pmallick 19:ed7c2dac92bd 47 * @struct aout_desc
pmallick 19:ed7c2dac92bd 48 * @brief Structure holding analog output descriptor
pmallick 19:ed7c2dac92bd 49 */
pmallick 19:ed7c2dac92bd 50 struct aout_desc {
pmallick 19:ed7c2dac92bd 51 /* Analog output pin number */
pmallick 19:ed7c2dac92bd 52 int32_t number;
pmallick 19:ed7c2dac92bd 53 /* Min output value of DAC in volts */
pmallick 19:ed7c2dac92bd 54 float aout_min_v;
pmallick 19:ed7c2dac92bd 55 /* Max output value of DAC in volts */
pmallick 19:ed7c2dac92bd 56 float aout_max_v;
pmallick 19:ed7c2dac92bd 57 /* Analog output reference voltage */
pmallick 19:ed7c2dac92bd 58 float vref;
pmallick 19:ed7c2dac92bd 59 /* Analog output platform specific functions */
pmallick 19:ed7c2dac92bd 60 const struct aout_platform_ops *platform_ops;
pmallick 19:ed7c2dac92bd 61 /* Analog extra parameters (device specific) */
pmallick 19:ed7c2dac92bd 62 void *extra;
pmallick 19:ed7c2dac92bd 63 };
pmallick 19:ed7c2dac92bd 64
pmallick 19:ed7c2dac92bd 65 /**
pmallick 19:ed7c2dac92bd 66 * @struct aout_platform_ops
pmallick 19:ed7c2dac92bd 67 * @brief Structure holding analog output function pointers that
pmallick 19:ed7c2dac92bd 68 * point to the platform specific function
pmallick 19:ed7c2dac92bd 69 */
pmallick 19:ed7c2dac92bd 70 struct aout_platform_ops {
pmallick 19:ed7c2dac92bd 71 /** Analog output initialization function pointer */
pmallick 19:ed7c2dac92bd 72 int32_t(*init)(struct aout_desc **, const struct aout_init_param *);
pmallick 19:ed7c2dac92bd 73 /** Analog output write function pointer */
pmallick 19:ed7c2dac92bd 74 int32_t(*write)(struct aout_desc *, float);
pmallick 19:ed7c2dac92bd 75 /** Analog output remove function pointer */
pmallick 19:ed7c2dac92bd 76 int32_t(*remove)(struct aout_desc *);
pmallick 19:ed7c2dac92bd 77 };
pmallick 19:ed7c2dac92bd 78
pmallick 19:ed7c2dac92bd 79 /******************************************************************************/
pmallick 19:ed7c2dac92bd 80 /************************ Functions Declarations ******************************/
pmallick 19:ed7c2dac92bd 81 /******************************************************************************/
pmallick 19:ed7c2dac92bd 82 /* Write analog output voltage */
pmallick 19:ed7c2dac92bd 83 int32_t aout_set_voltage(struct aout_desc *desc, float value);
pmallick 19:ed7c2dac92bd 84
pmallick 19:ed7c2dac92bd 85 /* Initialize the analog output pin */
pmallick 19:ed7c2dac92bd 86 int32_t aout_init(struct aout_desc **desc,
pmallick 19:ed7c2dac92bd 87 const struct aout_init_param *param);
pmallick 19:ed7c2dac92bd 88
pmallick 19:ed7c2dac92bd 89 /* Free the resources allocated by analog_out_init() */
pmallick 19:ed7c2dac92bd 90 int32_t aout_remove(struct aout_desc *desc);
pmallick 19:ed7c2dac92bd 91
pmallick 19:ed7c2dac92bd 92 #endif