From 8cc05c79cea62609d02231492c054a0cca2b2289 Mon Sep 17 00:00:00 2001 From: jaseg Date: Mon, 25 Sep 2023 23:57:36 +0200 Subject: Center firmware WIP --- center_fw/transmit.c | 53 ---------------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 center_fw/transmit.c (limited to 'center_fw/transmit.c') diff --git a/center_fw/transmit.c b/center_fw/transmit.c deleted file mode 100644 index c31c833..0000000 --- a/center_fw/transmit.c +++ /dev/null @@ -1,53 +0,0 @@ - -#include "global.h" -#include "transmit.h" -#include "8b10b.h" - -struct { - uint8_t *buf; - size_t pos, len; - uint16_t current_symbol; - struct state_8b10b_enc enc; -} tx_state = {0}; - -volatile uint32_t tx_overflow_cnt = 0; - -void tx_init(uint8_t *tx_buf) { - tx_state.buf = tx_buf; - tx_state.pos = 0; - tx_state.current_symbol = 0; - xfr_8b10b_encode_reset(&tx_state.enc); -} - -int tx_transmit(size_t len) { - if (!tx_state.buf) - return TX_ERR_UNINITIALIZED; - - if (tx_state.len) { - tx_overflow_cnt++; - return TX_ERR_BUSY; - } - - tx_state.len = len; - tx_state.current_symbol = 1; - return 0; -} - -int tx_next_bit() { - if (!tx_state.len) - return TX_IDLE; - - int sym = tx_state.current_symbol; - if (sym == 1) /* We're transmitting the first bit of a new frame now. */ - sym = xfr_8b10b_encode(&tx_state.enc, tx_state.buf[tx_state.pos++]) | (1<<10); - - int bit = sym&1; - sym >>= 1; - - if (sym == 1 && tx_state.pos == tx_state.len) - /* We're transmitting the last bit of a transmission now. Reset state. */ - tx_state.pos = tx_state.len = sym = 0; - - tx_state.current_symbol = sym; - return bit; -} -- cgit