Private
Public Access
2
0

C++: Change enum types to be shorter in C++

* This changes the swig interface so Python/Node APIs change slightly

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Brendan Le Foll
2014-05-19 09:49:30 +01:00
parent 5d9fc39ae9
commit 3731263752
7 changed files with 36 additions and 72 deletions

View File

@@ -34,6 +34,26 @@
namespace maa { namespace maa {
// These enums must match the enums in gpio.h
typedef enum {
MODE_STRONG = 0,
MODE_PULLUP = 1,
MODE_PULLDOWN = 2,
MODE_HIZ = 3
} Mode;
typedef enum {
DIR_OUT = 0,
DIR_IN = 1
} Dir;
typedef enum {
EDGE_NONE = 0,
EDGE_BOTH = 1,
EDGE_RISING = 2,
EDGE_FALLING = 3
} Edge;
class Gpio { class Gpio {
public: public:
Gpio(int pin, bool raw=false) { Gpio(int pin, bool raw=false) {
@@ -43,28 +63,28 @@ class Gpio {
m_gpio = maa_gpio_init(pin); m_gpio = maa_gpio_init(pin);
} }
~Gpio() { ~Gpio() {
maa_gpio_close(m_gpio); maa_result_t x = maa_gpio_close(m_gpio);
} }
maa_result_t edge(gpio_edge_t mode) { maa_result_t edge(Edge mode) {
return maa_gpio_edge_mode(m_gpio, mode); return maa_gpio_edge_mode(m_gpio, (gpio_edge_t) mode);
} }
#if defined(SWIGPYTHON) #if defined(SWIGPYTHON)
maa_result_t isr(gpio_edge_t mode, PyObject *pyfunc) { maa_result_t isr(Edge mode, PyObject *pyfunc) {
return maa_gpio_isr(m_gpio, mode, (void (*) ()) pyfunc); return maa_gpio_isr(m_gpio, (gpio_edge_t) mode, (void (*) ()) pyfunc);
} }
#else #else
maa_result_t isr(gpio_edge_t mode, void (*fptr)(void)) { maa_result_t isr(Edge mode, void (*fptr)(void)) {
return maa_gpio_isr(m_gpio, mode, fptr); return maa_gpio_isr(m_gpio, (gpio_edge_t) mode, fptr);
} }
#endif #endif
maa_result_t isr_exit() { maa_result_t isr_exit() {
return maa_gpio_isr_exit(m_gpio); return maa_gpio_isr_exit(m_gpio);
} }
maa_result_t mode(gpio_mode_t mode) { maa_result_t mode(Mode mode) {
return maa_gpio_mode(m_gpio, mode); return maa_gpio_mode(m_gpio, (gpio_mode_t) mode);
} }
maa_result_t dir(gpio_dir_t dir) { maa_result_t dir(Dir dir) {
return maa_gpio_dir(m_gpio, dir); return maa_gpio_dir(m_gpio, (gpio_dir_t) dir);
} }
int read() { int read() {
return maa_gpio_read(m_gpio); return maa_gpio_read(m_gpio);

View File

@@ -57,7 +57,7 @@ int main (int argc, char **argv)
if (gpio == NULL) { if (gpio == NULL) {
return MAA_ERROR_UNSPECIFIED; return MAA_ERROR_UNSPECIFIED;
} }
int response = gpio->dir(MAA_GPIO_OUT); int response = gpio->dir(maa::DIR_OUT);
if (response != MAA_SUCCESS) if (response != MAA_SUCCESS)
maa_result_print((maa_result_t) MAA_SUCCESS); maa_result_print((maa_result_t) MAA_SUCCESS);

View File

@@ -26,7 +26,7 @@ import pymaa as maa
import time import time
x = maa.Gpio(8) x = maa.Gpio(8)
x.dir(maa.MAA_GPIO_OUT) x.dir(maa.DIR_OUT)
while True: while True:
x.write(1) x.write(1)

View File

@@ -25,4 +25,3 @@
import pymaa import pymaa
x = pymaa.Gpio(13) x = pymaa.Gpio(13)
print(x.pin)

View File

@@ -6,5 +6,5 @@ def test():
print("wooo") print("wooo")
x = maa.Gpio(6) x = maa.Gpio(6)
x.dir(maa.MAA_GPIO_IN) x.dir(maa.DIR_IN)
x.isr(maa.MAA_GPIO_EDGE_BOTH, test) x.isr(maa.EDGE_BOTH, test)

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env python
# Author: Brendan Le Foll <brendan.le.foll@intel.com>
# Copyright (c) 2014 Intel Corporation.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import pymaa as maa
x = maa.I2c()
x.address(0x62)
y= " "
ret = x.read(y, 2)
print(y)

View File

@@ -17,30 +17,7 @@ const char * maa_get_version();
#### GPIO #### #### GPIO ####
/** #### GPIO ####
* GPIO Output modes
*/
typedef enum {
MAA_GPIO_STRONG = 0, /**< Default. Strong high and low */
MAA_GPIO_PULLUP = 1, /**< Resistive High */
MAA_GPIO_PULLDOWN = 2, /**< Resistive Low */
MAA_GPIO_HIZ = 3 /**< High Z State */
} gpio_mode_t;
/**
* GPIO Direction options.
*/
typedef enum {
MAA_GPIO_OUT = 0, /**< Output. A Mode can also be set */
MAA_GPIO_IN = 1 /**< Input. */
} gpio_dir_t;
typedef enum {
MAA_GPIO_EDGE_NONE = 0, /**< No interrupt on GPIO */
MAA_GPIO_EDGE_BOTH = 1, /**< Interupt on rising & falling */
MAA_GPIO_EDGE_RISING = 2, /**< Interupt on rising only */
MAA_GPIO_EDGE_FALLING = 3 /**< Interupt on falling only */
} gpio_edge_t;
%include "gpio.hpp" %include "gpio.hpp"