Exemplo n.º 1
0
 def traverseAldb(self, startAddress):
     
     while startAddress > 0x00:
         print("Checking: 0x%0.2x" % startAddress)
         SerialInstance().ser.flushInput()
         SerialInstance().ser.flushOutput()
         Command.queryMemory(self.deviceId, bytes([0x0F, startAddress]))
         i = SerialInstance().ser.readline()
         sleep(.3)
         #Keep reading the address until we don't get a NACK
         if re.search(r'(\w)+(15)\b', Command.bToS(i)):
             print('Received NACK')
             continue #This makes it stop here and try again
             
         elif re.search(r'(\w)+(06)\b', Command.bToS(i)):
             for _ in range(50):
                 SerialInstance().ser.flushInput()
                 SerialInstance().ser.flushOutput()
                 i = SerialInstance().ser.readline()
                 cmdStr = Command.bToS(i)
                 if len(i) > 0:
                     print("06: %s" % cmdStr)
                 if (len(i) > 0 and len(cmdStr) == 50):
                     self.addToAldb(i)
                     startAddress = startAddress - 0x08
                     print("address Decremented")
                     break
         if re.search(r'(\w)+0(0|1)0000000000000000(\w\w){0,1}\b', Command.bToS(i)):
             print("Found blank address: %02x" % startAddress)
             return bytearray([i[13], i[14]])
Exemplo n.º 2
0
 def __init__(self, fromDev, toDev, devType, group):
     self.fromDev = fromDev
     self.toDev = toDev
     self.group = group
     self.devType = devType
     if devType == Link.CONTROLLER:
         self.name = fromDev.name +" is controller for "+ Command.bToS(toDev)
     else:
         self.name = fromDev.name +" is a responder to "+ Command.bToS(toDev) +" Group: "+ group
Exemplo n.º 3
0
 def addLinkToAldb(self, deviceTolink, groupNum):
     msg = bytearray([0x02, 0x62])
     msg.extend(self.deviceId)
     msg.extend([0x1F, 0x2f, 0x00, 0x00, 0x00, 0x02])
     msg.extend(self.confirmFreeMem())
     msg.append(0x08)
     if True: #self.isController:
         msg.append(0xE2)
     else:
         msg.append(0xA2)
     msg.append(groupNum)
     msg.extend(deviceTolink.deviceId)
     #Device Data - based on other aldb data
     msg.append(self.data1)
     msg.append(self.data2)
     if self.data3 == 0xbad: #Code used for same as groupNum
         msg.append(groupNum)
     else:
         msg.append(self.data3)
     if self.data4 == 0xbad: #Must be a checksum
         msg.append(Util.getChecksum(msg))
     else:
         msg.append(self.data4)
     print('ALDB Add: %s' % Command.spaceOut(Command.bToS(msg)))
Exemplo n.º 4
0
 def printAldb(self):
     print('Device: %s' % self.name)
     for x in range(len(self.aldb)):
         print('%d: %s' % (x, Command.spaceOut(Command.bToS(self.aldb[x]))))