Browse Source

Convert to Arduino library format

main
PaulStoffregen 7 years ago
parent
commit
6bacbaf537
5 changed files with 101 additions and 124 deletions
  1. +3
    -0
      USBHost_t36.h
  2. +78
    -0
      examples/Test/Test.ino
  3. +0
    -124
      k66_usbhost.ino
  4. +10
    -0
      keywords.txt
  5. +10
    -0
      library.properties

+ 3
- 0
USBHost_t36.h View File

@@ -26,6 +26,9 @@

#include <stdint.h>

#if !defined(__MK66FX1M0__)
#error "USBHost_t36 only works with Teensy 3.6. Please select it in Tools > Boards"
#endif

// Dear inquisitive reader, USB is a complex protocol defined with
// very specific terminology. To have any chance of understand this

+ 78
- 0
examples/Test/Test.ino View File

@@ -0,0 +1,78 @@
// Simple test of USB Host
//
// This example is in the public domain

#include "USBHost_t36.h"

USBHost myusb;
USBHub hub1(myusb);
USBHub hub2(myusb);
USBHub hub3(myusb);
KeyboardController keyboard1(myusb);
KeyboardController keyboard2(myusb);
MIDIDevice midi1(myusb);

void setup()
{
while (!Serial) ; // wait for Arduino Serial Monitor
Serial.println("USB Host Testing");
myusb.begin();
keyboard1.attachPress(press);
keyboard2.attachPress(press);
midi1.setHandleNoteOff(OnNoteOff);
midi1.setHandleNoteOn(OnNoteOn);
midi1.setHandleControlChange(OnControlChange);
}


void loop()
{
myusb.Task();
midi1.read();
}


void press(int key)
{
Serial.print("key ");
Serial.println(key);
//Serial.print("key ");
//Serial.print((char)keyboard1.getKey());
//Serial.print(" ");
//Serial.print((char)keyboard2.getKey());
//Serial.println();
}

void OnNoteOn(byte channel, byte note, byte velocity)
{
Serial.print("Note On, ch=");
Serial.print(channel);
Serial.print(", note=");
Serial.print(note);
Serial.print(", velocity=");
Serial.print(velocity);
Serial.println();
}

void OnNoteOff(byte channel, byte note, byte velocity)
{
Serial.print("Note Off, ch=");
Serial.print(channel);
Serial.print(", note=");
Serial.print(note);
//Serial.print(", velocity=");
//Serial.print(velocity);
Serial.println();
}

void OnControlChange(byte channel, byte control, byte value)
{
Serial.print("Control Change, ch=");
Serial.print(channel);
Serial.print(", control=");
Serial.print(control);
Serial.print(", value=");
Serial.print(value);
Serial.println();
}


+ 0
- 124
k66_usbhost.ino View File

@@ -1,124 +0,0 @@
/* USB EHCI Host for Teensy 3.6
* Copyright 2017 Paul Stoffregen (paul@pjrc.com)
*
* 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 "USBHost_t36.h"

USBHost myusb;
USBHub hub1(myusb);
USBHub hub2(myusb);
USBHub hub3(myusb);
KeyboardController keyboard1(myusb);
KeyboardController keyboard2(myusb);
MIDIDevice midi1(myusb);

void setup()
{
// Test board has a USB data mux (this won't be on final Teensy 3.6)
pinMode(32, OUTPUT); // pin 32 = USB switch, high=connect device
digitalWrite(32, LOW);
pinMode(30, OUTPUT); // pin 30 = debug info - use oscilloscope
digitalWrite(30, LOW);

while (!Serial) ; // wait for Arduino Serial Monitor
Serial.println("USB Host Testing");

myusb.begin();

delay(25);
Serial.println("Plug in device...");
digitalWrite(32, HIGH); // connect device

#if 0
delay(5000);
Serial.println();
Serial.println("Ring Doorbell");
USBHS_USBCMD |= USBHS_USBCMD_IAA;
if (rootdev) print(rootdev->control_pipe);
#endif
keyboard1.attachPress(press);
keyboard2.attachPress(press);
midi1.setHandleNoteOff(OnNoteOff);
midi1.setHandleNoteOn(OnNoteOn);
midi1.setHandleControlChange(OnControlChange);
}


void loop()
{
myusb.Task();
midi1.read();
}


void pulse(int usec)
{
// connect oscilloscope to see these pulses....
digitalWriteFast(30, HIGH);
delayMicroseconds(usec);
digitalWriteFast(30, LOW);
}

void press(int key)
{
Serial.print("key ");
Serial.println(key);
//Serial.print("key ");
//Serial.print((char)keyboard1.getKey());
//Serial.print(" ");
//Serial.print((char)keyboard2.getKey());
//Serial.println();
}

void OnNoteOn(byte channel, byte note, byte velocity)
{
Serial.print("Note On, ch=");
Serial.print(channel);
Serial.print(", note=");
Serial.print(note);
Serial.print(", velocity=");
Serial.print(velocity);
Serial.println();
}

void OnNoteOff(byte channel, byte note, byte velocity)
{
Serial.print("Note Off, ch=");
Serial.print(channel);
Serial.print(", note=");
Serial.print(note);
//Serial.print(", velocity=");
//Serial.print(velocity);
Serial.println();
}

void OnControlChange(byte channel, byte control, byte value)
{
Serial.print("Control Change, ch=");
Serial.print(channel);
Serial.print(", control=");
Serial.print(control);
Serial.print(", value=");
Serial.print(value);
Serial.println();
}


+ 10
- 0
keywords.txt View File

@@ -0,0 +1,10 @@
USBHost KEYWORD1
USBHub KEYWORD1
KeyboardController KEYWORD1
MIDIDevice KEYWORD1
Task KEYWORD2
getKey KEYWORD2
getModifiers KEYWORD2
getOemKey KEYWORD2
attachPress KEYWORD2
attachRelease KEYWORD2

+ 10
- 0
library.properties View File

@@ -0,0 +1,10 @@
name=USBHost_t36
version=0.1
author=Paul Stoffregen
maintainer=Paul Stoffregen
sentence=Connect USB devices to the USB Host of Teensy 3.6.
paragraph=
category=Communication
url=https://github.com/PaulStoffregen/USBHost_t36
architectures=*


Loading…
Cancel
Save