At the moment, the transmission is as follows:
PC -> BL UPD_SEND_DATA (12 bytes payload)
BL -> PC LL_ACK
BL -> PC T_ACK
PC -> BL LL_ACK
BL -> PC UPD_SEND_LAST_ERROR (single byte payload!)
PC -> BL LL_ACK
PC -> BL T_ACK
BL -> PC LL_ACK
That is quite a bit for transmitting a mere 12 bytes. What we could do here is to group multiple SEND_LAST_ERROR responses together and only send them out when:
- The maximum number of bytes (error codes) that fit into a message is reached, or
- There was an error, or
- The page is full
No idea whether or rather how this is possible with calimero, though.
With Standard Frames, this could get us from 22x UPD_SEND_LAST_ERROR down to 2x UPD_SEND_LAST_ERROR, and therefore the transmission speed from ~120B/s up to ~188B/s.