Subversion Repositories freemyipod

Rev

Rev 896 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 896 Rev 912
Line 1002... Line 1002...
1002
    def __init__(self, logger):
1002
    def __init__(self, logger):
1003
        self.logger = logger
1003
        self.logger = logger
1004
        self.logger.debug("Initializing Lib object\n")
1004
        self.logger.debug("Initializing Lib object\n")
1005
        self.idVendor = 0xFFFF
1005
        self.idVendor = 0xFFFF
1006
        self.idProduct = 0xE000
1006
        self.idProduct = 0xE000
-
 
1007
        self.idProductMask = 0xFFFE
1007
        
1008
        
1008
        self.headersize = 0x10
1009
        self.headersize = 0x10
1009
        
1010
        
1010
        self.connect()
1011
        self.connect()
1011
    
1012
    
1012
    def connect(self):
1013
    def connect(self):
1013
        self.dev = Dev(self.idVendor, self.idProduct, self.logger)
1014
        self.dev = Dev(self.idVendor, self.idProduct, self.idProductMask, self.logger)
1014
        self.connected = True
1015
        self.connected = True
1015
    
1016
    
1016
    def monitorcommand(self, cmd, rcvdatatypes=None, rcvstruct=None):
1017
    def monitorcommand(self, cmd, rcvdatatypes=None, rcvstruct=None):
1017
        self.logger.debug("Sending monitorcommand [0x%s]\n" % base64.b16encode(cmd[3::-1]).decode("ascii"))
1018
        self.logger.debug("Sending monitorcommand [0x%s]\n" % base64.b16encode(cmd[3::-1]).decode("ascii"))
1018
        writelen = self.dev.send(cmd)
1019
        writelen = self.dev.send(cmd)
Line 1049... Line 1050...
1049
        else:
1050
        else:
1050
            return writelen
1051
            return writelen
1051
 
1052
 
1052
 
1053
 
1053
class Dev(object):
1054
class Dev(object):
1054
    def __init__(self, idVendor, idProduct, logger):
1055
    def __init__(self, idVendor, idProduct, idProductMask, logger):
1055
        self.idVendor = idVendor
1056
        self.idVendor = idVendor
1056
        self.idProduct = idProduct
1057
        self.idProduct = idProduct
-
 
1058
        self.idProductMask = idProductMask
1057
        
1059
        
1058
        self.logger = logger
1060
        self.logger = logger
1059
        self.logger.debug("Initializing Dev object\n")
1061
        self.logger.debug("Initializing Dev object\n")
1060
        
1062
        
-
 
1063
        self.dev = None
1061
        self.interface = None
1064
        self.interface = None
1062
        self.claimed = False
1065
        self.claimed = False
1063
        self.timeout = 1000
1066
        self.timeout = 1000
1064
        
1067
        
1065
        self.connect()
1068
        self.connect()
Line 1081... Line 1084...
1081
    def __del__(self):
1084
    def __del__(self):
1082
        if self.claimed: self.disconnect()
1085
        if self.claimed: self.disconnect()
1083
    
1086
    
1084
    def connect(self):
1087
    def connect(self):
1085
        self.logger.debug("Looking for emCORE device\n")
1088
        self.logger.debug("Looking for emCORE device\n")
1086
        self.dev = usb.core.find(idVendor=self.idVendor, idProduct=self.idProduct)
1089
        devs = usb.core.find(find_all=True, idVendor=self.idVendor)
-
 
1090
        for dev in devs:
-
 
1091
            if dev.idProduct & self.idProductMask == self.idProduct:
-
 
1092
                self.dev = dev
-
 
1093
                break
1087
        if self.dev is None:
1094
        if self.dev is None:
1088
            raise DeviceNotFoundError()
1095
            raise DeviceNotFoundError()
1089
        self.logger.debug("Device found!\n")
1096
        self.logger.debug("Device found!\n")
1090
        self.logger.debug("Searching for device interface:\n")
1097
        self.logger.debug("Searching for device interface:\n")
1091
        for cfg in self.dev:
1098
        for cfg in self.dev: