summaryrefslogtreecommitdiff
path: root/Radio/HW/BladeRF/src/expansion/xb100.c
diff options
context:
space:
mode:
Diffstat (limited to 'Radio/HW/BladeRF/src/expansion/xb100.c')
-rw-r--r--Radio/HW/BladeRF/src/expansion/xb100.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/Radio/HW/BladeRF/src/expansion/xb100.c b/Radio/HW/BladeRF/src/expansion/xb100.c
new file mode 100644
index 0000000..b432616
--- /dev/null
+++ b/Radio/HW/BladeRF/src/expansion/xb100.c
@@ -0,0 +1,98 @@
+/*
+ * This file is part of the bladeRF project:
+ * http://www.github.com/nuand/bladeRF
+ *
+ * Copyright (C) 2014 Nuand LLC
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "xb100.h"
+
+#include "log.h"
+
+int xb100_attach(struct bladerf *dev)
+{
+ return 0;
+}
+
+void xb100_detach(struct bladerf *dev)
+{
+}
+
+int xb100_enable(struct bladerf *dev, bool enable)
+{
+ int status = 0;
+
+ const uint32_t mask =
+ BLADERF_XB100_LED_D1 |
+ BLADERF_XB100_LED_D2 |
+ BLADERF_XB100_LED_D3 |
+ BLADERF_XB100_LED_D4 |
+ BLADERF_XB100_LED_D5 |
+ BLADERF_XB100_LED_D6 |
+ BLADERF_XB100_LED_D7 |
+ BLADERF_XB100_LED_D8 |
+ BLADERF_XB100_TLED_RED |
+ BLADERF_XB100_TLED_GREEN |
+ BLADERF_XB100_TLED_BLUE;
+
+ const uint32_t outputs = mask;
+ const uint32_t default_values = mask;
+
+ if (enable) {
+ status = dev->backend->expansion_gpio_dir_write(dev, mask, outputs);
+ if (status == 0) {
+ status = dev->backend->expansion_gpio_write(dev, mask, default_values);
+ }
+ }
+
+ return status;
+}
+
+int xb100_init(struct bladerf *dev)
+{
+ return 0;
+}
+
+int xb100_gpio_read(struct bladerf *dev, uint32_t *val)
+{
+ return dev->backend->expansion_gpio_read(dev, val);
+}
+
+int xb100_gpio_write(struct bladerf *dev, uint32_t val)
+{
+ return dev->backend->expansion_gpio_write(dev, 0xffffffff, val);
+}
+
+int xb100_gpio_masked_write(struct bladerf *dev, uint32_t mask, uint32_t val)
+{
+ return dev->backend->expansion_gpio_write(dev, mask, val);
+}
+
+int xb100_gpio_dir_read(struct bladerf *dev, uint32_t *val)
+{
+ return dev->backend->expansion_gpio_dir_read(dev, val);
+}
+
+int xb100_gpio_dir_write(struct bladerf *dev, uint32_t val)
+{
+ return xb100_gpio_dir_masked_write(dev, 0xffffffff, val);
+}
+
+int xb100_gpio_dir_masked_write(struct bladerf *dev, uint32_t mask, uint32_t val)
+{
+ return dev->backend->expansion_gpio_dir_write(dev, mask, val);
+}