Doug Anson / mbedConnectorInterfaceV3
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DeviceActionResource.h Source File

DeviceActionResource.h

Go to the documentation of this file.
00001 /**
00002  * @file    DeviceActionResource.h
00003  * @brief   mbed CoAP Endpoint Device Action 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 #ifndef __DEVICE_ACTION_RESOURCE_H__
00024 #define __DEVICE_ACTION_RESOURCE_H__
00025 
00026 // Base class
00027 #include "mbed-connector-interface/DynamicResource.h"
00028 
00029 // Device Management Responder 
00030 #include "mbed-connector-interface/DeviceManagementResponder.h"
00031 
00032 /** DeviceActionResource class
00033  */
00034 class DeviceActionResource : public DynamicResource
00035 {
00036 public:
00037     /**
00038     Default constructor
00039     @param logger input logger instance for this resource
00040     @param obj_name input the Action Object ID
00041     @param res_name input the Action Resource ID
00042     @param res_type input the Action Resource Type
00043     @param dm_responder input the DM responder instance
00044     @param observable input this Action is observable
00045     */
00046     DeviceActionResource(const Logger *logger,const char *obj_name,const char *res_name,const char *res_type,const void *dm_responder,bool observable = false) : 
00047         DynamicResource(logger,obj_name,res_name,res_type,M2MBase::GET_POST_ALLOWED,observable)
00048     {
00049         this->m_dm_responder = (DeviceManagementResponder *)dm_responder;
00050         this->m_value = string("OK");
00051     }
00052 
00053     /**
00054     GET handler
00055     @returns string with this resource type
00056     */
00057     virtual string get() {
00058         return this->m_value;
00059     }
00060     
00061     /**
00062     POST handler
00063     @param value input input value (DM authentication challenge)
00064     */
00065     virtual void post(void *args) {
00066         // perform our action
00067         bool status = this->do_action(args);
00068         if (status == true) {
00069             this->m_value = string("OK");
00070         }
00071         else {
00072             this->m_value = string("FAIL");
00073         }
00074     }
00075     
00076     // Our actual action handler
00077     virtual bool do_action(void *args) = 0;  //  pure. Derive and implement, then add additional call to DeviceManagementResponder...
00078 
00079 protected:
00080     DeviceManagementResponder     *m_dm_responder;
00081         
00082 private:
00083     string                         m_value; 
00084 };
00085 
00086 #endif // __DEVICE_ACTION_RESOURCE_H__