coap_io.c File Reference
`#include "coap_internal.h"`
`#include <errno.h>`
Include dependency graph for coap_io.c:

Go to the source code of this file.

## Data Structures

struct | in6_pktinfo
struct | in_pktinfo

## Macros

#define | SOL_IP IPPROTO_IP
#define | UNUSED_PARAM
#define | iov_len_t size_t
#define | SIN6(A) ((struct sockaddr_in6 *)(A))

## Functions

void | coap_free_endpoint (coap_endpoint_t *ep)
static const char * | coap_socket_format_errno (int error)
struct coap_endpoint_t * | coap_malloc_endpoint (void)
void | coap_mfree_endpoint (struct coap_endpoint_t *ep)
int | coap_socket_bind_udp (coap_socket_t *sock, const coap_address_t *listen_addr, coap_address_t *bound_addr)
int | coap_socket_connect_tcp1 (coap_socket_t *sock, const coap_address_t *local_if, const coap_address_t *server, int default_port, coap_address_t *local_addr, coap_address_t *remote_addr)
int | coap_socket_connect_tcp2 (coap_socket_t *sock, coap_address_t *local_addr, coap_address_t *remote_addr)
int | coap_socket_bind_tcp (coap_socket_t *sock, const coap_address_t *listen_addr, coap_address_t *bound_addr)
int | coap_socket_accept_tcp (coap_socket_t *server, coap_socket_t *new_client, coap_address_t *local_addr, coap_address_t *remote_addr)
int | coap_socket_connect_udp (coap_socket_t *sock, const coap_address_t *local_if, const coap_address_t *server, int default_port, coap_address_t *local_addr, coap_address_t *remote_addr)
void | coap_socket_close (coap_socket_t *sock)
ssize_t | coap_socket_write (coap_socket_t *sock, const uint8_t *data, size_t data_len)
ssize_t | coap_socket_read (coap_socket_t *sock, uint8_t *data, size_t data_len)
ssize_t | coap_network_send (coap_socket_t *sock, const coap_session_t *session, const uint8_t *data, size_t datalen)
void | coap_packet_get_memmapped (coap_packet_t *packet, unsigned char **address, size_t *length)
| Given a packet, set msg and msg_len to an address and length of the packet's data in memory. More...
ssize_t | coap_network_read (coap_socket_t *sock, coap_packet_t *packet)
| Function interface for reading data. More...
unsigned int | coap_io_prepare_epoll (coap_context_t *ctx, coap_tick_t now)
| Any now timed out delayed packet is transmitted, along with any packets associated with requested observable response. More...
unsigned int | coap_write (coap_context_t *ctx, coap_socket_t *sockets[], unsigned int max_sockets, unsigned int *num_sockets, coap_tick_t now)
| For applications with their own message loop, send all pending retransmits and return the list of sockets with events to wait for and the next timeout The application should call coap_read, then coap_write again when any condition below is true: More...
int | coap_run_once (coap_context_t *ctx, unsigned timeout_ms)
const char * | coap_socket_strerror (void)
ssize_t | coap_socket_send (coap_socket_t *sock, coap_session_t *session, const uint8_t *data, size_t data_len)

## Macro Definition Documentation

## iov_len_t

#define iov_len_t size_t

Definition at line 824 of file coap_io.c.

## SIN6

#define SIN6 | ( |  | A | ) | ((struct sockaddr_in6 *)(A))

Definition at line 999 of file coap_io.c.

## SOL_IP

#define SOL_IP IPPROTO_IP

Definition at line 796 of file coap_io.c.

## UNUSED_PARAM

#define UNUSED_PARAM

Definition at line 802 of file coap_io.c.

## Function Documentation

## coap_free_endpoint()

void coap_free_endpoint | ( | coap_endpoint_t * | ep | ) |

Definition at line 1006 of file coap_session.c.

Here is the call graph for this function:

## coap_io_prepare_epoll()

unsigned int coap_io_prepare_epoll | ( | coap_context_t * | ctx,
|  | coap_tick_t | now
| ) |  |

Any now timed out delayed packet is transmitted, along with any packets associated with requested observable response.

In addition, it returns when the next expected I/O is expected to take place (e.g. a packet retransmit).

Note: If epoll support is compiled into libcoap, coap_io_prepare_epoll() must be used instead of coap_write().

Internal function.

Parameters

  ctx | The CoAP context
  now | Current time.

Returns
  timeout Maxmimum number of milliseconds that can be used by a epoll_wait() to wait for network events or 0 if wait should be forever.

Definition at line 1248 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_malloc_endpoint()

struct coap_endpoint_t* coap_malloc_endpoint | ( | void |  | ) |

Definition at line 175 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_mfree_endpoint()

void coap_mfree_endpoint | ( | struct coap_endpoint_t * | ep | ) |

Definition at line 180 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_network_read()

ssize_t coap_network_read | ( | coap_socket_t * | sock,
|  | struct coap_packet_t * | packet
| ) |  |

Function interface for reading data.

This function returns the number of bytes that have been read, or a value less than zero on error. In case of an error, `*packet` is set to NULL.

Parameters

  sock | Socket to read data from
  packet | Received packet metadata and payload. src and dst should be preset.

Returns
  The number of bytes received on success, or a value less than zero on error.

Definition at line 1008 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_network_send()

ssize_t coap_network_send | ( | coap_socket_t * | sock,
|  | const coap_session_t * | session,
|  | const uint8_t * | data,
|  | size_t | datalen
| ) |  |

Definition at line 828 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_packet_get_memmapped()

void coap_packet_get_memmapped | ( | coap_packet_t * | packet,
|  | unsigned char ** | address,
|  | size_t * | length
| ) |  |

Given a packet, set msg and msg_len to an address and length of the packet's data in memory.

Definition at line 1002 of file coap_io.c.

Here is the caller graph for this function:

## coap_run_once()

int coap_run_once | ( | coap_context_t * | ctx,
|  | unsigned | timeout_ms
| ) |  |

Definition at line 1470 of file coap_io.c.

Here is the call graph for this function:

## coap_socket_accept_tcp()

int coap_socket_accept_tcp | ( | coap_socket_t * | server,
|  | coap_socket_t * | new_client,
|  | coap_address_t * | local_addr,
|  | coap_address_t * | remote_addr
| ) |  |

Definition at line 492 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_bind_tcp()

int coap_socket_bind_tcp | ( | coap_socket_t * | sock,
|  | const coap_address_t * | listen_addr,
|  | coap_address_t * | bound_addr
| ) |  |

Definition at line 412 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_bind_udp()

int coap_socket_bind_udp | ( | coap_socket_t * | sock,
|  | const coap_address_t * | listen_addr,
|  | coap_address_t * | bound_addr
| ) |  |

Definition at line 185 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_close()

void coap_socket_close | ( | coap_socket_t * | sock | ) |

Definition at line 631 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_connect_tcp1()

int coap_socket_connect_tcp1 | ( | coap_socket_t * | sock,
|  | const coap_address_t * | local_if,
|  | const coap_address_t * | server,
|  | int | default_port,
|  | coap_address_t * | local_addr,
|  | coap_address_t * | remote_addr
| ) |  |

Definition at line 264 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_connect_tcp2()

int coap_socket_connect_tcp2 | ( | coap_socket_t * | sock,
|  | coap_address_t * | local_addr,
|  | coap_address_t * | remote_addr
| ) |  |

Definition at line 372 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_connect_udp()

int coap_socket_connect_udp | ( | coap_socket_t * | sock,
|  | const coap_address_t * | local_if,
|  | const coap_address_t * | server,
|  | int | default_port,
|  | coap_address_t * | local_addr,
|  | coap_address_t * | remote_addr
| ) |  |

Definition at line 529 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_format_errno()

static const char * coap_socket_format_errno | ( | int | error | ) |

static

Definition at line 1646 of file coap_io.c.

Here is the caller graph for this function:

## coap_socket_read()

ssize_t coap_socket_read | ( | coap_socket_t * | sock,
|  | uint8_t * | data,
|  | size_t | data_len
| ) |  |

Definition at line 735 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_socket_send()

ssize_t coap_socket_send | ( | coap_socket_t * | sock,
|  | coap_session_t * | session,
|  | const uint8_t * | data,
|  | size_t | data_len
| ) |  |

Definition at line 1657 of file coap_io.c.

Here is the caller graph for this function:

## coap_socket_strerror()

const char* coap_socket_strerror | ( | void |  | ) |

Definition at line 1651 of file coap_io.c.

Here is the caller graph for this function:

## coap_socket_write()

ssize_t coap_socket_write | ( | coap_socket_t * | sock,
|  | const uint8_t * | data,
|  | size_t | data_len
| ) |  |

Definition at line 690 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function:

## coap_write()

unsigned int coap_write | ( | coap_context_t * | ctx,
|  | coap_socket_t * | sockets[],
|  | unsigned int | max_sockets,
|  | unsigned int * | num_sockets,
|  | coap_tick_t | now
| ) |  |

For applications with their own message loop, send all pending retransmits and return the list of sockets with events to wait for and the next timeout The application should call coap_read, then coap_write again when any condition below is true:

- data is available on any of the sockets with the COAP_SOCKET_WANT_READ
- an incoming connection is pending in the listen queue and the COAP_SOCKET_WANT_ACCEPT flag is set
- at least some data can be written without blocking on any of the sockets with the COAP_SOCKET_WANT_WRITE flag set
- a connection event occured (success or failure) and the COAP_SOCKET_WANT_CONNECT flag is set
- the timeout has expired Before calling coap_read or coap_write again, the application should position COAP_SOCKET_CAN_READ and COAP_SOCKET_CAN_WRITE flags as applicable.

Parameters

  ctx | The CoAP context
  sockets | array of socket descriptors, filled on output
  max_sockets | size of socket array.
  num_sockets | pointer to the number of valid entries in the socket arrays on output
  now | Current time.

Returns
  timeout as maxmimum number of milliseconds that the application should wait for network events or 0 if the application should wait forever.

Definition at line 1294 of file coap_io.c.

Here is the call graph for this function:
Here is the caller graph for this function: