Changeset 303

Show
Ignore:
Timestamp:
05/08/09 16:52:14 (3 years ago)
Author:
ocjhb
Message:

less nagging access point selection. Only once per session

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/jhb/mobile/ocwallet.py

    r301 r303  
    1 import appuifw,e32,socket,httplib, urllib 
     1import appuifw,e32,httplib, urllib 
    22from graphics import * 
    33from key_codes import EKeyLeftArrow, EKeyRightArrow 
     
    2222         
    2323        self.todo = {} 
    24         self.apo = None 
     24        self.ip = None 
    2525 
    2626    def makeWalletMenu(self): 
     
    155155        url = cdd.issuerServiceLocation 
    156156 
    157         transport = transports.HTTPTransport(url) 
     157        transport = self.getHTTPTransport(url) 
    158158        self.wallet.mintCoins(transport,amount,target) 
    159159        self.makeWalletMenu() 
     
    173173        url = cdd.issuerServiceLocation 
    174174 
    175         transport = transports.HTTPTransport(url) 
     175        transport = self.getHTTPTransport(url) 
    176176        self.wallet.redeemCoins(transport,amount,target) 
    177177        self.makeWalletMenu() 
     
    181181    def freshenUp(self): 
    182182        cdd,alreadythere = self.getCurrentCurrency() 
    183         transport = transports.HTTPTransport(cdd.issuerServiceLocation) 
     183        transport = self.getHTTPTransport(cdd.issuerServiceLocation) 
    184184        self.wallet.freshenUp(transport,cdd) 
    185185        self.makeWalletMenu() 
     
    190190        #print 'execute' 
    191191        print self.todo 
     192 
     193    def receiveCoins(self): 
     194        methodlist = [u'internet',u'bluetooth'] 
     195        method = appuifw.popup_menu(methodlist) 
     196 
     197        cdd,alreadythere = self.getCurrentCurrency() 
     198        transport = self.getHTTPTransport(cdd.issuerServiceLocation) 
     199 
     200        if method ==1: 
     201            self.receiveCoinsBT(transport) 
     202        else: 
     203            self.receiveCoinsHTTP(transport) 
     204         
     205        self.makeWalletMenu() 
     206        self.displayWalletMenu() 
     207     
    192208 
    193209 
     
    197213        return transport 
    198214     
    199     def receiveCoins(self): 
    200         methodlist = [u'internet',u'bluetooth'] 
    201         method = appuifw.popup_menu(methodlist) 
    202  
    203         cdd,alreadythere = self.getCurrentCurrency() 
    204         transport = transports.HTTPTransport(cdd.issuerServiceLocation) 
    205  
    206         if method ==1: 
    207             self.receiveCoinsBT(transport) 
    208         else: 
    209             self.receiveCoinsHTTP(transport) 
    210          
    211         self.makeWalletMenu() 
    212         self.displayWalletMenu() 
    213      
    214  
    215      
    216      
    217     def receiveCoinsBT(self,transport): 
    218         if sys.platform == 'symbian_s60': 
    219             import btsocket 
    220             server_socket = btsocket.socket(btsocket.AF_BT, btsocket.SOCK_STREAM) 
    221             port = btsocket.bt_rfcomm_get_available_server_channel(server_socket) 
    222             server_socket.bind(("", port)) 
    223             server_socket.listen(1) 
    224             btsocket.bt_advertise_service( u"opencoin", server_socket, True, btsocket.RFCOMM) 
    225             btsocket.set_security(server_socket, btsocket.AUTH) 
    226             appuifw.note(u'waiting for connection') 
    227             (sock,peer_addr) = server_socket.accept() 
    228  
    229         else: 
    230             import bluetooth as bt 
    231             server_sock=bt.BluetoothSocket(bt.RFCOMM) 
    232             server_sock.bind(("",bt.PORT_ANY)) 
    233             server_sock.listen(1) 
    234             port = server_sock.getsockname()[1] 
    235  
    236             uuid = "9e72d9d8-e06d-41cb-bbd4-89cd052cccb8" 
    237              
    238             bt.advertise_service( server_sock, u"opencoin",) 
    239                                 
    240             sock, client_info = server_sock.accept() 
    241  
    242          
    243         bt = transports.BTTransport(sock) 
    244         self.wallet.getApproval = self.getApproval  
    245         bt.send(self.wallet.listenSum(bt.receive())) 
    246         bt.send(self.wallet.listenSpend(bt.receive(),transport)) 
    247          
    248  
    249215    def receiveCoinsHTTP(self,transport): 
    250216        import BaseHTTPServer, urllib 
     
    283249        self.stopInternet() 
    284250 
    285  
    286251    def getBTTransport(self): 
    287252         
     
    300265        return transports.BTTransport(sock) 
    301266 
     267   
     268     
     269    def receiveCoinsBT(self,transport): 
     270        if sys.platform == 'symbian_s60': 
     271            import btsocket 
     272            server_socket = btsocket.socket(btsocket.AF_BT, btsocket.SOCK_STREAM) 
     273            port = btsocket.bt_rfcomm_get_available_server_channel(server_socket) 
     274            server_socket.bind(("", port)) 
     275            server_socket.listen(1) 
     276            btsocket.bt_advertise_service( u"opencoin", server_socket, True, btsocket.RFCOMM) 
     277            btsocket.set_security(server_socket, btsocket.AUTH) 
     278            appuifw.note(u'waiting for bt connection') 
     279            (sock,peer_addr) = server_socket.accept() 
     280 
     281        else: 
     282            import bluetooth as bt 
     283            server_sock=bt.BluetoothSocket(bt.RFCOMM) 
     284            server_sock.bind(("",bt.PORT_ANY)) 
     285            server_sock.listen(1) 
     286            port = server_sock.getsockname()[1] 
     287 
     288            uuid = "9e72d9d8-e06d-41cb-bbd4-89cd052cccb8" 
     289             
     290            bt.advertise_service( server_sock, u"opencoin",) 
     291                                
     292            sock, client_info = server_sock.accept() 
     293 
     294         
     295        bt = transports.BTTransport(sock) 
     296        self.wallet.getApproval = self.getApproval  
     297        bt.send(self.wallet.listenSum(bt.receive())) 
     298        bt.send(self.wallet.listenSpend(bt.receive(),transport)) 
     299        import e32 
     300        e32.ao_sleep(1)     
     301 
     302 
    302303    def spendCoins(self): 
    303304 
     
    340341 
    341342    def startInternet(self): 
    342         if not self.apo: 
     343        if not self.ip: 
    343344            import sys 
    344             try: 
    345                 sys.modules['socket'] = __import__('btsocket') 
     345            if sys.platform == 'symbian_s60': 
    346346                import socket 
    347                 #import btsocket as socket 
    348                 apid = socket.select_access_point() 
    349                 apo = socket.access_point(apid) 
    350                 #socket.set_default_access_point(apo) 
    351                 apo.start() 
    352                 self.apo = apo 
    353                 self.ip = apo.ip() 
    354  
    355             except ImportError: 
     347                appuifw.note(u'Preparing access points') 
     348                aps = [ap['name'] for ap in socket.access_points()] 
     349                aps.sort() 
     350                apid = appuifw.popup_menu(aps,u'select access point') 
     351                socket.set_default_access_point(aps[apid]) 
     352                self.ip = 'some ip, s60' 
     353 
     354            else: 
    356355                import socket 
    357                 self.ip = '127.0.0.2' 
     356                self.ip = 'some ip' 
    358357             
    359358 
    360359    def stopInternet(self): 
    361         if self.apo: 
    362             self.apo.stop() 
    363             self.apo = None 
    364  
     360        pass 
    365361 
    366362