summaryrefslogtreecommitdiffstats
path: root/osc_ctrl.py
diff options
context:
space:
mode:
Diffstat (limited to 'osc_ctrl.py')
-rw-r--r--osc_ctrl.py26
1 files changed, 12 insertions, 14 deletions
diff --git a/osc_ctrl.py b/osc_ctrl.py
index c72aed6..46c7997 100644
--- a/osc_ctrl.py
+++ b/osc_ctrl.py
@@ -221,7 +221,14 @@ def resizeBoard(num_lines, tx_state, shrink_only):
# Send a message to the board, but only overwrite cells that we know need to
# change.
-# This may take multiple calls to complete. Returns True once it's done.
+# This may take multiple calls to complete.
+# Returns 3 possible values:
+# 0: Done sending.
+# 1: Exhausted empty cell budget.
+# 2: Exhausted nonempty cell budget.
+SEND_MSG_LAZY_DONE = 0
+SEND_MSG_LAZY_SENT_EMPTY = 1
+SEND_MSG_LAZY_SENT_NON_EMPTY = 2
def sendMessageLazy(client, msg, tx_state):
lines = splitMessage(msg)
msg_encoded = encodeMessage(lines)
@@ -243,22 +250,13 @@ def sendMessageLazy(client, msg, tx_state):
if cell_msg == last_cell_msg:
continue
- # Skip cells on previous pages. This mitigates a bug where updating the
- # earlier part of a transcription causes that text to overwrite text
- # from a later part of the transcription.
- page = floor(cell / (2 ** generate_utils.INDEX_BITS))
- last_cell = (len(tx_state.last_msg_encoded) / NUM_LAYERS) - 1
- last_page = floor(last_cell / (2 ** generate_utils.INDEX_BITS))
- if page < last_page:
- pass
-
if cell_msg == [state.encoding[' ']] * NUM_LAYERS:
if empty_cells_sent >= tx_state.empty_cells_to_send_per_call:
- return False
+ return SEND_MSG_LAZY_SENT_EMPTY
empty_cells_sent += 1
else:
if nonempty_cells_sent >= tx_state.nonempty_cells_to_send_per_call:
- return False
+ return SEND_MSG_LAZY_SENT_NON_EMPTY
nonempty_cells_sent += 1
sendMessageCellDiscrete(client, cell_msg, cell)
@@ -268,7 +266,7 @@ def sendMessageLazy(client, msg, tx_state):
tx_state.last_msg_encoded[cell_begin:cell_end] = cell_msg
#resizeBoard(len(lines), tx_state, shrink_only=True)
- return True
+ return SEND_MSG_LAZY_DONE
def sendRawMessage(client, msg):
n_cells = ceil(len(msg) / NUM_LAYERS)
@@ -317,7 +315,7 @@ if __name__ == "__main__":
tx_state = OscTxState()
for line in fileinput.input():
- while not sendMessageLazy(client, line, tx_state):
+ while sendMessageLazy(client, line, tx_state) != SEND_MSG_LAZY_DONE:
continue
clear(client, tx_state)