diff -r 3bf560f85513 -r a587897e3bb2 symbian-qemu-0.9.1-12/qemu-symbian-svp/plugins/syborg_serial.py --- a/symbian-qemu-0.9.1-12/qemu-symbian-svp/plugins/syborg_serial.py Thu Nov 12 14:39:23 2009 -0800 +++ b/symbian-qemu-0.9.1-12/qemu-symbian-svp/plugins/syborg_serial.py Tue Jan 26 13:03:40 2010 +0000 @@ -1,4 +1,6 @@ import qemu +import os +import sys class syborg_serial(qemu.devclass): REG_ID = 0 @@ -127,6 +129,57 @@ regions = [qemu.ioregion(0x1000, readl=read_reg, writel=write_reg)] irqs = 1 name = "syborg,serial" - properties = {"fifo-size":16, "chardev":None} + properties = {"fifo-size":16, "chardev":None, "target": ""} qemu.register_device(syborg_serial) + +class syborg_modem(syborg_serial): + + def create(self): + syborg_serial.create(self) + + # Find the path of the emulator executable + path = os.path.dirname(sys.executable) + executable = os.getenv("SVP_MODEM_EXECUTABLE") + if None == executable: + executable = self.modem_executable + + executable_name = executable + fq_executable = os.path.join(path, executable_name) + print(fq_executable) + + if not os.path.exists(fq_executable): + executable_name = executable + ".exe" + fq_executable = os.path.join(path, executable_name) + + if not os.path.exists(fq_executable): + sys.exit("Could not locate modem executable '" + executable + "' in '" + path + "'!\n") + + # Attempt to find the correct port from the target spec + target = self.properties["target"] + + if not(target.startswith("tcp:") or target.startswith("udp:")): + sys.exit("Modem device is not accessed via an acceptable socket.") + + target = target[4:] + port_start_idx = target.find(":"); + port_end_idx = target.find(",") + if -1 == port_start_idx: + sys.exit("Could not extract port number from modem target spec!") + + port = "" + if -1 == port_end_idx: + port = target[port_start_idx + 1:] + else: + port = target[port_start_idx + 1:port_end_idx] + + os.spawnl(os.P_NOWAIT, fq_executable, executable_name, "-p", port) + self.chardev.handle_connect() + + # Name property override. + name = "syborg,serial,modem" + + # Default modem executable + modem_executable = "phonesim" + +qemu.register_device(syborg_modem)