12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /**
- @page shellmatta_ymodem Shellmatta ymodem
- To be able to pass binary files to the shellmatta there is a ymodem module
- implemented.
- The ymodem reception can be started from a shellmatta command and handles
- the handshaking as well as the data transmission.
- As the shellmatta does not use dynamic memory every packet is passed
- directly to the application using a callback.
- Only the currently received packet is stored in the shellmatta internally.
- In order to transmit the start NCKs to the sender you need to poll the
- shellmatta_processData() function cyclically even if no new data has been
- received.
- Do this in 0.1s - 1s periods (depending on the latency you are after).
- The shellmatta_ymodem_start() function will return and the command it was
- called from will not be executed again. The rest of the ymodem processing
- will be handled by the shellmatta. The data will be passed using the
- callbacks registered during the start.
- To cancel the ymodem (e.g. timeout) just call shellmatta_ymodem_cancel()
- @section shellmatta_ymodem_sequence Basic sequence
- @startuml
- Application -> Shellmatta: shellmatta_ymodem_start()
- Shellmatta -> Host: send NCK to start transmission
- Shellmatta -> Application: return
- loop until ymodem transmission starts (or is canceled)
- Application -> Shellmatta: shellmatta_processData(null)
- Shellmatta -> Host: send NCK to start transmission
- end
- loop until shellmatta transmission is complete
- Host -> Shellmatta: Data transmission
- Shellmatta -> Application: packetRcv() callback
- end
- Shellmatta -> Application: transmissionComplete() callback
- @enduml
- While the ymodem is active no command can be executed.
- When the ymodem is canceled from the Host the data received afterwards will
- be processed as usual.
- */
|