Browse Source

added warning to detect unreachable NRF chip; added basic interrupt handler;added missing exception on timeout

# Conflicts:
#	tools/rpi/hoymiles/__init__.py
pull/1205/head
vendetta 2 years ago
parent
commit
bf7b122cea
  1. 13
      tools/rpi/hoymiles/__init__.py

13
tools/rpi/hoymiles/__init__.py

@ -344,6 +344,9 @@ class HoymilesNRF:
if not radio.begin(): if not radio.begin():
raise RuntimeError('Can\'t open radio') raise RuntimeError('Can\'t open radio')
if not radio.isChipConnected():
logging.warning("could not connect to NRF24 radio")
self.txpower = radio_config.get('txpower', 'max') self.txpower = radio_config.get('txpower', 'max')
@ -411,7 +414,7 @@ class HoymilesNRF:
self.radio.startListening() self.radio.startListening()
fragments = [] fragments = []
received_sth=False
# Receive: Loop # Receive: Loop
t_end = time.monotonic_ns()+timeout t_end = time.monotonic_ns()+timeout
while time.monotonic_ns() < t_end: while time.monotonic_ns() < t_end:
@ -431,7 +434,7 @@ class HoymilesNRF:
ch_rx=self.rx_channel, ch_tx=self.tx_channel, ch_rx=self.rx_channel, ch_tx=self.tx_channel,
time_rx=datetime.now() time_rx=datetime.now()
) )
received_sth=True
yield fragment yield fragment
else: else:
@ -447,7 +450,11 @@ class HoymilesNRF:
self.radio.setChannel(self.rx_channel) self.radio.setChannel(self.rx_channel)
self.radio.startListening() self.radio.startListening()
time.sleep(0.004) time.sleep(0.005)
if not received_sth:
raise TimeoutError
def next_rx_channel(self): def next_rx_channel(self):
""" """

Loading…
Cancel
Save