void WifiEventTrigger(unsigned int para)
{
DeviceInfo *localDev = GetCommonDeviceInfo();
if (localDev == NULL) {
return;
}
int ret;
if (para) {
char wifiIp[MAX_DEV_IP_LEN] = {0};
CoapGetIp(wifiIp, MAX_DEV_IP_LEN, 0);
if (strcmp(wifiIp, "0.0.0.0") == 0) {
SOFTBUS_PRINT("[DISCOVERY] WifiEventTrigger new event interupt.\n");
return;
}
ret = memcpy_s(localDev->deviceIp, sizeof(localDev->deviceIp), wifiIp, sizeof(wifiIp));
} else {
ret = memset_s(localDev->deviceIp, sizeof(localDev->deviceIp), 0, sizeof(localDev->deviceIp));
}
if (ret != ERROR_SUCCESS) {
return;
}
if (BusManager(para) != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] WifiEventTrigger StartBusManager(%d) fail\n", para);
return;
}
if (CoapRegisterDeviceInfo() != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] WifiEventTrigger CoapRegisterDeviceInfo fail\n");
return;
}
if (DoRegistService(COAP) != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] WifiEventTrigger DoRegistService fail\n");
return;
}
}
int DeinitService(void)
{
int ret = BusManager(0);
if (ret != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] DeinitService BusManager(0) fail\n");
}
if (g_publishModule) {
free(g_publishModule);
g_publishModule = NULL;
}
if (g_capabilityData) {
free(g_capabilityData);
g_capabilityData = NULL;
}
ret = CoapDeinit();
if (ret != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] DeinitService CoapDeinit fail\n");
}
RegisterWifiCallback(NULL);
DeinitCommonManager();
g_isServiceInit = 0;
return ERROR_SUCCESS;
}
int InitService(void)
{
if (g_isServiceInit != 0) {
return ERROR_SUCCESS;
}
if (InitCommonManager() != 0) {
SOFTBUS_PRINT("[DISCOVERY] InitService InitCommonManager fail\n");
DeinitService();
return ERROR_FAIL;
}
g_publishModule = calloc(1, sizeof(PublishModule) * MAX_MODULE_COUNT);
if (g_publishModule == NULL) {
DeinitService();
return ERROR_NOMEMORY;
}
g_capabilityData = calloc(1, MAX_SERVICE_DATA_LEN);
if (g_capabilityData == NULL) {
DeinitService();
return ERROR_NOMEMORY;
}
RegisterWifiCallback(WifiEventTrigger);
int ret = CoapInit();
if (ret != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] InitService CoapInit fail\n");
DeinitService();
return ret;
}
CoapWriteMsgQueue(UPDATE_IP_EVENT);
ret = CoapRegisterDeviceInfo();
if (ret != ERROR_SUCCESS) {
SOFTBUS_PRINT("[DISCOVERY] InitService CoapRegisterDeviceInfo fail\n");
DeinitService();
return ret;
}
g_isServiceInit = 1;
SOFTBUS_PRINT("[DISCOVERY] InitService ok\n");
return ERROR_SUCCESS;
}