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)
Example #12
0
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)
Example #13
0
def tester_terminate(com):
	utils.command_send(com, 'm999\r', None)