|
libcoap
4.0.3
|
Go to the source code of this file.
Data Structures | |
| struct | coap_hdr_t |
| struct | coap_option |
| Structures for more convenient handling of options. More... | |
| struct | coap_pdu_t |
| Header structure for CoAP PDUs. More... | |
Macros | |
| #define | COAP_DEFAULT_RESPONSE_TIMEOUT 2 /* response timeout in seconds */ |
| #define | COAP_DEFAULT_MAX_RETRANSMIT 4 /* max number of retransmissions */ |
| #define | COAP_DEFAULT_PORT 5683 /* CoAP default UDP port */ |
| #define | COAP_DEFAULT_MAX_AGE 60 /* default maximum object lifetime in seconds */ |
| #define | COAP_MAX_PDU_SIZE 1400 /* maximum size of a CoAP PDU */ |
| #define | COAP_DEFAULT_VERSION 1 /* version of CoAP supported */ |
| #define | COAP_DEFAULT_SCHEME "coap" /* the default scheme for CoAP URIs */ |
| #define | COAP_DEFAULT_URI_WELLKNOWN ".well-known/core" |
| well-known resources URI | |
| #define | COAP_DEFAULT_WKC_HASHKEY "\345\130\144\245" |
| #define | COAP_MESSAGE_CON 0 /* confirmable message (requires ACK/RST) */ |
| #define | COAP_MESSAGE_NON 1 /* non-confirmable message (one-shot message) */ |
| #define | COAP_MESSAGE_ACK 2 /* used to acknowledge confirmable messages */ |
| #define | COAP_MESSAGE_RST 3 /* indicates error in received messages */ |
| #define | COAP_REQUEST_GET 1 |
| #define | COAP_REQUEST_POST 2 |
| #define | COAP_REQUEST_PUT 3 |
| #define | COAP_REQUEST_DELETE 4 |
| #define | COAP_OPTION_IF_MATCH 1 /* C, opaque, 0-8 B, (none) */ |
| #define | COAP_OPTION_URI_HOST 3 /* C, String, 1-255 B, destination address */ |
| #define | COAP_OPTION_ETAG 4 /* E, opaque, 1-8 B, (none) */ |
| #define | COAP_OPTION_IF_NONE_MATCH 5 /* empty, 0 B, (none) */ |
| #define | COAP_OPTION_URI_PORT 7 /* C, uint, 0-2 B, destination port */ |
| #define | COAP_OPTION_LOCATION_PATH 8 /* E, String, 0-255 B, - */ |
| #define | COAP_OPTION_URI_PATH 11 /* C, String, 0-255 B, (none) */ |
| #define | COAP_OPTION_CONTENT_FORMAT 12 /* E, uint, 0-2 B, (none) */ |
| #define | COAP_OPTION_CONTENT_TYPE COAP_OPTION_CONTENT_FORMAT |
| #define | COAP_OPTION_MAXAGE 14 /* E, uint, 0--4 B, 60 Seconds */ |
| #define | COAP_OPTION_URI_QUERY 15 /* C, String, 1-255 B, (none) */ |
| #define | COAP_OPTION_ACCEPT 17 /* C, uint, 0-2 B, (none) */ |
| #define | COAP_OPTION_LOCATION_QUERY 20 /* E, String, 0-255 B, (none) */ |
| #define | COAP_OPTION_PROXY_URI 35 /* C, String, 1-1034 B, (none) */ |
| #define | COAP_OPTION_PROXY_SCHEME 39 /* C, String, 1-255 B, (none) */ |
| #define | COAP_OPTION_SIZE1 60 /* E, uint, 0-4 B, (none) */ |
| #define | COAP_OPTION_OBSERVE 6 /* E, empty/uint, 0 B/0-3 B, (none) */ |
| #define | COAP_OPTION_SUBSCRIPTION COAP_OPTION_OBSERVE |
| #define | COAP_OPTION_BLOCK2 23 /* C, uint, 0--3 B, (none) */ |
| #define | COAP_OPTION_BLOCK1 27 /* C, uint, 0--3 B, (none) */ |
| #define | COAP_MAX_OPT 63 |
| the highest option number we know | |
| #define | COAP_RESPONSE_CODE(N) (((N)/100 << 5) | (N)%100) |
| #define | COAP_RESPONSE_CLASS(C) (((C) >> 5) & 0xFF) |
| #define | COAP_ERROR_PHRASE_LENGTH 32 |
| maximum length of error phrase | |
| #define | COAP_RESPONSE_200 COAP_RESPONSE_CODE(200) /* 2.00 OK */ |
| #define | COAP_RESPONSE_201 COAP_RESPONSE_CODE(201) /* 2.01 Created */ |
| #define | COAP_RESPONSE_304 COAP_RESPONSE_CODE(203) /* 2.03 Valid */ |
| #define | COAP_RESPONSE_400 COAP_RESPONSE_CODE(400) /* 4.00 Bad Request */ |
| #define | COAP_RESPONSE_404 COAP_RESPONSE_CODE(404) /* 4.04 Not Found */ |
| #define | COAP_RESPONSE_405 COAP_RESPONSE_CODE(405) /* 4.05 Method Not Allowed */ |
| #define | COAP_RESPONSE_415 COAP_RESPONSE_CODE(415) /* 4.15 Unsupported Media Type */ |
| #define | COAP_RESPONSE_500 COAP_RESPONSE_CODE(500) /* 5.00 Internal Server Error */ |
| #define | COAP_RESPONSE_501 COAP_RESPONSE_CODE(501) /* 5.01 Not Implemented */ |
| #define | COAP_RESPONSE_503 COAP_RESPONSE_CODE(503) /* 5.03 Service Unavailable */ |
| #define | COAP_RESPONSE_504 COAP_RESPONSE_CODE(504) /* 5.04 Gateway Timeout */ |
| #define | COAP_RESPONSE_X_242 COAP_RESPONSE_CODE(402) /* Critical Option not supported */ |
| #define | COAP_MEDIATYPE_TEXT_PLAIN 0 /* text/plain (UTF-8) */ |
| #define | COAP_MEDIATYPE_APPLICATION_LINK_FORMAT 40 /* application/link-format */ |
| #define | COAP_MEDIATYPE_APPLICATION_XML 41 /* application/xml */ |
| #define | COAP_MEDIATYPE_APPLICATION_OCTET_STREAM 42 /* application/octet-stream */ |
| #define | COAP_MEDIATYPE_APPLICATION_RDF_XML 43 /* application/rdf+xml */ |
| #define | COAP_MEDIATYPE_APPLICATION_EXI 47 /* application/exi */ |
| #define | COAP_MEDIATYPE_APPLICATION_JSON 50 /* application/json */ |
| #define | COAP_MEDIATYPE_ANY 0xff /* any media type */ |
| #define | COAP_INVALID_TID -1 |
| #define | COAP_MESSAGE_IS_EMPTY(MSG) ((MSG)->code == 0) |
| #define | COAP_MESSAGE_IS_REQUEST(MSG) |
| #define | COAP_MESSAGE_IS_RESPONSE(MSG) ((MSG)->code >= 64 && (MSG)->code <= 191) |
| #define | COAP_OPT_LONG |
| #define | COAP_OPT_END 0xF0 /* end marker */ |
| #define | COAP_PAYLOAD_START 0xFF /* payload marker */ |
| #define | COAP_OPTION_KEY(option) (option).key |
| #define | COAP_OPTION_LENGTH(option) (option).length |
| #define | COAP_OPTION_DATA(option) ((unsigned char *)&(option) + sizeof(coap_option)) |
| #define | COAP_OPTION(node) ((coap_option *)(node)->options) |
| Options in coap_pdu_t are accessed with the macro COAP_OPTION. | |
Typedefs | |
| typedef int | coap_tid_t |
Functions | |
| char * | coap_response_phrase (unsigned char code) |
Returns a human-readable response phrase for the specified CoAP response code. | |
| coap_pdu_t * | coap_pdu_init (unsigned char type, unsigned char code, unsigned short id, size_t size) |
Creates a new CoAP PDU of given size (must be large enough to hold the basic CoAP message header (coap_hdr_t). | |
| void | coap_pdu_clear (coap_pdu_t *pdu, size_t size) |
Clears any contents from pdu and resets version field, length and data pointers. | |
| coap_pdu_t * | coap_new_pdu () |
| Creates a new CoAP PDU. | |
| void | coap_delete_pdu (coap_pdu_t *) |
| int | coap_pdu_parse (unsigned char *data, size_t length, coap_pdu_t *result) |
Parses data into the CoAP PDU structure given in result. | |
| int | coap_add_token (coap_pdu_t *pdu, size_t len, const unsigned char *data) |
Adds token of length len to pdu. | |
| size_t | coap_add_option (coap_pdu_t *pdu, unsigned short type, unsigned int len, const unsigned char *data) |
| Adds option of given type to pdu that is passed as first parameter. | |
| int | coap_add_data (coap_pdu_t *pdu, unsigned int len, const unsigned char *data) |
| Adds given data to the pdu that is passed as first parameter. | |
| int | coap_get_data (coap_pdu_t *pdu, size_t *len, unsigned char **data) |
| Retrieves the length and data pointer of specified PDU. | |
| #define COAP_DEFAULT_MAX_AGE 60 /* default maximum object lifetime in seconds */ |
| #define COAP_DEFAULT_MAX_RETRANSMIT 4 /* max number of retransmissions */ |
| #define COAP_DEFAULT_RESPONSE_TIMEOUT 2 /* response timeout in seconds */ |
| #define COAP_DEFAULT_SCHEME "coap" /* the default scheme for CoAP URIs */ |
| #define COAP_DEFAULT_URI_WELLKNOWN ".well-known/core" |
| #define COAP_ERROR_PHRASE_LENGTH 32 |
| #define COAP_MAX_PDU_SIZE 1400 /* maximum size of a CoAP PDU */ |
| #define COAP_MEDIATYPE_APPLICATION_EXI 47 /* application/exi */ |
| #define COAP_MEDIATYPE_APPLICATION_JSON 50 /* application/json */ |
| #define COAP_MEDIATYPE_APPLICATION_LINK_FORMAT 40 /* application/link-format */ |
| #define COAP_MEDIATYPE_APPLICATION_OCTET_STREAM 42 /* application/octet-stream */ |
| #define COAP_MEDIATYPE_APPLICATION_RDF_XML 43 /* application/rdf+xml */ |
| #define COAP_MEDIATYPE_APPLICATION_XML 41 /* application/xml */ |
| #define COAP_MESSAGE_ACK 2 /* used to acknowledge confirmable messages */ |
| #define COAP_MESSAGE_CON 0 /* confirmable message (requires ACK/RST) */ |
| #define COAP_MESSAGE_IS_REQUEST | ( | MSG | ) |
| #define COAP_MESSAGE_IS_RESPONSE | ( | MSG | ) | ((MSG)->code >= 64 && (MSG)->code <= 191) |
| #define COAP_MESSAGE_NON 1 /* non-confirmable message (one-shot message) */ |
| #define COAP_MESSAGE_RST 3 /* indicates error in received messages */ |
| #define COAP_OPT_LONG |
| #define COAP_OPTION | ( | node | ) | ((coap_option *)(node)->options) |
Options in coap_pdu_t are accessed with the macro COAP_OPTION.
| #define COAP_OPTION_CONTENT_FORMAT 12 /* E, uint, 0-2 B, (none) */ |
| #define COAP_OPTION_CONTENT_TYPE COAP_OPTION_CONTENT_FORMAT |
| #define COAP_OPTION_DATA | ( | option | ) | ((unsigned char *)&(option) + sizeof(coap_option)) |
| #define COAP_OPTION_LOCATION_PATH 8 /* E, String, 0-255 B, - */ |
| #define COAP_OPTION_LOCATION_QUERY 20 /* E, String, 0-255 B, (none) */ |
| #define COAP_OPTION_MAXAGE 14 /* E, uint, 0--4 B, 60 Seconds */ |
| #define COAP_OPTION_OBSERVE 6 /* E, empty/uint, 0 B/0-3 B, (none) */ |
| #define COAP_OPTION_PROXY_SCHEME 39 /* C, String, 1-255 B, (none) */ |
| #define COAP_OPTION_PROXY_URI 35 /* C, String, 1-1034 B, (none) */ |
| #define COAP_OPTION_SUBSCRIPTION COAP_OPTION_OBSERVE |
| #define COAP_OPTION_URI_HOST 3 /* C, String, 1-255 B, destination address */ |
| #define COAP_OPTION_URI_PATH 11 /* C, String, 0-255 B, (none) */ |
| #define COAP_OPTION_URI_PORT 7 /* C, uint, 0-2 B, destination port */ |
| #define COAP_OPTION_URI_QUERY 15 /* C, String, 1-255 B, (none) */ |
| #define COAP_RESPONSE_200 COAP_RESPONSE_CODE(200) /* 2.00 OK */ |
| #define COAP_RESPONSE_201 COAP_RESPONSE_CODE(201) /* 2.01 Created */ |
| #define COAP_RESPONSE_304 COAP_RESPONSE_CODE(203) /* 2.03 Valid */ |
| #define COAP_RESPONSE_400 COAP_RESPONSE_CODE(400) /* 4.00 Bad Request */ |
| #define COAP_RESPONSE_404 COAP_RESPONSE_CODE(404) /* 4.04 Not Found */ |
| #define COAP_RESPONSE_405 COAP_RESPONSE_CODE(405) /* 4.05 Method Not Allowed */ |
| #define COAP_RESPONSE_415 COAP_RESPONSE_CODE(415) /* 4.15 Unsupported Media Type */ |
| #define COAP_RESPONSE_500 COAP_RESPONSE_CODE(500) /* 5.00 Internal Server Error */ |
| #define COAP_RESPONSE_501 COAP_RESPONSE_CODE(501) /* 5.01 Not Implemented */ |
| #define COAP_RESPONSE_503 COAP_RESPONSE_CODE(503) /* 5.03 Service Unavailable */ |
| #define COAP_RESPONSE_504 COAP_RESPONSE_CODE(504) /* 5.04 Gateway Timeout */ |
| #define COAP_RESPONSE_X_242 COAP_RESPONSE_CODE(402) /* Critical Option not supported */ |
| typedef int coap_tid_t |
| int coap_add_data | ( | coap_pdu_t * | pdu, |
| unsigned int | len, | ||
| const unsigned char * | data | ||
| ) |
Adds given data to the pdu that is passed as first parameter.
Note that the PDU's data is destroyed by coap_add_option(). coap_add_data() must be called only once per PDU, otherwise the result is undefined.
| size_t coap_add_option | ( | coap_pdu_t * | pdu, |
| unsigned short | type, | ||
| unsigned int | len, | ||
| const unsigned char * | data | ||
| ) |
Adds option of given type to pdu that is passed as first parameter.
coap_add_option() destroys the PDU's data, so coap_add_data() must be called after all options have been added. As coap_add_token() destroys the options following the token, the token must be added before coap_add_option() is called. This function returns the number of bytes written or 0 on error.
| int coap_add_token | ( | coap_pdu_t * | pdu, |
| size_t | len, | ||
| const unsigned char * | data | ||
| ) |
Adds token of length len to pdu.
Adding the token destroys any following contents of the pdu. Hence options and data must be added after coap_add_token() has been called. In pdu, length is set to len + 4, and max_delta is set to 0. This funtion returns 0 on error or a value greater than zero on success.
| pdu | The PDU where the token is to be added. |
| len | The length of the new token. |
| data | The token to add. |
0 on error. | void coap_delete_pdu | ( | coap_pdu_t * | ) |
| int coap_get_data | ( | coap_pdu_t * | pdu, |
| size_t * | len, | ||
| unsigned char ** | data | ||
| ) |
| coap_pdu_t* coap_new_pdu | ( | ) |
Creates a new CoAP PDU.
The object is created on the heap and must be released using coap_delete_pdu();
| void coap_pdu_clear | ( | coap_pdu_t * | pdu, |
| size_t | size | ||
| ) |
Clears any contents from pdu and resets version field, length and data pointers.
max_size is set to size, any other field is set to 0. Note that pdu must be a valid pointer to a coap_pdu_t object created e.g. by coap_pdu_init().
| coap_pdu_t* coap_pdu_init | ( | unsigned char | type, |
| unsigned char | code, | ||
| unsigned short | id, | ||
| size_t | size | ||
| ) |
Creates a new CoAP PDU of given size (must be large enough to hold the basic CoAP message header (coap_hdr_t).
The function returns a pointer to the node coap_pdu_t object on success, or NULL on error. The storage allocated for the result must be released with coap_delete_pdu().
| type | The type of the PDU (one of COAP_MESSAGE_CON, COAP_MESSAGE_NON, COAP_MESSAGE_ACK, COAP_MESSAGE_RST). |
| code | The message code. |
| id | The message id to set or COAP_INVALID_TID if unknown. |
| size | The number of bytes to allocate for the actual message. |
NULL on error. | int coap_pdu_parse | ( | unsigned char * | data, |
| size_t | length, | ||
| coap_pdu_t * | result | ||
| ) |
Parses data into the CoAP PDU structure given in result.
This function returns 0 on error or a number greater than zero on success.
| data | The raw data to parse as CoAP PDU |
| length | The actual size of data |
| result | The PDU structure to fill. Note that the structure must provide space for at least length bytes to hold the entire CoAP PDU. |
0 on error. | char* coap_response_phrase | ( | unsigned char | code | ) |
Returns a human-readable response phrase for the specified CoAP response code.
This function returns NULL if not found.
| code | The response code for which the literal phrase should be retrieved. |
NULL if not found.
1.8.1.2