mirror of
https://github.com/albfan/miraclecast.git
synced 2025-03-09 23:38:56 +00:00
Separate go_neg_request and provision_discovery
Signed-off-by: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
This commit is contained in:
parent
563a415a24
commit
0d54cd4e0b
7 changed files with 75 additions and 1 deletions
|
@ -975,6 +975,17 @@ static int ctl_wifi_peer_fn(sd_bus *bus,
|
||||||
return cli_log_parser(r);
|
return cli_log_parser(r);
|
||||||
|
|
||||||
ctl_fn_peer_provision_discovery(p, prov, pin);
|
ctl_fn_peer_provision_discovery(p, prov, pin);
|
||||||
|
} else if (sd_bus_message_is_signal(m,
|
||||||
|
"org.freedesktop.miracle.wifi.Peer",
|
||||||
|
"GoNegRequest")) {
|
||||||
|
/* connection request */
|
||||||
|
const char *prov, *pin;
|
||||||
|
|
||||||
|
r = sd_bus_message_read(m, "ss", &prov, &pin);
|
||||||
|
if (r < 0)
|
||||||
|
return cli_log_parser(r);
|
||||||
|
|
||||||
|
ctl_fn_peer_go_neg_request(p, prov, pin);
|
||||||
} else if (sd_bus_message_is_signal(m,
|
} else if (sd_bus_message_is_signal(m,
|
||||||
"org.freedesktop.miracle.wifi.Peer",
|
"org.freedesktop.miracle.wifi.Peer",
|
||||||
"FormationFailure")) {
|
"FormationFailure")) {
|
||||||
|
|
|
@ -251,6 +251,9 @@ void ctl_fn_peer_free(struct ctl_peer *p);
|
||||||
void ctl_fn_peer_provision_discovery(struct ctl_peer *p,
|
void ctl_fn_peer_provision_discovery(struct ctl_peer *p,
|
||||||
const char *prov,
|
const char *prov,
|
||||||
const char *pin);
|
const char *pin);
|
||||||
|
void ctl_fn_peer_go_neg_request(struct ctl_peer *p,
|
||||||
|
const char *prov,
|
||||||
|
const char *pin);
|
||||||
void ctl_fn_peer_formation_failure(struct ctl_peer *p, const char *reason);
|
void ctl_fn_peer_formation_failure(struct ctl_peer *p, const char *reason);
|
||||||
void ctl_fn_peer_connected(struct ctl_peer *p);
|
void ctl_fn_peer_connected(struct ctl_peer *p);
|
||||||
void ctl_fn_peer_disconnected(struct ctl_peer *p);
|
void ctl_fn_peer_disconnected(struct ctl_peer *p);
|
||||||
|
|
|
@ -440,6 +440,18 @@ void ctl_fn_peer_provision_discovery(struct ctl_peer *p,
|
||||||
if (cli_running())
|
if (cli_running())
|
||||||
cli_printf("[" CLI_YELLOW "PROV" CLI_DEFAULT "] Peer: %s Type: %s PIN: %s\n",
|
cli_printf("[" CLI_YELLOW "PROV" CLI_DEFAULT "] Peer: %s Type: %s PIN: %s\n",
|
||||||
p->label, prov, pin);
|
p->label, prov, pin);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ctl_fn_peer_go_neg_request(struct ctl_peer *p,
|
||||||
|
const char *prov,
|
||||||
|
const char *pin)
|
||||||
|
{
|
||||||
|
if (p->l != running_link || shl_isempty(p->wfd_subelements))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (cli_running())
|
||||||
|
cli_printf("[" CLI_YELLOW "GO NEG" CLI_DEFAULT "] Peer: %s Type: %s PIN: %s\n",
|
||||||
|
p->label, prov, pin);
|
||||||
|
|
||||||
if (!running_peer) {
|
if (!running_peer) {
|
||||||
/* auto accept any incoming connection attempt */
|
/* auto accept any incoming connection attempt */
|
||||||
|
|
|
@ -308,6 +308,7 @@ static const sd_bus_vtable peer_dbus_vtable[] = {
|
||||||
0,
|
0,
|
||||||
SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
|
SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE),
|
||||||
SD_BUS_SIGNAL("ProvisionDiscovery", "ss", 0),
|
SD_BUS_SIGNAL("ProvisionDiscovery", "ss", 0),
|
||||||
|
SD_BUS_SIGNAL("GoNegRequest", "ss", 0),
|
||||||
SD_BUS_VTABLE_END
|
SD_BUS_VTABLE_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -408,6 +409,31 @@ void peer_dbus_provision_discovery(struct peer *p,
|
||||||
log_vERR(r);
|
log_vERR(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void peer_dbus_go_neg_request(struct peer *p,
|
||||||
|
const char *type,
|
||||||
|
const char *pin)
|
||||||
|
{
|
||||||
|
_shl_free_ char *node = NULL;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
if (!type)
|
||||||
|
return;
|
||||||
|
if (!pin)
|
||||||
|
pin = "";
|
||||||
|
|
||||||
|
node = peer_dbus_get_path(p);
|
||||||
|
if (!node)
|
||||||
|
return;
|
||||||
|
|
||||||
|
r = sd_bus_emit_signal(p->l->m->bus,
|
||||||
|
node,
|
||||||
|
"org.freedesktop.miracle.wifi.Peer",
|
||||||
|
"GoNegRequest",
|
||||||
|
"ss", type, pin);
|
||||||
|
if (r < 0)
|
||||||
|
log_vERR(r);
|
||||||
|
}
|
||||||
|
|
||||||
void peer_dbus_formation_failure(struct peer *p, const char *reason)
|
void peer_dbus_formation_failure(struct peer *p, const char *reason)
|
||||||
{
|
{
|
||||||
_shl_free_ char *node = NULL;
|
_shl_free_ char *node = NULL;
|
||||||
|
|
|
@ -200,6 +200,16 @@ void peer_supplicant_provision_discovery(struct peer *p,
|
||||||
peer_dbus_provision_discovery(p, prov, pin);
|
peer_dbus_provision_discovery(p, prov, pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void peer_supplicant_go_neg_request(struct peer *p,
|
||||||
|
const char *prov,
|
||||||
|
const char *pin)
|
||||||
|
{
|
||||||
|
if (!p || !p->public)
|
||||||
|
return;
|
||||||
|
|
||||||
|
peer_dbus_go_neg_request(p, prov, pin);
|
||||||
|
}
|
||||||
|
|
||||||
void peer_supplicant_formation_failure(struct peer *p,
|
void peer_supplicant_formation_failure(struct peer *p,
|
||||||
const char *reason)
|
const char *reason)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1008,6 +1008,8 @@ static void supplicant_event_p2p_prov_disc_pbc_req(struct supplicant *s,
|
||||||
sp->prov = t;
|
sp->prov = t;
|
||||||
free(sp->pin);
|
free(sp->pin);
|
||||||
sp->pin = NULL;
|
sp->pin = NULL;
|
||||||
|
|
||||||
|
peer_supplicant_provision_discovery(sp->p, sp->prov, sp->pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void supplicant_event_p2p_go_neg_request(struct supplicant *s,
|
static void supplicant_event_p2p_go_neg_request(struct supplicant *s,
|
||||||
|
@ -1048,7 +1050,7 @@ static void supplicant_event_p2p_go_neg_request(struct supplicant *s,
|
||||||
|
|
||||||
if (!sp->g) {
|
if (!sp->g) {
|
||||||
log_debug("GO Negotiation Request from %s", mac);
|
log_debug("GO Negotiation Request from %s", mac);
|
||||||
peer_supplicant_provision_discovery(sp->p, sp->prov, sp->pin);
|
peer_supplicant_go_neg_request(sp->p, sp->prov, sp->pin);
|
||||||
} else {
|
} else {
|
||||||
log_debug("GO Negotiation Request from already connected peer %s",
|
log_debug("GO Negotiation Request from already connected peer %s",
|
||||||
mac);
|
mac);
|
||||||
|
@ -1098,6 +1100,8 @@ static void supplicant_event_p2p_prov_disc_show_pin(struct supplicant *s,
|
||||||
sp->prov = t;
|
sp->prov = t;
|
||||||
free(sp->pin);
|
free(sp->pin);
|
||||||
sp->pin = u;
|
sp->pin = u;
|
||||||
|
|
||||||
|
peer_supplicant_provision_discovery(sp->p, sp->prov, sp->pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void supplicant_event_p2p_prov_disc_enter_pin(struct supplicant *s,
|
static void supplicant_event_p2p_prov_disc_enter_pin(struct supplicant *s,
|
||||||
|
@ -1130,6 +1134,8 @@ static void supplicant_event_p2p_prov_disc_enter_pin(struct supplicant *s,
|
||||||
sp->prov = t;
|
sp->prov = t;
|
||||||
free(sp->pin);
|
free(sp->pin);
|
||||||
sp->pin = NULL;
|
sp->pin = NULL;
|
||||||
|
|
||||||
|
peer_supplicant_provision_discovery(sp->p, sp->prov, sp->pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void supplicant_event_p2p_go_neg_success(struct supplicant *s,
|
static void supplicant_event_p2p_go_neg_success(struct supplicant *s,
|
||||||
|
|
|
@ -101,6 +101,9 @@ void peer_supplicant_wfd_subelements_changed(struct peer *p);
|
||||||
void peer_supplicant_provision_discovery(struct peer *p,
|
void peer_supplicant_provision_discovery(struct peer *p,
|
||||||
const char *prov,
|
const char *prov,
|
||||||
const char *pin);
|
const char *pin);
|
||||||
|
void peer_supplicant_go_neg_request(struct peer *p,
|
||||||
|
const char *prov,
|
||||||
|
const char *pin);
|
||||||
void peer_supplicant_formation_failure(struct peer *p, const char *reason);
|
void peer_supplicant_formation_failure(struct peer *p, const char *reason);
|
||||||
void peer_supplicant_connected_changed(struct peer *p, bool connected);
|
void peer_supplicant_connected_changed(struct peer *p, bool connected);
|
||||||
|
|
||||||
|
@ -109,6 +112,9 @@ void peer_dbus_properties_changed(struct peer *p, const char *prop, ...);
|
||||||
void peer_dbus_provision_discovery(struct peer *p,
|
void peer_dbus_provision_discovery(struct peer *p,
|
||||||
const char *prov,
|
const char *prov,
|
||||||
const char *pin);
|
const char *pin);
|
||||||
|
void peer_dbus_go_neg_request(struct peer *p,
|
||||||
|
const char *type,
|
||||||
|
const char *pin);
|
||||||
void peer_dbus_formation_failure(struct peer *p, const char *reason);
|
void peer_dbus_formation_failure(struct peer *p, const char *reason);
|
||||||
void peer_dbus_added(struct peer *p);
|
void peer_dbus_added(struct peer *p);
|
||||||
void peer_dbus_removed(struct peer *p);
|
void peer_dbus_removed(struct peer *p);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue