Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of OmniWheels by
coap_message_handler.h
00001 /* 00002 * Copyright (c) 2015-2017, Arm Limited and affiliates. 00003 * SPDX-License-Identifier: Apache-2.0 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 */ 00017 00018 #ifndef __COAP_MESSAGE_HANDLER_H__ 00019 #define __COAP_MESSAGE_HANDLER_H__ 00020 00021 #include <inttypes.h> 00022 #include "mbed-coap/sn_coap_header.h" 00023 #include "ns_list.h" 00024 00025 #define TRANSACTION_LIFETIME 180 00026 /* Default value for CoAP duplicate message buffer (0 = disabled) */ 00027 #define DUPLICATE_MESSAGE_BUFFER_SIZE 0 00028 00029 /* Default values for CoAP resendings */ 00030 #define COAP_RESENDING_COUNT 3 00031 #define COAP_RESENDING_INTERVAL 10 00032 00033 /** 00034 * \brief Service message response receive callback. 00035 * 00036 * Function that handles CoAP service message receiving and parsing 00037 * 00038 * \param msg_id Id number of the current message. 00039 * \param response_ptr Pointer to CoAP header structure. 00040 * 00041 * \return 0 for success / -1 for failure 00042 */ 00043 typedef int coap_message_handler_response_recv(int8_t service_id, uint8_t source_address[static 16], uint16_t source_port, sn_coap_hdr_s *response_ptr); 00044 00045 typedef struct coap_msg_handler_s { 00046 void *(*sn_coap_service_malloc)(uint16_t); 00047 void (*sn_coap_service_free)(void *); 00048 00049 uint8_t (*sn_coap_tx_callback)(uint8_t *, uint16_t, sn_nsdl_addr_s *, void *); 00050 00051 struct coap_s *coap; 00052 } coap_msg_handler_t; 00053 00054 typedef struct coap_transaction { 00055 uint8_t remote_address[16]; 00056 uint8_t local_address[16]; 00057 uint8_t token[8]; 00058 uint32_t valid_until; 00059 uint8_t *data_ptr; 00060 coap_message_handler_response_recv *resp_cb; 00061 uint16_t remote_port; 00062 uint16_t msg_id; 00063 uint16_t data_len; 00064 int8_t service_id; 00065 uint8_t options; 00066 uint8_t token_len; 00067 sn_coap_msg_type_e req_msg_type; 00068 bool client_request: 1; 00069 00070 ns_list_link_t link; 00071 } coap_transaction_t; 00072 00073 00074 extern coap_msg_handler_t *coap_message_handler_init(void *(*used_malloc_func_ptr)(uint16_t), void (*used_free_func_ptr)(void *), 00075 uint8_t (*used_tx_callback_ptr)(uint8_t *, uint16_t, sn_nsdl_addr_s *, void *)); 00076 00077 extern int8_t coap_message_handler_destroy(coap_msg_handler_t *handle); 00078 00079 extern coap_transaction_t *coap_message_handler_transaction_valid(coap_transaction_t *tr_ptr); 00080 00081 extern coap_transaction_t *coap_message_handler_find_transaction(uint8_t *address_ptr, uint16_t port); 00082 00083 extern int16_t coap_message_handler_coap_msg_process(coap_msg_handler_t *handle, int8_t socket_id, const uint8_t source_addr_ptr[static 16], uint16_t port, const uint8_t dst_addr_ptr[static 16], 00084 uint8_t *data_ptr, uint16_t data_len, int16_t (cb)(int8_t, sn_coap_hdr_s *, coap_transaction_t *)); 00085 00086 extern uint16_t coap_message_handler_request_send(coap_msg_handler_t *handle, int8_t service_id, uint8_t options, const uint8_t destination_addr[static 16], 00087 uint16_t destination_port, sn_coap_msg_type_e msg_type, sn_coap_msg_code_e msg_code, const char *uri, sn_coap_content_format_e cont_type, 00088 const uint8_t *payload_ptr, uint16_t payload_len, coap_message_handler_response_recv *request_response_cb); 00089 00090 extern int8_t coap_message_handler_response_send(coap_msg_handler_t *handle, int8_t service_id, uint8_t options, sn_coap_hdr_s *request_ptr, sn_coap_msg_code_e message_code, 00091 sn_coap_content_format_e content_type, const uint8_t *payload_ptr, uint16_t payload_len); 00092 00093 extern int8_t coap_message_handler_request_delete(coap_msg_handler_t *handle, int8_t service_id, uint16_t msg_id); 00094 00095 extern int8_t coap_message_handler_exec(coap_msg_handler_t *handle, uint32_t current_time); 00096 00097 extern void transaction_delete(coap_transaction_t *this); 00098 00099 extern void transactions_delete_all(uint8_t *address_ptr, uint16_t port); 00100 00101 extern int8_t coap_message_handler_response_send_by_msg_id(coap_msg_handler_t *handle, int8_t service_id, uint8_t options, uint16_t msg_id, sn_coap_msg_code_e message_code, 00102 sn_coap_content_format_e content_type, const uint8_t *payload_ptr,uint16_t payload_len); 00103 00104 #endif
Generated on Fri Jul 22 2022 04:53:46 by
1.7.2
