return distances
+def log_symbol(distance, symbol, extra_info=""):
+ logging.info("distance: %.2f Received \"%s\"%s", distance, symbol,
+ extra_info)
+
+
class CallDistanceTransceiver(object):
"""Transmit Morse messages using the distance between calls.
self.modem = modem
self.translator = MorseTranslator()
- self.destination_number = ""
-
self.call_setup_time_max = call_setup_time_max
if add_inter_call_distance:
self.end_of_message = False
- def log_symbol(self, distance, symbol, extra_info=""):
- logging.info("distance: %.2f Received \"%s\"%s", distance, symbol,
- extra_info)
-
- def receive_character(self):
+ def receive_symbol(self):
current_ring_time = time.time()
if self.previous_ring_time == -1:
self.previous_ring_time = current_ring_time
self.previous_call_time = current_ring_time
- self.log_symbol(0, "", "(The very first ring)")
+ log_symbol(0, "", "(The very first ring)")
return
ring_distance = current_ring_time - self.previous_ring_time
character = self.translator.signal_to_character(signal)
extra_info = " got \"%s\"" % character
- self.log_symbol(call_distance, symbol, extra_info)
+ log_symbol(call_distance, symbol, extra_info)
if symbol != "EOM":
# Add spaces around the wordspace symbol to make it easier to split
def receive_loop(self):
while not self.end_of_message:
self.modem.get_response("RING")
- self.receive_character()
+ self.receive_symbol()
logging.debug("Current message: %s", self.morse_message)
self.end_of_message = False
def get_text(self):
return self.text_message
- def transmit_symbol(self, symbol, sleep_time):
+ def transmit_symbol(self, destination_number, symbol, sleep_time):
logging.info("Dial and wait %.2f = %.2f + %.2f seconds "
"(transmitting '%s')",
self.call_setup_time_max + sleep_time,
# Dial, then wait self.call_setup_time_max to make sure the receiver
# gets at least one RING, and then hangup and sleep the time needed to
# transmit a symbol.
- self.modem.send_command("ATDT" + self.destination_number + ";")
+ self.modem.send_command("ATDT" + destination_number + ";")
time.sleep(self.call_setup_time_max)
self.modem.send_command("ATH")
self.modem.get_response()
time.sleep(sleep_time)
def transmit(self, message, destination_number):
- self.destination_number = destination_number
-
morse_message = self.translator.text_to_morse(message)
distances = self.modulator.modulate(morse_message)
total_sleep_time = self.call_setup_time_max + distance
symbol = self.modulator.distance_to_symbol(total_sleep_time)
- self.transmit_symbol(symbol, distance)
+ self.transmit_symbol(destination_number, symbol, distance)
def estimate_transmit_duration(self, message):
morsemessage = self.translator.text_to_morse(message)