Skip to content

Commit 617d133

Browse files
committed
collision workaround
1 parent a5576d6 commit 617d133

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

spherov2/commands/sensor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,11 @@ def configure_collision_detection(toy, collision_detection_method: CollisionDete
113113

114114
@staticmethod
115115
def __collision_detected_notify_helper(listener, packet):
116-
unpacked = struct.unpack('>3hB3hBL', packet.data)
116+
unpacked = struct.unpack('>3hB2hBL', packet.data)
117117
listener(CollisionDetected(acceleration_x=unpacked[0] / 4096, acceleration_y=unpacked[1] / 4096,
118118
acceleration_z=unpacked[2] / 4096, x_axis=bool(unpacked[3] & 1),
119119
y_axis=bool(unpacked[3] & 2), power_x=unpacked[4], power_y=unpacked[5],
120-
power_z=unpacked[6], speed=unpacked[7], time=unpacked[8] / 1000))
120+
speed=unpacked[6], time=unpacked[7] / 1000))
121121

122122
collision_detected_notify = (24, 18, 0xff), __collision_detected_notify_helper.__func__
123123

spherov2/controls/v2.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class Error(IntEnum):
5757

5858
@staticmethod
5959
def parse_response(data) -> 'Packet':
60+
#print("Packet", ' '.join(format(x, '02x') for x in data))
6061
sop, *data, eop = data
6162
if sop != Packet.Encoding.start:
6263
raise PacketDecodingException('Unexpected start of packet')
@@ -75,12 +76,16 @@ def parse_response(data) -> 'Packet':
7576
sid = None
7677
if flags & Packet.Flags.has_source_id:
7778
sid = data.pop(0)
79+
#print("Response packet", ' '.join(format(x, '02x') for x in data))
7880

7981
did, cid, seq, *data = data
82+
#print("Response seq ", seq)
83+
#print("Response data", ' '.join(format(x, '02x') for x in data))
8084

8185
err = Packet.Error.success
8286
if flags & Packet.Flags.is_response:
8387
err = Packet.Error(data.pop(0))
88+
#print("Response code", err)
8489

8590
return Packet(flags, did, cid, seq, tid, sid, bytearray(data), err)
8691

@@ -149,12 +154,14 @@ def __init__(self):
149154
self.__seq = 0
150155

151156
def new_packet(self, did, cid, tid=None, data=None):
157+
#print("Packet for command", did, cid, self.__seq, tid)
152158
flags = Packet.Flags.requests_response | Packet.Flags.is_activity
153159
sid = None
154160
if tid is not None:
155161
flags |= Packet.Flags.has_source_id | Packet.Flags.has_target_id
156162
sid = 0x1
157163
packet = Packet(flags, did, cid, self.__seq, tid, sid, bytearray(data or []))
164+
#print("New Packet",' '.join(format(x, '02x') for x in packet.build()))
158165
self.__seq = (self.__seq + 1) % 0xff
159166
return packet
160167

@@ -270,6 +277,11 @@ def __new_data():
270277
d = component.modifier(d)
271278
n[name] = d
272279
data[sensor] = n
280+
#print("len ", len(sensor_data))
281+
#print("sensor_data", sensor_data)
282+
#print("sensors", self.__toy.sensors.keys())
283+
#print("sensors extended", self.__toy.extended_sensors.keys())
284+
#print("enabled", self.__enabled.keys())
273285

274286
for sensor, components in self.__toy.sensors.items():
275287
if sensor in self.__enabled:

spherov2/listeners/sensor.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ class CollisionDetected(NamedTuple):
1010
y_axis: bool
1111
power_x: int
1212
power_y: int
13-
power_z: int
1413
speed: int
1514
time: float
1615

spherov2/toy/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ def __new_packet(self, packet):
113113
queue.get().set_result(packet)
114114
for f in self.__listeners[key].values():
115115
threading.Thread(target=f, args=(packet,)).start()
116+
for f in self.__listeners["all"].values():
117+
threading.Thread(target=f, args=(packet,)).start()
116118

117119
@classmethod
118120
def implements(cls, method, with_target=False):

0 commit comments

Comments
 (0)