takashi kadono / Mbed OS Nucleo446_SSD1331

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kadonotakashi 0:8fdf9a60065b 1 /*
kadonotakashi 0:8fdf9a60065b 2 * Copyright (c) 2015-2017, Arm Limited and affiliates.
kadonotakashi 0:8fdf9a60065b 3 * SPDX-License-Identifier: Apache-2.0
kadonotakashi 0:8fdf9a60065b 4 *
kadonotakashi 0:8fdf9a60065b 5 * Licensed under the Apache License, Version 2.0 (the "License");
kadonotakashi 0:8fdf9a60065b 6 * you may not use this file except in compliance with the License.
kadonotakashi 0:8fdf9a60065b 7 * You may obtain a copy of the License at
kadonotakashi 0:8fdf9a60065b 8 *
kadonotakashi 0:8fdf9a60065b 9 * http://www.apache.org/licenses/LICENSE-2.0
kadonotakashi 0:8fdf9a60065b 10 *
kadonotakashi 0:8fdf9a60065b 11 * Unless required by applicable law or agreed to in writing, software
kadonotakashi 0:8fdf9a60065b 12 * distributed under the License is distributed on an "AS IS" BASIS,
kadonotakashi 0:8fdf9a60065b 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kadonotakashi 0:8fdf9a60065b 14 * See the License for the specific language governing permissions and
kadonotakashi 0:8fdf9a60065b 15 * limitations under the License.
kadonotakashi 0:8fdf9a60065b 16 */
kadonotakashi 0:8fdf9a60065b 17
kadonotakashi 0:8fdf9a60065b 18 #ifndef COAP_SERVICE_API_H_
kadonotakashi 0:8fdf9a60065b 19 #define COAP_SERVICE_API_H_
kadonotakashi 0:8fdf9a60065b 20
kadonotakashi 0:8fdf9a60065b 21 #ifdef __cplusplus
kadonotakashi 0:8fdf9a60065b 22 extern "C" {
kadonotakashi 0:8fdf9a60065b 23 #endif
kadonotakashi 0:8fdf9a60065b 24
kadonotakashi 0:8fdf9a60065b 25 #include <string.h>
kadonotakashi 0:8fdf9a60065b 26
kadonotakashi 0:8fdf9a60065b 27 #include "ns_types.h"
kadonotakashi 0:8fdf9a60065b 28 #include "mbed-coap/sn_coap_header.h"
kadonotakashi 0:8fdf9a60065b 29 #include "ns_address.h"
kadonotakashi 0:8fdf9a60065b 30
kadonotakashi 0:8fdf9a60065b 31 /**
kadonotakashi 0:8fdf9a60065b 32 * This interface is used in sending and receiving of CoAP messages to multicast address and receive multiple responses.
kadonotakashi 0:8fdf9a60065b 33 */
kadonotakashi 0:8fdf9a60065b 34
kadonotakashi 0:8fdf9a60065b 35 // Allowed_methods
kadonotakashi 0:8fdf9a60065b 36 #define COAP_SERVICE_ACCESS_ALL_ALLOWED 0x0F
kadonotakashi 0:8fdf9a60065b 37 #define COAP_SERVICE_ACCESS_GET_ALLOWED 0x01
kadonotakashi 0:8fdf9a60065b 38 #define COAP_SERVICE_ACCESS_PUT_ALLOWED 0x02
kadonotakashi 0:8fdf9a60065b 39 #define COAP_SERVICE_ACCESS_POST_ALLOWED 0x04
kadonotakashi 0:8fdf9a60065b 40 #define COAP_SERVICE_ACCESS_DELETE_ALLOWED 0x08
kadonotakashi 0:8fdf9a60065b 41
kadonotakashi 0:8fdf9a60065b 42 // Bits for service options
kadonotakashi 0:8fdf9a60065b 43 #define COAP_SERVICE_OPTIONS_NONE 0x00
kadonotakashi 0:8fdf9a60065b 44 #define COAP_SERVICE_OPTIONS_VIRTUAL_SOCKET 0x01
kadonotakashi 0:8fdf9a60065b 45 #define COAP_SERVICE_OPTIONS_SECURE 0x02
kadonotakashi 0:8fdf9a60065b 46 #define COAP_SERVICE_OPTIONS_EPHEMERAL_PORT 0x04
kadonotakashi 0:8fdf9a60065b 47 /** Coap interface selected as socket interface */
kadonotakashi 0:8fdf9a60065b 48 #define COAP_SERVICE_OPTIONS_SELECT_SOCKET_IF 0x08
kadonotakashi 0:8fdf9a60065b 49 /** Register to COAP multicast groups */
kadonotakashi 0:8fdf9a60065b 50 #define COAP_SERVICE_OPTIONS_MULTICAST_JOIN 0x10
kadonotakashi 0:8fdf9a60065b 51 /** Link-layer security bypass option is set*/
kadonotakashi 0:8fdf9a60065b 52 #define COAP_SERVICE_OPTIONS_SECURE_BYPASS 0x80
kadonotakashi 0:8fdf9a60065b 53
kadonotakashi 0:8fdf9a60065b 54 // Bits for request options
kadonotakashi 0:8fdf9a60065b 55 #define COAP_REQUEST_OPTIONS_NONE 0x00
kadonotakashi 0:8fdf9a60065b 56 #define COAP_REQUEST_OPTIONS_ADDRESS_DEFAULT 0x00//!< default is not setting either short or long.
kadonotakashi 0:8fdf9a60065b 57 #define COAP_REQUEST_OPTIONS_ADDRESS_LONG 0x01
kadonotakashi 0:8fdf9a60065b 58 #define COAP_REQUEST_OPTIONS_ADDRESS_SHORT 0x02
kadonotakashi 0:8fdf9a60065b 59 #define COAP_REQUEST_OPTIONS_MULTICAST 0x04 //!< indicates that CoAP library support multicasting
kadonotakashi 0:8fdf9a60065b 60 #define COAP_REQUEST_OPTIONS_SECURE_BYPASS 0x08
kadonotakashi 0:8fdf9a60065b 61
kadonotakashi 0:8fdf9a60065b 62 extern const uint8_t COAP_MULTICAST_ADDR_LINK_LOCAL[16]; //!< ff02::fd, COAP link local multicast address
kadonotakashi 0:8fdf9a60065b 63 extern const uint8_t COAP_MULTICAST_ADDR_ADMIN_LOCAL[16]; //!< ff03::fd, COAP admin-local multicast address
kadonotakashi 0:8fdf9a60065b 64 extern const uint8_t COAP_MULTICAST_ADDR_SITE_LOCAL[16]; //!> ff05::fd, COAP site-local multicast address
kadonotakashi 0:8fdf9a60065b 65
kadonotakashi 0:8fdf9a60065b 66 /**
kadonotakashi 0:8fdf9a60065b 67 * \brief Service message response receive callback.
kadonotakashi 0:8fdf9a60065b 68 *
kadonotakashi 0:8fdf9a60065b 69 * Function that handles CoAP service message receiving and parsing
kadonotakashi 0:8fdf9a60065b 70 *
kadonotakashi 0:8fdf9a60065b 71 * \param service_id Service handle.
kadonotakashi 0:8fdf9a60065b 72 * \param source_address IPv6 source address.
kadonotakashi 0:8fdf9a60065b 73 * \param source_port Source port.
kadonotakashi 0:8fdf9a60065b 74 * \param response_ptr Pointer to CoAP header structure.
kadonotakashi 0:8fdf9a60065b 75 *
kadonotakashi 0:8fdf9a60065b 76 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 77 */
kadonotakashi 0:8fdf9a60065b 78 typedef int coap_service_response_recv(int8_t service_id, uint8_t source_address[static 16], uint16_t source_port, sn_coap_hdr_s *response_ptr);
kadonotakashi 0:8fdf9a60065b 79
kadonotakashi 0:8fdf9a60065b 80 /**
kadonotakashi 0:8fdf9a60065b 81 * \brief CoAP service request callback
kadonotakashi 0:8fdf9a60065b 82 *
kadonotakashi 0:8fdf9a60065b 83 * CoAP service request message receiving and parsing function
kadonotakashi 0:8fdf9a60065b 84 *
kadonotakashi 0:8fdf9a60065b 85 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 86 * \param source_address IPv6 source address.
kadonotakashi 0:8fdf9a60065b 87 * \param source_port Source port.
kadonotakashi 0:8fdf9a60065b 88 * \param request_ptr Pointer to CoAP header structure.
kadonotakashi 0:8fdf9a60065b 89 *
kadonotakashi 0:8fdf9a60065b 90 * \return -1 = Message ignored, no response will be sent. Transaction will be deleted.
kadonotakashi 0:8fdf9a60065b 91 * 0 = Response is either already sent or will be send. Transaction is not deleted.
kadonotakashi 0:8fdf9a60065b 92 */
kadonotakashi 0:8fdf9a60065b 93 typedef int coap_service_request_recv_cb(int8_t service_id, uint8_t source_address[static 16], uint16_t source_port, sn_coap_hdr_s *request_ptr);
kadonotakashi 0:8fdf9a60065b 94
kadonotakashi 0:8fdf9a60065b 95 /**
kadonotakashi 0:8fdf9a60065b 96 * \brief Security service start callback
kadonotakashi 0:8fdf9a60065b 97 *
kadonotakashi 0:8fdf9a60065b 98 * Starts security service handling and fetches device password.
kadonotakashi 0:8fdf9a60065b 99 *
kadonotakashi 0:8fdf9a60065b 100 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 101 * \param address Address of sender.
kadonotakashi 0:8fdf9a60065b 102 * \param port Port of the device.
kadonotakashi 0:8fdf9a60065b 103 * \param pw Pointer where to write the ecjpake password.
kadonotakashi 0:8fdf9a60065b 104 * \param pw_len Pointer where to write length of the ecjpake password.
kadonotakashi 0:8fdf9a60065b 105 *
kadonotakashi 0:8fdf9a60065b 106 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 107 */
kadonotakashi 0:8fdf9a60065b 108 typedef int coap_service_security_start_cb(int8_t service_id, uint8_t address[static 16], uint16_t port, uint8_t* pw, uint8_t *pw_len);
kadonotakashi 0:8fdf9a60065b 109
kadonotakashi 0:8fdf9a60065b 110 /**
kadonotakashi 0:8fdf9a60065b 111 * \brief CoAP service security done callback
kadonotakashi 0:8fdf9a60065b 112 *
kadonotakashi 0:8fdf9a60065b 113 * CoAP service security done callback function.
kadonotakashi 0:8fdf9a60065b 114 *
kadonotakashi 0:8fdf9a60065b 115 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 116 * \param address Address of sender.
kadonotakashi 0:8fdf9a60065b 117 * \param keyblock Security key (40 bits).
kadonotakashi 0:8fdf9a60065b 118 *
kadonotakashi 0:8fdf9a60065b 119 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 120 */
kadonotakashi 0:8fdf9a60065b 121 typedef int coap_service_security_done_cb(int8_t service_id, uint8_t address[static 16], uint8_t keyblock[static 40]);
kadonotakashi 0:8fdf9a60065b 122
kadonotakashi 0:8fdf9a60065b 123 /**
kadonotakashi 0:8fdf9a60065b 124 * \brief Initialise server instance.
kadonotakashi 0:8fdf9a60065b 125 *
kadonotakashi 0:8fdf9a60065b 126 * Initialise Thread services for the registered application.
kadonotakashi 0:8fdf9a60065b 127 *
kadonotakashi 0:8fdf9a60065b 128 * \param interface_id Informs registered application interface id. This parameter is passed to socket implementation.
kadonotakashi 0:8fdf9a60065b 129 * \param listen_port Port that Application wants to use for communicate with coap server.
kadonotakashi 0:8fdf9a60065b 130 * \param service_options Options of the current service.
kadonotakashi 0:8fdf9a60065b 131 * \param *start_ptr Callback to inform security handling is started and to fetch device password.
kadonotakashi 0:8fdf9a60065b 132 * \param *coap_security_done_cb Callback to inform security handling is done.
kadonotakashi 0:8fdf9a60065b 133 *
kadonotakashi 0:8fdf9a60065b 134 * \return service_id / -1 for failure
kadonotakashi 0:8fdf9a60065b 135 */
kadonotakashi 0:8fdf9a60065b 136 extern int8_t coap_service_initialize(int8_t interface_id, uint16_t listen_port, uint8_t service_options, coap_service_security_start_cb *start_ptr, coap_service_security_done_cb *coap_security_done_cb);
kadonotakashi 0:8fdf9a60065b 137
kadonotakashi 0:8fdf9a60065b 138 /**
kadonotakashi 0:8fdf9a60065b 139 * \brief Service delete
kadonotakashi 0:8fdf9a60065b 140 *
kadonotakashi 0:8fdf9a60065b 141 * Removes all data related to this instance
kadonotakashi 0:8fdf9a60065b 142 *
kadonotakashi 0:8fdf9a60065b 143 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 144 */
kadonotakashi 0:8fdf9a60065b 145 extern void coap_service_delete( int8_t service_id );
kadonotakashi 0:8fdf9a60065b 146
kadonotakashi 0:8fdf9a60065b 147 /**
kadonotakashi 0:8fdf9a60065b 148 * \brief Close secure connection
kadonotakashi 0:8fdf9a60065b 149 *
kadonotakashi 0:8fdf9a60065b 150 * Closes secure connection (if present), but leaves socket open.
kadonotakashi 0:8fdf9a60065b 151 *
kadonotakashi 0:8fdf9a60065b 152 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 153 * \param destimation_addr_ptr Connection destination address.
kadonotakashi 0:8fdf9a60065b 154 * \param port Connection destination port.
kadonotakashi 0:8fdf9a60065b 155 */
kadonotakashi 0:8fdf9a60065b 156 extern void coap_service_close_secure_connection(int8_t service_id, uint8_t destination_addr_ptr[static 16], uint16_t port);
kadonotakashi 0:8fdf9a60065b 157
kadonotakashi 0:8fdf9a60065b 158 /**
kadonotakashi 0:8fdf9a60065b 159 * \brief Virtual socket sent callback.
kadonotakashi 0:8fdf9a60065b 160 *
kadonotakashi 0:8fdf9a60065b 161 * Sent data to virtual socket.
kadonotakashi 0:8fdf9a60065b 162 *
kadonotakashi 0:8fdf9a60065b 163 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 164 * \param destination_addr_ptr Receiver IPv6 address.
kadonotakashi 0:8fdf9a60065b 165 * \param port Receiver port number.
kadonotakashi 0:8fdf9a60065b 166 * \param *data_ptr Pointer to the data.
kadonotakashi 0:8fdf9a60065b 167 * \param data_len Lenght of the data.
kadonotakashi 0:8fdf9a60065b 168 *
kadonotakashi 0:8fdf9a60065b 169 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 170 */
kadonotakashi 0:8fdf9a60065b 171 typedef int coap_service_virtual_socket_send_cb(int8_t service_id, uint8_t destination_addr_ptr[static 16], uint16_t port, const uint8_t *data_ptr, uint16_t data_len);
kadonotakashi 0:8fdf9a60065b 172
kadonotakashi 0:8fdf9a60065b 173 /**
kadonotakashi 0:8fdf9a60065b 174 * \brief Virtual socket read.
kadonotakashi 0:8fdf9a60065b 175 *
kadonotakashi 0:8fdf9a60065b 176 * Receive data from virtual socket.
kadonotakashi 0:8fdf9a60065b 177 *
kadonotakashi 0:8fdf9a60065b 178 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 179 * \param source_addr_ptr Receiver IPv6 address.
kadonotakashi 0:8fdf9a60065b 180 * \param port Receiver port number.
kadonotakashi 0:8fdf9a60065b 181 * \param *data_ptr Pointer to the data
kadonotakashi 0:8fdf9a60065b 182 * \param data_len Lenght of the data
kadonotakashi 0:8fdf9a60065b 183 *
kadonotakashi 0:8fdf9a60065b 184 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 185 */
kadonotakashi 0:8fdf9a60065b 186 extern int16_t coap_service_virtual_socket_recv(int8_t service_id, uint8_t source_addr_ptr[static 16], uint16_t port, uint8_t *data_ptr, uint16_t data_len);
kadonotakashi 0:8fdf9a60065b 187
kadonotakashi 0:8fdf9a60065b 188 /**
kadonotakashi 0:8fdf9a60065b 189 * \brief Set virtual socket
kadonotakashi 0:8fdf9a60065b 190 *
kadonotakashi 0:8fdf9a60065b 191 * Sets virtual socket for CoAP services.
kadonotakashi 0:8fdf9a60065b 192 *
kadonotakashi 0:8fdf9a60065b 193 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 194 * \param *send_method_ptr Callback to coap virtual socket.
kadonotakashi 0:8fdf9a60065b 195 *
kadonotakashi 0:8fdf9a60065b 196 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 197 */
kadonotakashi 0:8fdf9a60065b 198 extern int16_t coap_service_virtual_socket_set_cb(int8_t service_id, coap_service_virtual_socket_send_cb *send_method_ptr);
kadonotakashi 0:8fdf9a60065b 199
kadonotakashi 0:8fdf9a60065b 200 /**
kadonotakashi 0:8fdf9a60065b 201 * \brief Register unsecure callback methods to CoAP server
kadonotakashi 0:8fdf9a60065b 202 *
kadonotakashi 0:8fdf9a60065b 203 * Register application and informs CoAP services unsecure registery callback function.
kadonotakashi 0:8fdf9a60065b 204 *
kadonotakashi 0:8fdf9a60065b 205 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 206 * \param *uri Uri address.
kadonotakashi 0:8fdf9a60065b 207 * \param allowed_method Informs method that is allowed to use (used defines described above).
kadonotakashi 0:8fdf9a60065b 208 * \param *request_recv_cb CoAP service request receive callback function pointer.
kadonotakashi 0:8fdf9a60065b 209 *
kadonotakashi 0:8fdf9a60065b 210 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 211 */
kadonotakashi 0:8fdf9a60065b 212 extern int8_t coap_service_register_uri(int8_t service_id, const char *uri, uint8_t allowed_method, coap_service_request_recv_cb *request_recv_cb);
kadonotakashi 0:8fdf9a60065b 213
kadonotakashi 0:8fdf9a60065b 214 /**
kadonotakashi 0:8fdf9a60065b 215 * \brief Unregister unsecure callback methods to CoAP server
kadonotakashi 0:8fdf9a60065b 216 *
kadonotakashi 0:8fdf9a60065b 217 * Register application and informs CoAP services unsecure registery callback function.
kadonotakashi 0:8fdf9a60065b 218 *
kadonotakashi 0:8fdf9a60065b 219 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 220 * \param *uri Uri address.
kadonotakashi 0:8fdf9a60065b 221 *
kadonotakashi 0:8fdf9a60065b 222 * \return 0 for success / -1 for failure
kadonotakashi 0:8fdf9a60065b 223 */
kadonotakashi 0:8fdf9a60065b 224 extern int8_t coap_service_unregister_uri(int8_t service_id, const char *uri);
kadonotakashi 0:8fdf9a60065b 225
kadonotakashi 0:8fdf9a60065b 226 /**
kadonotakashi 0:8fdf9a60065b 227 * \brief Sends CoAP service request
kadonotakashi 0:8fdf9a60065b 228 *
kadonotakashi 0:8fdf9a60065b 229 * Build and sends CoAP service request message.
kadonotakashi 0:8fdf9a60065b 230 *
kadonotakashi 0:8fdf9a60065b 231 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 232 * \param options Options defined above.
kadonotakashi 0:8fdf9a60065b 233 * \param destination_addr IPv6 address.
kadonotakashi 0:8fdf9a60065b 234 * \param destination_port Destination port
kadonotakashi 0:8fdf9a60065b 235 * \param msg_type Message type can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 236 * \param msg_code Message code can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 237 * \param *uri Uri address.
kadonotakashi 0:8fdf9a60065b 238 * \param cont_type Content type can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 239 * \param payload_ptr Pointer to message content.
kadonotakashi 0:8fdf9a60065b 240 * \param payload_len Lenght of the message.
kadonotakashi 0:8fdf9a60065b 241 * \param *request_response_cb Callback to inform result of the request.
kadonotakashi 0:8fdf9a60065b 242 *
kadonotakashi 0:8fdf9a60065b 243 * \return msg_id Id number of the current message.
kadonotakashi 0:8fdf9a60065b 244 */
kadonotakashi 0:8fdf9a60065b 245 extern uint16_t coap_service_request_send(int8_t service_id, uint8_t options, const uint8_t destination_addr[static 16], uint16_t destination_port, sn_coap_msg_type_e msg_type, sn_coap_msg_code_e msg_code, const char *uri,
kadonotakashi 0:8fdf9a60065b 246 sn_coap_content_format_e cont_type, const uint8_t *payload_ptr, uint16_t payload_len, coap_service_response_recv *request_response_cb);
kadonotakashi 0:8fdf9a60065b 247
kadonotakashi 0:8fdf9a60065b 248 /**
kadonotakashi 0:8fdf9a60065b 249 * \brief Sends CoAP service response
kadonotakashi 0:8fdf9a60065b 250 *
kadonotakashi 0:8fdf9a60065b 251 * Build and sends CoAP service response message.
kadonotakashi 0:8fdf9a60065b 252 *
kadonotakashi 0:8fdf9a60065b 253 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 254 * \param options Options defined above.
kadonotakashi 0:8fdf9a60065b 255 * \param request_ptr Pointer to CoAP request message header structure.
kadonotakashi 0:8fdf9a60065b 256 * \param message_code Message code can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 257 * \param content_type Content type can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 258 * \param payload_ptr Pointer to message content.
kadonotakashi 0:8fdf9a60065b 259 * \param payload_len Lenght of the message.
kadonotakashi 0:8fdf9a60065b 260 *
kadonotakashi 0:8fdf9a60065b 261 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 262 *- 0 For success
kadonotakashi 0:8fdf9a60065b 263 */
kadonotakashi 0:8fdf9a60065b 264 extern int8_t coap_service_response_send(int8_t service_id, uint8_t options, sn_coap_hdr_s *request_ptr, sn_coap_msg_code_e message_code, sn_coap_content_format_e content_type, const uint8_t *payload_ptr,uint16_t payload_len);
kadonotakashi 0:8fdf9a60065b 265
kadonotakashi 0:8fdf9a60065b 266 /**
kadonotakashi 0:8fdf9a60065b 267 * \brief Sends CoAP service response
kadonotakashi 0:8fdf9a60065b 268 *
kadonotakashi 0:8fdf9a60065b 269 * Build and sends CoAP service response message based on CoAP request message id.
kadonotakashi 0:8fdf9a60065b 270 *
kadonotakashi 0:8fdf9a60065b 271 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 272 * \param options Options defined above.
kadonotakashi 0:8fdf9a60065b 273 * \param msg_id Request messages ID.
kadonotakashi 0:8fdf9a60065b 274 * \param msg_type Message type can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 275 * \param message_code Message code can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 276 * \param content_type Content type can be found from sn_coap_header.
kadonotakashi 0:8fdf9a60065b 277 * \param payload_ptr Pointer to message content.
kadonotakashi 0:8fdf9a60065b 278 * \param payload_len Lenght of the message.
kadonotakashi 0:8fdf9a60065b 279 *
kadonotakashi 0:8fdf9a60065b 280 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 281 *- 0 For success
kadonotakashi 0:8fdf9a60065b 282 */
kadonotakashi 0:8fdf9a60065b 283 extern int8_t coap_service_response_send_by_msg_id(int8_t service_id, uint8_t options, uint16_t msg_id, sn_coap_msg_code_e message_code, sn_coap_content_format_e content_type, const uint8_t *payload_ptr,uint16_t payload_len);
kadonotakashi 0:8fdf9a60065b 284
kadonotakashi 0:8fdf9a60065b 285
kadonotakashi 0:8fdf9a60065b 286
kadonotakashi 0:8fdf9a60065b 287 /**
kadonotakashi 0:8fdf9a60065b 288 * \brief Delete CoAP request transaction
kadonotakashi 0:8fdf9a60065b 289 *
kadonotakashi 0:8fdf9a60065b 290 * Removes pending CoAP transaction from service.
kadonotakashi 0:8fdf9a60065b 291 *
kadonotakashi 0:8fdf9a60065b 292 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 293 * \param msg_id Message ID number.
kadonotakashi 0:8fdf9a60065b 294 *
kadonotakashi 0:8fdf9a60065b 295 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 296 *- 0 For success
kadonotakashi 0:8fdf9a60065b 297 */
kadonotakashi 0:8fdf9a60065b 298 extern int8_t coap_service_request_delete(int8_t service_id, uint16_t msg_id);
kadonotakashi 0:8fdf9a60065b 299
kadonotakashi 0:8fdf9a60065b 300 /**
kadonotakashi 0:8fdf9a60065b 301 * \brief Set DTLS handshake timeout values
kadonotakashi 0:8fdf9a60065b 302 *
kadonotakashi 0:8fdf9a60065b 303 * Configures the DTLS handshake timeout values.
kadonotakashi 0:8fdf9a60065b 304 *
kadonotakashi 0:8fdf9a60065b 305 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 306 * \param min Initial timeout value.
kadonotakashi 0:8fdf9a60065b 307 * \param max Maximum value of timeout.
kadonotakashi 0:8fdf9a60065b 308 *
kadonotakashi 0:8fdf9a60065b 309 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 310 *- 0 For success
kadonotakashi 0:8fdf9a60065b 311 */
kadonotakashi 0:8fdf9a60065b 312 extern int8_t coap_service_set_handshake_timeout(int8_t service_id, uint32_t min, uint32_t max);
kadonotakashi 0:8fdf9a60065b 313
kadonotakashi 0:8fdf9a60065b 314 /**
kadonotakashi 0:8fdf9a60065b 315 * \brief Set DTLS handshake limit values
kadonotakashi 0:8fdf9a60065b 316 *
kadonotakashi 0:8fdf9a60065b 317 * Configures the limits for DTLS sessions. Values must be > 0.
kadonotakashi 0:8fdf9a60065b 318 *
kadonotakashi 0:8fdf9a60065b 319 * \param handshakes_max Maximum amount of simultaneous handshakes.
kadonotakashi 0:8fdf9a60065b 320 * \param connections_max Maximum amount of sessions.
kadonotakashi 0:8fdf9a60065b 321 *
kadonotakashi 0:8fdf9a60065b 322 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 323 *- 0 For success
kadonotakashi 0:8fdf9a60065b 324 */
kadonotakashi 0:8fdf9a60065b 325 extern int8_t coap_service_handshake_limits_set(uint8_t handshakes_max, uint8_t connections_max);
kadonotakashi 0:8fdf9a60065b 326
kadonotakashi 0:8fdf9a60065b 327 /**
kadonotakashi 0:8fdf9a60065b 328 * \brief Set CoAP duplication message buffer size
kadonotakashi 0:8fdf9a60065b 329 *
kadonotakashi 0:8fdf9a60065b 330 * Configures the CoAP duplication message buffer size.
kadonotakashi 0:8fdf9a60065b 331 *
kadonotakashi 0:8fdf9a60065b 332 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 333 * \param size Buffer size (messages).
kadonotakashi 0:8fdf9a60065b 334 *
kadonotakashi 0:8fdf9a60065b 335 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 336 *- 0 For success
kadonotakashi 0:8fdf9a60065b 337 */
kadonotakashi 0:8fdf9a60065b 338 extern int8_t coap_service_set_duplicate_message_buffer(int8_t service_id, uint8_t size);
kadonotakashi 0:8fdf9a60065b 339
kadonotakashi 0:8fdf9a60065b 340 /**
kadonotakashi 0:8fdf9a60065b 341 * \brief Set DTLS certificates
kadonotakashi 0:8fdf9a60065b 342 *
kadonotakashi 0:8fdf9a60065b 343 * Set DTLS certificates.
kadonotakashi 0:8fdf9a60065b 344 *
kadonotakashi 0:8fdf9a60065b 345 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 346 * \param cert Pointer to certificate chain.
kadonotakashi 0:8fdf9a60065b 347 * \param cert_len Certificate length.
kadonotakashi 0:8fdf9a60065b 348 * \param priv_key pointer to private key.
kadonotakashi 0:8fdf9a60065b 349 * \param priv_key_len length of private key.
kadonotakashi 0:8fdf9a60065b 350 *
kadonotakashi 0:8fdf9a60065b 351 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 352 *- 0 For success
kadonotakashi 0:8fdf9a60065b 353 */
kadonotakashi 0:8fdf9a60065b 354
kadonotakashi 0:8fdf9a60065b 355 extern int8_t coap_service_certificate_set(int8_t service_id, const unsigned char *cert, uint16_t cert_len, const unsigned char *priv_key, uint8_t priv_key_len);
kadonotakashi 0:8fdf9a60065b 356
kadonotakashi 0:8fdf9a60065b 357 /**
kadonotakashi 0:8fdf9a60065b 358 * \brief Set CoAP blockwise payload size
kadonotakashi 0:8fdf9a60065b 359 *
kadonotakashi 0:8fdf9a60065b 360 * Set CoAP blockwise payload limit. If payload is bigger than configured limit, CoAP message will use blockwise option when sending.
kadonotakashi 0:8fdf9a60065b 361 *
kadonotakashi 0:8fdf9a60065b 362 * \param service_id Id number of the current service.
kadonotakashi 0:8fdf9a60065b 363 * \param size Blockwise size. Valid sizes are 16, 32, 64, 128, 256, 512 and 1024 bytes
kadonotakashi 0:8fdf9a60065b 364 *
kadonotakashi 0:8fdf9a60065b 365 * \return -1 For failure
kadonotakashi 0:8fdf9a60065b 366 *- 0 For success
kadonotakashi 0:8fdf9a60065b 367 */
kadonotakashi 0:8fdf9a60065b 368 extern int8_t coap_service_blockwise_size_set(int8_t service_id, uint16_t size);
kadonotakashi 0:8fdf9a60065b 369 #ifdef __cplusplus
kadonotakashi 0:8fdf9a60065b 370 }
kadonotakashi 0:8fdf9a60065b 371 #endif
kadonotakashi 0:8fdf9a60065b 372
kadonotakashi 0:8fdf9a60065b 373 #endif /* COAP_SERVICE_API_H_ */