Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. int receive_init(int *seq, msg *last_msg) {
  2. // return -1 if error
  3.  
  4. msg *r = receive_message_timeout(3*TIME*1000);
  5. if (r == NULL)
  6. return -1;
  7.  
  8. kermit k = msg_to_kermit(r);
  9. (*seq) = ((*seq) + 1) % 64; // seq++
  10.  
  11. if (!verify(r, k.CHECK) || k.SEQ != (*seq) - 1) {
  12. // mesaj gresit
  13.  
  14. // printf(" len din r: %d\n", r->len - 3);
  15. // printf(" len din k: %d\n", k.LEN + 2 - 3);
  16. // printf(" crc din r: %d\n", crc16_ccitt(r->payload, r->len - 3));
  17. // printf(" crc din k: %d\n", crc16_ccitt(r->payload, k.LEN - 1));
  18.  
  19. // printf(" check in recv: %d\n", k.CHECK);
  20. // printf("in recv %d %d\n", r->payload[15], r->payload[16]);
  21.  
  22. send_nak(seq, last_msg);
  23.  
  24. // printf("NACK sent...\n");
  25.  
  26. (*seq) = ((*seq) + 1) % 64; // seq++
  27. return receive_init(seq, last_msg);
  28. }
  29.  
  30. // compute msg
  31.  
  32. // DATA field
  33. char *data = (char *) calloc(SEND_INIT_DATA_SIZE, 1);
  34.  
  35. data[0] = MAXL;
  36. data[1] = TIME;
  37. data[2] = NPAD;
  38. data[3] = PADC;
  39. data[4] = EOL;
  40.  
  41. (*last_msg) = make_kermit(SEND_INIT_DATA_SIZE, seq, 'Y', data);
  42. (*seq) = ((*seq) + 1) % 64;
  43. send(last_msg);
  44.  
  45. // printf("Send-Init received! (receiver)\n");
  46. // printf("aci??\n");
  47. return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement