summaryrefslogtreecommitdiffstats
path: root/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f
diff options
context:
space:
mode:
Diffstat (limited to 'Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f')
-rw-r--r--Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/009445f880f2001019c79f38f40e52ba135
-rw-r--r--Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/40352fbb7af2001019c79f38f40e52ba54
-rw-r--r--Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60915ebb74f2001019c79f38f40e52ba76
3 files changed, 265 insertions, 0 deletions
diff --git a/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/009445f880f2001019c79f38f40e52ba b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/009445f880f2001019c79f38f40e52ba
new file mode 100644
index 0000000..7aa34d6
--- /dev/null
+++ b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/009445f880f2001019c79f38f40e52ba
@@ -0,0 +1,135 @@
+import sys
+import locale
+import pygtk
+import gtk #@UnresolvedImport
+import gtk.glade #@UnresolvedImport
+from pyCatcherModel import BaseStationInformation
+from xdot import DotWidget
+import datetime
+import time
+
+class PyCatcherGUI:
+
+ def __init__(self, catcher_controller):
+ encoding = locale.getlocale()[1]
+ self._utf8conv = lambda x : unicode(x, encoding).encode('utf8')
+
+ self._scan_toggled_on = False
+ self._firmware_toggled_on = False
+
+ self._catcher_controller = catcher_controller
+
+ self._w_tree = gtk.glade.XML("../GUI/mainWindow.glade")
+
+ self._bs_tree_view = self._w_tree.get_widget("bs_table")
+ self._add_column("Provider", 0)
+ self._add_column("Frequency", 1)
+ self._add_column("Strength",2)
+ self._add_column("Last seen", 3)
+ self._bs_tree_view.set_model(self._catcher_controller.bs_tree_list_data)
+
+ self._horizontal_container = self._w_tree.get_widget("vbox4")
+ self._dot_widget = DotWidget()
+ self._horizontal_container.pack_start_defaults(self._dot_widget)
+ self._dot_widget.show()
+
+ self._main_window = self._w_tree.get_widget("main_window")
+ signals = {"on_main_window_destroy": self._on_main_window_destroy,
+ "on_scan_toggle_toggled": self._on_toggle_scan,
+ "on_firmware_toggle_toggled": self._on_toggle_firmware,
+ "on_graph_zoom_in_clicked": self._dot_widget.on_zoom_in,
+ "on_graph_zoom_out_clicked": self._dot_widget.on_zoom_out,
+ "on_graph_fit_clicked": self._dot_widget.on_zoom_fit,
+ "on_graph_zoom_default_clicked": self._dot_widget.on_zoom_100,
+ "on_save_project_clicked": self._on_save_project,
+ "on_open_file_clicked": self._on_open_file
+ }
+ self._w_tree.signal_autoconnect(signals)
+
+ log_view = self._w_tree.get_widget("log_output")
+ self._log_buffer = log_view.get_buffer()
+ self._log_buffer.insert(self._log_buffer.get_end_iter(),self._utf8conv("-- Log execution on " + datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M %p") + " --\n\n"))
+
+ self._main_window.show()
+
+
+ def _add_column(self, name, index):
+ column = gtk.TreeViewColumn(name, gtk.CellRendererText(), text=index)
+ column.set_resizable(True)
+ column.set_sort_column_id(index)
+ self._bs_tree_view.append_column(column)
+
+ def _on_main_window_destroy(self, widget):
+ self._catcher_controller.shutdown()
+ gtk.main_quit()
+
+ def _on_toggle_scan(self, widget):
+ if(not self._scan_toggled_on):
+ self._catcher_controller.start_scan()
+ self._scan_toggled_on = True
+ else:
+ self._catcher_controller.stop_scan()
+ self._scan_toggled_on = False
+
+ def _on_toggle_firmware(self, widget):
+ if(not self._firmware_toggled_on):
+ self._catcher_controller.start_firmware()
+ self._firmware_toggled_on = True
+ else:
+ self._catcher_controller.stop_firmware()
+ self._firmware_toggled_on = False
+
+ def _on_open_file(self, widget):
+ chooser = gtk.FileChooserDialog(title="Open dot File",
+ action=gtk.FILE_CHOOSER_ACTION_OPEN,
+ buttons=(gtk.STOCK_CANCEL,
+ gtk.RESPONSE_CANCEL,
+ gtk.STOCK_OPEN,
+ gtk.RESPONSE_OK))
+ chooser.set_default_response(gtk.RESPONSE_OK)
+ filter = gtk.FileFilter()
+ filter.set_name("Graphviz dot files")
+ filter.add_pattern("*.dot")
+ chooser.add_filter(filter)
+ filter = gtk.FileFilter()
+ filter.set_name("All files")
+ filter.add_pattern("*")
+ chooser.add_filter(filter)
+ if chooser.run() == gtk.RESPONSE_OK:
+ filename = chooser.get_filename()
+ chooser.destroy()
+ self.load_dot_from_file(filename)
+ else:
+ chooser.destroy()
+
+ def load_dot_from_file(self, filename):
+ try:
+ fp = file(filename, 'rt')
+ self.load_dot(fp.read(), filename)
+ fp.close()
+ except IOError, ex:
+ self.show_info(ex)
+
+ def load_dot(self, dotcode, filename="<stdin>"):
+ if self._dot_widget.set_dotcode(dotcode, filename):
+ self._dot_widget.zoom_to_fit()
+
+ def _on_save_project(self, widget):
+ pass
+
+ def show_info(self, message, title='PyCatcher', time_to_sleep=3, type='INFO'):
+ gtk_type = {'INFO' : gtk.MESSAGE_INFO,
+ 'ERROR': gtk.MESSAGE_ERROR}
+
+ dlg = gtk.MessageDialog(type=gtk.MESSAGE_INFO,
+ message_format=str(message)
+ )
+
+ dlg.set_title(title)
+ #dlg.run()
+ dlg.show()
+ time.sleep(time_to_sleep)
+ dlg.destroy()
+
+ def log_line(self, line):
+ self._log_buffer.insert(self._log_buffer.get_end_iter(),self._utf8conv(datetime.datetime.now().strftime("%I:%M:%S %p")+ ": " + line + "\n")) \ No newline at end of file
diff --git a/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/40352fbb7af2001019c79f38f40e52ba b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/40352fbb7af2001019c79f38f40e52ba
new file mode 100644
index 0000000..d4e6448
--- /dev/null
+++ b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/40352fbb7af2001019c79f38f40e52ba
@@ -0,0 +1,54 @@
+import sys
+import pygtk
+import gtk #@UnresolvedImport
+import gtk.glade #@UnresolvedImport
+from driverConnector import DriverConnector
+from pyCatcherModel import BaseStationInformation, BaseStationInformationList
+from pyCatcherView import PyCatcherGUI
+
+class PyCatcherController:
+ def __init__(self):
+
+ self.bs_tree_list_data = gtk.ListStore(str,str,str,str)
+
+ self._gui = PyCatcherGUI(self)
+ self._driver_connector = DriverConnector()
+
+ self._gui.log_line("GUI initialized")
+
+ gtk.main()
+
+ def log_message(self, message):
+ self._gui.log_line(message)
+
+ def start_scan(self):
+ self._gui.log_line("start scan")
+ self._driver_connector.start_scanning(self._found_base_station_callback)
+
+ def stop_scan(self):
+ self._gui.log_line("stop scan")
+ self._driver_connector.stop_scanning()
+
+ def start_firmware(self):
+ self._gui.log_line("start firmware")
+ self._driver_connector.start_firmware(self._firmware_waiting_callback, self._firmware_done_callback)
+
+ def stop_firmware(self):
+ self._gui.log_line("stop firmware")
+ print 'stop firmwares'
+ self._driver_connector.stop_firmware()
+
+ def shutdown(self):
+ self._driver_connector.shutdown()
+
+ def _found_base_station_callback(self, base_station_info):
+ self._gui.log_line("found " + base_station_info.country + '(' + base_station_info.arfcn + '3')
+
+ def _firmware_waiting_callback(self):
+ self._gui.log_line("firmware waiting for device")
+ self._gui.show_info('Switch on the phone now.', 'Firmware')
+
+ def _firmware_done_callback(self):
+ self._gui.log_line("firmware loaded, ready for scanning")
+ self._gui.show_info('Firmware load completed', 'Firmware')
+ \ No newline at end of file
diff --git a/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60915ebb74f2001019c79f38f40e52ba b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60915ebb74f2001019c79f38f40e52ba
new file mode 100644
index 0000000..a2ca408
--- /dev/null
+++ b/Src/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/2f/60915ebb74f2001019c79f38f40e52ba
@@ -0,0 +1,76 @@
+from pyCatcherModel import BaseStationInformation
+import subprocess
+import threading
+import re
+from pyCatcherSettings import Commands
+import sys
+import time
+import gtk #@UnresolvedImport
+
+class DriverConnector:
+ def __init__ (self):
+ self._scan_thread_break = False
+ self._firmware_thread_break = False
+ self._firmware_waiting_callback = None
+ self._firmware_loaded_callback = None
+ self._base_station_found_callback = None
+
+ def start_scanning (self, base_station_found_callback):
+ self._scan_thread_break = False
+ self._base_station_found_callback = base_station_found_callback
+ self._scanThread = ScanThread(self._base_station_found_callback, self._scan_thread_break)
+ self._scanThread.start()
+
+ def start_firmware(self, firmware_waiting_callback, firmware_loaded_callback):
+ self._firmware_thread_break = False
+ self._firmware_waiting_callback = firmware_waiting_callback
+ self._firmware_loaded_callback = firmware_loaded_callback
+ self._firmThread = FirmwareThread(self._firmware_waiting_callback, self._firmware_loaded_callback, self._firmware_thread_break)
+ self._firmThread.start()
+
+ def stop_scanning (self):
+ self._scan_thread_break = True
+
+ def stop_firmware(self):
+ self._firmware_thread_break = True
+
+class FirmwareThread(threading.Thread):
+ def __init__(self, firmware_waiting_callback, firmware_loaded_callback, thread_break):
+ gtk.gdk.threads_init()
+ threading.Thread.__init__(self)
+ self._firmware_waiting_callback = firmware_waiting_callback
+ self._firmware_loaded_callback = firmware_loaded_callback
+ self._thread_break = thread_break
+
+ def run(self):
+ loader_process_object = subprocess.Popen(Commands['osmocon_command'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ time.sleep(3)
+ self._firmware_waiting_callback()
+ while not self._thread_break:
+ line = loader_process_object.stdout.readline()
+ #if line:
+ # print line
+ if line.strip() == 'Finishing download phase':
+ self._firmware_loaded_callback()
+ #time.sleep(0.5)
+ loader_process_object.kill()
+
+class ScanThread(threading.Thread):
+ def __init__(self, base_station_found_callback, thread_break):
+ gtk.gdk.threads_init()
+ threading.Thread.__init__(self)
+ self._base_station_found_callback = base_station_found_callback
+ self._thread_break = thread_break
+
+ def run(self):
+ scan_process = subprocess.Popen(Commands['scan_command'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ time.sleep(2)
+ while not self._thread_break:
+ line = scan_process.stdout.readline()
+ if line:
+ print line
+ sys.stdout.flush()
+ if line.strip() == '[SysInfo]':
+ self._base_station_found_callback()
+ scan_process.kill()
+ \ No newline at end of file