def send_response(self, long_id, short_id, dpr_seq, mcode=0x06, state=0, notification_period=0): #log.write('RESPONSE') # state: 0 - OK, 1 .. see device protocol # prepare device protocol # mcode = 0x06 #print type(state) state = chr(state) seq = prutils.generate_seq("hpr") ser_num = prutils.convert_longid(int(long_id))[:3] mdata_value = chr(mcode) + chr(len(state)) + state device_packet = '\x14\x00' + chr(dpr_seq) + ser_num + mdata_value # prepare host protocol #final_hop_info = '\x00' * 11 final_hop_info = '\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00' relaying_repeater_ID = 0 repeater_hop_info = '\x00' * 11 data = chr(short_id) + chr(seq) + chr(0x30 + notification_period) + final_hop_info + chr(relaying_repeater_ID)\ + repeater_hop_info + prutils.str_l(device_packet) cmd = 0x30 data = chr(cmd) + data cmd_l = 2 + len(data) data = chr(cmd_l) + data host_protocol_message = data + prutils.crc16(data)[0] + '\x0A' packet = prutils._make_f2_packet( host_protocol_message ) #self._Procedures._Communicator.add_to_queue(packet, 0, 5) self._Communicator.send(packet)
def send_hello(self, seq=0xFF, notification_period=0): log.write('** hello from [%d:%d] **' % (self._short_id, self._long_id)) self._Procedures.hello(self._long_id, self._short_id, 0, notification_period) return ser_num = prutils.convert_longid(int(self._long_id))[:3] mcode = 5 mdata_type = 64 mdata_value = chr(0) if seq == 0xFF: seq = self._dpr_seq.next() mdata = chr(mcode) + prutils.str_l( chr(mdata_type) + prutils.str_l(mdata_value) ) device_packet = '\xE4\x00' + chr(seq) + ser_num + mdata # prepare host protocol #final_hop_info = '\x00' * 11 final_hop_info = '\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00' relaying_repeater_ID = 0 repeater_hop_info = '\x00' * 11 #data = chr(short_id) + '\x01\xF8' + final_hop_info + chr(relaying_repeater_ID) + repeater_hop_info + str_l(device_packet) data = chr(self._short_id) + chr(prutils.generate_seq('hpr')) + chr(0x30 + notification_period) + final_hop_info + chr(relaying_repeater_ID) + repeater_hop_info + prutils.str_l(device_packet) cmd = 0x30 data = chr(cmd) + data cmd_l = 2 + len(data) data = chr(cmd_l) + data host_protocol_message = data + prutils.crc16(data)[0] + '\x0A' #TODO: Use "make_host_packet" function to create device packet #host_protocol_message = make_host_packet( 0x30, data) #preparing packet to send #print hexdump(host_protocol_message) packet = host_protocol_message packet = prutils._make_f2_packet( host_protocol_message ) # self.prepare_transmitter() self._Procedures._Communicator.send(packet, 9)
def send_response(self, long_id, short_id, dpr_seq, mcode=0x06, state=0, notification_period=0): #log.write('RESPONSE') # state: 0 - OK, 1 .. see device protocol # prepare device protocol # mcode = 0x06 #print type(state) state = chr(state) seq = prutils.generate_seq("hpr") ser_num = prutils.convert_longid(int(long_id))[:3] mdata_value = chr(mcode) + chr(len(state)) + state device_packet = '\x14\x00' + chr(dpr_seq) + ser_num + mdata_value # prepare host protocol #final_hop_info = '\x00' * 11 final_hop_info = '\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00' relaying_repeater_ID = 0 repeater_hop_info = '\x00' * 11 data = chr(short_id) + chr(seq) + chr(0x30 + notification_period) + final_hop_info + chr(relaying_repeater_ID)\ + repeater_hop_info + prutils.str_l(device_packet) cmd = 0x30 data = chr(cmd) + data cmd_l = 2 + len(data) data = chr(cmd_l) + data host_protocol_message = data + prutils.crc16(data)[0] + '\x0A' packet = prutils._make_f2_packet(host_protocol_message) #self._Procedures._Communicator.add_to_queue(packet, 0, 5) self._Communicator.send(packet)
def get_lcd(self): msg = '\xF2\x03\x00\x00\x00' msg = '\x0D' + msg + crc16(msg) + '\x0A' self._Procedures._Communicator.send(msg) ans = self._Procedures._Communicator.wait(0x01) if ans: log.write("get_lcd:%s" % self.extract_lcd(ans)) return self.extract_lcd(ans) return ''
def get_lcd(self): msg = '\xF2\x03\x00\x00\x00' msg = '\x0D' + msg + crc16(msg) + '\x0A' self._Procedures._Communicator.send(msg) ans = self._Procedures._Communicator.wait(0x01) if ans: lcd = self.extract_lcd(ans) lcd = lcd.replace(chr(0xff), '#') log.write("get_lcd:%s" % lcd) # return lcd.decode('cp866') return lcd return ''
def __init__(self, long_id, short_id, dev_num, Procedures, ka_time_sec, update_needed): self._dev_type = _DeviceNames[3] Device.__init__(self, self._dev_type, long_id, short_id, dev_num, Procedures, ka_time_sec, update_needed) # delete source device # if device._dev_type != _DeviceNames[MOTION_CAMERA]: # log.write("Incorrect device for motion camera") self.image_data = FAKE_IMAGE self.crc16 = prutils.chars_to_int(prutils.crc16(self.image_data)) # !!!?? self.file_size = len(self.image_data) self.row = 1 self.zone = 255 self.files_amount = 10
def send_response(self, mcode, seq=0xFF, amount=1, notification_period=0, state=0, return_packet=False): if(mcode == 0x06): log.write('** response from [%d:%d] **' % (self._short_id, self._long_id)) elif(mcode == 0x07): log.write('** confirm from [%d:%d] **' % (self._short_id, self._long_id)) if amount > 1: log.write("--multiply--: %d" % amount) # state: 0 - OK, 1 .. see device protocol # prepare device protocol #print type(state) state = chr(state) if seq == 0xFF: seq = self._dpr_seq.next() ser_num = prutils.convert_longid(int(self._long_id))[:3] mdata_value = '' # mdata_value = chr(mcode) + chr(len(state)) + state for i in range(amount): mdata_value += chr(len(state)) + state mdata_value = chr(mcode) + mdata_value device_packet = '\x14\x00' + chr(seq) + ser_num + mdata_value # prepare host protocol #final_hop_info = '\x00' * 11 final_hop_info = '\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00' relaying_repeater_ID = 0 repeater_hop_info = '\x00' * 11 data = chr(self._short_id) + chr(prutils.generate_seq("hpr")) + chr(0x30 + notification_period) + final_hop_info + chr(relaying_repeater_ID)\ + repeater_hop_info + prutils.str_l(device_packet) cmd = 0x30 data = chr(cmd) + data cmd_l = 2 + len(data) data = chr(cmd_l) + data host_protocol_message = data + prutils.crc16(data)[0] + '\x0A' packet = prutils._make_f2_packet( host_protocol_message ) #self._Procedures._Communicator.add_to_queue(packet, 0, 5) if return_packet == False: # self.prepare_transmitter() self._Procedures._Communicator.send(packet) else: return packet