polio: fix comms

This commit is contained in:
2025-10-03 23:27:27 +02:00
parent a55c7c47e0
commit 5bb49da246
4 changed files with 41 additions and 38 deletions

View File

@@ -22,6 +22,7 @@ static uint8_t miso_recvbuf[256];
static uint8_t miso_size;
static uint8_t miso_received_nibbles;
static uint8_t miso_state;
recv_cb miso_recv_cb;
static void swapbuffers() {
mosi_sendbuf = mosi_workbuf[mosi_workbuf_idx];
@@ -92,19 +93,21 @@ void paracomm_feed(uint8_t n) {
miso_received_nibbles += 1;
if (miso_received_nibbles == 2 * miso_size) {
miso_recv_cb(miso_recvbuf, miso_size);
miso_state = 0;
}
} break;
}
}
void paracomm_init() {
void paracomm_init(recv_cb miso_cb) {
mosi_size = 0;
mosi_workbuf_idx = 0;
mosi_workbuf_size = 0;
mosi_state = 0;
miso_state = 0;
miso_recv_cb = miso_cb;
}
int paracomm_send(uint8_t b) {
@@ -119,20 +122,6 @@ int paracomm_send(uint8_t b) {
return 0;
}
uint8_t paracomm_recv(uint8_t* buf, uint8_t size) {
if (miso_state != 0) {
return 0;
}
if (size > miso_size) {
size = miso_size;
}
memcpy(buf, miso_recvbuf, size);
memcpy(miso_recvbuf, miso_recvbuf+size, miso_size - size);
miso_size -= size;
return size;
}
uint8_t paracomm_busy() {
return mosi_state != 0 || miso_state != 0;
}