Files
rikkei_simple_care/client/internal/winapi/wifi_darwin.go
2026-07-01 12:43:09 +07:00

84 lines
1.8 KiB
Go

//go:build darwin
package winapi
/*
#cgo LDFLAGS: -framework CoreWLAN -framework CoreLocation -framework Foundation -framework AVFoundation -framework CoreGraphics
#include <stdlib.h>
typedef struct {
char* ssid;
char* bssid;
} CWifiInfo;
void RequestLocationPermission();
void RequestCameraAndMicPermission();
void RequestScreenCapturePermission();
CWifiInfo GetCurrentWifiInfo();
int GetCameraPermissionStatus();
int GetMicrophonePermissionStatus();
int GetScreenCapturePermissionStatus();
*/
import "C"
import (
"unsafe"
)
// RequestLocationAccess requests Location permission on macOS
func RequestLocationAccess() {
C.RequestLocationPermission()
}
// RequestCameraAndMicAccess requests Camera and Microphone permissions on macOS
func RequestCameraAndMicAccess() {
C.RequestCameraAndMicPermission()
}
// RequestScreenCaptureAccess requests Screen Capture permission on macOS
func RequestScreenCaptureAccess() {
C.RequestScreenCapturePermission()
}
// GetCameraPermission status on macOS
func GetCameraPermission() int {
return int(C.GetCameraPermissionStatus())
}
// GetMicrophonePermission status on macOS
func GetMicrophonePermission() int {
return int(C.GetMicrophonePermissionStatus())
}
// GetScreenCapturePermission status on macOS
func GetScreenCapturePermission() int {
return int(C.GetScreenCapturePermissionStatus())
}
// 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),
}
}