|
36 | 36 | try:
|
37 | 37 | from warnings import warn
|
38 | 38 | except ImportError:
|
39 |
| - def warn(msg, cat=None, stacklevel=1): |
40 |
| - print("%s: %s" % ("Warning" if cat is None else cat.__name__, msg)) |
| 39 | + def warn(msg, **kwargs): |
| 40 | + # Issue a warning to stdout. |
| 41 | + print("%s: %s" % ("Warning" if kwargs.get("cat") is None else kwargs["cat"].__name__, msg)) |
41 | 42 |
|
42 | 43 | import adafruit_bus_device.spi_device as spidev
|
43 | 44 |
|
@@ -343,6 +344,8 @@ def __set__(self, obj, val):
|
343 | 344 |
|
344 | 345 | crc_error = _RegisterBits(_RH_RF95_REG_12_IRQ_FLAGS, offset=5, bits=1)
|
345 | 346 |
|
| 347 | + bw_bins = (7800, 10400, 15600, 20800, 31250, 41700, 62500, 125000, 250000) |
| 348 | + |
346 | 349 | def __init__(self, spi, cs, reset, frequency, *, preamble_length=8,
|
347 | 350 | high_power=True, baudrate=5000000, signal_bandwidth=125000,
|
348 | 351 | coding_rate=5, spreading_factor=7, enable_crc=False):
|
@@ -380,32 +383,36 @@ def __init__(self, spi, cs, reset, frequency, *, preamble_length=8,
|
380 | 383 | self.idle()
|
381 | 384 | # Defaults set modem config to RadioHead compatible Bw125Cr45Sf128 mode.
|
382 | 385 | # Set signal bandwidth (set to 125000 to match RadioHead Bw125).
|
383 |
| - bins = (7800, 10400, 15600, 20800, 31250, 41700, 62500, 125000, 250000) |
384 |
| - for bw, cutoff in enumerate(bins): |
| 386 | + for bwid, cutoff in enumerate(self.bw_bins): |
385 | 387 | if signal_bandwidth <= cutoff:
|
386 | 388 | break
|
387 | 389 | else:
|
388 |
| - bw = 9 |
| 390 | + bwid = 9 |
389 | 391 | self._write_u8(
|
390 | 392 | _RH_RF95_REG_1D_MODEM_CONFIG1,
|
391 |
| - (self._read_u8(_RH_RF95_REG_1D_MODEM_CONFIG1) & 0x0f) | (bw << 4) |
| 393 | + (self._read_u8(_RH_RF95_REG_1D_MODEM_CONFIG1) & 0x0f) | (bwid << 4) |
392 | 394 | )
|
393 | 395 | # Set coding rate (set to 5 to match RadioHead Cr45).
|
394 |
| - denominator = min(max(coding_rate, 5), 8) |
395 |
| - cr = denominator - 4 |
396 | 396 | self._write_u8(
|
397 | 397 | _RH_RF95_REG_1D_MODEM_CONFIG1,
|
398 |
| - (self._read_u8(_RH_RF95_REG_1D_MODEM_CONFIG1) & 0xf1) | (cr << 1) |
| 398 | + ( |
| 399 | + (self._read_u8(_RH_RF95_REG_1D_MODEM_CONFIG1) & 0xf1) | |
| 400 | + ((min(max(coding_rate, 5), 8) - 4) << 1) |
| 401 | + ) |
399 | 402 | )
|
400 | 403 | # Set spreading factor (set to 7 to match RadioHead Sf128).
|
401 |
| - sf = min(max(spreading_factor, 6), 12) |
402 |
| - self._write_u8(_RH_RF95_DETECTION_OPTIMIZE, 0xc5 if sf == 6 else 0xc3) |
403 |
| - self._write_u8(_RH_RF95_DETECTION_THRESHOLD, 0x0c if sf == 6 else 0x0a) |
| 404 | + spreading_factor = min(max(spreading_factor, 6), 12) |
| 405 | + self._write_u8( |
| 406 | + _RH_RF95_DETECTION_OPTIMIZE, 0xc5 if spreading_factor == 6 else 0xc3 |
| 407 | + ) |
| 408 | + self._write_u8( |
| 409 | + _RH_RF95_DETECTION_THRESHOLD, 0x0c if spreading_factor == 6 else 0x0a |
| 410 | + ) |
404 | 411 | self._write_u8(
|
405 | 412 | _RH_RF95_REG_1E_MODEM_CONFIG2,
|
406 | 413 | (
|
407 |
| - (self._read_u8(_RH_RF95_REG_1E_MODEM_CONFIG2) & 0x0f) | |
408 |
| - ((sf << 4) & 0xf0) |
| 414 | + (self._read_u8(_RH_RF95_REG_1E_MODEM_CONFIG2) & 0x0f) | |
| 415 | + ((spreading_factor << 4) & 0xf0) |
409 | 416 | )
|
410 | 417 | )
|
411 | 418 | # Optionally enable CRC checking on incoming packets.
|
|
0 commit comments