stmhal/can: Fix a bug in filter handling.

Reported here: http://forum.micropython.org/viewtopic.php?f=2&t=845
This commit is contained in:
Henrik Sölver
2015-11-01 23:30:46 +01:00
committed by Damien George
parent 06f70973f7
commit 35e7d9c0f1
3 changed files with 28 additions and 4 deletions

View File

@@ -58,6 +58,26 @@ else:
else:
print('failed, wrong data received')
# Test filters
for n in [0, 8, 16, 24]:
filter_id = 0b00001000 << n
filter_mask = 0b00011100 << n
id_ok = 0b00001010 << n
id_fail = 0b00011010 << n
can.clearfilter(0)
can.setfilter(0, pyb.CAN.MASK32, 0, (filter_id, filter_mask))
can.send('ok', id_ok, timeout=3)
if can.any(0):
msg = can.recv(0)
print((hex(filter_id), hex(filter_mask), hex(msg[0]), msg[3]))
can.send("fail", id_fail, timeout=3)
if can.any(0):
msg = can.recv(0)
print((hex(filter_id), hex(filter_mask), hex(msg[0]), msg[3]))
del can
# Test RxCallbacks

View File

@@ -16,6 +16,10 @@ True
passed
CAN(1, CAN.LOOPBACK, extframe=True)
passed
('0x8', '0x1c', '0xa', b'ok')
('0x800', '0x1c00', '0xa00', b'ok')
('0x80000', '0x1c0000', '0xa0000', b'ok')
('0x8000000', '0x1c000000', '0xa000000', b'ok')
cb0
pending
cb0