1
0
Kaleidoscope/x86/cores/virtual/HardwareSerial.cpp

62 lines
1.6 KiB
C++

#include "HardwareSerial.h"
#include "Arduino.h"
// see comments in the real HardwareSerial.cpp
void serialEvent() __attribute__((weak));
void serialEvent1() __attribute__((weak));
void serialEvent2() __attribute__((weak));
void serialEvent3() __attribute__((weak));
bool Serial0_available() __attribute__((weak));
bool Serial1_available() __attribute__((weak));
bool Serial2_available() __attribute__((weak));
bool Serial3_available() __attribute__((weak));
void serialEventRun(void) {
if (Serial0_available && serialEvent && Serial0_available()) serialEvent();
if (Serial1_available && serialEvent && Serial1_available()) serialEvent1();
if (Serial2_available && serialEvent && Serial2_available()) serialEvent2();
if (Serial3_available && serialEvent && Serial3_available()) serialEvent3();
}
unsigned HardwareSerial::serialNumber = 0;
HardwareSerial::HardwareSerial() {}
void HardwareSerial::begin(unsigned long baud, byte config) {
char filename[64];
snprintf(filename, 64, "results/serial_%u.txt", serialNumber++);
out = fopen(filename, "w");
}
void HardwareSerial::end() {
if (out) fclose(out);
}
int HardwareSerial::availableForWrite(void) {
return out ? 1000 : 0;
}
size_t HardwareSerial::write(uint8_t c) {
if (out) fputc(c, out);
return 1;
}
void HardwareSerial::flush(void) {
if (out) fflush(out);
}
// TODO make input serial connections better.
// For now they're just essentially not allowed
int HardwareSerial::peek(void) {
return -1;
}
int HardwareSerial::read(void) {
return -1;
}
int HardwareSerial::available(void) {
return 0;
}
HardwareSerial Serial;
HardwareSerial Serial1;
HardwareSerial Serial2;
HardwareSerial Serial3;