feat: Add device storage and WiFi management functionalities

- Implemented storage configuration management in device_storage.go:
  - GetStorageConfigurations
  - GetStorageConfiguration
  - CreateStorageConfiguration
  - SetStorageConfiguration
  - DeleteStorageConfiguration
  - SetHashingAlgorithm

- Added unit tests for storage configuration operations in device_storage_test.go.

- Implemented WiFi management functionalities in device_wifi.go:
  - GetDot11Capabilities
  - GetDot11Status
  - GetDot1XConfiguration
  - GetDot1XConfigurations
  - SetDot1XConfiguration
  - CreateDot1XConfiguration
  - DeleteDot1XConfiguration
  - ScanAvailableDot11Networks

- Added unit tests for WiFi management operations in device_wifi_test.go.

- Updated types.go to include new structures for geo location and access policy.
This commit is contained in:
ProtoTess
2025-12-01 00:05:35 +00:00
parent 3f343370ce
commit 4f3e2a6df0
14 changed files with 4391 additions and 66 deletions
+43
View File
@@ -404,6 +404,49 @@ client.DeleteUsers(ctx, []string{"user1", "user2"})
client.AddScopes(ctx, []string{"scope1", "scope2", "scope3"})
```
## Geo Location & Discovery
```go
// Get device location (GPS coordinates)
locations, _ := client.GetGeoLocation(ctx)
for _, loc := range locations {
fmt.Printf("%s: (%.4f, %.4f) elevation %.1fm\n",
loc.Entity, loc.Lat, loc.Lon, loc.Elevation)
}
// Set location
client.SetGeoLocation(ctx, []onvif.LocationEntity{
{
Entity: "Main Building",
Token: "loc1",
Fixed: true,
Lon: -122.4194,
Lat: 37.7749,
Elevation: 10.5,
},
})
// Get WS-Discovery multicast addresses
dpAddresses, _ := client.GetDPAddresses(ctx)
for _, addr := range dpAddresses {
fmt.Printf("%s: %s / %s\n", addr.Type, addr.IPv4Address, addr.IPv6Address)
}
// Set discovery addresses (empty list restores defaults)
client.SetDPAddresses(ctx, []onvif.NetworkHost{
{Type: "IPv4", IPv4Address: "239.255.255.250"},
{Type: "IPv6", IPv6Address: "ff02::c"},
})
// Get device access policy
policy, _ := client.GetAccessPolicy(ctx)
if policy.PolicyFile != nil {
fmt.Printf("Policy: %d bytes of %s\n",
len(policy.PolicyFile.Data),
policy.PolicyFile.ContentType)
}
```
## See Also
- [DEVICE_API_STATUS.md](DEVICE_API_STATUS.md) - Complete API implementation status