Author: Gwadavel
Date: 2009-09-21 01:07:36 +0200 (Mon, 21 Sep 2009)
New Revision: 5451
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py
software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po
software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki
software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po
software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki
software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot
software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml
Log:
Rewrite plugin - add run daemon, Tux alerts you when charger state had changed
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py
===================================================================
---
software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py
2009-09-19 23:49:27 UTC (rev 5450)
+++
software_suite_v3/software/plugin/plugin-charger/trunk/executables/plugin-charger.py
2009-09-20 23:07:36 UTC (rev 5451)
@@ -28,9 +28,9 @@
"""
import os
+import time
import sys
-import locale
-import gettext
+import threading
from tuxisalive.api import *
@@ -38,110 +38,148 @@
from util.SimplePlugin.SimplePluginConfiguration import
SimplePluginConfiguration
from util.SimplePlugin.SimplePlugin import SimplePlugin
+
-class Charger(object):
+
+
+
+class ChargerPlugin(SimplePlugin):
+ """This class override the SimplePlugin class to make easy
+ the plugin coding.
"""
- Manage the battery.
- """
-
- def __init__(self, plug):
- '''
- '''
- self.tgp_language = "en"
- self.tgp_ip = "127.0.0.1"
- self.tgp_port = 270
+ def __init__(self):
+ """Initialization of the class.
+ """
+ # Call the super class
+ SimplePlugin.__init__(self)
- self.plugin = plug
+ self.__tgp_ip = "127.0.0.1"
+ self.__tgp_port = 270
+ self.__daemonRun = False
+ self.__daemonRunMutex = threading.Lock()
- # Test language, ip, port
- if "tgp_language" in os.environ:
- self.tgp_language = os.environ["tgp_language"]
-
+ # Test ip, port
if "tgp_ip" in os.environ:
- self.tgp_ip = os.environ["tgp_ip"]
+ self.__tgp_ip = os.environ["tgp_ip"]
if "tgp_port" in os.environ:
- self.tgp_port = int(os.environ["tgp_port"])
+ self.__tgp_port = int(os.environ["tgp_port"])
- self.tux = TuxAPI(self.tgp_ip, self.tgp_port)
- if self.tux.server.connect(CLIENT_LEVEL_RESTRICTED, 'chargerstate',
'plugin-charger'):
- self.tux.server.disconnect()
+ self.__tux = TuxAPI(self.__tgp_ip, self.__tgp_port)
+ if self.__tux.server.connect(CLIENT_LEVEL_RESTRICTED, 'chargerstate',
'plugin-charger'):
+ self.__tux.server.disconnect()
else:
- self.tgp_port = 54321
- self.tux = TuxAPI(self.tgp_ip, self.tgp_port)
-
+ self.__tgp_port = 54321
+ self.__tux = TuxAPI(self.__tgp_ip, self.__tgp_port)
+
- def tuxConnect(self):
+ def start(self):
+ """Plugin entry point.
+ This method should be used to dispatch commands.
+ """
+ if self.getCommand() == "run":
+ self.run()
+ elif self.getCommand() == "run_daemon":
+ self.run_daemon()
+ else:
+ self.run()
+
+
+ def run(self):
+ """Plugin entry point for the "run" command.
+ """
+ self.__start()
+
+ def run_daemon(self):
+ """Plugin entry point for the "run_daemon" command.
+ """
+ if self.__tuxConnect():
+ if not self.__tux.radio.getConnected():
+ self.throwTrace("I can't find my fish. Please, make sure I'm
connected.")
+ else:
+ self.__setDaemonRun(True)
+ self.__register()
+ self.__loop()
+
+ def onPluginStop(self):
+ """Callback on plugin stop.
+ """
+ self.__setDaemonRun(False)
+ self.__stop()
+
+ def onPluginEvent(self, eventName, eventValues):
+ """Callback on plugin event.
+ @param eventName: Event name.
+ @param eventValues: Event values.
+ """
+ pass
+
+ def __tuxConnect(self):
'''
Wait connected
'''
- self.tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'chargerstate',
'plugin-charger')
- self.tux.server.waitConnected(5.0)
- self.tux.dongle.waitConnected(5.0)
- self.tux.radio.waitConnected(5.0)
- return self.tux.access.waitAcquire(5.0, ACCESS_PRIORITY_NORMAL)
+ self.__tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'chargerstate',
'plugin-charger')
+ self.__tux.server.waitConnected(5.0)
+ self.__tux.dongle.waitConnected(5.0)
+ self.__tux.radio.waitConnected(5.0)
+ return self.__tux.access.waitAcquire(5.0, ACCESS_PRIORITY_NORMAL)
-
- def getState(self):
+ def __getState(self):
"""
Return Charger State
"""
- return self.tux.charger.getState()
+ return self.__tux.charger.getState()
-
- def start(self):
+ def __start(self):
"""
"""
- if self.tuxConnect():
+ if self.__tuxConnect():
- if not self.tux.radio.getConnected():
- plugin.throwTrace("I can't find my fish. Please, make sure I'm
connected.")
+ if not self.__tux.radio.getConnected():
+ self.throwTrace("I can't find my fish. Please, make sure I'm
connected.")
else:
- plugin.throwMessage("The charger state is {0}",
self.getState())
+ self.throwMessage("charger state is {0}", self.__getState())
-
- def stop(self):
+ def __stop(self):
"""
"""
- self.tux.access.release()
- self.tux.server.disconnect()
- self.tux.destroy()
-
+ self.__tux.access.release()
+ self.__tux.server.disconnect()
+ self.__tux.destroy()
-class ChargerPlugin(SimplePlugin):
- """This class override the SimplePlugin class to make easy
- the plugin coding.
- """
- def __init__(self):
- """Initialization of the class.
+ def __register(self):
+ """Register event
"""
- # Call the super class
- SimplePlugin.__init__(self)
- self.scharger = Charger(self)
-
+ self.__tux.charger.registerEventOnStateChange(self.__change)
- def start(self):
- """Plugin entry point.
- This method should be used to dispatch commands.
+ def __change(self, *args, **kwargs):
+ """Said charger state when state change
"""
- self.run()
+ self.throwNotification("start")
+ self.throwMessage("charger state has changed")
+ self.throwMessage("the new state is {0}", self.__getState())
+ self.throwNotification("stop")
- def run(self):
- """Plugin entry point for the "run" command.
+ def __getDaemonRun(self):
"""
- self.scharger.start()
+ """
+ self.__daemonRunMutex.acquire()
+ result = self.__daemonRun
+ self.__daemonRunMutex.release()
+ return result
- def onPluginStop(self):
- """Callback on plugin stop.
+ def __setDaemonRun(self, daemonRun):
"""
- self.scharger.stop()
+ """
+ self.__daemonRunMutex.acquire()
+ self.__daemonRun = daemonRun
+ self.__daemonRunMutex.release()
- def onPluginEvent(self, eventName, eventValues):
- """Callback on plugin event.
- @param eventName: Event name.
- @param eventValues: Event values.
+ def __loop(self):
"""
- pass
+ """
+ while self.__getDaemonRun():
+ time.sleep(0.25)
if __name__ == "__main__":
plugin = ChargerPlugin()
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po
2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.po
2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,10 +1,10 @@
msgid "Charger State"
msgstr "Charger State"
-msgid "Says charger state"
-msgstr "Says charger state"
+msgid "Said charger state"
+msgstr "Said charger state"
-msgid "The charger state is {0}"
+msgid "charger state is {0}"
msgstr "The charger state is {0}"
msgid "CHARGING"
@@ -21,3 +21,18 @@
msgid "UNPLUGGED"
msgstr "UNPLUGGED"
+
+msgid "Said when charger state change"
+msgstr "Said when charger state change"
+
+msgid "Activate the charger notifier"
+msgstr "Activate the charger notifier"
+
+msgid "Activation"
+msgstr "Activation"
+
+msgid "charger state has changed"
+msgstr "charger state has changed"
+
+msgid "the new state is {0}"
+msgstr "the new state is {0}"
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki
2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/en.wiki
2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,2 +1,2 @@
== Synopsis ==
-Tux Droid says the charger state
+Tux Droid said the charger state
Modified: software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po
2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/fr.po
2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,10 +1,10 @@
msgid "Charger State"
msgstr "état du chargeur"
-msgid "Says charger state"
+msgid "Said charger state"
msgstr "dit l'état du chargeur"
-msgid "The charger state is {0}"
+msgid "charger state is {0}"
msgstr "l'état du chargeur est {0}"
msgid "CHARGING"
@@ -21,3 +21,18 @@
msgid "UNPLUGGED"
msgstr "débranché"
+
+msgid "Said when charger state change"
+msgstr "Dit quand l'état du chargeur a changé"
+
+msgid "Activate the charger notifier"
+msgstr "Active le suivi d'état du chargeur"
+
+msgid "Activation"
+msgstr "Activation"
+
+msgid "charger state has changed"
+msgstr "l'état du chargeur a changé"
+
+msgid "the new state is {0}"
+msgstr "le nouvel état est {0}"
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki
2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/help.wiki
2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,2 +1,2 @@
== Synopsis ==
-Tux Droid says the charger state.
+Tux Droid said the charger state.
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot
2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.pot
2009-09-20 23:07:36 UTC (rev 5451)
@@ -1,10 +1,10 @@
msgid "Charger State"
msgstr ""
-msgid "Says charger state"
+msgid "Said charger state"
msgstr ""
-msgid "The charger state is {0}"
+msgid "charger state is {0}"
msgstr ""
msgid "CHARGING"
@@ -21,3 +21,18 @@
msgid "UNPLUGGED"
msgstr ""
+
+msgid "Said when charger state change"
+msgstr ""
+
+msgid "Activate the charger notifier"
+msgstr ""
+
+msgid "Activation"
+msgstr ""
+
+msgid "charger state has changed"
+msgstr ""
+
+msgid "the new state is {0}"
+msgstr ""
Modified:
software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml
===================================================================
--- software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml
2009-09-19 23:49:27 UTC (rev 5450)
+++ software_suite_v3/software/plugin/plugin-charger/trunk/resources/plugin.xml
2009-09-20 23:07:36 UTC (rev 5451)
@@ -6,7 +6,7 @@
<description>
<name>Charger State</name>
<ttsName>Charger State</ttsName>
- <description>Says charger state</description>
+ <description>Said charger state</description>
<author>Gwadavel</author>
<version>0.0.1</version>
<iconFile>resources/plugin.png</iconFile>
@@ -17,9 +17,24 @@
<commands>
<command
name="run"
- description="Says charger state"
+ description="Said charger state"
daemon="false" />
+ <command
+ name="run_daemon"
+ description="Said when charger state change"
+ daemon="true"
+ notifier="true"
+ expiration="1"/>
</commands>
- <tasks>
+ <tasks>
+ <task
+ name="Activation"
+ description="Activate the charger notifier"
+ command="run_daemon"
+ type="once delayed"
+ activated="false"
+ delay="00:00:05"
+ delayMask="false,false,false"
+ delayVisible="false"/>
</tasks>
</plugin>
------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn