int seqnum = morep->tx_buffer[15] = morep->seqnum++;
uint16_t msglen = htons (len);
memcpy (morep->tx_buffer + 16, (void *) &msglen, 2);
+ VERBOSE (morep, DEBUG, PRINTF ("sent preamble: "); int i; for (i = 0; i < 18; i++) printf ("%02x:", morep->tx_buffer[i]); printf ("\n"));
int rc = sendto (morep->sock, morep->tx_buffer, len + 18, 0, NULL, 0);
*size = MOREP_list[index]->rxlen;
}
- return MOREP_list[index]->tx_buffer + 18;
+ return MOREP_list[index]->rx_buffer + 18;
}
int MOREP_Receive (int index, uint8_t *msgtype)
if (len < 18) {
return -1;
}
+ VERBOSE (morep, DEBUG, PRINTF ("rec. preamble: "); int i; for (i = 0; i < 18; i++) printf ("%02x:", morep->rx_buffer[i]); printf ("\n"));
*msgtype = morep->rx_buffer[14];
uint8_t seqnum= morep->rx_buffer[15];
uint16_t msglen = 0;
- memcpy ((void *) &msglen, morep->tx_buffer + 16, 2);
+ memcpy ((void *) &msglen, morep->rx_buffer + 16, 2);
morep->rxlen = htons (msglen);
if (morep->rxlen != len - 18) {
VERBOSE (morep, WARNING, PRINTF ("incorrect size (%d/%d)\n", morep->rxlen, len - 18));
uint8_t rxmsgtype = 0;
int rxmsglen = 0;
int rxseqnum = MOREP_Receive (morep, &rxmsgtype);
- MOREP_Get_Rx_Buffer (morep, &rxmsglen);
+ uint8_t *rxbuffer = MOREP_Get_Rx_Buffer (morep, &rxmsglen);
VERBOSE (morep, INFO, PRINTF ("receive %d bytes (%d) [%d]\n", rxmsglen, rxmsgtype, rxseqnum));
+ VERBOSE (morep, INFO, PRINTF ("message: '%s'\n", (char *)rxbuffer));
uint8_t *buffer = MOREP_Get_Tx_Buffer (morep, NULL);
int txmsglen = strlen (words[i]);
while (!feof (fid)) {
int txmsglen = 0;
uint8_t *txbuffer = MOREP_Get_Tx_Buffer (morep, &txmsglen);
- txmsglen = fread (txbuffer, 1, txmsglen, fid);
+ memset (txbuffer, 0, txmsglen);
+ int i = 0;
+ do {
+ fread (txbuffer + i, 1, 1, fid);
+ if ((txbuffer[i] == '\n') || (txbuffer[i] == '\r')) {
+ txbuffer[i] = 0;
+ }
+ } while ((txbuffer[i] != 0) && (++i < txmsglen));
+ if (i == 0) {
+ continue;
+ }
+ txmsglen = i;
if ((txmsglen == 0) && (errno != 0)) {
VERBOSE (morep, ERROR, PRINTF ("can't read data from file '%s'\n", filename));
return -1;
uint8_t rxmsgtype = 0;
int rxmsglen = 0;
int rxseqnum = MOREP_Receive (morep, &rxmsgtype);
- MOREP_Get_Rx_Buffer (morep, &rxmsglen);
+ uint8_t *rxbuffer = MOREP_Get_Rx_Buffer (morep, &rxmsglen);
VERBOSE (morep, INFO, PRINTF ("receive %d bytes (%d) [%d]\n", rxmsglen, rxmsgtype, rxseqnum));
+ VERBOSE (morep, INFO, PRINTF ("message: '%s'\n", (char *)rxbuffer));
}
if (fid != stdin) {