mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-25 06:59:57 -05:00
module-avb: mrp: add human readable m*rp states
This commit is contained in:
parent
5d39e1357e
commit
03428f3380
4 changed files with 112 additions and 2 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
/* AVB support */
|
/* AVB support */
|
||||||
/* SPDX-FileCopyrightText: Copyright © 2022 Wim Taymans */
|
/* SPDX-FileCopyrightText: Copyright © 2022 Wim Taymans */
|
||||||
|
/* SPDX-FileCopyrightText: Copyright © 2025 Alexandre Malki <alexandre.malki@kebag-logic.com> */
|
||||||
/* SPDX-License-Identifier: MIT */
|
/* SPDX-License-Identifier: MIT */
|
||||||
|
|
||||||
#include <pipewire/pipewire.h>
|
#include <pipewire/pipewire.h>
|
||||||
|
|
@ -160,6 +161,98 @@ int avb_mrp_parse_packet(struct avb_mrp *mrp, uint64_t now, const void *pkt, int
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *avb_applicant_state_name(uint8_t state)
|
||||||
|
{
|
||||||
|
switch (state) {
|
||||||
|
case AVB_MRP_VO:
|
||||||
|
return "VO";
|
||||||
|
case AVB_MRP_VP:
|
||||||
|
return "VP";
|
||||||
|
case AVB_MRP_VN:
|
||||||
|
return "VN";
|
||||||
|
case AVB_MRP_AN:
|
||||||
|
return "AN";
|
||||||
|
case AVB_MRP_AA:
|
||||||
|
return "AA";
|
||||||
|
case AVB_MRP_QA:
|
||||||
|
return "QA";
|
||||||
|
case AVB_MRP_LA:
|
||||||
|
return "LA";
|
||||||
|
case AVB_MRP_AO:
|
||||||
|
return "AO";
|
||||||
|
case AVB_MRP_QO:
|
||||||
|
return "QO";
|
||||||
|
case AVB_MRP_AP:
|
||||||
|
return "AP";
|
||||||
|
case AVB_MRP_QP:
|
||||||
|
return "QP";
|
||||||
|
case AVB_MRP_LO:
|
||||||
|
return "LO";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown-applicant-state";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *avb_registrar_state_name(uint8_t state)
|
||||||
|
{
|
||||||
|
switch (state) {
|
||||||
|
case AVB_MRP_IN:
|
||||||
|
return "IN";
|
||||||
|
case AVB_MRP_LV:
|
||||||
|
return "LV";
|
||||||
|
case AVB_MRP_MT:
|
||||||
|
return "MT";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown-registrar-state";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *avb_mrp_event_name(uint8_t event)
|
||||||
|
{
|
||||||
|
switch (event) {
|
||||||
|
case AVB_MRP_EVENT_BEGIN:
|
||||||
|
return "begin";
|
||||||
|
case AVB_MRP_EVENT_NEW:
|
||||||
|
return "new";
|
||||||
|
case AVB_MRP_EVENT_JOIN:
|
||||||
|
return "join";
|
||||||
|
case AVB_MRP_EVENT_LV:
|
||||||
|
return "lv";
|
||||||
|
case AVB_MRP_EVENT_TX:
|
||||||
|
return "tx";
|
||||||
|
case AVB_MRP_EVENT_TX_LVA:
|
||||||
|
return "tx_lva";
|
||||||
|
case AVB_MRP_EVENT_TX_LVAF:
|
||||||
|
return "tx_lvaf";
|
||||||
|
case AVB_MRP_EVENT_RX_NEW:
|
||||||
|
return "rx_new";
|
||||||
|
case AVB_MRP_EVENT_RX_JOININ:
|
||||||
|
return "rx_joinin";
|
||||||
|
case AVB_MRP_EVENT_RX_IN:
|
||||||
|
return "rx_in";
|
||||||
|
case AVB_MRP_EVENT_RX_JOINMT:
|
||||||
|
return "rx_joinmt";
|
||||||
|
case AVB_MRP_EVENT_RX_MT:
|
||||||
|
return "rx_mt";
|
||||||
|
case AVB_MRP_EVENT_RX_LV:
|
||||||
|
return "rx_lv";
|
||||||
|
case AVB_MRP_EVENT_RX_LVA:
|
||||||
|
return "rx_lva";
|
||||||
|
case AVB_MRP_EVENT_FLUSH:
|
||||||
|
return "flush";
|
||||||
|
case AVB_MRP_EVENT_REDECLARE:
|
||||||
|
return "redeclare";
|
||||||
|
case AVB_MRP_EVENT_PERIODIC:
|
||||||
|
return "periodic";
|
||||||
|
case AVB_MRP_EVENT_LV_TIMER:
|
||||||
|
return "lv_timer";
|
||||||
|
case AVB_MRP_EVENT_LVA_TIMER:
|
||||||
|
return "lva_timer";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown-event";
|
||||||
|
}
|
||||||
|
|
||||||
const char *avb_mrp_notify_name(uint8_t notify)
|
const char *avb_mrp_notify_name(uint8_t notify)
|
||||||
{
|
{
|
||||||
switch(notify) {
|
switch(notify) {
|
||||||
|
|
@ -295,7 +388,10 @@ void avb_mrp_attribute_update_state(struct avb_mrp_attribute *attr, uint64_t now
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a->registrar_state != state || notify) {
|
if (a->registrar_state != state || notify) {
|
||||||
pw_log_debug("attr %p: %d %d -> %d %d", a, event, a->registrar_state, state, notify);
|
pw_log_debug("REG: attr %p: %s %s %s -> %s %s notify? %s", a, a->attr.name,
|
||||||
|
avb_mrp_event_name(event), avb_registrar_state_name(a->registrar_state),
|
||||||
|
avb_registrar_state_name(state), avb_mrp_send_name(notify),
|
||||||
|
notify ? "YES":"NO");
|
||||||
a->registrar_state = state;
|
a->registrar_state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -519,8 +615,12 @@ void avb_mrp_attribute_update_state(struct avb_mrp_attribute *attr, uint64_t now
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a->applicant_state != state || send) {
|
if (a->applicant_state != state || send) {
|
||||||
pw_log_debug("attr %p: %d %d -> %d %d", a, event, a->applicant_state, state, send);
|
pw_log_debug("APP: attr %p: %s %s %s -> %s %d:%s joined? %s", a, a->attr.name,
|
||||||
|
avb_mrp_event_name(event), avb_applicant_state_name(a->applicant_state),
|
||||||
|
avb_registrar_state_name(state), send, avb_mrp_send_name(send),
|
||||||
|
a->joined? "YES" : " NO");
|
||||||
a->applicant_state = state;
|
a->applicant_state = state;
|
||||||
}
|
}
|
||||||
if (a->joined)
|
if (a->joined)
|
||||||
|
|
|
||||||
|
|
@ -98,11 +98,15 @@ struct avb_packet_mrp_footer {
|
||||||
#define AVB_MRP_NOTIFY_JOIN 2
|
#define AVB_MRP_NOTIFY_JOIN 2
|
||||||
#define AVB_MRP_NOTIFY_LEAVE 3
|
#define AVB_MRP_NOTIFY_LEAVE 3
|
||||||
|
|
||||||
|
const char *avb_applicant_state_name(uint8_t state);
|
||||||
|
const char *avb_registrar_state_name(uint8_t state);
|
||||||
|
const char *avb_mrp_event_name(uint8_t event);
|
||||||
const char *avb_mrp_notify_name(uint8_t notify);
|
const char *avb_mrp_notify_name(uint8_t notify);
|
||||||
const char *avb_mrp_send_name(uint8_t send);
|
const char *avb_mrp_send_name(uint8_t send);
|
||||||
|
|
||||||
struct avb_mrp_attribute {
|
struct avb_mrp_attribute {
|
||||||
uint8_t pending_send;
|
uint8_t pending_send;
|
||||||
|
const char *name;
|
||||||
void *user_data;
|
void *user_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
/* AVB support */
|
/* AVB support */
|
||||||
/* SPDX-FileCopyrightText: Copyright © 2022 Wim Taymans */
|
/* SPDX-FileCopyrightText: Copyright © 2022 Wim Taymans */
|
||||||
|
/* SPDX-FileCopyrightText: Copyright © 2025 Kebag-Logic */
|
||||||
|
/* SPDX-FileCopyrightText: Copyright © 2025 Alexandre Malki <alexandre.malki@kebag-logic.com> */
|
||||||
/* SPDX-License-Identifier: MIT */
|
/* SPDX-License-Identifier: MIT */
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
@ -351,6 +353,7 @@ struct avb_msrp_attribute *avb_msrp_attribute_new(struct avb_msrp *m,
|
||||||
a->msrp = msrp;
|
a->msrp = msrp;
|
||||||
a->attr.mrp = attr;
|
a->attr.mrp = attr;
|
||||||
a->attr.type = type;
|
a->attr.type = type;
|
||||||
|
attr->name = "MSRP";
|
||||||
spa_list_append(&msrp->attributes, &a->link);
|
spa_list_append(&msrp->attributes, &a->link);
|
||||||
avb_mrp_attribute_add_listener(attr, &a->listener, &mrp_attr_events, a);
|
avb_mrp_attribute_add_listener(attr, &a->listener, &mrp_attr_events, a);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
/* AVB support */
|
/* AVB support */
|
||||||
/* SPDX-FileCopyrightText: Copyright © 2022 Wim Taymans */
|
/* SPDX-FileCopyrightText: Copyright © 2022 Wim Taymans */
|
||||||
|
/* SPDX-FileCopyrightText: Copyright © 2025 Kebag-Logic */
|
||||||
|
/* SPDX-FileCopyrightText: Copyright © 2025 Alexandre Malki <alexandre.malki@kebag-logic.com> */
|
||||||
/* SPDX-License-Identifier: MIT */
|
/* SPDX-License-Identifier: MIT */
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
@ -189,6 +191,7 @@ struct avb_mvrp_attribute *avb_mvrp_attribute_new(struct avb_mvrp *m,
|
||||||
a = attr->user_data;
|
a = attr->user_data;
|
||||||
a->attr.mrp = attr;
|
a->attr.mrp = attr;
|
||||||
a->attr.type = type;
|
a->attr.type = type;
|
||||||
|
attr->name = "MVRP";
|
||||||
spa_list_append(&mvrp->attributes, &a->link);
|
spa_list_append(&mvrp->attributes, &a->link);
|
||||||
avb_mrp_attribute_add_listener(attr, &a->listener, &mrp_attr_events, a);
|
avb_mrp_attribute_add_listener(attr, &a->listener, &mrp_attr_events, a);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue