두 종단점 간에 통신을 하는데, 통신 에러율이 최소 0.2%가 발생하는 상황임.

- 사족) 안읽어도됨. MCU를 이용한 시리얼통신에서는 주파수와 보-레이트에 의하여 최소 에러율이 결정남.


따라서 체크썸 및 재전송 로직이 필요했음.

이때, 체크썸 계산로직은 미리 넣어둬서 구현할 필요가 없었음.

재전송 로직만 구현하면 됨.


그래서 열심히 재전송 로직을 작성했음.

그런데 문득 하다보니 재전송을 위해 또 체크썸이 필요한거임.

기존엔 B가 A에게 응답 패킷을 안보냈는데, 재전송하려면 뭘 받았는지 응답해줘야 하는거임...

그리고  멀티스레드로 돌아가고 있어서 이것저것 생각하기 머리아파짐.


그래서 가만 생각해보니, A에서 B로가는 패킷의 성질상, A에서 받은 패킷중 하나라도 실행하면 되는거였음.

즉, 여러번 실행되도 상관없는 구조였던거임.

따라서, 0.2%는 2/1000이고, 이를 3번연속보내면 8/10억, 4번보내면 16/1조, 5번보내면 32/1000조의 확률로 에러가 발생하는거였음.

이정도수치는 기존에 작성하던 수준의 재전송 로직에서도 발생할 수 있는 그런 수치였음.

체크썸이 다르면 아예 다른 패킷이지만, 체크썸이 같아도 서로 다른 패킷일 수 있기 때문임.


따라서 기존에 작성하던 재전송 로직을 리버트해버리고 아래처럼 함

for (int count = 0; count < 5; count++)
{
    SendBuffer(buffer, size);
}