#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 } }