@@ -25,13 +25,16 @@ class Packet(object):
2525
2626 Check the TSIP reference documentation for the description of individual
2727 packets.
28+
29+ The argument(s) to `Packet()` can be either individual values, a single
30+ tuple or a single list.
2831
2932 Examples::
3033
31- >>> pkt = Packet(0x1f) # Request software versions.
32- >>> pkt = Packet(0x1e, 0x4b) # Request cold-start.
33- >>> pkt = Packet(0x23, -37.1, 144.1, 10.0) # Set initial position.
34- >>> pkt = Packet(0x8e, 0x4f, 0.1) # Set PPS with to 0.1s
34+ >>> pkt = Packet(0x1f) # Request software versions.
35+ >>> pkt = Packet(0x1e, 0x4b) # Request cold-start.
36+ >>> pkt = Packet( ( 0x23, -37.1, 144.1, 10.0) ) # Set initial position (tuple) .
37+ >>> pkt = Packet( [ 0x8e, 0x4f, 0.1] ) # Set PPS with to 0.1s (list)
3538
3639 """
3740
@@ -40,7 +43,20 @@ class Packet(object):
4043
4144
4245 def __init__ (self , * fields ):
43- self .fields = fields
46+
47+ # Allow `*fields` to be either individual arguments or a list or tuple.
48+ # Because `fields` will always be a tuple anyway, passing a list or
49+ # tuple will result in `fields` being a nested structure.A
50+ #
51+ # Packet(1,2,3) -> (1,2,3) -> self.fields = fields
52+ # Packet((1,2,3)) -> ((1,2,3)) -> self.fields = fields[0]
53+ # Packet([1,2,3]) -> [(1,2,3)] -> self.fields = fields[0]
54+ #
55+ try :
56+ fields [0 ][0 ] # Passed list or tuple to `Packet()`?
57+ self .fields = fields [0 ]
58+ except TypeError :
59+ self .fields = fields
4460
4561
4662 # Make self.fields accessible as indexes on the
0 commit comments