WE310F5  39.00.000
M2MB DNS SERVICE DISCOVERY

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

#define M2MB_DNSSD_MAX_BUF_ENTRIES   15
 
#define M2MB_DNSSD_MAX_TIMEOUT   5000
 
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) (void *cbCtx, struct M2MB_DNSSD_DISCOVER_T *param)
 DNS service discovery callback declaration. More...
 
typedef struct M2MB_DNSSD_INIT_PARAMS M2MB_DNSSD_INIT_PARAMS_T
 DNS-SD initialization parameters. More...
 
typedef struct M2MB_DNSSD_DISCOVER_T M2MB_DNSSD_DISCOVER_T
 DNS-SD discover data buffer. More...
 
M2MB_STATUS_T m2mb_dnssd_init (HANDLE *handle, M2MB_DNSSD_INIT_PARAMS_T *init)
 m2mb_dnssd_init is called to initialize DNS service discovery. More...
 
M2MB_STATUS_T m2mb_dnssd_deinit (HANDLE handle)
 m2mb_dnssd_deinit is called to de-initialize DNS-SD module. More...
 
M2MB_STATUS_T m2mb_dnssd_discover (HANDLE handle, 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 (SD) 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 64 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 65 of file m2mb_dns_service_discovery.h.

Typedef Documentation

◆ M2MB_DNSSD_CB_T

typedef void(* M2MB_DNSSD_CB_T) (void *cbCtx, 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 79 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.

◆ M2MB_DNSSD_INIT_PARAMS_T

DNS-SD initialization parameters.

Contains information needed to initialize the DNS-SD service, such as context, timeout, maximum number of buffer entries, callback information, etc.

Enumeration Type Documentation

◆ 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 88 of file m2mb_dns_service_discovery.h.

Function Documentation

◆ m2mb_dnssd_deinit()

M2MB_STATUS_T m2mb_dnssd_deinit ( HANDLE  handle)

m2mb_dnssd_deinit is called to de-initialize DNS-SD module.

m2mb_dnssd_deinit de-initialize the DNS-SD module. It frees up all memory allocated during initialization process.

Parameters
[in]handleSpecifies the context handle initialized by m2mb_dnssd_init API.
Returns
M2MB_OK on success, or an code on error.
Note
This API has to be called if the DNS-SD is already initialized.

m2mb_dnssd_deinit(&ctxt);

static M2MB_DNSSD_CTXT_T *ctxt;
static void app_dnssd_cmd_complete( struct M2MB_DNSSD_DISCOVER_T *buf )
{
...
}
int main()
{
HANDLE handle = NULL;
init.device_id = 1; // STA mode
init.ctxt = &ctxt;
init.timeout = 600;
init.cb = app_dnssd_cmd_complete;
if( m2mb_dnssd_init( &handle, &init ) != M2MB_OK )
{
ctxt = NULL;
return M2MB_ERROR;
}
...
if( m2mb_dnssd_deinit( handle ) == M2MB_OK )
return M2MB_OK;
else
return M2MB_ERROR;
}

◆ m2mb_dnssd_discover()

M2MB_STATUS_T m2mb_dnssd_discover ( HANDLE  handle,
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]handleSpecifies the context handle initialized by m2mb_dnssd_init API.
[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 API.

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

static M2MB_DNSSD_CTXT_T *ctxt;
static void app_dnssd_cmd_complete( struct M2MB_DNSSD_DISCOVER_T *buf )
{
...
}
int main()
{
HANDLE handle = NULL;
init.device_id = 1; // STA mode
init.ctxt = &ctxt;
init.timeout = 600;
init.cb = app_dnssd_cmd_complete;
if( m2mb_dnssd_init( &handle, &init ) != M2MB_OK )
{
ctxt = NULL;
return M2MB_ERROR;
}
...
if( m2mb_dnssd_discover( handle, "_MyDevice._http.tcp.local" ) == M2MB_OK )
return M2MB_OK;
else
return M2MB_ERROR;
}

◆ m2mb_dnssd_init()

M2MB_STATUS_T m2mb_dnssd_init ( HANDLE handle,
M2MB_DNSSD_INIT_PARAMS_T init 
)

m2mb_dnssd_init is called to initialize DNS service discovery.

m2mb_dnssd_init initializes the DNS-SD module.

Parameters
[in]handleSpecifies the pointer to the context handle that can be used by other dns-sd APIs.
[in]initSpecifies pointer to the initialization parameters 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( &handle, &init );

static M2MB_DNSSD_CTXT_T *ctxt;
static void app_dnssd_cmd_complete( struct M2MB_DNSSD_DISCOVER_T *buf )
{
...
}
int main()
{
HANDLE handle = NULL;
init.device_id = 1; // STA mode
init.ctxt = &ctxt;
init.timeout = 600;
init.cb = app_dnssd_cmd_complete;
if( m2mb_dnssd_init( &handle, &init ) != M2MB_OK )
{
ctxt = NULL;
return M2MB_ERROR;
}
}