1
0
Florian Fleissner cf878783ad
Turned the virtual architectures virtual core to an arduino core
This makes the build much simpler as the FQBN
can now e.g. be given as keyboardio:virtual:model01
and the build process will automatically find the
virtual arduino core in virtual/cores/arduino

Signed-off-by: Florian Fleissner <florian.fleissner@inpartik.de>
2019-12-05 12:00:43 -08:00

75 lines
2.0 KiB
C++

/*
main.cpp - Main loop for Arduino sketches
Copyright (c) 2005-2013 Arduino Team. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Arduino.h>
#include "virtual_io.h"
#include <iostream>
// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }
void setupUSB() __attribute__((weak));
void setupUSB() { }
void parseCommandLine(int argc, char* argv[]) __attribute__((weak));
void parseCommandLine(int argc, char* argv[]) { }
// This function can be overridden in other libraries
// e.g. to run a testing framework.
//
__attribute__((weak))
extern void executeTestFunction();
void init(void) {
// Arduino core does some device-related setup here.
// We don't need to do anything.
}
int main(int argc, char* argv[]) {
// Enable consumer code to read command line args.
//
parseCommandLine(argc, argv);
if (!initVirtualInput(argc, argv)) return 1;
if (testFunctionExecutionRequested()) {
if (executeTestFunction) {
executeTestFunction();
}
return 0;
}
init();
initVariant();
setup();
while (true) {
std::cout << "Starting cycle " << currentCycle() << std::endl;
loop();
if (serialEventRun) serialEventRun();
nextCycle();
}
return 0;
}