Author: jerome
Date: 2009-12-13 13:22:25 +0100 (Sun, 13 Dec 2009)
New Revision: 5971

Modified:
   
software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/plugin-skype.py
Log:
* Getting incoming calls.

Modified: 
software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/plugin-skype.py
===================================================================
--- 
software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/plugin-skype.py
   2009-12-13 12:19:10 UTC (rev 5970)
+++ 
software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/plugin-skype.py
   2009-12-13 12:22:25 UTC (rev 5971)
@@ -79,12 +79,18 @@
     '''
     #plugin uuid
     uuid = "8349ed52-572d-4c3f-a7b8-f6d4a5ae2c0"
+    
     port = 270
     #Skype client - api objects.
     synchronious  = None
     asynchronious = None
     connectorObj  = None
     
+    #Used for run command only.
+    ready = False
+    command = ""
+    canrun  = True
+    
     ##----------------------------------------------------------------
     ## * Skype plugin main entry point.
     ##----------------------------------------------------------------
@@ -99,78 +105,62 @@
         #Check for the command.
         if self.getCommand() == "runDaemon":
             self.runDaemon()
-        elif self.getCommand() == "incomingCall":
-            self.incomingCall()
-        elif self.getCommand() == "outgoingCall":
-            self.outgoingCall()
-        elif self.getCommand() == "endCall":
-            self.endCall()
+        elif self.getCommand() == "run":
+            self.run()
         else:
             self.runDaemon()
     
     ##----------------------------------------------------------------
-    ## * PLUGIN COMMAND : Set Tux Droid for an incoming call.
+    ## * PLUGIN COMMAND : Set Tux Droid for a call.
     ##----------------------------------------------------------------
-    def incomingCall(self):
+    def run(self):
         '''
         Initialize Tux Droid switches for a call ( incoming or outgoing )
         '''
-        self.initializeCommandsClient()
+        self.client = IPNClient('127.0.0.1', 48536)
+        self.client.registerOnNotificationCallBack(self.ClientOnNotification)
+        self.client.registerOnConnectedCallBack(self.ClientOnConnected)
+        self.client.start()
         
-        #Run main loop.
-        thread = threading.Thread(target=self.mainloop)
-        thread.start()
     
     
     def incomingPluginEvent(self, eventName, eventValues):
         '''
         Tux Droid plugin event callback.
         '''
-        try:
-            #Check for IPN client started.
-            if not self.client.start():
-                return
+        if not self.ready:
+            return
+        
+        if self.command == 'incoming':
             #Accept call
             if eventName   == 'head':
                 self.client.notify('accept_call')
             #Reject Call          
             elif eventName in ['left', 'right']:
                 self.client.notify('reject_call')
-        finally:
-            #Quit plugin
-        
-    
-    
-    ##----------------------------------------------------------------
-    ## * PLUGIN COMMAND : Set Tux Droid for an incoming call.
-    ##----------------------------------------------------------------
-    def outgoingCall(self):
+                #Quit run mode plugin. 
+                self.stop()
+            
+         
+    def ClientOnNotification(self, Message):
         '''
-        Initialize Tux Droid for an outgoing call.
+        Recieved a message from server.
         '''
-        self.initializeCommandsClient()
+        if Message == 'command>incoming':
+            self.throwNotification("start")
+            self.throwActuation("upFlippers")
+            self.throwActuation("openMouth")
+            self.throwNotification("stop")
+            self.ready = True
+            self.command = 'incoming'
+        
     
-    
-    ##----------------------------------------------------------------
-    ## * PLUGIN COMMAND : Finish an incoming / outgoing call
-    ##----------------------------------------------------------------
-    def endCall(self):
+    def ClientOnConnected(self, id):
         '''
-        End an incoming or outgoing call.
         '''
-        self.client.notify('finish_call')
-    
-    
-    def initializeCommandsClient(self):
-        '''
-        Initialize the commands sender ( client / server ).
-        '''
-        self.client = IPNClient('127.0.0.1', 48536)
-        self.client.registerOnNotificationCallBack(self.ClientOnNotification)
-        self.client.registerOnConnectedCallBack(self.ClientOnConnected)
-        self.client.registerOnDisconnectedCallBack(self.ClientOnDisconnected)
-        self.client.start()
+        pass
         
+    
     ##----------------------------------------------------------------
     ##  * DAEMON command and functions.
     ##----------------------------------------------------------------
@@ -252,20 +242,29 @@
         Incoming call event.
         '''
         #Set up Tux Droid motors.
-        self.throwActuation("upFlippers")
-        self.throwActuation("openMouth")
-        
-        #Starting the plugin with 'incomingCall' command.
-        command = 'incomingCall'
+        thread = threading.Thread(target=self.startRunMode)
+        thread.start()
+    
+    
+    
+    def startRunMode(self):
+        '''
+        Starting the plugin with 'incomingCall' command.
+        '''
+        command = 'run'
         request = '/plugins_server/start_plugin?command='+ command + '&uuid='+ 
self.uuid +'&parameters='
-        
         TuxDroidServerUtils.sendRequest("127.0.0.1", self.port, request)
+        self.command = 'incoming'
     
     
     def OnIncomingFinished(self, contactHandle):
         '''
         '''
-        pass
+        #Set up Tux Droid motors.
+        self.throwNotification("start")
+        self.throwActuation("downFlippers")
+        self.throwActuation("closeMouth")
+        self.throwNotification("stop")
        
         
     
@@ -318,7 +317,6 @@
         pass
     
     
-    
     def mainloop(self):
         '''
         Run main loop.
@@ -327,8 +325,6 @@
             time.sleep(2.0)
             #Setting Tux Droid as audio peripheral.
             try:
-                #Starting server that will listen to requests.
-                self.serv.start()
                 #in try statement to take calls in care.
                 if ( self.synchronious != None ) and ( not 
self.synchronious.isTuxDroidAudioCard() ):
                     self.synchronious.setAudioCards()
@@ -346,6 +342,7 @@
         '''
         if self.connectorObj != None:
             if self.getCommand() == 'outgoingCall':
+                #TODO update this function.
                 self.connectorObj.stop(KillClient=True)
             else:
                 #In other cases, close connection but not skype client.
@@ -360,19 +357,18 @@
         @param eventValues: Event values.
         '''
         #Start the adequate function for each plugin command.
-        if self.getCommand() == 'incomingCall':
+        if self.getCommand() == 'run':
             self.incomingPluginEvent(eventName, eventValues)
-        else:
-            pass
+        
+        
      
-     
     ##----------------------------------------------------------------
     ##  * DAEMON Client / Server IPN Communication.
     ##----------------------------------------------------------------
     def ServerOnClientAdded(self, idClient):
         '''
         '''
-        pass
+        self.serv.notify( "command>" + self.command )
         
     
     def ServerOnClientRemoved(self, idClient):
@@ -384,26 +380,14 @@
     def ServerOnClientNotification(self, idClient, Message):
         '''
         '''
-        pass
-    
-    
-    def ClientOnNotification(self, Message):
-        '''
-        '''
-        pass
+        if Message == 'accept_call':
+            if self.asynchronious.call != None:
+                #Take call
+                self.synchronious.acceptCall(self.asynchronious.call)
+        elif Message == 'reject_call' :
+             #Reject call.
+             self.synchronious.rejectCall()
         
-    
-    def ClientOnConnected(self, id):
-        '''
-        '''
-        pass
-        
-        
-    def ClientOnDisconnected(self):
-        '''
-        '''
-        pass
-        
 
 if __name__ == "__main__":
     plugin = SkypePlugin()


------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
Tux-droid-svn mailing list
Tux-droid-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to