def enroll_F0(long_id, dev_type, zone_num, customer_mid=0, customer_did=0): long_id = prutils.num_to_chars(long_id) if dev_type.upper() in _DeviceType: dev_type = _DeviceType[dev_type.upper()] else: raise Exception("Incorrect device type specified") return None # "32 01 00 [] 00 08 00 " $ iDeviceTypeNumber $ " " $ iDeviceSubTypeNumber $ " 01 14 03 00 00 01 03 00 00 00 02 07 00 70 09 28 03 08 01 C7 0A" rssi = "\x32" tx_power = "\x01" association_request_data = "\x00" attached_device_information = dev_type + "\x01\x14\x03\x00\x00" attached_device_information = "\x00" + chr(len(attached_device_information)) manufacturing_information = "\x01\x03" + chr(customer_mid) + prutils.num_to_chars(customer_did, 2, 0) rf_module_information = "\x02\x07\x00\x70\x09\x28\x03\x08\x01" data = ( "\x01" + chr(zone_num) + "\x22\x41" + long_id + rssi + tx_power + association_request_data + attached_device_information + manufacturing_information + rf_module_information ) packet = prutils.make_f0_packet(0x02, 0x33, data) return packet
def open_automation(self, port_number): if (not self.is_AUTO_port_ready()): return False # 1 - UART 0 (GSM) # 2 - UART 1 (PLink) if port_number.upper() == "GSM": port_number = 1 elif port_number.upper() == "PLINK": port_number = 2 else: log.write("Wrong port") return False if not (self.open_test_mode()): log.write("Can't open test mode") return False packet = prutils.make_f0_packet(2, 55, "\x00\x3B\xFF\x01\x00\x00\x00" + chr(port_number)) self._Communicator.send(packet) result = self._Communicator.wait(0x01, 3) if result: result = self._Communicator.wait(0x04, 3, 5) if result and ord(result[6]) == 55: result = True time.sleep(1) self.close_test_mode() return result
def remove_device(self, short_id): remove_result = False if (not self.is_AUTO_port_ready()): return False remove_packet = prutils.make_f0_packet(2, 54, chr(short_id)) #log.write(prutils.hexdump(remove_packet)) if not (self.open_test_mode()): log.write("Can't open test mode") return False self._Communicator.send(remove_packet) result = self._Communicator.wait(0x01, 3) if result : #0D F0 04 43 00 02 36 01 09 91 0A result = self._Communicator.wait(0x04, 3) if result and (ord(result[6]) == 54): if(ord(result[7]) == 1): remove_result = True #pc_ack = "\xF0\x01\x00\x00\x00" #pc_ack = '\x0D' + pc_ack + prutils.num_to_chars(prutils.crc16_F0(remove_packet), 2, 0) + '\x0A' #self._Communicator.send(ack) #log.write("ACK") time.sleep(1) self.close_test_mode() return remove_result
def open_automation(self, port_number): if (not self.is_AUTO_port_ready()): return False # 1 - UART 0 (GSM) # 2 - UART 1 (PLink) if port_number.upper() == "GSM": port_number = 1 elif port_number.upper() == "PLINK": port_number = 2 else: log.write("Wrong port") return False if not (self.open_test_mode()): log.write("Can't open test mode") return False packet = prutils.make_f0_packet( 2, 55, "\x00\x3B\xFF\x01\x00\x00\x00" + chr(port_number)) self._Communicator.send(packet) result = self._Communicator.wait(0x01, 3) if result: result = self._Communicator.wait(0x04, 3, 5) if result and ord(result[6]) == 55: result = True time.sleep(1) self.close_test_mode() return result
def remove_device(self, short_id): remove_result = False if (not self.is_AUTO_port_ready()): return False remove_packet = prutils.make_f0_packet(2, 54, chr(short_id)) #log.write(prutils.hexdump(remove_packet)) if not (self.open_test_mode()): log.write("Can't open test mode") return False self._Communicator.send(remove_packet) result = self._Communicator.wait(0x01, 3) if result: #0D F0 04 43 00 02 36 01 09 91 0A result = self._Communicator.wait(0x04, 3) if result and (ord(result[6]) == 54): if (ord(result[7]) == 1): remove_result = True #pc_ack = "\xF0\x01\x00\x00\x00" #pc_ack = '\x0D' + pc_ack + prutils.num_to_chars(prutils.crc16_F0(remove_packet), 2, 0) + '\x0A' #self._Communicator.send(ack) #log.write("ACK") time.sleep(1) self.close_test_mode() return remove_result
def reset_to_factory_defaults(self): if (not self.is_AUTO_port_ready()): return False result = False if not (self.open_test_mode()): log.write("Can't open test mode") return False # cmd = 2, test = 47 packet = prutils.make_f0_packet(2,47) self._Communicator.send(packet) time.sleep(5) result = self._Communicator.wait(0x04, 3, 5) if result and ord(result[6]) == 47: result = True time.sleep(1) self.close_test_mode() return result
def reset_to_factory_defaults(self): if (not self.is_AUTO_port_ready()): return False result = False if not (self.open_test_mode()): log.write("Can't open test mode") return False # cmd = 2, test = 47 packet = prutils.make_f0_packet(2, 47) self._Communicator.send(packet) time.sleep(5) result = self._Communicator.wait(0x04, 3, 5) if result and ord(result[6]) == 47: result = True time.sleep(1) self.close_test_mode() return result
def enroll_F0(long_id, dev_type, zone_num, customer_mid=0, customer_did=0): long_id = prutils.num_to_chars(long_id) if (dev_type.upper() in _DeviceType): dev_type = _DeviceType[dev_type.upper()] else: raise Exception("Incorrect device type specified") return None # "32 01 00 [] 00 08 00 " $ iDeviceTypeNumber $ " " $ iDeviceSubTypeNumber $ " 01 14 03 00 00 01 03 00 00 00 02 07 00 70 09 28 03 08 01 C7 0A" rssi = '\x32' tx_power = '\x01' association_request_data = '\x00' attached_device_information = dev_type + '\x01\x14\x03\x00\x00' attached_device_information = '\x00' + chr( len(attached_device_information)) manufacturing_information = '\x01\x03' + chr( customer_mid) + prutils.num_to_chars(customer_did, 2, 0) rf_module_information = '\x02\x07\x00\x70\x09\x28\x03\x08\x01' data = '\x01' + chr( zone_num ) + '\x22\x41' + long_id + rssi + tx_power + association_request_data + attached_device_information + manufacturing_information + rf_module_information packet = prutils.make_f0_packet(0x02, 0x33, data) return packet