CoAP: replaced coap_send_message() with coap_sendto() that returns
number of bytes sent or error.
This commit is contained in:
parent
074391fa7d
commit
a866fcbfad
@ -230,18 +230,17 @@ coap_transport_init(void)
|
||||
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
coap_send_message(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len)
|
||||
int
|
||||
coap_sendto(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len)
|
||||
{
|
||||
if(!coap_endpoint_is_connected(ep)) {
|
||||
PRINTF("CoAP endpoint not connected\n");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef WITH_DTLS
|
||||
if(coap_endpoint_is_secure(ep)) {
|
||||
dtls_write(dtls_context, (session_t *)ep, (uint8_t *)data, len);
|
||||
return;
|
||||
return dtls_write(dtls_context, (session_t *)ep, (uint8_t *)data, len);
|
||||
}
|
||||
#endif /* WITH_DTLS */
|
||||
|
||||
@ -251,6 +250,8 @@ coap_send_message(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len)
|
||||
printf("%02x", data[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
return len;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int
|
||||
|
@ -416,35 +416,45 @@ coap_transport_init(void)
|
||||
#endif /* WITH_DTLS */
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
coap_send_message(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len)
|
||||
int
|
||||
coap_sendto(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if(!coap_endpoint_is_connected(ep)) {
|
||||
PRINTF("CoAP-IPv4: endpoint ");
|
||||
PRINTEP(ep);
|
||||
PRINTF(" not connected - dropping packet\n");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef WITH_DTLS
|
||||
if(coap_endpoint_is_secure(ep)) {
|
||||
if(dtls_context) {
|
||||
dtls_write(dtls_context, (session_t *)ep, (uint8_t *)data, len);
|
||||
ret = dtls_write(dtls_context, (session_t *)ep, (uint8_t *)data, len);
|
||||
PRINTF("CoAP-IPv4: SENT DTLS to ");
|
||||
PRINTEP(ep);
|
||||
if(ret < 0) {
|
||||
PRINTF(" - error %d\n", ret);
|
||||
} else {
|
||||
PRINTF(" %d/%u bytes\n", ret, len);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
return;
|
||||
PRINTF("CoAP-IPv4: no DTLS context\n");
|
||||
return -1;
|
||||
}
|
||||
#endif /* WITH_DTLS */
|
||||
|
||||
if(coap_ipv4_fd >= 0) {
|
||||
if(sendto(coap_ipv4_fd, data, len, 0,
|
||||
(struct sockaddr *)&ep->addr, ep->size) < 1) {
|
||||
PRINTF("CoAP-IPv4: failed to send to ");
|
||||
PRINTEP(ep);
|
||||
PRINTF(" %u bytes: %s\n", len, strerror(errno));
|
||||
ret = sendto(coap_ipv4_fd, data, len, 0, (struct sockaddr *)&ep->addr,
|
||||
ep->size);
|
||||
PRINTF("CoAP-IPv4: SENT to ");
|
||||
PRINTEP(ep);
|
||||
if(ret < 0) {
|
||||
PRINTF(" - error %d: %s\n", ret, strerror(errno));
|
||||
} else {
|
||||
PRINTF("CoAP-IPv4: SENT to ");
|
||||
PRINTEP(ep);
|
||||
PRINTF(" %u bytes\n", len);
|
||||
PRINTF(" %d/%u bytes\n", ret, len);
|
||||
|
||||
if(DEBUG_VERBOSE) {
|
||||
int i;
|
||||
@ -455,7 +465,11 @@ coap_send_message(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len)
|
||||
PRINTF("\n");
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
PRINTF("CoAP-IPv4: failed to send - no socket\n");
|
||||
return -1;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* DTLS */
|
||||
|
@ -356,7 +356,7 @@ coap_receive(const coap_endpoint_t *src,
|
||||
message->mid);
|
||||
coap_set_payload(message, coap_error_message,
|
||||
strlen(coap_error_message));
|
||||
coap_send_message(src, payload, coap_serialize_message(message, payload));
|
||||
coap_sendto(src, payload, coap_serialize_message(message, payload));
|
||||
}
|
||||
|
||||
/* if(new data) */
|
||||
|
@ -179,7 +179,7 @@ simple_reply(coap_message_type_t type, const coap_endpoint_t *endpoint,
|
||||
|
||||
coap_init_message(response, type, NO_ERROR, notification->mid);
|
||||
len = coap_serialize_message(response, coap_databuf());
|
||||
coap_send_message(endpoint, coap_databuf(), len);
|
||||
coap_sendto(endpoint, coap_databuf(), len);
|
||||
}
|
||||
/*----------------------------------------------------------------------------*/
|
||||
static coap_notification_flag_t
|
||||
|
@ -100,8 +100,8 @@ coap_separate_accept(coap_packet_t *coap_req, coap_separate_t *separate_store)
|
||||
/* ACK with empty code (0) */
|
||||
coap_init_message(ack, COAP_TYPE_ACK, 0, coap_req->mid);
|
||||
/* serializing into IPBUF: Only overwrites header parts that are already parsed into the request struct */
|
||||
coap_send_message(ep, coap_databuf(),
|
||||
coap_serialize_message(ack, coap_databuf()));
|
||||
coap_sendto(ep, coap_databuf(),
|
||||
coap_serialize_message(ack, coap_databuf()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ coap_send_transaction(coap_transaction_t *t)
|
||||
{
|
||||
PRINTF("Sending transaction %u\n", t->mid);
|
||||
|
||||
coap_send_message(&t->endpoint, t->packet, t->packet_len);
|
||||
coap_sendto(&t->endpoint, t->packet, t->packet_len);
|
||||
|
||||
if(COAP_TYPE_CON ==
|
||||
((COAP_HEADER_TYPE_MASK & t->packet[0]) >> COAP_HEADER_TYPE_POSITION)) {
|
||||
|
@ -42,8 +42,7 @@
|
||||
|
||||
void coap_transport_init(void);
|
||||
|
||||
void coap_send_message(const coap_endpoint_t *ep, const uint8_t *data,
|
||||
uint16_t length);
|
||||
int coap_sendto(const coap_endpoint_t *ep, const uint8_t *data, uint16_t len);
|
||||
|
||||
uint8_t *coap_databuf(void);
|
||||
uint16_t coap_datalen(void);
|
||||
|
@ -335,31 +335,38 @@ process_data(void)
|
||||
coap_receive(get_src_endpoint(0), uip_appdata, uip_datalen());
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
coap_send_message(const coap_endpoint_t *ep, const uint8_t *data,
|
||||
uint16_t length)
|
||||
int
|
||||
coap_sendto(const coap_endpoint_t *ep, const uint8_t *data, uint16_t length)
|
||||
{
|
||||
if(ep == NULL) {
|
||||
PRINTF("coap-uip: failed to send - no endpoint\n");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(!coap_endpoint_is_connected(ep)) {
|
||||
PRINTF("coap-uip: endpoint ");
|
||||
PRINTEP(ep);
|
||||
PRINTF(" not connected - dropping packet\n");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef WITH_DTLS
|
||||
if(coap_endpoint_is_secure(ep)) {
|
||||
if(dtls_context) {
|
||||
dtls_write(dtls_context, (session_t *)ep, (uint8_t *)data, length);
|
||||
int ret;
|
||||
|
||||
ret = dtls_write(dtls_context, (session_t *)ep, (uint8_t *)data, length);
|
||||
PRINTF("coap-uip: sent DTLS to ");
|
||||
PRINTEP(ep);
|
||||
PRINTF(" %u bytes\n", length);
|
||||
if(ret < 0) {
|
||||
PRINTF(" - error %d\n", ret);
|
||||
} else {
|
||||
PRINTF(" %d/%u bytes\n", ret, length);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
return;
|
||||
PRINTF("coap-uip: no DTLS context\n");
|
||||
return -1;
|
||||
}
|
||||
#endif /* WITH_DTLS */
|
||||
|
||||
@ -367,6 +374,7 @@ coap_send_message(const coap_endpoint_t *ep, const uint8_t *data,
|
||||
PRINTF("coap-uip: sent to ");
|
||||
PRINTEP(ep);
|
||||
PRINTF(" %u bytes\n", length);
|
||||
return length;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
PROCESS_THREAD(coap_engine, ev, data)
|
||||
|
Loading…
Reference in New Issue
Block a user