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 ain.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 AIN_H
pmallick 19:ed7c2dac92bd 14 #define AIN_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 ain_init_param
pmallick 19:ed7c2dac92bd 31 * @brief Structure holding parameters for analog input initialization
pmallick 19:ed7c2dac92bd 32 */
pmallick 19:ed7c2dac92bd 33 struct ain_init_param {
pmallick 19:ed7c2dac92bd 34 /* Analog input pin number */
pmallick 19:ed7c2dac92bd 35 int32_t number;
pmallick 19:ed7c2dac92bd 36 /* Analog input reference voltage */
pmallick 19:ed7c2dac92bd 37 float vref;
pmallick 19:ed7c2dac92bd 38 /* Analog input platform specific functions */
pmallick 19:ed7c2dac92bd 39 const struct ain_platform_ops *platform_ops;
pmallick 19:ed7c2dac92bd 40 };
pmallick 19:ed7c2dac92bd 41
pmallick 19:ed7c2dac92bd 42 /**
pmallick 19:ed7c2dac92bd 43 * @struct ain_desc
pmallick 19:ed7c2dac92bd 44 * @brief Structure holding analog input descriptor
pmallick 19:ed7c2dac92bd 45 */
pmallick 19:ed7c2dac92bd 46 struct ain_desc {
pmallick 19:ed7c2dac92bd 47 /* Analog input pin number */
pmallick 19:ed7c2dac92bd 48 int32_t number;
pmallick 19:ed7c2dac92bd 49 /* Analog input reference voltage */
pmallick 19:ed7c2dac92bd 50 float vref;
pmallick 19:ed7c2dac92bd 51 /* Analog input platform specific functions */
pmallick 19:ed7c2dac92bd 52 const struct ain_platform_ops *platform_ops;
pmallick 19:ed7c2dac92bd 53 /* Analog extra parameters (device specific) */
pmallick 19:ed7c2dac92bd 54 void *extra;
pmallick 19:ed7c2dac92bd 55 };
pmallick 19:ed7c2dac92bd 56
pmallick 19:ed7c2dac92bd 57 /**
pmallick 19:ed7c2dac92bd 58 * @struct ain_platform_ops
pmallick 19:ed7c2dac92bd 59 * @brief Structure holding analog input function pointers that
pmallick 19:ed7c2dac92bd 60 * point to the platform specific function
pmallick 19:ed7c2dac92bd 61 */
pmallick 19:ed7c2dac92bd 62 struct ain_platform_ops {
pmallick 19:ed7c2dac92bd 63 /** Analog input initialization function pointer */
pmallick 19:ed7c2dac92bd 64 int32_t(*init)(struct ain_desc **, const struct ain_init_param *);
pmallick 19:ed7c2dac92bd 65 /** Analog input read function pointer */
pmallick 19:ed7c2dac92bd 66 int32_t(*read)(struct ain_desc *, float *);
pmallick 19:ed7c2dac92bd 67 /** Analog input remove function pointer */
pmallick 19:ed7c2dac92bd 68 int32_t(*remove)(struct ain_desc *);
pmallick 19:ed7c2dac92bd 69 };
pmallick 19:ed7c2dac92bd 70
pmallick 19:ed7c2dac92bd 71 /******************************************************************************/
pmallick 19:ed7c2dac92bd 72 /************************ Functions Declarations ******************************/
pmallick 19:ed7c2dac92bd 73 /******************************************************************************/
pmallick 19:ed7c2dac92bd 74 /* Read analog input voltage */
pmallick 19:ed7c2dac92bd 75 int32_t ain_get_voltage(struct ain_desc *desc, float *value);
pmallick 19:ed7c2dac92bd 76
pmallick 19:ed7c2dac92bd 77 /* Initialize the analog input pin */
pmallick 19:ed7c2dac92bd 78 int32_t ain_init(struct ain_desc **desc,
pmallick 19:ed7c2dac92bd 79 const struct ain_init_param *param);
pmallick 19:ed7c2dac92bd 80
pmallick 19:ed7c2dac92bd 81 /* Free the resources allocated by ain_init() */
pmallick 19:ed7c2dac92bd 82 int32_t ain_remove(struct ain_desc *desc);
pmallick 19:ed7c2dac92bd 83
pmallick 19:ed7c2dac92bd 84 #endif