mbed client lightswitch demo
Dependencies: mbed Socket lwip-eth lwip-sys lwip
Fork of mbed-client-classic-example-lwip by
mbed-client/mbed-client/m2mbase.h@11:cada08fc8a70, 2016-06-09 (annotated)
- Committer:
- mbedAustin
- Date:
- Thu Jun 09 17:08:36 2016 +0000
- Revision:
- 11:cada08fc8a70
Commit for public Consumption
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mbedAustin | 11:cada08fc8a70 | 1 | /* |
| mbedAustin | 11:cada08fc8a70 | 2 | * Copyright (c) 2015 ARM Limited. All rights reserved. |
| mbedAustin | 11:cada08fc8a70 | 3 | * SPDX-License-Identifier: Apache-2.0 |
| mbedAustin | 11:cada08fc8a70 | 4 | * Licensed under the Apache License, Version 2.0 (the License); you may |
| mbedAustin | 11:cada08fc8a70 | 5 | * not use this file except in compliance with the License. |
| mbedAustin | 11:cada08fc8a70 | 6 | * You may obtain a copy of the License at |
| mbedAustin | 11:cada08fc8a70 | 7 | * |
| mbedAustin | 11:cada08fc8a70 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| mbedAustin | 11:cada08fc8a70 | 9 | * |
| mbedAustin | 11:cada08fc8a70 | 10 | * Unless required by applicable law or agreed to in writing, software |
| mbedAustin | 11:cada08fc8a70 | 11 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| mbedAustin | 11:cada08fc8a70 | 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| mbedAustin | 11:cada08fc8a70 | 13 | * See the License for the specific language governing permissions and |
| mbedAustin | 11:cada08fc8a70 | 14 | * limitations under the License. |
| mbedAustin | 11:cada08fc8a70 | 15 | */ |
| mbedAustin | 11:cada08fc8a70 | 16 | #ifndef M2M_BASE_H |
| mbedAustin | 11:cada08fc8a70 | 17 | #define M2M_BASE_H |
| mbedAustin | 11:cada08fc8a70 | 18 | |
| mbedAustin | 11:cada08fc8a70 | 19 | // Support for std args |
| mbedAustin | 11:cada08fc8a70 | 20 | #include <stdint.h> |
| mbedAustin | 11:cada08fc8a70 | 21 | #include "mbed-client/m2mconfig.h" |
| mbedAustin | 11:cada08fc8a70 | 22 | #include "mbed-client/m2mreportobserver.h" |
| mbedAustin | 11:cada08fc8a70 | 23 | |
| mbedAustin | 11:cada08fc8a70 | 24 | //FORWARD DECLARATION |
| mbedAustin | 11:cada08fc8a70 | 25 | struct sn_coap_hdr_; |
| mbedAustin | 11:cada08fc8a70 | 26 | typedef sn_coap_hdr_ sn_coap_hdr_s; |
| mbedAustin | 11:cada08fc8a70 | 27 | struct nsdl_s; |
| mbedAustin | 11:cada08fc8a70 | 28 | |
| mbedAustin | 11:cada08fc8a70 | 29 | class M2MObservationHandler; |
| mbedAustin | 11:cada08fc8a70 | 30 | class M2MReportHandler; |
| mbedAustin | 11:cada08fc8a70 | 31 | |
| mbedAustin | 11:cada08fc8a70 | 32 | /** |
| mbedAustin | 11:cada08fc8a70 | 33 | * @brief M2MBase. |
| mbedAustin | 11:cada08fc8a70 | 34 | * This class is the base class based on which all LWM2M object models |
| mbedAustin | 11:cada08fc8a70 | 35 | * can be created. This serves base class for Object, ObjectInstances and Resources. |
| mbedAustin | 11:cada08fc8a70 | 36 | */ |
| mbedAustin | 11:cada08fc8a70 | 37 | |
| mbedAustin | 11:cada08fc8a70 | 38 | class M2MBase : public M2MReportObserver { |
| mbedAustin | 11:cada08fc8a70 | 39 | |
| mbedAustin | 11:cada08fc8a70 | 40 | public: |
| mbedAustin | 11:cada08fc8a70 | 41 | |
| mbedAustin | 11:cada08fc8a70 | 42 | /** |
| mbedAustin | 11:cada08fc8a70 | 43 | * Enum to define the type of object. |
| mbedAustin | 11:cada08fc8a70 | 44 | */ |
| mbedAustin | 11:cada08fc8a70 | 45 | typedef enum { |
| mbedAustin | 11:cada08fc8a70 | 46 | Object = 0x0, |
| mbedAustin | 11:cada08fc8a70 | 47 | Resource = 0x1, |
| mbedAustin | 11:cada08fc8a70 | 48 | ObjectInstance = 0x2, |
| mbedAustin | 11:cada08fc8a70 | 49 | ResourceInstance = 0x3 |
| mbedAustin | 11:cada08fc8a70 | 50 | } BaseType; |
| mbedAustin | 11:cada08fc8a70 | 51 | |
| mbedAustin | 11:cada08fc8a70 | 52 | /** |
| mbedAustin | 11:cada08fc8a70 | 53 | * Enum to define observation level. |
| mbedAustin | 11:cada08fc8a70 | 54 | */ |
| mbedAustin | 11:cada08fc8a70 | 55 | typedef enum { |
| mbedAustin | 11:cada08fc8a70 | 56 | None = 0x0, |
| mbedAustin | 11:cada08fc8a70 | 57 | R_Attribute = 0x01, |
| mbedAustin | 11:cada08fc8a70 | 58 | OI_Attribute = 0x02, |
| mbedAustin | 11:cada08fc8a70 | 59 | OIR_Attribute = 0x03, |
| mbedAustin | 11:cada08fc8a70 | 60 | O_Attribute = 0x04, |
| mbedAustin | 11:cada08fc8a70 | 61 | OR_Attribute = 0x05, |
| mbedAustin | 11:cada08fc8a70 | 62 | OOI_Attribute = 0x06, |
| mbedAustin | 11:cada08fc8a70 | 63 | OOIR_Attribute = 0x07 |
| mbedAustin | 11:cada08fc8a70 | 64 | } Observation; |
| mbedAustin | 11:cada08fc8a70 | 65 | |
| mbedAustin | 11:cada08fc8a70 | 66 | |
| mbedAustin | 11:cada08fc8a70 | 67 | /** |
| mbedAustin | 11:cada08fc8a70 | 68 | * @brief Enum defining an operation that can be |
| mbedAustin | 11:cada08fc8a70 | 69 | * supported by a given resource. |
| mbedAustin | 11:cada08fc8a70 | 70 | */ |
| mbedAustin | 11:cada08fc8a70 | 71 | typedef enum { |
| mbedAustin | 11:cada08fc8a70 | 72 | Static, |
| mbedAustin | 11:cada08fc8a70 | 73 | Dynamic, |
| mbedAustin | 11:cada08fc8a70 | 74 | Directory |
| mbedAustin | 11:cada08fc8a70 | 75 | }Mode; |
| mbedAustin | 11:cada08fc8a70 | 76 | |
| mbedAustin | 11:cada08fc8a70 | 77 | /** |
| mbedAustin | 11:cada08fc8a70 | 78 | * Enum defining an operation that can be |
| mbedAustin | 11:cada08fc8a70 | 79 | * supported by a given resource. |
| mbedAustin | 11:cada08fc8a70 | 80 | */ |
| mbedAustin | 11:cada08fc8a70 | 81 | typedef enum { |
| mbedAustin | 11:cada08fc8a70 | 82 | NOT_ALLOWED = 0x00, |
| mbedAustin | 11:cada08fc8a70 | 83 | GET_ALLOWED = 0x01, |
| mbedAustin | 11:cada08fc8a70 | 84 | PUT_ALLOWED = 0x02, |
| mbedAustin | 11:cada08fc8a70 | 85 | GET_PUT_ALLOWED = 0x03, |
| mbedAustin | 11:cada08fc8a70 | 86 | POST_ALLOWED = 0x04, |
| mbedAustin | 11:cada08fc8a70 | 87 | GET_POST_ALLOWED = 0x05, |
| mbedAustin | 11:cada08fc8a70 | 88 | PUT_POST_ALLOWED = 0x06, |
| mbedAustin | 11:cada08fc8a70 | 89 | GET_PUT_POST_ALLOWED = 0x07, |
| mbedAustin | 11:cada08fc8a70 | 90 | DELETE_ALLOWED = 0x08, |
| mbedAustin | 11:cada08fc8a70 | 91 | GET_DELETE_ALLOWED = 0x09, |
| mbedAustin | 11:cada08fc8a70 | 92 | PUT_DELETE_ALLOWED = 0x0A, |
| mbedAustin | 11:cada08fc8a70 | 93 | GET_PUT_DELETE_ALLOWED = 0x0B, |
| mbedAustin | 11:cada08fc8a70 | 94 | POST_DELETE_ALLOWED = 0x0C, |
| mbedAustin | 11:cada08fc8a70 | 95 | GET_POST_DELETE_ALLOWED = 0x0D, |
| mbedAustin | 11:cada08fc8a70 | 96 | PUT_POST_DELETE_ALLOWED = 0x0E, |
| mbedAustin | 11:cada08fc8a70 | 97 | GET_PUT_POST_DELETE_ALLOWED = 0x0F, |
| mbedAustin | 11:cada08fc8a70 | 98 | |
| mbedAustin | 11:cada08fc8a70 | 99 | }Operation; |
| mbedAustin | 11:cada08fc8a70 | 100 | |
| mbedAustin | 11:cada08fc8a70 | 101 | protected: |
| mbedAustin | 11:cada08fc8a70 | 102 | |
| mbedAustin | 11:cada08fc8a70 | 103 | // Prevents the use of default constructor. |
| mbedAustin | 11:cada08fc8a70 | 104 | M2MBase(); |
| mbedAustin | 11:cada08fc8a70 | 105 | |
| mbedAustin | 11:cada08fc8a70 | 106 | // Prevents the use of assignment operator. |
| mbedAustin | 11:cada08fc8a70 | 107 | M2MBase& operator=( const M2MBase& /*other*/ ); |
| mbedAustin | 11:cada08fc8a70 | 108 | |
| mbedAustin | 11:cada08fc8a70 | 109 | // Prevents the use of copy constructor |
| mbedAustin | 11:cada08fc8a70 | 110 | M2MBase( const M2MBase& /*other*/ ); |
| mbedAustin | 11:cada08fc8a70 | 111 | |
| mbedAustin | 11:cada08fc8a70 | 112 | /** |
| mbedAustin | 11:cada08fc8a70 | 113 | * @brief Constructor |
| mbedAustin | 11:cada08fc8a70 | 114 | * @param baseType, Type of the object created |
| mbedAustin | 11:cada08fc8a70 | 115 | * @param name, Name of the object |
| mbedAustin | 11:cada08fc8a70 | 116 | * @param id, ID of the object |
| mbedAustin | 11:cada08fc8a70 | 117 | */ |
| mbedAustin | 11:cada08fc8a70 | 118 | M2MBase(const String &name, |
| mbedAustin | 11:cada08fc8a70 | 119 | M2MBase::Mode mode); |
| mbedAustin | 11:cada08fc8a70 | 120 | public: |
| mbedAustin | 11:cada08fc8a70 | 121 | |
| mbedAustin | 11:cada08fc8a70 | 122 | /** |
| mbedAustin | 11:cada08fc8a70 | 123 | * Destructor |
| mbedAustin | 11:cada08fc8a70 | 124 | */ |
| mbedAustin | 11:cada08fc8a70 | 125 | virtual ~M2MBase(); |
| mbedAustin | 11:cada08fc8a70 | 126 | |
| mbedAustin | 11:cada08fc8a70 | 127 | /** |
| mbedAustin | 11:cada08fc8a70 | 128 | * @brief Sets the operation type for an object. |
| mbedAustin | 11:cada08fc8a70 | 129 | * @param operation, Operation to be set. |
| mbedAustin | 11:cada08fc8a70 | 130 | */ |
| mbedAustin | 11:cada08fc8a70 | 131 | virtual void set_operation(M2MBase::Operation operation); |
| mbedAustin | 11:cada08fc8a70 | 132 | |
| mbedAustin | 11:cada08fc8a70 | 133 | /** |
| mbedAustin | 11:cada08fc8a70 | 134 | * @brief Sets the interface description of the object. |
| mbedAustin | 11:cada08fc8a70 | 135 | * @param description, Description to be set. |
| mbedAustin | 11:cada08fc8a70 | 136 | */ |
| mbedAustin | 11:cada08fc8a70 | 137 | virtual void set_interface_description(const String &description); |
| mbedAustin | 11:cada08fc8a70 | 138 | |
| mbedAustin | 11:cada08fc8a70 | 139 | /** |
| mbedAustin | 11:cada08fc8a70 | 140 | * @brief Sets the resource type of the object. |
| mbedAustin | 11:cada08fc8a70 | 141 | * @param resource_type, Resource type to be set. |
| mbedAustin | 11:cada08fc8a70 | 142 | */ |
| mbedAustin | 11:cada08fc8a70 | 143 | virtual void set_resource_type(const String &resource_type); |
| mbedAustin | 11:cada08fc8a70 | 144 | |
| mbedAustin | 11:cada08fc8a70 | 145 | /** |
| mbedAustin | 11:cada08fc8a70 | 146 | * @brief Sets the CoAP content type of the object. |
| mbedAustin | 11:cada08fc8a70 | 147 | * @param content_type, Content Type to be set based on |
| mbedAustin | 11:cada08fc8a70 | 148 | * CoAP specifications. |
| mbedAustin | 11:cada08fc8a70 | 149 | */ |
| mbedAustin | 11:cada08fc8a70 | 150 | virtual void set_coap_content_type(const uint8_t content_type); |
| mbedAustin | 11:cada08fc8a70 | 151 | |
| mbedAustin | 11:cada08fc8a70 | 152 | /** |
| mbedAustin | 11:cada08fc8a70 | 153 | * @brief Sets the observable mode for the object. |
| mbedAustin | 11:cada08fc8a70 | 154 | * @param observable, Value for the observation. |
| mbedAustin | 11:cada08fc8a70 | 155 | */ |
| mbedAustin | 11:cada08fc8a70 | 156 | virtual void set_observable(bool observable); |
| mbedAustin | 11:cada08fc8a70 | 157 | |
| mbedAustin | 11:cada08fc8a70 | 158 | /** |
| mbedAustin | 11:cada08fc8a70 | 159 | * @brief Adds the observation level for the object. |
| mbedAustin | 11:cada08fc8a70 | 160 | * @param observation_level, Level of the observation. |
| mbedAustin | 11:cada08fc8a70 | 161 | */ |
| mbedAustin | 11:cada08fc8a70 | 162 | virtual void add_observation_level(M2MBase::Observation observation_level); |
| mbedAustin | 11:cada08fc8a70 | 163 | |
| mbedAustin | 11:cada08fc8a70 | 164 | /** |
| mbedAustin | 11:cada08fc8a70 | 165 | * @brief Removes the observation level for the object. |
| mbedAustin | 11:cada08fc8a70 | 166 | * @param observation_level, Level of the observation. |
| mbedAustin | 11:cada08fc8a70 | 167 | */ |
| mbedAustin | 11:cada08fc8a70 | 168 | virtual void remove_observation_level(M2MBase::Observation observation_level); |
| mbedAustin | 11:cada08fc8a70 | 169 | |
| mbedAustin | 11:cada08fc8a70 | 170 | /** |
| mbedAustin | 11:cada08fc8a70 | 171 | * @brief Sets the object under observation. |
| mbedAustin | 11:cada08fc8a70 | 172 | * @param observed, Value for the observation. When true, starts observing. When false, ongoing observation is cancelled. |
| mbedAustin | 11:cada08fc8a70 | 173 | * @param handler, Handler object for sending |
| mbedAustin | 11:cada08fc8a70 | 174 | * observation callbacks. |
| mbedAustin | 11:cada08fc8a70 | 175 | */ |
| mbedAustin | 11:cada08fc8a70 | 176 | virtual void set_under_observation(bool observed, |
| mbedAustin | 11:cada08fc8a70 | 177 | M2MObservationHandler *handler); |
| mbedAustin | 11:cada08fc8a70 | 178 | |
| mbedAustin | 11:cada08fc8a70 | 179 | /** |
| mbedAustin | 11:cada08fc8a70 | 180 | * @brief Sets the observation token value. |
| mbedAustin | 11:cada08fc8a70 | 181 | * @param token, Pointer to the token of the resource. |
| mbedAustin | 11:cada08fc8a70 | 182 | * @param length , Length of the token pointer. |
| mbedAustin | 11:cada08fc8a70 | 183 | */ |
| mbedAustin | 11:cada08fc8a70 | 184 | virtual void set_observation_token(const uint8_t *token, |
| mbedAustin | 11:cada08fc8a70 | 185 | const uint8_t length); |
| mbedAustin | 11:cada08fc8a70 | 186 | |
| mbedAustin | 11:cada08fc8a70 | 187 | /** |
| mbedAustin | 11:cada08fc8a70 | 188 | * Sets the instance ID of the object. |
| mbedAustin | 11:cada08fc8a70 | 189 | * @param instance_id, Instance ID of the object. |
| mbedAustin | 11:cada08fc8a70 | 190 | */ |
| mbedAustin | 11:cada08fc8a70 | 191 | virtual void set_instance_id(const uint16_t instance_id); |
| mbedAustin | 11:cada08fc8a70 | 192 | |
| mbedAustin | 11:cada08fc8a70 | 193 | /** |
| mbedAustin | 11:cada08fc8a70 | 194 | * Sets the observation number of the object. |
| mbedAustin | 11:cada08fc8a70 | 195 | * @param observation_number, Observation number of the object. |
| mbedAustin | 11:cada08fc8a70 | 196 | */ |
| mbedAustin | 11:cada08fc8a70 | 197 | virtual void set_observation_number(const uint16_t observation_number); |
| mbedAustin | 11:cada08fc8a70 | 198 | |
| mbedAustin | 11:cada08fc8a70 | 199 | /** |
| mbedAustin | 11:cada08fc8a70 | 200 | * @brief Returns object type. |
| mbedAustin | 11:cada08fc8a70 | 201 | * @return BaseType of the object. |
| mbedAustin | 11:cada08fc8a70 | 202 | */ |
| mbedAustin | 11:cada08fc8a70 | 203 | virtual M2MBase::BaseType base_type() const; |
| mbedAustin | 11:cada08fc8a70 | 204 | |
| mbedAustin | 11:cada08fc8a70 | 205 | /** |
| mbedAustin | 11:cada08fc8a70 | 206 | * @brief Returns the operation type of the object. |
| mbedAustin | 11:cada08fc8a70 | 207 | * @return Operation, Supported operation on the object. |
| mbedAustin | 11:cada08fc8a70 | 208 | */ |
| mbedAustin | 11:cada08fc8a70 | 209 | virtual M2MBase::Operation operation() const; |
| mbedAustin | 11:cada08fc8a70 | 210 | |
| mbedAustin | 11:cada08fc8a70 | 211 | /** |
| mbedAustin | 11:cada08fc8a70 | 212 | * @brief Returns the object name. |
| mbedAustin | 11:cada08fc8a70 | 213 | * @return Name for the object. |
| mbedAustin | 11:cada08fc8a70 | 214 | */ |
| mbedAustin | 11:cada08fc8a70 | 215 | virtual const String &name() const; |
| mbedAustin | 11:cada08fc8a70 | 216 | |
| mbedAustin | 11:cada08fc8a70 | 217 | /** |
| mbedAustin | 11:cada08fc8a70 | 218 | * @brief Returns the object name in integer. |
| mbedAustin | 11:cada08fc8a70 | 219 | * @return Name for the object in integer. |
| mbedAustin | 11:cada08fc8a70 | 220 | */ |
| mbedAustin | 11:cada08fc8a70 | 221 | virtual int32_t name_id() const; |
| mbedAustin | 11:cada08fc8a70 | 222 | |
| mbedAustin | 11:cada08fc8a70 | 223 | /** |
| mbedAustin | 11:cada08fc8a70 | 224 | * @brief Returns the object's Instance ID. |
| mbedAustin | 11:cada08fc8a70 | 225 | * @returns Instance ID of the object. |
| mbedAustin | 11:cada08fc8a70 | 226 | */ |
| mbedAustin | 11:cada08fc8a70 | 227 | virtual uint16_t instance_id() const; |
| mbedAustin | 11:cada08fc8a70 | 228 | |
| mbedAustin | 11:cada08fc8a70 | 229 | /** |
| mbedAustin | 11:cada08fc8a70 | 230 | * @brief Returns the interface description of the object. |
| mbedAustin | 11:cada08fc8a70 | 231 | * @return Description of the object. |
| mbedAustin | 11:cada08fc8a70 | 232 | */ |
| mbedAustin | 11:cada08fc8a70 | 233 | virtual const String& interface_description() const; |
| mbedAustin | 11:cada08fc8a70 | 234 | |
| mbedAustin | 11:cada08fc8a70 | 235 | /** |
| mbedAustin | 11:cada08fc8a70 | 236 | * @brief Returns the resource type of the object. |
| mbedAustin | 11:cada08fc8a70 | 237 | * @return Resource type of the object. |
| mbedAustin | 11:cada08fc8a70 | 238 | */ |
| mbedAustin | 11:cada08fc8a70 | 239 | virtual const String& resource_type() const; |
| mbedAustin | 11:cada08fc8a70 | 240 | |
| mbedAustin | 11:cada08fc8a70 | 241 | /** |
| mbedAustin | 11:cada08fc8a70 | 242 | * @brief Returns the CoAP content type of the object. |
| mbedAustin | 11:cada08fc8a70 | 243 | * @return Content type of the object. |
| mbedAustin | 11:cada08fc8a70 | 244 | */ |
| mbedAustin | 11:cada08fc8a70 | 245 | virtual uint8_t coap_content_type() const; |
| mbedAustin | 11:cada08fc8a70 | 246 | |
| mbedAustin | 11:cada08fc8a70 | 247 | /** |
| mbedAustin | 11:cada08fc8a70 | 248 | * @brief Returns the observation status of the object. |
| mbedAustin | 11:cada08fc8a70 | 249 | * @return True if observable, else false. |
| mbedAustin | 11:cada08fc8a70 | 250 | */ |
| mbedAustin | 11:cada08fc8a70 | 251 | virtual bool is_observable() const; |
| mbedAustin | 11:cada08fc8a70 | 252 | |
| mbedAustin | 11:cada08fc8a70 | 253 | /** |
| mbedAustin | 11:cada08fc8a70 | 254 | * @brief Returns the observation level of the object. |
| mbedAustin | 11:cada08fc8a70 | 255 | * @return Observation level of the object. |
| mbedAustin | 11:cada08fc8a70 | 256 | */ |
| mbedAustin | 11:cada08fc8a70 | 257 | virtual M2MBase::Observation observation_level() const; |
| mbedAustin | 11:cada08fc8a70 | 258 | |
| mbedAustin | 11:cada08fc8a70 | 259 | /** |
| mbedAustin | 11:cada08fc8a70 | 260 | * @brief Provides the observation token of the object. |
| mbedAustin | 11:cada08fc8a70 | 261 | * @param value[OUT], pointer to the value of the token. |
| mbedAustin | 11:cada08fc8a70 | 262 | * @param value_length[OUT], length of the token pointer. |
| mbedAustin | 11:cada08fc8a70 | 263 | */ |
| mbedAustin | 11:cada08fc8a70 | 264 | virtual void get_observation_token(uint8_t *&token, uint32_t &token_length); |
| mbedAustin | 11:cada08fc8a70 | 265 | |
| mbedAustin | 11:cada08fc8a70 | 266 | /** |
| mbedAustin | 11:cada08fc8a70 | 267 | * @brief Returns the mode of the resource. |
| mbedAustin | 11:cada08fc8a70 | 268 | * @return Mode of the resource. |
| mbedAustin | 11:cada08fc8a70 | 269 | */ |
| mbedAustin | 11:cada08fc8a70 | 270 | virtual Mode mode() const; |
| mbedAustin | 11:cada08fc8a70 | 271 | |
| mbedAustin | 11:cada08fc8a70 | 272 | /** |
| mbedAustin | 11:cada08fc8a70 | 273 | * @brief Returns the observation number. |
| mbedAustin | 11:cada08fc8a70 | 274 | * @return Observation number for the object. |
| mbedAustin | 11:cada08fc8a70 | 275 | */ |
| mbedAustin | 11:cada08fc8a70 | 276 | virtual uint16_t observation_number() const; |
| mbedAustin | 11:cada08fc8a70 | 277 | |
| mbedAustin | 11:cada08fc8a70 | 278 | /** |
| mbedAustin | 11:cada08fc8a70 | 279 | * @brief Parses the received query for the notification |
| mbedAustin | 11:cada08fc8a70 | 280 | * attribute. |
| mbedAustin | 11:cada08fc8a70 | 281 | * @param query, Query that needs to be parsed. |
| mbedAustin | 11:cada08fc8a70 | 282 | * @return True if required attributes are present, else false. |
| mbedAustin | 11:cada08fc8a70 | 283 | */ |
| mbedAustin | 11:cada08fc8a70 | 284 | virtual bool handle_observation_attribute(char *&query); |
| mbedAustin | 11:cada08fc8a70 | 285 | |
| mbedAustin | 11:cada08fc8a70 | 286 | /** |
| mbedAustin | 11:cada08fc8a70 | 287 | * @brief Handles GET request for the registered objects. |
| mbedAustin | 11:cada08fc8a70 | 288 | * @param nsdl, NSDL handler for the CoAP library. |
| mbedAustin | 11:cada08fc8a70 | 289 | * @param received_coap_header, Received CoAP message from the server. |
| mbedAustin | 11:cada08fc8a70 | 290 | * @param observation_handler, Handler object for sending |
| mbedAustin | 11:cada08fc8a70 | 291 | * observation callbacks. |
| mbedAustin | 11:cada08fc8a70 | 292 | * @return sn_coap_hdr_s, Message that needs to be sent to server. |
| mbedAustin | 11:cada08fc8a70 | 293 | */ |
| mbedAustin | 11:cada08fc8a70 | 294 | virtual sn_coap_hdr_s* handle_get_request(nsdl_s *nsdl, |
| mbedAustin | 11:cada08fc8a70 | 295 | sn_coap_hdr_s *received_coap_header, |
| mbedAustin | 11:cada08fc8a70 | 296 | M2MObservationHandler *observation_handler = NULL); |
| mbedAustin | 11:cada08fc8a70 | 297 | /** |
| mbedAustin | 11:cada08fc8a70 | 298 | * @brief Handles PUT request for the registered objects. |
| mbedAustin | 11:cada08fc8a70 | 299 | * @param nsdl, NSDL handler for the CoAP library. |
| mbedAustin | 11:cada08fc8a70 | 300 | * @param received_coap_header, Received CoAP message from the server. |
| mbedAustin | 11:cada08fc8a70 | 301 | * @param observation_handler, Handler object for sending |
| mbedAustin | 11:cada08fc8a70 | 302 | * observation callbacks. |
| mbedAustin | 11:cada08fc8a70 | 303 | * @return sn_coap_hdr_s, Message that needs to be sent to server. |
| mbedAustin | 11:cada08fc8a70 | 304 | */ |
| mbedAustin | 11:cada08fc8a70 | 305 | virtual sn_coap_hdr_s* handle_put_request(nsdl_s *nsdl, |
| mbedAustin | 11:cada08fc8a70 | 306 | sn_coap_hdr_s *received_coap_header, |
| mbedAustin | 11:cada08fc8a70 | 307 | M2MObservationHandler *observation_handler = NULL); |
| mbedAustin | 11:cada08fc8a70 | 308 | |
| mbedAustin | 11:cada08fc8a70 | 309 | /** |
| mbedAustin | 11:cada08fc8a70 | 310 | * @brief Handles GET request for the registered objects. |
| mbedAustin | 11:cada08fc8a70 | 311 | * @param nsdl, NSDL handler for the CoAP library. |
| mbedAustin | 11:cada08fc8a70 | 312 | * @param received_coap_header, Received CoAP message from the server. |
| mbedAustin | 11:cada08fc8a70 | 313 | * @param observation_handler, Handler object for sending |
| mbedAustin | 11:cada08fc8a70 | 314 | * observation callbacks. |
| mbedAustin | 11:cada08fc8a70 | 315 | * @return sn_coap_hdr_s, Message that needs to be sent to server. |
| mbedAustin | 11:cada08fc8a70 | 316 | */ |
| mbedAustin | 11:cada08fc8a70 | 317 | virtual sn_coap_hdr_s* handle_post_request(nsdl_s *nsdl, |
| mbedAustin | 11:cada08fc8a70 | 318 | sn_coap_hdr_s *received_coap_header, |
| mbedAustin | 11:cada08fc8a70 | 319 | M2MObservationHandler *observation_handler = NULL); |
| mbedAustin | 11:cada08fc8a70 | 320 | protected : // from M2MReportObserver |
| mbedAustin | 11:cada08fc8a70 | 321 | |
| mbedAustin | 11:cada08fc8a70 | 322 | virtual void observation_to_be_sent(); |
| mbedAustin | 11:cada08fc8a70 | 323 | |
| mbedAustin | 11:cada08fc8a70 | 324 | protected: |
| mbedAustin | 11:cada08fc8a70 | 325 | |
| mbedAustin | 11:cada08fc8a70 | 326 | /** |
| mbedAustin | 11:cada08fc8a70 | 327 | * @brief Sets the Base type for object. |
| mbedAustin | 11:cada08fc8a70 | 328 | * @param type, Type of the base object. |
| mbedAustin | 11:cada08fc8a70 | 329 | */ |
| mbedAustin | 11:cada08fc8a70 | 330 | virtual void set_base_type(M2MBase::BaseType type); |
| mbedAustin | 11:cada08fc8a70 | 331 | |
| mbedAustin | 11:cada08fc8a70 | 332 | /** |
| mbedAustin | 11:cada08fc8a70 | 333 | * @brief Removes resource from the CoAP structure. |
| mbedAustin | 11:cada08fc8a70 | 334 | * @param resource_name, Name of the resource. |
| mbedAustin | 11:cada08fc8a70 | 335 | */ |
| mbedAustin | 11:cada08fc8a70 | 336 | virtual void remove_resource_from_coap(const String &resource_name); |
| mbedAustin | 11:cada08fc8a70 | 337 | |
| mbedAustin | 11:cada08fc8a70 | 338 | /** |
| mbedAustin | 11:cada08fc8a70 | 339 | * @brief Removes object from NSDL list. |
| mbedAustin | 11:cada08fc8a70 | 340 | */ |
| mbedAustin | 11:cada08fc8a70 | 341 | virtual void remove_object_from_coap(); |
| mbedAustin | 11:cada08fc8a70 | 342 | |
| mbedAustin | 11:cada08fc8a70 | 343 | /** |
| mbedAustin | 11:cada08fc8a70 | 344 | * @brief Memory Allocation required for libCoap. |
| mbedAustin | 11:cada08fc8a70 | 345 | * @param size, Size of memory to be reserved. |
| mbedAustin | 11:cada08fc8a70 | 346 | */ |
| mbedAustin | 11:cada08fc8a70 | 347 | virtual void* memory_alloc(uint16_t size); |
| mbedAustin | 11:cada08fc8a70 | 348 | |
| mbedAustin | 11:cada08fc8a70 | 349 | /** |
| mbedAustin | 11:cada08fc8a70 | 350 | * @brief Memory free functions required for libCoap. |
| mbedAustin | 11:cada08fc8a70 | 351 | * @param ptr, Object whose memory needs to be freed. |
| mbedAustin | 11:cada08fc8a70 | 352 | */ |
| mbedAustin | 11:cada08fc8a70 | 353 | virtual void memory_free(void *ptr); |
| mbedAustin | 11:cada08fc8a70 | 354 | |
| mbedAustin | 11:cada08fc8a70 | 355 | /** |
| mbedAustin | 11:cada08fc8a70 | 356 | * @brief Returns Report Handler object. |
| mbedAustin | 11:cada08fc8a70 | 357 | * @return M2MReportHandler object. |
| mbedAustin | 11:cada08fc8a70 | 358 | */ |
| mbedAustin | 11:cada08fc8a70 | 359 | M2MReportHandler* report_handler(); |
| mbedAustin | 11:cada08fc8a70 | 360 | |
| mbedAustin | 11:cada08fc8a70 | 361 | /** |
| mbedAustin | 11:cada08fc8a70 | 362 | * @brief Returns Observation Handler object. |
| mbedAustin | 11:cada08fc8a70 | 363 | * @return M2MObservationHandler object. |
| mbedAustin | 11:cada08fc8a70 | 364 | */ |
| mbedAustin | 11:cada08fc8a70 | 365 | M2MObservationHandler* observation_handler(); |
| mbedAustin | 11:cada08fc8a70 | 366 | |
| mbedAustin | 11:cada08fc8a70 | 367 | private: |
| mbedAustin | 11:cada08fc8a70 | 368 | |
| mbedAustin | 11:cada08fc8a70 | 369 | bool is_integer(const String &value); |
| mbedAustin | 11:cada08fc8a70 | 370 | |
| mbedAustin | 11:cada08fc8a70 | 371 | private: |
| mbedAustin | 11:cada08fc8a70 | 372 | |
| mbedAustin | 11:cada08fc8a70 | 373 | |
| mbedAustin | 11:cada08fc8a70 | 374 | M2MReportHandler *_report_handler; |
| mbedAustin | 11:cada08fc8a70 | 375 | M2MObservationHandler *_observation_handler; |
| mbedAustin | 11:cada08fc8a70 | 376 | M2MBase::Operation _operation; |
| mbedAustin | 11:cada08fc8a70 | 377 | M2MBase::Mode _mode; |
| mbedAustin | 11:cada08fc8a70 | 378 | M2MBase::BaseType _base_type; |
| mbedAustin | 11:cada08fc8a70 | 379 | M2MBase::Observation _observation_level; |
| mbedAustin | 11:cada08fc8a70 | 380 | String _name; |
| mbedAustin | 11:cada08fc8a70 | 381 | String _resource_type; |
| mbedAustin | 11:cada08fc8a70 | 382 | int32_t _name_id; |
| mbedAustin | 11:cada08fc8a70 | 383 | String _interface_description; |
| mbedAustin | 11:cada08fc8a70 | 384 | uint8_t _coap_content_type; |
| mbedAustin | 11:cada08fc8a70 | 385 | uint16_t _instance_id; |
| mbedAustin | 11:cada08fc8a70 | 386 | bool _observable; |
| mbedAustin | 11:cada08fc8a70 | 387 | uint16_t _observation_number; |
| mbedAustin | 11:cada08fc8a70 | 388 | uint8_t *_token; |
| mbedAustin | 11:cada08fc8a70 | 389 | uint8_t _token_length; |
| mbedAustin | 11:cada08fc8a70 | 390 | |
| mbedAustin | 11:cada08fc8a70 | 391 | friend class Test_M2MBase; |
| mbedAustin | 11:cada08fc8a70 | 392 | |
| mbedAustin | 11:cada08fc8a70 | 393 | }; |
| mbedAustin | 11:cada08fc8a70 | 394 | |
| mbedAustin | 11:cada08fc8a70 | 395 | #endif // M2M_BASE_H |
| mbedAustin | 11:cada08fc8a70 | 396 |
Austin Blackstone
