Decode CAN Bus Frames
Decode a raw CAN 2.0A frame into its identifier, DLC and payload, and extract a big-endian signal at an arbitrary bit position as automotive DBC files describe.
Constraints
- Standard 11-bit identifier only.
- DLC greater than 8 must raise ValueError.
- Signal extraction takes a start bit, length and signedness.
- Big-endian (Motorola) bit numbering.
- No external CAN libraries.
1def decode_frame(raw):2 """raw: bytes. Returns dict with id, dlc, data."""3 # TODO4 return {}5 6def extract_signal(data, start_bit, length, signed=False):7 # TODO8 return 0