コード例 #1
0
ファイル: iwmxsdk.c プロジェクト: aelarabawy/NetworkManager
/*
 * Initialize the WiMAX API, register with it, setup callbacks for
 * device coming up / dissapearing
 */
int iwmx_sdk_api_init(void)
{
	int result;
	unsigned int cnt;
	WIMAX_API_RET r;
	char errstr[512];
	UINT32 errstr_size = sizeof(errstr);

	WIMAX_API_HW_DEVICE_ID device_id_list[5];
	UINT32 device_id_list_size = ARRAY_SIZE(device_id_list);

	memset(&g_api, 0, sizeof(g_api));
	g_api.privilege = WIMAX_API_PRIVILEGE_READ_WRITE;

	result = -EIO;
	r = WiMaxAPIOpen(&g_api);
	if (r != WIMAX_API_RET_SUCCESS) {
		GetErrorString(&g_api, r, errstr, &errstr_size);
		nm_log_err(LOGD_WIMAX, "wmxsdk: WiMaxAPIOpen failed with %d (%s)", r, errstr);
		goto error_wimaxapiopen;
	}

	r = SubscribeDeviceInsertRemove(&g_api, iwmx_sdk_addremove_cb);
	if (r != WIMAX_API_RET_SUCCESS) {
		GetErrorString(&g_api, r, errstr, &errstr_size);
		nm_log_err(LOGD_WIMAX, "wmxsdk: insert/remove subscribe failed with %d (%s)", r, errstr);
		goto error_close;
	}

	r = GetListDevice(&g_api, device_id_list, &device_id_list_size);
	if (r != WIMAX_API_RET_SUCCESS) {
		GetErrorString(&g_api, r, errstr, &errstr_size);
		nm_log_err(LOGD_WIMAX, "wmxsdk: Cannot obtain list of devices: %d (%s)", r, errstr);
		goto error_close;
	}
	if (device_id_list_size < g_api.deviceIndex) {
		nm_log_err(LOGD_WIMAX, "wmxsdk: changed device (%u) not in the list? (%u items)",
		           g_api.deviceIndex, device_id_list_size);
	}

	if (device_id_list_size == 0) {
		nm_log_dbg(LOGD_WIMAX, "No WiMAX devices reported");
	} else {
		for (cnt = 0; cnt < device_id_list_size; cnt++) {
			WIMAX_API_HW_DEVICE_ID *dev = device_id_list + cnt;
			nm_log_dbg(LOGD_WIMAX, "#%u index #%u device %s", cnt, dev->deviceIndex, dev->deviceName);
			iwmx_sdk_dev_add(cnt, dev->deviceIndex, dev->deviceName);
		}
	}
	return 0;

error_close:
	WiMaxAPIClose(&g_api);
error_wimaxapiopen:
	return result;
}
コード例 #2
0
ファイル: iwmxsdk.c プロジェクト: aelarabawy/NetworkManager
void iwmx_sdk_api_exit(void)
{
	WIMAX_API_RET r;

	char errstr[512];
	UINT32 errstr_size = sizeof(errstr);

	r = WiMaxAPIClose(&g_api);
	if (r != WIMAX_API_RET_SUCCESS) {
		GetErrorString(&g_api, r, errstr, &errstr_size);
		nm_log_err(LOGD_WIMAX, "wmxsdk: WiMaxAPIClose failed with %d (%s)", r, errstr);
	}
	return;
}
コード例 #3
0
ファイル: wimaxcu_main.c プロジェクト: Brainiarc7/wimax-ns
/*
 * Function:     Finalize
 * Description:  Finalize the WiMAX CommonAPI
 */
void wimaxcu_finalize(WIMAX_API_DEVICE_ID_P p_device_id)
{
	UnsubscribeDeviceStatusChange(p_device_id);

	WiMaxDeviceClose(p_device_id);
	WiMaxAPIClose(p_device_id);

	// Let all the call backs get closed before destroying sem
	sem_destroy(&g_semConnectionUtility);
	sem_destroy(&g_semRfState);
	sem_destroy(&g_semConnectCompleted);
	pthread_mutex_destroy(&g_console_owner_mutex);

}