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.
DeviceFirmwareCompositeResource.cpp
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