Lightweight C++ callbacks

luni said:
Yes, I this might be a good idea. Probably the wiki would be a good idea to collect those examples?

Been trying to follow along with the use cases for inplace_function, especially from a c++ novice point of view. Back on pages 1 and 2 of this thread @Paul and yourself posted several examples (post 1 basically and post 4 using a different delegate library) that gave simple examples for each case and relatively easy to understand whats going on - hate to say it but Arduino Like:
1. Normal
2. member functions
3. lamdas

Was just getting use to how delegates work. PS. there are also examples on-line for delegates, couldn't really find any for inplace_function's yet. Would really be good if you or Paul could find the time to put something together to help.

Thanks Mike
 
Last edited:
Here's an example adapted from Luni's tests

Code:
IntervalTimer timer[4];

void setup() {
  Serial.begin(9600);
  Serial.print("sizeof = ");
  Serial.println(sizeof(IntervalTimer::callback));
    // capturing lambda
    for (int i = 0; i < 4; i++) {
        timer[i].begin([COLOR="#FF0000"][i]{
          Serial.printf("onTimer (channel:%d)\n", i);
        }[/COLOR], 1000000*(i+1));
    }
}

void loop() {
}

The lambda part is shown in red. Hopefully you can see it captures the value of local variable "i", because "i" is in the [ ] square brackets list. When the timer actually triggers, it runs the lambda function. Even though setup() has long since completed and loop() is running over and over, the value of "i" that existed at the time when the lambda function was assigned to IntervalTimer gets used.

This is just a trivial example. We will need more useful examples over time, but this something quick and easy to show right now.
 
couldn't really find any for inplace_function's yet

inplace_function is just a name for one specific implementation of a std::function replacement which doesnt allocate memory on the heap. So, you won't find much if you search for inplace_function. You'd need to search for std::function for usages, but most stuff you will find is quite advanced.

Some time ago I wrote this: https://github.com/TeensyUser/doc/wiki/callbacks which might be interesting. For the TimerTool I wrote this: https://github.com/luni64/TeensyTimerTool/wiki/Callbacks all of this should work with the new intervalTimer as well.

Hope that helps
 
Sorry, I know I may not be in the best mode to write this (very sick dog)

But I personally keep wondering, what does this buy me and what does this cost me?

I was afraid that this That is, the updates to IntervalTimer code, I believe breaks all existing code that has been using the IntervalTimer code for maybe the last five years.

As this simple sketch does not compile for T3.6
Code:
void blink_function()
{
  digitalToggleFast(13);
}

IntervalTimer it;
void setup() {
  pinMode(13, OUTPUT);
  it.begin(&blink_function, 500000);
}

void loop() {
}
Code:
C:\arduino-1.8.19\arduino-builder -dump-prefs -logger=machine -hardware C:\arduino-1.8.19\hardware -tools C:\arduino-1.8.19\tools-builder -tools C:\arduino-1.8.19\hardware\tools\avr -built-in-libraries C:\arduino-1.8.19\libraries -libraries C:\Users\kurte\Documents\Arduino\libraries -fqbn=teensy:avr:teensy36:usb=serial,speed=180,opt=o2std,keys=en-us -ide-version=10819 -build-path C:\Users\kurte\AppData\Local\Temp\arduino_build_523025 -warnings=all -build-cache C:\Users\kurte\AppData\Local\Temp\arduino_cache_606572 -verbose C:\Users\kurte\Documents\Arduino\zzz\zzz.ino
C:\arduino-1.8.19\arduino-builder -compile -logger=machine -hardware C:\arduino-1.8.19\hardware -tools C:\arduino-1.8.19\tools-builder -tools C:\arduino-1.8.19\hardware\tools\avr -built-in-libraries C:\arduino-1.8.19\libraries -libraries C:\Users\kurte\Documents\Arduino\libraries -fqbn=teensy:avr:teensy36:usb=serial,speed=180,opt=o2std,keys=en-us -ide-version=10819 -build-path C:\Users\kurte\AppData\Local\Temp\arduino_build_523025 -warnings=all -build-cache C:\Users\kurte\AppData\Local\Temp\arduino_cache_606572 -verbose C:\Users\kurte\Documents\Arduino\zzz\zzz.ino
Using board 'teensy36' from platform in folder: C:\arduino-1.8.19\hardware\teensy\avr
Using core 'teensy3' from platform in folder: C:\arduino-1.8.19\hardware\teensy\avr
Detecting libraries used...
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\sketch\\zzz.ino.cpp" -o nul
Generating function prototypes...
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -E -CC -x c++ -w -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\sketch\\zzz.ino.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\arduino-1.8.19\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/precompile_helper" "C:\\arduino-1.8.19\\hardware\\teensy\\avr/cores/teensy3" "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025" "C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -x c++-header -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr/cores/teensy3" "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch/Arduino.h" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch/Arduino.h.gch"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\sketch\\zzz.ino.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\sketch\\zzz.ino.cpp.o"
Compiling libraries...
Compiling core...
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -x assembler-with-cpp -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\memcpy-armv7m.S" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\memcpy-armv7m.S.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -x assembler-with-cpp -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\memset.S" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\memset.S.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\keylayouts.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\keylayouts.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial4.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial4.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\ser_print.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\ser_print.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\nonstd.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\nonstd.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\analog.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\analog.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial2.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial2.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_joystick.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_joystick.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_desc.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_desc.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial1.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial1.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\pins_teensy.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\pins_teensy.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial3.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial3.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial6.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial6.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial6_lpuart.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial6_lpuart.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\math_helper.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\math_helper.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\eeprom.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\eeprom.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serial5.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serial5.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_dev.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_dev.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_keyboard.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_keyboard.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\touch.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\touch.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\mk20dx128.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\mk20dx128.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_mem.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_mem.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_midi.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_midi.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_mouse.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_mouse.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_mtp.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_mtp.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_rawhid.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_rawhid.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_seremu.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_seremu.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_serial.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_serial.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_serial2.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_serial2.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_serial3.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_serial3.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-gcc" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_touch.c" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_touch.c.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\IntervalTimer.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\IntervalTimer.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\WMath.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\WMath.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\WString.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\WString.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\Time.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\Time.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\AudioStream.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\AudioStream.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\DMAChannel.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\DMAChannel.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\EventResponder.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\EventResponder.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\avr_emulation.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\avr_emulation.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\IPAddress.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\IPAddress.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\Stream.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\Stream.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\Tone.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\Tone.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial3.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial3.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial1.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial1.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\CrashReport.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\CrashReport.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial4.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial4.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\Print.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\Print.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial5.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial5.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial2.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial2.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\HardwareSerial6.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\HardwareSerial6.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\main.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\main.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\new.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\new.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent1.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent1.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent2.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent2.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent3.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent3.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent4.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent4.cpp.o"
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent5.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent5.cpp.o"
In file included from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:35,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:31:
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:46:18: error: 'size_t' does not name a type
   46 | static constexpr size_t InplaceFunctionDefaultCapacity = 8;
      |                  ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:37:1: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
   36 | #include <functional>
  +++ |+#include <cstddef>
   37 | 
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:52:10: error: 'size_t' has not been declared
   52 | template<size_t Cap>
      |          ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:56:57: error: 'Cap' was not declared in this scope
   56 |     template<class T> using maybe = std::conditional_t<(Cap >= sizeof(T)), T, char>;
      |                                                         ^~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:56:83: error: template argument 1 is invalid
   56 |     template<class T> using maybe = std::conditional_t<(Cap >= sizeof(T)), T, char>;
      |                                                                                   ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:57:20: error: 'Cap' was not declared in this scope
   57 |     char real_data[Cap];
      |                    ^~~
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEvent6.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEvent6.cpp.o"C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:58:5: error: 'maybe' does not name a type

   58 |     maybe<int> a;
      |     ^~~~~
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEventUSB1.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEventUSB1.cpp.o"
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:59:5: error: 'maybe' does not name a type
   59 |     maybe<long> b;
      |     ^~~~~
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\serialEventUSB2.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\serialEventUSB2.cpp.o"
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:60:5: error: 'maybe' does not name a type
   60 |     maybe<long long> c;
      |     ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:61:5: error: 'maybe' does not name a type
   61 |     maybe<void*> d;
      |     ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:62:5: error: 'maybe' does not name a type
   62 |     maybe<void(*)()> e;
      |     ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:63:5: error: 'maybe' does not name a type
   63 |     maybe<double1> f;
      |     ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:64:5: error: 'maybe' does not name a type
   64 |     maybe<double4> g;
      |     ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:65:5: error: 'maybe' does not name a type
   65 |     maybe<long double> h;
      |     ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:68:10: error: 'size_t' has not been declared
   68 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |          ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:68:22: error: 'size_t' has not been declared
   68 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |                      ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:68:68: error: 'Cap' was not declared in this scope
   68 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |                                                                    ^~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:68:71: error: template argument 1 is invalid
   68 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |                                                                       ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:70:41: error: 'Cap' was not declared in this scope
   70 |     using type = std::aligned_storage_t<Cap, Align>;
      |                                         ^~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:70:46: error: 'Align' was not declared in this scope
   70 |     using type = std::aligned_storage_t<Cap, Align>;
      |                                              ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:70:51: error: template argument 1 is invalid
   70 |     using type = std::aligned_storage_t<Cap, Align>;
      |                                                   ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:70:51: error: template argument 2 is invalid
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:73:10: error: 'size_t' has not been declared
   73 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |          ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:73:22: error: 'size_t' has not been declared
   73 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |                      ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:73:68: error: 'Cap' was not declared in this scope
   73 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |                                                                    ^~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:73:71: error: template argument 1 is invalid
   73 | template<size_t Cap, size_t Align = alignof(aligned_storage_helper<Cap>)>
      |                                                                       ^
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_audio.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_audio.cpp.o"
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:74:52: error: 'Cap' was not declared in this scope
   74 | using aligned_storage_t = typename aligned_storage<Cap, Align>::type;
      |                                                    ^~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:74:57: error: 'Align' was not declared in this scope
   74 | using aligned_storage_t = typename aligned_storage<Cap, Align>::type;
      |                                                         ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:74:62: error: template argument 1 is invalid
   74 | using aligned_storage_t = typename aligned_storage<Cap, Align>::type;
      |                                                              ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:74:62: error: template argument 2 is invalid"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_flightsim.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_flightsim.cpp.o"

C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:75:22: error: 'aligned_storage_t' was not declared in this scope; did you mean 'std::aligned_storage_t'?
   75 | static_assert(sizeof(aligned_storage_t<sizeof(void*)>) == sizeof(void*), "A");
      |                      ^~~~~~~~~~~~~~~~~
      |                      std::aligned_storage_t
In file included from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:34,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:35,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:31:
c:\arduino-1.8.19\hardware\tools\arm\arm-none-eabi\include\c++\11.3.1\type_traits:2574:11: note: 'std::aligned_storage_t' declared here
 2574 |     using aligned_storage_t = typename aligned_storage<_Len, _Align>::type;
      |           ^~~~~~~~~~~~~~~~~
In file included from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:35,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:31:
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:75:54: error: expected primary-expression before ')' token
   75 | static_assert(sizeof(aligned_storage_t<sizeof(void*)>) == sizeof(void*), "A");
      |                                                      ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:76:23: error: 'aligned_storage_t' was not declared in this scope; did you mean 'std::aligned_storage_t'?
   76 | static_assert(alignof(aligned_storage_t<sizeof(void*)>) == alignof(void*), "B");
      |                       ^~~~~~~~~~~~~~~~~
      |                       std::aligned_storage_t
In file included from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:34,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:35,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:31:
c:\arduino-1.8.19\hardware\tools\arm\arm-none-eabi\include\c++\11.3.1\type_traits:2574:11: note: 'std::aligned_storage_t' declared here
 2574 |     using aligned_storage_t = typename aligned_storage<_Len, _Align>::type;
      |           ^~~~~~~~~~~~~~~~~
In file included from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:35,
                 from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:31:
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:76:55: error: expected primary-expression before ')' token
   76 | static_assert(alignof(aligned_storage_t<sizeof(void*)>) == alignof(void*), "B");
      |                                                       ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:146:10: error: 'size_t' has not been declared
  146 | template<size_t DstCap, size_t DstAlign, size_t SrcCap, size_t SrcAlign>
      |          ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:146:25: error: 'size_t' has not been declared
  146 | template<size_t DstCap, size_t DstAlign, size_t SrcCap, size_t SrcAlign>
      |                         ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:146:42: error: 'size_t' has not been declared
  146 | template<size_t DstCap, size_t DstAlign, size_t SrcCap, size_t SrcAlign>
      |                                          ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:146:57: error: 'size_t' has not been declared
  146 | template<size_t DstCap, size_t DstAlign, size_t SrcCap, size_t SrcAlign>
      |                                                         ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:149:19: error: 'DstCap' was not declared in this scope
  149 |     static_assert(DstCap >= SrcCap,
      |                   ^~~~~~
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\usb_inst.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\usb_inst.cpp.o"
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:149:29: error: 'SrcCap' was not declared in this scope
  149 |     static_assert(DstCap >= SrcCap,
      |                             ^~~~~~
"C:\\arduino-1.8.19\\hardware\\teensy/../tools/arm/bin/arm-none-eabi-g++" -c -O2 -g -Wall -ffunction-sections -fdata-sections -nostdlib -mno-unaligned-access -MMD -fno-exceptions -fpermissive -felide-constructors -std=gnu++14 -Wno-error=narrowing -fno-rtti -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -D__MK66FX1M0__ -DTEENSYDUINO=158 -DARDUINO=10819 -DARDUINO_TEENSY36 -DF_CPU=180000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH "-IC:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025/pch" "-IC:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3" "C:\\arduino-1.8.19\\hardware\\teensy\\avr\\cores\\teensy3\\yield.cpp" -o "C:\\Users\\kurte\\AppData\\Local\\Temp\\arduino_build_523025\\core\\yield.cpp.o"
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:153:19: error: 'DstAlign' was not declared in this scope
  153 |     static_assert(DstAlign % SrcAlign == 0,
      |                   ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:153:30: error: 'SrcAlign' was not declared in this scope
  153 |     static_assert(DstAlign % SrcAlign == 0,
      |                              ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:195:5: error: 'size_t' has not been declared
  195 |     size_t Capacity = inplace_function_detail::InplaceFunctionDefaultCapacity,
      |     ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:195:48: error: 'InplaceFunctionDefaultCapacity' is not a member of 'stdext::inplace_function_detail'
  195 |     size_t Capacity = inplace_function_detail::InplaceFunctionDefaultCapacity,
      |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:196:5: error: 'size_t' has not been declared
  196 |     size_t Alignment = alignof(inplace_function_detail::aligned_storage_t<Capacity>)
      |     ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:196:57: error: 'aligned_storage_t' is not a member of 'stdext::inplace_function_detail'; did you mean 'aligned_storage'?
  196 |     size_t Alignment = alignof(inplace_function_detail::aligned_storage_t<Capacity>)
      |                                                         ^~~~~~~~~~~~~~~~~
      |                                                         aligned_storage
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:196:75: error: 'Capacity' was not declared in this scope
  196 |     size_t Alignment = alignof(inplace_function_detail::aligned_storage_t<Capacity>)
      |                                                                           ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:196:84: error: expected primary-expression before ')' token
  196 |     size_t Alignment = alignof(inplace_function_detail::aligned_storage_t<Capacity>)
      |                                                                                    ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:202:25: error: 'size_t' has not been declared
  202 |     template<class Sig, size_t Cap, size_t Align>
      |                         ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:202:37: error: 'size_t' has not been declared
  202 |     template<class Sig, size_t Cap, size_t Align>
      |                                     ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:203:54: error: 'Cap' was not declared in this scope
  203 |     struct is_inplace_function<inplace_function<Sig, Cap, Align>> : std::true_type {};
      |                                                      ^~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:203:59: error: 'Align' was not declared in this scope
  203 |     struct is_inplace_function<inplace_function<Sig, Cap, Align>> : std::true_type {};
      |                                                           ^~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:203:59: error: template argument 2 is invalid
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:203:59: error: template argument 3 is invalid
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:203:64: error: template argument 1 is invalid
  203 |     struct is_inplace_function<inplace_function<Sig, Cap, Align>> : std::true_type {};
      |                                                                ^~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:209:5: error: 'size_t' has not been declared
  209 |     size_t Capacity,
      |     ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:210:5: error: 'size_t' has not been declared
  210 |     size_t Alignment
      |     ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:212:36: error: 'Capacity' was not declared in this scope
  212 | class inplace_function<R(Args...), Capacity, Alignment>
      |                                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:212:46: error: 'Alignment' was not declared in this scope
  212 | class inplace_function<R(Args...), Capacity, Alignment>
      |                                              ^~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:212:55: error: template argument 2 is invalid
  212 | class inplace_function<R(Args...), Capacity, Alignment>
      |                                                       ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\inplace_function.h:212:55: error: template argument 3 is invalid
In file included from C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:31:
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:52:65: error: template argument 3 is invalid
   52 |         using callback = stdext::inplace_function<void(void), 16>;
      |                                                                 ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:53:20: error: 'callback' has not been declared
   53 |         bool begin(callback funct, unsigned int microseconds) {
      |                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:59:20: error: 'callback' has not been declared
   59 |         bool begin(callback funct, int microseconds) {
      |                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:63:20: error: 'callback' has not been declared
   63 |         bool begin(callback funct, unsigned long microseconds) {
      |                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:66:20: error: 'callback' has not been declared
   66 |         bool begin(callback funct, long microseconds) {
      |                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:69:20: error: 'callback' has not been declared
   69 |         bool begin(callback funct, float microseconds) {
      |                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:75:20: error: 'callback' has not been declared
   75 |         bool begin(callback funct, double microseconds) {
      |                    ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.h:140:26: error: 'callback' has not been declared
  140 |         bool beginCycles(callback funct, uint32_t cycles);
      |                          ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:37:23: error: 'callback' in 'class IntervalTimer' does not name a type
   37 | static IntervalTimer::callback funct_table[4] = {dummy_funct, dummy_funct, dummy_funct, dummy_funct};
      |                       ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:46:6: error: 'bool IntervalTimer::beginCycles' is not a static data member of 'class IntervalTimer'
   46 | bool IntervalTimer::beginCycles(callback funct, uint32_t cycles)
      |      ^~~~~~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:46:33: error: 'callback' was not declared in this scope
   46 | bool IntervalTimer::beginCycles(callback funct, uint32_t cycles)
      |                                 ^~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:46:58: error: expected primary-expression before 'cycles'
   46 | bool IntervalTimer::beginCycles(callback funct, uint32_t cycles)
      |                                                          ^~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:46:64: warning: expression list treated as compound expression in initializer [-fpermissive]
   46 | bool IntervalTimer::beginCycles(callback funct, uint32_t cycles)
      |                                                                ^
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp: In member function 'void IntervalTimer::end()':
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:92:17: error: 'funct_table' was not declared in this scope
   92 |                 funct_table[index] = dummy_funct;
      |                 ^~~~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp: In function 'void pit0_isr()':
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:115:9: error: 'funct_table' was not declared in this scope
  115 |         funct_table[0]();
      |         ^~~~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp: In function 'void pit1_isr()':
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:120:9: error: 'funct_table' was not declared in this scope
  120 |         funct_table[1]();
      |         ^~~~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp: In function 'void pit2_isr()':
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:125:9: error: 'funct_table' was not declared in this scope
  125 |         funct_table[2]();
      |         ^~~~~~~~~~~
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp: In function 'void pit3_isr()':
C:\arduino-1.8.19\hardware\teensy\avr\cores\teensy3\IntervalTimer.cpp:130:9: error: 'funct_table' was not declared in this scope
  130 |         funct_table[3]();
      |         ^~~~~~~~~~~
Error compiling for board Teensy 3.6.
But then I found it does compile for T4.x

But I am still hoping to not have to use new c++ magic sauce to do simple recognizable things. But maybe that is just me.
 
Wow, isnt finding bugs the very reason to publish a beta version?

@Paul, for some reason the T3 core misses an include of <cstddef> or if you prefer <stddef.h> before including inplace_function.h. If I add #include <cstddef> at top of inplace_header.h it works for the T3 core as well.
 
Wow, isnt finding bugs the very reason to publish a beta version?

@Paul, for some reason the T3 core misses an include of <cstddef> or if you prefer <stddef.h> before including inplace_function.h. If I add #include <cstddef> at top of inplace_header.h it works for the T3 core as well.

Yes - and sorry - As I mentioned, I am distracted and probably not in the best or patient moods.

And note, not even beta, so yes expect bugs. And as such posted both code and compiler output.

And wanted to verify that, existing code, is expected to continue and run with these changes.

Sometimes, some of us who have used C++ since the 80s or 90s may not necessarily want to switch to some of the newer stuff. But then again it may just be me.
 
As this simple sketch does not compile for T3.6

Compiles without error when I try. Also works fine when I upload it to a Teensy 3.6.

screenshot.png


Wow, isnt finding bugs the very reason to publish a beta version?

Technically not even a beta version at this point, just commits on github.

Soon I'll package up 1.59-beta2 so everyone can get all the files installed easily.
 
Definitely doesn't compile here (VisualTeensy) with the same error messages as Kurt sees. Try to clone the core to an IDE installation now to see if this makes a difference...
 
PaulStoffregen said:
This is just a trivial example. We will need more useful examples over time, but this something quick and easy to show right now.
Thanks Paul and that makes sense based on previous examples.

luni said:
inplace_function is just a name for one specific implementation of a std::function replacement which doesn't allocate memory on the heap. So, you won't find much if you search for inplace_function. You'd need to search for std::function for usages, but most stuff you will find is quite advanced.
Ok that makes much more sense now. That first link is great by the way.

A while ago I was looking at this https://dzone.com/articles/all-abou...unctions. ... 6 Constexpr Lambda Expression. for lamda's
 
But I personally keep wondering, what does this buy me and what does this cost me?

The cost is 12 or 16 or 24 bytes of RAM, compared to only 4 bytes for a plain C function pointer or 8 bytes for a function pointer and a context pointer. Those bytes can add up for a big table of callbacks, like attachInterrupt(). But for the more common case where you have just 1 or only a few callbacks, like when an I/O operation completes, it's really not very expensive.

The benefit is ability to use all (or most) of the callable C++ stuff that's more complex than just a plain C function pointer.

We can and will talk about how those things are valuable for Teensy and Arduino. But for right now, here's a page with some explanation. Scroll down to "Variable Capture with Lambdas".

https://www.cprogramming.com/c++11/c++11-lambda-closures.html

If you don't wish to use lambdas, you certainly can just ignore them, or just use the simplest case to be able to have a callback run the member functions in a particular instance of some class. That's something really valuable you don't get with an ordinary function pointer, which can only call static member functions that don't have access to the instance-specific variables in a class. With this, you can call ordinary functions when I/O completes, or you could have a callback run a function on a specific instance of a HID keyboard when some other I/O completes.


Sometimes, some of us who have used C++ since the 80s or 90s may not necessarily want to switch to some of the newer stuff. But then again it may just be me.

It's not just you! I have also felt this way many times. I'm really an analog circuits guy who uses C to really just program in assembly without obsessive compulsive micro-managing what's stored in each CPU register. All this fancy C++ syntax seems really foreign to me.

It's part of the reason I've dragged my feet on this for so long... like over a year before even starting this thread back in September, and here we are in April and it's finally now just starting to happen.


Hope you feel better soon.
 
Seems like this might offer a chance to remove this from Talkie: github.com/PaulStoffregen/Talkie/blob/master/Talkie.cpp#L161
Code:
static Talkie *isrTalkptr;
...
		isrTalkptr = this;
...
	Talkie *o = isrTalkptr;
...
	if ( o->ptrAddr ) nextData++;	// if no sound don't run toward calling sayisr()
...
static void sayisr() {
	uint8_t energy;
	Talkie *o = isrTalkptr;

	if ( !(o->ptrAddr) ) {
		// Non Active :: try START the sound on say_remove() address
		if ( o->setPtr(o->say_remove()) ) nextData=ISR_RATIO;	// This tracks the timing of the call to sayisr() :: Force nextData next timerInterrupt()
		return;
	}

@defragster put that in with tip from Frank B ...

@KurtE - all the best for dog issues ... assume it is the older guy.
 
I tried just now with Arduino 2.0.4 using Teensyduino 0.59.1 with the cores folder replaced by latest from github. Seems to compile for Teensy 3.6.
Weird, did exactly the same (well I cloned the core instead of copying). Only difference seem to be Linux/Windows. Maybe some subtle difference in the sequence of system includes?

Anyway, works now and this is no PHD thesis :)
 
Seems like this might offer a chance to remove this from Talkie: github.com/PaulStoffregen/Talkie/blob/master/Talkie.cpp#L161
Code:
static Talkie *isrTalkptr;
...
		isrTalkptr = this;
...
	Talkie *o = isrTalkptr;
...
	if ( o->ptrAddr ) nextData++;	// if no sound don't run toward calling sayisr()
...
static void sayisr() {
	uint8_t energy;
	Talkie *o = isrTalkptr;

	if ( !(o->ptrAddr) ) {
		// Non Active :: try START the sound on say_remove() address
		if ( o->setPtr(o->say_remove()) ) nextData=ISR_RATIO;	// This tracks the timing of the call to sayisr() :: Force nextData next timerInterrupt()
		return;
	}

So if memory serves without having reread the thread or having gotten the github posted updates. Rather than the 'workaround' support above and this 'new':
Code:
int8_t Talkie::sayQ(const uint8_t * addr) {
	if (!setup) {
...
		IntervalTimer *t = new IntervalTimer();
		t->begin(timerInterrupt, 1000000.0f / (float)FS);

The "IntervalTimer t" would go into "class Talkie" and then when the IntervalTimer is ".begin(timerInterrupt[this], 1000000.0f / (float)FS);"'d it would get that "this" pointer to pass as a parameter without the static copy being maintained and used as above?
> unless a reader can supply the syntax for the this passing to .begin() that could be resolved with reference to the prior post/code given this is understood as noted. and I could rework that code - probably best to work it out after beta 2 drops for testing for later beta includsion?
 
I added a first draft of an example page to the WIKI https://github.com/TeensyUser/doc/wiki/Using-the-new-callback-interface (It is stored under the how-to section)

Let me know if someone is interested in an example for a special use case, someone needs more information in it etc. Also, feel free to add content, its a public WIKI :)

Edit: @defragster: your Talkie use case is covered here https://github.com/TeensyUser/doc/w...erface-to-embedd-an-intervaltimer-in-my-class

@luni
Wow - that was fast. Just going through it now and its great info + a great tutorial :)

Note: probably wont start experimenting until beta2 comes out - just in case :)
 
Morning all (or whatever it is in your time zone)

@KurtE - all the best for dog issues ... assume it is the older guy.

Yes - Laik (head picture on all the posts) - was in a real bad state yesterday morning... For several hours we were sure we would probably have to put him down... But then he snapped out of it. And right now is reasonably back to normal. So we are crossing our paws.

The cost is 12 or 16 or 24 bytes of RAM, compared to only 4 bytes for a plain C function pointer or 8 bytes for a function pointer and a context pointer. Those bytes can add up for a big table of callbacks, like attachInterrupt(). But for the more common case where you have just 1 or only a few callbacks, like when an I/O operation completes, it's really not very expensive.

The benefit is ability to use all (or most) of the callable C++ stuff that's more complex than just a plain C function pointer.
Thanks Paul,

I was not as worried about the memory, although as you mentioned, could be add up for attachInterrupt, and my guess is you could not do it for attachInterruptVector.

When I wrote the first line about cost, was when the first couple of things I tried to build, failed.... So at point was wondering if this was going to break any apps that used things like InterruptVectors. Which has since been answered.

It's not just you! I have also felt this way many times. I'm really an analog circuits guy who uses C to really just program in assembly without obsessive compulsive micro-managing what's stored in each CPU register. All this fancy C++ syntax seems really foreign to me.
I started from several other languages, and when I first started using C++ it was in a group where we tried to restrict it to basic things like the use of classes. Which felt natural, as before that we were using C where often times our structures all started with the first data element which was a pointer to a logical vtable, which might have in it, what to call to init, destroy, size, draw...

As for some of this new modern stuff, still looks like chicken scratching ;)

I added a first draft of an example page to the WIKI https://github.com/TeensyUser/doc/wiki/Using-the-new-callback-interface (It is stored under the how-to section)
Also, thanks. Makes the chicken scratching more understandable :D
Note: probably wont start experimenting until beta2 comes out - just in case :)
I installed it on the 1.8.19 IDE, which these days for the most part I never use.
The way I install the new core stuff, is to simply go into the directory that contains the current core, in my case:
C:\arduino-1.8.19\hardware\teensy\avr

I rename the current core to something like cores_original
and then from command line, I do: mklink /J cores d:\github\cores

So I am always picking up the new stuff. And if I make changes I can see what they are and if needed , do a PR...
But you need to be careful, if you do an install of the next version of TD to undo the link...

On Arduino 2.x, I will probably wait until next beta is installed, and probably won't do much with it, until I find a need to do so.
Is my assumption correct, that this stuff won't work with the current releases of Teensyduino? In that case what do we do with different libraries that users often pickup updates in between official Teensyduino releases. Example sometimes pickup new USBHost.

Especially libraries like MTP_Teensy which is not included in Teensyduino and there are members who use it with their current stuff.
 
Last edited:
Good to hear Laik pulled through!

Usually I use Arduino 1.8.19 for first testing, since it's so much easier to be self contained. Arduino 2.0.x Boards Manager sure is convenient for switching between different versions, but only once they're packaged up and on the server and package index file (which I still do by manual editing...)

Especially libraries like MTP_Teensy which is not included in Teensyduino and there are members who use it with their current stuff.

As part of the still-developing documentation, we'll probably give specific recommended usage patterns. Best practice will be to define a type name with "using" inside your C++ class. We'll probably recommend "callback_t" if all callbacks are the same inputs & outputs, and 16 bytes capture for most applications. Of course, if it's global scope rather than inside the class, the name should be distinctive.

Libraries needing backwards compatibility would be written like this.

Code:
#if TEENSYDUINO >= 159
        using callback_t = stdext::inplace_function<void(void), 16>;
#else
        using callback_t = void (*)(void);
#endif

Of course the code in the core library should follow these still-to-be-written guidelines to serve as an example. Here's a commit to move in that still-not-fully-determined direction.

https://github.com/PaulStoffregen/cores/commit/e926097307399b3f6b9cfe7e9d558dcf456c1737
 
Good to hear Laik pulled through!

Usually I use Arduino 1.8.19 for first testing, since it's so much easier to be self contained. Arduino 2.0.x Boards Manager sure is convenient for switching between different versions, but only once they're packaged up and on the server and package index file (which I still do by manual editing...)



As part of the still-developing documentation, we'll probably give specific recommended usage patterns. Best practice will be to define a type name with "using" inside your C++ class. We'll probably recommend "callback_t" if all callbacks are the same inputs & outputs, and 16 bytes capture for most applications. Of course, if it's global scope rather than inside the class, the name should be distinctive.

Libraries needing backwards compatibility would be written like this.

Code:
#if TEENSYDUINO >= 159
        using callback_t = stdext::inplace_function<void(void), 16>;
#else
        using callback_t = void (*)(void);
#endif

Of course the code in the core library should follow these still-to-be-written guidelines to serve as an example. Here's a commit to move in that still-not-fully-determined direction.

https://github.com/PaulStoffregen/cores/commit/e926097307399b3f6b9cfe7e9d558dcf456c1737

Thats great news about Laik. Know how it feels when our little ones are not feeling well....

Paul. I do have a question on what you are showing for backward compatibiltiy:
Code:
#if TEENSYDUINO >= 159
        using callback_t = stdext::inplace_function<void(void), 16>;
#else
        using callback_t = void (*)(void);
#endif

Why? Why not simply continue to use the void myfunction() and pass in pointer, works now supposed to work later?
 
@luni: nice work in wiki. Looking there I see starting the timer and 'sharing' [this].

So then the _isr() would have direct access to ALL 'this' by name, like 'pin' in the example?:
Code:
class Talkie
{
public:
	void beginPWM(uint8_t pinPWM);
	void beginPropShield();
	void say(const uint8_t * address);
	int8_t sayQ(const uint8_t * address);
	const uint8_t * ptrAddr;
	uint8_t ptrBit;
	uint8_t active( void );
	uint8_t getBits(uint8_t bits);
	bool setPtr(const uint8_t * addr);
	bool say_add( const uint8_t *addr );	// sayisr() calls this
	const uint8_t * say_remove();	// sayisr() calls this
...

@Paul:
This Talkie code has "#if defined(__AVR__)" support - supporting that would mean maintaining with more #ifdef the current code - is it worth the trouble? Drop AVR to use new callbacks, support both?, or leave it working as is?
 
@defragster
As I was working on something different I was relooking at the Talkie library. It looks like the latest incarnation of Talkie does a bit of rework to support the Teensies: https://github.com/ArminJo/Talkie. but not the PWM version that we put together. Just a FYI. Most the lib is the same.
 
Back
Top