diff --git a/README.md b/README.md index e53ddbc..c47c66e 100644 --- a/README.md +++ b/README.md @@ -299,9 +299,9 @@ Note: type `/start` to launch the selected plugins. Add new functionalities to user.py by creating new scripts inside the `plugins` folder. You class must inherit from yapsy.IPlugin, see below a minimal example with `print` plugin: ```python -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended -class PluginPrint(plugintypes.IPluginExtended): +class PluginPrint(IPluginExtended): def activate(self): print("Print activated") diff --git a/openbci/plugins/csv_collect.py b/openbci/plugins/csv_collect.py index 9829213..0ad5992 100755 --- a/openbci/plugins/csv_collect.py +++ b/openbci/plugins/csv_collect.py @@ -3,10 +3,10 @@ import timeit import datetime -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended -class PluginCSVCollect(plugintypes.IPluginExtended): +class PluginCSVCollect(IPluginExtended): def __init__(self, file_name="collect.csv", delim=",", verbose=False): now = datetime.datetime.now() self.time_stamp = '%d-%d-%d_%d-%d-%d' \ diff --git a/openbci/plugins/noise_test.py b/openbci/plugins/noise_test.py index 120dc57..00fd59f 100755 --- a/openbci/plugins/noise_test.py +++ b/openbci/plugins/noise_test.py @@ -1,10 +1,10 @@ from __future__ import print_function import timeit import numpy as np -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended -class PluginNoiseTest(plugintypes.IPluginExtended): +class PluginNoiseTest(IPluginExtended): # update counters value def __call__(self, sample): # keep tract of absolute value of diff --git a/plugin_interface.py b/openbci/plugins/plugin_interface.py old mode 100755 new mode 100644 similarity index 94% rename from plugin_interface.py rename to openbci/plugins/plugin_interface.py index 70550fe..8e59095 --- a/plugin_interface.py +++ b/openbci/plugins/plugin_interface.py @@ -1,6 +1,5 @@ """ Extends Yapsy IPlugin interface to pass information about the board to plugins. - Fields of interest for plugins: args: list of arguments passed to the plugins sample_rate: actual sample rate of the board @@ -8,12 +7,9 @@ aux_channels: number of AUX channels If needed, plugins that need to report an error can set self.is_activated to False during activate() call. - NB: because of how yapsy discovery system works, plugins must use the following syntax to inherit to use polymorphism (see http://yapsy.sourceforge.net/Advices.html): - - import plugin_interface as plugintypes - - class PluginExample(plugintypes.IPluginExtended): + from .plugin_interface import IPluginExtended + class PluginExample(IPluginExtended): ... """ diff --git a/openbci/plugins/print.py b/openbci/plugins/print.py index 32c5ce0..020045a 100755 --- a/openbci/plugins/print.py +++ b/openbci/plugins/print.py @@ -1,8 +1,8 @@ from __future__ import print_function -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended -class PluginPrint(plugintypes.IPluginExtended): +class PluginPrint(IPluginExtended): def activate(self): print("Print activated") diff --git a/openbci/plugins/sample_rate.py b/openbci/plugins/sample_rate.py index d4e9dc3..834a848 100755 --- a/openbci/plugins/sample_rate.py +++ b/openbci/plugins/sample_rate.py @@ -3,7 +3,7 @@ import timeit from threading import Thread -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended # counter for sampling rate nb_samples_out = -1 @@ -36,7 +36,7 @@ def run(self): time.sleep(self.polling_interval) -class PluginSampleRate(plugintypes.IPluginExtended): +class PluginSampleRate(IPluginExtended): # update counters value def __call__(self, sample): global nb_samples_out diff --git a/openbci/plugins/streamer_lsl.py b/openbci/plugins/streamer_lsl.py index 0c4e2dd..ea6f922 100755 --- a/openbci/plugins/streamer_lsl.py +++ b/openbci/plugins/streamer_lsl.py @@ -2,7 +2,7 @@ # Eg: ftp://sccn.ucsd.edu/pub/software/LSL/SDK/liblsl-Python-1.10.2.zip # put in "lib" folder (same level as user.py) from __future__ import print_function -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended from pylsl import StreamInfo, StreamOutlet import sys @@ -13,7 +13,7 @@ # Use LSL protocol to broadcast data using one stream for EEG, # one stream for AUX, one last for impedance testing # (on supported board, if enabled) -class StreamerLSL(plugintypes.IPluginExtended): +class StreamerLSL(IPluginExtended): # From IPlugin def activate(self): eeg_stream = "OpenBCI_EEG" diff --git a/openbci/plugins/streamer_osc.py b/openbci/plugins/streamer_osc.py index 828cd57..b02a901 100755 --- a/openbci/plugins/streamer_osc.py +++ b/openbci/plugins/streamer_osc.py @@ -2,13 +2,13 @@ # requires python-osc from pythonosc import osc_message_builder from pythonosc import udp_client -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended # Use OSC protocol to broadcast data (UDP layer), using "/openbci" stream. # (NB. does not check numbers of channel as TCP server) -class StreamerOSC(plugintypes.IPluginExtended): +class StreamerOSC(IPluginExtended): """ Relay OpenBCI values to OSC clients diff --git a/openbci/plugins/streamer_tcp_server.py b/openbci/plugins/streamer_tcp_server.py index 077504f..d021bb8 100755 --- a/openbci/plugins/streamer_tcp_server.py +++ b/openbci/plugins/streamer_tcp_server.py @@ -4,7 +4,7 @@ import select import struct import time -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended # Simple TCP server to "broadcast" data to clients, handling deconnections. @@ -34,7 +34,7 @@ def run(self): time.sleep(1) -class StreamerTCPServer(plugintypes.IPluginExtended): +class StreamerTCPServer(IPluginExtended): """ Relay OpenBCI values to TCP clients diff --git a/openbci/plugins/udp_server.py b/openbci/plugins/udp_server.py index 833bbc4..9153567 100755 --- a/openbci/plugins/udp_server.py +++ b/openbci/plugins/udp_server.py @@ -15,7 +15,7 @@ import json import socket -import plugin_interface as plugintypes +from .plugin_interface import IPluginExtended # class PluginPrint(IPlugin): @@ -48,7 +48,7 @@ # # print(sample_string) -class UDPServer(plugintypes.IPluginExtended): +class UDPServer(IPluginExtended): def __init__(self, ip='localhost', port=8888): self.ip = ip self.port = port