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-client-c 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 uint16_t resource_root_count; 00055 resource_list_t resource_root_list; 00056 00057 void *(*sn_grs_alloc)(uint16_t); 00058 void (*sn_grs_free)(void *); 00059 uint8_t (*sn_grs_tx_callback)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *); 00060 int8_t (*sn_grs_rx_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *); 00061 }; 00062 00063 00064 struct nsdl_s { 00065 struct grs_s *grs; 00066 00067 uint8_t *oma_bs_address_ptr; /* Bootstrap address pointer. If null, no bootstrap in use */ 00068 uint8_t oma_bs_address_len; /* Bootstrap address length */ 00069 uint16_t oma_bs_port; /* Bootstrap port */ 00070 void (*sn_nsdl_oma_bs_done_cb)(sn_nsdl_oma_server_info_t *server_info_ptr); /* Callback to inform application when bootstrap is done */ 00071 00072 sn_nsdl_ep_parameters_s *ep_information_ptr; // Endpoint parameters, Name, Domain etc.. 00073 sn_nsdl_oma_server_info_t *nsp_address_ptr; // NSP server address information 00074 uint8_t sn_nsdl_endpoint_registered; 00075 00076 uint16_t register_msg_id; 00077 uint16_t unregister_msg_id; 00078 00079 void *(*sn_nsdl_alloc)(uint16_t); 00080 void (*sn_nsdl_free)(void *); 00081 uint8_t (*sn_nsdl_tx_callback)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *); 00082 uint8_t (*sn_nsdl_rx_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *); 00083 }; 00084 00085 /***** Function prototypes *****/ 00086 /** 00087 * \fn extern grs_s *sn_grs_init (uint8_t (*sn_grs_tx_callback_ptr)(sn_nsdl_capab_e , uint8_t *, uint16_t, 00088 * sn_nsdl_addr_s *), uint8_t (*sn_grs_rx_callback_ptr)(sn_coap_hdr_s *, sn_nsdl_addr_s *), 00089 * sn_grs_mem_s *sn_memory) 00090 * 00091 * \brief GRS library initialize function. 00092 * 00093 * This function initializes GRS and CoAP. 00094 * 00095 * \param sn_grs_tx_callback A function pointer to a transmit callback function. Should return 1 when succeed, 0 when failed 00096 * \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 00097 * upper level (NSDL) to be proceed. 00098 * \param sn_memory A pointer to a structure containing the platform specific functions for memory allocation and free. 00099 * 00100 * \return success pointer to handle, failure = NULL 00101 * 00102 */ 00103 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, 00104 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 *)); 00105 00106 extern const sn_nsdl_resource_info_s *sn_grs_get_first_resource(struct grs_s *handle); 00107 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); 00108 extern int8_t sn_grs_process_coap(struct nsdl_s *handle, sn_coap_hdr_s *coap_packet_ptr, sn_nsdl_addr_s *src); 00109 extern sn_nsdl_resource_info_s *sn_grs_search_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path, uint8_t search_method); 00110 extern int8_t sn_grs_destroy(struct grs_s *handle); 00111 extern sn_grs_resource_list_s *sn_grs_list_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path); 00112 extern void sn_grs_free_resource_list(struct grs_s *handle, sn_grs_resource_list_s *list); 00113 extern int8_t sn_grs_update_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res); 00114 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); 00115 extern int8_t sn_grs_create_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res); 00116 extern int8_t sn_grs_delete_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path); 00117 extern void sn_grs_mark_resources_as_registered(struct nsdl_s *handle); 00118 00119 #ifdef __cplusplus 00120 } 00121 #endif 00122 00123 00124 00125 00126 #endif /* GRS_H_ */
Generated on Wed Jul 13 2022 17:43:56 by
1.7.2
