Files
5150/arduino/kbd/kbd.ino

68 lines
1.4 KiB
C++

#include "kbd.h"
#include "paracomm.h"
#include "parallel.h"
ParaComms pc;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
setupKbd();
setupParallel();
pc = ParaComms{
.mosi_cb =
[](uint8_t* data, uint8_t len) {
for (int i = 0; i < len; i++) {
Serial.printf("%c", data[i]);
}
},
};
Serial.println("kbd 0.1");
}
void loop() {
static int led_counter = 0;
static int led = HIGH;
static int mode = 0; // 0 = keyboard, 1 = parallel
if (led_counter > 400000) {
led_counter = 0;
led = (led == HIGH) ? LOW : HIGH;
digitalWrite(LED_BUILTIN, led);
}
led_counter += 1;
// checkKbdReset();
uint8_t mosib;
if (strobeOccurred(mosib)) {
pc.FeedMosiData(mosib);
uint8_t misob = pc.NextMisoNibble();
writeParallel(misob);
}
if (Serial.available() > 0) {
int c = Serial.read();
#if 1
pc.SendByte(c);
#else
if (c == 2) {
mode = 0;
} else if (c == 3) {
mode = 1;
} else {
if (mode == 0) {
sendAsciiChar(c);
} else {
pc.SendByte(c);
}
}
#endif
}
}