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 mbed-os by
sn_grs.h
00001 /* 00002 * Copyright (c) 2011-2015 ARM Limited. All rights reserved. 00003 * SPDX-License-Identifier: Apache-2.0 00004 * Licensed under the Apache License, Version 2.0 (the License); you may 00005 * not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an AS IS BASIS, WITHOUT 00012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 #ifndef GRS_H_ 00017 #define GRS_H_ 00018 00019 00020 #ifdef __cplusplus 00021 extern "C" { 00022 #endif 00023 00024 00025 #define SN_GRS_RESOURCE_ALREADY_EXISTS -2 00026 #define SN_GRS_INVALID_PATH -3 00027 #define SN_GRS_LIST_ADDING_FAILURE -4 00028 #define SN_GRS_RESOURCE_UPDATED -5 00029 00030 #define ACCESS_DENIED -6 00031 00032 #define SN_GRS_DELETE_METHOD 0 00033 #define SN_GRS_SEARCH_METHOD 1 00034 00035 #define SN_GRS_DEFAULT_ACCESS 0x0F 00036 00037 #define SN_NDSL_RESOURCE_NOT_REGISTERED 0 00038 #define SN_NDSL_RESOURCE_REGISTERING 1 00039 #define SN_NDSL_RESOURCE_REGISTERED 2 00040 00041 /***** Structs *****/ 00042 00043 typedef struct sn_grs_version_ { 00044 uint8_t major_version; 00045 uint8_t minor_version; 00046 uint8_t build; 00047 } sn_grs_version_s; 00048 00049 typedef NS_LIST_HEAD(sn_nsdl_resource_info_s, link) resource_list_t; 00050 00051 struct grs_s { 00052 struct coap_s *coap; 00053 00054 void *(*sn_grs_alloc)(uint16_t); 00055 void (*sn_grs_free)(void *); 00056 uint8_t (*sn_grs_tx_callback)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *); 00057 int8_t (*sn_grs_rx_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *); 00058 00059 uint16_t resource_root_count; 00060 resource_list_t resource_root_list; 00061 }; 00062 00063 00064 struct nsdl_s { 00065 uint16_t update_register_msg_id; 00066 uint16_t register_msg_len; 00067 uint16_t update_register_msg_len; 00068 00069 uint16_t register_msg_id; 00070 uint16_t unregister_msg_id; 00071 00072 uint16_t bootstrap_msg_id; 00073 uint16_t oma_bs_port; /* Bootstrap port */ 00074 uint8_t oma_bs_address_len; /* Bootstrap address length */ 00075 unsigned int sn_nsdl_endpoint_registered:1; 00076 bool handle_bootstrap_msg:1; 00077 00078 struct grs_s *grs; 00079 uint8_t *oma_bs_address_ptr; /* Bootstrap address pointer. If null, no bootstrap in use */ 00080 sn_nsdl_ep_parameters_s *ep_information_ptr; // Endpoint parameters, Name, Domain etc.. 00081 sn_nsdl_oma_server_info_t *nsp_address_ptr; // NSP server address information 00082 00083 void (*sn_nsdl_oma_bs_done_cb)(sn_nsdl_oma_server_info_t *server_info_ptr); /* Callback to inform application when bootstrap is done */ 00084 void *(*sn_nsdl_alloc)(uint16_t); 00085 void (*sn_nsdl_free)(void *); 00086 uint8_t (*sn_nsdl_tx_callback)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *); 00087 uint8_t (*sn_nsdl_rx_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *); 00088 void (*sn_nsdl_oma_bs_done_cb_handle)(sn_nsdl_oma_server_info_t *server_info_ptr, 00089 struct nsdl_s *handle); /* Callback to inform application when bootstrap is done with nsdl handle */ 00090 }; 00091 00092 /***** Function prototypes *****/ 00093 /** 00094 * \fn extern grs_s *sn_grs_init (uint8_t (*sn_grs_tx_callback_ptr)(sn_nsdl_capab_e , uint8_t *, uint16_t, 00095 * sn_nsdl_addr_s *), uint8_t (*sn_grs_rx_callback_ptr)(sn_coap_hdr_s *, sn_nsdl_addr_s *), 00096 * sn_grs_mem_s *sn_memory) 00097 * 00098 * \brief GRS library initialize function. 00099 * 00100 * This function initializes GRS and CoAP. 00101 * 00102 * \param sn_grs_tx_callback A function pointer to a transmit callback function. Should return 1 when succeed, 0 when failed 00103 * \param *sn_grs_rx_callback_ptr A function pointer to a receiving callback function. If received packet is not for GRS, it will be passed to 00104 * upper level (NSDL) to be proceed. 00105 * \param sn_memory A pointer to a structure containing the platform specific functions for memory allocation and free. 00106 * 00107 * \return success pointer to handle, failure = NULL 00108 * 00109 */ 00110 extern struct grs_s *sn_grs_init(uint8_t (*sn_grs_tx_callback_ptr)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, 00111 sn_nsdl_addr_s *), int8_t (*sn_grs_rx_callback_ptr)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *), void *(*sn_grs_alloc)(uint16_t), void (*sn_grs_free)(void *)); 00112 00113 extern const sn_nsdl_resource_info_s *sn_grs_get_first_resource(struct grs_s *handle); 00114 extern const sn_nsdl_resource_info_s *sn_grs_get_next_resource(struct grs_s *handle, const sn_nsdl_resource_info_s *sn_grs_current_resource); 00115 extern int8_t sn_grs_process_coap(struct nsdl_s *handle, sn_coap_hdr_s *coap_packet_ptr, sn_nsdl_addr_s *src); 00116 extern sn_nsdl_resource_info_s *sn_grs_search_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path, uint8_t search_method); 00117 extern int8_t sn_grs_destroy(struct grs_s *handle); 00118 extern sn_grs_resource_list_s *sn_grs_list_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path); 00119 extern void sn_grs_free_resource_list(struct grs_s *handle, sn_grs_resource_list_s *list); 00120 extern int8_t sn_grs_update_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res); 00121 extern int8_t sn_grs_send_coap_message(struct nsdl_s *handle, sn_nsdl_addr_s *address_ptr, sn_coap_hdr_s *coap_hdr_ptr); 00122 extern int8_t sn_grs_create_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res); 00123 extern int8_t sn_grs_put_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res); 00124 extern int8_t sn_grs_delete_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path); 00125 extern void sn_grs_mark_resources_as_registered(struct nsdl_s *handle); 00126 00127 #ifdef __cplusplus 00128 } 00129 #endif 00130 00131 00132 00133 00134 #endif /* GRS_H_ */
Generated on Tue Jul 12 2022 13:16:06 by
