From e8928e328c4d9aa552207551314fcf304e8d8d3b Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Tue, 09 Aug 2011 20:15:08 +0000 Subject: accelerometer plugin for XO 1.75 hardware --- (limited to 'plugins/accelerometer') diff --git a/plugins/accelerometer/__init__.py b/plugins/accelerometer/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/plugins/accelerometer/__init__.py diff --git a/plugins/accelerometer/accelerometer.py b/plugins/accelerometer/accelerometer.py new file mode 100644 index 0000000..da3b1fa --- /dev/null +++ b/plugins/accelerometer/accelerometer.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python +#Copyright (c) 2011 Walter Bender +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import os + +from gettext import gettext as _ + +from plugins.plugin import Plugin + +from TurtleArt.tapalette import make_palette +from TurtleArt.taconstants import XO1, XO15 +from TurtleArt.talogo import primitive_dictionary +from TurtleArt.tautils import debug_output + +import logging +_logger = logging.getLogger('turtleart-activity accelerometer plugin') + + +class Accelerometer(Plugin): + + def __init__(self, parent): + self._parent = parent + if os.path.exists('/sys/devices/platform/lis3lv02d/position'): + self._status = True + else: + self._status = False + self.running_sugar = self._parent.running_sugar + + def setup(self): + # set up accelerometer specific blocks + palette = make_palette('sensor', + colors=["#FF6060", "#A06060"], + help_string=_('Palette of sensor blocks')) + + primitive_dictionary['xyz'] = self.prim_xyz + if self._status: + palette.add_block('xyz', + style='basic-style-extended-vertical', + label=_('acceleration'), + help_string=_('push accereration in x, y, z to heap'), + prim_name='xyz') + else: + palette.add_block('xyz', + style='basic-style-extended-vertical', + label=_('acceleration'), + help_string=_('push accereration in x, y, z to heap'), + hidden=True, + prim_name='xyz') + + self._parent.lc.def_prim( + 'xyz', 0, lambda self: primitive_dictionary['xyz']()) + + def _status_report(self): + debug_output('Reporting accelerator status: %s' % (str(self._status))) + return self._status + + # Block primitives used in talogo + + def prim_xyz(self): + ''' push accelerometer xyz to stack ''' + if not self._status: + self._parent.lc.heap.append(0) + self._parent.lc.heap.append(0) + self._parent.lc.heap.append(0) + else: + fh = open('/sys/devices/platform/lis3lv02d/position') + string = fh.read() + xyz = string[1:-2].split(',') + self._parent.lc.heap.append(int(xyz[2])) + self._parent.lc.heap.append(int(xyz[1])) + self._parent.lc.heap.append(int(xyz[0])) + fh.close() diff --git a/plugins/accelerometer/icons/sensoroff.svg b/plugins/accelerometer/icons/sensoroff.svg new file mode 100644 index 0000000..ec55f03 --- /dev/null +++ b/plugins/accelerometer/icons/sensoroff.svg @@ -0,0 +1,41 @@ + + + +image/svg+xml + + + + + \ No newline at end of file diff --git a/plugins/accelerometer/icons/sensoron.svg b/plugins/accelerometer/icons/sensoron.svg new file mode 100644 index 0000000..e902656 --- /dev/null +++ b/plugins/accelerometer/icons/sensoron.svg @@ -0,0 +1,41 @@ + + + +image/svg+xml + + + + + \ No newline at end of file -- cgit v0.9.1