Skip to content

ADP takes wrong dest_mac #342

@sachindes

Description

@sachindes

Hello,

At my setup I do have 2 i210 linux PCs. AVDECC with different entity ids are running at both of end points. Audio science cmdline controller is running at one of this pc.

I am using open avb stack and I had added a logic to start and stop streaming via controller.

However in one of case where 2 streams are running parallel, each end station is talker for stream 1 and listener for stream 2 and vice versa. Same configuration for avdecc as well.

Now i wish to get STREAM Stop/Start logic to work for both of end stations. Remote station as well as host end station. Everything is fine expect:

end_station_imp.cpp:

end_station_imp::end_station_imp(const uint8_t * frame, size_t frame_len)
{
end_station_connection_status = ' ';
adp_ref = new adp(frame, frame_len);
struct jdksavdecc_eui64 entity_id;
entity_id = adp_ref->get_entity_entity_id();
end_station_entity_id = jdksavdecc_uint64_get(&entity_id, 0);
utility::convert_eui48_to_uint64(adp_ref->get_src_addr().value, end_station_mac);
end_station_init();
}

Both of end stations broadcast ENTITY_AVAILABLE. As observed remote PC always initiate 1st, causing
ENITITY 2 to have PC 2 as end_station_mac whereas it should be for PC 1.

Now once ENTITY_AVAILABLE message received for both entities, end_station_mac will not be overwritten, since it is done once only. Result even after I do select specific ENTITY ID by "select xxxx" command, Stream Start or Stop or any other AEM command goes always to remote end station and never ever to local host( where AVDECC controller and other preferred Entity is located).

How to configure and fix preferred MACs?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions