david2
January 22, 2021, 11:10pm
1
Trying to get Tinyusb package working on a seeded femtin platform.io/vs code
Works fine on arduino ide, but cannot compile package in vscode, loads of errors but first is
{
"resource": "/c:/icotest/Adaptors/SeedFemto/usb intterface seeed femto/.pio/libdeps/seeed_femto/Adafruit TinyUSB Library/src/Adafruit_USBD_HID.cpp",
"owner": "cpp",
"severity": 8,
"message": "'HID_PROTOCOL_NONE' was not declared in this scope",
"startLineNumber": 37,
"startColumn": 15,
"endLineNumber": 37,
"endColumn": 15
}
bit stuck on this, no sign of this in package files, googling finds it but these files are not pulled down
https://github.com/platformio/platformio-pkg-framework-arduinosam/blob/master/cores/adafruit/Adafruit_TinyUSB_Core/tinyusb/src/class/hid/hid.h
any ideas?
david
I assume you mean a Seeed Femto here.
You’re linking to the Adafruit TinyUSB library here. The Arduino core that that board is using is defined as…
which maps to
"framework-arduino-samd-seeed": {
"type": "framework",
"optional": true,
"owner": "platformio",
"version": "~1.7.6"
},
which maps to GitHub - Seeed-Studio/ArduinoCore-samd .
It already includes the TinyUSB library, see https://github.com/Seeed-Studio/ArduinoCore-samd/tree/master/cores/arduino/TinyUSB .
The builder code automatically builds it, too.
if VENDOR_CORE in ("seeed", "adafruit", "moteino"):
env.Append(
CPPDEFINES=[
("USB_CONFIG_POWER", board.get("build.usb_power", 100))
],
CCFLAGS=[
"-Wno-expansion-to-defined"
],
CPPPATH=[
os.path.join(FRAMEWORK_DIR, "cores", BUILD_CORE, "TinyUSB"),
os.path.join(FRAMEWORK_DIR, "cores", BUILD_CORE, "TinyUSB",
"Adafruit_TinyUSB_ArduinoCore"),
os.path.join(FRAMEWORK_DIR, "cores", BUILD_CORE, "TinyUSB",
"Adafruit_TinyUSB_ArduinoCore", "tinyusb", "src")
]
)
So, there’s no need to externally add it. Adding it via lib_deps
is wrong, and I can see you did it that because
contains .pio/libdeps
in the path.
I can do a minimal project with a library on top of TinyUSB like
#include <Arduino.h>
#include <KeyboardController.h>
USBHost usb;
KeyboardController keyboard(usb);
void setup() {
if (usb.Init() == -1)
Serial.println("USB Host did not start.");
}
void loop() {
usb.Task();
}
[env:seeed_femto]
platform = atmelsam
board = seeed_femto
framework = arduino
and it compiles.
Checking size .pio\build\seeed_femto\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 9.5% (used 3120 bytes from 32768 bytes)
Flash: [= ] 6.5% (used 17120 bytes from 262144 bytes)
============================= [SUCCESS] Took 5.43 seconds =============================
So with what exact code + platformio.ini are you running in what exact problem?
1 Like
Correction: There seem to be two USB stacks in the core, one is TinyUSB
and the other folder is just called USB
. The TinyUSB source code files are all surrounded by #ifdef USE_TINYUSB
.
So in order to use that, you need to add build_flags = -DUSE_TINYUSB
in the platformio.ini
. But then you can’t directly use the e.g. USBHost
library because it errors out since it seems to be written for the other USB core. So, it really depends on just what USB functionality you want to implement.
E.g. it also has a HID library and object that you can use to send HID reports, etc.
2 Likes
david2
January 23, 2021, 6:46am
4
Max,
Thanks for your detailed response, helps me see how these work!
build_flags = -DUSE_TINYUSB
Was the trick, compiled first time, I have taken the lib deps out as well.
Now I need to make my code work!
David
1 Like
david2
January 23, 2021, 8:04am
5
And yes meant Seeed Femto, not sure what happened there, my typing is probably the cause…
David