Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[USB] Replace NUM_INTERFACE define with a NUM_INTERFACE() function #766

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

forderud
Copy link

@forderud forderud commented Oct 4, 2024

This PR depends on #767 and #763 to be merged first.

Done to avoid the need for manually keeping NUM_INTERFACE in sync when experimenting with different USB device types with different number of interfaces. I can submit a PR that does the same also for NUM_ENDPOINTS if there's interest.

The function needs to be constexpr, since it's used to initialize USB configuration descriptors in PROGMEM.

Move the "core_pins.h" includes in usb.c and usb_seremu.c up to enable building the sources as C++ code. The "core_pins.h" include needs to be placed above the "usb_serial.h" and "usb_seremu.h" includes, since these headers contain C++ code that depends on functions in "core_pins.h".

Fixes the following compiler errors if renaming the sources in question from .c to .cpp:
In file included from teensy4\usb.cpp:5:
teensy4\usb_seremu.h: In member function 'void usb_seremu_class::begin(long int)':
teensy4\usb_seremu.h:68:41: error: 'systick_millis_count' was not declared in this scope
   68 |                 uint32_t millis_begin = systick_millis_count;
      |                                         ^~~~~~~~~~~~~~~~~~~~
teensy4\usb_seremu.h:79:25: error: 'yield' was not declared in this scope
   79 |                         yield();
      |                         ^~~~~
teensy4\usb_seremu.h: In member function 'usb_seremu_class::operator bool()':
teensy4\usb_seremu.h:102:27: error: 'yield' was not declared in this scope
  102 |         operator bool() { yield(); return usb_configuration && usb_seremu_online; }
      |                           ^~~~~
In file included from teensy4\usb_seremu.cpp:32:
teensy4\usb_seremu.h: In member function 'void usb_seremu_class::begin(long int)':
teensy4\usb_seremu.h:68:41: error: 'systick_millis_count' was not declared in this scope
   68 |                 uint32_t millis_begin = systick_millis_count;
      |                                         ^~~~~~~~~~~~~~~~~~~~
teensy4\usb_seremu.h:79:25: error: 'yield' was not declared in this scope
   79 |                         yield();
      |                         ^~~~~
teensy4\usb_seremu.h: In member function 'usb_seremu_class::operator bool()':
teensy4\usb_seremu.h:102:27: error: 'yield' was not declared in this scope
  102 |         operator bool() { yield(); return usb_configuration && usb_seremu_online; }
      |                           ^~~~~
Done to avoid the need for manually keeping NUM_INTERFACE in sync when experimenting with different USB device types with different number of interfaces.

The function needs to be constexpr, since it's used to initialize USB configuration descriptors in PROGMEM.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant