libhomegear-base  0.7
Base library for Homegear and Homegear family modules.
BaseLib::Systems::IPhysicalInterface Class Referenceabstract

#include <IPhysicalInterface.h>

Inheritance diagram for BaseLib::Systems::IPhysicalInterface:
BaseLib::IEventsEx BaseLib::IQueue BaseLib::IQueueBase

Classes

struct  GPIODirection
 
struct  GPIOEdge
 
class  IPhysicalInterfaceEventSink
 
class  QueueEntry
 

Public Member Functions

 IPhysicalInterface (BaseLib::SharedObjects *baseLib, int32_t familyId)
 
 IPhysicalInterface (BaseLib::SharedObjects *baseLib, int32_t familyId, std::shared_ptr< PhysicalInterfaceSettings > settings)
 
virtual ~IPhysicalInterface ()
 
virtual void startListening ()
 
virtual void stopListening ()
 
virtual void enableUpdateMode ()
 
virtual void disableUpdateMode ()
 
virtual void sendPacket (std::shared_ptr< Packet > packet)=0
 
virtual bool lifetick ()
 
virtual bool isOpen ()
 
virtual uint32_t responseDelay ()
 
virtual int64_t lastPacketSent ()
 
virtual int64_t lastPacketReceived ()
 
virtual void setup (int32_t userID, int32_t groupID, bool setPermissions)
 
virtual std::string getType ()
 
virtual std::string getID ()
 
virtual std::string getSerialNumber ()
 
virtual std::string getFirmwareVersion ()
 
virtual bool isDefault ()
 
virtual bool isNetworkDevice ()
 
virtual int32_t getAddress ()
 
virtual std::string getIpAddress ()
 
virtual std::string getHostname ()
 
void setRawPacketEvent (std::function< void(int32_t familyId, const std::string &interfaceId, const BaseLib::PVariable &packet)> value)
 
- Public Member Functions inherited from BaseLib::IEventsEx
 IEventsEx ()
 
virtual ~IEventsEx ()
 
virtual PEventHandler addEventHandler (IEventSinkBase *eventHandler)
 
virtual std::vector< PEventHandleraddEventHandlers (EventHandlers eventHandlers)
 
virtual void removeEventHandler (PEventHandler eventHandler)
 
virtual EventHandlers getEventHandlers ()
 
- Public Member Functions inherited from BaseLib::IQueue
 IQueue (SharedObjects *baseLib, uint32_t queueCount, uint32_t bufferSize)
 Constructor. More...
 
virtual ~IQueue ()
 
void startQueue (int32_t index, bool waitWhenFull, uint32_t processingThreadCount, int32_t threadPriority=0, int32_t threadPolicy=SCHED_OTHER)
 Starts the threads of a queue. More...
 
void startQueue (int32_t index, bool waitWhenFull, uint32_t initialProcessingThreadCount, uint32_t maxProcessingThreadCount)
 Starts the threads of a queue using a thread count that can be increased later. More...
 
void stopQueue (int32_t index)
 Stops the threads of a queue previously started with startQueue(). More...
 
bool queueIsStarted (int32_t index)
 Checks if the specified queue has been started. More...
 
bool addThread (int32_t index)
 Start an additional thread. More...
 
bool enqueue (int32_t index, std::shared_ptr< IQueueEntry > &entry, bool waitWhenFull=false)
 Enqueues an item. More...
 
virtual void processQueueEntry (int32_t index, std::shared_ptr< IQueueEntry > &entry)=0
 This method is called by the processing threads for each item to process. More...
 
bool queueEmpty (int32_t index)
 Checks if a queue is empty. More...
 
uint32_t processingThreadCount (int32_t index)
 Returns the number of processing threads. More...
 
uint32_t maxProcessingThreadCount (int32_t index)
 Returns the maximum number of processing threads. More...
 
int32_t queueSize (int32_t index)
 Returns the number of items queued in a queue. More...
 
double threadLoad (int32_t index)
 
double maxThreadLoad (int32_t index)
 
double maxThreadLoad1m (int32_t index)
 
double maxThreadLoad10m (int32_t index)
 
double maxThreadLoad1h (int32_t index)
 
int64_t maxWait (int32_t index)
 
int64_t maxWait1m (int32_t index)
 
int64_t maxWait10m (int32_t index)
 
int64_t maxWait1h (int32_t index)
 
- Public Member Functions inherited from BaseLib::IQueueBase
 IQueueBase (SharedObjects *baseLib, uint32_t queueCount)
 
virtual ~IQueueBase ()
 
void printQueueFullError (BaseLib::Output &out, const std::string &message)
 Prints a rate limited (1 output per 10 seconds) error message and keeps count of error messages. More...
 

Protected Member Functions

virtual void raisePacketReceived (std::shared_ptr< Packet > packet)
 
void processQueueEntry (int32_t index, std::shared_ptr< BaseLib::IQueueEntry > &entry) override
 
virtual void setDevicePermission (int32_t userID, int32_t groupID)
 
virtual void openGPIO (uint32_t index, bool readOnly)
 
virtual void getGPIOPath (uint32_t index)
 
virtual void closeGPIO (uint32_t index)
 
virtual bool getGPIO (uint32_t index)
 
virtual void setGPIO (uint32_t index, bool value)
 
virtual void setGPIOPermission (uint32_t index, int32_t userID, int32_t groupID, bool readOnly)
 
virtual void exportGPIO (uint32_t index)
 
virtual bool setGPIODirection (uint32_t index, GPIODirection::Enum direction)
 
virtual bool setGPIOEdge (uint32_t index, GPIOEdge::Enum edge)
 
virtual bool gpioDefined (uint32_t)
 
virtual bool gpioOpen (uint32_t)
 
virtual void saveSettingToDatabase (std::string setting, std::string &value)
 
virtual void saveSettingToDatabase (std::string setting, int32_t value)
 
virtual void saveSettingToDatabase (std::string setting, std::vector< char > &value)
 

Protected Attributes

BaseLib::SharedObjects_bl = nullptr
 
int32_t _familyId = -1
 
std::shared_ptr< PhysicalInterfaceSettings_settings
 
std::thread _listenThread
 
std::thread _callbackThread
 
std::atomic_bool _stopCallbackThread {false}
 
std::string _lockfile
 
std::mutex _sendMutex
 
std::atomic_bool _stopped
 
std::shared_ptr< FileDescriptor_fileDescriptor
 
std::map< uint32_t, std::shared_ptr< FileDescriptor > > _gpioDescriptors
 
std::atomic< int64_t > _lastPacketSent {-1}
 
std::atomic< int64_t > _lastPacketReceived {-1}
 
int64_t _maxPacketProcessingTime = 1000
 
std::atomic_bool _updateMode {false}
 
std::atomic< int64_t > _lifetickTime {0}
 
std::atomic_bool _lifetickState {true}
 
int32_t _myAddress = 0
 
std::string _hostname
 
std::string _ipAddress
 
std::function< void(int32_t familyId, const std::string &interfaceId, const BaseLib::PVariable &packet)> _rawPacketEvent
 
- Protected Attributes inherited from BaseLib::IEventsEx
int32_t _currentId = 0
 
std::mutex _eventHandlerMutex
 
EventHandlers _eventHandlers
 
- Protected Attributes inherited from BaseLib::IQueueBase
SharedObjects_bl = nullptr
 
int32_t _queueCount = 2
 
std::unique_ptr< std::atomic_bool[]> _stopProcessingThread
 
std::atomic< uint32_t > _droppedEntries {0}
 
std::atomic< int64_t > _lastQueueFullError {0}
 

Constructor & Destructor Documentation

§ IPhysicalInterface() [1/2]

BaseLib::Systems::IPhysicalInterface::IPhysicalInterface ( BaseLib::SharedObjects baseLib,
int32_t  familyId 
)

§ IPhysicalInterface() [2/2]

BaseLib::Systems::IPhysicalInterface::IPhysicalInterface ( BaseLib::SharedObjects baseLib,
int32_t  familyId,
std::shared_ptr< PhysicalInterfaceSettings settings 
)

§ ~IPhysicalInterface()

BaseLib::Systems::IPhysicalInterface::~IPhysicalInterface ( )
virtual

Member Function Documentation

§ closeGPIO()

void BaseLib::Systems::IPhysicalInterface::closeGPIO ( uint32_t  index)
protectedvirtual

§ disableUpdateMode()

void BaseLib::Systems::IPhysicalInterface::disableUpdateMode ( )
virtual

§ enableUpdateMode()

void BaseLib::Systems::IPhysicalInterface::enableUpdateMode ( )
virtual

§ exportGPIO()

void BaseLib::Systems::IPhysicalInterface::exportGPIO ( uint32_t  index)
protectedvirtual

§ getAddress()

virtual int32_t BaseLib::Systems::IPhysicalInterface::getAddress ( )
inlinevirtual

§ getFirmwareVersion()

virtual std::string BaseLib::Systems::IPhysicalInterface::getFirmwareVersion ( )
inlinevirtual

§ getGPIO()

bool BaseLib::Systems::IPhysicalInterface::getGPIO ( uint32_t  index)
protectedvirtual

§ getGPIOPath()

void BaseLib::Systems::IPhysicalInterface::getGPIOPath ( uint32_t  index)
protectedvirtual

§ getHostname()

virtual std::string BaseLib::Systems::IPhysicalInterface::getHostname ( )
inlinevirtual

§ getID()

virtual std::string BaseLib::Systems::IPhysicalInterface::getID ( )
inlinevirtual

§ getIpAddress()

virtual std::string BaseLib::Systems::IPhysicalInterface::getIpAddress ( )
inlinevirtual

§ getSerialNumber()

virtual std::string BaseLib::Systems::IPhysicalInterface::getSerialNumber ( )
inlinevirtual

§ getType()

virtual std::string BaseLib::Systems::IPhysicalInterface::getType ( )
inlinevirtual

§ gpioDefined()

bool BaseLib::Systems::IPhysicalInterface::gpioDefined ( uint32_t  index)
protectedvirtual

§ gpioOpen()

bool BaseLib::Systems::IPhysicalInterface::gpioOpen ( uint32_t  index)
protectedvirtual

§ isDefault()

virtual bool BaseLib::Systems::IPhysicalInterface::isDefault ( )
inlinevirtual

§ isNetworkDevice()

virtual bool BaseLib::Systems::IPhysicalInterface::isNetworkDevice ( )
inlinevirtual

§ isOpen()

virtual bool BaseLib::Systems::IPhysicalInterface::isOpen ( )
inlinevirtual

§ lastPacketReceived()

virtual int64_t BaseLib::Systems::IPhysicalInterface::lastPacketReceived ( )
inlinevirtual

§ lastPacketSent()

virtual int64_t BaseLib::Systems::IPhysicalInterface::lastPacketSent ( )
inlinevirtual

§ lifetick()

bool BaseLib::Systems::IPhysicalInterface::lifetick ( )
virtual

§ openGPIO()

void BaseLib::Systems::IPhysicalInterface::openGPIO ( uint32_t  index,
bool  readOnly 
)
protectedvirtual

§ processQueueEntry()

void BaseLib::Systems::IPhysicalInterface::processQueueEntry ( int32_t  index,
std::shared_ptr< BaseLib::IQueueEntry > &  entry 
)
overrideprotected

§ raisePacketReceived()

void BaseLib::Systems::IPhysicalInterface::raisePacketReceived ( std::shared_ptr< Packet packet)
protectedvirtual

§ responseDelay()

virtual uint32_t BaseLib::Systems::IPhysicalInterface::responseDelay ( )
inlinevirtual

§ saveSettingToDatabase() [1/3]

void BaseLib::Systems::IPhysicalInterface::saveSettingToDatabase ( std::string  setting,
std::string &  value 
)
protectedvirtual

§ saveSettingToDatabase() [2/3]

void BaseLib::Systems::IPhysicalInterface::saveSettingToDatabase ( std::string  setting,
int32_t  value 
)
protectedvirtual

§ saveSettingToDatabase() [3/3]

void BaseLib::Systems::IPhysicalInterface::saveSettingToDatabase ( std::string  setting,
std::vector< char > &  value 
)
protectedvirtual

§ sendPacket()

virtual void BaseLib::Systems::IPhysicalInterface::sendPacket ( std::shared_ptr< Packet packet)
pure virtual

§ setDevicePermission()

void BaseLib::Systems::IPhysicalInterface::setDevicePermission ( int32_t  userID,
int32_t  groupID 
)
protectedvirtual

§ setGPIO()

void BaseLib::Systems::IPhysicalInterface::setGPIO ( uint32_t  index,
bool  value 
)
protectedvirtual

§ setGPIODirection()

bool BaseLib::Systems::IPhysicalInterface::setGPIODirection ( uint32_t  index,
GPIODirection::Enum  direction 
)
protectedvirtual

§ setGPIOEdge()

bool BaseLib::Systems::IPhysicalInterface::setGPIOEdge ( uint32_t  index,
GPIOEdge::Enum  edge 
)
protectedvirtual

§ setGPIOPermission()

void BaseLib::Systems::IPhysicalInterface::setGPIOPermission ( uint32_t  index,
int32_t  userID,
int32_t  groupID,
bool  readOnly 
)
protectedvirtual

§ setRawPacketEvent()

void BaseLib::Systems::IPhysicalInterface::setRawPacketEvent ( std::function< void(int32_t familyId, const std::string &interfaceId, const BaseLib::PVariable &packet)>  value)
inline

§ setup()

virtual void BaseLib::Systems::IPhysicalInterface::setup ( int32_t  userID,
int32_t  groupID,
bool  setPermissions 
)
inlinevirtual

§ startListening()

void BaseLib::Systems::IPhysicalInterface::startListening ( )
virtual

§ stopListening()

void BaseLib::Systems::IPhysicalInterface::stopListening ( )
virtual

Member Data Documentation

§ _bl

BaseLib::SharedObjects* BaseLib::Systems::IPhysicalInterface::_bl = nullptr
protected

§ _callbackThread

std::thread BaseLib::Systems::IPhysicalInterface::_callbackThread
protected

§ _familyId

int32_t BaseLib::Systems::IPhysicalInterface::_familyId = -1
protected

§ _fileDescriptor

std::shared_ptr<FileDescriptor> BaseLib::Systems::IPhysicalInterface::_fileDescriptor
protected

§ _gpioDescriptors

std::map<uint32_t, std::shared_ptr<FileDescriptor> > BaseLib::Systems::IPhysicalInterface::_gpioDescriptors
protected

§ _hostname

std::string BaseLib::Systems::IPhysicalInterface::_hostname
protected

§ _ipAddress

std::string BaseLib::Systems::IPhysicalInterface::_ipAddress
protected

§ _lastPacketReceived

std::atomic<int64_t> BaseLib::Systems::IPhysicalInterface::_lastPacketReceived {-1}
protected

§ _lastPacketSent

std::atomic<int64_t> BaseLib::Systems::IPhysicalInterface::_lastPacketSent {-1}
protected

§ _lifetickState

std::atomic_bool BaseLib::Systems::IPhysicalInterface::_lifetickState {true}
protected

§ _lifetickTime

std::atomic<int64_t> BaseLib::Systems::IPhysicalInterface::_lifetickTime {0}
protected

§ _listenThread

std::thread BaseLib::Systems::IPhysicalInterface::_listenThread
protected

§ _lockfile

std::string BaseLib::Systems::IPhysicalInterface::_lockfile
protected

§ _maxPacketProcessingTime

int64_t BaseLib::Systems::IPhysicalInterface::_maxPacketProcessingTime = 1000
protected

§ _myAddress

int32_t BaseLib::Systems::IPhysicalInterface::_myAddress = 0
protected

§ _rawPacketEvent

std::function<void(int32_t familyId, const std::string &interfaceId, const BaseLib::PVariable &packet)> BaseLib::Systems::IPhysicalInterface::_rawPacketEvent
protected

§ _sendMutex

std::mutex BaseLib::Systems::IPhysicalInterface::_sendMutex
protected

§ _settings

std::shared_ptr<PhysicalInterfaceSettings> BaseLib::Systems::IPhysicalInterface::_settings
protected

§ _stopCallbackThread

std::atomic_bool BaseLib::Systems::IPhysicalInterface::_stopCallbackThread {false}
protected

§ _stopped

std::atomic_bool BaseLib::Systems::IPhysicalInterface::_stopped
protected

§ _updateMode

std::atomic_bool BaseLib::Systems::IPhysicalInterface::_updateMode {false}
protected

The documentation for this class was generated from the following files: