//go:build darwin package winapi /* #cgo LDFLAGS: -framework CoreWLAN -framework CoreLocation -framework Foundation #include 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), } }