aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGurjant Kalsi <me@gurjantkalsi.com>2016-04-18 17:03:04 -0700
committerGurjant Kalsi <me@gurjantkalsi.com>2016-04-18 17:03:04 -0700
commitce0a3db7052e7b33de14685ba7158a4ddf5bd9f5 (patch)
treec4a3194cc9ce99e124d5b7164305d455c0e176e5 /app
parent05c646a39a288294e3fedc68c704bf37f08f2db8 (diff)
downloadcommon-ce0a3db7052e7b33de14685ba7158a4ddf5bd9f5.tar.gz
[cdcserial][usb] Add a CDC-Serial USB Class Driver.
Diffstat (limited to 'app')
-rw-r--r--app/cdcserialtest/cdcserialtest.c57
-rw-r--r--app/cdcserialtest/rules.mk14
2 files changed, 71 insertions, 0 deletions
diff --git a/app/cdcserialtest/cdcserialtest.c b/app/cdcserialtest/cdcserialtest.c
new file mode 100644
index 00000000..98e52179
--- /dev/null
+++ b/app/cdcserialtest/cdcserialtest.c
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2016 Google Inc. All Rights Reserved.
+ * Author: gkalsi@google.com (Gurjant Kalsi)
+ *
+ * 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.
+ */
+
+#include <app.h>
+#include <err.h>
+#include <dev/usb/class/cdcserial.h>
+#include <kernel/thread.h>
+
+static uint8_t rxbuf[64];
+
+static void cdctest_init(const struct app_descriptor *app)
+{
+}
+
+// Read bytes from CDC Serial and write them back to the stream.
+static void cdctest_entry(const struct app_descriptor *app, void *args)
+{
+ while (true) {
+ ssize_t bytes = cdcserial_read(sizeof(rxbuf), rxbuf);
+ if (bytes == ERR_NOT_READY) {
+ // USB is not ready yet.
+ thread_sleep(100);
+ continue;
+ } else if (bytes < 0) {
+ printf("Error reading bytes from CDC Serial: %ld\n", bytes);
+ break;
+ }
+
+ cdcserial_write(bytes, rxbuf);
+ }
+}
+
+APP_START(usbtest)
+ .init = cdctest_init,
+ .entry = cdctest_entry,
+APP_END
diff --git a/app/cdcserialtest/rules.mk b/app/cdcserialtest/rules.mk
new file mode 100644
index 00000000..c66f9ca3
--- /dev/null
+++ b/app/cdcserialtest/rules.mk
@@ -0,0 +1,14 @@
+LOCAL_DIR := $(GET_LOCAL_DIR)
+
+MODULE := $(LOCAL_DIR)
+
+MODULE_DEPS += \
+ dev/usb \
+ dev/usb/class/cdcserial \
+
+
+MODULE_SRCS += \
+ $(LOCAL_DIR)/cdcserialtest.c \
+
+include make/module.mk
+