def tester_ble(com, results, ws): # BLEモードへ切り替え utils.command_send(com, 'm003\r', None) # BLEスキャン ret = commands.getstatusoutput('./get_rssi.sh %s' % config.TESTER_SUFFIX) if ret[0] == 0: rssi = ret[1].split()[1] msg = '{"tester":"BLE","result":true,"RSSI":%s}' % rssi else: msg = '{"tester":"BLE","result":false}' utils.websocket_send(ws, msg, results) # 選択モードへ切り替え utils.command_send(com, 'm000\r', None)
def tester_usb(com, results, ws): # USBモードへ切り替え utils.command_send(com, 'm002\r', None) # USB認識チェック for i in range(0, 10): ret = commands.getstatusoutput('lsusb -d 0930:1703') if len(ret[1]) > 0: msg = '{"tester":"USB","result":true}' utils.websocket_send(ws, msg, results) break; else: msg = '{"tester":"USB","result":false}' utils.websocket_send(ws, msg, results) # 選択モードへ切り替え utils.command_send(com, 'm000\r', None)
def check_VSYS(com, logger): #TZ_VSYS(1/2)計測 line = utils.command_send(com, "V001\r", logger) line = line[line.find('{'):] res = json.loads(line) if res == None: return False #範囲チェック(治具No.1 3.81[V]-4.05[V]) if (res['volt'] < config.LOWER_VSYS) or (res['volt'] > config.UPPER_VSYS): return False return True
def check_3V3(com, logger): #TZ_D3V3(1/2)計測 line = utils.command_send(com, "V002\r", logger) line = line[line.find('{'):] res = json.loads(line) if res == None: return False #範囲チェック(治具No.1 3.12[V]-3.44[V]) if (res['volt'] < config.LOWER_3V3) or (res['volt'] > config.UPPER_3V3): return False return True
def check_CHG(com, logger): print "L:%d, U:%d" % (config.LOWER_CHG, config.UPPER_CHG) #CHG(1/2)計測 line = utils.command_send(com, "V003\r", logger) line = line[line.find('{'):] res = json.loads(line) if res == None: return False #範囲チェック(治具No.1 3.80[V]-4.04[V]) if (res['volt'] < config.LOWER_CHG) or (res['volt'] > config.UPPER_CHG): return False return True
def write_breakout(com): ret = False mount = TZ1IF_DEV #マウント if os.path.exists(mount): ret = mount_tz1(mount) if ret[0] != 0: print("Mount failed: %s" % ret[1]) return False else: print("Device %s is not exists." % mount) return False #ISPモードで起動してるか確認 fwtype = check_type() if fwtype == "Interface": return True #すでに書き込まれている if fwtype == "": print("Invalid firmware written.") return False #想定外のファームが書かれている #ファーム書き込みスクリプト実行 res = commands.getstatusoutput("sudo ./LinuxNXPISP.sh %s" % FIRM_IF) if res[1].find('Firmware update complete!') > -1: ret = True #USB電源再投入 utils.command_send(com, 'U001\r', None) time.sleep(0.5) utils.command_send(com, 'U000\r', None) ##認識待ち cnt = 0 while os.path.exists(mount) == False: if cnt > 100: ret = False break cnt = cnt + 1 time.sleep(0.1) return ret
def tester_rtc(com, logger, results, ws): start_time = datetime.datetime(2015, 1, 1, 0, 0, 0) line = utils.command_send(com, 'r000\r', logger) res = json.loads(line) if res: now_time = datetime.datetime(res['year'], res['month'], res['day'], res['hour'], res['minute'], res['second']) delta = now_time - start_time if delta.seconds > 1: msg = '{"tester":"RTC","result":true,"seconds":%d}' % delta.seconds else: msg = '{"tester":"RTC","result":false,"seconds":%d}' % delta.seconds utils.websocket_send(ws, msg, results) else: msg = '{"tester":"RTC","result":false}' utils.websocket_send(ws, msg, results)
def tester_sw(com, results, ws): com.timeout = 5 #電源SW ON utils.command_send(com, 'P001\r', None) #ADC電源ON utils.command_send(com, 'A001\r', None) #起動待ち line = com.readline() print(line) if line.find('TZ1 TEST PROGRAM') == -1: msg = '{"tester":"RUN","result":false}' utils.websocket_send(ws, msg, results) return False utils.websocket_send(ws, '{"tester":"RUN","result":true}', results) #電源SW OFF utils.command_send(com, 'P000\r', None) #SW1(GPIO_1)チェック com.timeout = 20 line = com.readline() print(line) if line.find('POWER INIT') == -1: utils.websocket_send(ws, '{"tester":"SW1","result":false}', results) return False utils.websocket_send(ws, '{"tester":"SW1","result":true}', results) #SW2(GPIO_6)チェック com.timeout = 20 line = com.readline() print(line) if line.find("RUNNING") == -1: utils.websocket_send(ws, '{"tester":"SW2","result":false}', results) return False #Testerファーム起動完了 utils.websocket_send(ws, '{"tester":"SW2","result":true}', results)
def erase_tester(com): com.flushInput() utils.command_send(com, 'P000\r', None) #電源SW OFF utils.command_send(com, 'R001\r', None) #リセット ON utils.command_send(com, 'E001\r', None) #イレース ON time.sleep(0.1) utils.command_send(com, 'P001\r', None) #電源SW ON utils.command_send(com, 'R000\r', None) #リセット OFF time.sleep(3) utils.command_send(com, 'E000\r', None) #イレース OFF utils.command_send(com, 'P000\r', None) #電源SW OFF
def check(com, ws, logger, results): #USB電源OFF utils.command_send(com, 'U001\r', None) time.sleep(0.5) #USB電源ON utils.command_send(com, 'U000\r', None) #TZ1電源SW ON line = utils.command_send(com, "P001\r", None) if not line: utils.websocket_send(ws, '{"tester":"Current","result":false}', results) return False time.sleep(1) #過電流検出チェック line = utils.command_send(com, "C000\r", logger) res = json.loads(line) if res == None: utils.websocket_send(ws, '{"tester":"Current","result":false}', results) return False if res['current'] == 1: utils.websocket_send(ws, '{"tester":"Current","result":false}', results) return False utils.websocket_send(ws, '{"tester":"Current","result":true}', results) cnt = 0 while True: #バッテリー充電Enable Hi utils.command_send(com, "B001\r", None) time.sleep(0.5) #バッテリー充電Enable Lo utils.command_send(com, "B000\r", None) time.sleep(0.5) if check_CHG(com, logger): break cnt = cnt + 1 if cnt > 10: utils.websocket_send(ws, '{"tester":"Voltage","result":false}', results) return False time.sleep(1) #TZ_VSYS(1/2)計測 if check_VSYS(com, logger) == False: utils.websocket_send(ws, '{"tester":"Voltage","result":false}', results) return False #TZ_D3V3(1/2)計測 if check_3V3(com, logger) == False: utils.websocket_send(ws, '{"tester":"Voltage","result":false}', results) return False utils.websocket_send(ws, '{"tester":"Voltage","result":true}', results) #TZ1電源SW OFF utils.command_send(com, "P000\r", None) return True
def off(com): #USB電源OFF utils.command_send(com, 'U001\r', None)
def tester_io(com, logger, results, ws): #IOモードへ切り替え utils.command_send(com, 'm001\r', None) time.sleep(0.5) #DIチェック di_res = True ##治具のDOを設定 (101010....) io_pattern = {'7':1,'8':0,'9':1,'16':0,'17':1,'18':0,'19':1,'20':0,'21':1,'22':0,'23':1} for key in io_pattern.iterkeys(): cmd = "" if io_pattern[key] == 0: cmd = "OL" else: cmd = "OH" utils.command_send(com, "%s%s\r" % (cmd, key.zfill(2)), None) ##TZ1のDIを読む line = utils.command_send(com, 'g000\r', logger) res = json.loads(line) di_res = di_res and (res['gpio'] == io_pattern) ##治具のDOを設定 (010101....) io_pattern = {'7':0,'8':1,'9':0,'16':1,'17':0,'18':1,'19':0,'20':1,'21':0,'22':1,'23':0} for key in io_pattern.iterkeys(): cmd = "" if io_pattern[key] == 0: cmd = "OL" else: cmd = "OH" utils.command_send(com, "%s%s\r" % (cmd, key.zfill(2)), None) ##TZ1のDIを読む line = utils.command_send(com, 'g000\r', logger) res = json.loads(line) di_res = di_res and (res['gpio'] == io_pattern) utils.websocket_send(ws, '{"tester":"DI","result":true}', results) if di_res: utils.websocket_send(ws, '{"tester":"DI","result":true}', results) else: utils.websocket_send(ws, '{"tester":"DI","result":false}', results) #ADCチェック adc_res = True adc_val = [0, 0, 0, 0, 0] try: ##ADCC12 Ch0 line = utils.command_send(com, 'a000\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: adc_val[0] = res['adc'] ##ADCC12 Ch1 line = utils.command_send(com, 'a001\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: adc_val[1] = res['adc'] ##ADCC12 Ch2 line = utils.command_send(com, 'a002\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: adc_val[2] = res['adc'] ##ADCC12 Ch3 line = utils.command_send(com, 'a003\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: adc_val[3] = res['adc'] ##ADCC24 Ch2 line = utils.command_send(com, 'a102\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: adc_val[4] = res['adc'] ## 判定 ### ADCC12 Ch0 adc_res = adc_res and (adc_val[0] < 64000) and (adc_val[0] > 48000) ### ADCC12 Ch1 adc_res = adc_res and (adc_val[1] < adc_val[0]) ### ADCC12 Ch2 adc_res = adc_res and (adc_val[2] < adc_val[1]) ### ADCC12 Ch3 adc_res = adc_res and (adc_val[3] < adc_val[2]) and (adc_val[3] > 16000) ### ADCC24 Ch2 adc_res = adc_res and (adc_val[4] < 1800000) and (adc_val[4] > 800000) ### 判定結果通知 if adc_res: utils.websocket_send(ws, '{"tester":"ADC","result":true}', results) else: utils.websocket_send(ws, '{"tester":"ADC","result":false}', results) except: utils.websocket_send(ws, '{"tester":"ADC","result":false}', results) #ADC電源OFF utils.command_send(com, 'A000\r', None) ## UART Echo time.sleep(0.1) echo_msg = 'The quick brown fox jumps over the lazy dog\n' com_echo = serial.Serial('/dev/ttyACM0', 9600) com_echo.timeout = 5 com_echo.flushInput() com_echo.write(echo_msg) line = com_echo.readline() logger.write('{"cmd":"UART","send":"%s","recv":"%s"}' % (echo_msg.strip(), line.strip())) if line == echo_msg: utils.websocket_send(ws, '{"tester":"UART","result":true}', results) else: utils.websocket_send(ws, '{"tester":"UART","result":false}', results) com_echo.close() ## I2C PingPong line = utils.command_send(com, 'i000\r', logger) try: line = line[line.find('{'):] res = json.loads(line) if res: if res['recv'] == 'PONG': utils.websocket_send(ws, '{"tester":"I2C","result":true}', results) else: utils.websocket_send(ws, '{"tester":"I2C","result":false}', results) else: utils.websocket_send(ws, '{"tester":"I2C","result":false}', results) except: utils.websocket_send(ws, '{"tester":"I2C","result":false}', results) ## 9軸センサ sens_9axis_res = True line = utils.command_send(com, '9000\r', logger) try: line = line.strip() print(line) res = json.loads(line) if res: ##ジャイロ sens_9axis_res = sens_9axis_res and (res['gyro'][0] > -100) and (res['gyro'][0] < 100) sens_9axis_res = sens_9axis_res and (res['gyro'][1] > -100) and (res['gyro'][1] < 100) sens_9axis_res = sens_9axis_res and (res['gyro'][2] > -100) and (res['gyro'][2] < 100) ##加速度 sens_9axis_res = sens_9axis_res and (res['accel'][0] > -200) and (res['accel'][0] < 200) sens_9axis_res = sens_9axis_res and (res['accel'][1] > -200) and (res['accel'][1] < 200) sens_9axis_res = sens_9axis_res and (res['accel'][2] > 1843) and (res['accel'][2] < 2253) #1.0G +-10% ##地磁気 sens_9axis_res = sens_9axis_res and not ((res['magnetometer'][0] == 0) and (res['magnetometer'][1] == 0) and (res['magnetometer'][2] == 0)) ##判定結果通知 if sens_9axis_res: utils.websocket_send(ws, '{"tester":"9-Axis","result":true}', results) else: utils.websocket_send(ws, '{"tester":"9-Axis","result":false}', results) else: utils.websocket_send(ws, '{"tester":"9-Axis","result":false}', results) except: print "Exception: ", sys.exc_info()[0] # 気圧センサー sens_ap_res = True line = utils.command_send(com, 'p000\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: sens_ap_res = ((res['airpressure'] / 256) > 80000) and ((res['airpressure'] / 256) < 120000) if sens_ap_res: utils.websocket_send(ws, '{"tester":"Airpressure","result":true}', results) else: utils.websocket_send(ws, '{"tester":"Airpressure","result":false}', results) else: utils.websocket_send(ws, '{"tester":"Airpressure","result":false}', results) # 充電ICステータス line = utils.command_send(com, 'c000\r', logger) line = line[line.find('{'):] res = json.loads(line) if res: if res['reg'][0] == 0x10: #充電中ステータスでFailなし utils.websocket_send(ws, '{"tester":"Charger","result":true}', results) else: utils.websocket_send(ws, '{"tester":"Charger","result":false}', results) else: utils.websocket_send(ws, '{"tester":"Charger","result":false}', results) #選択モードへ切り替え utils.command_send(com, 'm000\r', None)
def tester_terminate(com): utils.command_send(com, 'm999\r', None)