Skip to content

Commit 8490ff2

Browse files
david-cermakeuripedesrocha
authored andcommitted
feat(mdns): Add console command for mdns browsing
1 parent cd11a4c commit 8490ff2

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

components/mdns/mdns_console.c

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,6 +1334,85 @@ static void register_mdns_service_subtype_set(void)
13341334
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_service_sub) );
13351335
}
13361336

1337+
static struct {
1338+
struct arg_str *service;
1339+
struct arg_str *proto;
1340+
struct arg_end *end;
1341+
} mdns_browse_args;
1342+
1343+
static void mdns_browse_notifier(mdns_result_t *result)
1344+
{
1345+
if (result) {
1346+
mdns_print_results(result);
1347+
}
1348+
}
1349+
1350+
static int cmd_mdns_browse(int argc, char **argv)
1351+
{
1352+
int nerrors = arg_parse(argc, argv, (void **) &mdns_browse_args);
1353+
if (nerrors != 0) {
1354+
arg_print_errors(stderr, mdns_browse_args.end, argv[0]);
1355+
return 1;
1356+
}
1357+
1358+
if (!mdns_browse_args.service->sval[0] || !mdns_browse_args.proto->sval[0]) {
1359+
printf("ERROR: Bad arguments!\n");
1360+
return 1;
1361+
}
1362+
mdns_browse_t *handle = mdns_browse_new(mdns_browse_args.service->sval[0], mdns_browse_args.proto->sval[0], mdns_browse_notifier);
1363+
return handle ? 0 : 1;
1364+
}
1365+
1366+
static void register_mdns_browse(void)
1367+
{
1368+
mdns_browse_args.service = arg_str1(NULL, NULL, "<service>", "MDNS Service");
1369+
mdns_browse_args.proto = arg_str1(NULL, NULL, "<proto>", "IP Protocol");
1370+
mdns_browse_args.end = arg_end(2);
1371+
1372+
const esp_console_cmd_t cmd_browse = {
1373+
.command = "mdns_browse",
1374+
.help = "Start browsing",
1375+
.hint = NULL,
1376+
.func = &cmd_mdns_browse,
1377+
.argtable = &mdns_browse_args
1378+
};
1379+
1380+
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_browse) );
1381+
}
1382+
1383+
static int cmd_mdns_browse_del(int argc, char **argv)
1384+
{
1385+
int nerrors = arg_parse(argc, argv, (void **) &mdns_browse_args);
1386+
if (nerrors != 0) {
1387+
arg_print_errors(stderr, mdns_browse_args.end, argv[0]);
1388+
return 1;
1389+
}
1390+
1391+
if (!mdns_browse_args.service->sval[0] || !mdns_browse_args.proto->sval[0]) {
1392+
printf("ERROR: Bad arguments!\n");
1393+
return 1;
1394+
}
1395+
esp_err_t err = mdns_browse_delete(mdns_browse_args.service->sval[0], mdns_browse_args.proto->sval[0]);
1396+
return err == ESP_OK ? 0 : 1;
1397+
}
1398+
1399+
static void register_mdns_browse_del(void)
1400+
{
1401+
mdns_browse_args.service = arg_str1(NULL, NULL, "<service>", "MDNS Service");
1402+
mdns_browse_args.proto = arg_str1(NULL, NULL, "<proto>", "IP Protocol");
1403+
mdns_browse_args.end = arg_end(2);
1404+
1405+
const esp_console_cmd_t cmd_browse_del = {
1406+
.command = "mdns_browse_del",
1407+
.help = "Stop browsing",
1408+
.hint = NULL,
1409+
.func = &cmd_mdns_browse_del,
1410+
.argtable = &mdns_browse_args
1411+
};
1412+
1413+
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_browse_del) );
1414+
}
1415+
13371416
void mdns_console_register(void)
13381417
{
13391418
register_mdns_init();
@@ -1354,6 +1433,9 @@ void mdns_console_register(void)
13541433
register_mdns_undelegate_host();
13551434
register_mdns_service_subtype_set();
13561435

1436+
register_mdns_browse();
1437+
register_mdns_browse_del();
1438+
13571439
#ifdef CONFIG_LWIP_IPV4
13581440
register_mdns_query_a();
13591441
#endif

0 commit comments

Comments
 (0)