Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# | | +-- S1 | 4..8
# | | +-- 0 |
# | | | +-- S2 | 8..16
# | | | +-- S3 | 16..32
# | | +-- 2 |
# | | +-- S4 | 8..32
# | +-- 1 |
# | +-- S5 | 4..32
# +-- S6 | 32..40
# +-- 1 |
# | +-- S7 | 40..64
# +-- 2 |
# +-- S8 | 40..48
#
signals = [
cantools.db.Signal(name='S0',
start=0,
length=4,
is_multiplexer=True),
cantools.db.Signal(name='S1',
start=4,
length=4,
is_multiplexer=True,
multiplexer_ids=[0],
multiplexer_signal='S0'),
cantools.db.Signal(name='S2',
start=8,
length=8,
multiplexer_ids=[0],
multiplexer_signal='S1'),
cantools.db.Signal(name='S3',
start=16,
is_multiplexer=False,
multiplexer_ids=[1],
multiplexer_signal='S0'),
cantools.db.Signal('S3',
4,
1,
'big_endian',
is_multiplexer=False,
multiplexer_ids=None,
multiplexer_signal=None)
],
'The signals S3 and S1 are overlapping in message M.'
),
(
[
cantools.db.Signal('S0',
7,
2,
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S1',
5,
2,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S0'),
cantools.db.Signal('S2',
5,
1,
'big_endian',
multiplexer_ids=[1],
multiplexer_signal='S0'),
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S5',
0,
2,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S4'),
cantools.db.Signal('S6',
0,
2,
'big_endian',
is_multiplexer=True,
multiplexer_ids=[1],
multiplexer_signal='S4'),
cantools.db.Signal('S7',
7,
1,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S6')
],
'The signals S7 and S0 are overlapping in message M.'
),
(
[
cantools.db.Signal('S0',
7,
2,
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S1',
cantools.db.Signal('S3',
3,
1,
'big_endian'),
cantools.db.Signal('S4',
2,
2,
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S5',
0,
2,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S4'),
cantools.db.Signal('S6',
0,
2,
'big_endian',
is_multiplexer=True,
multiplexer_ids=[1],
multiplexer_signal='S4'),
cantools.db.Signal('S7',
7,
1,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S6')
],
'The signals S7 and S0 are overlapping in message M.'
),
(
def test_padding_one(self):
"""Test to encode a message with padding as one.
"""
signals = [
cantools.db.Signal('S1', 3, 4, 'big_endian'),
cantools.db.Signal('S2', 15, 4, 'big_endian'),
cantools.db.Signal('S3', 11, 8, 'big_endian'),
cantools.db.Signal('S4', 19, 1, 'big_endian'),
cantools.db.Signal('S5', 17, 17, 'big_endian'),
cantools.db.Signal('S6', 47, 15, 'big_endian')
]
message = cantools.db.Message(frame_id=1,
name='M0',
length=8,
signals=signals)
decoded_message = {
'S1': 0,
'S2': 2,
'S3': 55,
'S4': 1,
'S5': 2323,
'S6': 3224
}
encoded_message = b'\xf0\x23\x7c\x12\x27\x19\x31\xff'
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S5',
0,
2,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S4'),
cantools.db.Signal('S6',
0,
2,
'big_endian',
is_multiplexer=True,
multiplexer_ids=[1],
multiplexer_signal='S4'),
cantools.db.Signal('S7',
7,
1,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S6')
],
'The signals S7 and S0 are overlapping in message M.'
),
(
[
cantools.db.Signal('S0',
7,
2,
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S1',
def test_performance_big_endian_signals(self):
"""Test encode/decode performance of a frame with big endian signals.
"""
iterations = 10000
signals = [
cantools.db.Signal('S0', 7, 4, 'big_endian'),
cantools.db.Signal('S1', 3, 4, 'big_endian'),
cantools.db.Signal('S2', 15, 4, 'big_endian'),
cantools.db.Signal('S3', 11, 8, 'big_endian'),
cantools.db.Signal('S4', 19, 1, 'big_endian'),
cantools.db.Signal('S5', 17, 17, 'big_endian'),
cantools.db.Signal('S6', 47, 15, 'big_endian')
]
message = cantools.db.Message(frame_id=1,
name='M0',
length=8,
signals=signals)
# Encode.
def encode():
message.encode({
'S0': 3,
'S1': 0,
'S2': 2,
'S3': 55,
is_multiplexer=False,
multiplexer_ids=[1],
multiplexer_signal='S0'),
cantools.db.Signal('S3',
4,
1,
'big_endian',
is_multiplexer=False,
multiplexer_ids=None,
multiplexer_signal=None)
],
'The signals S3 and S1 are overlapping in message M.'
),
(
[
cantools.db.Signal('S0',
7,
2,
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S1',
5,
2,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S0'),
cantools.db.Signal('S2',
5,
1,
'big_endian',
multiplexer_ids=[1],
multiplexer_signal='S0'),
cantools.db.Signal('S3',
3,
1,
'big_endian'),
cantools.db.Signal('S4',
2,
2,
'big_endian',
is_multiplexer=True),
cantools.db.Signal('S5',
0,
2,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S4'),
cantools.db.Signal('S6',
1,
2,
'big_endian',
is_multiplexer=True,
multiplexer_ids=[1],
multiplexer_signal='S4'),
cantools.db.Signal('S7',
14,
1,
'big_endian',
multiplexer_ids=[0],
multiplexer_signal='S6')
],
'The signals S6 and S4 are overlapping in message M.'
)
]