sandbox / mbed-client-c

Fork of mbed-client-c by Christopher Haster

Committer:
Yogesh Pande
Date:
Sat Apr 02 00:39:03 2016 +0300
Revision:
4:5d91b0f5038c
Parent:
1:43f5c94c6771
Latest mbed-client-c sources from Github.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yogesh Pande 4:5d91b0f5038c 1 /*
Yogesh Pande 4:5d91b0f5038c 2 * Copyright (c) 2011-2015 ARM Limited. All rights reserved.
Yogesh Pande 4:5d91b0f5038c 3 * SPDX-License-Identifier: Apache-2.0
Yogesh Pande 4:5d91b0f5038c 4 * Licensed under the Apache License, Version 2.0 (the License); you may
Yogesh Pande 4:5d91b0f5038c 5 * not use this file except in compliance with the License.
Yogesh Pande 4:5d91b0f5038c 6 * You may obtain a copy of the License at
Yogesh Pande 4:5d91b0f5038c 7 *
Yogesh Pande 4:5d91b0f5038c 8 * http://www.apache.org/licenses/LICENSE-2.0
Yogesh Pande 4:5d91b0f5038c 9 *
Yogesh Pande 4:5d91b0f5038c 10 * Unless required by applicable law or agreed to in writing, software
Yogesh Pande 4:5d91b0f5038c 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
Yogesh Pande 4:5d91b0f5038c 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Yogesh Pande 4:5d91b0f5038c 13 * See the License for the specific language governing permissions and
Yogesh Pande 4:5d91b0f5038c 14 * limitations under the License.
Yogesh Pande 4:5d91b0f5038c 15 */
Yogesh Pande 4:5d91b0f5038c 16
Yogesh Pande 4:5d91b0f5038c 17 /**
Yogesh Pande 4:5d91b0f5038c 18 * \file sn_nsdl_lib.h
Yogesh Pande 4:5d91b0f5038c 19 *
Yogesh Pande 4:5d91b0f5038c 20 * \brief NanoService Devices Library header file
Yogesh Pande 4:5d91b0f5038c 21 *
Yogesh Pande 4:5d91b0f5038c 22 *
Yogesh Pande 4:5d91b0f5038c 23 */
Yogesh Pande 4:5d91b0f5038c 24
Yogesh Pande 4:5d91b0f5038c 25 #ifndef SN_NSDL_LIB_H_
Yogesh Pande 4:5d91b0f5038c 26 #define SN_NSDL_LIB_H_
Yogesh Pande 4:5d91b0f5038c 27
Yogesh Pande 4:5d91b0f5038c 28 #include "ns_list.h"
Yogesh Pande 4:5d91b0f5038c 29
Yogesh Pande 4:5d91b0f5038c 30 #ifdef __cplusplus
Yogesh Pande 4:5d91b0f5038c 31 extern "C" {
Yogesh Pande 4:5d91b0f5038c 32 #endif
Yogesh Pande 4:5d91b0f5038c 33
Yogesh Pande 4:5d91b0f5038c 34 #define SN_NSDL_ENDPOINT_NOT_REGISTERED 0
Yogesh Pande 4:5d91b0f5038c 35 #define SN_NSDL_ENDPOINT_IS_REGISTERED 1
Yogesh Pande 4:5d91b0f5038c 36
Yogesh Pande 4:5d91b0f5038c 37 /* Handle structure */
Yogesh Pande 4:5d91b0f5038c 38 struct nsdl_s;
Yogesh Pande 4:5d91b0f5038c 39
Yogesh Pande 4:5d91b0f5038c 40 /**
Yogesh Pande 4:5d91b0f5038c 41 * \brief Received device server security
Yogesh Pande 4:5d91b0f5038c 42 */
Yogesh Pande 4:5d91b0f5038c 43 typedef enum omalw_server_security_ {
Yogesh Pande 4:5d91b0f5038c 44 SEC_NOT_SET = -1,
Yogesh Pande 4:5d91b0f5038c 45 PSK = 0,
Yogesh Pande 4:5d91b0f5038c 46 RPK = 1,
Yogesh Pande 4:5d91b0f5038c 47 CERTIFICATE = 2,
Yogesh Pande 4:5d91b0f5038c 48 NO_SEC = 3
Yogesh Pande 4:5d91b0f5038c 49 } omalw_server_security_t;
Yogesh Pande 4:5d91b0f5038c 50
Yogesh Pande 4:5d91b0f5038c 51 /**
Yogesh Pande 4:5d91b0f5038c 52 * \brief Endpoint binding and mode
Yogesh Pande 4:5d91b0f5038c 53 */
Yogesh Pande 4:5d91b0f5038c 54 typedef enum sn_nsdl_oma_binding_and_mode_ {
Yogesh Pande 4:5d91b0f5038c 55 BINDING_MODE_NOT_SET = 0,
Yogesh Pande 4:5d91b0f5038c 56 BINDING_MODE_U = 0x01,
Yogesh Pande 4:5d91b0f5038c 57 BINDING_MODE_Q = 0x02,
Yogesh Pande 4:5d91b0f5038c 58 BINDING_MODE_S = 0x04
Yogesh Pande 4:5d91b0f5038c 59 } sn_nsdl_oma_binding_and_mode_t;
Yogesh Pande 4:5d91b0f5038c 60
Yogesh Pande 4:5d91b0f5038c 61 /**
Yogesh Pande 4:5d91b0f5038c 62 * \brief Endpoint registration mode.
Yogesh Pande 4:5d91b0f5038c 63 * If REGISTER_WITH_RESOURCES, endpoint sends list of all resources during registration.
Yogesh Pande 4:5d91b0f5038c 64 * If REGISTER_WITH_TEMPLATE, endpoint sends registration without resource list. Device server must have
Yogesh Pande 4:5d91b0f5038c 65 * correctly configured template.
Yogesh Pande 4:5d91b0f5038c 66 */
Yogesh Pande 4:5d91b0f5038c 67 typedef enum sn_nsdl_registration_mode_ {
Yogesh Pande 4:5d91b0f5038c 68 REGISTER_WITH_RESOURCES = 0,
Yogesh Pande 4:5d91b0f5038c 69 REGISTER_WITH_TEMPLATE
Yogesh Pande 4:5d91b0f5038c 70 } sn_nsdl_registration_mode_t;
Yogesh Pande 4:5d91b0f5038c 71
Yogesh Pande 4:5d91b0f5038c 72
Yogesh Pande 4:5d91b0f5038c 73 typedef struct omalw_certificate_list_ {
Yogesh Pande 4:5d91b0f5038c 74 uint8_t certificate_chain_len;
Yogesh Pande 4:5d91b0f5038c 75 uint8_t *certificate_ptr[2];
Yogesh Pande 4:5d91b0f5038c 76 uint16_t certificate_len[2];
Yogesh Pande 4:5d91b0f5038c 77 uint8_t *own_private_key_ptr;
Yogesh Pande 4:5d91b0f5038c 78 uint16_t own_private_key_len;
Yogesh Pande 4:5d91b0f5038c 79 } omalw_certificate_list_t;
Yogesh Pande 4:5d91b0f5038c 80
Yogesh Pande 4:5d91b0f5038c 81 /**
Yogesh Pande 4:5d91b0f5038c 82 * \brief Endpoint registration parameters
Yogesh Pande 4:5d91b0f5038c 83 */
Yogesh Pande 4:5d91b0f5038c 84 typedef struct sn_nsdl_ep_parameters_ {
Yogesh Pande 4:5d91b0f5038c 85 uint8_t *endpoint_name_ptr; /**< Endpoint name */
Yogesh Pande 4:5d91b0f5038c 86 uint8_t endpoint_name_len;
Yogesh Pande 4:5d91b0f5038c 87
Yogesh Pande 4:5d91b0f5038c 88 uint8_t *domain_name_ptr; /**< Domain to register. If null, NSP uses default domain */
Yogesh Pande 4:5d91b0f5038c 89 uint8_t domain_name_len;
Yogesh Pande 4:5d91b0f5038c 90
Yogesh Pande 4:5d91b0f5038c 91 uint8_t *type_ptr; /**< Endpoint type */
Yogesh Pande 4:5d91b0f5038c 92 uint8_t type_len;
Yogesh Pande 4:5d91b0f5038c 93
Yogesh Pande 4:5d91b0f5038c 94 uint8_t *lifetime_ptr; /**< Endpoint lifetime in seconds. eg. "1200" = 1200 seconds */
Yogesh Pande 4:5d91b0f5038c 95 uint8_t lifetime_len;
Yogesh Pande 4:5d91b0f5038c 96
Yogesh Pande 4:5d91b0f5038c 97 sn_nsdl_registration_mode_t ds_register_mode; /**< Defines registration mode */
Yogesh Pande 4:5d91b0f5038c 98 sn_nsdl_oma_binding_and_mode_t binding_and_mode; /**< Defines endpoints binding and mode */
Yogesh Pande 4:5d91b0f5038c 99
Yogesh Pande 4:5d91b0f5038c 100 uint8_t *location_ptr; /**< Endpoint location in server, optional parameter,default is NULL */
Yogesh Pande 4:5d91b0f5038c 101 uint8_t location_len;
Yogesh Pande 4:5d91b0f5038c 102
Yogesh Pande 4:5d91b0f5038c 103 } sn_nsdl_ep_parameters_s;
Yogesh Pande 4:5d91b0f5038c 104
Yogesh Pande 4:5d91b0f5038c 105 /**
Yogesh Pande 4:5d91b0f5038c 106 * \brief For internal use
Yogesh Pande 4:5d91b0f5038c 107 */
Yogesh Pande 4:5d91b0f5038c 108 typedef struct sn_nsdl_sent_messages_ {
Yogesh Pande 4:5d91b0f5038c 109 uint16_t msg_id_number;
Yogesh Pande 4:5d91b0f5038c 110 uint8_t message_type;
Yogesh Pande 4:5d91b0f5038c 111 ns_list_link_t link;
Yogesh Pande 4:5d91b0f5038c 112 } sn_nsdl_sent_messages_s;
Yogesh Pande 4:5d91b0f5038c 113
Yogesh Pande 4:5d91b0f5038c 114 /**
Yogesh Pande 4:5d91b0f5038c 115 * \brief Includes resource path
Yogesh Pande 4:5d91b0f5038c 116 */
Yogesh Pande 4:5d91b0f5038c 117 typedef struct sn_grs_resource_ {
Yogesh Pande 4:5d91b0f5038c 118 uint8_t pathlen;
Yogesh Pande 4:5d91b0f5038c 119 uint8_t *path;
Yogesh Pande 4:5d91b0f5038c 120 } sn_grs_resource_s;
Yogesh Pande 4:5d91b0f5038c 121
Yogesh Pande 4:5d91b0f5038c 122 /**
Yogesh Pande 4:5d91b0f5038c 123 * \brief Table of created resources
Yogesh Pande 4:5d91b0f5038c 124 */
Yogesh Pande 4:5d91b0f5038c 125 typedef struct sn_grs_resource_list_ {
Yogesh Pande 4:5d91b0f5038c 126 uint8_t res_count; /**< Number of resources */
Yogesh Pande 4:5d91b0f5038c 127 sn_grs_resource_s *res;
Yogesh Pande 4:5d91b0f5038c 128 } sn_grs_resource_list_s;
Yogesh Pande 4:5d91b0f5038c 129
Yogesh Pande 4:5d91b0f5038c 130 /**
Yogesh Pande 4:5d91b0f5038c 131 * \brief Resource access rights
Yogesh Pande 4:5d91b0f5038c 132 */
Yogesh Pande 4:5d91b0f5038c 133 typedef enum sn_grs_resource_acl_ {
Yogesh Pande 4:5d91b0f5038c 134 SN_GRS_GET_ALLOWED = 0x01 ,
Yogesh Pande 4:5d91b0f5038c 135 SN_GRS_PUT_ALLOWED = 0x02,
Yogesh Pande 4:5d91b0f5038c 136 SN_GRS_POST_ALLOWED = 0x04,
Yogesh Pande 4:5d91b0f5038c 137 SN_GRS_DELETE_ALLOWED = 0x08
Yogesh Pande 4:5d91b0f5038c 138 } sn_grs_resource_acl_e;
Yogesh Pande 4:5d91b0f5038c 139
Yogesh Pande 4:5d91b0f5038c 140
Yogesh Pande 4:5d91b0f5038c 141 typedef enum sn_nsdl_oma_device_error_ {
Yogesh Pande 4:5d91b0f5038c 142 NO_ERROR = 0,
Yogesh Pande 4:5d91b0f5038c 143 LOW_BATTERY_POWER = 1,
Yogesh Pande 4:5d91b0f5038c 144 EXTERNAL_POWER_SUPPLY_OFF = 2,
Yogesh Pande 4:5d91b0f5038c 145 GPS_MODULE_FAILURE = 3,
Yogesh Pande 4:5d91b0f5038c 146 LOW_RECEIVED_SIGNAL_STRENGTH = 4,
Yogesh Pande 4:5d91b0f5038c 147 OUT_OF_MEMORY = 5,
Yogesh Pande 4:5d91b0f5038c 148 SMS_FAILURE = 6,
Yogesh Pande 4:5d91b0f5038c 149 IP_CONN_FAILURE = 7,
Yogesh Pande 4:5d91b0f5038c 150 PERIPHERAL_MALFUNCTION = 8
Yogesh Pande 4:5d91b0f5038c 151 } sn_nsdl_oma_device_error_t;
Yogesh Pande 4:5d91b0f5038c 152
Yogesh Pande 4:5d91b0f5038c 153 /**
Yogesh Pande 4:5d91b0f5038c 154 * \brief Defines the resource mode
Yogesh Pande 4:5d91b0f5038c 155 */
Yogesh Pande 4:5d91b0f5038c 156 typedef enum sn_nsdl_resource_mode_ {
Yogesh Pande 4:5d91b0f5038c 157 SN_GRS_STATIC, /**< Static resources have some value that doesn't change */
Yogesh Pande 4:5d91b0f5038c 158 SN_GRS_DYNAMIC, /**< Dynamic resources are handled in application. Therefore one must give function callback pointer to them */
Yogesh Pande 4:5d91b0f5038c 159 SN_GRS_DIRECTORY /**< Directory resources are unused and unsupported */
Yogesh Pande 4:5d91b0f5038c 160 } sn_nsdl_resource_mode_e;
Yogesh Pande 4:5d91b0f5038c 161
Yogesh Pande 4:5d91b0f5038c 162 /**
Yogesh Pande 4:5d91b0f5038c 163 * \brief Resource registration parameters
Yogesh Pande 4:5d91b0f5038c 164 */
Yogesh Pande 4:5d91b0f5038c 165 typedef struct sn_nsdl_resource_parameters_ {
Yogesh Pande 4:5d91b0f5038c 166 uint8_t *resource_type_ptr;
Yogesh Pande 4:5d91b0f5038c 167 uint16_t resource_type_len;
Yogesh Pande 4:5d91b0f5038c 168
Yogesh Pande 4:5d91b0f5038c 169 uint8_t *interface_description_ptr;
Yogesh Pande 4:5d91b0f5038c 170 uint16_t interface_description_len;
Yogesh Pande 4:5d91b0f5038c 171
Yogesh Pande 4:5d91b0f5038c 172 uint8_t coap_content_type;
Yogesh Pande 4:5d91b0f5038c 173
Yogesh Pande 4:5d91b0f5038c 174 uint8_t mime_content_type;
Yogesh Pande 4:5d91b0f5038c 175
Yogesh Pande 4:5d91b0f5038c 176 uint8_t observable;
Yogesh Pande 4:5d91b0f5038c 177
Yogesh Pande 4:5d91b0f5038c 178 uint8_t registered;
Yogesh Pande 4:5d91b0f5038c 179
Yogesh Pande 4:5d91b0f5038c 180 } sn_nsdl_resource_parameters_s;
Yogesh Pande 4:5d91b0f5038c 181
Yogesh Pande 4:5d91b0f5038c 182 /**
Yogesh Pande 4:5d91b0f5038c 183 * \brief Defines parameters for the resource.
Yogesh Pande 4:5d91b0f5038c 184 */
Yogesh Pande 4:5d91b0f5038c 185 typedef struct sn_nsdl_resource_info_ {
Yogesh Pande 4:5d91b0f5038c 186 sn_nsdl_resource_parameters_s *resource_parameters_ptr;
Yogesh Pande 4:5d91b0f5038c 187
Yogesh Pande 4:5d91b0f5038c 188 sn_nsdl_resource_mode_e mode; /**< STATIC etc.. */
Yogesh Pande 4:5d91b0f5038c 189
Yogesh Pande 4:5d91b0f5038c 190 uint16_t pathlen; /**< Address */
Yogesh Pande 4:5d91b0f5038c 191 uint8_t *path;
Yogesh Pande 4:5d91b0f5038c 192
Yogesh Pande 4:5d91b0f5038c 193 uint16_t resourcelen; /**< 0 if dynamic resource, resource information in static resource */
Yogesh Pande 4:5d91b0f5038c 194 uint8_t *resource; /**< NULL if dynamic resource */
Yogesh Pande 4:5d91b0f5038c 195
Yogesh Pande 4:5d91b0f5038c 196 sn_grs_resource_acl_e access;
Yogesh Pande 4:5d91b0f5038c 197
Yogesh Pande 4:5d91b0f5038c 198 uint8_t (*sn_grs_dyn_res_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *, sn_nsdl_capab_e);
Yogesh Pande 4:5d91b0f5038c 199
Yogesh Pande 4:5d91b0f5038c 200 ns_list_link_t link;
Yogesh Pande 4:5d91b0f5038c 201
Yogesh Pande 4:5d91b0f5038c 202 uint8_t publish_uri;
Yogesh Pande 4:5d91b0f5038c 203
Yogesh Pande 4:5d91b0f5038c 204 } sn_nsdl_resource_info_s;
Yogesh Pande 4:5d91b0f5038c 205
Yogesh Pande 4:5d91b0f5038c 206 /**
Yogesh Pande 4:5d91b0f5038c 207 * \brief Defines OMA device object parameters.
Yogesh Pande 4:5d91b0f5038c 208 */
Yogesh Pande 4:5d91b0f5038c 209 typedef struct sn_nsdl_oma_device_ {
Yogesh Pande 4:5d91b0f5038c 210 sn_nsdl_oma_device_error_t error_code; /**< Error code. Mandatory. Can be more than one */
Yogesh Pande 4:5d91b0f5038c 211 uint8_t (*sn_oma_device_boot_callback)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *, sn_nsdl_capab_e); /**< Device boot callback function. If defined, this is called when reset request is received */
Yogesh Pande 4:5d91b0f5038c 212
Yogesh Pande 4:5d91b0f5038c 213 } sn_nsdl_oma_device_t;
Yogesh Pande 4:5d91b0f5038c 214
Yogesh Pande 4:5d91b0f5038c 215 /**
Yogesh Pande 4:5d91b0f5038c 216 * \brief Defines OMAlw server information
Yogesh Pande 4:5d91b0f5038c 217 */
Yogesh Pande 4:5d91b0f5038c 218 typedef struct sn_nsdl_oma_server_info_ {
Yogesh Pande 4:5d91b0f5038c 219 sn_nsdl_addr_s *omalw_address_ptr;
Yogesh Pande 4:5d91b0f5038c 220 omalw_server_security_t omalw_server_security;
Yogesh Pande 4:5d91b0f5038c 221
Yogesh Pande 4:5d91b0f5038c 222 } sn_nsdl_oma_server_info_t;
Yogesh Pande 4:5d91b0f5038c 223
Yogesh Pande 4:5d91b0f5038c 224 /**
Yogesh Pande 4:5d91b0f5038c 225 * \brief Defines endpoint parameters to OMA bootstrap.
Yogesh Pande 4:5d91b0f5038c 226 */
Yogesh Pande 4:5d91b0f5038c 227 typedef struct sn_nsdl_bs_ep_info_ {
Yogesh Pande 4:5d91b0f5038c 228 void (*oma_bs_status_cb)(sn_nsdl_oma_server_info_t *); /**< Callback for OMA bootstrap status */
Yogesh Pande 4:5d91b0f5038c 229 sn_nsdl_oma_device_t *device_object; /**< OMA LWM2M mandatory device resources */
Yogesh Pande 4:5d91b0f5038c 230 } sn_nsdl_bs_ep_info_t;
Yogesh Pande 4:5d91b0f5038c 231
Yogesh Pande 4:5d91b0f5038c 232
Yogesh Pande 4:5d91b0f5038c 233
Yogesh Pande 4:5d91b0f5038c 234
Yogesh Pande 4:5d91b0f5038c 235 /**
Yogesh Pande 4:5d91b0f5038c 236 * \fn struct nsdl_s *sn_nsdl_init (uint8_t (*sn_nsdl_tx_cb)(sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *),
Yogesh Pande 4:5d91b0f5038c 237 * uint8_t (*sn_nsdl_rx_cb)(sn_coap_hdr_s *, sn_nsdl_addr_s *),
Yogesh Pande 4:5d91b0f5038c 238 * sn_nsdl_mem_s *sn_memory)
Yogesh Pande 4:5d91b0f5038c 239 *
Yogesh Pande 4:5d91b0f5038c 240 * \brief Initialization function for NSDL library. Initializes NSDL, GRS, HTTP and CoAP.
Yogesh Pande 4:5d91b0f5038c 241 *
Yogesh Pande 4:5d91b0f5038c 242 * \param *sn_nsdl_tx_callback A callback function for sending messages.
Yogesh Pande 4:5d91b0f5038c 243 *
Yogesh Pande 4:5d91b0f5038c 244 * \param *sn_nsdl_rx_callback A callback function for parsed messages. If received message is not CoAP protocol message (eg. ACK), message for GRS (GET, PUT, POST, DELETE) or
Yogesh Pande 4:5d91b0f5038c 245 * reply for some DS messages (register message etc.), rx callback will be called.
Yogesh Pande 4:5d91b0f5038c 246 *
Yogesh Pande 4:5d91b0f5038c 247 * \param *sn_memory Memory structure which includes function pointers to the allocation and free functions.
Yogesh Pande 4:5d91b0f5038c 248 *
Yogesh Pande 4:5d91b0f5038c 249 * \return pointer to created handle structure. NULL if failed
Yogesh Pande 4:5d91b0f5038c 250 */
Yogesh Pande 4:5d91b0f5038c 251 struct nsdl_s *sn_nsdl_init(uint8_t (*sn_nsdl_tx_cb)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t, sn_nsdl_addr_s *),
Yogesh Pande 4:5d91b0f5038c 252 uint8_t (*sn_nsdl_rx_cb)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *),
Yogesh Pande 4:5d91b0f5038c 253 void *(*sn_nsdl_alloc)(uint16_t), void (*sn_nsdl_free)(void *));
Yogesh Pande 4:5d91b0f5038c 254
Yogesh Pande 4:5d91b0f5038c 255 /**
Yogesh Pande 4:5d91b0f5038c 256 * \fn extern uint16_t sn_nsdl_register_endpoint(struct nsdl_s *handle, sn_nsdl_ep_parameters_s *endpoint_info_ptr);
Yogesh Pande 4:5d91b0f5038c 257 *
Yogesh Pande 4:5d91b0f5038c 258 * \brief Registers endpoint to mbed Device Server.
Yogesh Pande 4:5d91b0f5038c 259 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 260 * \param *endpoint_info_ptr Contains endpoint information.
Yogesh Pande 4:5d91b0f5038c 261 *
Yogesh Pande 4:5d91b0f5038c 262 * \return registration message ID, 0 if failed
Yogesh Pande 4:5d91b0f5038c 263 */
Yogesh Pande 4:5d91b0f5038c 264 extern uint16_t sn_nsdl_register_endpoint(struct nsdl_s *handle, sn_nsdl_ep_parameters_s *endpoint_info_ptr);
Yogesh Pande 4:5d91b0f5038c 265
Yogesh Pande 4:5d91b0f5038c 266 /**
Yogesh Pande 4:5d91b0f5038c 267 * \fn extern uint16_t sn_nsdl_unregister_endpoint(struct nsdl_s *handle)
Yogesh Pande 4:5d91b0f5038c 268 *
Yogesh Pande 4:5d91b0f5038c 269 * \brief Sends unregister-message to mbed Device Server.
Yogesh Pande 4:5d91b0f5038c 270 *
Yogesh Pande 4:5d91b0f5038c 271 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 272 *
Yogesh Pande 4:5d91b0f5038c 273 * \return unregistration message ID, 0 if failed
Yogesh Pande 4:5d91b0f5038c 274 */
Yogesh Pande 4:5d91b0f5038c 275 extern uint16_t sn_nsdl_unregister_endpoint(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 276
Yogesh Pande 4:5d91b0f5038c 277 /**
Yogesh Pande 4:5d91b0f5038c 278 * \fn extern uint16_t sn_nsdl_update_registration(struct nsdl_s *handle, uint8_t *lt_ptr, uint8_t lt_len);
Yogesh Pande 4:5d91b0f5038c 279 *
Yogesh Pande 4:5d91b0f5038c 280 * \brief Update the registration with mbed Device Server.
Yogesh Pande 4:5d91b0f5038c 281 *
Yogesh Pande 4:5d91b0f5038c 282 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 283 * \param *lt_ptr Pointer to lifetime value string in ascii form, eg. "1200"
Yogesh Pande 4:5d91b0f5038c 284 * \param lt_len Length of the lifetime string
Yogesh Pande 4:5d91b0f5038c 285 *
Yogesh Pande 4:5d91b0f5038c 286 * \return registration update message ID, 0 if failed
Yogesh Pande 4:5d91b0f5038c 287 */
Yogesh Pande 4:5d91b0f5038c 288 extern uint16_t sn_nsdl_update_registration(struct nsdl_s *handle, uint8_t *lt_ptr, uint8_t lt_len);
Yogesh Pande 4:5d91b0f5038c 289
Yogesh Pande 4:5d91b0f5038c 290 /**
Yogesh Pande 4:5d91b0f5038c 291 * \fn extern int8_t sn_nsdl_set_endpoint_location(struct nsdl_s *handle, uint8_t *location_ptr, uint8_t location_len);
Yogesh Pande 4:5d91b0f5038c 292 *
Yogesh Pande 4:5d91b0f5038c 293 * \brief Sets the location receievd from Device Server.
Yogesh Pande 4:5d91b0f5038c 294 *
Yogesh Pande 4:5d91b0f5038c 295 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 296 * \param *lt_ptr Pointer to location value string , eg. "s322j4k"
Yogesh Pande 4:5d91b0f5038c 297 * \param lt_len Length of the location string
Yogesh Pande 4:5d91b0f5038c 298 *
Yogesh Pande 4:5d91b0f5038c 299 * \return success, 0 if failed -1
Yogesh Pande 4:5d91b0f5038c 300 */
Yogesh Pande 4:5d91b0f5038c 301 extern int8_t sn_nsdl_set_endpoint_location(struct nsdl_s *handle, uint8_t *location_ptr, uint8_t location_len);
Yogesh Pande 4:5d91b0f5038c 302
Yogesh Pande 4:5d91b0f5038c 303
Yogesh Pande 4:5d91b0f5038c 304 /**
Yogesh Pande 4:5d91b0f5038c 305 * \fn extern int8_t sn_nsdl_is_ep_registered(struct nsdl_s *handle)
Yogesh Pande 4:5d91b0f5038c 306 *
Yogesh Pande 4:5d91b0f5038c 307 * \brief Checks if endpoint is registered.
Yogesh Pande 4:5d91b0f5038c 308 *
Yogesh Pande 4:5d91b0f5038c 309 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 310 *
Yogesh Pande 4:5d91b0f5038c 311 * \return 1 Endpoint registration is done successfully
Yogesh Pande 4:5d91b0f5038c 312 * \return 0 Endpoint is not registered
Yogesh Pande 4:5d91b0f5038c 313 */
Yogesh Pande 4:5d91b0f5038c 314 extern int8_t sn_nsdl_is_ep_registered(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 315
Yogesh Pande 4:5d91b0f5038c 316 /**
Yogesh Pande 4:5d91b0f5038c 317 * \fn extern void sn_nsdl_nsp_lost(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 318 *
Yogesh Pande 4:5d91b0f5038c 319 * \brief A function to inform mbed Device C client library if application detects a fault in mbed Device Server registration.
Yogesh Pande 4:5d91b0f5038c 320 *
Yogesh Pande 4:5d91b0f5038c 321 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 322 *
Yogesh Pande 4:5d91b0f5038c 323 * After calling this function sn_nsdl_is_ep_registered() will return "not registered".
Yogesh Pande 4:5d91b0f5038c 324 */
Yogesh Pande 4:5d91b0f5038c 325 extern void sn_nsdl_nsp_lost(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 326
Yogesh Pande 4:5d91b0f5038c 327 /**
Yogesh Pande 4:5d91b0f5038c 328 * \fn extern uint16_t sn_nsdl_send_observation_notification(struct nsdl_s *handle, uint8_t *token_ptr, uint8_t token_len,
Yogesh Pande 4:5d91b0f5038c 329 * uint8_t *payload_ptr, uint16_t payload_len,
Yogesh Pande 4:5d91b0f5038c 330 * uint8_t *observe_ptr, uint8_t observe_len,
Yogesh Pande 4:5d91b0f5038c 331 * sn_coap_msg_type_e message_type, uint8_t content_type)
Yogesh Pande 4:5d91b0f5038c 332 *
Yogesh Pande 4:5d91b0f5038c 333 *
Yogesh Pande 4:5d91b0f5038c 334 * \brief Sends observation message to mbed Device Server
Yogesh Pande 4:5d91b0f5038c 335 *
Yogesh Pande 4:5d91b0f5038c 336 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 337 * \param *token_ptr Pointer to token to be used
Yogesh Pande 4:5d91b0f5038c 338 * \param token_len Token length
Yogesh Pande 4:5d91b0f5038c 339 * \param *payload_ptr Pointer to payload to be sent
Yogesh Pande 4:5d91b0f5038c 340 * \param payload_len Payload length
Yogesh Pande 4:5d91b0f5038c 341 * \param *observe_ptr Pointer to observe number to be sent
Yogesh Pande 4:5d91b0f5038c 342 * \param observe_len Observe number len
Yogesh Pande 4:5d91b0f5038c 343 * \param message_type Observation message type (confirmable or non-confirmable)
Yogesh Pande 4:5d91b0f5038c 344 * \param content_type Observation message payload contetnt type
Yogesh Pande 4:5d91b0f5038c 345 *
Yogesh Pande 4:5d91b0f5038c 346 * \return !0 Success, observation messages message ID
Yogesh Pande 4:5d91b0f5038c 347 * \return 0 Failure
Yogesh Pande 4:5d91b0f5038c 348 */
Yogesh Pande 4:5d91b0f5038c 349 extern uint16_t sn_nsdl_send_observation_notification(struct nsdl_s *handle, uint8_t *token_ptr, uint8_t token_len,
Yogesh Pande 4:5d91b0f5038c 350 uint8_t *payload_ptr, uint16_t payload_len,
Yogesh Pande 4:5d91b0f5038c 351 uint8_t *observe_ptr, uint8_t observe_len,
Yogesh Pande 4:5d91b0f5038c 352 sn_coap_msg_type_e message_type,
Yogesh Pande 4:5d91b0f5038c 353 uint8_t content_type);
Yogesh Pande 4:5d91b0f5038c 354
Yogesh Pande 4:5d91b0f5038c 355 /**
Yogesh Pande 4:5d91b0f5038c 356 * \fn extern uint16_t sn_nsdl_send_observation_notification_with_uri_path(struct nsdl_s *handle, uint8_t *token_ptr, uint8_t token_len,
Yogesh Pande 4:5d91b0f5038c 357 * uint8_t *payload_ptr, uint16_t payload_len,
Yogesh Pande 4:5d91b0f5038c 358 * uint8_t *observe_ptr, uint8_t observe_len,
Yogesh Pande 4:5d91b0f5038c 359 * sn_coap_msg_type_e message_type, uint8_t content_type,
Yogesh Pande 4:5d91b0f5038c 360 * uint8_t *uri_path_ptr,
Yogesh Pande 4:5d91b0f5038c 361 * uint16_t uri_path_len)
Yogesh Pande 4:5d91b0f5038c 362 *
Yogesh Pande 4:5d91b0f5038c 363 *
Yogesh Pande 4:5d91b0f5038c 364 * \brief Sends observation message to mbed Device Server with uri path
Yogesh Pande 4:5d91b0f5038c 365 *
Yogesh Pande 4:5d91b0f5038c 366 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 367 * \param *token_ptr Pointer to token to be used
Yogesh Pande 4:5d91b0f5038c 368 * \param token_len Token length
Yogesh Pande 4:5d91b0f5038c 369 * \param *payload_ptr Pointer to payload to be sent
Yogesh Pande 4:5d91b0f5038c 370 * \param payload_len Payload length
Yogesh Pande 4:5d91b0f5038c 371 * \param *observe_ptr Pointer to observe number to be sent
Yogesh Pande 4:5d91b0f5038c 372 * \param observe_len Observe number len
Yogesh Pande 4:5d91b0f5038c 373 * \param message_type Observation message type (confirmable or non-confirmable)
Yogesh Pande 4:5d91b0f5038c 374 * \param content_type Observation message payload contetnt type
Yogesh Pande 4:5d91b0f5038c 375 * \param uri_path_ptr Pointer to uri path to be sent
Yogesh Pande 4:5d91b0f5038c 376 * \param uri_path_len Uri path len
Yogesh Pande 4:5d91b0f5038c 377 *
Yogesh Pande 4:5d91b0f5038c 378 * \return !0 Success, observation messages message ID
Yogesh Pande 4:5d91b0f5038c 379 * \return 0 Failure
Yogesh Pande 4:5d91b0f5038c 380 */
Yogesh Pande 4:5d91b0f5038c 381 extern uint16_t sn_nsdl_send_observation_notification_with_uri_path(struct nsdl_s *handle, uint8_t *token_ptr, uint8_t token_len,
Yogesh Pande 4:5d91b0f5038c 382 uint8_t *payload_ptr, uint16_t payload_len,
Yogesh Pande 4:5d91b0f5038c 383 uint8_t *observe_ptr, uint8_t observe_len,
Yogesh Pande 4:5d91b0f5038c 384 sn_coap_msg_type_e message_type,
Yogesh Pande 4:5d91b0f5038c 385 uint8_t content_type,
Yogesh Pande 4:5d91b0f5038c 386 uint8_t *uri_path_ptr,
Yogesh Pande 4:5d91b0f5038c 387 uint16_t uri_path_len);
Yogesh Pande 4:5d91b0f5038c 388
Yogesh Pande 4:5d91b0f5038c 389 /**
Yogesh Pande 4:5d91b0f5038c 390 * \fn extern uint32_t sn_nsdl_get_version(void)
Yogesh Pande 4:5d91b0f5038c 391 *
Yogesh Pande 4:5d91b0f5038c 392 * \brief Version query function.
Yogesh Pande 4:5d91b0f5038c 393 *
Yogesh Pande 4:5d91b0f5038c 394 * Used to retrieve the version information from the mbed Device C Client library.
Yogesh Pande 4:5d91b0f5038c 395 *
Yogesh Pande 4:5d91b0f5038c 396 * \return Pointer to library version string
Yogesh Pande 4:5d91b0f5038c 397 */
Yogesh Pande 4:5d91b0f5038c 398 extern char *sn_nsdl_get_version(void);
Yogesh Pande 4:5d91b0f5038c 399
Yogesh Pande 4:5d91b0f5038c 400 /**
Yogesh Pande 4:5d91b0f5038c 401 * \fn extern int8_t sn_nsdl_process_coap(struct nsdl_s *handle, uint8_t *packet, uint16_t packet_len, sn_nsdl_addr_s *src)
Yogesh Pande 4:5d91b0f5038c 402 *
Yogesh Pande 4:5d91b0f5038c 403 * \brief To push CoAP packet to mbed Device C Client library
Yogesh Pande 4:5d91b0f5038c 404 *
Yogesh Pande 4:5d91b0f5038c 405 * Used to push an CoAP packet to mbed Device C Client library for processing.
Yogesh Pande 4:5d91b0f5038c 406 *
Yogesh Pande 4:5d91b0f5038c 407 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 408 *
Yogesh Pande 4:5d91b0f5038c 409 * \param *packet Pointer to a uint8_t array containing the packet (including the CoAP headers).
Yogesh Pande 4:5d91b0f5038c 410 * After successful execution this array may contain the response packet.
Yogesh Pande 4:5d91b0f5038c 411 *
Yogesh Pande 4:5d91b0f5038c 412 * \param *packet_len Pointer to length of the packet. After successful execution this array may contain the length
Yogesh Pande 4:5d91b0f5038c 413 * of the response packet.
Yogesh Pande 4:5d91b0f5038c 414 *
Yogesh Pande 4:5d91b0f5038c 415 * \param *src Pointer to packet source address information. After successful execution this array may contain
Yogesh Pande 4:5d91b0f5038c 416 * the destination address of the response packet.
Yogesh Pande 4:5d91b0f5038c 417 *
Yogesh Pande 4:5d91b0f5038c 418 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 419 * \return -1 Failure
Yogesh Pande 4:5d91b0f5038c 420 */
Yogesh Pande 4:5d91b0f5038c 421 extern int8_t sn_nsdl_process_coap(struct nsdl_s *handle, uint8_t *packet, uint16_t packet_len, sn_nsdl_addr_s *src);
Yogesh Pande 4:5d91b0f5038c 422
Yogesh Pande 4:5d91b0f5038c 423 /**
Yogesh Pande 4:5d91b0f5038c 424 * \fn extern int8_t sn_nsdl_exec(struct nsdl_s *handle, uint32_t time);
Yogesh Pande 4:5d91b0f5038c 425 *
Yogesh Pande 4:5d91b0f5038c 426 * \brief CoAP retransmission function.
Yogesh Pande 4:5d91b0f5038c 427 *
Yogesh Pande 4:5d91b0f5038c 428 * Used to give execution time for the mbed Device C Client library for retransmissions.
Yogesh Pande 4:5d91b0f5038c 429 *
Yogesh Pande 4:5d91b0f5038c 430 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 431 *
Yogesh Pande 4:5d91b0f5038c 432 * \param time Time in seconds.
Yogesh Pande 4:5d91b0f5038c 433 *
Yogesh Pande 4:5d91b0f5038c 434 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 435 * \return -1 Failure
Yogesh Pande 4:5d91b0f5038c 436 */
Yogesh Pande 4:5d91b0f5038c 437 extern int8_t sn_nsdl_exec(struct nsdl_s *handle, uint32_t time);
Yogesh Pande 4:5d91b0f5038c 438
Yogesh Pande 4:5d91b0f5038c 439 /**
Yogesh Pande 4:5d91b0f5038c 440 * \fn extern int8_t sn_nsdl_create_resource(struct nsdl_s *handle, sn_nsdl_resource_info_s *res);
Yogesh Pande 4:5d91b0f5038c 441 *
Yogesh Pande 4:5d91b0f5038c 442 * \brief Resource creating function.
Yogesh Pande 4:5d91b0f5038c 443 *
Yogesh Pande 4:5d91b0f5038c 444 * Used to create a static or dynamic CoAP resource.
Yogesh Pande 4:5d91b0f5038c 445 *
Yogesh Pande 4:5d91b0f5038c 446 * \param *res Pointer to a structure of type sn_nsdl_resource_info_t that contains the information
Yogesh Pande 4:5d91b0f5038c 447 * about the resource.
Yogesh Pande 4:5d91b0f5038c 448 *
Yogesh Pande 4:5d91b0f5038c 449 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 450 * \return -1 Failure
Yogesh Pande 4:5d91b0f5038c 451 * \return -2 Resource already exists
Yogesh Pande 4:5d91b0f5038c 452 * \return -3 Invalid path
Yogesh Pande 4:5d91b0f5038c 453 * \return -4 List adding failure
Yogesh Pande 4:5d91b0f5038c 454 */
Yogesh Pande 4:5d91b0f5038c 455 extern int8_t sn_nsdl_create_resource(struct nsdl_s *handle, sn_nsdl_resource_info_s *res);
Yogesh Pande 4:5d91b0f5038c 456
Yogesh Pande 4:5d91b0f5038c 457 /**
Yogesh Pande 4:5d91b0f5038c 458 * \fn extern int8_t sn_nsdl_update_resource(sn_nsdl_resource_info_s *res)
Yogesh Pande 4:5d91b0f5038c 459 *
Yogesh Pande 4:5d91b0f5038c 460 * \brief Resource updating function.
Yogesh Pande 4:5d91b0f5038c 461 *
Yogesh Pande 4:5d91b0f5038c 462 * Used to update the direct value of a static resource, the callback function pointer of a dynamic resource
Yogesh Pande 4:5d91b0f5038c 463 * and access rights of the recource.
Yogesh Pande 4:5d91b0f5038c 464 *
Yogesh Pande 4:5d91b0f5038c 465 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 466 * \param *res Pointer to a structure of type sn_nsdl_resource_info_t that contains the information
Yogesh Pande 4:5d91b0f5038c 467 * about the resource. Only the pathlen and path elements are evaluated along with
Yogesh Pande 4:5d91b0f5038c 468 * either resourcelen and resource or the function pointer.
Yogesh Pande 4:5d91b0f5038c 469 *
Yogesh Pande 4:5d91b0f5038c 470 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 471 * \return -1 Failure
Yogesh Pande 4:5d91b0f5038c 472 */
Yogesh Pande 4:5d91b0f5038c 473 extern int8_t sn_nsdl_update_resource(struct nsdl_s *handle, sn_nsdl_resource_info_s *res);
Yogesh Pande 4:5d91b0f5038c 474
Yogesh Pande 4:5d91b0f5038c 475 /**
Yogesh Pande 4:5d91b0f5038c 476 * \fn extern int8_t sn_nsdl_delete_resource(struct nsdl_s *handle, uint8_t pathlen, uint8_t *path)
Yogesh Pande 4:5d91b0f5038c 477 *
Yogesh Pande 4:5d91b0f5038c 478 * \brief Resource delete function.
Yogesh Pande 4:5d91b0f5038c 479 *
Yogesh Pande 4:5d91b0f5038c 480 * Used to delete a resource. If resource has a subresources, these all must also be removed.
Yogesh Pande 4:5d91b0f5038c 481 *
Yogesh Pande 4:5d91b0f5038c 482 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 483 * \param pathlen Contains the length of the path that is to be deleted (excluding possible trailing "\0").
Yogesh Pande 4:5d91b0f5038c 484 * \param *path_ptr A pointer to an array containing the path.
Yogesh Pande 4:5d91b0f5038c 485 *
Yogesh Pande 4:5d91b0f5038c 486 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 487 * \return -1 Failure (No such resource)
Yogesh Pande 4:5d91b0f5038c 488 */
Yogesh Pande 4:5d91b0f5038c 489 extern int8_t sn_nsdl_delete_resource(struct nsdl_s *handle, uint16_t pathlen, uint8_t *path);
Yogesh Pande 4:5d91b0f5038c 490
Yogesh Pande 4:5d91b0f5038c 491 /**
Yogesh Pande 4:5d91b0f5038c 492 * \fn extern sn_nsdl_resource_info_s *sn_nsdl_get_resource(struct nsdl_s *handle, uint16_t pathlen, uint8_t *path)
Yogesh Pande 4:5d91b0f5038c 493 *
Yogesh Pande 4:5d91b0f5038c 494 * \brief Resource get function.
Yogesh Pande 4:5d91b0f5038c 495 *
Yogesh Pande 4:5d91b0f5038c 496 * Used to get a resource.
Yogesh Pande 4:5d91b0f5038c 497 *
Yogesh Pande 4:5d91b0f5038c 498 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 499 * \param pathlen Contains the length of the path that is to be returned (excluding possible trailing '\0').
Yogesh Pande 4:5d91b0f5038c 500 * \param *path A pointer to an array containing the path.
Yogesh Pande 4:5d91b0f5038c 501 *
Yogesh Pande 4:5d91b0f5038c 502 * \return !NULL Success, pointer to a sn_nsdl_resource_info_s that contains the resource information\n
Yogesh Pande 4:5d91b0f5038c 503 * \return NULL Failure
Yogesh Pande 4:5d91b0f5038c 504 */
Yogesh Pande 4:5d91b0f5038c 505 extern sn_nsdl_resource_info_s *sn_nsdl_get_resource(struct nsdl_s *handle, uint16_t pathlen, uint8_t *path);
Yogesh Pande 4:5d91b0f5038c 506
Yogesh Pande 4:5d91b0f5038c 507 /**
Yogesh Pande 4:5d91b0f5038c 508 * \fn extern sn_grs_resource_list_s *sn_nsdl_list_resource(struct nsdl_s *handle, uint16_t pathlen, uint8_t *path)
Yogesh Pande 4:5d91b0f5038c 509 *
Yogesh Pande 4:5d91b0f5038c 510 * \brief Resource list function.
Yogesh Pande 4:5d91b0f5038c 511 *
Yogesh Pande 4:5d91b0f5038c 512 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 513 * \param pathlen Contains the length of the target path (excluding possible trailing '\0').
Yogesh Pande 4:5d91b0f5038c 514 * The length value is not examined if the path itself is a NULL pointer.
Yogesh Pande 4:5d91b0f5038c 515 * \param *path A pointer to an array containing the path or a NULL pointer.
Yogesh Pande 4:5d91b0f5038c 516 *
Yogesh Pande 4:5d91b0f5038c 517 * \return !NULL A pointer to a sn_grs_resource_list_s structure containing the resource listing.
Yogesh Pande 4:5d91b0f5038c 518 * \return NULL Failure with an unspecified error
Yogesh Pande 4:5d91b0f5038c 519 */
Yogesh Pande 4:5d91b0f5038c 520 sn_grs_resource_list_s *sn_nsdl_list_resource(struct nsdl_s *handle, uint16_t pathlen, uint8_t *path);
Yogesh Pande 4:5d91b0f5038c 521
Yogesh Pande 4:5d91b0f5038c 522 /**
Yogesh Pande 4:5d91b0f5038c 523 * \fn extern void sn_nsdl_free_resource_list(struct nsdl_s *handle, sn_grs_resource_list_s *list)
Yogesh Pande 4:5d91b0f5038c 524 *
Yogesh Pande 4:5d91b0f5038c 525 * \brief Free a resource list obtained from sn_nsdl_list_resource()
Yogesh Pande 4:5d91b0f5038c 526 *
Yogesh Pande 4:5d91b0f5038c 527 * \param list The list to free, or NULL.
Yogesh Pande 4:5d91b0f5038c 528 */
Yogesh Pande 4:5d91b0f5038c 529 void sn_nsdl_free_resource_list(struct nsdl_s *handle, sn_grs_resource_list_s *list);
Yogesh Pande 4:5d91b0f5038c 530
Yogesh Pande 4:5d91b0f5038c 531 /**
Yogesh Pande 4:5d91b0f5038c 532 * \fn extern int8_t sn_nsdl_send_coap_message(struct nsdl_s *handle, sn_nsdl_addr_s *address_ptr, sn_coap_hdr_s *coap_hdr_ptr);
Yogesh Pande 4:5d91b0f5038c 533 *
Yogesh Pande 4:5d91b0f5038c 534 * \brief Send an outgoing CoAP request.
Yogesh Pande 4:5d91b0f5038c 535 *
Yogesh Pande 4:5d91b0f5038c 536 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 537 * \param *address_ptr Pointer to source address struct
Yogesh Pande 4:5d91b0f5038c 538 * \param *coap_hdr_ptr Pointer to CoAP message to be sent
Yogesh Pande 4:5d91b0f5038c 539 *
Yogesh Pande 4:5d91b0f5038c 540 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 541 * \return -1 Failure
Yogesh Pande 4:5d91b0f5038c 542 */
Yogesh Pande 4:5d91b0f5038c 543 extern int8_t sn_nsdl_send_coap_message(struct nsdl_s *handle, sn_nsdl_addr_s *address_ptr, sn_coap_hdr_s *coap_hdr_ptr);
Yogesh Pande 4:5d91b0f5038c 544
Yogesh Pande 4:5d91b0f5038c 545 /**
Yogesh Pande 4:5d91b0f5038c 546 * \fn extern int8_t set_NSP_address(struct nsdl_s *handle, uint8_t *NSP_address, uint16_t port, sn_nsdl_addr_type_e address_type);
Yogesh Pande 4:5d91b0f5038c 547 *
Yogesh Pande 4:5d91b0f5038c 548 * \brief This function is used to set the mbed Device Server address given by an application.
Yogesh Pande 4:5d91b0f5038c 549 *
Yogesh Pande 4:5d91b0f5038c 550 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 551 * \return 0 Success
Yogesh Pande 4:5d91b0f5038c 552 * \return -1 Failed to indicate that internal address pointer is not allocated (call nsdl_init() first).
Yogesh Pande 4:5d91b0f5038c 553 */
Yogesh Pande 4:5d91b0f5038c 554 extern int8_t set_NSP_address(struct nsdl_s *handle, uint8_t *NSP_address, uint16_t port, sn_nsdl_addr_type_e address_type);
Yogesh Pande 4:5d91b0f5038c 555
Yogesh Pande 4:5d91b0f5038c 556 /**
Yogesh Pande 4:5d91b0f5038c 557 * \fn extern int8_t sn_nsdl_destroy(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 558 *
Yogesh Pande 4:5d91b0f5038c 559 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 560 * \brief This function releases all allocated memory in mbed Device C Client library.
Yogesh Pande 4:5d91b0f5038c 561 */
Yogesh Pande 4:5d91b0f5038c 562 extern int8_t sn_nsdl_destroy(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 563
Yogesh Pande 4:5d91b0f5038c 564 /**
Yogesh Pande 4:5d91b0f5038c 565 * \fn extern uint16_t sn_nsdl_oma_bootstrap(struct nsdl_s *handle, sn_nsdl_addr_s *bootstrap_address_ptr, sn_nsdl_ep_parameters_s *endpoint_info_ptr, sn_nsdl_bs_ep_info_t *bootstrap_endpoint_info_ptr);
Yogesh Pande 4:5d91b0f5038c 566 *
Yogesh Pande 4:5d91b0f5038c 567 * \brief Starts OMA bootstrap process
Yogesh Pande 4:5d91b0f5038c 568 *
Yogesh Pande 4:5d91b0f5038c 569 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 570 *
Yogesh Pande 4:5d91b0f5038c 571 * \return bootstrap message ID, 0 if failed
Yogesh Pande 4:5d91b0f5038c 572 */
Yogesh Pande 4:5d91b0f5038c 573 extern uint16_t sn_nsdl_oma_bootstrap(struct nsdl_s *handle, sn_nsdl_addr_s *bootstrap_address_ptr, sn_nsdl_ep_parameters_s *endpoint_info_ptr, sn_nsdl_bs_ep_info_t *bootstrap_endpoint_info_ptr);
Yogesh Pande 4:5d91b0f5038c 574
Yogesh Pande 4:5d91b0f5038c 575 /**
Yogesh Pande 4:5d91b0f5038c 576 * \fn extern omalw_certificate_list_t *sn_nsdl_get_certificates(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 577 *
Yogesh Pande 4:5d91b0f5038c 578 * \brief Get pointer to received device server certificates
Yogesh Pande 4:5d91b0f5038c 579 *
Yogesh Pande 4:5d91b0f5038c 580 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 581 */
Yogesh Pande 4:5d91b0f5038c 582 extern omalw_certificate_list_t *sn_nsdl_get_certificates(struct nsdl_s *handle);
Yogesh Pande 4:5d91b0f5038c 583
Yogesh Pande 4:5d91b0f5038c 584 /**
Yogesh Pande 4:5d91b0f5038c 585 * \fn extern int8_t sn_nsdl_update_certificates(struct nsdl_s *handle, omalw_certificate_list_t* certificate_ptr, uint8_t certificate_chain);
Yogesh Pande 4:5d91b0f5038c 586 *
Yogesh Pande 4:5d91b0f5038c 587 * \brief Updates certificate pointers to resource server.
Yogesh Pande 4:5d91b0f5038c 588 *
Yogesh Pande 4:5d91b0f5038c 589 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 590 */
Yogesh Pande 4:5d91b0f5038c 591 extern int8_t sn_nsdl_update_certificates(struct nsdl_s *handle, omalw_certificate_list_t *certificate_ptr, uint8_t certificate_chain);
Yogesh Pande 4:5d91b0f5038c 592
Yogesh Pande 4:5d91b0f5038c 593 /**
Yogesh Pande 4:5d91b0f5038c 594 * \fn extern int8_t sn_nsdl_create_oma_device_object(struct nsdl_s *handle, sn_nsdl_oma_device_t *device_object_ptr);
Yogesh Pande 4:5d91b0f5038c 595 *
Yogesh Pande 4:5d91b0f5038c 596 * \brief Creates new device object resource
Yogesh Pande 4:5d91b0f5038c 597 *
Yogesh Pande 4:5d91b0f5038c 598 * \param *handle Pointer to nsdl-library handle
Yogesh Pande 4:5d91b0f5038c 599 */
Yogesh Pande 4:5d91b0f5038c 600 extern int8_t sn_nsdl_create_oma_device_object(struct nsdl_s *handle, sn_nsdl_oma_device_t *device_object_ptr);
Yogesh Pande 4:5d91b0f5038c 601
Yogesh Pande 4:5d91b0f5038c 602 /**
Yogesh Pande 4:5d91b0f5038c 603 * \fn sn_coap_hdr_s *sn_nsdl_build_response(struct nsdl_s *handle, sn_coap_hdr_s *coap_packet_ptr, uint8_t msg_code)
Yogesh Pande 4:5d91b0f5038c 604 *
Yogesh Pande 4:5d91b0f5038c 605 * \brief Prepares generic response packet from a request packet. This function allocates memory for the resulting sn_coap_hdr_s
Yogesh Pande 4:5d91b0f5038c 606 *
Yogesh Pande 4:5d91b0f5038c 607 * \param *handle Pointer to library handle
Yogesh Pande 4:5d91b0f5038c 608 * \param *coap_packet_ptr The request packet pointer
Yogesh Pande 4:5d91b0f5038c 609 * \param msg_code response messages code
Yogesh Pande 4:5d91b0f5038c 610 *
Yogesh Pande 4:5d91b0f5038c 611 * \return *coap_packet_ptr The allocated and pre-filled response packet pointer
Yogesh Pande 4:5d91b0f5038c 612 * NULL Error in parsing the request
Yogesh Pande 4:5d91b0f5038c 613 *
Yogesh Pande 4:5d91b0f5038c 614 */
Yogesh Pande 4:5d91b0f5038c 615 extern sn_coap_hdr_s *sn_nsdl_build_response(struct nsdl_s *handle, sn_coap_hdr_s *coap_packet_ptr, uint8_t msg_code);
Yogesh Pande 4:5d91b0f5038c 616
Yogesh Pande 4:5d91b0f5038c 617 /**
Yogesh Pande 4:5d91b0f5038c 618 * \fn void sn_nsdl_release_allocated_coap_msg_mem(struct nsdl_s *handle, sn_coap_hdr_s *freed_coap_msg_ptr)
Yogesh Pande 4:5d91b0f5038c 619 *
Yogesh Pande 4:5d91b0f5038c 620 * \brief Releases memory of given CoAP message
Yogesh Pande 4:5d91b0f5038c 621 *
Yogesh Pande 4:5d91b0f5038c 622 * Note!!! Does not release Payload part
Yogesh Pande 4:5d91b0f5038c 623 *
Yogesh Pande 4:5d91b0f5038c 624 * \param *handle Pointer to CoAP library handle
Yogesh Pande 4:5d91b0f5038c 625 *
Yogesh Pande 4:5d91b0f5038c 626 * \param *freed_coap_msg_ptr is pointer to released CoAP message
Yogesh Pande 4:5d91b0f5038c 627 */
Yogesh Pande 4:5d91b0f5038c 628 extern void sn_nsdl_release_allocated_coap_msg_mem(struct nsdl_s *handle, sn_coap_hdr_s *freed_coap_msg_ptr);
Yogesh Pande 4:5d91b0f5038c 629
Yogesh Pande 4:5d91b0f5038c 630 /**
Yogesh Pande 4:5d91b0f5038c 631 * \fn int8_t sn_nsdl_set_retransmission_parameters(struct nsdl_s *handle, uint8_t resending_count, uint8_t resending_intervall)
Yogesh Pande 4:5d91b0f5038c 632 *
Yogesh Pande 4:5d91b0f5038c 633 * \brief If re-transmissions are enabled, this function changes resending count and interval.
Yogesh Pande 4:5d91b0f5038c 634 *
Yogesh Pande 4:5d91b0f5038c 635 * \param *handle Pointer to library handle
Yogesh Pande 4:5d91b0f5038c 636 * \param uint8_t resending_count max number of resendings for message
Yogesh Pande 4:5d91b0f5038c 637 * \param uint8_t resending_intervall message resending intervall in seconds
Yogesh Pande 4:5d91b0f5038c 638 * \return 0 = success, -1 = failure
Yogesh Pande 4:5d91b0f5038c 639 */
Yogesh Pande 4:5d91b0f5038c 640 extern int8_t sn_nsdl_set_retransmission_parameters(struct nsdl_s *handle, uint8_t resending_count, uint8_t resending_interval);
Yogesh Pande 4:5d91b0f5038c 641
Yogesh Pande 4:5d91b0f5038c 642 /**
Yogesh Pande 4:5d91b0f5038c 643 * \fn int8_t sn_nsdl_set_retransmission_buffer(struct nsdl_s *handle, uint8_t buffer_size_messages, uint16_t buffer_size_bytes)
Yogesh Pande 4:5d91b0f5038c 644 *
Yogesh Pande 4:5d91b0f5038c 645 * \brief If re-transmissions are enabled, this function changes message retransmission queue size.
Yogesh Pande 4:5d91b0f5038c 646 * Set size to '0' to disable feature. If both are set to '0', then re-sendings are disabled.
Yogesh Pande 4:5d91b0f5038c 647 *
Yogesh Pande 4:5d91b0f5038c 648 * \param *handle Pointer to library handle
Yogesh Pande 4:5d91b0f5038c 649 * \param uint8_t buffer_size_messages queue size - maximum number of messages to be saved to queue
Yogesh Pande 4:5d91b0f5038c 650 * \param uint8_t buffer_size_bytes queue size - maximum size of messages saved to queue
Yogesh Pande 4:5d91b0f5038c 651 * \return 0 = success, -1 = failure
Yogesh Pande 4:5d91b0f5038c 652 */
Yogesh Pande 4:5d91b0f5038c 653 extern int8_t sn_nsdl_set_retransmission_buffer(struct nsdl_s *handle,
Yogesh Pande 4:5d91b0f5038c 654 uint8_t buffer_size_messages, uint16_t buffer_size_bytes);
Yogesh Pande 4:5d91b0f5038c 655
Yogesh Pande 4:5d91b0f5038c 656 /**
Yogesh Pande 4:5d91b0f5038c 657 * \fn int8_t sn_nsdl_set_block_size(struct nsdl_s *handle, uint16_t block_size)
Yogesh Pande 4:5d91b0f5038c 658 *
Yogesh Pande 4:5d91b0f5038c 659 * \brief If block transfer is enabled, this function changes the block size.
Yogesh Pande 4:5d91b0f5038c 660 *
Yogesh Pande 4:5d91b0f5038c 661 * \param *handle Pointer to library handle
Yogesh Pande 4:5d91b0f5038c 662 * \param uint16_t block_size maximum size of CoAP payload. Valid sizes are 16, 32, 64, 128, 256, 512 and 1024 bytes
Yogesh Pande 4:5d91b0f5038c 663 * \return 0 = success, -1 = failure
Yogesh Pande 4:5d91b0f5038c 664 */
Yogesh Pande 4:5d91b0f5038c 665 extern int8_t sn_nsdl_set_block_size(struct nsdl_s *handle, uint16_t block_size);
Yogesh Pande 4:5d91b0f5038c 666
Yogesh Pande 4:5d91b0f5038c 667 /**
Yogesh Pande 4:5d91b0f5038c 668 * \fn int8_t sn_nsdl_set_duplicate_buffer_size(struct nsdl_s *handle,uint8_t message_count)
Yogesh Pande 4:5d91b0f5038c 669 *
Yogesh Pande 4:5d91b0f5038c 670 * \brief If dublicate message detection is enabled, this function changes buffer size.
Yogesh Pande 4:5d91b0f5038c 671 *
Yogesh Pande 4:5d91b0f5038c 672 * \param *handle Pointer to library handle
Yogesh Pande 4:5d91b0f5038c 673 * \param uint8_t message_count max number of messages saved for duplicate control
Yogesh Pande 4:5d91b0f5038c 674 * \return 0 = success, -1 = failure
Yogesh Pande 4:5d91b0f5038c 675 */
Yogesh Pande 4:5d91b0f5038c 676 extern int8_t sn_nsdl_set_duplicate_buffer_size(struct nsdl_s *handle, uint8_t message_count);
Yogesh Pande 4:5d91b0f5038c 677
Yogesh Pande 4:5d91b0f5038c 678 #ifdef __cplusplus
Yogesh Pande 4:5d91b0f5038c 679 }
Yogesh Pande 4:5d91b0f5038c 680 #endif
Yogesh Pande 4:5d91b0f5038c 681
Yogesh Pande 4:5d91b0f5038c 682 #endif /* SN_NSDL_LIB_H_ */