Python API
 All Classes Namespaces Functions Variables
plux.BaseDev Class Reference

Base class for all PLUX devices. More...

Inheritance diagram for plux.BaseDev:
plux.SignalsDev plux.StimDev plux.MemoryDev

Public Member Functions

def __init__
 Connects to a PLUX device. More...
 
def getProperties
 Returns the device properties. More...
 
def getBattery
 Returns a float number with the remaining battery charge as a percentage of full capacity. More...
 
def setTimeout
 Sets the receiving timeout value for loop(). More...
 
def loop
 Runs the device message loop. More...
 
def interrupt
 Sends an interrupt signal to loop(). More...
 
def onEvent
 Event callback. More...
 
def onTimeout
 Timeout callback. More...
 
def onInterrupt
 Interrupt signal callback. More...
 
def close
 Disconnects from the device. More...
 

Static Public Member Functions

def findDevices
 Finds PLUX devices within the given domain. More...
 

Detailed Description

Base class for all PLUX devices.

This class provides the basic functionality common to all PLUX devices. A BaseDev device can be instantiated if a specific device functionality is not required. A BaseDev instance can be promoted afterwards to a derived class instance, based of device properties. This promotion is done by passing the BaseDev instance to the constructor of the derived class.

Alternatively, a derived class can be directly instantiated from the path string if a specific device functionality is required.

It is not possible to demote a derived class instance to a BaseDev instance.

Constructor & Destructor Documentation

def plux.BaseDev.__init__ (   self,
  path 
)

Connects to a PLUX device.

Parameters
pathA string with the path to the PLUX device. It can be a Classic Bluetooth MAC address ("xx:xx:xx:xx:xx:xx" or "BTHxx:xx:xx:xx:xx:xx"), a Bluetooth Low Energy MAC address ("BLExx:xx:xx:xx:xx:xx"), a serial port ("COMx") or an USB connection ("USB" or "USBx").
Remarks
The BLE interface is not available yet.

Member Function Documentation

def plux.BaseDev.close ( )

Disconnects from the device.

If the device is in real-time acquisition (through SignalsDev.start()), it is automatically stopped.

def plux.BaseDev.findDevices (   domain = '')
static

Finds PLUX devices within the given domain.

Parameters
domainAn optional string with the domain of search. It can be "BTH" for a Classic Bluetooth search, or "BLE" for a Bluetooth Low Energy search. If it is not given (or if it is an empty string), a search is attempted in both domains.
Returns
A tuple of strings pairs. Each string pair is also a tuple and it represents a found device. The first string of each pair is the path of the device (the path to be passed to the device class constructor). The second string is the device description as returned in its description property.
Remarks
The BLE interface is not available yet.
def plux.BaseDev.getBattery (   self)

Returns a float number with the remaining battery charge as a percentage of full capacity.

The returned value is -1 if the device is charging.

def plux.BaseDev.getProperties (   self)

Returns the device properties.

The device properties are a dictionary of string keywords to associated values. The currently defined keywords are:

Keyword Meaning
description Device description string
fwVersion Device firmware version
hwVersion Device hardware version (not present in old devices)
memorySize Device internal memory size in kBytes (only on MemoryDev instances)
(zero if internal memory is not available)
path Device path string as passed to constructor
productID Device product identifier

The fwVersion, hwVersion and productID properties are composed of two numbers (the major and minor numbers). These properties and are coded as 2-byte integers where the higher byte is the major number and the lower byte is the minor number.

def plux.BaseDev.interrupt (   self,
  param = None 
)

Sends an interrupt signal to loop().

This method can be called from a thread while loop() is running on another thread. The onInterrupt() callback will be called from loop() (in the context of its thread).

Parameters
paramAn optional parameter to be passed to onInterrupt() callback.
Remarks
This method cannot be called from a callback, and it cannot be called if loop() is not running in another thread.
def plux.BaseDev.loop (   self)

Runs the device message loop.

The message loop receives and dispatches the messages from the device to the callbacks. This method returns when a callback returns True.

Remarks
This method cannot be called from a callback.
def plux.BaseDev.onEvent (   self,
  event 
)

Event callback.

This callback is called by message loop when an event is received from the device. In order to receive device events, an application must derive BaseDev class (or any of its derived classes) to a new class and override this method in the new class.

Parameters
eventThe received event. It can be a DigInUpdate, Disconnect, SchedChange or Sync object.
Returns
Return True to exit message loop or False otherwise. Default callback returns False.
def plux.BaseDev.onInterrupt (   self,
  param 
)

Interrupt signal callback.

This callback is called by message loop after interrupt() is called from another thread. In order to receive interrupt signals, an application must derive BaseDev class (or any of its derived classes) to a new class and override this method in the new class.

Parameters
paramThe optional parameter passed to interrupt().
Returns
Return True to exit message loop or False otherwise. Default callback returns False.
def plux.BaseDev.onTimeout (   self)

Timeout callback.

This callback is called by message loop when a timeout condition occurred. In order to receive timeout conditions, an application must derive BaseDev class (or any of its derived classes) to a new class and override this method in the new class.

Returns
Return True to exit message loop or False otherwise. Default callback returns False.
See also
setTimeout()
def plux.BaseDev.setTimeout (   self,
  timeout = -1 
)

Sets the receiving timeout value for loop().

Parameters
timeoutAn optional integer with the timeout value in milliseconds. If timeout is 0, an immediate timeout condition occurs in loop() if there are no pending messages from device to dispatch. If timeout is not given or if it is -1, a timeout condition never occurs.
See also
onTimeout()