WiFi 무선네트워크 API¶
Oasis는 무선 네트워크 사용을 위한 API를 제공합니다.
hostapd나 wpa_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인 경우, 접속 암호가 필요없습니다.