def query_sysex_range( self, first_addr, last_addr ):
self.receive_cond.acquire()
span = Katana.decode_array(last_addr) - Katana.decode_array(first_addr)
offset = Katana.encode_scalar( span + 1 )
self.data = []
self.addr = []
msg = list( first_addr )
msg.extend( offset )
# Calculate expected number of chunks. Maximum chunk is 255 bytes
# with max payload of 241 data bytes/
self.target_count = ((span + 1) // 241) + 1
self._send( QUERY_PREFIX, msg )
result = self.receive_cond.wait(5)
if not result:
syslog.syslog( "Error: Timeout on cond wait" )
self.receive_cond.release()
return self.addr, self.data
# Bias 4-byte sysex array by scalar value
评论列表
文章目录