mbed client lightswitch demo

Dependencies:   mbed Socket lwip-eth lwip-sys lwip

Fork of mbed-client-classic-example-lwip by Austin Blackstone

Committer:
mbedAustin
Date:
Thu Jun 09 17:08:36 2016 +0000
Revision:
11:cada08fc8a70
Commit for public Consumption

Who changed what in which revision?

UserRevisionLine numberNew 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_INTERFACE_IMPL_H
mbedAustin 11:cada08fc8a70 17 #define M2M_INTERFACE_IMPL_H
mbedAustin 11:cada08fc8a70 18
mbedAustin 11:cada08fc8a70 19 #include "mbed-client/m2minterface.h"
mbedAustin 11:cada08fc8a70 20 #include "mbed-client/m2mserver.h"
mbedAustin 11:cada08fc8a70 21 #include "mbed-client/m2mconnectionobserver.h"
mbedAustin 11:cada08fc8a70 22 #include "include/m2mnsdlobserver.h"
mbedAustin 11:cada08fc8a70 23 #include "mbed-client/m2mtimerobserver.h"
mbedAustin 11:cada08fc8a70 24
mbedAustin 11:cada08fc8a70 25 //FORWARD DECLARATION
mbedAustin 11:cada08fc8a70 26 class M2MNsdlInterface;
mbedAustin 11:cada08fc8a70 27 class M2MConnectionHandler;
mbedAustin 11:cada08fc8a70 28 class EventData;
mbedAustin 11:cada08fc8a70 29 class M2MTimer;
mbedAustin 11:cada08fc8a70 30
mbedAustin 11:cada08fc8a70 31 /**
mbedAustin 11:cada08fc8a70 32 * @brief M2MInterfaceImpl.
mbedAustin 11:cada08fc8a70 33 * This class implements handling of all mbed Client Interface operations
mbedAustin 11:cada08fc8a70 34 * defined in OMA LWM2M specifications.
mbedAustin 11:cada08fc8a70 35 * This includes Bootstrapping, Client Registration, Device Management &
mbedAustin 11:cada08fc8a70 36 * Service Enablement and Information Reporting.
mbedAustin 11:cada08fc8a70 37 */
mbedAustin 11:cada08fc8a70 38
mbedAustin 11:cada08fc8a70 39 class M2MInterfaceImpl : public M2MInterface,
mbedAustin 11:cada08fc8a70 40 public M2MNsdlObserver,
mbedAustin 11:cada08fc8a70 41 public M2MConnectionObserver,
mbedAustin 11:cada08fc8a70 42 public M2MTimerObserver
mbedAustin 11:cada08fc8a70 43 {
mbedAustin 11:cada08fc8a70 44 private:
mbedAustin 11:cada08fc8a70 45 // Prevents the use of assignment operator by accident.
mbedAustin 11:cada08fc8a70 46 M2MInterfaceImpl& operator=( const M2MInterfaceImpl& /*other*/ );
mbedAustin 11:cada08fc8a70 47
mbedAustin 11:cada08fc8a70 48 // Prevents the use of copy constructor by accident
mbedAustin 11:cada08fc8a70 49 M2MInterfaceImpl( const M2MInterfaceImpl& /*other*/ );
mbedAustin 11:cada08fc8a70 50
mbedAustin 11:cada08fc8a70 51 friend class M2MInterfaceFactory;
mbedAustin 11:cada08fc8a70 52
mbedAustin 11:cada08fc8a70 53 private:
mbedAustin 11:cada08fc8a70 54
mbedAustin 11:cada08fc8a70 55 /**
mbedAustin 11:cada08fc8a70 56 * @brief Constructor
mbedAustin 11:cada08fc8a70 57 * @param observer, Observer to pass the event callbacks for various
mbedAustin 11:cada08fc8a70 58 * interface operations.
mbedAustin 11:cada08fc8a70 59 * @param endpoint_name, Endpoint name of the client.
mbedAustin 11:cada08fc8a70 60 * @param endpoint_type, Endpoint type of the client.
mbedAustin 11:cada08fc8a70 61 * @param life_time, Life time of the client in seconds
mbedAustin 11:cada08fc8a70 62 * @param listen_port, Listening port for the endpoint, default is 8000.
mbedAustin 11:cada08fc8a70 63 * @param domain, Domain of the client.
mbedAustin 11:cada08fc8a70 64 * @param mode, Binding mode of the client, default is UDP
mbedAustin 11:cada08fc8a70 65 * @param stack, Network Stack to be used for connection, default is LwIP_IPv4
mbedAustin 11:cada08fc8a70 66 * @param context_address, Context address default is empty.
mbedAustin 11:cada08fc8a70 67 */
mbedAustin 11:cada08fc8a70 68 M2MInterfaceImpl(M2MInterfaceObserver& observer,
mbedAustin 11:cada08fc8a70 69 const String &endpoint_name,
mbedAustin 11:cada08fc8a70 70 const String &endpoint_type,
mbedAustin 11:cada08fc8a70 71 const int32_t life_time,
mbedAustin 11:cada08fc8a70 72 const uint16_t listen_port,
mbedAustin 11:cada08fc8a70 73 const String &domain = "",
mbedAustin 11:cada08fc8a70 74 BindingMode mode = M2MInterface::NOT_SET,
mbedAustin 11:cada08fc8a70 75 M2MInterface::NetworkStack stack = M2MInterface::LwIP_IPv4,
mbedAustin 11:cada08fc8a70 76 const String &context_address = "");
mbedAustin 11:cada08fc8a70 77
mbedAustin 11:cada08fc8a70 78 public:
mbedAustin 11:cada08fc8a70 79
mbedAustin 11:cada08fc8a70 80 /**
mbedAustin 11:cada08fc8a70 81 * @brief Destructor
mbedAustin 11:cada08fc8a70 82 */
mbedAustin 11:cada08fc8a70 83 virtual ~M2MInterfaceImpl();
mbedAustin 11:cada08fc8a70 84
mbedAustin 11:cada08fc8a70 85 /**
mbedAustin 11:cada08fc8a70 86 * @brief Initiates bootstrapping of the client with the provided Bootstrap
mbedAustin 11:cada08fc8a70 87 * server information.
mbedAustin 11:cada08fc8a70 88 * @param security_object, Security object which contains information
mbedAustin 11:cada08fc8a70 89 * required for successful bootstrapping of the client.
mbedAustin 11:cada08fc8a70 90 */
mbedAustin 11:cada08fc8a70 91 virtual void bootstrap(M2MSecurity *security);
mbedAustin 11:cada08fc8a70 92
mbedAustin 11:cada08fc8a70 93 /**
mbedAustin 11:cada08fc8a70 94 * @brief Cancels on going bootstrapping operation of the client. If the client has
mbedAustin 11:cada08fc8a70 95 * already successfully bootstrapped then this function deletes existing
mbedAustin 11:cada08fc8a70 96 * bootstrap information from the client.
mbedAustin 11:cada08fc8a70 97 */
mbedAustin 11:cada08fc8a70 98 virtual void cancel_bootstrap();
mbedAustin 11:cada08fc8a70 99
mbedAustin 11:cada08fc8a70 100 /**
mbedAustin 11:cada08fc8a70 101 * @brief Initiates registration of the provided Security object to the
mbedAustin 11:cada08fc8a70 102 * corresponding LWM2M server.
mbedAustin 11:cada08fc8a70 103 * @param security_object, Security object which contains information
mbedAustin 11:cada08fc8a70 104 * required for registering to the LWM2M server.
mbedAustin 11:cada08fc8a70 105 * If client wants to register to multiple LWM2M servers then it has call
mbedAustin 11:cada08fc8a70 106 * this function once for each of LWM2M server object separately.
mbedAustin 11:cada08fc8a70 107 * @param object_list, Objects which contains information
mbedAustin 11:cada08fc8a70 108 * which the client want to register to the LWM2M server.
mbedAustin 11:cada08fc8a70 109 */
mbedAustin 11:cada08fc8a70 110 virtual void register_object(M2MSecurity *security_object, const M2MObjectList &object_list);
mbedAustin 11:cada08fc8a70 111
mbedAustin 11:cada08fc8a70 112 /**
mbedAustin 11:cada08fc8a70 113 * @brief Updates or refreshes the client's registration on the LWM2M
mbedAustin 11:cada08fc8a70 114 * server.
mbedAustin 11:cada08fc8a70 115 * @param security_object, Security object from which the device object
mbedAustin 11:cada08fc8a70 116 * needs to update registration, if there is only one LWM2M server registered
mbedAustin 11:cada08fc8a70 117 * then this parameter can be NULL.
mbedAustin 11:cada08fc8a70 118 * @param lifetime, Lifetime for the endpoint client in seconds.
mbedAustin 11:cada08fc8a70 119 */
mbedAustin 11:cada08fc8a70 120 virtual void update_registration(M2MSecurity *security_object, const uint32_t lifetime = 0);
mbedAustin 11:cada08fc8a70 121
mbedAustin 11:cada08fc8a70 122 /**
mbedAustin 11:cada08fc8a70 123 * @brief Unregisters the registered object from the LWM2M server
mbedAustin 11:cada08fc8a70 124 * @param security_object, Security object from which the device object
mbedAustin 11:cada08fc8a70 125 * needs to be unregistered, if there is only one LWM2M server registered
mbedAustin 11:cada08fc8a70 126 * then this parameter can be NULL.
mbedAustin 11:cada08fc8a70 127 */
mbedAustin 11:cada08fc8a70 128 virtual void unregister_object(M2MSecurity* security = NULL);
mbedAustin 11:cada08fc8a70 129
mbedAustin 11:cada08fc8a70 130 /**
mbedAustin 11:cada08fc8a70 131 * @brief Sets the function which will be called indicating client
mbedAustin 11:cada08fc8a70 132 * is going to sleep when the Binding mode is selected with Queue mode.
mbedAustin 11:cada08fc8a70 133 * @param callback, Function pointer which will be called when client
mbedAustin 11:cada08fc8a70 134 * goes to seleep.
mbedAustin 11:cada08fc8a70 135 */
mbedAustin 11:cada08fc8a70 136 virtual void set_queue_sleep_handler(callback_handler handler);
mbedAustin 11:cada08fc8a70 137
mbedAustin 11:cada08fc8a70 138 protected: // From M2MNsdlObserver
mbedAustin 11:cada08fc8a70 139
mbedAustin 11:cada08fc8a70 140 virtual void coap_message_ready(uint8_t *data_ptr,
mbedAustin 11:cada08fc8a70 141 uint16_t data_len,
mbedAustin 11:cada08fc8a70 142 sn_nsdl_addr_s *address_ptr);
mbedAustin 11:cada08fc8a70 143
mbedAustin 11:cada08fc8a70 144 virtual void client_registered(M2MServer *server_object);
mbedAustin 11:cada08fc8a70 145
mbedAustin 11:cada08fc8a70 146 virtual void registration_updated(const M2MServer &server_object);
mbedAustin 11:cada08fc8a70 147
mbedAustin 11:cada08fc8a70 148 virtual void registration_error(uint8_t error_code);
mbedAustin 11:cada08fc8a70 149
mbedAustin 11:cada08fc8a70 150 virtual void client_unregistered();
mbedAustin 11:cada08fc8a70 151
mbedAustin 11:cada08fc8a70 152 virtual void bootstrap_done(M2MSecurity *security_object);
mbedAustin 11:cada08fc8a70 153
mbedAustin 11:cada08fc8a70 154 virtual void bootstrap_error();
mbedAustin 11:cada08fc8a70 155
mbedAustin 11:cada08fc8a70 156 virtual void coap_data_processed();
mbedAustin 11:cada08fc8a70 157
mbedAustin 11:cada08fc8a70 158 virtual void value_updated(M2MBase *base);
mbedAustin 11:cada08fc8a70 159
mbedAustin 11:cada08fc8a70 160 protected: // From M2MConnectionObserver
mbedAustin 11:cada08fc8a70 161
mbedAustin 11:cada08fc8a70 162 virtual void data_available(uint8_t* data,
mbedAustin 11:cada08fc8a70 163 uint16_t data_size,
mbedAustin 11:cada08fc8a70 164 const M2MConnectionObserver::SocketAddress &address);
mbedAustin 11:cada08fc8a70 165
mbedAustin 11:cada08fc8a70 166 virtual void socket_error(uint8_t error_code);
mbedAustin 11:cada08fc8a70 167
mbedAustin 11:cada08fc8a70 168 virtual void address_ready(const M2MConnectionObserver::SocketAddress &address,
mbedAustin 11:cada08fc8a70 169 M2MConnectionObserver::ServerType server_type,
mbedAustin 11:cada08fc8a70 170 const uint16_t server_port);
mbedAustin 11:cada08fc8a70 171
mbedAustin 11:cada08fc8a70 172 virtual void data_sent();
mbedAustin 11:cada08fc8a70 173
mbedAustin 11:cada08fc8a70 174 protected: // from M2MTimerObserver
mbedAustin 11:cada08fc8a70 175
mbedAustin 11:cada08fc8a70 176 virtual void timer_expired(M2MTimerObserver::Type type);
mbedAustin 11:cada08fc8a70 177
mbedAustin 11:cada08fc8a70 178
mbedAustin 11:cada08fc8a70 179 private: // state machine state functions
mbedAustin 11:cada08fc8a70 180
mbedAustin 11:cada08fc8a70 181 /**
mbedAustin 11:cada08fc8a70 182 * When the state is Idle.
mbedAustin 11:cada08fc8a70 183 */
mbedAustin 11:cada08fc8a70 184 void state_idle(EventData* data);
mbedAustin 11:cada08fc8a70 185
mbedAustin 11:cada08fc8a70 186 /**
mbedAustin 11:cada08fc8a70 187 * When the client starts bootstrap.
mbedAustin 11:cada08fc8a70 188 */
mbedAustin 11:cada08fc8a70 189 void state_bootstrap( EventData *data);
mbedAustin 11:cada08fc8a70 190
mbedAustin 11:cada08fc8a70 191 /**
mbedAustin 11:cada08fc8a70 192 * When the bootstrap server address is resolved.
mbedAustin 11:cada08fc8a70 193 */
mbedAustin 11:cada08fc8a70 194 void state_bootstrap_address_resolved( EventData *data);
mbedAustin 11:cada08fc8a70 195
mbedAustin 11:cada08fc8a70 196 /**
mbedAustin 11:cada08fc8a70 197 * When the bootstrap resource is created.
mbedAustin 11:cada08fc8a70 198 */
mbedAustin 11:cada08fc8a70 199 void state_bootstrap_resource_created( EventData *data);
mbedAustin 11:cada08fc8a70 200
mbedAustin 11:cada08fc8a70 201 /**
mbedAustin 11:cada08fc8a70 202 * When the server has sent response and bootstrapping is done.
mbedAustin 11:cada08fc8a70 203 */
mbedAustin 11:cada08fc8a70 204 void state_bootstrapped( EventData *data);
mbedAustin 11:cada08fc8a70 205
mbedAustin 11:cada08fc8a70 206 /**
mbedAustin 11:cada08fc8a70 207 * When the client starts register.
mbedAustin 11:cada08fc8a70 208 */
mbedAustin 11:cada08fc8a70 209 void state_register( EventData *data);
mbedAustin 11:cada08fc8a70 210
mbedAustin 11:cada08fc8a70 211 /**
mbedAustin 11:cada08fc8a70 212 * When the server address for register is resolved.
mbedAustin 11:cada08fc8a70 213 */
mbedAustin 11:cada08fc8a70 214 void state_register_address_resolved( EventData *data);
mbedAustin 11:cada08fc8a70 215
mbedAustin 11:cada08fc8a70 216 /**
mbedAustin 11:cada08fc8a70 217 * When the register resource is created.
mbedAustin 11:cada08fc8a70 218 */
mbedAustin 11:cada08fc8a70 219 void state_register_resource_created( EventData *data);
mbedAustin 11:cada08fc8a70 220
mbedAustin 11:cada08fc8a70 221 /**
mbedAustin 11:cada08fc8a70 222 * When the client is registered.
mbedAustin 11:cada08fc8a70 223 */
mbedAustin 11:cada08fc8a70 224 void state_registered( EventData *data);
mbedAustin 11:cada08fc8a70 225
mbedAustin 11:cada08fc8a70 226 /**
mbedAustin 11:cada08fc8a70 227 * When the client is updating registration.
mbedAustin 11:cada08fc8a70 228 */
mbedAustin 11:cada08fc8a70 229 void state_update_registration( EventData *data);
mbedAustin 11:cada08fc8a70 230
mbedAustin 11:cada08fc8a70 231 /**
mbedAustin 11:cada08fc8a70 232 * When the client starts unregister.
mbedAustin 11:cada08fc8a70 233 */
mbedAustin 11:cada08fc8a70 234 void state_unregister( EventData *data);
mbedAustin 11:cada08fc8a70 235
mbedAustin 11:cada08fc8a70 236 /**
mbedAustin 11:cada08fc8a70 237 * When the client has been unregistered.
mbedAustin 11:cada08fc8a70 238 */
mbedAustin 11:cada08fc8a70 239 void state_unregistered( EventData *data);
mbedAustin 11:cada08fc8a70 240
mbedAustin 11:cada08fc8a70 241 /**
mbedAustin 11:cada08fc8a70 242 * When the coap data is been sent through socket.
mbedAustin 11:cada08fc8a70 243 */
mbedAustin 11:cada08fc8a70 244 void state_sending_coap_data( EventData *data);
mbedAustin 11:cada08fc8a70 245
mbedAustin 11:cada08fc8a70 246 /**
mbedAustin 11:cada08fc8a70 247 * When the coap data is sent successfully.
mbedAustin 11:cada08fc8a70 248 */
mbedAustin 11:cada08fc8a70 249 void state_coap_data_sent( EventData *data);
mbedAustin 11:cada08fc8a70 250
mbedAustin 11:cada08fc8a70 251 /**
mbedAustin 11:cada08fc8a70 252 * When the socket is receiving coap data.
mbedAustin 11:cada08fc8a70 253 */
mbedAustin 11:cada08fc8a70 254 void state_receiving_coap_data( EventData *data);
mbedAustin 11:cada08fc8a70 255
mbedAustin 11:cada08fc8a70 256 /**
mbedAustin 11:cada08fc8a70 257 * When the socket has received coap data.
mbedAustin 11:cada08fc8a70 258 */
mbedAustin 11:cada08fc8a70 259 void state_coap_data_received( EventData *data);
mbedAustin 11:cada08fc8a70 260
mbedAustin 11:cada08fc8a70 261 /**
mbedAustin 11:cada08fc8a70 262 * When the coap message is being processed.
mbedAustin 11:cada08fc8a70 263 */
mbedAustin 11:cada08fc8a70 264 void state_processing_coap_data( EventData *data);
mbedAustin 11:cada08fc8a70 265
mbedAustin 11:cada08fc8a70 266 /**
mbedAustin 11:cada08fc8a70 267 * When the coap message has been processed.
mbedAustin 11:cada08fc8a70 268 */
mbedAustin 11:cada08fc8a70 269 void state_coap_data_processed( EventData *data);
mbedAustin 11:cada08fc8a70 270
mbedAustin 11:cada08fc8a70 271 /**
mbedAustin 11:cada08fc8a70 272 * When the client is waiting to receive or send data.
mbedAustin 11:cada08fc8a70 273 */
mbedAustin 11:cada08fc8a70 274 void state_waiting( EventData *data);
mbedAustin 11:cada08fc8a70 275
mbedAustin 11:cada08fc8a70 276 /**
mbedAustin 11:cada08fc8a70 277 * State enumeration order must match the order of state
mbedAustin 11:cada08fc8a70 278 * method entries in the state map
mbedAustin 11:cada08fc8a70 279 */
mbedAustin 11:cada08fc8a70 280 enum E_States {
mbedAustin 11:cada08fc8a70 281 STATE_IDLE = 0,
mbedAustin 11:cada08fc8a70 282 STATE_BOOTSTRAP,
mbedAustin 11:cada08fc8a70 283 STATE_BOOTSTRAP_ADDRESS_RESOLVED,
mbedAustin 11:cada08fc8a70 284 STATE_BOOTSTRAP_RESOURCE_CREATED,
mbedAustin 11:cada08fc8a70 285 STATE_BOOTSTRAPPED,
mbedAustin 11:cada08fc8a70 286 STATE_REGISTER, //5
mbedAustin 11:cada08fc8a70 287 STATE_REGISTER_ADDRESS_RESOLVED,
mbedAustin 11:cada08fc8a70 288 STATE_REGISTER_RESOURCE_CREATED,
mbedAustin 11:cada08fc8a70 289 STATE_REGISTERED,
mbedAustin 11:cada08fc8a70 290 STATE_UPDATE_REGISTRATION,
mbedAustin 11:cada08fc8a70 291 STATE_UNREGISTER, //10
mbedAustin 11:cada08fc8a70 292 STATE_UNREGISTERED,
mbedAustin 11:cada08fc8a70 293 STATE_SENDING_COAP_DATA,
mbedAustin 11:cada08fc8a70 294 STATE_COAP_DATA_SENT,
mbedAustin 11:cada08fc8a70 295 STATE_COAP_DATA_RECEIVED,
mbedAustin 11:cada08fc8a70 296 STATE_PROCESSING_COAP_DATA, //15
mbedAustin 11:cada08fc8a70 297 STATE_COAP_DATA_PROCESSED,
mbedAustin 11:cada08fc8a70 298 STATE_WAITING,
mbedAustin 11:cada08fc8a70 299 STATE_MAX_STATES
mbedAustin 11:cada08fc8a70 300 };
mbedAustin 11:cada08fc8a70 301
mbedAustin 11:cada08fc8a70 302 /**
mbedAustin 11:cada08fc8a70 303 * @brief Redirects the state machine to right function.
mbedAustin 11:cada08fc8a70 304 * @param current_state Current state to be set.
mbedAustin 11:cada08fc8a70 305 * @param data, Data to be passed to the state function.
mbedAustin 11:cada08fc8a70 306 */
mbedAustin 11:cada08fc8a70 307 void state_function( uint8_t current_state, EventData* data );
mbedAustin 11:cada08fc8a70 308
mbedAustin 11:cada08fc8a70 309 /**
mbedAustin 11:cada08fc8a70 310 * @brief State Engine maintaining state machine logic.
mbedAustin 11:cada08fc8a70 311 */
mbedAustin 11:cada08fc8a70 312 void state_engine(void);
mbedAustin 11:cada08fc8a70 313
mbedAustin 11:cada08fc8a70 314 /**
mbedAustin 11:cada08fc8a70 315 * External event which can trigger the state machine.
mbedAustin 11:cada08fc8a70 316 * @param New State which the state machine should go to.
mbedAustin 11:cada08fc8a70 317 * @param data to be passed to the state machine.
mbedAustin 11:cada08fc8a70 318 */
mbedAustin 11:cada08fc8a70 319 void external_event(uint8_t, EventData* = NULL);
mbedAustin 11:cada08fc8a70 320
mbedAustin 11:cada08fc8a70 321 /**
mbedAustin 11:cada08fc8a70 322 * Internal event generated by state machine.
mbedAustin 11:cada08fc8a70 323 * @param New State which the state machine should go to.
mbedAustin 11:cada08fc8a70 324 * @param data to be passed to the state machine.
mbedAustin 11:cada08fc8a70 325 */
mbedAustin 11:cada08fc8a70 326 void internal_event(uint8_t, EventData* = NULL);
mbedAustin 11:cada08fc8a70 327
mbedAustin 11:cada08fc8a70 328 enum
mbedAustin 11:cada08fc8a70 329 {
mbedAustin 11:cada08fc8a70 330 EVENT_IGNORED = 0xFE,
mbedAustin 11:cada08fc8a70 331 CANNOT_HAPPEN
mbedAustin 11:cada08fc8a70 332 };
mbedAustin 11:cada08fc8a70 333
mbedAustin 11:cada08fc8a70 334 private:
mbedAustin 11:cada08fc8a70 335
mbedAustin 11:cada08fc8a70 336 M2MInterfaceObserver &_observer;
mbedAustin 11:cada08fc8a70 337 M2MConnectionHandler *_connection_handler;
mbedAustin 11:cada08fc8a70 338 M2MNsdlInterface *_nsdl_interface;
mbedAustin 11:cada08fc8a70 339 uint8_t _current_state;
mbedAustin 11:cada08fc8a70 340 const int _max_states;
mbedAustin 11:cada08fc8a70 341 bool _event_generated;
mbedAustin 11:cada08fc8a70 342 EventData *_event_data;
mbedAustin 11:cada08fc8a70 343
mbedAustin 11:cada08fc8a70 344 String _endpoint_name;
mbedAustin 11:cada08fc8a70 345 String _endpoint_type;
mbedAustin 11:cada08fc8a70 346 String _domain;
mbedAustin 11:cada08fc8a70 347 int32_t _life_time;
mbedAustin 11:cada08fc8a70 348 BindingMode _binding_mode;
mbedAustin 11:cada08fc8a70 349 String _context_address;
mbedAustin 11:cada08fc8a70 350 uint16_t _listen_port;
mbedAustin 11:cada08fc8a70 351 M2MSecurity *_register_server; //TODO: to be the list not owned
mbedAustin 11:cada08fc8a70 352 bool _event_ignored;
mbedAustin 11:cada08fc8a70 353 bool _register_ongoing;
mbedAustin 11:cada08fc8a70 354 bool _update_register_ongoing;
mbedAustin 11:cada08fc8a70 355 M2MTimer *_queue_sleep_timer;
mbedAustin 11:cada08fc8a70 356 callback_handler _callback_handler;
mbedAustin 11:cada08fc8a70 357
mbedAustin 11:cada08fc8a70 358 friend class Test_M2MInterfaceImpl;
mbedAustin 11:cada08fc8a70 359
mbedAustin 11:cada08fc8a70 360 };
mbedAustin 11:cada08fc8a70 361
mbedAustin 11:cada08fc8a70 362 #define BEGIN_TRANSITION_MAP \
mbedAustin 11:cada08fc8a70 363 static const uint8_t TRANSITIONS[] = {\
mbedAustin 11:cada08fc8a70 364
mbedAustin 11:cada08fc8a70 365 #define TRANSITION_MAP_ENTRY(entry)\
mbedAustin 11:cada08fc8a70 366 entry,
mbedAustin 11:cada08fc8a70 367
mbedAustin 11:cada08fc8a70 368 #define END_TRANSITION_MAP(data) \
mbedAustin 11:cada08fc8a70 369 0 };\
mbedAustin 11:cada08fc8a70 370 external_event(TRANSITIONS[_current_state], data);
mbedAustin 11:cada08fc8a70 371
mbedAustin 11:cada08fc8a70 372 #endif //M2M_INTERFACE_IMPL_H
mbedAustin 11:cada08fc8a70 373
mbedAustin 11:cada08fc8a70 374