Electron modem USART and buffer handling fixes #1140
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #1138 and #1104.
Fixes several issues:
USART_FLAG_TXE
was not checked when writing into DR register from system thread which caused an unsent data byte to be overwrittenElectronSerialPipe
buffer overflows, a data byte should be left in DR register to de-assert RTS line to ask modem to pause transmission for a whileElectronSerialPipe
circular buffer was initialized to 1024 bytes, but the implementation allowed only 1023 bytes to be held inside the bufferAT+CLAC
-like commands weren't parsed correctly (thanks @technobly)Relevant tests:
MDM_01_socket_writes_with_length_more_than_1023_work_correctly
MDM_02_at_commands_with_long_response_are_correctly_parsed_and_flow_controlled
Doneness:
Bugfixes