MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / processInput

Method processInput

app/src/IO/FileTransmission/ZMODEM.cpp:135–184  ·  view source on GitHub ↗

* @brief Processes bytes received from the remote device. */

Source from the content-addressed store, hash-verified

133 * @brief Processes bytes received from the remote device.
134 */
135void IO::Protocols::ZMODEM::processInput(const QByteArray& data)
136{
137 Q_ASSERT(!data.isEmpty());
138 Q_ASSERT(isActive());
139
140 for (const char byte : data) {
141 const quint8 ch = static_cast<quint8>(byte);
142
143 switch (m_parseState) {
144 case ParseState::Idle:
145 if (ch == kZPAD)
146 m_parseState = ParseState::GotZPAD;
147
148 break;
149
150 case ParseState::GotZPAD:
151 if (ch == kZPAD) {
152 m_parseState = ParseState::GotSecondZPAD;
153 break;
154 }
155
156 m_parseState = (ch == kZDLE) ? ParseState::GotZDLE : ParseState::Idle;
157 break;
158
159 case ParseState::GotSecondZPAD:
160 if (ch == kZDLE)
161 m_parseState = ParseState::GotZDLE;
162 else
163 m_parseState = ParseState::Idle;
164
165 break;
166
167 case ParseState::GotZDLE:
168 startHeaderForZdleByte(ch);
169 break;
170
171 case ParseState::ReadingHexHeader:
172 processHexByte(ch);
173 break;
174
175 case ParseState::ReadingBin32Header:
176 processBin32Byte(ch);
177 break;
178
179 case ParseState::ReadingBinHeader:
180 processBinByte(ch);
181 break;
182 }
183 }
184}
185
186/**
187 * @brief Reacts to the byte that follows ZDLE: routes to hex/bin/bin32 header parsing.

Callers 1

onRawDataReceivedMethod · 0.45

Calls 1

isEmptyMethod · 0.80

Tested by

no test coverage detected