def factory_install(device_barcode): '''main factory installer''' start_time = time.time() if not args.test: colour_text.clear_screen() # start a new log directory on each run logger.new_log_dir() logger.reopen_logfile() logdir = logger.get_log_dir() logger.info("Logging to %s" % logdir) logger.info("Device barcode %s" % device_barcode) colour_text.print_blue(''' ================================================== | Starting installation. Barcode is %s ================================================== ''' % device_barcode) logger.info(time.ctime()) if args.erase: if not jtag.erase_firmwares(): colour_text.print_fail(''' ====================================== | FAILED: JTAG firmware erase failed ====================================== ''') logger.critical("JTAG firmware erase failed") return False if not args.nofw and not jtag.load_all_firmwares(retries=3): colour_text.print_fail(''' ====================================== | FAILED: JTAG firmware install failed ====================================== ''') logger.critical("JTAG firmware install failed") return False if args.erase: if not connection.erase_parameters(): colour_text.print_fail(''' ========================================== | FAILED: Failed to erase parameters ========================================== ''') logger.critical("Failed to erase parameters") return False if not accelcal.accel_calibrate_retries(retries=4): colour_text.print_fail(''' ========================================== | FAILED: Accelerometer calibration failed ========================================== ''') logger.critical("Accelerometer calibration failed") return False # all OK colour_text.print_green(''' ================================================ | Device: %s | PASSED: Factory install complete (%u seconds) ================================================ ''' % (device_barcode, (time.time() - start_time))) logger.info("Factory install complete (%u seconds)" % (time.time() - start_time)) return True
from argparse import ArgumentParser parser = ArgumentParser(description=__doc__) parser.add_argument("--test", default=False, action='store_true', help="run in test loop") parser.add_argument("--once", default=False, action='store_true', help="run one install only") parser.add_argument("--nofw", default=False, action='store_true', help="don't reload firmware") parser.add_argument("--erase", default=False, action='store_true', help="erase firmware and parameters") parser.add_argument("--monitor", default=None, help="monitor address") parser.add_argument("--barcode", default=None, help="override barcode") args = parser.parse_args() if args.monitor: REMOTE_MONITOR['ref'] = args.monitor + ":16550" REMOTE_MONITOR['test'] = args.monitor + ":16551" colour_text.print_blue("Starting up") def factory_install(device_barcode): '''main factory installer''' start_time = time.time() if not args.test: colour_text.clear_screen() # start a new log directory on each run logger.new_log_dir() logger.reopen_logfile() logdir = logger.get_log_dir() logger.info("Logging to %s" % logdir) logger.info("Device barcode %s" % device_barcode)
def factory_install(device_barcode): '''main factory installer''' start_time = time.time() script_dir = os.path.dirname(os.path.abspath(__file__)) ete.command_bytes('test_work') if not args.test: colour_text.clear_screen() # start a new log directory on each run logger.new_log_dir() logger.reopen_logfile() logdir = logger.get_log_dir() logger.info("Logging to %s" % logdir) #logger.info("Device barcode %s" % device_barcode) colour_text.print_blue(''' ================================================== | Starting installation. Barcode is %s ================================================== ''' % device_barcode) logger.info(time.ctime()) if args.erase: if not jtag.erase_firmwares(): colour_text.print_fail(''' ====================================== | FAILED: JTAG firmware erase failed ====================================== ''') logger.critical("JTAG firmware erase failed") ete.command_bytes('test_fail') ete.command_bytes('reset') ete.accel(10000) ete.yawspeed(5000) ete.rollspeed(10000) return False if not args.nofw and not jtag.load_all_firmwares(retries=3): colour_text.print_fail(''' ====================================== | FAILED: JTAG firmware install failed ====================================== ''') logger.critical("JTAG firmware install failed") ete.command_bytes('test_fail') ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) try: conn = connection.Connection(ref_only=True) rotate.center_servos(conn) except Exception as ex: print("Failed to center servos: %s" % ex) pass return False if args.erase: if not connection.erase_parameters(): colour_text.print_fail(''' ========================================== | FAILED: Failed to erase parameters ========================================== ''') logger.critical("Failed to erase parameters") ete.command_bytes('test_fail') ete.position(0, 0) ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) return False if not accelcal.accel_calibrate_retries(retries=4): colour_text.print_fail(''' ========================================== | FAILED: Accelerometer calibration failed ========================================== ''') logger.critical("Accelerometer calibration failed") ete.command_bytes('test_fail') ete.position(0, 0) ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) return False # all OK logger.info("Writting OTP region in STM32") #Add OTP HERE script_dir = os.path.dirname(os.path.abspath(__file__)) if args.otp_show: p1 = Popen([ 'python', script_dir + '/otp_program.py', '--port', FMU_DEBUG, '--only-display', "abc" ], stdin=PIPE, stdout=PIPE, stderr=PIPE) output, err = p1.communicate() logger.info(output) time.sleep(1) #conn = connection.Connection(ref_only=False) #otp_program_mod.Display_OTP(conn) def getMacAddress(): if sys.platform == 'win32': for line in os.popen("ipconfig /all"): if line.lstrip().startswith('Physical Address'): mac = line.split(':')[1].strip().replace('-', ':') break else: for line in os.popen("/sbin/ifconfig"): if line.find('Ether') > -1: mac = line.split()[4] break return mac print("Manufacturer info : Hex Technology, \xA9 ProfiCNC 2016") print "MAC Address:", getMacAddress( ) #.join(['{:02x}'.format((uuid.getnode() >> i) & 0xff) for i in range(0,8*6,8)][::-1]) colour_text.print_blue('''Barcode is %s''' % device_barcode) print("date of testing :" + time.strftime("%x")) print("time of testing :" + time.strftime("%X")) accel_data0 = "%f,%f,%f,%f,%f,%f" % ( test_sensors.offset[0][0], test_sensors.offset[0][1], test_sensors.offset[0][2], test_sensors.scale_factor[0][0], test_sensors.scale_factor[0][1], test_sensors.scale_factor[0][2]) accel_data2 = "%f,%f,%f,%f,%f,%f" % ( test_sensors.offset[2][0], test_sensors.offset[2][1], test_sensors.offset[2][2], test_sensors.scale_factor[2][0], test_sensors.scale_factor[2][1], test_sensors.scale_factor[2][2]) print "Accel :", accel_data0 print "Accel :", accel_data2 if True: #args.otp_write: #Manufacturing Info p2 = Popen([ 'python', script_dir + '/otp_program.py', '--port', FMU_DEBUG, 'Hex Technology, \xA9 ProfiCNC 2016', getMacAddress(), device_barcode, time.strftime("%x"), time.strftime("%X"), '--', str(accel_data0), str(accel_data2) ], stdin=PIPE, stdout=PIPE, stderr=PIPE) output, err = p2.communicate() logger.info(output) logger.info(err) time.sleep(1) #Display #p3 = Popen(['python', script_dir + '/otp_program.py', '--port', FMU_DEBUG,'--only-display',"abc"], stdin=PIPE, stdout=PIPE, stderr=PIPE) #output, err = p3.communicate() #logger.info(output) colour_text.print_green(''' ================================================ | Device: %s | PASSED: Factory install complete (%u seconds) ================================================ ''' % (device_barcode, (time.time() - start_time))) logger.info("Factory install complete (%u seconds)" % (time.time() - start_time)) ete.command_bytes('test_pass') ete.position(0, 0) ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) return True
def factory_install(device_barcode): '''main factory installer''' start_time = time.time() script_dir = os.path.dirname(os.path.abspath(__file__)) ete.command_bytes('test_work') if not args.test: colour_text.clear_screen() # start a new log directory on each run logger.new_log_dir() logger.reopen_logfile() logdir = logger.get_log_dir() logger.info("Logging to %s" % logdir) #logger.info("Device barcode %s" % device_barcode) colour_text.print_blue(''' ================================================== | Starting installation. Barcode is %s ================================================== ''' % device_barcode) logger.info(time.ctime()) if args.erase: if not jtag.erase_firmwares(): colour_text.print_fail(''' ====================================== | FAILED: JTAG firmware erase failed ====================================== ''') logger.critical("JTAG firmware erase failed") ete.command_bytes('test_fail') ete.command_bytes('reset') ete.accel(10000) ete.yawspeed(5000) ete.rollspeed(10000) return False if not args.nofw and not jtag.load_all_firmwares(retries=3): colour_text.print_fail(''' ====================================== | FAILED: JTAG firmware install failed ====================================== ''') logger.critical("JTAG firmware install failed") ete.command_bytes('test_fail') ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) try: conn = connection.Connection(ref_only=True) rotate.center_servos(conn) except Exception as ex: print("Failed to center servos: %s" % ex) pass return False if args.erase: if not connection.erase_parameters(): colour_text.print_fail(''' ========================================== | FAILED: Failed to erase parameters ========================================== ''') logger.critical("Failed to erase parameters") ete.command_bytes('test_fail') ete.position(0, 0) ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) return False if not accelcal.accel_calibrate_retries(retries=4): colour_text.print_fail(''' ========================================== | FAILED: Accelerometer calibration failed ========================================== ''') logger.critical("Accelerometer calibration failed") ete.command_bytes('test_fail') ete.position(0, 0) ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) return False # all OK logger.info("Writting OTP region in STM32") #Add OTP HERE script_dir = os.path.dirname(os.path.abspath(__file__)) if args.otp_show: p1 = Popen(['python', script_dir + '/otp_program.py', '--port', FMU_DEBUG,'--only-display',"abc"], stdin=PIPE, stdout=PIPE, stderr=PIPE) output, err = p1.communicate() logger.info(output) time.sleep(1) #conn = connection.Connection(ref_only=False) #otp_program_mod.Display_OTP(conn) def getMacAddress(): if sys.platform == 'win32': for line in os.popen("ipconfig /all"): if line.lstrip().startswith('Physical Address'): mac = line.split(':')[1].strip().replace('-',':') break else: for line in os.popen("/sbin/ifconfig"): if line.find('Ether') > -1: mac = line.split()[4] break return mac print("Manufacturer info : Hex Technology, \xA9 ProfiCNC 2016") print "MAC Address:",getMacAddress() #.join(['{:02x}'.format((uuid.getnode() >> i) & 0xff) for i in range(0,8*6,8)][::-1]) colour_text.print_blue('''Barcode is %s''' % device_barcode) print("date of testing :" + time.strftime("%x")) print("time of testing :" + time.strftime("%X")) accel_data0 = "%f,%f,%f,%f,%f,%f" % (test_sensors.offset[0][0] ,test_sensors.offset[0][1] ,test_sensors.offset[0][2],test_sensors.scale_factor[0][0],test_sensors.scale_factor[0][1],test_sensors.scale_factor[0][2]) accel_data2 = "%f,%f,%f,%f,%f,%f" % (test_sensors.offset[2][0] ,test_sensors.offset[2][1] ,test_sensors.offset[2][2],test_sensors.scale_factor[2][0],test_sensors.scale_factor[2][1],test_sensors.scale_factor[2][2]) print "Accel :", accel_data0 print "Accel :", accel_data2 if True:#args.otp_write: #Manufacturing Info p2 = Popen(['python', script_dir + '/otp_program.py', '--port', FMU_DEBUG,'Hex Technology, \xA9 ProfiCNC 2016',getMacAddress(),device_barcode,time.strftime("%x"),time.strftime("%X"),'--',str(accel_data0),str(accel_data2)], stdin=PIPE, stdout=PIPE, stderr=PIPE) output, err = p2.communicate() logger.info(output) logger.info(err) time.sleep(1) #Display #p3 = Popen(['python', script_dir + '/otp_program.py', '--port', FMU_DEBUG,'--only-display',"abc"], stdin=PIPE, stdout=PIPE, stderr=PIPE) #output, err = p3.communicate() #logger.info(output) colour_text.print_green(''' ================================================ | Device: %s | PASSED: Factory install complete (%u seconds) ================================================ ''' % (device_barcode, (time.time() - start_time))) logger.info("Factory install complete (%u seconds)" % (time.time() - start_time)) ete.command_bytes('test_pass') ete.position(0, 0) ete.command_bytes('reset') ete.accel(100000) ete.yawspeed(5000) ete.rollspeed(10000) return True
parser.add_argument("--otp-show", default=False, action='store_true', help="show_otp") parser.add_argument("--otp-write", default=False, action='store_true', help="write_otp") args = parser.parse_args() if args.monitor: REMOTE_MONITOR['ref'] = args.monitor + ":16550" REMOTE_MONITOR['test'] = args.monitor + ":16551" colour_text.print_blue("Starting up") def factory_install(device_barcode): '''main factory installer''' start_time = time.time() script_dir = os.path.dirname(os.path.abspath(__file__)) ete.command_bytes('test_work') if not args.test: colour_text.clear_screen() # start a new log directory on each run logger.new_log_dir()