Browse Source

added method `set_packet_length()` with example

Fabian Peter Hammerle 3 years ago
parent
commit
456d952f41
4 changed files with 28 additions and 0 deletions
  1. 1 0
      CHANGELOG.md
  2. 11 0
      cc1101/__init__.py
  3. 16 0
      examples/transmit_fixed_length.py
  4. 0 0
      examples/transmit_variable_length.py

+ 1 - 0
CHANGELOG.md

@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - new enum `options.PacketLengthMode`
 - new method `get_packet_length_mode()`
 - method `get_packet_length()` is now public
+- new method `set_packet_length()`
 - added configured packet length to `CC1101`'s string representation
   (`≤n` indicates variable length mode, `=n` fixed length mode)
 

+ 11 - 0
cc1101/__init__.py

@@ -423,6 +423,17 @@ class CC1101:
         """
         return self._read_single_byte(ConfigurationRegisterAddress.PKTLEN)
 
+    def set_packet_length(self, packet_length: int) -> None:
+        """
+        see get_packet_length()
+        """
+        assert 1 <= packet_length <= 255, "unsupported packet length {}".format(
+            packet_length
+        )
+        self._write_burst(
+            start_register=ConfigurationRegisterAddress.PKTLEN, values=[packet_length]
+        )
+
     def _disable_data_whitening(self):
         """
         PKTCTRL0.WHITE_DATA

+ 16 - 0
examples/transmit_fixed_length.py

@@ -0,0 +1,16 @@
+import logging
+
+import cc1101
+
+
+logging.basicConfig(level=logging.INFO)
+
+with cc1101.CC1101() as transceiver:
+    transceiver.set_base_frequency_hertz(433.5e6)
+    transceiver.set_symbol_rate_baud(600)
+    transceiver.set_sync_mode(cc1101.SyncMode.NO_PREAMBLE_AND_SYNC_WORD)
+    transceiver.set_packet_length_mode(cc1101.PacketLengthMode.FIXED)
+    transceiver.set_packet_length(4)
+    transceiver.disable_checksum()
+    print(transceiver)
+    transceiver.transmit(b"\xff\x00\xaa\xff")

+ 0 - 0
examples/transmit.py → examples/transmit_variable_length.py