Trying to upload all related projects
[easy-deb-chroot] / diablo / easymer / src / usr / bin / wlan-stat.py
1 #! /usr/bin/env python
2
3 import gobject
4 import gtk
5 import commands
6 import string
7 from wlan_xpm import WL
8 import dbus
9 from dbus.mainloop.glib import DBusGMainLoop
10 DBusGMainLoop(set_as_default=True)
11 import gobject
12 import conic
13
14 class NetStat():
15     def __init__(self):
16
17         self.strength_zero = 4294967179
18         self.strength_fifty = 4294967229
19         self.strength_hundred = 4294967279
20         self.signal_strength = self.strength_zero
21         self.iap_id = None
22         self.connection = None
23         self.status = None
24
25         self.connection = conic.Connection()
26         self.connection.connect("connection-event", self.connection_cb, 0xFFAA)
27         self.connection.connect("statistics", self.statistics_cb, 0x55AA)
28         self.connection.set_property("automatic-connection-events", True)
29         # self.connection.request_connection(conic.CONNECT_FLAG_NONE)
30
31         self.i = 5
32         self.statusIcon = gtk.StatusIcon()
33         self.statusIcon.connect('activate', self.on_activate)
34         self.wls = WL()
35         self.chknet()
36         #gobject.timeout_add(30000, self.chknet)
37
38     def on_activate(self, si):
39         self.clicked_icon()
40
41     def chknet(self):
42         self.i = 0
43         if self.status == conic.STATUS_CONNECTED:
44            self.connection.statistics(self.iap_id)
45            self.signal_pct = (self.signal_strength - self.strength_zero)
46            self.i = int(round(self.signal_pct / 20,0))
47            if self.signal_pct > 0:
48               self.i += 1
49            print "signal_strength=%i (%i pct, %i/5)" % (self.signal_strength, self.signal_pct, self.i)
50         elif self.status == conic.STATUS_DISCONNECTED:
51            self.i = 6          
52         elif self.status == conic.STATUS_DISCONNECTING:
53            self.i = 0
54
55         wl = gtk.gdk.pixbuf_new_from_xpm_data(self.wls.get_pixbuf(self.i))
56         self.statusIcon.set_from_pixbuf(wl)
57         if not self.i:
58             self.statusIcon.set_blinking(True)
59         else:
60             self.statusIcon.set_blinking(False)
61
62         return self.i >= 0
63
64     def clicked_icon(self):
65         self.i = 5
66         self.chknet()
67         if self.status == conic.STATUS_CONNECTED:
68            str1="CONNECTED to %s (%s mode)\nSignal strength: %i percent, (%i/5)" % (self.iap_name, self.bearer, self.signal_pct, self.i)
69            str2=''
70            # str2="Signal strength=%i (%i pct, %i/5)" % (self.signal_strength, self.signal_pct, self.i)
71         elif self.status == conic.STATUS_DISCONNECTED:
72            str1="DISCONNECTED" 
73            str2=''
74         elif self.status == conic.STATUS_DISCONNECTING:
75            str1="DISCONNECTING (%s, %s)" % (self.iap_name, self.bearer)
76            str2=''
77         w = gtk.Window()
78         w.set_title('Connection')
79         w.connect('destroy', self.on_ok_clicked, w)
80         w.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
81
82         l1 = gtk.Label(str1)
83         #l2 = gtk.Label(str2)
84         hboxu = gtk.HBox(True, 0)
85         hboxu.pack_start(l1, False, False, 10)
86         #hboxu.pack_start(l2, False, False, 10)
87
88         b = gtk.Button('OK', gtk.STOCK_OK)
89         b.connect('clicked', self.on_ok_clicked, w)
90         bq = gtk.Button('Quit', gtk.STOCK_QUIT)
91         bq.connect('clicked', gtk.main_quit)
92         hboxd = gtk.HBox(True, 0)
93         hboxd.pack_start(b, False, False, 0)
94         if self.status == conic.STATUS_DISCONNECTED:
95           brc = gtk.Button('Reconnect', gtk.STOCK_CONNECT)
96           brc.connect('clicked', self.reconnect, w)
97           hboxd.pack_start(brc, False, False, 0)
98
99         hboxd.pack_start(bq, False, False, 0)
100
101         vbox = gtk.VBox(False, 0)
102         vbox.pack_start(hboxu, False, False, 20)
103         vbox.pack_start(hboxd, False, False, 20)
104         w.add(vbox)
105
106         w.show_all() 
107
108     def on_ok_clicked(self, button, window):
109         window.hide()
110
111     def reconnect(self, button, window):
112         self.connection.request_connection(conic.CONNECT_FLAG_NONE)       
113         window.hide()
114
115     def statistics_cb(self, connection, event, data):
116         self.signal_strength = event.get_signal_strength()
117         self.time_active = event.get_time_active()
118         self.rx_bytes = event.get_rx_bytes()
119         self.tx_bytes = event.get_tx_bytes()
120
121         #print "statistics(%s, %s, %x)" % (connection, event, data)
122     
123         #print "time active=%i" % self.time_active
124         #print "signal_strength=%i" % self.signal_strength
125         #print "rx_packets=%u" % event.get_rx_packets()
126         #print "tx_packets=%u" % event.get_tx_packets()
127         #print "rx_bytes=%u" % self.rx_bytes
128         #print "tx_bytes=%u" % self.tx_bytes
129
130     def connection_cb(self, connection, event, data):
131     
132         print "connection_cb(%s, %s, %x)" % (connection, event, data)
133
134         self.status = event.get_status()
135         self.error = event.get_error()
136         self.iap_id = event.get_iap_id()
137         self.bearer = event.get_bearer_type()
138     
139         if self.status == conic.STATUS_CONNECTED:
140            self.iap_name = commands.getoutput("gconftool -g /system/osso/connectivity/IAP/"+self.iap_id+"/name")
141            print "CONNECTED (%s, %s, %i, %i)" % (self.iap_name, self.bearer, self.status, self.error)
142            #self.chknet()
143            self.connection.statistics(self.iap_id)
144            gobject.timeout_add(30000, self.chknet)
145         elif self.status == conic.STATUS_DISCONNECTED:
146            self.iap_name = "None"
147            print "DISCONNECTED (%i, %i)" % (self.status, self.error)
148         elif self.status == conic.STATUS_DISCONNECTING:
149            print "DISCONNECTING (%s, %s, %i, %i)" % (self.iap_name, self.bearer, self.status, self.error)
150    
151         self.chknet()
152
153 if __name__ == "__main__":
154     bus = dbus.SystemBus(private=True)    
155     tbd = NetStat()
156     gtk.main()