WiFi 무선네트워크 API

Oasis는 무선 네트워크 사용을 위한 API를 제공합니다.

hostapdwpa_supplicant 명령으로 무선네트워크 인터페이스를 제어할 경우, 별도 프로세스에서 진행하고 그 응답을 IPC 등을 통해서 전달받는 방식을 권장합니다. 파이프 IPC 예제를 참고합니다.

헤더 파일

OasisNet.h

함수

ssize_t generateWifiPsk ( const char * passphrase , const char * ssid , char * pskstr , size_t size )
OasisNet.h
WiFi PSK를 생성합니다.
매개변수
passphrase  사용자가 입력한 WiFi AP 접속 비밀번호 등의 문구입니다.
ssid  WiFi AP의 SSID 입니다.
pskstr  OUT 생성한 PSK를 리턴합니다.
size  PSK 버퍼 크기입니다. 바이트 단위입니다.
리턴값
생성한 PSK 키 길이를 리턴합니다. 바이트 단위입니다.
int32_t wifiScanNetworks ( std::list<WifiAccessPointInfo> & list , int32_t timeout = 15000000 , bool * cancel_ptr = nullptr )
OasisNet.h
로컬 네트워크에 있는 WiFi AP를 스캔하여 목록을 얻습니다.
매개변수
list  OUT 스캔한 WiFi AP 목록을 리턴합니다. WifiAccessPointInfo는 아래 구조체 절을 참조합니다.
timeout  스캔 완료까지 대기 시간입니다. 마이크로초 단위입니다. 디폴트는 15초입니다.
cancel_ptr  스캔 도중 취소를 위한 bool 타입 포인터입니다. 사용자가 이 포인터의 값을 true로 설정하면, 스캔 중지합니다.
리턴값
성공할 경우, AP 목록 크기를 리턴합니다. 실패할 경우 -1을 리턴합니다.

아래는 최대 20초 동안 WiFi AP를 스캐닝하는 예입니다.

bool cancel_scanning_ = false;
std::list<WifiAccessPointInfo> list;
wifiScanNetworks(list, 20000000, &cancel_scanning_);
TRACE0("scan done #%d, canceled?%d\n", list.size(), cancel_scanning_);
int32_t wifiGetConnectedNetworkSSID ( const char * ifname , std::string & essid )
OasisNet.h
무선 네트워크 인터페이스에 접속된 현재 AP SSID를 얻습니다.
매개변수
ifname  wlan0 등 무선 네트워크 인터페이스 이름입니다.
essid  OUT 접속되어 있는 AP의 SSID를 리턴합니다. 접속되어 있지 않으면 -1을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t wifiGetMode ( const char * ifname , std::string & mode )
OasisNet.h
무선 네트워크 인터페이스의 현재 모드를 얻습니다.
매개변수
ifname  wlan0 등 무선 네트워크 인터페이스 이름입니다.
mode  OUT AP 모드이면 ap를 리턴하고, STA 모드이면 sta를 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패
int32_t wifiGetSignalStrength ( const char * ifname , int32_t * strength )
OasisNet.h
무선 네트워크 인터페이스의 신호강도를 얻습니다.
매개변수
ifname  wlan0 등 무선 네트워크 인터페이스 이름입니다.
strength  OUT 신호 강도 (dBm)을 리턴합니다.
리턴값
  • 0: 성공
  • -1: 실패

아래 신호 강도 값에 따른 레벨(0~4) 관계표입니다.

Strength(dBm) Level 상태
-30 이상 4 매우좋음
-51 ~ -31 3 좋음
-76 ~ -52 2 양호
-80 ~ -77 1 약함
-90 ~ -81 0 매우 약함 (사용불가)

구조체

struct WifiAccessPointInfo
OasisNet.h
타입
이름
설명
std::string
essid
AP의 SSID 입니다.
bool
is_public
공개 여부입니다. true인 경우, 접속 암호가 필요없습니다.