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&reg; 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&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to