Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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