WL865E4-P  36.07.001
M2MB DNS SERVICE DISCOVERY

This file contains the M2MB APIs of Domain Name System(DNS) service discovery operation. More...

#define M2MB_DNSSD_MAX_BUF_ENTRIES   15
 
#define M2MB_DNSSD_MAX_TIMEOUT   5000
 
enum  M2MB_DNSSD_COMMAND_E {
  M2MB_DNSSD_START_E,
  M2MB_DNSSD_STOP_E,
  M2MB_DNSSD_DISCOVER_E,
  M2MB_DNSSD_INIT_E,
  M2MB_DNSSD_TARGET_INFO_E
}
 Commands supported by DNS-SD. More...
 
enum  M2MB_DNSSD_RSP_TYPE_E {
  M2MB_DNSSD_IPV4_ADDR = 0x01,
  M2MB_DNSSD_PTR = 0x0c,
  M2MB_DNSSD_TYPE_TXT_INFO = 0x10,
  M2MB_DNSSD_IPV6_ADDR = 0x1c,
  M2MB_DNSSD_TYPE_TARGET_INFO = 0x21,
  M2MB_DNSSD_SEC = 0x2f,
  M2MB_DNSSD_ANY = 0xff
}
 Response types. More...
 
typedef void(* M2MB_DNSSD_CB_T) (struct M2MB_DNSSD_DISCOVER_T *param)
 DNS service discovery callback declaration. More...
 
typedef struct M2MB_DNSSD_DISCOVER_T M2MB_DNSSD_DISCOVER_T
 DNS-SD discover data buffer. More...
 
M2MB_STATUS_T m2mb_dnssd_start (M2MB_DNSSD_START_T *start)
 m2mb_dnssd_start is called to start DNS-SD. More...
 
M2MB_STATUS_T m2mb_dnssd_init (M2MB_DNSSD_INIT_T *init)
 m2mb_dnssd_init is called to initialize DNS service discovery. More...
 
M2MB_STATUS_T m2mb_dnssd_stop (M2MB_DNSSD_CTXT_T *ctxt)
 m2mb_dnssd_stop is called to stop DNS-SD module. More...
 
M2MB_STATUS_T m2mb_dnssd_discover (const CHAR *svc_instance_name)
 m2mb_dnssd_discover is called to discover a service. More...
 

Detailed Description

This file contains the M2MB APIs of Domain Name System(DNS) service discovery operation.

DNS service discovery provides APIs that allow users to discover all the available services of a specific type on the local link.

User has to set the DNS server to get the host name resolved. This module stores the primary and secondary server IPaddress. User has to provide server IP address.

Macro Definition Documentation

◆ M2MB_DNSSD_MAX_BUF_ENTRIES

#define M2MB_DNSSD_MAX_BUF_ENTRIES   15

Maximum number of entries in the data buffer.

Definition at line 63 of file m2mb_dns_service_discovery.h.

◆ M2MB_DNSSD_MAX_TIMEOUT

#define M2MB_DNSSD_MAX_TIMEOUT   5000

Timeout for a discovery request.

Definition at line 64 of file m2mb_dns_service_discovery.h.

Typedef Documentation

◆ M2MB_DNSSD_CB_T

typedef void(* M2MB_DNSSD_CB_T) (struct M2MB_DNSSD_DISCOVER_T *param)

DNS service discovery callback declaration.

When a discovery request is made by the user, the callback of the following types, registered during init, is invoked upon completion of the request.

Definition at line 78 of file m2mb_dns_service_discovery.h.

◆ M2MB_DNSSD_DISCOVER_T

DNS-SD discover data buffer.

Data buffer used to hold the responses corresponding to a discovery request.

Enumeration Type Documentation

◆ M2MB_DNSSD_COMMAND_E

Commands supported by DNS-SD.

List of commands to start, stop, initialize, perform discovery, and retrieve information from DNS-SD.

Enumerator
M2MB_DNSSD_START_E 

Start DNS-SD service.

M2MB_DNSSD_STOP_E 

Stop DNS-SD service.

M2MB_DNSSD_DISCOVER_E 

Starts a new service discovery request.

M2MB_DNSSD_INIT_E 

Initialize DNS-SD service.

M2MB_DNSSD_TARGET_INFO_E 

Retrieve information about a service instance.

Definition at line 88 of file m2mb_dns_service_discovery.h.

◆ M2MB_DNSSD_RSP_TYPE_E

Response types.

List of response types possible for a request.

Enumerator
M2MB_DNSSD_IPV4_ADDR 

Response contains an IPV4 address.

M2MB_DNSSD_PTR 

Response contains a pointer.

M2MB_DNSSD_TYPE_TXT_INFO 

Response contains text information.

M2MB_DNSSD_IPV6_ADDR 

Response contains an IPV6 address.

M2MB_DNSSD_TYPE_TARGET_INFO 

Response contains server information.

M2MB_DNSSD_SEC 

Response contains security information.

M2MB_DNSSD_ANY 

Used in specific scenarios.

Definition at line 104 of file m2mb_dns_service_discovery.h.

Function Documentation

◆ m2mb_dnssd_discover()

M2MB_STATUS_T m2mb_dnssd_discover ( const CHAR svc_instance_name)

m2mb_dnssd_discover is called to discover a service.

Performs service discovery for the given service instance on the local link.

Parameters
[in]svc_instance_nameName of the service instance to be discovered.
Returns
M2MB_OK on success, or an code on error.
Note
This API has to be called after m2mb_dnssd_init and m2mb_dnssd_start APIs are called.

m2mb_dnssd_discover( "_MyDevice._http.tcp.local" );

static M2MB_DNSSD_CTXT_T *ctxt;
static void app_dnssd_cmd_complete( struct M2MB_DNSSD_DISCOVER_T *buf )
{
...
}
int main()
{
M2MB_DNSSD_START_T start = { 0 };
M2MB_DNSSD_INIT_T init = { 0 };
UINT8 device_id;
{
device_id = 1;
break;
device_id = 0;
break;
return M2MB_ERROR;
}
if(m2mb_nwif_wlan_devname_get(device_id, &start.if_Name) == FALSE )
return M2MB_ERROR;
status = m2mb_dnssd_start( &start );
if( status != M2MB_OK )
{
return M2MB_ERROR;
}
init.ctxt = &ctxt;
init.timeout = 600;
init.cb = app_dnssd_cmd_complete;
status = m2mb_dnssd_init( &init );
if( status != M2MB_OK )
{
ctxt = NULL;
return M2MB_ERROR;
}
...
if( m2mb_dnssd_discover( "_MyDevice._http.tcp.local" ) == M2MB_OK )
return M2MB_OK;
else
return M2MB_ERROR;
}

◆ m2mb_dnssd_init()

M2MB_STATUS_T m2mb_dnssd_init ( M2MB_DNSSD_INIT_T init)

m2mb_dnssd_init is called to initialize DNS service discovery.

m2mb_dnssd_init initializes the DNS-SD module.

Parameters
[in]initSpecifies the timeout, maximum entries, and callback.
Returns
M2MB_OK on success, or an code on error.
Note
This API has to be called before any other DNS-SD API is called.

m2mb_dnssd_init( &init );

static M2MB_DNSSD_CTXT_T *ctxt;
static void app_dnssd_cmd_complete( struct M2MB_DNSSD_DISCOVER_T *buf )
{
...
}
int main()
{
M2MB_DNSSD_START_T start = { 0 };
M2MB_DNSSD_INIT_T init = { 0 };
UINT8 device_id;
{
device_id = 1;
break;
device_id = 0;
break;
return M2MB_ERROR;
}
if(m2mb_nwif_wlan_devname_get(device_id, &start.if_Name) == FALSE )
return M2MB_ERROR;
if( m2mb_dnssd_start( &start ) != M2MB_OK )
{
return M2MB_ERROR;
}
init.ctxt = &ctxt;
init.timeout = 600;
init.cb = app_dnssd_cmd_complete;
if( m2mb_dnssd_init( &init ) != M2MB_OK )
{
ctxt = NULL;
return M2MB_ERROR;
}
}

◆ m2mb_dnssd_start()

M2MB_STATUS_T m2mb_dnssd_start ( M2MB_DNSSD_START_T start)

m2mb_dnssd_start is called to start DNS-SD.

m2mb_dnssd_start Kick-starts the DNS-SD service.

Parameters
[in]startStart command arguments (IP version and interface name).
Returns
M2MB_OK on success, or an code on error.
Note
This API has to be called before any other DNS-SD API is called.

m2mb_dnssd_start( &start );

int main()
{
M2MB_DNSSD_START_T start = { 0 };
UINT8 device_id;
{
device_id = 1;
break;
device_id = 0;
break;
return M2MB_ERROR;
}
if( m2mb_nwif_wlan_devname_get(device_id, &start.if_Name) == FALSE )
return M2MB_ERROR;
return m2mb_dnssd_start( &start );
}

◆ m2mb_dnssd_stop()

M2MB_STATUS_T m2mb_dnssd_stop ( M2MB_DNSSD_CTXT_T ctxt)

m2mb_dnssd_stop is called to stop DNS-SD module.

m2mb_dnssd_stop stops the DNS-SD module. It frees up all memory allocated during initialization process.

Parameters
[in]ctxtContext of the DNS-SD to be stopped.
Returns
M2MB_OK on success, or an code on error.
Note
This API has to be called if the DNS-SD is already initialized and started.

m2mb_dnssd_stop(&ctxt);

static M2MB_DNSSD_CTXT_T *ctxt;
static void app_dnssd_cmd_complete( struct M2MB_DNSSD_DISCOVER_T *buf )
{
...
}
int main()
{
M2MB_DNSSD_START_T start = { 0 };
M2MB_DNSSD_INIT_T init = { 0 };
UINT8 device_id;
{
device_id = 1;
break;
device_id = 0;
break;
return M2MB_ERROR;
}
if(m2mb_nwif_wlan_devname_get(device_id, &start.if_Name) == FALSE )
return M2MB_ERROR;
if( m2mb_dnssd_start( &start ) != M2MB_OK )
{
return M2MB_ERROR;
}
init.ctxt = &ctxt;
init.timeout = 600;
init.cb = app_dnssd_cmd_complete;
if( m2mb_dnssd_init( &init ) != M2MB_OK )
{
ctxt = NULL;
return M2MB_ERROR;
}
...
if( m2mb_dnssd_stop(ctxt) == M2MB_OK )
return M2MB_OK;
else
return M2MB_ERROR;
}