def record_sleep(device_name): directory = "." # Reset module mc = ModuleConnector(device_name) x4m200 = mc.get_x4m200() x4m200.module_reset() mc.close() sleep(3) # Assume an X4M300/X4M200 module and try to enter XEP mode mc = ModuleConnector(device_name) x4m200 = mc.get_x4m200() recorder = mc.get_data_recorder() recorder = mc.get_data_recorder() recorder.subscribe_to_file_available(pymoduleconnector.AllDataTypes, on_file_available) recorder.subscribe_to_meta_file_available(on_meta_file_available) recorder.start_recording( DataType.BasebandApDataType | DataType.SleepDataType, directory) # Stop running application and set module in manual mode. try: x4m200.set_sensor_mode(0x01, 0) # Make sure no profile is running except RuntimeError: # Profile not running, OK pass # Load x4m200 respiration detection profile x4m200.load_profile(0x47fabeba) try: x4m200.set_sensor_mode(0x01, 0) #RUN mode except RuntimeError: # Sensor already stopped, OK pass x4m200.set_output_control(0x610a3b00, 1) while True: rdata = x4m200.read_message_respiration_sleep() print( "Frame: {} RPM: {} Distance: {} Movement Slow: {} Movement Fast: {}" .format(rdata.frame_counter, rdata.respiration_rate, rdata.distance, rdata.movement_slow, rdata.movement_fast)) sleep(0.2)
def main(): parser = ArgumentParser() parser.add_argument("-d", "--device", dest="device_name", help="device file to use", metavar="FILE") parser.add_argument( "-t", "--data_type", dest="data_type", default="iq", help="Data to get. iq or ap", # only one option can be choose metavar="TYPE") parser.add_argument("-r", "--record", action="store_true", default=False, dest="record", help="Enable recording") parser.add_argument("-f", "--file", dest="meta_filename", metavar="FILE", help="meta file from recording") args = parser.parse_args() if not args.meta_filename: if args.device_name: device_name = args.device_name else: try: device_name = auto()[0] except: print("Fail to find serial port, please specify it by use -d!") raise xt_sensor = configure_sensor_bb_output(device_name, args.record, args.data_type) else: player = start_player(meta_filename=args.meta_filename) mc = ModuleConnector(player, log_level=0) xt_sensor = mc.get_x4m200() plot_sensor_bb_message(xt_sensor, args.data_type)
def main(): parser = OptionParser() parser.add_option( "-d", "--device", dest="device_name", help="Seral port name used by target XeThru sensor, i.e com8, /dev/ttyACM0", metavar="FILE") parser.add_option( "-r", "--record", action="store_true", default=False, dest="record", help="Enable recording") parser.add_option( "-f", "--file", dest="meta_filename", metavar="FILE", help="meta file from recording") (options, args) = parser.parse_args() if not options.meta_filename: if options.device_name: device_name = options.device_name else: try: device_name = auto()[0] except: print("Fail to find serial port, please specify it by use -d!") raise print_module_info(device_name) x4m200 = configure_x4m200( device_name, options.record, x4m200_par_settings) else: player = start_player(meta_filename=options.meta_filename) mc = ModuleConnector(player, log_level=0) x4m200 = mc.get_x4m200() print_x4m200_messages(x4m200)
def print_module_info(device_name): # Stop running application and set module in manual mode. mc = ModuleConnector(device_name) app = mc.get_x4m200() # Stop running application and set module in manual mode. try: app.set_sensor_mode(XTS_SM_STOP, 0) # Make sure no profile is running. except RuntimeError: # Profile not running, OK pass try: app.set_sensor_mode(XTS_SM_MANUAL, 0) # Manual mode. except RuntimeError: # Maybe already running at X4driver level pass xep = mc.get_xep() pong = xep.ping() print("") print("********** XeThru Module Information **********") print("") print('Received pong= ', hex(pong) + ' connection build!') print('FirmWareID = ', xep.get_system_info(XTID_SSIC_FIRMWAREID)) print('Version = ', xep.get_system_info(XTID_SSIC_VERSION)) print('Build = ', xep.get_system_info(XTID_SSIC_BUILD)) print('VersionList = ', xep.get_system_info(XTID_SSIC_VERSIONLIST)) # Following three item only supported by XeThru Sensor, e.g.X4M200, X4M300. X4M03 does not these information and will feedback error message when read. try: OrderCode = "X4Mxx" OrderCode = xep.get_system_info(XTID_SSIC_ORDERCODE) print('OrderCode = ', OrderCode) print('ItemNumber = ', xep.get_system_info(XTID_SSIC_ITEMNUMBER)) print('SerialNumber = ', xep.get_system_info(XTID_SSIC_SERIALNUMBER)) except: # This is not a sensor but a development kit running XEP. pass # Uncomment following line to enable print X4 setting from XeThru module # print_x4_settings(xep) mc.close() return OrderCode
def configure_x4m200(device_name, record=False, x4m200_settings=x4m200_par_settings): mc = ModuleConnector(device_name) x4m200 = mc.get_x4m200() ''' Following setting will enalbe debug info which contains MCU workload mc = ModuleConnector(device_name, log_level=2) x4m200 = mc.get_x4m200() x4m200.set_debug_level(9) mc.get_not_supported().set_parameter_file( "profiling.par", "[Debug]\nprofileReportPeriod=10;\n") ''' print('Clearing buffer') while x4m200.peek_message_baseband_iq(): x4m200.read_message_baseband_iq() while x4m200.peek_message_baseband_ap(): x4m200.read_message_baseband_ap() while x4m200.peek_message_respiration_legacy(): x4m200.read_message_respiration_legacy() while x4m200.peek_message_respiration_sleep(): x4m200.read_message_respiration_sleep() while x4m200.peek_message_respiration_movinglist(): x4m200.read_message_respiration_movinglist() while x4m200.peek_message_pulsedoppler_byte(): x4m200.read_message_pulsedoppler_byte() while x4m200.peek_message_pulsedoppler_float(): x4m200.read_message_pulsedoppler_float() while x4m200.peek_message_noisemap_byte(): x4m200.read_message_noisemap_byte() while x4m200.peek_message_noisemap_float(): x4m200.read_message_noisemap_float() print('Start recorder if recording is enabled') if record: start_recorder(mc) print('Ensuring no Xethru profile running') try: x4m200.set_sensor_mode(XTID_SM_STOP, 0) except RuntimeError: print('Xethru module could not enter stop mode') print('Loading new Xethru profile') # x4m200.load_profile(XTS_ID_APP_RESPIRATION_2)# XTS_ID_APP_RESPIRATION_2 for adult and XTS_ID_APP_RESPIRATION_3 for baby # XTS_ID_APP_RESPIRATION_2 for adult and XTS_ID_APP_RESPIRATION_3 for baby x4m200.load_profile(XTS_ID_APP_RESPIRATION_2) print('Set parameters') for variable, value in x4m200_settings.items(): try: if 'output_control' in variable: variable = 'output_control' setter_set = getattr(x4m200, 'set_' + variable) except AttributeError as e: print("X4M200 does not have a setter function for '%s'." % variable) raise e if isinstance(value, tuple): setter_set(*value) else: setter_set(value) print("Setting %s to %s" % (variable, value)) print_sensor_settings(x4m200) print('Set module to RUN mode') try: x4m200.set_sensor_mode(XTID_SM_RUN, 0) # RUN mode except RuntimeError: print('Xethru module cloud not enter run mode') return x4m200