polio: fix comms
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user