Toyomasa Watarai / simple-mbed-cloud-client

Dependents:  

Committer:
MACRUM
Date:
Mon Jul 02 06:30:39 2018 +0000
Revision:
0:276e7a263c35
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:276e7a263c35 1 /*
MACRUM 0:276e7a263c35 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
MACRUM 0:276e7a263c35 3 * SPDX-License-Identifier: Apache-2.0
MACRUM 0:276e7a263c35 4 * Licensed under the Apache License, Version 2.0 (the License); you may
MACRUM 0:276e7a263c35 5 * not use this file except in compliance with the License.
MACRUM 0:276e7a263c35 6 * You may obtain a copy of the License at
MACRUM 0:276e7a263c35 7 *
MACRUM 0:276e7a263c35 8 * http://www.apache.org/licenses/LICENSE-2.0
MACRUM 0:276e7a263c35 9 *
MACRUM 0:276e7a263c35 10 * Unless required by applicable law or agreed to in writing, software
MACRUM 0:276e7a263c35 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
MACRUM 0:276e7a263c35 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
MACRUM 0:276e7a263c35 13 * See the License for the specific language governing permissions and
MACRUM 0:276e7a263c35 14 * limitations under the License.
MACRUM 0:276e7a263c35 15 */
MACRUM 0:276e7a263c35 16 #include "mbed-client/m2mvector.h"
MACRUM 0:276e7a263c35 17 #include "mbed-client/m2mobject.h"
MACRUM 0:276e7a263c35 18 #include "mbed-client/m2mobjectinstance.h"
MACRUM 0:276e7a263c35 19 #include "mbed-client/m2mresource.h"
MACRUM 0:276e7a263c35 20
MACRUM 0:276e7a263c35 21 class M2MResourceBase;
MACRUM 0:276e7a263c35 22
MACRUM 0:276e7a263c35 23 /**
MACRUM 0:276e7a263c35 24 * @brief M2MTLVSerializer
MACRUM 0:276e7a263c35 25 * TLV Serialiser constructs the binary representation of object instances,
MACRUM 0:276e7a263c35 26 * resources and resource instances (see OMA-LWM2M specification, chapter 6.1
MACRUM 0:276e7a263c35 27 * for resource model) as OMA-TLV according described in chapter 6.3.3.
MACRUM 0:276e7a263c35 28 *
MACRUM 0:276e7a263c35 29 */
MACRUM 0:276e7a263c35 30 class M2MTLVSerializer {
MACRUM 0:276e7a263c35 31
MACRUM 0:276e7a263c35 32 public:
MACRUM 0:276e7a263c35 33
MACRUM 0:276e7a263c35 34 /**
MACRUM 0:276e7a263c35 35 * Serialises given objects instances that contain resources or multiple
MACRUM 0:276e7a263c35 36 * resources. Object instance IDs are also encoded. This method must be
MACRUM 0:276e7a263c35 37 * used when an operation targets an object with (potential) multiple
MACRUM 0:276e7a263c35 38 * instances like "GET /1". In that case the generated TLV will contain the
MACRUM 0:276e7a263c35 39 * following data:
MACRUM 0:276e7a263c35 40 * <ul>
MACRUM 0:276e7a263c35 41 * <li> ./0
MACRUM 0:276e7a263c35 42 * <li> ./0/0
MACRUM 0:276e7a263c35 43 * <li> ./0/1
MACRUM 0:276e7a263c35 44 * <li> ...
MACRUM 0:276e7a263c35 45 * <li> ./1
MACRUM 0:276e7a263c35 46 * <li> ./1/0
MACRUM 0:276e7a263c35 47 * <li> ./1/1
MACRUM 0:276e7a263c35 48 * <li> ...
MACRUM 0:276e7a263c35 49 * </ul>
MACRUM 0:276e7a263c35 50 *
MACRUM 0:276e7a263c35 51 * @param objects List of object instances.
MACRUM 0:276e7a263c35 52 * @return Object instances encoded binary as OMA-TLV
MACRUM 0:276e7a263c35 53 * @see #serializeObjectInstances(List)
MACRUM 0:276e7a263c35 54 */
MACRUM 0:276e7a263c35 55 static uint8_t* serialize(const M2MObjectInstanceList &object_instance_list, uint32_t &size);
MACRUM 0:276e7a263c35 56
MACRUM 0:276e7a263c35 57 /**
MACRUM 0:276e7a263c35 58 * Serialises given resources with no information about the parent object
MACRUM 0:276e7a263c35 59 * instance. This method must be used when an operation targets an object
MACRUM 0:276e7a263c35 60 * instance like "GET /1/0" or a single-instance object like "GET /3//".
MACRUM 0:276e7a263c35 61 * Resources may have single or multiple instances. The generated TLV will
MACRUM 0:276e7a263c35 62 * contain the following data as response to "GET /3//":
MACRUM 0:276e7a263c35 63 * <ul>
MACRUM 0:276e7a263c35 64 * <li> ./0
MACRUM 0:276e7a263c35 65 * <li> ./1
MACRUM 0:276e7a263c35 66 * <li> ./2
MACRUM 0:276e7a263c35 67 * <li> ./6/0 (1st instance of a multiple resource)
MACRUM 0:276e7a263c35 68 * <li> ./6/1 (2nd instance of a multiple resource)
MACRUM 0:276e7a263c35 69 * <li> ...
MACRUM 0:276e7a263c35 70 * </ul>
MACRUM 0:276e7a263c35 71 * @param resources Array of resources and resource instances.
MACRUM 0:276e7a263c35 72 * @return Resources encoded binary as OMA-TLV
MACRUM 0:276e7a263c35 73 * @see #serializeResources(List)
MACRUM 0:276e7a263c35 74 */
MACRUM 0:276e7a263c35 75 static uint8_t* serialize(const M2MResourceList &resource_list, uint32_t &size);
MACRUM 0:276e7a263c35 76
MACRUM 0:276e7a263c35 77 static uint8_t* serialize(const M2MResource *resource, uint32_t &size);
MACRUM 0:276e7a263c35 78
MACRUM 0:276e7a263c35 79 private :
MACRUM 0:276e7a263c35 80
MACRUM 0:276e7a263c35 81 static uint8_t* serialize_object_instances(const M2MObjectInstanceList &object_instance_list, uint32_t &size);
MACRUM 0:276e7a263c35 82
MACRUM 0:276e7a263c35 83 static uint8_t* serialize_resources(const M2MResourceList &resource_list, uint32_t &size, bool &valid);
MACRUM 0:276e7a263c35 84
MACRUM 0:276e7a263c35 85 static bool serialize(uint16_t id, const M2MObjectInstance *object_instance, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 86
MACRUM 0:276e7a263c35 87 static bool serialize(const M2MResource *resource, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 88
MACRUM 0:276e7a263c35 89 static bool serialize_resource(const M2MResource *resource, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 90
MACRUM 0:276e7a263c35 91 static bool serialize_multiple_resource(const M2MResource *resource, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 92
MACRUM 0:276e7a263c35 93 static bool serialize_resource_instance(uint16_t id, const M2MResourceInstance *resource, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 94
MACRUM 0:276e7a263c35 95 static bool serialize_TILV (uint8_t type, uint16_t id, uint8_t *value, uint32_t value_length, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 96
MACRUM 0:276e7a263c35 97 static void serialize_id(uint16_t id, uint32_t &size, uint8_t *id_ptr);
MACRUM 0:276e7a263c35 98
MACRUM 0:276e7a263c35 99 static void serialize_length(uint32_t length, uint32_t &size, uint8_t *length_ptr);
MACRUM 0:276e7a263c35 100
MACRUM 0:276e7a263c35 101 static bool serialize_TLV_binary_int(const M2MResourceBase *resource, uint8_t type, uint16_t id, uint8_t *&data, uint32_t &size);
MACRUM 0:276e7a263c35 102 };