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

Rename USB sources from .c to .cpp to enable C++ features #763

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

Conversation

forderud
Copy link

@forderud forderud commented Sep 23, 2024

Follow-up to #767. That renames the USB source file extension from .c to .cpp so that they're compiled as C++ code. Needed to add some extern "C" a few places to resolve linker errors.

Motivation

I want to improve compatibility with C++11 (and newer), so that I can use constexpr in USB-related code as proposed in #766.

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; }
      |                           ^~~~~
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