aboutsummaryrefslogtreecommitdiff
path: root/center_fw/transmit.c
diff options
context:
space:
mode:
authorjaseg <git@jaseg.de>2023-09-25 23:57:36 +0200
committerjaseg <git@jaseg.de>2023-09-25 23:57:36 +0200
commit8cc05c79cea62609d02231492c054a0cca2b2289 (patch)
treee39d40456adefe9bb70bcd77ebdf97be1dcdc028 /center_fw/transmit.c
parent583ac10d1450610a4110849c26cc16f03154d26e (diff)
download8seg-8cc05c79cea62609d02231492c054a0cca2b2289.tar.gz
8seg-8cc05c79cea62609d02231492c054a0cca2b2289.tar.bz2
8seg-8cc05c79cea62609d02231492c054a0cca2b2289.zip
Center firmware WIP
Diffstat (limited to 'center_fw/transmit.c')
-rw-r--r--center_fw/transmit.c53
1 files changed, 0 insertions, 53 deletions
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;
-}