int wlmSsidGet(char *ssid, int length) { wlc_ssid_t wlc_ssid; if (length < SSID_FMT_BUF_LEN) { printf("wlmSsidGet: Ssid buffer too short - %d bytes at least\n", SSID_FMT_BUF_LEN); return FALSE; } /* query for 'ssid' */ if (wlu_get(irh, WLC_GET_SSID, &wlc_ssid, sizeof(wlc_ssid_t))) { printf("wlmSsidGet: %s\n", wlmLastError()); return FALSE; } wl_format_ssid(ssid, wlc_ssid.SSID, dtoh32(wlc_ssid.SSID_len)); return TRUE; }
void bcm_p2p_discovery_process_wlan_event(void * context, uint32 eventType, wl_event_msg_t *wlEvent, uint8 *data, uint32 length) { bcm_p2p_discovery_t *disc = &gDisc; (void)context; #ifndef BCMDBG_ESCAN (void)data; (void)length; #endif #ifdef BCMDBG { int i; char *event_name = "UNKNOWN"; for (i = 0; i < bcmevent_names_size; i++) if (bcmevent_names[i].event == eventType) event_name = (char *)bcmevent_names[i].name; WL_P2PO(("WLAN event %s (%d)\n", event_name, eventType)); } #endif /* BCMDBG */ if (eventType == WLC_E_ESCAN_RESULT) { if (wlEvent->status == WLC_E_STATUS_PARTIAL) { #ifdef BCMDBG_ESCAN wl_escan_result_t *escan_data = (wl_escan_result_t *)data; if (length >= sizeof(*escan_data)) { wl_bss_info_t *bi = &escan_data->bss_info[0]; bcm_decode_probe_response_t pr; struct ether_addr *addr; if (!bcm_decode_ie_probe_response(bi, &pr)) { return; } /* default address */ addr = &bi->BSSID; /* P2P not supported */ if (!pr.isP2P) { char ssidbuf[4*32+1]; wl_format_ssid(ssidbuf, bi->SSID, bi->SSID_len); dbg(" AP %-20.20s %s %d\n", ssidbuf, wl_ether_etoa(addr), pr.channel); return; } if (pr.isP2PDeviceInfoDecoded) { /* use device address */ addr = &pr.p2pDeviceInfo.deviceAddress; dbg("P2P %-20.20s %s %d\n", pr.p2pDeviceInfo.deviceName, wl_ether_etoa(addr), pr.channel); } } #endif /* BCMDBG_ESCAN */ } else if (wlEvent->status == WLC_E_STATUS_SUCCESS) { WL_P2PO(("WLC_E_ESCAN_RESULT status=WLC_E_STATUS_SUCCESS\n")); fsm(disc, EVENT_SCAN_COMPLETE); } else { WL_P2PO(("WLC_E_ESCAN_RESULT status=%d\n", wlEvent->status)); /* escan may have failed/restarted but keep state machine running */ fsm(disc, EVENT_SCAN_COMPLETE); } } }