68 lines
1.4 KiB
C++
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
|
|
}
|
|
}
|