From: Kumar Abhishek <abhis...@theembeddedkitchen.net> Signed-off-by: Kumar Abhishek <abhis...@theembeddedkitchen.net> --- Makefile.am | 6 ++ configure.ac | 10 +++ hardware/beaglelogic/api.c | 191 ++++++++++++++++++++++++++++++++++++++++ hardware/beaglelogic/protocol.c | 40 +++++++++ hardware/beaglelogic/protocol.h | 44 +++++++++ hwdriver.c | 9 ++ 6 files changed, 300 insertions(+) create mode 100644 hardware/beaglelogic/api.c create mode 100644 hardware/beaglelogic/protocol.c create mode 100644 hardware/beaglelogic/protocol.h
diff --git a/Makefile.am b/Makefile.am index dd6b706..1728810 100644 --- a/Makefile.am +++ b/Makefile.am @@ -123,6 +123,12 @@ libsigrok_la_SOURCES += \ hardware/atten-pps3xxx/protocol.c \ hardware/atten-pps3xxx/api.c endif +if HW_BEAGLELOGIC +libsigrok_la_SOURCES += \ + hardware/beaglelogic/protocol.h \ + hardware/beaglelogic/protocol.c \ + hardware/beaglelogic/api.c +endif if HW_BRYMEN_BM86X libsigrok_la_SOURCES += \ hardware/brymen-bm86x/protocol.h \ diff --git a/configure.ac b/configure.ac index fc06fcf..09376d8 100644 --- a/configure.ac +++ b/configure.ac @@ -105,6 +105,15 @@ AC_ARG_ENABLE(atten-pps3xxx, AC_HELP_STRING([--enable-atten-pps3xxx], [HW_ATTEN_PPS3XXX="$enableval"], [HW_ATTEN_PPS3XXX=$HW_ENABLED_DEFAULT]) +AC_ARG_ENABLE(beaglelogic, AC_HELP_STRING([--enable-beaglelogic], + [enable beaglelogic support [default=yes]]), + [HW_BEAGLELOGIC="$enableval"], + [HW_BEAGLELOGIC=$HW_ENABLED_DEFAULT]) +AM_CONDITIONAL(HW_BEAGLELOGIC, test x$HW_BEAGLELOGIC = xyes) +if test "x$HW_BEAGLELOGIC" = "xyes"; then + AC_DEFINE(HAVE_HW_BEAGLELOGIC, 1, [beaglelogic support]) +fi + AC_ARG_ENABLE(brymen-bm86x, AC_HELP_STRING([--enable-brymen-bm86x], [enable Brymen BM86X support [default=yes]]), [HW_BRYMEN_BM86X="$enableval"], @@ -681,6 +690,7 @@ echo " - agilent-dmm..................... $HW_AGILENT_DMM" echo " - appa-55ii....................... $HW_APPA_55II" echo " - asix-sigma...................... $HW_ASIX_SIGMA" echo " - atten-pps3xxx................... $HW_ATTEN_PPS3XXX" +echo " - beaglelogic..................... $HW_BEAGLELOGIC" echo " - brymen-bm86x.................... $HW_BRYMEN_BM86X" echo " - brymen-dmm...................... $HW_BRYMEN_DMM" echo " - cem-dt-885x..................... $HW_CEM_DT_885X" diff --git a/hardware/beaglelogic/api.c b/hardware/beaglelogic/api.c new file mode 100644 index 0000000..f2b528c --- /dev/null +++ b/hardware/beaglelogic/api.c @@ -0,0 +1,191 @@ +/* + * This file is part of the libsigrok project. + * + * Copyright (C) 2014 Kumar Abhishek <abhis...@theembeddedkitchen.net> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "protocol.h" + +SR_PRIV struct sr_dev_driver beaglelogic_driver_info; +static struct sr_dev_driver *di = &beaglelogic_driver_info; + +static int init(struct sr_context *sr_ctx) +{ + return std_init(sr_ctx, di, LOG_PREFIX); +} + +static GSList *scan(GSList *options) +{ + struct drv_context *drvc; + GSList *devices; + + (void)options; + + devices = NULL; + drvc = di->priv; + drvc->instances = NULL; + + /* TODO: scan for devices, either based on a SR_CONF_CONN option + * or on a USB scan. */ + + return devices; +} + +static GSList *dev_list(void) +{ + return ((struct drv_context *)(di->priv))->instances; +} + +static int dev_clear(void) +{ + return std_dev_clear(di, NULL); +} + +static int dev_open(struct sr_dev_inst *sdi) +{ + (void)sdi; + + /* TODO: get handle from sdi->conn and open it. */ + + sdi->status = SR_ST_ACTIVE; + + return SR_OK; +} + +static int dev_close(struct sr_dev_inst *sdi) +{ + (void)sdi; + + /* TODO: get handle from sdi->conn and close it. */ + + sdi->status = SR_ST_INACTIVE; + + return SR_OK; +} + +static int cleanup(void) +{ + dev_clear(); + + /* TODO: free other driver resources, if any. */ + + return SR_OK; +} + +static int config_get(int key, GVariant **data, const struct sr_dev_inst *sdi, + const struct sr_channel_group *cg) +{ + int ret; + + (void)sdi; + (void)data; + (void)cg; + + ret = SR_OK; + switch (key) { + /* TODO */ + default: + return SR_ERR_NA; + } + + return ret; +} + +static int config_set(int key, GVariant *data, const struct sr_dev_inst *sdi, + const struct sr_channel_group *cg) +{ + int ret; + + (void)data; + (void)cg; + + if (sdi->status != SR_ST_ACTIVE) + return SR_ERR_DEV_CLOSED; + + ret = SR_OK; + switch (key) { + /* TODO */ + default: + ret = SR_ERR_NA; + } + + return ret; +} + +static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi, + const struct sr_channel_group *cg) +{ + int ret; + + (void)sdi; + (void)data; + (void)cg; + + ret = SR_OK; + switch (key) { + /* TODO */ + default: + return SR_ERR_NA; + } + + return ret; +} + +static int dev_acquisition_start(const struct sr_dev_inst *sdi, + void *cb_data) +{ + (void)sdi; + (void)cb_data; + + if (sdi->status != SR_ST_ACTIVE) + return SR_ERR_DEV_CLOSED; + + /* TODO: configure hardware, reset acquisition state, set up + * callbacks and send header packet. */ + + return SR_OK; +} + +static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data) +{ + (void)cb_data; + + if (sdi->status != SR_ST_ACTIVE) + return SR_ERR_DEV_CLOSED; + + /* TODO: stop acquisition. */ + + return SR_OK; +} + +SR_PRIV struct sr_dev_driver beaglelogic_driver_info = { + .name = "beaglelogic", + .longname = "beaglelogic", + .api_version = 1, + .init = init, + .cleanup = cleanup, + .scan = scan, + .dev_list = dev_list, + .dev_clear = dev_clear, + .config_get = config_get, + .config_set = config_set, + .config_list = config_list, + .dev_open = dev_open, + .dev_close = dev_close, + .dev_acquisition_start = dev_acquisition_start, + .dev_acquisition_stop = dev_acquisition_stop, + .priv = NULL, +}; diff --git a/hardware/beaglelogic/protocol.c b/hardware/beaglelogic/protocol.c new file mode 100644 index 0000000..f765a95 --- /dev/null +++ b/hardware/beaglelogic/protocol.c @@ -0,0 +1,40 @@ +/* + * This file is part of the libsigrok project. + * + * Copyright (C) 2014 Kumar Abhishek <abhis...@theembeddedkitchen.net> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "protocol.h" + +SR_PRIV int beaglelogic_receive_data(int fd, int revents, void *cb_data) +{ + const struct sr_dev_inst *sdi; + struct dev_context *devc; + + (void)fd; + + if (!(sdi = cb_data)) + return TRUE; + + if (!(devc = sdi->priv)) + return TRUE; + + if (revents == G_IO_IN) { + /* TODO */ + } + + return TRUE; +} diff --git a/hardware/beaglelogic/protocol.h b/hardware/beaglelogic/protocol.h new file mode 100644 index 0000000..07d3bf2 --- /dev/null +++ b/hardware/beaglelogic/protocol.h @@ -0,0 +1,44 @@ +/* + * This file is part of the libsigrok project. + * + * Copyright (C) 2014 Kumar Abhishek <abhis...@theembeddedkitchen.net> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef LIBSIGROK_HARDWARE_BEAGLELOGIC_PROTOCOL_H +#define LIBSIGROK_HARDWARE_BEAGLELOGIC_PROTOCOL_H + +#include <stdint.h> +#include <glib.h> +#include "libsigrok.h" +#include "libsigrok-internal.h" + +#define LOG_PREFIX "beaglelogic" + +/** Private, per-device-instance driver context. */ +struct dev_context { + /* Model-specific information */ + + /* Acquisition settings */ + + /* Operational state */ + + /* Temporary state across callbacks */ + +}; + +SR_PRIV int beaglelogic_receive_data(int fd, int revents, void *cb_data); + +#endif diff --git a/hwdriver.c b/hwdriver.c index 6bfbfff..69e60e0 100644 --- a/hwdriver.c +++ b/hwdriver.c @@ -28,6 +28,9 @@ #include "libsigrok-internal.h" /** @cond PRIVATE */ +#ifdef HAVE_HW_BEAGLELOGIC +extern SR_PRIV struct sr_dev_driver beaglelogic_driver_info; +#endif #define LOG_PREFIX "hwdriver" /** @endcond */ @@ -132,6 +135,9 @@ extern SR_PRIV struct sr_dev_driver appa_55ii_driver_info; #ifdef HAVE_HW_ATTEN_PPS3XXX extern SR_PRIV struct sr_dev_driver atten_pps3203_driver_info; #endif +#ifdef HAVE_HW_BEAGLELOGIC +extern SR_PRIV struct sr_dev_driver beaglelogic_driver_info; +#endif #ifdef HAVE_HW_BRYMEN_BM86X extern SR_PRIV struct sr_dev_driver brymen_bm86x_driver_info; #endif @@ -294,6 +300,9 @@ static struct sr_dev_driver *drivers_list[] = { #ifdef HAVE_HW_ATTEN_PPS3XXX &atten_pps3203_driver_info, #endif +#ifdef HAVE_HW_BEAGLELOGIC + &beaglelogic_driver_info, +#endif #ifdef HAVE_HW_BRYMEN_BM86X &brymen_bm86x_driver_info, #endif -- 1.9.1 ------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel