Ram Gandikota
/
ABCD
A metronome using the FRDM K64F board
Diff: frdm_client.hpp
- Revision:
- 0:a7a43371b306
diff -r 000000000000 -r a7a43371b306 frdm_client.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frdm_client.hpp Sun May 14 18:40:18 2017 +0000 @@ -0,0 +1,54 @@ +#pragma once + +#include "mbed-client/m2mdevice.h" +#include "mbed-client/m2minterfacefactory.h" +#include "mbed-client/m2minterface.h" + +class frdm_client : public M2MInterfaceObserver +{ +public: + struct state + { + enum + { + initialized, + boostrapped, + registered, + unregistered, + error + }; + }; + +public: + static M2MDevice* make_device(); + +public: + static const M2MInterface::NetworkStack stack_type = M2MInterface::LwIP_IPv4; + static const M2MInterface::BindingMode socket_mode = M2MInterface::TCP; + +public: + frdm_client(const String& server_address, void* handler = NULL); + ~frdm_client(); + +public: + void connect(const M2MObjectList& objects); + void disconnect(); + + virtual void bootstrap_done(M2MSecurity* security) { if (security) m_state = state::boostrapped; } + virtual void object_registered(M2MSecurity*, const M2MServer&) { m_state = state::registered; } + virtual void object_unregistered(M2MSecurity*) { m_state = state::unregistered; } + virtual void registration_updated(M2MSecurity*, const M2MServer&) {} + virtual void value_updated(M2MBase*, M2MBase::BaseType) {} + virtual void error(M2MInterface::Error error) { m_state = state::error; } + + int get_state() const { return m_state; } + M2MSecurity* get_security() const { return m_security; } + +private: + String m_address; + volatile int m_state; + + M2MInterface* m_interface; + M2MSecurity* m_security; +}; +