I have LIN working with the S32K EVB using the SDK per the example code.
However, in my implementation, I must sleep my MCU whenever possible, and I need to use VLPS to reduce power consumption as much as possible.
As such, I use the LPTMR to wake the MCU periodically from VLPS (if no external interrupts are triggered, i.e. LIN wakeup or other IRQs), and altered the LIN autobaud code to use the LPIT instead (the LPIT does not run in VLPS).
My problem is that I don't know when it is safe to sleep, i.e. when the LIN stack is not processing frame data.
I attempted to use this logic to see if LIN was "busy":
linState != LIN_NODE_STATE_UNINIT &&
linState != LIN_NODE_STATE_SLEEP_MODE &&
linState != LIN_NODE_STATE_IDLE
However, linState is IDLE in the middle of frame processing.
As such, I tell the MCU to enter VLPS in the middle of a transmission, LPIT stops, and the MCU fails to properly sync and communicate with the LIN bus.
With the SDK, what indicators do I have that there is no active LIN communication in progress and it is safe to sleep?
Note that I cannot use the LPTMR for both LIN and auto-wake because I'm sleeping up to 2 seconds between wakeups, and the LIN stack expects a "timeout" of 500us with the timer.