|
@@ -21,6 +21,7 @@ import fcntl
|
|
import logging
|
|
import logging
|
|
import math
|
|
import math
|
|
import typing
|
|
import typing
|
|
|
|
+import warnings
|
|
|
|
|
|
import spidev
|
|
import spidev
|
|
|
|
|
|
@@ -143,6 +144,11 @@ class CC1101:
|
|
|
|
|
|
_FREQUENCY_CONTROL_WORD_HERTZ_FACTOR = _CRYSTAL_OSCILLATOR_FREQUENCY_HERTZ / 2 ** 16
|
|
_FREQUENCY_CONTROL_WORD_HERTZ_FACTOR = _CRYSTAL_OSCILLATOR_FREQUENCY_HERTZ / 2 ** 16
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ _TRANSMIT_MIN_FREQUENCY_HERTZ = 281.7e6
|
|
|
|
+
|
|
def __init__(
|
|
def __init__(
|
|
self, spi_bus: int = 0, spi_chip_select: int = 0, lock_spi_device: bool = False
|
|
self, spi_bus: int = 0, spi_chip_select: int = 0, lock_spi_device: bool = False
|
|
) -> None:
|
|
) -> None:
|
|
@@ -598,6 +604,17 @@ class CC1101:
|
|
)
|
|
)
|
|
|
|
|
|
def set_base_frequency_hertz(self, freq: float) -> None:
|
|
def set_base_frequency_hertz(self, freq: float) -> None:
|
|
|
|
+ if freq < (self._TRANSMIT_MIN_FREQUENCY_HERTZ - 50e3):
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ warnings.warn(
|
|
|
|
+ "CC1101 is unable to transmit at frequencies below {:.1f} MHz".format(
|
|
|
|
+ self._TRANSMIT_MIN_FREQUENCY_HERTZ / 1e6
|
|
|
|
+ )
|
|
|
|
+ )
|
|
self._set_base_frequency_control_word(
|
|
self._set_base_frequency_control_word(
|
|
self._hertz_to_frequency_control_word(freq)
|
|
self._hertz_to_frequency_control_word(freq)
|
|
)
|
|
)
|