Jim Carver / Mbed OS mbed-cloud-workshop-connect-PIR

Dependencies:   HTS221

Fork of mbed-cloud-workshop-connect-HTS221 by Jim Carver

Committer:
JimCarver
Date:
Thu Oct 25 14:00:12 2018 +0000
Revision:
4:e518dde96e59
Parent:
0:6b753f761943
Simulated dispenser

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCarver 0:6b753f761943 1 /*
JimCarver 0:6b753f761943 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
JimCarver 0:6b753f761943 3 * SPDX-License-Identifier: Apache-2.0
JimCarver 0:6b753f761943 4 * Licensed under the Apache License, Version 2.0 (the License); you may
JimCarver 0:6b753f761943 5 * not use this file except in compliance with the License.
JimCarver 0:6b753f761943 6 * You may obtain a copy of the License at
JimCarver 0:6b753f761943 7 *
JimCarver 0:6b753f761943 8 * http://www.apache.org/licenses/LICENSE-2.0
JimCarver 0:6b753f761943 9 *
JimCarver 0:6b753f761943 10 * Unless required by applicable law or agreed to in writing, software
JimCarver 0:6b753f761943 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
JimCarver 0:6b753f761943 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
JimCarver 0:6b753f761943 13 * See the License for the specific language governing permissions and
JimCarver 0:6b753f761943 14 * limitations under the License.
JimCarver 0:6b753f761943 15 */
JimCarver 0:6b753f761943 16 #ifndef M2M_OBJECT_H
JimCarver 0:6b753f761943 17 #define M2M_OBJECT_H
JimCarver 0:6b753f761943 18
JimCarver 0:6b753f761943 19 #include "mbed-client/m2mvector.h"
JimCarver 0:6b753f761943 20 #include "mbed-client/m2mbase.h"
JimCarver 0:6b753f761943 21 #include "mbed-client/m2mobjectinstance.h"
JimCarver 0:6b753f761943 22
JimCarver 0:6b753f761943 23 //FORWARD DECLARATION
JimCarver 0:6b753f761943 24 typedef Vector<M2MObjectInstance *> M2MObjectInstanceList;
JimCarver 0:6b753f761943 25
JimCarver 0:6b753f761943 26 class M2MEndpoint;
JimCarver 0:6b753f761943 27
JimCarver 0:6b753f761943 28 /*! \file m2mobject.h
JimCarver 0:6b753f761943 29 * \brief M2MObject.
JimCarver 0:6b753f761943 30 * This class is the base class for the mbed Client Objects. All defined
JimCarver 0:6b753f761943 31 * LWM2M object models can be created based on it. This class also holds all object
JimCarver 0:6b753f761943 32 * instances associated with the given object.
JimCarver 0:6b753f761943 33 */
JimCarver 0:6b753f761943 34
JimCarver 0:6b753f761943 35 class M2MObject : public M2MBase
JimCarver 0:6b753f761943 36 {
JimCarver 0:6b753f761943 37
JimCarver 0:6b753f761943 38 friend class M2MInterfaceFactory;
JimCarver 0:6b753f761943 39 friend class M2MEndpoint;
JimCarver 0:6b753f761943 40 friend class TestFactory;
JimCarver 0:6b753f761943 41
JimCarver 0:6b753f761943 42 protected :
JimCarver 0:6b753f761943 43
JimCarver 0:6b753f761943 44 /**
JimCarver 0:6b753f761943 45 * \brief Constructor
JimCarver 0:6b753f761943 46 * \param name The name of the object.
JimCarver 0:6b753f761943 47 * \param path Path of the object like 3/0/1
JimCarver 0:6b753f761943 48 * \param external_blockwise_store If true CoAP blocks are passed to application through callbacks
JimCarver 0:6b753f761943 49 * otherwise handled in mbed-client-c.
JimCarver 0:6b753f761943 50 */
JimCarver 0:6b753f761943 51 M2MObject(const String &object_name,
JimCarver 0:6b753f761943 52 char *path,
JimCarver 0:6b753f761943 53 bool external_blockwise_store = false);
JimCarver 0:6b753f761943 54
JimCarver 0:6b753f761943 55 // Prevents the use of default constructor.
JimCarver 0:6b753f761943 56 M2MObject();
JimCarver 0:6b753f761943 57
JimCarver 0:6b753f761943 58 // Prevents the use of assignment operator.
JimCarver 0:6b753f761943 59 M2MObject& operator=( const M2MObject& /*other*/ );
JimCarver 0:6b753f761943 60
JimCarver 0:6b753f761943 61 // Prevents the use of copy constructor.
JimCarver 0:6b753f761943 62 M2MObject( const M2MObject& /*other*/ );
JimCarver 0:6b753f761943 63
JimCarver 0:6b753f761943 64 /**
JimCarver 0:6b753f761943 65 * \brief Constructor
JimCarver 0:6b753f761943 66 * \param name The name of the object.
JimCarver 0:6b753f761943 67 */
JimCarver 0:6b753f761943 68 M2MObject(const M2MBase::lwm2m_parameters_s* static_res);
JimCarver 0:6b753f761943 69
JimCarver 0:6b753f761943 70 public:
JimCarver 0:6b753f761943 71
JimCarver 0:6b753f761943 72 /**
JimCarver 0:6b753f761943 73 * \brief Destructor
JimCarver 0:6b753f761943 74 */
JimCarver 0:6b753f761943 75 virtual ~M2MObject();
JimCarver 0:6b753f761943 76
JimCarver 0:6b753f761943 77 /**
JimCarver 0:6b753f761943 78 * \brief Creates a new object instance for a given mbed Client Interface object. With this,
JimCarver 0:6b753f761943 79 * the client can respond to server's GET methods with the provided value.
JimCarver 0:6b753f761943 80 * \return M2MObjectInstance. An object instance for managing other client operations.
JimCarver 0:6b753f761943 81 */
JimCarver 0:6b753f761943 82 M2MObjectInstance* create_object_instance(uint16_t instance_id = 0);
JimCarver 0:6b753f761943 83
JimCarver 0:6b753f761943 84 /**
JimCarver 0:6b753f761943 85 * TODO!!
JimCarver 0:6b753f761943 86 */
JimCarver 0:6b753f761943 87 M2MObjectInstance* create_object_instance(const lwm2m_parameters_s* s);
JimCarver 0:6b753f761943 88
JimCarver 0:6b753f761943 89 /**
JimCarver 0:6b753f761943 90 * \brief Removes the object instance resource with the given instance id.
JimCarver 0:6b753f761943 91 * \param instance_id The instance ID of the object instance to be removed, default is 0.
JimCarver 0:6b753f761943 92 * \return True if removed, else false.
JimCarver 0:6b753f761943 93 */
JimCarver 0:6b753f761943 94 bool remove_object_instance(uint16_t instance_id = 0);
JimCarver 0:6b753f761943 95
JimCarver 0:6b753f761943 96 /**
JimCarver 0:6b753f761943 97 * \brief Returns the object instance with the the given instance ID.
JimCarver 0:6b753f761943 98 * \param instance_id The instance ID of the requested object instance ID, default is 0.
JimCarver 0:6b753f761943 99 * \return Object instance reference if found, else NULL.
JimCarver 0:6b753f761943 100 */
JimCarver 0:6b753f761943 101 M2MObjectInstance* object_instance(uint16_t instance_id = 0) const;
JimCarver 0:6b753f761943 102
JimCarver 0:6b753f761943 103 /**
JimCarver 0:6b753f761943 104 * \brief Returns a list of object instances.
JimCarver 0:6b753f761943 105 * \return A list of object instances.
JimCarver 0:6b753f761943 106 */
JimCarver 0:6b753f761943 107 const M2MObjectInstanceList& instances() const;
JimCarver 0:6b753f761943 108
JimCarver 0:6b753f761943 109 /**
JimCarver 0:6b753f761943 110 * \brief Returns the total number of object instances-
JimCarver 0:6b753f761943 111 * \return The total number of the object instances.
JimCarver 0:6b753f761943 112 */
JimCarver 0:6b753f761943 113 uint16_t instance_count() const;
JimCarver 0:6b753f761943 114
JimCarver 0:6b753f761943 115 /**
JimCarver 0:6b753f761943 116 * \brief Returns the Observation Handler object.
JimCarver 0:6b753f761943 117 * \return M2MObservationHandler object.
JimCarver 0:6b753f761943 118 */
JimCarver 0:6b753f761943 119 virtual M2MObservationHandler* observation_handler() const;
JimCarver 0:6b753f761943 120
JimCarver 0:6b753f761943 121 /**
JimCarver 0:6b753f761943 122 * \brief Sets the observation handler
JimCarver 0:6b753f761943 123 * \param handler Observation handler
JimCarver 0:6b753f761943 124 */
JimCarver 0:6b753f761943 125 virtual void set_observation_handler(M2MObservationHandler *handler);
JimCarver 0:6b753f761943 126
JimCarver 0:6b753f761943 127 /**
JimCarver 0:6b753f761943 128 * \brief Adds the observation level for the object.
JimCarver 0:6b753f761943 129 * \param observation_level The level of observation.
JimCarver 0:6b753f761943 130 */
JimCarver 0:6b753f761943 131 virtual void add_observation_level(M2MBase::Observation observation_level);
JimCarver 0:6b753f761943 132
JimCarver 0:6b753f761943 133 /**
JimCarver 0:6b753f761943 134 * \brief Removes the observation level from the object.
JimCarver 0:6b753f761943 135 * \param observation_level The level of observation.
JimCarver 0:6b753f761943 136 */
JimCarver 0:6b753f761943 137 virtual void remove_observation_level(M2MBase::Observation observation_level);
JimCarver 0:6b753f761943 138
JimCarver 0:6b753f761943 139 /**
JimCarver 0:6b753f761943 140 * \brief Handles GET request for the registered objects.
JimCarver 0:6b753f761943 141 * \param nsdl The NSDL handler for the CoAP library.
JimCarver 0:6b753f761943 142 * \param received_coap_header The CoAP message received from the server.
JimCarver 0:6b753f761943 143 * \param observation_handler The handler object for sending
JimCarver 0:6b753f761943 144 * observation callbacks.
JimCarver 0:6b753f761943 145 * \return sn_coap_hdr_s The message that needs to be sent to server.
JimCarver 0:6b753f761943 146 */
JimCarver 0:6b753f761943 147 virtual sn_coap_hdr_s* handle_get_request(nsdl_s *nsdl,
JimCarver 0:6b753f761943 148 sn_coap_hdr_s *received_coap_header,
JimCarver 0:6b753f761943 149 M2MObservationHandler *observation_handler = NULL);
JimCarver 0:6b753f761943 150
JimCarver 0:6b753f761943 151 /**
JimCarver 0:6b753f761943 152 * \brief Handles PUT request for the registered objects.
JimCarver 0:6b753f761943 153 * \param nsdl The NSDL handler for the CoAP library.
JimCarver 0:6b753f761943 154 * \param received_coap_header The received CoAP message from the server.
JimCarver 0:6b753f761943 155 * \param observation_handler The handler object for sending
JimCarver 0:6b753f761943 156 * observation callbacks.
JimCarver 0:6b753f761943 157 * \param execute_value_updated True will execute the "value_updated" callback.
JimCarver 0:6b753f761943 158 * \return sn_coap_hdr_s The message that needs to be sent to server.
JimCarver 0:6b753f761943 159 */
JimCarver 0:6b753f761943 160 virtual sn_coap_hdr_s* handle_put_request(nsdl_s *nsdl,
JimCarver 0:6b753f761943 161 sn_coap_hdr_s *received_coap_header,
JimCarver 0:6b753f761943 162 M2MObservationHandler *observation_handler,
JimCarver 0:6b753f761943 163 bool &execute_value_updated);
JimCarver 0:6b753f761943 164
JimCarver 0:6b753f761943 165 /**
JimCarver 0:6b753f761943 166 * \brief Handles GET request for the registered objects.
JimCarver 0:6b753f761943 167 * \param nsdl The NSDL handler for the CoAP library.
JimCarver 0:6b753f761943 168 * \param received_coap_header The received CoAP message from the server.
JimCarver 0:6b753f761943 169 * \param observation_handler The handler object for sending
JimCarver 0:6b753f761943 170 * observation callbacks.
JimCarver 0:6b753f761943 171 * \param execute_value_updated True will execute the "value_updated" callback.
JimCarver 0:6b753f761943 172 * \return sn_coap_hdr_s The message that needs to be sent to server.
JimCarver 0:6b753f761943 173 */
JimCarver 0:6b753f761943 174 virtual sn_coap_hdr_s* handle_post_request(nsdl_s *nsdl,
JimCarver 0:6b753f761943 175 sn_coap_hdr_s *received_coap_header,
JimCarver 0:6b753f761943 176 M2MObservationHandler *observation_handler,
JimCarver 0:6b753f761943 177 bool &execute_value_updated,
JimCarver 0:6b753f761943 178 sn_nsdl_addr_s *address = NULL);
JimCarver 0:6b753f761943 179
JimCarver 0:6b753f761943 180 void notification_update(uint16_t obj_instance_id);
JimCarver 0:6b753f761943 181
JimCarver 0:6b753f761943 182 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION
JimCarver 0:6b753f761943 183 void set_endpoint(M2MEndpoint *endpoint);
JimCarver 0:6b753f761943 184
JimCarver 0:6b753f761943 185 M2MEndpoint* get_endpoint() const;
JimCarver 0:6b753f761943 186 #endif
JimCarver 0:6b753f761943 187
JimCarver 0:6b753f761943 188 protected :
JimCarver 0:6b753f761943 189 /**
JimCarver 0:6b753f761943 190 * \brief Returns the owner object. Can return NULL if the object has no parent.
JimCarver 0:6b753f761943 191 */
JimCarver 0:6b753f761943 192 virtual M2MBase *get_parent() const;
JimCarver 0:6b753f761943 193
JimCarver 0:6b753f761943 194 private:
JimCarver 0:6b753f761943 195
JimCarver 0:6b753f761943 196 M2MObjectInstanceList _instance_list; // owned
JimCarver 0:6b753f761943 197
JimCarver 0:6b753f761943 198 M2MObservationHandler *_observation_handler; // Not owned
JimCarver 0:6b753f761943 199
JimCarver 0:6b753f761943 200 #ifdef MBED_CLOUD_CLIENT_EDGE_EXTENSION
JimCarver 0:6b753f761943 201 M2MEndpoint *_endpoint; // Parent endpoint
JimCarver 0:6b753f761943 202 #endif
JimCarver 0:6b753f761943 203
JimCarver 0:6b753f761943 204 friend class Test_M2MObject;
JimCarver 0:6b753f761943 205 friend class Test_M2MEndpoint;
JimCarver 0:6b753f761943 206 friend class Test_M2MInterfaceImpl;
JimCarver 0:6b753f761943 207 friend class Test_M2MNsdlInterface;
JimCarver 0:6b753f761943 208 friend class Test_M2MTLVSerializer;
JimCarver 0:6b753f761943 209 friend class Test_M2MTLVDeserializer;
JimCarver 0:6b753f761943 210 friend class Test_M2MDevice;
JimCarver 0:6b753f761943 211 friend class Test_M2MFirmware;
JimCarver 0:6b753f761943 212 friend class Test_M2MBase;
JimCarver 0:6b753f761943 213 friend class Test_M2MObjectInstance;
JimCarver 0:6b753f761943 214 friend class Test_M2MResource;
JimCarver 0:6b753f761943 215 friend class Test_M2MSecurity;
JimCarver 0:6b753f761943 216 friend class Test_M2MServer;
JimCarver 0:6b753f761943 217 friend class Test_M2MResourceInstance;
JimCarver 0:6b753f761943 218 };
JimCarver 0:6b753f761943 219
JimCarver 0:6b753f761943 220 #endif // M2M_OBJECT_H