mbedConnectorInterface back port from mbedOS v3 using mbed-client C++ call interface
Embed:
(wiki syntax)
Show/hide line numbers
DeviceResource.cpp
00001 /** 00002 * @file DeviceResource.h 00003 * @brief mbed CoAP Endpoint Device Resource class 00004 * @author Doug Anson/Chris Paola 00005 * @version 1.0 00006 * @see 00007 * 00008 * Copyright (c) 2014 00009 * 00010 * Licensed under the Apache License, Version 2.0 (the "License"); 00011 * you may not use this file except in compliance with the License. 00012 * You may obtain a copy of the License at 00013 * 00014 * http://www.apache.org/licenses/LICENSE-2.0 00015 * 00016 * Unless required by applicable law or agreed to in writing, software 00017 * distributed under the License is distributed on an "AS IS" BASIS, 00018 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00019 * See the License for the specific language governing permissions and 00020 * limitations under the License. 00021 */ 00022 00023 // configuration 00024 #include "mbed-connector-interface/mbedConnectorInterface.h" 00025 00026 // mbed-client support 00027 #include "mbed-client/m2mconstants.h" 00028 00029 // BaseClass 00030 #include "mbed-connector-interface/DeviceResource.h" 00031 00032 // Constructor 00033 DeviceResource::DeviceResource(const Logger *logger,M2MDevice::DeviceResource name, const char *value) : Resource<string>(logger,string(M2M_DEVICE_RES_ROOT),this->resource_name(name),string(value)), m_data_wrapper() 00034 { 00035 this->m_object = NULL; 00036 this->m_dev_name = name; 00037 } 00038 00039 // Constructor 00040 DeviceResource::DeviceResource(const Logger *logger,M2MDevice::DeviceResource name,const string value) : Resource<string>(logger,string(M2M_DEVICE_RES_ROOT),this->resource_name(name),string(value)) 00041 { 00042 this->m_data_wrapper = NULL; 00043 this->m_object = NULL; 00044 this->m_dev_name = name; 00045 } 00046 00047 // Copy constructor 00048 DeviceResource::DeviceResource(const DeviceResource &resource) : Resource<string>((const Resource<string> &)resource) 00049 { 00050 this->m_data_wrapper = resource.m_data_wrapper; 00051 this->m_object = resource.m_object; 00052 this->m_dev_name = resource.m_dev_name; 00053 } 00054 00055 // Destructor 00056 DeviceResource::~DeviceResource() { 00057 } 00058 00059 // bind CoAP Resource.. 00060 M2MObject *DeviceResource::bind(void *p) { 00061 if (p != NULL) { 00062 M2MDevice *resource = M2MInterfaceFactory::create_device(); 00063 if (resource != NULL) { 00064 if (this->getDataWrapper() != NULL) { 00065 // wrap the data... 00066 this->getDataWrapper()->wrap((uint8_t *)this->getValue().c_str(),(int)this->getValue().size()); 00067 string str_value = string((char *)this->getDataWrapper()->get()); 00068 resource->create_resource(this->m_dev_name,str_value.c_str()); 00069 this->logger()->log("DeviceResource: [%s] value: [%s] bound",this->getFullName().c_str(),this->getDataWrapper()->get()); 00070 } 00071 else { 00072 // do not wrap the data... 00073 resource->create_resource(this->m_dev_name,this->getValue().c_str()); 00074 this->logger()->log("DeviceResource: [%s] value: [%s] bound",this->getFullName().c_str(),this->getValue().c_str()); 00075 } 00076 this->m_object = (M2MObject *)resource; 00077 } 00078 else { 00079 this->logger()->log("DeviceResource: M2MInterfaceFactory::create_device() FAILED"); 00080 } 00081 } 00082 else { 00083 this->logger()->log("DeviceResource: NULL value parameter in bind() request..."); 00084 } 00085 return this->m_object; 00086 } 00087 00088 // no reason why this should not be public in M2MDevice... 00089 string DeviceResource::resource_name(M2MDevice::DeviceResource name) const { 00090 m2m::String res_name = ""; 00091 switch(name) { 00092 case M2MDevice::Manufacturer: 00093 res_name = DEVICE_MANUFACTURER; 00094 break; 00095 case M2MDevice::DeviceType: 00096 res_name = DEVICE_DEVICE_TYPE; 00097 break; 00098 case M2MDevice::ModelNumber: 00099 res_name = DEVICE_MODEL_NUMBER; 00100 break; 00101 case M2MDevice::SerialNumber: 00102 res_name = DEVICE_SERIAL_NUMBER; 00103 break; 00104 case M2MDevice::HardwareVersion: 00105 res_name = DEVICE_HARDWARE_VERSION; 00106 break; 00107 case M2MDevice::FirmwareVersion: 00108 res_name = DEVICE_FIRMWARE_VERSION; 00109 break; 00110 case M2MDevice::SoftwareVersion: 00111 res_name = DEVICE_SOFTWARE_VERSION; 00112 break; 00113 case M2MDevice::Reboot: 00114 res_name = DEVICE_REBOOT; 00115 break; 00116 case M2MDevice::FactoryReset: 00117 res_name = DEVICE_FACTORY_RESET; 00118 break; 00119 case M2MDevice::AvailablePowerSources: 00120 res_name = DEVICE_AVAILABLE_POWER_SOURCES; 00121 break; 00122 case M2MDevice::PowerSourceVoltage: 00123 res_name = DEVICE_POWER_SOURCE_VOLTAGE; 00124 break; 00125 case M2MDevice::PowerSourceCurrent: 00126 res_name = DEVICE_POWER_SOURCE_CURRENT; 00127 break; 00128 case M2MDevice::BatteryLevel: 00129 res_name = DEVICE_BATTERY_LEVEL; 00130 break; 00131 case M2MDevice::BatteryStatus: 00132 res_name = DEVICE_BATTERY_STATUS; 00133 break; 00134 case M2MDevice::MemoryFree: 00135 res_name = DEVICE_MEMORY_FREE; 00136 break; 00137 case M2MDevice::MemoryTotal: 00138 res_name = DEVICE_MEMORY_TOTAL; 00139 break; 00140 case M2MDevice::ErrorCode: 00141 res_name = DEVICE_ERROR_CODE; 00142 break; 00143 case M2MDevice::ResetErrorCode: 00144 res_name = DEVICE_RESET_ERROR_CODE; 00145 break; 00146 case M2MDevice::CurrentTime: 00147 res_name = DEVICE_CURRENT_TIME; 00148 break; 00149 case M2MDevice::UTCOffset: 00150 res_name = DEVICE_UTC_OFFSET; 00151 break; 00152 case M2MDevice::Timezone: 00153 res_name = DEVICE_TIMEZONE; 00154 break; 00155 case M2MDevice::SupportedBindingMode: 00156 res_name = DEVICE_SUPPORTED_BINDING_MODE; 00157 break; 00158 } 00159 string result = string("") + res_name.c_str(); 00160 return result; 00161 } 00162
Generated on Wed Jul 13 2022 21:59:32 by
1.7.2