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

Dependencies:   C12832 LM75B

Committer:
terencez
Date:
Mon Apr 24 23:03:31 2017 +0000
Revision:
0:f9d13e09cf11
The first compiled submit.

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 * Julien Vermillard, Sierra Wireless
terencez 0:f9d13e09cf11 16 *
terencez 0:f9d13e09cf11 17 *******************************************************************************/
terencez 0:f9d13e09cf11 18
terencez 0:f9d13e09cf11 19 /*
terencez 0:f9d13e09cf11 20 * Resources:
terencez 0:f9d13e09cf11 21 *
terencez 0:f9d13e09cf11 22 * Name | ID | Operations | Instances | Mandatory | Type | Range | Units |
terencez 0:f9d13e09cf11 23 * Short ID | 0 | R | Single | Yes | Integer | 1-65535 | |
terencez 0:f9d13e09cf11 24 * Lifetime | 1 | R/W | Single | Yes | Integer | | s |
terencez 0:f9d13e09cf11 25 * Default Min Period | 2 | R/W | Single | No | Integer | | s |
terencez 0:f9d13e09cf11 26 * Default Max Period | 3 | R/W | Single | No | Integer | | s |
terencez 0:f9d13e09cf11 27 * Disable | 4 | E | Single | No | | | |
terencez 0:f9d13e09cf11 28 * Disable Timeout | 5 | R/W | Single | No | Integer | | s |
terencez 0:f9d13e09cf11 29 * Notification Storing | 6 | R/W | Single | Yes | String | | |
terencez 0:f9d13e09cf11 30 * Binding | 7 | R/W | Single | Yes | | | |
terencez 0:f9d13e09cf11 31 * Registration Update | 8 | E | Single | Yes | | | |
terencez 0:f9d13e09cf11 32 *
terencez 0:f9d13e09cf11 33 */
terencez 0:f9d13e09cf11 34
terencez 0:f9d13e09cf11 35 #include "internals.h"
terencez 0:f9d13e09cf11 36
terencez 0:f9d13e09cf11 37 #ifdef LWM2M_CLIENT_MODE
terencez 0:f9d13e09cf11 38 #define RESOURCE_SHORTID_ID 0
terencez 0:f9d13e09cf11 39 #define RESOURCE_LIFETIME_ID 1
terencez 0:f9d13e09cf11 40 #define RESOURCE_MINPERIOD_ID 2
terencez 0:f9d13e09cf11 41 #define RESOURCE_MAXPERIOD_ID 3
terencez 0:f9d13e09cf11 42 #define RESOURCE_DISABLE_ID 4
terencez 0:f9d13e09cf11 43 #define RESOURCE_TIMEOUT_ID 5
terencez 0:f9d13e09cf11 44 #define RESOURCE_STORING_ID 6
terencez 0:f9d13e09cf11 45 #define RESOURCE_BINDING_ID 7
terencez 0:f9d13e09cf11 46 #define RESOURCE_UPDATE_ID 8
terencez 0:f9d13e09cf11 47
terencez 0:f9d13e09cf11 48 #define LIFETIME_DEFAULT 86400
terencez 0:f9d13e09cf11 49
terencez 0:f9d13e09cf11 50 coap_status_t object_server_read(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 51 lwm2m_uri_t * uriP,
terencez 0:f9d13e09cf11 52 char ** bufferP,
terencez 0:f9d13e09cf11 53 int * lengthP)
terencez 0:f9d13e09cf11 54 {
terencez 0:f9d13e09cf11 55 if (!LWM2M_URI_IS_SET_INSTANCE(uriP))
terencez 0:f9d13e09cf11 56 {
terencez 0:f9d13e09cf11 57 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 58 }
terencez 0:f9d13e09cf11 59 else
terencez 0:f9d13e09cf11 60 {
terencez 0:f9d13e09cf11 61 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 62
terencez 0:f9d13e09cf11 63 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 64 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 65
terencez 0:f9d13e09cf11 66 if (!LWM2M_URI_IS_SET_RESOURCE(uriP))
terencez 0:f9d13e09cf11 67 {
terencez 0:f9d13e09cf11 68 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 69 }
terencez 0:f9d13e09cf11 70 else
terencez 0:f9d13e09cf11 71 {
terencez 0:f9d13e09cf11 72 switch (uriP->resourceId)
terencez 0:f9d13e09cf11 73 {
terencez 0:f9d13e09cf11 74 case RESOURCE_SHORTID_ID:
terencez 0:f9d13e09cf11 75 *lengthP = lwm2m_int32ToPlainText(serverP->shortID, bufferP);
terencez 0:f9d13e09cf11 76 if (0 != *lengthP)
terencez 0:f9d13e09cf11 77 {
terencez 0:f9d13e09cf11 78 return COAP_205_CONTENT;
terencez 0:f9d13e09cf11 79 }
terencez 0:f9d13e09cf11 80 else
terencez 0:f9d13e09cf11 81 {
terencez 0:f9d13e09cf11 82 return COAP_500_INTERNAL_SERVER_ERROR;
terencez 0:f9d13e09cf11 83 }
terencez 0:f9d13e09cf11 84 break;
terencez 0:f9d13e09cf11 85
terencez 0:f9d13e09cf11 86 case RESOURCE_LIFETIME_ID:
terencez 0:f9d13e09cf11 87 {
terencez 0:f9d13e09cf11 88 int lifetime = serverP->lifetime;
terencez 0:f9d13e09cf11 89 if (lifetime == 0) lifetime = LIFETIME_DEFAULT;
terencez 0:f9d13e09cf11 90
terencez 0:f9d13e09cf11 91 *lengthP = lwm2m_int32ToPlainText(lifetime,bufferP);
terencez 0:f9d13e09cf11 92
terencez 0:f9d13e09cf11 93 if (0 != *lengthP)
terencez 0:f9d13e09cf11 94 {
terencez 0:f9d13e09cf11 95 return COAP_205_CONTENT;
terencez 0:f9d13e09cf11 96 }
terencez 0:f9d13e09cf11 97 else
terencez 0:f9d13e09cf11 98 {
terencez 0:f9d13e09cf11 99 return COAP_500_INTERNAL_SERVER_ERROR;
terencez 0:f9d13e09cf11 100 }
terencez 0:f9d13e09cf11 101 }
terencez 0:f9d13e09cf11 102 break;
terencez 0:f9d13e09cf11 103
terencez 0:f9d13e09cf11 104 case RESOURCE_MINPERIOD_ID:
terencez 0:f9d13e09cf11 105 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 106 case RESOURCE_MAXPERIOD_ID:
terencez 0:f9d13e09cf11 107 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 108 case RESOURCE_TIMEOUT_ID:
terencez 0:f9d13e09cf11 109 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 110 case RESOURCE_STORING_ID:
terencez 0:f9d13e09cf11 111 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 112 case RESOURCE_BINDING_ID:
terencez 0:f9d13e09cf11 113 {
terencez 0:f9d13e09cf11 114 char * value;
terencez 0:f9d13e09cf11 115 int len;
terencez 0:f9d13e09cf11 116 switch (serverP->binding) {
terencez 0:f9d13e09cf11 117 case BINDING_U:
terencez 0:f9d13e09cf11 118 value = "U";
terencez 0:f9d13e09cf11 119 *lengthP = 1;
terencez 0:f9d13e09cf11 120 break;
terencez 0:f9d13e09cf11 121 case BINDING_UQ:
terencez 0:f9d13e09cf11 122 value = "UQ";
terencez 0:f9d13e09cf11 123 *lengthP = 2;
terencez 0:f9d13e09cf11 124 break;
terencez 0:f9d13e09cf11 125 case BINDING_S:
terencez 0:f9d13e09cf11 126 value="S";
terencez 0:f9d13e09cf11 127 *lengthP = 1;
terencez 0:f9d13e09cf11 128 break;
terencez 0:f9d13e09cf11 129 case BINDING_SQ:
terencez 0:f9d13e09cf11 130 value = "SQ";
terencez 0:f9d13e09cf11 131 *lengthP = 2;
terencez 0:f9d13e09cf11 132 break;
terencez 0:f9d13e09cf11 133 case BINDING_US:
terencez 0:f9d13e09cf11 134 value = "US";
terencez 0:f9d13e09cf11 135 *lengthP = 2;
terencez 0:f9d13e09cf11 136 break;
terencez 0:f9d13e09cf11 137 case BINDING_UQS:
terencez 0:f9d13e09cf11 138 value = "USQ";
terencez 0:f9d13e09cf11 139 *lengthP = 3;
terencez 0:f9d13e09cf11 140 break;
terencez 0:f9d13e09cf11 141 default:
terencez 0:f9d13e09cf11 142 return COAP_500_INTERNAL_SERVER_ERROR;
terencez 0:f9d13e09cf11 143 }
terencez 0:f9d13e09cf11 144 *bufferP = lwm2m_malloc(*lengthP);
terencez 0:f9d13e09cf11 145 if (NULL == *bufferP) return COAP_500_INTERNAL_SERVER_ERROR;
terencez 0:f9d13e09cf11 146 memcpy(*bufferP, value, *lengthP);
terencez 0:f9d13e09cf11 147 return COAP_205_CONTENT;
terencez 0:f9d13e09cf11 148 }
terencez 0:f9d13e09cf11 149 default:
terencez 0:f9d13e09cf11 150 return COAP_405_METHOD_NOT_ALLOWED;
terencez 0:f9d13e09cf11 151 }
terencez 0:f9d13e09cf11 152 }
terencez 0:f9d13e09cf11 153 }
terencez 0:f9d13e09cf11 154 }
terencez 0:f9d13e09cf11 155
terencez 0:f9d13e09cf11 156 coap_status_t object_server_write(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 157 lwm2m_uri_t * uriP,
terencez 0:f9d13e09cf11 158 char * buffer,
terencez 0:f9d13e09cf11 159 int length)
terencez 0:f9d13e09cf11 160 {
terencez 0:f9d13e09cf11 161 if (!LWM2M_URI_IS_SET_INSTANCE(uriP))
terencez 0:f9d13e09cf11 162 {
terencez 0:f9d13e09cf11 163 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 164 }
terencez 0:f9d13e09cf11 165 else
terencez 0:f9d13e09cf11 166 {
terencez 0:f9d13e09cf11 167 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 168
terencez 0:f9d13e09cf11 169 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 170 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 171
terencez 0:f9d13e09cf11 172 if (!LWM2M_URI_IS_SET_RESOURCE(uriP))
terencez 0:f9d13e09cf11 173 {
terencez 0:f9d13e09cf11 174 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 175 }
terencez 0:f9d13e09cf11 176 else
terencez 0:f9d13e09cf11 177 {
terencez 0:f9d13e09cf11 178 switch (uriP->resourceId)
terencez 0:f9d13e09cf11 179 {
terencez 0:f9d13e09cf11 180 case RESOURCE_LIFETIME_ID:
terencez 0:f9d13e09cf11 181 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 182 case RESOURCE_MINPERIOD_ID:
terencez 0:f9d13e09cf11 183 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 184 case RESOURCE_MAXPERIOD_ID:
terencez 0:f9d13e09cf11 185 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 186 case RESOURCE_TIMEOUT_ID:
terencez 0:f9d13e09cf11 187 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 188 case RESOURCE_STORING_ID:
terencez 0:f9d13e09cf11 189 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 190 case RESOURCE_BINDING_ID:
terencez 0:f9d13e09cf11 191 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 192 default:
terencez 0:f9d13e09cf11 193 return COAP_405_METHOD_NOT_ALLOWED;
terencez 0:f9d13e09cf11 194 }
terencez 0:f9d13e09cf11 195 }
terencez 0:f9d13e09cf11 196 }
terencez 0:f9d13e09cf11 197 }
terencez 0:f9d13e09cf11 198
terencez 0:f9d13e09cf11 199 coap_status_t object_server_execute(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 200 lwm2m_uri_t * uriP,
terencez 0:f9d13e09cf11 201 char * buffer,
terencez 0:f9d13e09cf11 202 int length)
terencez 0:f9d13e09cf11 203 {
terencez 0:f9d13e09cf11 204 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 205
terencez 0:f9d13e09cf11 206 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 207 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 208
terencez 0:f9d13e09cf11 209 switch (uriP->resourceId)
terencez 0:f9d13e09cf11 210 {
terencez 0:f9d13e09cf11 211 case RESOURCE_DISABLE_ID:
terencez 0:f9d13e09cf11 212 return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 213 case RESOURCE_UPDATE_ID:
terencez 0:f9d13e09cf11 214 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 215 default:
terencez 0:f9d13e09cf11 216 return COAP_405_METHOD_NOT_ALLOWED;
terencez 0:f9d13e09cf11 217 }
terencez 0:f9d13e09cf11 218 }
terencez 0:f9d13e09cf11 219
terencez 0:f9d13e09cf11 220 coap_status_t object_server_create(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 221 lwm2m_uri_t * uriP,
terencez 0:f9d13e09cf11 222 char * buffer,
terencez 0:f9d13e09cf11 223 int length)
terencez 0:f9d13e09cf11 224 {
terencez 0:f9d13e09cf11 225 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 226
terencez 0:f9d13e09cf11 227 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 228 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 229
terencez 0:f9d13e09cf11 230 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 231 }
terencez 0:f9d13e09cf11 232
terencez 0:f9d13e09cf11 233 coap_status_t object_server_delete(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 234 lwm2m_uri_t * uriP)
terencez 0:f9d13e09cf11 235 {
terencez 0:f9d13e09cf11 236 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 237
terencez 0:f9d13e09cf11 238 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 239 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 240
terencez 0:f9d13e09cf11 241 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 242 }
terencez 0:f9d13e09cf11 243
terencez 0:f9d13e09cf11 244 coap_status_t object_security_create(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 245 lwm2m_uri_t * uriP,
terencez 0:f9d13e09cf11 246 char * buffer,
terencez 0:f9d13e09cf11 247 int length)
terencez 0:f9d13e09cf11 248 {
terencez 0:f9d13e09cf11 249 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 250
terencez 0:f9d13e09cf11 251 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 252 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 253
terencez 0:f9d13e09cf11 254 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 255 }
terencez 0:f9d13e09cf11 256
terencez 0:f9d13e09cf11 257 coap_status_t object_security_delete(lwm2m_context_t * contextP,
terencez 0:f9d13e09cf11 258 lwm2m_uri_t * uriP)
terencez 0:f9d13e09cf11 259 {
terencez 0:f9d13e09cf11 260 lwm2m_server_t * serverP;
terencez 0:f9d13e09cf11 261
terencez 0:f9d13e09cf11 262 serverP = (lwm2m_server_t *)lwm2m_list_find((lwm2m_list_t *)contextP->serverList, uriP->instanceId);
terencez 0:f9d13e09cf11 263 if (serverP == NULL) return COAP_404_NOT_FOUND;
terencez 0:f9d13e09cf11 264
terencez 0:f9d13e09cf11 265 return COAP_501_NOT_IMPLEMENTED;
terencez 0:f9d13e09cf11 266 }
terencez 0:f9d13e09cf11 267
terencez 0:f9d13e09cf11 268 #endif