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
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
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