Unless I'm missing it, I haven't seen anyone implement a proper UDS stack. The examples each manually construct a UDS packet, which works well for doing specific commands - but does not scale if you're trying to use a diagnostic library.
I found the openxc UDS stack here (https://github.com/openxc/uds-c) and have integrated it into a local project. However, when I attempt to read a PID such as reading VIN, I'm not getting the proper message on the bus. The UDS stack is returning UDS Tx(0x7DF): 0x0201090000000000, whereas the proper command should be UDS Tx(0x7DF): 0x0209020000000000. Has anyone else tried this and had any success?