I finished encoding the entire sender and receiver protocol. This includes transmitting and acknowledging a start sequence, sending packets, implementing an error queue to handle hamming decoding errors, and resending erroring packets
Upon the first full integration, I did not account for my algorithm having an error for either the initiation sequence or the error notification packets. This led to segmentation faults, because my hamming decode returns NULL upon a failed version of these specific packets.
I adjusted my implementation to only proceed when the hamming decide returns a legitimate data sequence
This however led to another bug where if the singular acknowledgement sequence is missed for either the start sequence or the error resend request sequences, both sides stall. I will fix this in the coming week
Upon full integration at the end of the week, we were able to send full files! We sent images, with the largest files we were capable of sending being some hundreds of kilobytes. However, due to the boards being somewhat finicky, larger packets increase what seem to be a random probability of read errors, leading to larger files being more finicky to send
All in all, we are at least able to transmit data using my protocol.
Schedule
In terms of my code, it is in almost as good a place is at can be. I will make the changes made above, which shouldn’t take longer than a day of work, and in terms of my own schedule, I am caught up.
Deliverables
Adjusting my code to better handle the stalling when an acknowledge fails to receive. While the fix won’t entirely eliminate the acknowledgement problem (this is an impossible problem in computer science), it should maximize the probability that data is transferred.
Possibly find a workaround for when the board crashes. I could possibly make the board force close and force reopen again, and retransmit packets. However if the logistics are too difficult, especially with final demos coming up, I can at least write pseudo code that could adjust the code for a potential fix.