terence zhang / Mbed OS mbed-os-example-wakaama

Dependencies:   C12832 LM75B

Committer:
terence zhang
Date:
Fri Apr 28 18:13:27 2017 +0800
Revision:
3:a280069151ac
Parent:
0:f9d13e09cf11
Child:
10:df97539c6ddd
update and merge wakaama to the latest version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
terencez 0:f9d13e09cf11 1 /*******************************************************************************
terencez 0:f9d13e09cf11 2 *
terencez 0:f9d13e09cf11 3 * Copyright (c) 2013, 2014 Intel Corporation and others.
terencez 0:f9d13e09cf11 4 * All rights reserved. This program and the accompanying materials
terencez 0:f9d13e09cf11 5 * are made available under the terms of the Eclipse Public License v1.0
terencez 0:f9d13e09cf11 6 * and Eclipse Distribution License v1.0 which accompany this distribution.
terencez 0:f9d13e09cf11 7 *
terencez 0:f9d13e09cf11 8 * The Eclipse Public License is available at
terencez 0:f9d13e09cf11 9 * http://www.eclipse.org/legal/epl-v10.html
terencez 0:f9d13e09cf11 10 * The Eclipse Distribution License is available at
terencez 0:f9d13e09cf11 11 * http://www.eclipse.org/org/documents/edl-v10.php.
terencez 0:f9d13e09cf11 12 *
terencez 0:f9d13e09cf11 13 * Contributors:
terencez 0:f9d13e09cf11 14 * David Navarro, Intel Corporation - initial API and implementation
terencez 0:f9d13e09cf11 15 * Fabien Fleutot - Please refer to git log
terencez 0:f9d13e09cf11 16 * Toby Jaffey - Please refer to git log
terence zhang 3:a280069151ac 17 * Bosch Software Innovations GmbH - Please refer to git log
terence zhang 3:a280069151ac 18 * Pascal Rieux - Please refer to git log
terencez 0:f9d13e09cf11 19 *
terencez 0:f9d13e09cf11 20 *******************************************************************************/
terencez 0:f9d13e09cf11 21 /*
terencez 0:f9d13e09cf11 22 Copyright (c) 2013, 2014 Intel Corporation
terencez 0:f9d13e09cf11 23
terencez 0:f9d13e09cf11 24 Redistribution and use in source and binary forms, with or without modification,
terencez 0:f9d13e09cf11 25 are permitted provided that the following conditions are met:
terencez 0:f9d13e09cf11 26
terencez 0:f9d13e09cf11 27 * Redistributions of source code must retain the above copyright notice,
terencez 0:f9d13e09cf11 28 this list of conditions and the following disclaimer.
terencez 0:f9d13e09cf11 29 * Redistributions in binary form must reproduce the above copyright notice,
terencez 0:f9d13e09cf11 30 this list of conditions and the following disclaimer in the documentation
terencez 0:f9d13e09cf11 31 and/or other materials provided with the distribution.
terencez 0:f9d13e09cf11 32 * Neither the name of Intel Corporation nor the names of its contributors
terencez 0:f9d13e09cf11 33 may be used to endorse or promote products derived from this software
terencez 0:f9d13e09cf11 34 without specific prior written permission.
terencez 0:f9d13e09cf11 35
terencez 0:f9d13e09cf11 36 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
terencez 0:f9d13e09cf11 37 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
terencez 0:f9d13e09cf11 38 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
terencez 0:f9d13e09cf11 39 IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
terencez 0:f9d13e09cf11 40 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
terencez 0:f9d13e09cf11 41 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
terencez 0:f9d13e09cf11 42 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
terencez 0:f9d13e09cf11 43 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
terencez 0:f9d13e09cf11 44 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
terencez 0:f9d13e09cf11 45 THE POSSIBILITY OF SUCH DAMAGE.
terencez 0:f9d13e09cf11 46
terencez 0:f9d13e09cf11 47 David Navarro <david.navarro@intel.com>
terencez 0:f9d13e09cf11 48
terencez 0:f9d13e09cf11 49 */
terencez 0:f9d13e09cf11 50
terencez 0:f9d13e09cf11 51 #ifndef _LWM2M_INTERNALS_H_
terencez 0:f9d13e09cf11 52 #define _LWM2M_INTERNALS_H_
terencez 0:f9d13e09cf11 53
terencez 0:f9d13e09cf11 54 #include "liblwm2m.h"
terencez 0:f9d13e09cf11 55
terencez 0:f9d13e09cf11 56 #include <stdlib.h>
terencez 0:f9d13e09cf11 57 #include <string.h>
terencez 0:f9d13e09cf11 58 #include <stdio.h>
terencez 0:f9d13e09cf11 59 #include <stdint.h>
terencez 0:f9d13e09cf11 60 #include <stddef.h>
terencez 0:f9d13e09cf11 61 #include <stdbool.h>
terencez 0:f9d13e09cf11 62
terencez 0:f9d13e09cf11 63 #include "er-coap-13/er-coap-13.h"
terencez 0:f9d13e09cf11 64
terence zhang 3:a280069151ac 65 #ifdef LWM2M_WITH_LOGS
terence zhang 3:a280069151ac 66 #include <inttypes.h>
terence zhang 3:a280069151ac 67 #define LOG(STR) lwm2m_printf("[%s:%d] " STR "\r\n", __func__ , __LINE__)
terence zhang 3:a280069151ac 68 #define LOG_ARG(FMT, ...) lwm2m_printf("[%s:%d] " FMT "\r\n", __func__ , __LINE__ , __VA_ARGS__)
terence zhang 3:a280069151ac 69 #define LOG_URI(URI) \
terence zhang 3:a280069151ac 70 { \
terence zhang 3:a280069151ac 71 if ((URI) == NULL) lwm2m_printf("[%s:%d] NULL\r\n", __func__ , __LINE__); \
terence zhang 3:a280069151ac 72 else \
terence zhang 3:a280069151ac 73 { \
terence zhang 3:a280069151ac 74 lwm2m_printf("[%s:%d] /%d", __func__ , __LINE__ , (URI)->objectId); \
terence zhang 3:a280069151ac 75 if (LWM2M_URI_IS_SET_INSTANCE(URI)) lwm2m_printf("/%d", (URI)->instanceId); \
terence zhang 3:a280069151ac 76 if (LWM2M_URI_IS_SET_RESOURCE(URI)) lwm2m_printf("/%d", (URI)->resourceId); \
terence zhang 3:a280069151ac 77 lwm2m_printf("\r\n"); \
terence zhang 3:a280069151ac 78 } \
terence zhang 3:a280069151ac 79 }
terence zhang 3:a280069151ac 80 #define STR_STATUS(S) \
terence zhang 3:a280069151ac 81 ((S) == STATE_DEREGISTERED ? "STATE_DEREGISTERED" : \
terence zhang 3:a280069151ac 82 ((S) == STATE_REG_PENDING ? "STATE_REG_PENDING" : \
terence zhang 3:a280069151ac 83 ((S) == STATE_REGISTERED ? "STATE_REGISTERED" : \
terence zhang 3:a280069151ac 84 ((S) == STATE_REG_FAILED ? "STATE_REG_FAILED" : \
terence zhang 3:a280069151ac 85 ((S) == STATE_REG_UPDATE_PENDING ? "STATE_REG_UPDATE_PENDING" : \
terence zhang 3:a280069151ac 86 ((S) == STATE_REG_UPDATE_NEEDED ? "STATE_REG_UPDATE_NEEDED" : \
terence zhang 3:a280069151ac 87 ((S) == STATE_REG_FULL_UPDATE_NEEDED ? "STATE_REG_FULL_UPDATE_NEEDED" : \
terence zhang 3:a280069151ac 88 ((S) == STATE_DEREG_PENDING ? "STATE_DEREG_PENDING" : \
terence zhang 3:a280069151ac 89 ((S) == STATE_BS_HOLD_OFF ? "STATE_BS_HOLD_OFF" : \
terence zhang 3:a280069151ac 90 ((S) == STATE_BS_INITIATED ? "STATE_BS_INITIATED" : \
terence zhang 3:a280069151ac 91 ((S) == STATE_BS_PENDING ? "STATE_BS_PENDING" : \
terence zhang 3:a280069151ac 92 ((S) == STATE_BS_FINISHED ? "STATE_BS_FINISHED" : \
terence zhang 3:a280069151ac 93 ((S) == STATE_BS_FINISHING ? "STATE_BS_FINISHING" : \
terence zhang 3:a280069151ac 94 ((S) == STATE_BS_FAILING ? "STATE_BS_FAILING" : \
terence zhang 3:a280069151ac 95 ((S) == STATE_BS_FAILED ? "STATE_BS_FAILED" : \
terence zhang 3:a280069151ac 96 "Unknown")))))))))))))))
terence zhang 3:a280069151ac 97 #define STR_MEDIA_TYPE(M) \
terence zhang 3:a280069151ac 98 ((M) == LWM2M_CONTENT_TEXT ? "LWM2M_CONTENT_TEXT" : \
terence zhang 3:a280069151ac 99 ((M) == LWM2M_CONTENT_LINK ? "LWM2M_CONTENT_LINK" : \
terence zhang 3:a280069151ac 100 ((M) == LWM2M_CONTENT_OPAQUE ? "LWM2M_CONTENT_OPAQUE" : \
terence zhang 3:a280069151ac 101 ((M) == LWM2M_CONTENT_TLV ? "LWM2M_CONTENT_TLV" : \
terence zhang 3:a280069151ac 102 ((M) == LWM2M_CONTENT_JSON ? "LWM2M_CONTENT_JSON" : \
terence zhang 3:a280069151ac 103 "Unknown")))))
terence zhang 3:a280069151ac 104 #define STR_STATE(S) \
terence zhang 3:a280069151ac 105 ((S) == STATE_INITIAL ? "STATE_INITIAL" : \
terence zhang 3:a280069151ac 106 ((S) == STATE_BOOTSTRAP_REQUIRED ? "STATE_BOOTSTRAP_REQUIRED" : \
terence zhang 3:a280069151ac 107 ((S) == STATE_BOOTSTRAPPING ? "STATE_BOOTSTRAPPING" : \
terence zhang 3:a280069151ac 108 ((S) == STATE_REGISTER_REQUIRED ? "STATE_REGISTER_REQUIRED" : \
terence zhang 3:a280069151ac 109 ((S) == STATE_REGISTERING ? "STATE_REGISTERING" : \
terence zhang 3:a280069151ac 110 ((S) == STATE_READY ? "STATE_READY" : \
terence zhang 3:a280069151ac 111 "Unknown"))))))
terencez 0:f9d13e09cf11 112 #else
terence zhang 3:a280069151ac 113 #define LOG_ARG(FMT, ...)
terence zhang 3:a280069151ac 114 #define LOG(STR)
terence zhang 3:a280069151ac 115 #define LOG_URI(URI)
terencez 0:f9d13e09cf11 116 #endif
terencez 0:f9d13e09cf11 117
terencez 0:f9d13e09cf11 118 #define LWM2M_DEFAULT_LIFETIME 86400
terencez 0:f9d13e09cf11 119
terence zhang 3:a280069151ac 120 #ifdef LWM2M_SUPPORT_JSON
terence zhang 3:a280069151ac 121 #define REG_LWM2M_RESOURCE_TYPE ">;rt=\"oma.lwm2m\";ct=11543,"
terence zhang 3:a280069151ac 122 #define REG_LWM2M_RESOURCE_TYPE_LEN 25
terence zhang 3:a280069151ac 123 #else
terence zhang 3:a280069151ac 124 #define REG_LWM2M_RESOURCE_TYPE ">;rt=\"oma.lwm2m\","
terence zhang 3:a280069151ac 125 #define REG_LWM2M_RESOURCE_TYPE_LEN 17
terence zhang 3:a280069151ac 126 #endif
terence zhang 3:a280069151ac 127 #define REG_START "<"
terence zhang 3:a280069151ac 128 #define REG_DEFAULT_PATH "/"
terencez 0:f9d13e09cf11 129
terence zhang 3:a280069151ac 130 #define REG_OBJECT_MIN_LEN 5 // "</n>,"
terence zhang 3:a280069151ac 131 #define REG_PATH_END ">,"
terence zhang 3:a280069151ac 132 #define REG_PATH_SEPARATOR "/"
terence zhang 3:a280069151ac 133
terence zhang 3:a280069151ac 134 #define REG_OBJECT_PATH "<%s/%hu>,"
terence zhang 3:a280069151ac 135 #define REG_OBJECT_INSTANCE_PATH "<%s/%hu/%hu>,"
terencez 0:f9d13e09cf11 136
terencez 0:f9d13e09cf11 137 #define URI_REGISTRATION_SEGMENT "rd"
terencez 0:f9d13e09cf11 138 #define URI_REGISTRATION_SEGMENT_LEN 2
terencez 0:f9d13e09cf11 139 #define URI_BOOTSTRAP_SEGMENT "bs"
terencez 0:f9d13e09cf11 140 #define URI_BOOTSTRAP_SEGMENT_LEN 2
terencez 0:f9d13e09cf11 141
terence zhang 3:a280069151ac 142 #define QUERY_STARTER "?"
terence zhang 3:a280069151ac 143 #define QUERY_NAME "ep="
terence zhang 3:a280069151ac 144 #define QUERY_NAME_LEN 3 // strlen("ep=")
terence zhang 3:a280069151ac 145 #define QUERY_SMS "sms="
terence zhang 3:a280069151ac 146 #define QUERY_SMS_LEN 4
terence zhang 3:a280069151ac 147 #define QUERY_LIFETIME "lt="
terence zhang 3:a280069151ac 148 #define QUERY_LIFETIME_LEN 3
terence zhang 3:a280069151ac 149 #define QUERY_VERSION "lwm2m="
terence zhang 3:a280069151ac 150 #define QUERY_VERSION_LEN 6
terence zhang 3:a280069151ac 151 #define QUERY_BINDING "b="
terence zhang 3:a280069151ac 152 #define QUERY_BINDING_LEN 2
terence zhang 3:a280069151ac 153 #define QUERY_DELIMITER "&"
terence zhang 3:a280069151ac 154
terence zhang 3:a280069151ac 155 #define LWM2M_VERSION "1.0"
terence zhang 3:a280069151ac 156 #define LWM2M_VERSION_LEN 3
terence zhang 3:a280069151ac 157
terence zhang 3:a280069151ac 158 #define QUERY_VERSION_FULL QUERY_VERSION LWM2M_VERSION
terence zhang 3:a280069151ac 159 #define QUERY_VERSION_FULL_LEN QUERY_VERSION_LEN+LWM2M_VERSION_LEN
terence zhang 3:a280069151ac 160
terence zhang 3:a280069151ac 161 #define REG_URI_START '<'
terence zhang 3:a280069151ac 162 #define REG_URI_END '>'
terence zhang 3:a280069151ac 163 #define REG_DELIMITER ','
terence zhang 3:a280069151ac 164 #define REG_ATTR_SEPARATOR ';'
terence zhang 3:a280069151ac 165 #define REG_ATTR_EQUALS '='
terence zhang 3:a280069151ac 166 #define REG_ATTR_TYPE_KEY "rt"
terence zhang 3:a280069151ac 167 #define REG_ATTR_TYPE_KEY_LEN 2
terence zhang 3:a280069151ac 168 #define REG_ATTR_TYPE_VALUE "\"oma.lwm2m\""
terence zhang 3:a280069151ac 169 #define REG_ATTR_TYPE_VALUE_LEN 11
terence zhang 3:a280069151ac 170 #define REG_ATTR_CONTENT_KEY "ct"
terence zhang 3:a280069151ac 171 #define REG_ATTR_CONTENT_KEY_LEN 2
terence zhang 3:a280069151ac 172 #define REG_ATTR_CONTENT_JSON "11543" // Temporary value
terence zhang 3:a280069151ac 173 #define REG_ATTR_CONTENT_JSON_LEN 5
terence zhang 3:a280069151ac 174
terence zhang 3:a280069151ac 175 #define ATTR_SERVER_ID_STR "ep="
terence zhang 3:a280069151ac 176 #define ATTR_SERVER_ID_LEN 3
terence zhang 3:a280069151ac 177 #define ATTR_MIN_PERIOD_STR "pmin="
terence zhang 3:a280069151ac 178 #define ATTR_MIN_PERIOD_LEN 5
terence zhang 3:a280069151ac 179 #define ATTR_MAX_PERIOD_STR "pmax="
terence zhang 3:a280069151ac 180 #define ATTR_MAX_PERIOD_LEN 5
terence zhang 3:a280069151ac 181 #define ATTR_GREATER_THAN_STR "gt="
terence zhang 3:a280069151ac 182 #define ATTR_GREATER_THAN_LEN 3
terence zhang 3:a280069151ac 183 #define ATTR_LESS_THAN_STR "lt="
terence zhang 3:a280069151ac 184 #define ATTR_LESS_THAN_LEN 3
terence zhang 3:a280069151ac 185 #define ATTR_STEP_STR "stp="
terence zhang 3:a280069151ac 186 #define ATTR_STEP_LEN 4
terence zhang 3:a280069151ac 187 #define ATTR_DIMENSION_STR "dim="
terence zhang 3:a280069151ac 188 #define ATTR_DIMENSION_LEN 4
terence zhang 3:a280069151ac 189
terence zhang 3:a280069151ac 190 #define URI_MAX_STRING_LEN 18 // /65535/65535/65535
terence zhang 3:a280069151ac 191 #define _PRV_64BIT_BUFFER_SIZE 8
terence zhang 3:a280069151ac 192
terence zhang 3:a280069151ac 193 #define LINK_ITEM_START "<"
terence zhang 3:a280069151ac 194 #define LINK_ITEM_START_SIZE 1
terence zhang 3:a280069151ac 195 #define LINK_ITEM_END ">,"
terence zhang 3:a280069151ac 196 #define LINK_ITEM_END_SIZE 2
terence zhang 3:a280069151ac 197 #define LINK_ITEM_DIM_START ">;dim="
terence zhang 3:a280069151ac 198 #define LINK_ITEM_DIM_START_SIZE 6
terence zhang 3:a280069151ac 199 #define LINK_ITEM_ATTR_END ","
terence zhang 3:a280069151ac 200 #define LINK_ITEM_ATTR_END_SIZE 1
terence zhang 3:a280069151ac 201 #define LINK_URI_SEPARATOR "/"
terence zhang 3:a280069151ac 202 #define LINK_URI_SEPARATOR_SIZE 1
terence zhang 3:a280069151ac 203 #define LINK_ATTR_SEPARATOR ";"
terence zhang 3:a280069151ac 204 #define LINK_ATTR_SEPARATOR_SIZE 1
terence zhang 3:a280069151ac 205
terence zhang 3:a280069151ac 206 #define ATTR_FLAG_NUMERIC (uint8_t)(LWM2M_ATTR_FLAG_LESS_THAN | LWM2M_ATTR_FLAG_GREATER_THAN | LWM2M_ATTR_FLAG_STEP)
terence zhang 3:a280069151ac 207
terencez 0:f9d13e09cf11 208 #define LWM2M_URI_FLAG_DM (uint8_t)0x00
terence zhang 3:a280069151ac 209 #define LWM2M_URI_FLAG_DELETE_ALL (uint8_t)0x10
terencez 0:f9d13e09cf11 210 #define LWM2M_URI_FLAG_REGISTRATION (uint8_t)0x20
terencez 0:f9d13e09cf11 211 #define LWM2M_URI_FLAG_BOOTSTRAP (uint8_t)0x40
terencez 0:f9d13e09cf11 212
terencez 0:f9d13e09cf11 213 #define LWM2M_URI_MASK_TYPE (uint8_t)0x70
terencez 0:f9d13e09cf11 214 #define LWM2M_URI_MASK_ID (uint8_t)0x07
terencez 0:f9d13e09cf11 215
terencez 0:f9d13e09cf11 216 typedef struct
terencez 0:f9d13e09cf11 217 {
terence zhang 3:a280069151ac 218 uint16_t clientID;
terencez 0:f9d13e09cf11 219 lwm2m_uri_t uri;
terencez 0:f9d13e09cf11 220 lwm2m_result_callback_t callback;
terencez 0:f9d13e09cf11 221 void * userData;
terencez 0:f9d13e09cf11 222 } dm_data_t;
terencez 0:f9d13e09cf11 223
terence zhang 3:a280069151ac 224 typedef enum
terencez 0:f9d13e09cf11 225 {
terence zhang 3:a280069151ac 226 URI_DEPTH_OBJECT,
terence zhang 3:a280069151ac 227 URI_DEPTH_OBJECT_INSTANCE,
terence zhang 3:a280069151ac 228 URI_DEPTH_RESOURCE,
terence zhang 3:a280069151ac 229 URI_DEPTH_RESOURCE_INSTANCE
terence zhang 3:a280069151ac 230 } uri_depth_t;
terence zhang 3:a280069151ac 231
terence zhang 3:a280069151ac 232 #ifdef LWM2M_BOOTSTRAP_SERVER_MODE
terence zhang 3:a280069151ac 233 typedef struct
terence zhang 3:a280069151ac 234 {
terence zhang 3:a280069151ac 235 bool isUri;
terence zhang 3:a280069151ac 236 lwm2m_uri_t uri;
terence zhang 3:a280069151ac 237 lwm2m_bootstrap_callback_t callback;
terence zhang 3:a280069151ac 238 void * userData;
terence zhang 3:a280069151ac 239 } bs_data_t;
terence zhang 3:a280069151ac 240 #endif
terencez 0:f9d13e09cf11 241
terencez 0:f9d13e09cf11 242 // defined in uri.c
terence zhang 3:a280069151ac 243 lwm2m_uri_t * uri_decode(char * altPath, multi_option_t *uriPath);
terence zhang 3:a280069151ac 244 int uri_getNumber(uint8_t * uriString, size_t uriLength);
terence zhang 3:a280069151ac 245 int uri_toString(lwm2m_uri_t * uriP, uint8_t * buffer, size_t bufferLen, uri_depth_t * depthP);
terencez 0:f9d13e09cf11 246
terencez 0:f9d13e09cf11 247 // defined in objects.c
terence zhang 3:a280069151ac 248 coap_status_t object_readData(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, int * sizeP, lwm2m_data_t ** dataP);
terence zhang 3:a280069151ac 249 coap_status_t object_read(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_media_type_t * formatP, uint8_t ** bufferP, size_t * lengthP);
terence zhang 3:a280069151ac 250 coap_status_t object_write(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_media_type_t format, uint8_t * buffer, size_t length);
terence zhang 3:a280069151ac 251 coap_status_t object_create(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_media_type_t format, uint8_t * buffer, size_t length);
terence zhang 3:a280069151ac 252 coap_status_t object_execute(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, uint8_t * buffer, size_t length);
terencez 0:f9d13e09cf11 253 coap_status_t object_delete(lwm2m_context_t * contextP, lwm2m_uri_t * uriP);
terence zhang 3:a280069151ac 254 coap_status_t object_discover(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_server_t * serverP, uint8_t ** bufferP, size_t * lengthP);
terence zhang 3:a280069151ac 255 uint8_t object_checkReadable(lwm2m_context_t * contextP, lwm2m_uri_t * uriP);
terence zhang 3:a280069151ac 256 uint8_t object_checkNumeric(lwm2m_context_t * contextP, lwm2m_uri_t * uriP);
terencez 0:f9d13e09cf11 257 bool object_isInstanceNew(lwm2m_context_t * contextP, uint16_t objectId, uint16_t instanceId);
terence zhang 3:a280069151ac 258 int object_getRegisterPayload(lwm2m_context_t * contextP, uint8_t * buffer, size_t length);
terence zhang 3:a280069151ac 259 int object_getServers(lwm2m_context_t * contextP);
terence zhang 3:a280069151ac 260 coap_status_t object_createInstance(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_data_t * dataP);
terence zhang 3:a280069151ac 261 coap_status_t object_writeInstance(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_data_t * dataP);
terencez 0:f9d13e09cf11 262
terencez 0:f9d13e09cf11 263 // defined in transaction.c
terence zhang 3:a280069151ac 264 lwm2m_transaction_t * transaction_new(void * sessionH, coap_method_t method, char * altPath, lwm2m_uri_t * uriP, uint16_t mID, uint8_t token_len, uint8_t* token);
terencez 0:f9d13e09cf11 265 int transaction_send(lwm2m_context_t * contextP, lwm2m_transaction_t * transacP);
terencez 0:f9d13e09cf11 266 void transaction_free(lwm2m_transaction_t * transacP);
terencez 0:f9d13e09cf11 267 void transaction_remove(lwm2m_context_t * contextP, lwm2m_transaction_t * transacP);
terence zhang 3:a280069151ac 268 bool transaction_handleResponse(lwm2m_context_t * contextP, void * fromSessionH, coap_packet_t * message, coap_packet_t * response);
terence zhang 3:a280069151ac 269 void transaction_step(lwm2m_context_t * contextP, time_t currentTime, time_t * timeoutP);
terencez 0:f9d13e09cf11 270
terencez 0:f9d13e09cf11 271 // defined in management.c
terence zhang 3:a280069151ac 272 coap_status_t dm_handleRequest(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_server_t * serverP, coap_packet_t * message, coap_packet_t * response);
terencez 0:f9d13e09cf11 273
terencez 0:f9d13e09cf11 274 // defined in observe.c
terence zhang 3:a280069151ac 275 coap_status_t observe_handleRequest(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_server_t * serverP, int size, lwm2m_data_t * dataP, coap_packet_t * message, coap_packet_t * response);
terence zhang 3:a280069151ac 276 void observe_cancel(lwm2m_context_t * contextP, uint16_t mid, void * fromSessionH);
terence zhang 3:a280069151ac 277 coap_status_t observe_setParameters(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_server_t * serverP, lwm2m_attributes_t * attrP);
terence zhang 3:a280069151ac 278 void observe_step(lwm2m_context_t * contextP, time_t currentTime, time_t * timeoutP);
terence zhang 3:a280069151ac 279 bool observe_handleNotify(lwm2m_context_t * contextP, void * fromSessionH, coap_packet_t * message, coap_packet_t * response);
terence zhang 3:a280069151ac 280 void observe_remove(lwm2m_observation_t * observationP);
terence zhang 3:a280069151ac 281 lwm2m_observed_t * observe_findByUri(lwm2m_context_t * contextP, lwm2m_uri_t * uriP);
terencez 0:f9d13e09cf11 282
terencez 0:f9d13e09cf11 283 // defined in registration.c
terence zhang 3:a280069151ac 284 coap_status_t registration_handleRequest(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, void * fromSessionH, coap_packet_t * message, coap_packet_t * response);
terencez 0:f9d13e09cf11 285 void registration_deregister(lwm2m_context_t * contextP, lwm2m_server_t * serverP);
terence zhang 3:a280069151ac 286 void registration_freeClient(lwm2m_client_t * clientP);
terence zhang 3:a280069151ac 287 uint8_t registration_start(lwm2m_context_t * contextP);
terence zhang 3:a280069151ac 288 void registration_step(lwm2m_context_t * contextP, time_t currentTime, time_t * timeoutP);
terence zhang 3:a280069151ac 289 lwm2m_status_t registration_getStatus(lwm2m_context_t * contextP);
terencez 0:f9d13e09cf11 290
terencez 0:f9d13e09cf11 291 // defined in packet.c
terencez 0:f9d13e09cf11 292 coap_status_t message_send(lwm2m_context_t * contextP, coap_packet_t * message, void * sessionH);
terencez 0:f9d13e09cf11 293
terence zhang 3:a280069151ac 294 // defined in bootstrap.c
terence zhang 3:a280069151ac 295 void bootstrap_step(lwm2m_context_t * contextP, uint32_t currentTime, time_t* timeoutP);
terence zhang 3:a280069151ac 296 coap_status_t bootstrap_handleCommand(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_server_t * serverP, coap_packet_t * message, coap_packet_t * response);
terence zhang 3:a280069151ac 297 coap_status_t bootstrap_handleDeleteAll(lwm2m_context_t * context, void * fromSessionH);
terence zhang 3:a280069151ac 298 coap_status_t bootstrap_handleFinish(lwm2m_context_t * context, void * fromSessionH);
terence zhang 3:a280069151ac 299 uint8_t bootstrap_handleRequest(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, void * fromSessionH, coap_packet_t * message, coap_packet_t * response);
terence zhang 3:a280069151ac 300 void bootstrap_start(lwm2m_context_t * contextP);
terence zhang 3:a280069151ac 301 lwm2m_status_t bootstrap_getStatus(lwm2m_context_t * contextP);
terence zhang 3:a280069151ac 302
terence zhang 3:a280069151ac 303 // defined in tlv.c
terence zhang 3:a280069151ac 304 int tlv_parse(uint8_t * buffer, size_t bufferLen, lwm2m_data_t ** dataP);
terence zhang 3:a280069151ac 305 int tlv_serialize(bool isResourceInstance, int size, lwm2m_data_t * dataP, uint8_t ** bufferP);
terence zhang 3:a280069151ac 306
terence zhang 3:a280069151ac 307 // defined in json.c
terence zhang 3:a280069151ac 308 #ifdef LWM2M_SUPPORT_JSON
terence zhang 3:a280069151ac 309 int json_parse(lwm2m_uri_t * uriP, uint8_t * buffer, size_t bufferLen, lwm2m_data_t ** dataP);
terence zhang 3:a280069151ac 310 int json_serialize(lwm2m_uri_t * uriP, int size, lwm2m_data_t * tlvP, uint8_t ** bufferP);
terence zhang 3:a280069151ac 311 #endif
terence zhang 3:a280069151ac 312
terence zhang 3:a280069151ac 313 // defined in discover.c
terence zhang 3:a280069151ac 314 int discover_serialize(lwm2m_context_t * contextP, lwm2m_uri_t * uriP, lwm2m_server_t * serverP, int size, lwm2m_data_t * dataP, uint8_t ** bufferP);
terence zhang 3:a280069151ac 315
terence zhang 3:a280069151ac 316 // defined in block1.c
terence zhang 3:a280069151ac 317 coap_status_t coap_block1_handler(lwm2m_block1_data_t ** block1Data, uint16_t mid, uint8_t * buffer, size_t length, uint16_t blockSize, uint32_t blockNum, bool blockMore, uint8_t ** outputBuffer, size_t * outputLength);
terence zhang 3:a280069151ac 318 void free_block1_buffer(lwm2m_block1_data_t * block1Data);
terence zhang 3:a280069151ac 319
terence zhang 3:a280069151ac 320 // defined in utils.c
terence zhang 3:a280069151ac 321 lwm2m_data_type_t utils_depthToDatatype(uri_depth_t depth);
terence zhang 3:a280069151ac 322 lwm2m_binding_t utils_stringToBinding(uint8_t *buffer, size_t length);
terence zhang 3:a280069151ac 323 lwm2m_media_type_t utils_convertMediaType(coap_content_type_t type);
terence zhang 3:a280069151ac 324 int utils_isAltPathValid(const char * altPath);
terence zhang 3:a280069151ac 325 int utils_stringCopy(char * buffer, size_t length, const char * str);
terence zhang 3:a280069151ac 326 int utils_intCopy(char * buffer, size_t length, int32_t value);
terence zhang 3:a280069151ac 327 size_t utils_intToText(int64_t data, uint8_t * string, size_t length);
terence zhang 3:a280069151ac 328 size_t utils_floatToText(double data, uint8_t * string, size_t length);
terence zhang 3:a280069151ac 329 int utils_plainTextToInt64(uint8_t * buffer, int length, int64_t * dataP);
terence zhang 3:a280069151ac 330 int utils_plainTextToFloat64(uint8_t * buffer, int length, double * dataP);
terence zhang 3:a280069151ac 331 size_t utils_int64ToPlainText(int64_t data, uint8_t ** bufferP);
terence zhang 3:a280069151ac 332 size_t utils_float64ToPlainText(double data, uint8_t ** bufferP);
terence zhang 3:a280069151ac 333 size_t utils_boolToPlainText(bool data, uint8_t ** bufferP);
terence zhang 3:a280069151ac 334 void utils_copyValue(void * dst, const void * src, size_t len);
terence zhang 3:a280069151ac 335 int utils_opaqueToInt(const uint8_t * buffer, size_t buffer_len, int64_t * dataP);
terence zhang 3:a280069151ac 336 int utils_opaqueToFloat(const uint8_t * buffer, size_t buffer_len, double * dataP);
terence zhang 3:a280069151ac 337 size_t utils_encodeInt(int64_t data, uint8_t data_buffer[_PRV_64BIT_BUFFER_SIZE]);
terence zhang 3:a280069151ac 338 size_t utils_encodeFloat(double data, uint8_t data_buffer[_PRV_64BIT_BUFFER_SIZE]);
terence zhang 3:a280069151ac 339 size_t utils_base64ToOpaque(uint8_t * dataP, size_t dataLen, uint8_t ** bufferP);
terence zhang 3:a280069151ac 340 size_t utils_opaqueToBase64(uint8_t * dataP, size_t dataLen, uint8_t ** bufferP);
terence zhang 3:a280069151ac 341 size_t utils_base64Encode(uint8_t * dataP, size_t dataLen, uint8_t * bufferP, size_t bufferLen);
terence zhang 3:a280069151ac 342 #ifdef LWM2M_CLIENT_MODE
terence zhang 3:a280069151ac 343 lwm2m_server_t * utils_findServer(lwm2m_context_t * contextP, void * fromSessionH);
terence zhang 3:a280069151ac 344 lwm2m_server_t * utils_findBootstrapServer(lwm2m_context_t * contextP, void * fromSessionH);
terence zhang 3:a280069151ac 345 #endif
terencez 0:f9d13e09cf11 346
terencez 0:f9d13e09cf11 347 #endif