コード例 #1
0
def test_multi_connection_receive(qtbot, test_app):
    con_a = DebugConnection(
        'TANTALUS_STAGE_1_ADDRESS',
        DEVICE_TYPE_TO_ID[DeviceType.TANTALUS_STAGE_1_FLARE],
        generate_radio_packets=False)
    con_b = DebugConnection(
        'TANTALUS_STAGE_2_ADDRESS',
        DEVICE_TYPE_TO_ID[DeviceType.TANTALUS_STAGE_2_FLARE],
        generate_radio_packets=False)
    snapshot = get_event_stats_snapshot()
    app = test_app(TantalusProfile(), {
        'DEBUG_CONNECTION_1': con_a,
        'DEBUG_CONNECTION_2': con_b
    },
                   num_devices=2)

    con_a.receive(
        radio_packets.single_sensor(0xFFFFFFFF, SubpacketIds.PRESSURE, 1))
    con_b.receive(
        radio_packets.single_sensor(0xFFFFFFFF, SubpacketIds.PRESSURE, 2))

    # Fake some other device on same connection
    con_a.device_address = 'OTHER_ADDRESS'
    sample_version = '1234567890123456789012345678901234567890'
    con_a.receive(
        radio_packets.config(0xFFFFFFFF, True,
                             DEVICE_TYPE_TO_ID[DeviceType.CO_PILOT_FLARE],
                             sample_version))
    con_a.receive(
        radio_packets.single_sensor(0xFFFFFFFF, SubpacketIds.PRESSURE, 3))

    assert DEVICE_REGISTERED_EVENT.wait(snapshot, num_expected=3) == 3
    assert BUNDLE_ADDED_EVENT.wait(snapshot, num_expected=6) == 6

    assert app.rocket_data.last_value_by_device(
        DeviceType.TANTALUS_STAGE_1_FLARE, DataEntryIds.PRESSURE) == 1
    assert app.rocket_data.last_value_by_device(
        DeviceType.TANTALUS_STAGE_2_FLARE, DataEntryIds.PRESSURE) == 2
    assert app.rocket_data.last_value_by_device(DeviceType.CO_PILOT_FLARE,
                                                DataEntryIds.PRESSURE) == 3
コード例 #2
0
def test_single_sensor_packet(qtbot, single_connection_tantalus):
    app = single_connection_tantalus
    connection = app.connections['DEBUG_CONNECTION']

    vals = [
        (SubpacketIds.ACCELERATION_Y, 1),
        (SubpacketIds.ACCELERATION_X, 2),
        (SubpacketIds.ACCELERATION_Z, 3),
        (SubpacketIds.PRESSURE, 4),
        (SubpacketIds.BAROMETER_TEMPERATURE, 5),
        (SubpacketIds.TEMPERATURE, 6),
        (SubpacketIds.LATITUDE, 7),
        (SubpacketIds.LONGITUDE, 8),
        (SubpacketIds.GPS_ALTITUDE, 9),
        (SubpacketIds.CALCULATED_ALTITUDE, 10),
        (SubpacketIds.GROUND_ALTITUDE, 12),
        (SubpacketIds.ACCELERATION_Y, 13),
        (SubpacketIds.ACCELERATION_X, 14),
        (SubpacketIds.ACCELERATION_Z, 15),
        (SubpacketIds.PRESSURE, 16),
        (SubpacketIds.BAROMETER_TEMPERATURE, 17),
        (SubpacketIds.TEMPERATURE, 18),
        (SubpacketIds.LATITUDE, 19),
        (SubpacketIds.LONGITUDE, 20),
        (SubpacketIds.GPS_ALTITUDE, 21),
        (SubpacketIds.CALCULATED_ALTITUDE, 22),
        (SubpacketIds.GROUND_ALTITUDE, 24),
    ]

    for sensor_id, val in vals:
        data_entry_id = DataEntryIds[sensor_id.name]
        packet = radio_packets.single_sensor(0xFFFFFFFF, sensor_id, val)

        snapshot = get_event_stats_snapshot()

        connection.receive(packet)

        assert SINGLE_SENSOR_EVENT.wait(snapshot) == 1
        assert app.rocket_data.last_value_by_device(
            DeviceType.TANTALUS_STAGE_1_FLARE, DataEntryIds.TIME) == 0xFFFFFFFF
        assert app.rocket_data.last_value_by_device(
            DeviceType.TANTALUS_STAGE_1_FLARE, data_entry_id) == val
コード例 #3
0
def test_register_after_data(qtbot, test_app):
    con = DebugConnection('TANTALUS_STAGE_1_ADDRESS',
                          DEVICE_TYPE_TO_ID[DeviceType.TANTALUS_STAGE_1_FLARE],
                          generate_radio_packets=False)
    app = test_app(TantalusProfile(), {'DEBUG_CONNECTION': con}, num_devices=1)
    snapshot = get_event_stats_snapshot()

    # Fake stage 2 on same connection
    con.device_address = 'TANTALUS_STAGE_2_ADDRESS'
    con.receive(
        radio_packets.single_sensor(0xFFFFFFFF, SubpacketIds.PRESSURE, 1))
    assert BUNDLE_ADDED_EVENT.wait(snapshot) == 1

    # Cause device to register
    con.receive(
        radio_packets.config(
            0xFFFFFFFF, True,
            DEVICE_TYPE_TO_ID[DeviceType.TANTALUS_STAGE_2_FLARE],
            REQUIRED_FLARE))
    assert DEVICE_REGISTERED_EVENT.wait(snapshot) == 1

    assert app.rocket_data.last_value_by_device(
        DeviceType.TANTALUS_STAGE_2_FLARE, DataEntryIds.PRESSURE) == 1