/* * If the device is connected but we don't know about the network, * create the knowledge of it. * * Asks the WiMAX API to report which NSP we are connected to and we * create/update a network_el in the device's network list. Then * return it. * * Returns NULL on error. * */ WIMAX_API_CONNECTED_NSP_INFO_EX *iwmx_sdk_get_connected_network(struct wmxsdk *wmxsdk) { WIMAX_API_CONNECTED_NSP_INFO_EX *nsp_info = NULL; WIMAX_API_RET r; char errstr[512]; UINT32 errstr_size = sizeof(errstr); nsp_info = malloc(sizeof (*nsp_info)); if (!nsp_info) { nm_log_err(LOGD_WIMAX, "wmxsdk: cannot allocate NSP info"); return NULL; } r = GetConnectedNSPEx(&wmxsdk->device_id, nsp_info); if (r != WIMAX_API_RET_SUCCESS) { GetErrorString(&wmxsdk->device_id, r, errstr, &errstr_size); nm_log_err(LOGD_WIMAX, "wmxsdk: Cannot get connected NSP info: %d (%s)", r, errstr); free (nsp_info); nsp_info = NULL; } else { /* Migth be 0 sometimes; fix that up */ if (nsp_info->linkQuality == 0) { int linkq_expected = cinr_to_percentage(nsp_info->CINR - 10); if (linkq_expected != nsp_info->linkQuality) nsp_info->linkQuality = linkq_expected; } } return nsp_info; }
//return 0 success // 1 fail int wimaxcu_get_user_link_status_ex(WIMAX_API_DEVICE_ID_P p_device_id) { WIMAX_API_RET wmxStatus = WIMAX_API_RET_SUCCESS; WIMAX_API_CONNECTED_NSP_INFO_EX ConnectedNSP; WIMAX_API_LINK_STATUS_INFO_EX LinkStatus; wmxStatus = GetConnectedNSPEx(p_device_id, &ConnectedNSP); if (WIMAX_API_RET_SUCCESS != wmxStatus) { printf("Link Status: Network is not connected.\n"); return 1; } wmxStatus = GetLinkStatusEx(p_device_id, &LinkStatus); if (WIMAX_API_RET_SUCCESS != wmxStatus) { PrintWmxStatus(wmxStatus); return 1; } PrintUserLinkStatusEx(&LinkStatus); return 0; }
void wimaxcu_get_conn_nsp_ex(WIMAX_API_DEVICE_ID_P p_device_id) { WIMAX_API_RET wmxStatus = WIMAX_API_RET_SUCCESS; WIMAX_API_CONNECTED_NSP_INFO_EX ConnectedNSP; WIMAX_API_LINK_STATUS_INFO_EX LinkStatus; wmxStatus = GetLinkStatusEx(p_device_id, &LinkStatus); if (WIMAX_API_RET_SUCCESS != wmxStatus) { PrintWmxStatus(wmxStatus); return; } wmxStatus = GetConnectedNSPEx(p_device_id, &ConnectedNSP); if (WIMAX_API_RET_SUCCESS != wmxStatus) { PrintWmxStatus(wmxStatus); return; } ConnectedNSP.RSSI = LinkStatus.RSSI; ConnectedNSP.CINR = LinkStatus.CINR; ConnectedNSP.linkQuality = LinkStatus.linkQuality; PrintUserLinkStatusEx(&ConnectedNSP); }