mbedConnectorInterface back port from mbedOS v3 using mbed-client C++ call interface
Embed:
(wiki syntax)
Show/hide line numbers
DeviceFirmwareCompositeResource.cpp
Go to the documentation of this file.
00001 /** 00002 * @file DeviceFirmwareCompositeResource.cpp 00003 * @brief mbed CoAP Endpoint Device Firmware Composited Resource 00004 * @author Doug Anson 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 // Class 00024 #include "mbed-connector-interface/DeviceFirmwareCompositeResource.h" 00025 00026 // Endpoint Class 00027 #include "mbed-connector-interface/ConnectorEndpoint.h" 00028 00029 // Options Builder 00030 #include "mbed-connector-interface/OptionsBuilder.h" 00031 00032 // DeviceManagementResponder 00033 #include "mbed-connector-interface/DeviceManagementResponder.h" 00034 00035 // DeviceStringResource 00036 #include "mbed-connector-interface/DeviceStringResource.h" 00037 00038 // DeviceIntegerResource 00039 #include "mbed-connector-interface/DeviceIntegerResource.h" 00040 00041 // DeviceFirmwareUpdateResource 00042 #include "mbed-connector-interface/DeviceFirmwareUpdateResource.h" 00043 00044 // DeviceFirmwareManifestResource 00045 #include "mbed-connector-interface/DeviceFirmwareManifestResource.h" 00046 00047 // Default Constructor 00048 DeviceFirmwareCompositeResource::DeviceFirmwareCompositeResource(const Logger *logger,const char *obj_name,const void *dm_responder) { 00049 this->m_logger = (Logger *)logger; 00050 this->m_dm_responder = (void *)dm_responder; 00051 this->m_obj_name = (char *)obj_name; 00052 for(int i=0;i<NUM_FIRMWARE_RESOURCE_IDS;++i) { 00053 this->m_firmware_resource[i] = NULL; 00054 } 00055 } 00056 00057 // Copy Constructor 00058 DeviceFirmwareCompositeResource::DeviceFirmwareCompositeResource(const DeviceFirmwareCompositeResource &res) { 00059 this->m_logger = res.m_logger; 00060 this->m_dm_responder = res.m_dm_responder; 00061 this->m_obj_name = res.m_obj_name; 00062 for(int i=0;i<NUM_FIRMWARE_RESOURCE_IDS;++i) { 00063 this->m_firmware_resource[i] = res.m_firmware_resource[i]; 00064 } 00065 } 00066 00067 // Destructor 00068 DeviceFirmwareCompositeResource::~DeviceFirmwareCompositeResource() { 00069 } 00070 00071 // Build out our Firmware Resources 00072 void DeviceFirmwareCompositeResource::buildResources() { 00073 // LWM2M_PAYLOAD_ID (TODO: Needs to be OPAQUE and full firmware blob...) 00074 this->m_firmware_resource[LWM2M_PAYLOAD_ID] = new DeviceStringResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_PACKAGE_ID,"fw_package",this->m_dm_responder,false); 00075 00076 // LWM2M_MANIFEST_ID 00077 this->m_firmware_resource[LWM2M_MANIFEST_ID] = new DeviceFirmwareManifestResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_PACKAGE_URI_ID,this->m_dm_responder,false); 00078 00079 // LWM2M_UPDATE_ID 00080 this->m_firmware_resource[LWM2M_UPDATE_ID] = new DeviceFirmwareUpdateResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_UPDATE_ID,this->m_dm_responder,false); 00081 00082 // LWM2M_STATE_ID 00083 this->m_firmware_resource[LWM2M_STATE_ID] = new DeviceIntegerResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_STATE_ID,"fw_state",this->m_dm_responder,false); 00084 00085 // LWM2M_RESULT_ID 00086 this->m_firmware_resource[LWM2M_RESULT_ID] = new DeviceIntegerResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_RESULT_ID,"fw_result",this->m_dm_responder,true); 00087 00088 // LWM2M_PKGNAME_ID 00089 this->m_firmware_resource[LWM2M_PKGNAME_ID] = new DeviceStringResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_PKG_NAME_ID,"fw_pkg_name",this->m_dm_responder,false); 00090 00091 // LWM2M_PKGVERSION_ID 00092 this->m_firmware_resource[LWM2M_PKGVERSION_ID] = new DeviceStringResource(this->m_logger,this->m_obj_name,LWM2M_DEV_FIRMWARE_PKG_VERSION_ID,"fw_pkg_version",this->m_dm_responder,false); 00093 00094 // Establish default values for State and Result 00095 this->m_firmware_resource[LWM2M_STATE_ID]->put("1"); // idle == 1 00096 this->m_firmware_resource[LWM2M_RESULT_ID]->put("0"); // default result == 0 00097 00098 // Tie firmare composite resource for future updating by the dm_responder functions 00099 DeviceManagementResponder *dmr = (DeviceManagementResponder *)this->m_dm_responder; 00100 dmr->setFirmwareCompositeResource(this); 00101 } 00102 00103 // add resources 00104 void DeviceFirmwareCompositeResource::addResources(void *cfg) { 00105 // our Endpoint configuration 00106 Connector::OptionsBuilder *configure_options = (Connector::OptionsBuilder *)cfg; 00107 00108 // loop through the internal resources and add them... 00109 for(int i=0;i<NUM_FIRMWARE_RESOURCE_IDS;++i) { 00110 if (this->m_firmware_resource[i] != NULL) { 00111 configure_options->addResource(this->m_firmware_resource[i]); 00112 } 00113 } 00114 } 00115 00116 // get a specific resource 00117 void *DeviceFirmwareCompositeResource::getResource(FirmwareResourceIDs id) { 00118 int index = (int)id; 00119 if (index >= 0 && index < NUM_FIRMWARE_RESOURCE_IDS) { 00120 return this->m_firmware_resource[index]; 00121 } 00122 return NULL; 00123 } 00124 00125 00126
Generated on Wed Jul 13 2022 21:59:32 by
1.7.2