Files
rikkei_simple_care/client/internal/winapi/wifi_darwin.go
2026-07-01 10:06:31 +07:00

54 lines
944 B
Go

//go:build darwin
package winapi
/*
#cgo LDFLAGS: -framework CoreWLAN -framework CoreLocation -framework Foundation
#include <stdlib.h>
typedef struct {
char* ssid;
char* bssid;
} CWifiInfo;
void RequestLocationPermission();
CWifiInfo GetCurrentWifiInfo();
*/
import "C"
import (
"unsafe"
)
// RequestLocationAccess requests Location permission on macOS
func RequestLocationAccess() {
C.RequestLocationPermission()
}
// GetWifiConnection đọc SSID và BSSID từ CoreWLAN (macOS)
func GetWifiConnection() WifiConnection {
info := C.GetCurrentWifiInfo()
defer func() {
if info.ssid != nil {
C.free(unsafe.Pointer(info.ssid))
}
if info.bssid != nil {
C.free(unsafe.Pointer(info.bssid))
}
}()
ssid := ""
if info.ssid != nil {
ssid = C.GoString(info.ssid)
}
bssid := ""
if info.bssid != nil {
bssid = C.GoString(info.bssid)
}
return WifiConnection{
SSID: ssid,
BSSID: normalizeMAC(bssid),
}
}