diff options
author | Gurjant Kalsi <me@gurjantkalsi.com> | 2016-04-18 17:03:04 -0700 |
---|---|---|
committer | Gurjant Kalsi <me@gurjantkalsi.com> | 2016-04-18 17:03:04 -0700 |
commit | ce0a3db7052e7b33de14685ba7158a4ddf5bd9f5 (patch) | |
tree | c4a3194cc9ce99e124d5b7164305d455c0e176e5 /app | |
parent | 05c646a39a288294e3fedc68c704bf37f08f2db8 (diff) | |
download | common-ce0a3db7052e7b33de14685ba7158a4ddf5bd9f5.tar.gz |
[cdcserial][usb] Add a CDC-Serial USB Class Driver.
Diffstat (limited to 'app')
-rw-r--r-- | app/cdcserialtest/cdcserialtest.c | 57 | ||||
-rw-r--r-- | app/cdcserialtest/rules.mk | 14 |
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 + |