You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current media layer abstraction calls "send" on a socket with a span of spans to transmit. For embedded systems this is difficult to handle as the platform's send method may return an out-of-resources error which cannot be cleared until/unless the callstack unwinds and a yield point is reached to allow the scheduler run the network driver.
While we currently only ever send a single span in this span-of-spans, the interface doesn't let the developer know about this behavioural contract. The implementer is left to try to handle the type of complex timing and resource management issues libcyphal is meant to alleviate.
We should simply change this to always have a single fragment in the method.
The text was updated successfully, but these errors were encountered:
The current media layer abstraction calls "send" on a socket with a span of spans to transmit. For embedded systems this is difficult to handle as the platform's send method may return an out-of-resources error which cannot be cleared until/unless the callstack unwinds and a yield point is reached to allow the scheduler run the network driver.
How is this different for the case when there is only one span? All spans belong to the same UDP datagram / CAN frame / whatever else transport-specific entity there is, so they either go out together, or they are dropped together.
The current media layer abstraction calls "send" on a socket with a span of spans to transmit. For embedded systems this is difficult to handle as the platform's send method may return an out-of-resources error which cannot be cleared until/unless the callstack unwinds and a yield point is reached to allow the scheduler run the network driver.
While we currently only ever send a single span in this span-of-spans, the interface doesn't let the developer know about this behavioural contract. The implementer is left to try to handle the type of complex timing and resource management issues libcyphal is meant to alleviate.
We should simply change this to always have a single fragment in the method.
The text was updated successfully, but these errors were encountered: