Home | History | Annotate | Download | only in mraa
      1 /*
      2  * Author: Brendan Le Foll <brendan.le.foll (at) intel.com>
      3  * Copyright  2014 Intel Corporation
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a copy
      6  * of this software and associated documentation files (the "Software"), to
      7  * deal in the Software without restriction, including without limitation the
      8  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
      9  * sell copies of the Software, and to permit persons to whom the Software is
     10  * furnished to do so, subject to the following conditions:
     11  *
     12  * The above copyright notice and this permission notice shall be included in
     13  * all copies or substantial portions of the Software.
     14  *
     15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     18  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
     21  * IN THE SOFTWARE.
     22  */
     23 
     24 #pragma once
     25 
     26 /** @file
     27  *
     28  * This file defines the basic shared types for libmraa
     29  * this file is different to common.h in that swig takes this as an input
     30  */
     31 
     32 namespace mraa
     33 {
     34 
     35 //These enums must match the enums in types.h
     36 
     37 /**
     38  * MRAA supported platform types
     39  */
     40 typedef enum {
     41     INTEL_GALILEO_GEN1 = 0,    /**< The Generation 1 Galileo platform (RevD) */
     42     INTEL_GALILEO_GEN2 = 1,    /**< The Generation 2 Galileo platform (RevG/H) */
     43     INTEL_EDISON_FAB_C = 2,    /**< The Intel Edison (FAB C) */
     44     INTEL_DE3815 = 3,          /**< The Intel DE3815 Baytrail NUC */
     45     INTEL_MINNOWBOARD_MAX = 4, /**< The Intel Minnow Board Max */
     46     RASPBERRY_PI = 5,          /**< The different Raspberry PI Models -like  A,B,A+,B+ */
     47     BEAGLEBONE = 6,            /**< The different BeagleBone Black Modes B/C */
     48     BANANA = 7,                /**< Allwinner A20 based Banana Pi and Banana Pro */
     49 
     50     UNKNOWN_PLATFORM =
     51     99 /**< An unknown platform type, typically will load INTEL_GALILEO_GEN1 */
     52 } Platform;
     53 
     54 /**
     55  * Intel edison miniboard numbering enum
     56  */
     57 typedef enum {
     58     INTEL_EDISON_MINIBOARD_J17_1 = 0,
     59     INTEL_EDISON_MINIBOARD_J17_5 = 4,
     60     INTEL_EDISON_MINIBOARD_J17_7 = 6,
     61     INTEL_EDISON_MINIBOARD_J17_8 = 7,
     62     INTEL_EDISON_MINIBOARD_J17_9 = 8,
     63     INTEL_EDISON_MINIBOARD_J17_10 = 9,
     64     INTEL_EDISON_MINIBOARD_J17_11 = 10,
     65     INTEL_EDISON_MINIBOARD_J17_12 = 11,
     66     INTEL_EDISON_MINIBOARD_J17_14 = 13,
     67     INTEL_EDISON_MINIBOARD_J18_1 = 14,
     68     INTEL_EDISON_MINIBOARD_J18_2 = 15,
     69     INTEL_EDISON_MINIBOARD_J18_6 = 19,
     70     INTEL_EDISON_MINIBOARD_J18_7 = 20,
     71     INTEL_EDISON_MINIBOARD_J18_8 = 21,
     72     INTEL_EDISON_MINIBOARD_J18_10 = 23,
     73     INTEL_EDISON_MINIBOARD_J18_11 = 24,
     74     INTEL_EDISON_MINIBOARD_J18_12 = 25,
     75     INTEL_EDISON_MINIBOARD_J18_13 = 26,
     76     INTEL_EDISON_MINIBOARD_J19_4 = 31,
     77     INTEL_EDISON_MINIBOARD_J19_5 = 32,
     78     INTEL_EDISON_MINIBOARD_J19_6 = 33,
     79     INTEL_EDISON_MINIBOARD_J19_8 = 35,
     80     INTEL_EDISON_MINIBOARD_J19_9 = 36,
     81     INTEL_EDISON_MINIBOARD_J19_10 = 37,
     82     INTEL_EDISON_MINIBOARD_J19_11 = 38,
     83     INTEL_EDISON_MINIBOARD_J19_12 = 39,
     84     INTEL_EDISON_MINIBOARD_J19_13 = 40,
     85     INTEL_EDISON_MINIBOARD_J19_14 = 41,
     86     INTEL_EDISON_MINIBOARD_J20_3 = 44,
     87     INTEL_EDISON_MINIBOARD_J20_4 = 45,
     88     INTEL_EDISON_MINIBOARD_J20_5 = 46,
     89     INTEL_EDISON_MINIBOARD_J20_6 = 47,
     90     INTEL_EDISON_MINIBOARD_J20_7 = 48,
     91     INTEL_EDISON_MINIBOARD_J20_8 = 49,
     92     INTEL_EDISON_MINIBOARD_J20_9 = 50,
     93     INTEL_EDISON_MINIBOARD_J20_10 = 51,
     94     INTEL_EDISON_MINIBOARD_J20_11 = 52,
     95     INTEL_EDISON_MINIBOARD_J20_12 = 53,
     96     INTEL_EDISON_MINIBOARD_J20_13 = 54,
     97     INTEL_EDISON_MINIBOARD_J20_14 = 55
     98 } IntelEdisonMiniboard;
     99 
    100 /**
    101  * Intel Edison raw GPIO numbering enum
    102  */
    103 typedef enum {
    104     INTEL_EDISON_GP182 = 0,
    105     INTEL_EDISON_GP135 = 4,
    106     INTEL_EDISON_GP27 = 6,
    107     INTEL_EDISON_GP20 = 7,
    108     INTEL_EDISON_GP28 = 8,
    109     INTEL_EDISON_GP111 = 0,
    110     INTEL_EDISON_GP109 = 10,
    111     INTEL_EDISON_GP115 = 11,
    112     INTEL_EDISON_GP128 = 13,
    113     INTEL_EDISON_GP13 = 14,
    114     INTEL_EDISON_GP165 = 15,
    115     INTEL_EDISON_GP19 = 19,
    116     INTEL_EDISON_GP12 = 20,
    117     INTEL_EDISON_GP183 = 21,
    118     INTEL_EDISON_GP110 = 23,
    119     INTEL_EDISON_GP114 = 24,
    120     INTEL_EDISON_GP129 = 25,
    121     INTEL_EDISON_GP130 = 26,
    122     INTEL_EDISON_GP44 = 31,
    123     INTEL_EDISON_GP46 = 32,
    124     INTEL_EDISON_GP48 = 33,
    125     INTEL_EDISON_GP131 = 35,
    126     INTEL_EDISON_GP14 = 36,
    127     INTEL_EDISON_GP40 = 37,
    128     INTEL_EDISON_GP43 = 38,
    129     INTEL_EDISON_GP77 = 39,
    130     INTEL_EDISON_GP82 = 40,
    131     INTEL_EDISON_GP83 = 41,
    132     INTEL_EDISON_GP134 = 44,
    133     INTEL_EDISON_GP45 = 45,
    134     INTEL_EDISON_GP47 = 46,
    135     INTEL_EDISON_GP49 = 47,
    136     INTEL_EDISON_GP15 = 48,
    137     INTEL_EDISON_GP84 = 49,
    138     INTEL_EDISON_GP42 = 50,
    139     INTEL_EDISON_GP41 = 51,
    140     INTEL_EDISON_GP78 = 52,
    141     INTEL_EDISON_GP79 = 53,
    142     INTEL_EDISON_GP80 = 54,
    143     INTEL_EDISON_GP81 = 55
    144 } IntelEdison;
    145 
    146 /**
    147 * Raspberry PI Wiring compatible numbering enum
    148 */
    149 typedef enum {
    150     RASPBERRY_WIRING_PIN8 = 3,
    151     RASPBERRY_WIRING_PIN9 = 5,
    152     RASPBERRY_WIRING_PIN7 = 7,
    153     RASPBERRY_WIRING_PIN15 = 8,
    154     RASPBERRY_WIRING_PIN16 = 10,
    155     RASPBERRY_WIRING_PIN0 = 11,
    156     RASPBERRY_WIRING_PIN1 = 12,
    157     RASPBERRY_WIRING_PIN2 = 13,
    158     RASPBERRY_WIRING_PIN3 = 15,
    159     RASPBERRY_WIRING_PIN4 = 16,
    160     RASPBERRY_WIRING_PIN5 = 18,
    161     RASPBERRY_WIRING_PIN12 = 19,
    162     RASPBERRY_WIRING_PIN13 = 21,
    163     RASPBERRY_WIRING_PIN6 = 22,
    164     RASPBERRY_WIRING_PIN14 = 23,
    165     RASPBERRY_WIRING_PIN10 = 24,
    166     RASPBERRY_WIRING_PIN11 = 26,
    167     RASPBERRY_WIRING_PIN17 = 29, // RPi B V2
    168     RASPBERRY_WIRING_PIN21 = 29,
    169     RASPBERRY_WIRING_PIN18 = 30, // RPi B V2
    170     RASPBERRY_WIRING_PIN19 = 31, // RPI B V2
    171     RASPBERRY_WIRING_PIN22 = 31,
    172     RASPBERRY_WIRING_PIN20 = 32, // RPi B V2
    173     RASPBERRY_WIRING_PIN26 = 32,
    174     RASPBERRY_WIRING_PIN23 = 33,
    175     RASPBERRY_WIRING_PIN24 = 35,
    176     RASPBERRY_WIRING_PIN27 = 36,
    177     RASPBERRY_WIRING_PIN25 = 37,
    178     RASPBERRY_WIRING_PIN28 = 38,
    179     RASPBERRY_WIRING_PIN29 = 40
    180 } RaspberryWiring;
    181 
    182 /**
    183  * MRAA return codes
    184  */
    185 typedef enum {
    186     SUCCESS = 0,                             /**< Expected response */
    187     ERROR_FEATURE_NOT_IMPLEMENTED = 1,       /**< Feature TODO */
    188     ERROR_FEATURE_NOT_SUPPORTED = 2,         /**< Feature not supported by HW */
    189     ERROR_INVALID_VERBOSITY_LEVEL = 3,       /**< Verbosity level wrong */
    190     ERROR_INVALID_PARAMETER = 4,             /**< Parameter invalid */
    191     ERROR_INVALID_HANDLE = 5,                /**< Handle invalid */
    192     ERROR_NO_RESOURCES = 6,                  /**< No resource of that type avail */
    193     ERROR_INVALID_RESOURCE = 7,              /**< Resource invalid */
    194     ERROR_INVALID_QUEUE_TYPE = 8,            /**< Queue type incorrect */
    195     ERROR_NO_DATA_AVAILABLE = 9,             /**< No data available */
    196     ERROR_INVALID_PLATFORM = 10,             /**< Platform not recognised */
    197     ERROR_PLATFORM_NOT_INITIALISED = 11,     /**< Board information not initialised */
    198     ERROR_PLATFORM_ALREADY_INITIALISED = 12, /**< Board is already initialised */
    199 
    200     ERROR_UNSPECIFIED = 99 /**< Unknown Error */
    201 } Result;
    202 
    203 /**
    204  * Enum representing different possible modes for a pin.
    205  */
    206 typedef enum {
    207     PIN_VALID = 0,     /**< Pin Valid */
    208     PIN_GPIO = 1,      /**< General Purpose IO */
    209     PIN_PWM = 2,       /**< Pulse Width Modulation */
    210     PIN_FAST_GPIO = 3, /**< Faster GPIO */
    211     PIN_SPI = 4,       /**< SPI */
    212     PIN_I2C = 5,       /**< I2C */
    213     PIN_AIO = 6,       /**< Analog in */
    214     PIN_UART = 7       /**< UART */
    215 } Pinmodes;
    216 
    217 /**
    218  * Enum reprensenting different i2c speeds/modes
    219  */
    220 typedef enum {
    221     I2C_STD = 0,  /**< up to 100Khz */
    222     I2C_FAST = 1, /**< up to 400Khz */
    223     I2C_HIGH = 2  /**< up to 3.4Mhz */
    224 } I2cMode;
    225 
    226 typedef enum {
    227     UART_PARITY_NONE = 0,
    228     UART_PARITY_EVEN = 1,
    229     UART_PARITY_ODD = 2,
    230     UART_PARITY_MARK = 3,
    231     UART_PARITY_SPACE = 4
    232 } UartParity;
    233 
    234 }
    235