Ram Gandikota
/
IOTMetronome
FRDM K64F Metronome
Diff: mbed-client/source/m2minterfacefactory.cpp
- Revision:
- 0:dbad57390bd1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-client/source/m2minterfacefactory.cpp Sun May 14 18:37:05 2017 +0000 @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2015 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Note: this macro is needed on armcc to get the the PRI*32 macros +// from inttypes.h in a C++ code. +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS +#endif + +#include "mbed-client/m2minterfacefactory.h" +#include "mbed-client/m2mserver.h" +#include "mbed-client/m2mdevice.h" +#include "mbed-client/m2mfirmware.h" +#include "mbed-client/m2mobject.h" +#include "mbed-client/m2mconstants.h" +#include "mbed-client/m2mconfig.h" +#include "include/m2minterfaceimpl.h" +#include "mbed-trace/mbed_trace.h" + +#include <inttypes.h> + +#define TRACE_GROUP "mClt" + +M2MInterface* M2MInterfaceFactory::create_interface(M2MInterfaceObserver &observer, + const String &endpoint_name, + const String &endpoint_type, + const int32_t life_time, + const uint16_t listen_port, + const String &domain, + M2MInterface::BindingMode mode, + M2MInterface::NetworkStack stack, + const String &context_address) +{ + tr_debug("M2MInterfaceFactory::create_interface - IN"); + tr_debug("M2MInterfaceFactory::create_interface - parameters endpoint name : %s",endpoint_name.c_str()); + tr_debug("M2MInterfaceFactory::create_interface - parameters endpoint type : %s",endpoint_type.c_str()); + tr_debug("M2MInterfaceFactory::create_interface - parameters life time(in secs): %" PRId32,life_time); + tr_debug("M2MInterfaceFactory::create_interface - parameters Listen Port : %d",listen_port); + tr_debug("M2MInterfaceFactory::create_interface - parameters Binding Mode : %d",(int)mode); + tr_debug("M2MInterfaceFactory::create_interface - parameters NetworkStack : %d",(int)stack); + M2MInterfaceImpl *interface = NULL; + + + bool endpoint_type_valid = true; + if(!endpoint_type.empty()) { + if(endpoint_type.size() > MAX_ALLOWED_STRING_LENGTH){ + endpoint_type_valid = false; + } + } + + bool domain_valid = true; + if(!domain.empty()) { + if(domain.size() > MAX_ALLOWED_STRING_LENGTH){ + domain_valid = false; + } + } + + if(((life_time == -1) || (life_time >= MINIMUM_REGISTRATION_TIME)) && + !endpoint_name.empty() && (endpoint_name.size() <= MAX_ALLOWED_STRING_LENGTH) && + endpoint_type_valid && domain_valid) { + tr_debug("M2MInterfaceFactory::create_interface - Creating M2MInterfaceImpl"); + interface = new M2MInterfaceImpl(observer, endpoint_name, + endpoint_type, life_time, + listen_port, domain, mode, + stack, context_address); + + } + tr_debug("M2MInterfaceFactory::create_interface - OUT"); + return interface; +} + +M2MSecurity* M2MInterfaceFactory::create_security(M2MSecurity::ServerType server_type) +{ + tr_debug("M2MInterfaceFactory::create_security"); + M2MSecurity *security = new M2MSecurity(server_type); + return security; +} + +M2MServer* M2MInterfaceFactory::create_server() +{ + tr_debug("M2MInterfaceFactory::create_server"); + M2MServer *server = new M2MServer(); + return server; +} + +M2MDevice* M2MInterfaceFactory::create_device() +{ + tr_debug("M2MInterfaceFactory::create_device"); + M2MDevice* device = M2MDevice::get_instance(); + return device; +} + +M2MFirmware* M2MInterfaceFactory::create_firmware() +{ + tr_debug("M2MInterfaceFactory::create_firmware"); + M2MFirmware* firmware = M2MFirmware::get_instance(); + return firmware; +} + +M2MObject* M2MInterfaceFactory::create_object(const String &name) +{ + tr_debug("M2MInterfaceFactory::create_object : Name : %s", name.c_str()); + if(name.size() > MAX_ALLOWED_STRING_LENGTH || name.empty()){ + return NULL; + } + + M2MObject *object = NULL; + object = new M2MObject(name, M2MBase::stringdup(name.c_str())); + return object; +}