Home | History | Annotate | Download | only in mraa
      1 /*
      2  * Author: Nandkishor Sonar
      3  * Copyright (c) 2014 Intel Corporation.
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining
      6  * a copy of this software and associated documentation files (the
      7  * "Software"), to deal in the Software without restriction, including
      8  * without limitation the rights to use, copy, modify, merge, publish,
      9  * distribute, sublicense, and/or sell copies of the Software, and to
     10  * permit persons to whom the Software is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The above copyright notice and this permission notice shall be
     14  * included in all copies or substantial portions of the Software.
     15  *
     16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
     20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     21  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     23  */
     24 
     25 #pragma once
     26 /**
     27  * @file
     28  * @brief Analog input/output
     29  *
     30  * AIO is the anlog input & output interface to libmraa. It is used to read or
     31  * set the voltage applied to an AIO pin.
     32  *
     33  * @snippet analogin_a0.c Interesting
     34  */
     35 
     36 #ifdef __cplusplus
     37 extern "C" {
     38 #endif
     39 
     40 #include <stdio.h>
     41 #include <unistd.h>
     42 #include <stdint.h>
     43 
     44 #include "common.h"
     45 #include "gpio.h"
     46 
     47 /**
     48  * Opaque pointer definition to the internal struct _aio. This context refers
     49  * to one single AIO pin on the board.
     50  */
     51 typedef struct _aio* mraa_aio_context;
     52 
     53 /**
     54  * Initialise an Analog input device, connected to the specified pin
     55  *
     56  * @param pin Channel number to read ADC inputs
     57  * @returns aio context or NULL
     58  */
     59 mraa_aio_context mraa_aio_init(unsigned int pin);
     60 
     61 /**
     62  * Read the input voltage. By default mraa will shift
     63  * the raw value up or down to a 10 bit value.
     64  *
     65  * @param dev The AIO context
     66  * @returns The current input voltage.
     67  */
     68 unsigned int mraa_aio_read(mraa_aio_context dev);
     69 
     70 /**
     71  * Read the input voltage and return it as a normalized float (0.0f-1.0f).
     72  *
     73  * @param dev The AIO context
     74  * @returns The current input voltage as a normalized float (0.0f-1.0f)
     75  */
     76 float mraa_aio_read_float(mraa_aio_context dev);
     77 
     78 /**
     79  * Close the analog input context, this will free the memory for the context
     80  *
     81  * @param dev The AIO context
     82  * @return Result of operation
     83  */
     84 mraa_result_t mraa_aio_close(mraa_aio_context dev);
     85 
     86 /**
     87  * Set the bit value which mraa will shift the raw reading
     88  * from the ADC to. I.e. 10bits
     89  * @param dev the analog input context
     90  * @param bits the bits the return from read should be i.e 10
     91  *
     92  * @return mraa result type
     93  */
     94 mraa_result_t mraa_aio_set_bit(mraa_aio_context dev, int bits);
     95 
     96 /**
     97  * Gets the bit value mraa is shifting the analog read to.
     98  * @param dev the analog input context
     99  *
    100  * @return bit value mraa is set return from the read function
    101  */
    102 int mraa_aio_get_bit(mraa_aio_context dev);
    103 
    104 #ifdef __cplusplus
    105 }
    106 #endif
    107