Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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