[Armadeus-commitlog] armadeus branch, master, updated. release-3.3-21-g9e9e990
Brought to you by:
sszy
|
From: Fabien M <fa...@us...> - 2010-09-06 13:33:21
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 9e9e9907ff8a9441dca76b353d5249cac6c9473d (commit)
from 771beacd96bac813382b9c9c16f8ca3ce08d7790 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9e9e9907ff8a9441dca76b353d5249cac6c9473d
Author: Fabien Marteau <fab...@ar...>
Date: Mon Sep 6 15:30:58 2010 +0200
[AsDevices] AsGpio python wrapper functionnal
-----------------------------------------------------------------------
Summary of changes:
target/packages/as_devices/c/as_gpio.h | 4 +-
.../packages/as_devices/python/AsDevices/AsGpio.py | 120 +++++--
target/packages/as_devices/python/Makefile | 4 +-
.../packages/as_devices/python/src/AsGpio_wrap.c | 363 +++++++++++++-------
.../packages/as_devices/python/src/AsGpio_wrap.h | 3 +-
5 files changed, 339 insertions(+), 155 deletions(-)
diff --git a/target/packages/as_devices/c/as_gpio.h b/target/packages/as_devices/c/as_gpio.h
index dd2d504..1a077ce 100644
--- a/target/packages/as_devices/c/as_gpio.h
+++ b/target/packages/as_devices/c/as_gpio.h
@@ -143,7 +143,7 @@ int32_t as_gpio_get_irq_mode(struct as_gpio_device *aDev);
*
* @param aDev as_gpio_device pointer structure
*
- * @return pin mode value if positive or null, error if negative
+ * @return pin number, error if negative
*/
int32_t as_gpio_get_pin_num(struct as_gpio_device *aDev);
@@ -151,7 +151,7 @@ int32_t as_gpio_get_pin_num(struct as_gpio_device *aDev);
*
* @param aDev as_gpio_device pointer structure
*
- * @return pin mode value if positive or null, error if negative
+ * @return port letter, error if negative
*/
int32_t as_gpio_get_port_letter(struct as_gpio_device *aDev);
diff --git a/target/packages/as_devices/python/AsDevices/AsGpio.py b/target/packages/as_devices/python/AsDevices/AsGpio.py
index a0abe68..d589b7a 100644
--- a/target/packages/as_devices/python/AsDevices/AsGpio.py
+++ b/target/packages/as_devices/python/AsDevices/AsGpio.py
@@ -6,7 +6,7 @@
# Author: Fabien Marteau <fab...@ar...>
# Created: 23/03/2010
#-----------------------------------------------------------------------------
-# Copyright (2008) Armadeus Systems
+# Copyright (2010) Armadeus Systems
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
@@ -44,17 +44,16 @@ class AsGpio:
# Dictionary of gpio multiton classes
__gpio = {}
- ################################################################$
+ ################################################################
class __impl:
""" implementation
"""
- def __init__(self, port_letter):
- self.__port_letter = port_letter
+ def __init__(self, aPortLetter, aPinNum):
try:
- self.__device = wrapper.gpio_open(self.__port_letter)
+ self.__device = wrapper.gpio_open(aPortLetter, aPinNum)
except Exception, e:
- raise AsGpioError("Can't open GPIO "+str(self.__port_letter)+\
- ": "+str(e))
+ raise AsGpioError("Can't open GPIO port "+str(aPortLetter)+\
+ " pin "+str(aPinNum)+": "+str(e))
def __del__(self):
try:
@@ -62,33 +61,99 @@ class AsGpio:
except Exception, e:
pass
- def setPinDirection(self, aPinNum, aDirection):
+ def setPinDirection(self, aDirection):
""" Set period in us
- \param aPinNum pin number
\param aDirection pin direction 0:input 1:output
"""
try:
- wrapper.setPinDirection(self.__device, aPinNum, aDirection)
+ wrapper.setPinDirection(self.__device, aDirection)
except Exception, e:
raise AsGpioError(str(e))
- def setPinValue(self, aPinNum, aValue):
+ def setPinValue(self, aValue):
""" Set pin value
- \param aPinNum pin number
\param aValue value to write
"""
try:
- wrapper.setPinValue(self.__device, aPinNum, aValue)
+ wrapper.setPinValue(self.__device, aValue)
except Exception, e:
raise AsGpioError(str(e))
- def getPinValue(self, aPinNum):
+ def getPinValue(self):
""" Get pin value
- \param aPinNum pin number
- \return pin value
+ \param return pin value
+ """
+ try:
+ return wrapper.getPinValue(self.__device)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+ def blockingGetPinValue(self, aDelay_s, aDelay_us=0):
+ """ Get pin value (blocking mode)
+ \param return pin value
+ """
+ try:
+ return wrapper.blockingGetPinValue(self.__device,
+ aDelay_s,
+ aDelay_us)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+ def getPullupValue(self):
+ """ Get pullup value
+ \param return pin value
+ """
+ try:
+ return wrapper.getPullupValue(self.__device)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+ def setPullupValue(self, aValue):
+ """ Set pullup value
+ \param aValue value 0:no pullup 1:pullup
+ """
+ try:
+ return wrapper.setPullupValue(self.__device, aValue)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+ def setIrqMode(self, aMode):
+ """ Set irq Mode
+ \param aMode.
+ 1:MODE_NOINT
+ 2:MODE_RISING
+ 3:MODE_FALLING
+ 4:MODE_BOTH
+ """
+ try:
+ return wrapper.setIrqMode(self.__device, aMode)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+ def getIrqMode(self):
+ """ get irq mode
+ """
+ try:
+ return wrapper.getIrqMode(self.__device)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+
+ def getPinNumber(self):
+ """ Get pin number
+ \param return pin number
+ """
+ try:
+ return wrapper.getPinNumber(self.__device)
+ except Exception, e:
+ raise AsGpioError(str(e))
+
+ def getPortLetter(self):
+ """ Get pin letter
+ \param return pin letter
"""
try:
- return wrapper.getPinValue(self.__device, aPinNum)
+ return wrapper.getPortLetter(self.__device)
except Exception, e:
raise AsGpioError(str(e))
@@ -96,32 +161,33 @@ class AsGpio:
################################################################
@classmethod
- def getInstance(cls, aPort_letter):
+ def getInstance(cls, aPort_letter, aPinNumber):
if type(aPort_letter)!=str:
raise Exception("port letter must be a character")
if ((aPort_letter[0] < 'A') or (aPort_letter[0] > 'Z')):
raise Exception("Port letter must be an UPPER case letter")
+ if type(aPinNumber)!=int:
+ raise Exception("Pin number must be a int")
+ if aPinNumber < 0 or aPinNumber > 31:
+ raise Exception("Pin number must be between 0 and 31")
try:
- return AsGpio.__gpio[aPort_letter[0]]
+ return AsGpio.__gpio["%s%d"%(aPort_letter[0],aPinNumber)]
except KeyError:
- AsGpio.__gpio[aPort_letter[0]] = cls.__impl(aPort_letter[0])
+ AsGpio.__gpio["%s%d"%(aPort_letter[0],aPinNumber)] =\
+ cls.__impl(aPort_letter[0], aPinNumber)
- return AsGpio.__gpio[aPort_letter[0]]
+ return AsGpio.__gpio["%s%d"%(aPort_letter[0],aPinNumber)]
def __init__(self):
""" Initialize pwm
"""
- raise Exception("This constructor is private")
+ raise Exception("This constructor is private, to instanciate object do:"+\
+ "AsGpio.getInstance(port_letter, pin_number)")
if __name__ == "__main__":
import os
def pressEnterToContinue():
print "Press enter to continue"
raw_input()
- print "AsGpio class test\n"
- print AsGpio.__doc__
-
- portf = AsGpio.getInstance('F')
- print str(portf)
diff --git a/target/packages/as_devices/python/Makefile b/target/packages/as_devices/python/Makefile
index 07fc233..f6aa4cb 100644
--- a/target/packages/as_devices/python/Makefile
+++ b/target/packages/as_devices/python/Makefile
@@ -15,12 +15,12 @@ AS_LIB=../c/libas_devices.so
LIBNAME=AsDevices
-#WRAPPER_LIBS=AsGpio_wrap.so
+WRAPPER_LIBS=AsGpio_wrap.so
WRAPPER_DIR=src
PYTHON_VERS=2.4
PYTHON_SUBVERS=5
-PYINC=/usr/include/python2.4
+PYINC=$(STAGING_DIR)/usr/include/python2.4/
PYLIB=../../../../buildroot/project_build_armv5te/apf27/root/usr/lib/python$(PYTHON_VERS)
.PHONY: all
diff --git a/target/packages/as_devices/python/src/AsGpio_wrap.c b/target/packages/as_devices/python/src/AsGpio_wrap.c
index 510baf7..c454055 100644
--- a/target/packages/as_devices/python/src/AsGpio_wrap.c
+++ b/target/packages/as_devices/python/src/AsGpio_wrap.c
@@ -21,6 +21,7 @@
#include "AsGpio_wrap.h"
#include "as_gpio.h"
+
/* Methods definitions */
static PyMethodDef AsGpio_wrap_methods[] = {
{"gpio_open", gpio_open, METH_VARARGS, "Initialize gpio"},
@@ -32,6 +33,8 @@ static PyMethodDef AsGpio_wrap_methods[] = {
{"getPullupValue", getPullupValue, METH_VARARGS, "Get pull up value"},
{"getIrqMode", getIrqMode, METH_VARARGS, "Get IRQ Mode"},
{"setIrqMode", setIrqMode, METH_VARARGS, "Set IRQ Mode"},
+ {"getPortLetter", getPortLetter, METH_VARARGS, "Get port letter"},
+ {"getPinNumber", getPinNumber, METH_VARARGS, "Get pin number"},
{"gpio_close", gpio_close, METH_VARARGS, "Close gpio"},
{NULL, NULL, 0, NULL} /* Sentinel */
};
@@ -42,43 +45,46 @@ void initAsGpio_wrap() /* called on first import */
(void) Py_InitModule("AsGpio_wrap", AsGpio_wrap_methods); /* mod name, table ptr */
}
-/** @brief Initialize port access
+/** @brief Initialize pin port access
* @param aPortChar character port in UPPER case
+ * @param aPinNum pin number on port
* @return PyObject
*/
static PyObject * gpio_open(PyObject *self, PyObject *args)
{
/* parameters */
char aPortChar;
+ int aPinNum;
+
struct as_gpio_device *dev;
PyObject *ret;
-
+ char buff[300];
/* Get arguments */
- if (!PyArg_ParseTuple(args, "c", &aPortChar))
+ if (!PyArg_ParseTuple(args, "ci", &aPortChar, &aPinNum))
{
PyErr_SetString(PyExc_IOError,
"Wrong parameters.");
return NULL;
}
- dev = as_gpio_open(aPortChar);
+ dev = as_gpio_open(aPortChar, aPinNum);
if (dev == NULL)
{
- PyErr_SetString(PyExc_IOError,
- "Initialization error. Is kernel module loaded ?");
+ snprintf(buff, 300,
+ "Initialization error P%c%d. Is kernel module loaded ?",
+ aPortChar, aPinNum);
+ PyErr_SetString(PyExc_IOError,buff);
return NULL;
}
- ret = Py_BuildValue("((ci))",
- dev->port_letter,
- dev->fdev);
- free(dev);
+
+ ret = Py_BuildValue("l", (long)dev);
+
return ret;
}
/** @brief Set pin direction
*
- * @param ((ci)) -> (aPort_letter, aFdev) as_gpio_device structure_list
- * @param aPinNum pin number
+ * @param aFdev as_gpio_device structure pointer
* @param aDirection direction 0:input 1:output
*
* @return error if negative value
@@ -86,38 +92,22 @@ static PyObject * gpio_open(PyObject *self, PyObject *args)
static PyObject * setPinDirection(PyObject *self, PyObject *args)
{
/* parameters */
- char aPort_letter;
- int aFdev;
-
- int aPinNum;
+ struct as_gpio_device *aFdev;
int aDirection;
- struct as_gpio_device *dev;
int ret;
/* Get arguments */
- if (!PyArg_ParseTuple(args, "((ci))ii",
- &aPort_letter,
- &aFdev,
- &aPinNum,
+ if (!PyArg_ParseTuple(args, "li",
+ (long *)&aFdev,
&aDirection))
{
PyErr_SetString(PyExc_IOError,
"Wrong parameters.");
return NULL;
}
-
- dev = (struct as_gpio_device *)malloc(sizeof(struct as_gpio_device));
- if (dev == NULL)
- {
- PyErr_SetString(PyExc_IOError,
- "memory allocation:Â can't malloc fdev structure");
- return NULL;
- }
- dev->port_letter = aPort_letter;
- dev->fdev = aFdev;
- ret = as_gpio_set_pin_direction(dev, aPinNum, aDirection);
+ ret = as_gpio_set_pin_direction(aFdev, aDirection);
if (ret < 0)
{
PyErr_SetString(PyExc_IOError,
@@ -125,14 +115,12 @@ static PyObject * setPinDirection(PyObject *self, PyObject *args)
return NULL;
}
- free(dev);
return Py_BuildValue("i", ret);
}
/** @brief Set pin value
*
- * @param ((ci)) -> (aPort_letter, aFdev) as_gpio_device structure_list
- * @param aPinNum pin number
+ * @param aFdev as_gpio_device structure pointer
* @param aValue value of pin (1 or 0)
*
* @return error if negative
@@ -140,38 +128,20 @@ static PyObject * setPinDirection(PyObject *self, PyObject *args)
static PyObject * setPinValue(PyObject *self, PyObject *args)
{
/* parameters */
- char aPort_letter;
- int aFdev;
-
- int aPinNum;
+ struct as_gpio_device *aFdev;
int aValue;
- struct as_gpio_device *dev;
int ret;
/* Get arguments */
- if (!PyArg_ParseTuple(args, "((ci))ii",
- &aPort_letter,
- &aFdev,
- &aPinNum,
- &aValue))
+ if (!PyArg_ParseTuple(args, "li", (long *)&aFdev, &aValue))
{
PyErr_SetString(PyExc_IOError,
"Wrong parameters.");
return NULL;
}
- dev = (struct as_gpio_device *)malloc(sizeof(struct as_gpio_device));
- if (dev == NULL)
- {
- PyErr_SetString(PyExc_IOError,
- "memory allocation: can't malloc fdev structure");
- return NULL;
- }
- dev->port_letter = aPort_letter;
- dev->fdev = aFdev;
-
- ret = as_gpio_set_pin_value(dev, aPinNum, aValue);
+ ret = as_gpio_set_pin_value(aFdev, aValue);
if (ret < 0)
{
PyErr_SetString(PyExc_IOError,
@@ -179,14 +149,13 @@ static PyObject * setPinValue(PyObject *self, PyObject *args)
return NULL;
}
- free(dev);
return Py_BuildValue("i", ret);
}
/** @brief Get pin value
*
- * @param ((ci)) -> (aPort_letter, aFdev) as_gpio_device structure_list
+ * @param aFdev as_gpio_device structure pointer
* @param aPinNum pin number
*
* @return pin value if positive or null, error if negative
@@ -194,36 +163,63 @@ static PyObject * setPinValue(PyObject *self, PyObject *args)
static PyObject * getPinValue(PyObject *self, PyObject *args)
{
/* parameters */
- char aPort_letter;
- int aFdev;
+ struct as_gpio_device *aFdev;
- int aPinNum;
-
- struct as_gpio_device *dev;
int ret;
/* Get arguments */
- if (!PyArg_ParseTuple(args, "((ci))i",
- &aPort_letter,
- &aFdev,
- &aPinNum))
+ if (!PyArg_ParseTuple(args, "l", (long *)&aFdev))
{
PyErr_SetString(PyExc_IOError,
"Wrong parameters.");
return NULL;
}
- dev = (struct as_gpio_device *)malloc(sizeof(struct as_gpio_device));
- if (dev == NULL)
+ ret = as_gpio_get_pin_value(aFdev);
+ if (ret < 0)
{
PyErr_SetString(PyExc_IOError,
- "memory allocation:Â can't malloc fdev structure");
+ "Can't get pin value");
return NULL;
}
- dev->port_letter = aPort_letter;
- dev->fdev = aFdev;
- ret = as_gpio_get_pin_value(dev, aPinNum);
+ return Py_BuildValue("i", ret);
+}
+
+/** @brief Get pin value, blocking until interrupt occur
+ *
+ * @param aFdev as_gpio_device structure pointer
+ * @param aDelay_s seconds delay
+ * @param aDelay_us useconds delay
+ *
+ * @return pin value if positive or null, error if negative
+ */
+static PyObject * blockingGetPinValue(PyObject *self, PyObject *args)
+{
+ /* parameters */
+ struct as_gpio_device *aFdev;
+ int aDelay_s;
+ int aDelay_us;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "lii",
+ (long *)&aFdev,
+ &aDelay_s,
+ &aDelay_us))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_blocking_get_pin_value(aFdev, aDelay_s, aDelay_us);
+ if (ret == -10)
+ {
+ PyErr_SetString(PyExc_IOError, "TIMEOUT");
+ return NULL;
+ }
if (ret < 0)
{
PyErr_SetString(PyExc_IOError,
@@ -231,110 +227,231 @@ static PyObject * getPinValue(PyObject *self, PyObject *args)
return NULL;
}
- free(dev);
return Py_BuildValue("i", ret);
}
-/** @brief TODO
+/** @brief Get pin pull-up value
*
- * @param TODO
- * @param TODO
+ * @param aFdev as_gpio_device structure pointer
*
- * @return TODO
+ * @return pin value if positive or null, error if negative
*/
-static PyObject * blockingGetPinValue(PyObject *self, PyObject *args)
+static PyObject * getPullupValue(PyObject *self, PyObject *args)
{
- printf("TODO\n");
+ /* parameters */
+ struct as_gpio_device *aFdev;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "l", (long *)&aFdev))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_get_pullup_value(aFdev);
+ if (ret < 0)
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Can't get pin value");
+ return NULL;
+ }
+
+ return Py_BuildValue("i", ret);
}
-/** @brief TODO
+/** @brief Set pin pull-up value
*
- * @param TODO
- * @param TODO
+ * @param aFdev as_gpio_device structure pointer
+ * @param aValue pull-up value 0:off 1:on
*
- * @return TODO
+ * @return pin value if positive or null, error if negative
*/
-static PyObject * getPullupValue(PyObject *self, PyObject *args)
+static PyObject * setPullupValue(PyObject *self, PyObject *args)
{
- /* TODO */
- printf("TODO\n");
+ /* parameters */
+ struct as_gpio_device *aFdev;
+ int aValue;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "li", (long *)&aFdev, &aValue))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_set_pullup_value(aFdev, aValue);
+ if (ret < 0)
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Can't get pin value");
+ return NULL;
+ }
+
+ return Py_BuildValue("i", ret);
}
-/** @brief TODO
+/** @brief Set pin irq mode
*
- * @param TODO
- * @param TODO
+ * @param aFdev as_gpio_device structure pointer
+ * @param aMode irq mode
*
- * @return TODO
+ * @return error if negative
*/
-static PyObject * setPullupValue(PyObject *self, PyObject *args)
+static PyObject * setIrqMode(PyObject *self, PyObject *args)
{
- /* TODO */
- printf("TODO\n");
+ /* parameters */
+ struct as_gpio_device *aFdev;
+ int aMode;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "li", (long *)&aFdev, &aMode))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_set_irq_mode(aFdev, aMode);
+ if (ret < 0)
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Can't get pin value");
+ return NULL;
+ }
+
+ return Py_BuildValue("i", ret);
}
-/** @brief TODO
+/** @brief Get pin irq mode value
*
- * @param TODO
- * @param TODO
+ * @param aFDev as_gpio_device pointer structure
*
- * @return TODO
+ * @return pin mode value if positive or null, error if negative
*/
static PyObject * getIrqMode(PyObject *self, PyObject *args)
{
- /* TODO */
- printf("TODO\n");
+ /* parameters */
+ struct as_gpio_device *aFdev;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "l", (long *)&aFdev))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_get_irq_mode(aFdev);
+ if (ret < 0)
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Can't get pin value");
+ return NULL;
+ }
+
+ return Py_BuildValue("i", ret);
}
-/** @brief TODO
+/** @brief Get pin number value
*
- * @param TODO
- * @param TODO
+ * @param aDev as_gpio_device pointer structure
*
- * @return TODO
+ * @return pin number, error if negative
*/
-static PyObject * setIrqMode(PyObject *self, PyObject *args)
+static PyObject * getPinNumber(PyObject *self, PyObject *args)
{
- /* TODO */
- printf("TODO\n");
+ /* parameters */
+ struct as_gpio_device *aFdev;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "l", (long *)&aFdev))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_get_pin_num(aFdev);
+ if (ret < 0)
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Can't get pin value");
+ return NULL;
+ }
+
+ return Py_BuildValue("i", ret);
}
-/** @brief Close port access
+/** @brief Get port letter
*
- * @param ((ci)) -> (aPort_letter, aFdev) as_gpio_device structure_list
+ * @param aDev as_gpio_device pointer structure
*
- * @return pin value if positive or null, error if negative
+ * @return port letter, error if negative
*/
-static PyObject * gpio_close(PyObject *self, PyObject *args)
+static PyObject * getPortLetter(PyObject *self, PyObject *args)
{
/* parameters */
- char aPort_letter;
- int aFdev;
+ struct as_gpio_device *aFdev;
- struct as_gpio_device *dev;
+ char buf[2];
int ret;
/* Get arguments */
- if (!PyArg_ParseTuple(args, "((ci))",
- &aPort_letter,
- &aFdev))
+ if (!PyArg_ParseTuple(args, "l", (long *)&aFdev))
{
PyErr_SetString(PyExc_IOError,
"Wrong parameters.");
return NULL;
}
- dev = (struct as_gpio_device *)malloc(sizeof(struct as_gpio_device));
- if (dev == NULL)
+ ret = as_gpio_get_port_letter(aFdev);
+ if (ret < 0)
{
PyErr_SetString(PyExc_IOError,
- "memory allocation:Â can't malloc fdev structure");
+ "Can't get pin value");
return NULL;
}
- dev->port_letter = aPort_letter;
- dev->fdev = aFdev;
+ buf[0] = ret;
+ buf[1] = '\0';
+
+ return Py_BuildValue("s", buf);
- ret = as_gpio_close(dev);
+}
+
+/** @brief Close port access
+ *
+ * @param aFdev as_gpio_device structure pointer
+ *
+ * @return pin value if positive or null, error if negative
+ */
+static PyObject * gpio_close(PyObject *self, PyObject *args)
+{
+ /* parameters */
+ struct as_gpio_device *aFdev;
+
+ int ret;
+
+ /* Get arguments */
+ if (!PyArg_ParseTuple(args, "l", (long *)&aFdev))
+ {
+ PyErr_SetString(PyExc_IOError,
+ "Wrong parameters.");
+ return NULL;
+ }
+
+ ret = as_gpio_close(aFdev);
if (ret < 0)
{
PyErr_SetString(PyExc_IOError,
diff --git a/target/packages/as_devices/python/src/AsGpio_wrap.h b/target/packages/as_devices/python/src/AsGpio_wrap.h
index 10a910f..77c19c9 100644
--- a/target/packages/as_devices/python/src/AsGpio_wrap.h
+++ b/target/packages/as_devices/python/src/AsGpio_wrap.h
@@ -38,6 +38,7 @@ static PyObject * getPullupValue(PyObject *self, PyObject *args);
static PyObject * setPullupValue(PyObject *self, PyObject *args);
static PyObject * getIrqMode(PyObject *self, PyObject *args);
static PyObject * setIrqMode(PyObject *self, PyObject *args);
+static PyObject * getPinNumber(PyObject *self, PyObject *args);
+static PyObject * getPortLetter(PyObject *self, PyObject *args);
static PyObject * gpio_close(PyObject *self, PyObject *args);
-
hooks/post-receive
--
armadeus
|