@@ -19,18 +19,35 @@ def __init__(self):
1919 self ._name = 'BaseStimulation'
2020 self ._parameter_dict = dict (TYPE = 'str' ,
2121 PORT = 'str' ,
22+ IP = 'str' ,
2223 STIM_TIME = 'float' )
2324 self ._settings_dict = get_stimulation_settings (self ._name , self ._parameter_dict )
2425 self ._running = False
25- self ._stim_device = self ._setup_device (self ._settings_dict ['TYPE' ], self ._settings_dict ['PORT' ])
26+ self ._stim_device = self ._setup_device (self ._settings_dict ['TYPE' ], self ._settings_dict ['PORT' ], self . _settings_dict [ 'IP' ] )
2627
2728 @staticmethod
28- def _setup_device (type , port ):
29+ def _setup_device (type , port , ip ):
2930 device = None
3031 if type == 'NI' :
3132 from experiments .utils .DAQ_output import DigitalModDevice
3233 device = DigitalModDevice (port )
3334
35+ if type == 'RASPBERRY' :
36+ from experiments .utils .gpio_control import DigitalPiDevice
37+ device = DigitalPiDevice (port )
38+
39+ if type == 'RASP_NETWORK' :
40+ from experiments .utils .gpio_control import DigitalPiDevice
41+ if ip is not None :
42+ device = DigitalPiDevice (port , ip )
43+ else :
44+ raise ValueError ('IP required for remote GPIO control.' )
45+
46+ if type == 'ARDUINO' :
47+ from experiments .utils .gpio_control import DigitalArduinoDevice
48+ device = DigitalArduinoDevice (port )
49+
50+
3451 return device
3552
3653 def stimulate (self ):
@@ -72,23 +89,38 @@ class RewardDispenser(BaseStimulation):
7289 def __init__ (self ):
7390 self ._name = 'RewardDispenser'
7491 self ._parameter_dict = dict (TYPE = 'str' ,
92+ IP = 'str' ,
7593 STIM_PORT = 'str' ,
7694 REMOVAL_PORT = 'str' ,
7795 STIM_TIME = 'float' ,
7896 REMOVAL_TIME = 'float' )
7997 self ._settings_dict = get_stimulation_settings (self ._name , self ._parameter_dict )
8098 self ._running = False
81- self ._stim_device = self ._setup_device (self ._settings_dict ['TYPE' ], self ._settings_dict ['STIM_PORT' ])
82- self ._removal_device = self ._setup_device (self ._settings_dict ['TYPE' ], self ._settings_dict ['REMOVAL_PORT' ])
99+ self ._stim_device = self ._setup_device (self ._settings_dict ['TYPE' ], self ._settings_dict ['STIM_PORT' ],
100+ self ._settings_dict ['IP' ])
101+ self ._removal_device = self ._setup_device (self ._settings_dict ['TYPE' ], self ._settings_dict ['REMOVAL_PORT' ],
102+ self ._settings_dict ['IP' ])
83103
84104
85105 @staticmethod
86- def _setup_device (type , port ):
106+ def _setup_device (type , port , ip ):
87107 device = None
88108 if type == 'NI' :
89109 from experiments .utils .DAQ_output import DigitalModDevice
90110 device = DigitalModDevice (port )
91111
112+ if type == 'RASPBERRY' :
113+ from experiments .utils .gpio_control import DigitialPiBoardDevice
114+ device = DigitialPiBoardDevice (port )
115+
116+ if type == 'RASP_NETWORK' :
117+ from experiments .utils .gpio_control import DigitialPiBoardDevice
118+ if ip is not None :
119+ device = DigitialPiBoardDevice (port , ip )
120+ else :
121+ raise ValueError ('IP required for remote GPIO control.' )
122+
123+
92124 return device
93125
94126 def stimulate (self ):
0 commit comments