Skip to content

Instantly share code, notes, and snippets.

@ebroecker
Last active May 23, 2019 14:06
Show Gist options
  • Save ebroecker/849f63a8fbec03cc80f670c8ef743851 to your computer and use it in GitHub Desktop.
Save ebroecker/849f63a8fbec03cc80f670c8ef743851 to your computer and use it in GitHub Desktop.
test_scapy_can.py
#### Packet with big endian signals:
class testFrame4(Packet):
fields_desc = [
SignalField("sig0" ,default=0, start=1 , size=2 , fmt=">B"),
SignalField("sig1" ,default=0, start=7 , size=6 , fmt=">B"),
SignalField("sig2" ,default=0, start=15, size=11, fmt=">B"),
SignalField("sig3" ,default=0, start=20, size=12, fmt=">B"),
SignalField("sig4" ,default=0, start=24, size=9 , fmt=">B"),
SignalField("sig5" ,default=0, start=50, size=3 , fmt=">B"),
SignalField("sig6" ,default=0, start=53, size=3 , fmt=">B"),
SignalField("sig7" ,default=0, start=47, size=10, fmt=">B"),
SignalField("sig8" ,default=0, start=58, size=3 , fmt=">B"),
SignalField("sig9" ,default=0, start=61, size=3 , fmt=">B"),
SignalField("sig10",default=0, start=63, size=2 , fmt=">B")
]
pkt = testFrame4()
pkt.sig0 = 1
pkt.sig1 = 35
pkt.sig2 = 0
pkt.sig3 = 2048
pkt.sig4 = 256
pkt.sig5 = 1
pkt.sig6 = 0
pkt.sig7 = 520
pkt.sig8 = 0
pkt.sig9 = 0
pkt.sig10 = 0
assert(pkt) == bytearray([141, 0, 16, 1, 0, 130, 1, 0])
#### Packet with big little signals:
class testFrame5(Packet):
fields_desc = [
SignalField("secSig1", default=0, start=60, size=2 , fmt="<B"),
SignalField("secSig2", default=0, start=55, size=1 , fmt="<B"),
SignalField("secSig3", default=0, start=20, size=4 , fmt="<B"),
SignalField("secSig4", default=0, start=62, size=2 , fmt="<B"),
SignalField("secSig5", default=0, start=34, size=3 , fmt="<B"),
SignalField("secSig6", default=0, start=37, size=3 , fmt="<B"),
SignalField("secSig7", default=0, start=59, size=1 , fmt="<b"),
SignalField("secSig8", default=0, start=56, size=3 , fmt="<B"),
SignalField("secSig9", default=0, start=52, size=3 , fmt="<B"),
SignalField("secSig10", default=0, start=8 , size=12, fmt="<B"),
SignalField("secSig11", default=0, start=24, size=10, fmt="<b"),
SignalField("secSig12", default=0, start=0 , size=8 , fmt="<B")
]
pkt = testFrame5()
pkt.secSig1 = 0
pkt.secSig2 = 0
pkt.secSig3 = 0
pkt.secSig4 = 2
pkt.secSig5 = 0
pkt.secSig6 = 0
pkt.secSig7 = 0
pkt.secSig8 = 3
pkt.secSig9 = 1
pkt.secSig10 = 1280
pkt.secSig11 = -144 # negative values may not be supported yet?
pkt.secSig12 = 12
assert(pkt) == bytearray([0x0c, 0x00, 0x05, 0x70, 0x03, 0x00, 0x10, 0x83])
class testFrame6(Packet):
fields_desc = [
SignalField("floatSignal2", default=0, start=32, size=32 fmt="<f"),
SignalField("floatSignal1", default=0, start=7 , size=32 fmt=">f")
]
pkt.floatSignal1 = 5.424999835668132e-05
pkt.floatSignal2 = 6.176799774169922
pkt = testFrame6()
assert(pkt) == bytearray([0x38, 0x63, 0x8A, 0x7E, 0x58, 0xA8, 0xC5, 0x40])
@polybassa
Copy link

could you please double check the second field. The first one is fine.

@polybassa
Copy link

Found the bug
... was a copy paste error!

@polybassa
Copy link

Everything is correct and works

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment