MCPcopy Create free account
hub / github.com/PowerBroker2/SerialTransfer / parse

Method parse

src/Packet.cpp:119–283  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117*/
118
119uint8_t Packet::parse(const uint8_t& recChar, const bool& valid)
120{
121 bool packet_fresh = (packetStart == 0) || ((millis() - packetStart) < timeout);
122
123 if(!packet_fresh) //packet is stale, start over.
124 {
125 if (debug)
126 debugPort->println("ERROR: STALE PACKET");
127
128 bytesRead = 0;
129 state = find_start_byte;
130 status = STALE_PACKET_ERROR;
131 packetStart = 0;
132
133 return bytesRead;
134 }
135
136 if (valid)
137 {
138 switch (state)
139 {
140 case find_start_byte: /////////////////////////////////////////
141 {
142 if (recChar == START_BYTE)
143 {
144 state = find_id_byte;
145 packetStart = millis(); //start the timer
146 }
147
148 break;
149 }
150
151 case find_id_byte: ////////////////////////////////////////////
152 {
153 idByte = recChar;
154 state = find_overhead_byte;
155 break;
156 }
157
158 case find_overhead_byte: //////////////////////////////////////
159 {
160 recOverheadByte = recChar;
161 state = find_payload_len;
162 break;
163 }
164
165 case find_payload_len: ////////////////////////////////////////
166 {
167 if ((recChar > 0) && (recChar <= MAX_PACKET_SIZE))
168 {
169 bytesToRec = recChar;
170 payIndex = 0;
171 state = find_payload;
172 }
173 else
174 {
175 bytesRead = 0;
176 state = find_start_byte;

Callers 2

processDataMethod · 0.80
availableMethod · 0.80

Calls 1

calculateMethod · 0.80

Tested by

no test coverage detected