sizeof(struct can_tx_frame_s) is currently around 32 bytes. Reducing this will save significant amounts of RAM. A few ways:
- packed storage
- 16-bit milliseconds for creation time and timeout.
- 8-bit array index for the next pointer rather than 32-bit pointer
- split into 2 types: one that carries a payload, and one that carries ID and metadata.