1
Begin
2
If (T == 0 OR Rc == 0) Then {
3
T = ACK_TIMEOUT*ACK_RANDOM_FACTOR;
4
Rc = 0; m = 4; }
5
Else {
6
If (Rc < m) Then {
7
Send the CoAP message to lower layer;
8
While (T < Timeout) //wait until T is expired
9
If (mCSN receives Acknowledgement)
10
Then { T=0; Rc=0;
11
 Call CoAP_Retransmission (P+1, T, Rc, m);}
12
 Else Call CoAP_Retransmission (P, T*2, Rc+1, m);}
13
Else Discard (P); } // P is discarded
14
End