diff --git a/libraries/AP_MSP/Tools/msposd.py b/libraries/AP_MSP/Tools/msposd.py index 2be52552d1..d7d34922bd 100755 --- a/libraries/AP_MSP/Tools/msposd.py +++ b/libraries/AP_MSP/Tools/msposd.py @@ -69,7 +69,7 @@ pygame.display.set_caption('MSP Display') def item_to_pos(item): '''map MSP item to a X,Y tuple or None''' - if item >= msp.msp_osd_config['osd_item_count']: + if item is None or item >= msp.msp_osd_config.get('osd_item_count',0): return None pos = msp.msp_osd_config['osd_items'][item] if pos < 2048: @@ -91,7 +91,7 @@ def display_text(item, message): slen = len(message) px = X * FontWidth py = Y * FontHeight - textRect.center = (px+textRect.width/2, py+textRect.height/2) + textRect.center = (px+textRect.width//2, py+textRect.height//2) display_surface.blit(text, textRect) def display_all(): diff --git a/libraries/AP_MSP/Tools/pymsp.py b/libraries/AP_MSP/Tools/pymsp.py index 559b550809..b61cbb7226 100755 --- a/libraries/AP_MSP/Tools/pymsp.py +++ b/libraries/AP_MSP/Tools/pymsp.py @@ -8,6 +8,7 @@ import struct import time +import sys class MSPItem: def __init__(self, name, fmt, fields): @@ -198,27 +199,7 @@ class PyMSP: self.msp_name = { 'name':None } - self.msp_osd_config = { - 'feature':None, # 8 - 'video_system':None, # 8 - 'units':None, # 8 - 'rssi_alarm':None, # 8 - 'cap_alarm':None, # 16 - 'unusaed_1':None, # 8 - 'osd_item_count':None, # 8 - 'alt_alarm':None, # 16 - 'osd_items': [None] * 60, # x16 - 'stats_item_count':None, # 8 - 'stats_items': [None] * 30, # x16 - 'timer_count':None, # 8 - 'timer_items': [None] * 10, # 16 - 'legacy_warnings':None, # 16 - 'warnings_count':None, # 8 - 'enabled_warnings':None, # 32 - 'profiles':None, # 8 - 'selected_profile':None, # 8 - 'osd_overlay':None, # 8 - } + self.msp_osd_config = {} self.inBuf = bytearray([0] * 255) self.p = 0 @@ -271,19 +252,19 @@ class PyMSP: def read16(self): '''signed 16 bit number''' - value, = struct.unpack("= 3: + cc = chr(c) + ci = c + else: + cc = c + ci = ord(c) if self.c_state == self.IDLE: - if c == '$': + if cc == '$': self.c_state = self.HEADER_START else: self.c_state = self.IDLE elif self.c_state == self.HEADER_START: - if c == 'M': + if cc == 'M': self.c_state = self.HEADER_M else: self.c_state = self.IDLE elif self.c_state == self.HEADER_M: - if c == '>': + if cc == '>': self.c_state = self.HEADER_ARROW - elif c == '!': + elif cc == '!': self.c_state = self.HEADER_ERR else: self.c_state = self.IDLE @@ -432,34 +422,33 @@ class PyMSP: elif self.c_state == self.HEADER_ARROW or self.c_state == self.HEADER_ERR: self.err_rcvd = (self.c_state == self.HEADER_ERR) #print (struct.unpack('= self.dataSize: # compare calculated and transferred checksum - #print "Final step..." - if ((self.checksum&0xFF) == ((struct.unpack(' 32768: self.msp_raw_imu['gyrz'] -= 65536 - print "size: %d, accx: %f, accy: %f, accz: %f, gyrx: %f, gyry: %f, gyrz: %f " %(self.msp_raw_imu['size'], self.msp_raw_imu['accx'], self.msp_raw_imu['accy'], self.msp_raw_imu['accz'], self.msp_raw_imu['gyrx'], self.msp_raw_imu['gyry'], self.msp_raw_imu['gyrz']) + print("size: %d, accx: %f, accy: %f, accz: %f, gyrx: %f, gyry: %f, gyrz: %f " %(self.msp_raw_imu['size'], self.msp_raw_imu['accx'], self.msp_raw_imu['accy'], self.msp_raw_imu['accz'], self.msp_raw_imu['gyrx'], self.msp_raw_imu['gyry'], self.msp_raw_imu['gyrz'])) time.sleep(0.04) timer = timer + (time.time() - start) start = time.time()