Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorWalter Bender <walter@sugarlabs.org>2014-04-08 14:43:57 (GMT)
committer Walter Bender <walter@sugarlabs.org>2014-04-08 14:43:57 (GMT)
commit9664cafa63e538cb94c0715239f7faf6d581ba1a (patch)
treed5349e9c67e0352b0d3241e59f1106e8e3baf75c /plugins
parentf9fe401c28c6c6fdc553a6e80b5b2b4a3ac05e2e (diff)
bypass plugin start in order to accommodate exported Python code
Diffstat (limited to 'plugins')
-rw-r--r--plugins/audio_sensors/audio_sensors.py98
1 files changed, 72 insertions, 26 deletions
diff --git a/plugins/audio_sensors/audio_sensors.py b/plugins/audio_sensors/audio_sensors.py
index 437f313..32a56bd 100644
--- a/plugins/audio_sensors/audio_sensors.py
+++ b/plugins/audio_sensors/audio_sensors.py
@@ -60,6 +60,9 @@ class Audio_sensors(Plugin):
Plugin.__init__(self)
self._parent = parent
self.audio_started = False
+ self._sound_init = False
+ self._resistance_init = False
+ self._voltage_init = False
self._status = True # TODO: test for audio device
# These flags are referenced by audiograb
self.hw = self._parent.hw
@@ -230,6 +233,10 @@ class Audio_sensors(Plugin):
if not self._status:
return
+ self._sound_init = False
+ self._resistance_init = False
+ self._voltage_init = False
+
self._sound = [0, 0]
self._volume = [0, 0]
self._pitch = [0, 0]
@@ -239,32 +246,6 @@ class Audio_sensors(Plugin):
if self.audio_started:
self.audiograb.stop_grabbing()
- volume_blocks = len(self._parent.block_list.get_similar_blocks(
- 'block', ['volume', 'sound', 'pitch']))
- resistance_blocks = len(self._parent.block_list.get_similar_blocks(
- 'block', ['resistance', 'resistance2']))
- voltage_blocks = len(self._parent.block_list.get_similar_blocks(
- 'block', ['voltage', 'voltage2']))
- # FIXME: assume Python code is using a volume block
- if not self._parent.running_turtleart or volume_blocks > 0:
- mode, bias, gain, boost = self.PARAMETERS[SENSOR_AC_BIAS]
- elif resistance_blocks > 0:
- mode, bias, gain, boost = self.PARAMETERS[SENSOR_DC_BIAS]
- elif voltage_blocks > 0:
- mode, bias, gain, boost = self.PARAMETERS[SENSOR_DC_NO_BIAS]
- else:
- return # No audio blocks in use.
-
- self.audiograb = AudioGrab(self.new_buffer, self,
- mode, bias, gain, boost)
- self._channels = self.audiograb.channels
- for i in range(self._channels):
- self.ringbuffer.append(RingBuffer1d(self.max_samples,
- dtype='int16'))
-
- self.audiograb.start_grabbing()
- self.audio_started = True
-
def new_buffer(self, buf, channel=0):
''' Append a new buffer to the ringbuffer '''
self.ringbuffer[channel].append(buf)
@@ -300,6 +281,19 @@ class Audio_sensors(Plugin):
def prim_sound(self, channel=0):
if not self._status:
return 0
+
+ if not self._sound_init:
+ mode, bias, gain, boost = self.PARAMETERS[SENSOR_AC_BIAS]
+ self.audiograb = AudioGrab(self.new_buffer, self,
+ mode, bias, gain, boost)
+ self._channels = self.audiograb.channels
+ for i in range(self._channels):
+ self.ringbuffer.append(RingBuffer1d(self.max_samples,
+ dtype='int16'))
+ self.audiograb.start_grabbing()
+ self.audio_started = True
+ self._sound_init = True
+
self._prim_sound(0)
# Return average of both channels if sampling in stereo
if self._channels == 2:
@@ -323,6 +317,19 @@ class Audio_sensors(Plugin):
def prim_volume(self, channel=0):
if not self._status:
return 0
+
+ if not self._sound_init:
+ mode, bias, gain, boost = self.PARAMETERS[SENSOR_AC_BIAS]
+ self.audiograb = AudioGrab(self.new_buffer, self,
+ mode, bias, gain, boost)
+ self._channels = self.audiograb.channels
+ for i in range(self._channels):
+ self.ringbuffer.append(RingBuffer1d(self.max_samples,
+ dtype='int16'))
+ self.audiograb.start_grabbing()
+ self.audio_started = True
+ self._sound_init = True
+
self._prim_volume(0)
# Return average of both channels if sampling in stereo
if self._channels == 2:
@@ -346,6 +353,19 @@ class Audio_sensors(Plugin):
def prim_pitch(self, channel=0):
if not self._status:
return 0
+
+ if not self._sound_init:
+ mode, bias, gain, boost = self.PARAMETERS[SENSOR_AC_BIAS]
+ self.audiograb = AudioGrab(self.new_buffer, self,
+ mode, bias, gain, boost)
+ self._channels = self.audiograb.channels
+ for i in range(self._channels):
+ self.ringbuffer.append(RingBuffer1d(self.max_samples,
+ dtype='int16'))
+ self.audiograb.start_grabbing()
+ self.audio_started = True
+ self._sound_init = True
+
self._prim_pitch(0)
# Return average of both channels if sampling in stereo
if self._channels == 2:
@@ -378,6 +398,19 @@ class Audio_sensors(Plugin):
def prim_resistance(self, channel=0):
if not self.hw in [XO1, XO15, XO175, XO30, XO4] or not self._status:
return 0
+
+ if not self._resistance_init:
+ mode, bias, gain, boost = self.PARAMETERS[SENSOR_DC_BIAS]
+ self.audiograb = AudioGrab(self.new_buffer, self,
+ mode, bias, gain, boost)
+ self._channels = self.audiograb.channels
+ for i in range(self._channels):
+ self.ringbuffer.append(RingBuffer1d(self.max_samples,
+ dtype='int16'))
+ self.audiograb.start_grabbing()
+ self.audio_started = True
+ self._resistance_init = True
+
if self.hw in [XO1, XO4]:
self._prim_resistance(0)
return self._resistance[0]
@@ -441,6 +474,19 @@ class Audio_sensors(Plugin):
def prim_voltage(self, channel=0):
if not self.hw in [XO1, XO15, XO175, XO30, XO4] or not self._status:
return 0
+
+ if not self._voltage_init:
+ mode, bias, gain, boost = self.PARAMETERS[SENSOR_DC_NO_BIAS]
+ self.audiograb = AudioGrab(self.new_buffer, self,
+ mode, bias, gain, boost)
+ self._channels = self.audiograb.channels
+ for i in range(self._channels):
+ self.ringbuffer.append(RingBuffer1d(self.max_samples,
+ dtype='int16'))
+ self.audiograb.start_grabbing()
+ self.audio_started = True
+ self._voltage_init = True
+
if self.hw in [XO1, XO4]:
self._prim_voltage(0)
return self._voltage[0]