mbed Connector Interface simplification API on top of mbed-client

Fork of mbedConnectorInterfaceV3 by Doug Anson

NOTE:

This repo has been replaced with https://github.com/ARMmbed/mbedConnectorInterface. No further updates will occur with this repo. Please use the github repo instead. Thanks!

mbed-connector-interface/DeviceManager.h

Committer:
ansond
Date:
2016-06-08
Revision:
13:9edad7677211
Child:
27:b8aaf7dc7023

File content as of revision 13:9edad7677211:

/**
 * @file    DeviceManager.h
 * @brief   mbed CoAP Endpoint Device Management class
 * @author  Doug Anson
 * @version 1.0
 * @see
 *
 * Copyright (c) 2016
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef __DEVICE_MANAGER_H__
#define __DEVICE_MANAGER_H__

// mbed-client support
#include "mbed-client/m2mconstants.h"
 
// Support for Device Resources
#include "mbed-connector-interface/DeviceResource.h"

// Action Resource: Device DeRegistration
#include "mbed-connector-interface/DeviceDeRegisterResource.h"

// Action Resource: Device Reboot
#include "mbed-connector-interface/DeviceRebootResource.h"

// Action Resource: Device Reset
#include "mbed-connector-interface/DeviceResetResource.h"

// Action Resource: Device Firmware
#include "mbed-connector-interface/DeviceFirmwareCompositeResource.h"

// LWM2M Device Info: Mfg, DevType, Model, Serial, Firmware version, Hardware version, Software version
#define NUM_DEVICE_RESOURCES                7

// LWM2M Device Object ID
#define LWM2M_DEVICE_OBJ_ID                 "3"

// LWM2M Firmware Object ID
#define LWM2M_FIRMWARE_OBJ_ID               "5"

// TEMP: Device DeRegistration Resource ID
#define LWM2M_DEV_DEREGISTER_ID             "86"

/** DeviceManager is the endpoint management class
 */
class DeviceManager
{    
    public:
        /**
        Default constructor
        @param logger input logger instance
        @param dm_responder input data management responder/processor
        @param mfg input endpoint manufacturer
        @param dev_type input the endpoint type
        @param model input the model of the endpoint
        @param serial input the serial of the endpoint
        @param fw_vers input the current firmware version
        @param hw_vers input the current hardware version
        @param sw_vers input the current software version
        */
        DeviceManager(const Logger *logger,const void *dm_responder=NULL,const char *mfg="ARM",const char *dev_type="mbed",const char *model="ARM" ,const char *serial="000000",const char *fw_ver="0.0.0",const char *hw_ver="0.0.0",const char *sw_ver="0.0.0");
        
        /**
        Copy constructor
        @param resource input the DeviceManager that is to be deep copied
        */
        DeviceManager(const DeviceManager &manager);
    
        /**
        Destructor
        */
        virtual ~DeviceManager();
        
        /**
        install the device manager into the endpoint
        @param endpoint input the endpoint instance
        @param config input the endpoint configuration instance
        */
        void install(const void *endpoint,const void *config);
        
        /**
        get the DeviceManagementResponder
        @return the DeviceManagementResponder or NULL
        */
        void *getResponder();
        
    private:
        Logger                              *m_logger;
        void                                *m_endpoint;
        void                                *m_config;
        char                                *m_dev_type;
        void                                *m_dm_responder;
        
        // Static LWM2M Device Info Resources
        DeviceResource                      *m_dev[NUM_DEVICE_RESOURCES];
        
        // DM Action-able Resources
        DeviceDeRegisterResource            *m_deregister_resource; 
        DeviceRebootResource                *m_reboot_resource; 
        DeviceResetResource                 *m_reset_resource; 
        DeviceFirmwareCompositeResource     *m_firmware_composite_resource; 
        
        // convenience method to convert enum (int) type to string 
        string                               createResName(M2MDevice::DeviceResource res);
};

#endif // __DEVICE_MANAGER_H__