mqtt specific components for the impact mbed endpoint library
Dependents: mbed_mqtt_endpoint_ublox_ethernet mbed_mqtt_endpoint_ublox_cellular mbed_mqtt_endpoint_nxp
MBEDEndpoint.h
- Committer:
- ansond
- Date:
- 2014-03-26
- Revision:
- 0:a3fc1c6ef150
- Child:
- 5:1ba6e68bf50e
File content as of revision 0:a3fc1c6ef150:
/* Copyright C2013 Doug Anson, MIT License * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files the "Software", to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _MBED_ENDPOINT_H_ #define _MBED_ENDPOINT_H_ // Ethernet Interface #include "EthernetInterface.h" // ErrorHandler support #include "ErrorHandler.h" // MBED to IOC Resource Map #include "MBEDToIOCResourceMap.h" // Transport support #include "MQTTTransport.h" #include "IOCHTTPTransport.h" // Light Support #include "Light.h" // ResourceFactory Support #include "ResourceFactory.h" // Preferences Support #include "Preferences.h" class MBEDEndpoint { private: EthernetInterface *m_ethernet; // ethernet interface ErrorHandler *m_error_handler; // our error handler Transport *m_transports[NUM_TRANSPORTS]; // our transport Light *m_lights[NUM_LIGHTS]; // our lights (at least 1) char m_endpoint_name[LIGHT_NAME_LEN+1]; // our endpoint name (light[0]) MBEDToIOCResourceMap *m_map; // IOC <--> MBED resource mapping Preferences *m_preferences; // preference support char m_lcd_status[TEMP_BUFFER_LEN+1]; // LCD status buffer char m_gw_address[PREFERENCE_VALUE_LEN+1]; // GW address buffer int m_instance_id; // instance ID for this endpoint public: MBEDEndpoint(ErrorHandler *error_handler,EthernetInterface *ethernet); ~MBEDEndpoint(); ResourceFactory *initResourceFactory(); void run(); int indexOfLight(char *name); ResourceFactory *getResources(int index); bool loadEndpoints(); bool updateEndpoints(); bool updateEndpoints(int index); char *getEndpointName(); char *getGWAddress(); Preferences *preferences(); char *getLCDStatus(); int getInstanceID(); MBEDToIOCResourceMap *getMap(); protected: private: void initPreferences(); void initGWAddress(); void initEndpointName(); bool initializeLights(); bool initializeTransport(int index,char *key,Transport *transport); bool initializeTransports(); bool initializeEthernet(EthernetInterface *ethernet); bool loadEndpoint(Light *light); bool updateEndpoint(Light *light); char *buildIOCPayload(char *data,int data_length,Light *light); void saveIOCID(Light *light,char *data); bool closeLights(); bool closeTransport(int index,char *key); bool closeTransports(); bool closeEthernet(); ErrorHandler *logger(); int min(int value1, int value2); }; #endif // _MBED_ENDPOINT_H_