int META_WIFI_init(void) { int count = 100; if(1 == wifi_init){ ERR("wifi is already initilized.\n"); return true; } #if 0 if (!wifi_is_loaded()){ ERR("[META_WIFI] loading wifi driver ... ...\n"); if (wifi_insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) < 0) { ERR("[META_WIFI] failed to load wifi driver!!!\n"); goto error; } } #endif usleep(200000); wifi_set_power(1); sched_yield(); while (count-- > 0) { if (ifc_init() == 0) { if (ifc_up("wlan0") == 0) { ifc_close(); break; } ERR("[META_WIFI] ifc_up(wlan0) failed\n"); ifc_close(); } else { ERR("[META_WIFI] ifc_init() failed\n"); } usleep(100000); } if (count == 0) goto error; if (wifi_skfd == -1) wifi_skfd = openNetHandle(); if (wifi_skfd < 0) { META_WIFI_deinit(); goto error; } wifi_init = 1; return true; error: wifi_set_power(0); return false; }
void META_WIFI_deinit(void) { int count = 20; /* wait at most 10 seconds for completion */ if (wifi_skfd > 0) { closeNetHandle(wifi_skfd); wifi_skfd = -1; } if (wifi_rmmod(DRIVER_MODULE_NAME) == 0) { while (count-- > 0) { if (!wifi_is_loaded()) break; usleep(500000); } sched_yield(); wifi_set_power(0); } wifi_init = 0; return; }