[tuxdroid-svn] r5964 - software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/execut
Status: Beta
Brought to you by:
ks156
|
From: jerome <c2m...@c2...> - 2009-12-09 13:00:15
|
Author: jerome
Date: 2009-12-09 14:00:01 +0100 (Wed, 09 Dec 2009)
New Revision: 5964
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/utils.py
Log:
* Added some functionalities
* Removed 'self' keyword for two static methods
* Start to implement IPN service.
* Added different commands.
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-09 11:56:53 UTC (rev 5963)
+++ software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/plugin-skype.py 2009-12-09 13:00:01 UTC (rev 5964)
@@ -35,8 +35,11 @@
import connector
from communicator import SynchroniousCommands, AsynchroniousCommands
from errors import EquipmentException, UnavailableContactException, UserNotFindException
-from utils import StringUtils
+from utils import StringUtils, TuxDroidServerUtils
+from IPN.IPNServer import IPNServer
+from IPN.IPNClient import IPNClient
+
from util.SimplePlugin.SimplePluginConfiguration import SimplePluginConfiguration
from util.SimplePlugin.SimplePlugin import SimplePlugin
@@ -75,28 +78,96 @@
'''
Skype plugin base class.
'''
-
+ #plugin uuid
+ uuid = "8349ed52-572d-4c3f-a7b8-f6d4a5ae2c0"
+ port = 270
#Skype client - api objects.
synchronious = None
asynchronious = None
connectorObj = None
+ ##----------------------------------------------------------------
+ ## * Skype plugin main entry point.
+ ##----------------------------------------------------------------
def start(self):
'''
Plugin entry point.
This method should be used to dispatch commands.
'''
+ #Init port.
+ self.port = TuxDroidServerUtils.getServerPort()
+
+ #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()
else:
self.runDaemon()
+ ##----------------------------------------------------------------
+ ## * PLUGIN COMMAND : Set Tux Droid for an incoming call.
+ ##----------------------------------------------------------------
+ def incomingCall(self):
+ '''
+ Initialize Tux Droid switches for a call ( incoming or outgoing )
+ '''
+ self.initializeCommandsClient()
+
+ #Create Tux Droid api and repare events.
+
+ #Run main loop.
+ ##----------------------------------------------------------------
+ ## * PLUGIN COMMAND : Set Tux Droid for an incoming call.
+ ##----------------------------------------------------------------
+ def outgoingCall(self):
+ '''
+ Initialize Tux Droid for an outgoing call.
+ '''
+ self.initializeCommandsClient()
+
+
+ ##----------------------------------------------------------------
+ ## * PLUGIN COMMAND : Finish an incoming / outgoing call
+ ##----------------------------------------------------------------
+ def endCall(self):
+ '''
+ 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()
+
+ ##----------------------------------------------------------------
+ ## * DAEMON command and functions.
+ ##----------------------------------------------------------------
+
def runDaemon(self):
'''
Run plugin command.
'''
+ #Creating and starting server.
+ self.serv = IPNServer('127.0.0.1', 48536)
+ self.serv.registerOnClientAddedCallBack(self.ServerOnClientAdded)
+ self.serv.registerOnClientRemovedCallBack(self.ServerOnClientRemoved)
+ self.serv.registerOnClientNotificationCallBack(self.ServerOnClientNotification)
+ self.serv.start()
+
#Initialize skype client and api objects.
self.connectorObj = connector.Connector()
self.connectorObj.OnAPIReady = self.initializeDaemon
@@ -142,7 +213,7 @@
Incomming call refused because a call is already in progress
'''
#Sending a message to the call partner.
- message = "Sorry, I'm already in call, please try again later"
+ message = "I am currently in a conversation, please call me back later"
self.synchronious.sendTextMessage(contactHandle, message)
@@ -160,8 +231,17 @@
def OnIncomingCall(self, contactHandle):
'''
+ Incoming call event.
'''
- pass
+ #Set up Tux Droid motors.
+ self.throwActuation("upFlippers")
+ self.throwActuation("openMouth")
+
+ #Starting the plugin with 'incomingCall' command.
+ command = 'incomingCall'
+ request = '/plugins_server/start_plugin?command='+ command + '&uuid='+ self.uuid +'¶meters='
+
+ TuxDroidServerUtils.sendRequest("127.0.0.1", self.port, request)
def OnIncomingFinished(self, contactHandle):
@@ -229,6 +309,8 @@
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()
@@ -241,10 +323,53 @@
'''
OnPluginStop event.
'''
- self.connectorObj.stop()
+ if self.connectorObj != None:
+ if self.getCommand() == 'outgoingCall':
+ self.connectorObj.stop(KillClient=True)
+ else:
+ #In other cases, close connection but not skype client.
+ self.connectorObj.stop()
+
+ ##----------------------------------------------------------------
+ ## * DAEMON Client / Server IPN Communication.
+ ##----------------------------------------------------------------
+ def ServerOnClientAdded(self, idClient):
+ '''
+ '''
+ pass
+
+
+ def ServerOnClientRemoved(self, idClient):
+ '''
+ '''
+ pass
+
+
+ def ServerOnClientNotification(self, idClient, Message):
+ '''
+ '''
+ pass
+
+
+ def ClientOnNotification(self, Message):
+ '''
+ '''
+ pass
+
+
+ def ClientOnConnected(self, id):
+ '''
+ '''
+ pass
+
+
+ def ClientOnDisconnected(self):
+ '''
+ '''
+ pass
+
-
if __name__ == "__main__":
plugin = SkypePlugin()
plugin.boot(sys.argv[1:], SkypePluginConfiguration())
Modified: software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/utils.py
===================================================================
--- software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/utils.py 2009-12-09 11:56:53 UTC (rev 5963)
+++ software_suite_v3/software/plugin/plugin-skype/branches/in_out_plugin/executables/utils.py 2009-12-09 13:00:01 UTC (rev 5964)
@@ -347,7 +347,7 @@
Provide Tux Droid server utils functions.
'''
- def getServerPort(self):
+ def getServerPort():
'''
Return the current server port.
'''
@@ -360,7 +360,7 @@
return 54321
- def sendRequest(self, host, port, request):
+ def sendRequest(host, port, request):
'''
Send a request to tuxhttpserver.
'''
|