Files
onvif-go/types.go
T
ProtoTess 3bf078ed3f Add camera test framework and initial tests for Bosch FLEXIDOME indoor 5100i IR
- Introduced a new directory `testdata/captures/` containing captured XML archives and README documentation for the camera test framework.
- Added a mock server implementation to replay captured SOAP responses for testing.
- Created automated tests for Bosch FLEXIDOME indoor 5100i IR using captured responses, validating device information, system date and time, capabilities, and profiles.
- Implemented enhanced device features tests, covering hostname, DNS, NTP, network interfaces, scopes, and user management.
- Added support for enhanced media and imaging features, including video and audio sources, and imaging options.
- Updated types to include new configurations and options for network, imaging, and device capabilities.
2025-11-11 02:10:04 +00:00

639 lines
15 KiB
Go

package onvif
import "time"
// DeviceInformation contains basic device information
type DeviceInformation struct {
Manufacturer string
Model string
FirmwareVersion string
SerialNumber string
HardwareID string
}
// Capabilities represents the device capabilities
type Capabilities struct {
Analytics *AnalyticsCapabilities
Device *DeviceCapabilities
Events *EventCapabilities
Imaging *ImagingCapabilities
Media *MediaCapabilities
PTZ *PTZCapabilities
Extension *CapabilitiesExtension
}
// AnalyticsCapabilities represents analytics service capabilities
type AnalyticsCapabilities struct {
XAddr string
RuleSupport bool
AnalyticsModuleSupport bool
}
// DeviceCapabilities represents device service capabilities
type DeviceCapabilities struct {
XAddr string
Network *NetworkCapabilities
System *SystemCapabilities
IO *IOCapabilities
Security *SecurityCapabilities
}
// EventCapabilities represents event service capabilities
type EventCapabilities struct {
XAddr string
WSSubscriptionPolicySupport bool
WSPullPointSupport bool
WSPausableSubscriptionSupport bool
}
// ImagingCapabilities represents imaging service capabilities
type ImagingCapabilities struct {
XAddr string
}
// MediaCapabilities represents media service capabilities
type MediaCapabilities struct {
XAddr string
StreamingCapabilities *StreamingCapabilities
}
// PTZCapabilities represents PTZ service capabilities
type PTZCapabilities struct {
XAddr string
}
// NetworkCapabilities represents network capabilities
type NetworkCapabilities struct {
IPFilter bool
ZeroConfiguration bool
IPVersion6 bool
DynDNS bool
Extension *NetworkCapabilitiesExtension
}
// SystemCapabilities represents system capabilities
type SystemCapabilities struct {
DiscoveryResolve bool
DiscoveryBye bool
RemoteDiscovery bool
SystemBackup bool
SystemLogging bool
FirmwareUpgrade bool
SupportedVersions []string
Extension *SystemCapabilitiesExtension
}
// IOCapabilities represents I/O capabilities
type IOCapabilities struct {
InputConnectors int
RelayOutputs int
Extension *IOCapabilitiesExtension
}
// SecurityCapabilities represents security capabilities
type SecurityCapabilities struct {
TLS11 bool
TLS12 bool
OnboardKeyGeneration bool
AccessPolicyConfig bool
X509Token bool
SAMLToken bool
KerberosToken bool
RELToken bool
Extension *SecurityCapabilitiesExtension
}
// StreamingCapabilities represents streaming capabilities
type StreamingCapabilities struct {
RTPMulticast bool
RTP_TCP bool
RTP_RTSP_TCP bool
Extension *StreamingCapabilitiesExtension
}
// Extension types
type CapabilitiesExtension struct{}
type NetworkCapabilitiesExtension struct{}
type SystemCapabilitiesExtension struct{}
type IOCapabilitiesExtension struct{}
type SecurityCapabilitiesExtension struct{}
type StreamingCapabilitiesExtension struct{}
// Profile represents a media profile
type Profile struct {
Token string
Name string
VideoSourceConfiguration *VideoSourceConfiguration
AudioSourceConfiguration *AudioSourceConfiguration
VideoEncoderConfiguration *VideoEncoderConfiguration
AudioEncoderConfiguration *AudioEncoderConfiguration
PTZConfiguration *PTZConfiguration
MetadataConfiguration *MetadataConfiguration
Extension *ProfileExtension
}
// VideoSourceConfiguration represents video source configuration
type VideoSourceConfiguration struct {
Token string
Name string
UseCount int
SourceToken string
Bounds *IntRectangle
}
// AudioSourceConfiguration represents audio source configuration
type AudioSourceConfiguration struct {
Token string
Name string
UseCount int
SourceToken string
}
// VideoEncoderConfiguration represents video encoder configuration
type VideoEncoderConfiguration struct {
Token string
Name string
UseCount int
Encoding string // JPEG, MPEG4, H264
Resolution *VideoResolution
Quality float64
RateControl *VideoRateControl
MPEG4 *MPEG4Configuration
H264 *H264Configuration
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// AudioEncoderConfiguration represents audio encoder configuration
type AudioEncoderConfiguration struct {
Token string
Name string
UseCount int
Encoding string // G711, G726, AAC
Bitrate int
SampleRate int
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// PTZConfiguration represents PTZ configuration
type PTZConfiguration struct {
Token string
Name string
UseCount int
NodeToken string
DefaultAbsolutePantTiltPositionSpace string
DefaultAbsoluteZoomPositionSpace string
DefaultRelativePanTiltTranslationSpace string
DefaultRelativeZoomTranslationSpace string
DefaultContinuousPanTiltVelocitySpace string
DefaultContinuousZoomVelocitySpace string
DefaultPTZSpeed *PTZSpeed
DefaultPTZTimeout time.Duration
PanTiltLimits *PanTiltLimits
ZoomLimits *ZoomLimits
}
// MetadataConfiguration represents metadata configuration
type MetadataConfiguration struct {
Token string
Name string
UseCount int
PTZStatus *PTZFilter
Events *EventSubscription
Analytics bool
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// VideoResolution represents video resolution
type VideoResolution struct {
Width int
Height int
}
// VideoRateControl represents video rate control
type VideoRateControl struct {
FrameRateLimit int
EncodingInterval int
BitrateLimit int
}
// MPEG4Configuration represents MPEG4 configuration
type MPEG4Configuration struct {
GovLength int
MPEG4Profile string
}
// H264Configuration represents H264 configuration
type H264Configuration struct {
GovLength int
H264Profile string
}
// MulticastConfiguration represents multicast configuration
type MulticastConfiguration struct {
Address *IPAddress
Port int
TTL int
AutoStart bool
}
// IPAddress represents an IP address
type IPAddress struct {
Type string // IPv4 or IPv6
Address string
IPv4Address string
IPv6Address string
}
// IntRectangle represents a rectangle with integer coordinates
type IntRectangle struct {
X int
Y int
Width int
Height int
}
// PTZSpeed represents PTZ speed
type PTZSpeed struct {
PanTilt *Vector2D
Zoom *Vector1D
}
// Vector2D represents a 2D vector
type Vector2D struct {
X float64
Y float64
Space string
}
// Vector1D represents a 1D vector
type Vector1D struct {
X float64
Space string
}
// PanTiltLimits represents pan/tilt limits
type PanTiltLimits struct {
Range *Space2DDescription
}
// ZoomLimits represents zoom limits
type ZoomLimits struct {
Range *Space1DDescription
}
// Space2DDescription represents 2D space description
type Space2DDescription struct {
URI string
XRange *FloatRange
YRange *FloatRange
}
// Space1DDescription represents 1D space description
type Space1DDescription struct {
URI string
XRange *FloatRange
}
// FloatRange represents a float range
type FloatRange struct {
Min float64
Max float64
}
// PTZFilter represents PTZ filter
type PTZFilter struct {
Status bool
Position bool
}
// EventSubscription represents event subscription
type EventSubscription struct {
Filter *FilterType
}
// FilterType represents filter type
type FilterType struct {
// Simplified for now
}
// ProfileExtension represents profile extension
type ProfileExtension struct{}
// StreamSetup represents stream setup parameters
type StreamSetup struct {
Stream string // RTP-Unicast, RTP-Multicast
Transport *Transport
}
// Transport represents transport parameters
type Transport struct {
Protocol string // UDP, TCP, RTSP, HTTP
Tunnel *Tunnel
}
// Tunnel represents tunnel parameters
type Tunnel struct{}
// MediaURI represents a media URI
type MediaURI struct {
URI string
InvalidAfterConnect bool
InvalidAfterReboot bool
Timeout time.Duration
}
// PTZStatus represents PTZ status
type PTZStatus struct {
Position *PTZVector
MoveStatus *PTZMoveStatus
Error string
UTCTime time.Time
}
// PTZVector represents PTZ position
type PTZVector struct {
PanTilt *Vector2D
Zoom *Vector1D
}
// PTZMoveStatus represents PTZ movement status
type PTZMoveStatus struct {
PanTilt string // IDLE, MOVING, UNKNOWN
Zoom string // IDLE, MOVING, UNKNOWN
}
// PTZPreset represents a PTZ preset
type PTZPreset struct {
Token string
Name string
PTZPosition *PTZVector
}
// ImagingSettings represents imaging settings
type ImagingSettings struct {
BacklightCompensation *BacklightCompensation
Brightness *float64
ColorSaturation *float64
Contrast *float64
Exposure *Exposure
Focus *FocusConfiguration
IrCutFilter *string
Sharpness *float64
WideDynamicRange *WideDynamicRange
WhiteBalance *WhiteBalance
Extension *ImagingSettingsExtension
}
// BacklightCompensation represents backlight compensation
type BacklightCompensation struct {
Mode string // OFF, ON
Level float64
}
// Exposure represents exposure settings
type Exposure struct {
Mode string // AUTO, MANUAL
Priority string // LowNoise, FrameRate
MinExposureTime float64
MaxExposureTime float64
MinGain float64
MaxGain float64
MinIris float64
MaxIris float64
ExposureTime float64
Gain float64
Iris float64
}
// FocusConfiguration represents focus configuration
type FocusConfiguration struct {
AutoFocusMode string // AUTO, MANUAL
DefaultSpeed float64
NearLimit float64
FarLimit float64
}
// WideDynamicRange represents WDR settings
type WideDynamicRange struct {
Mode string // OFF, ON
Level float64
}
// WhiteBalance represents white balance settings
type WhiteBalance struct {
Mode string // AUTO, MANUAL
CrGain float64
CbGain float64
}
// ImagingSettingsExtension represents imaging settings extension
type ImagingSettingsExtension struct{}
// HostnameInformation represents hostname configuration
type HostnameInformation struct {
FromDHCP bool
Name string
}
// DNSInformation represents DNS configuration
type DNSInformation struct {
FromDHCP bool
SearchDomain []string
DNSFromDHCP []IPAddress
DNSManual []IPAddress
}
// NTPInformation represents NTP configuration
type NTPInformation struct {
FromDHCP bool
NTPFromDHCP []NetworkHost
NTPManual []NetworkHost
}
// NetworkHost represents a network host
type NetworkHost struct {
Type string // IPv4, IPv6, DNS
IPv4Address string
IPv6Address string
DNSname string
}
// NetworkInterface represents a network interface
type NetworkInterface struct {
Token string
Enabled bool
Info NetworkInterfaceInfo
IPv4 *IPv4NetworkInterface
IPv6 *IPv6NetworkInterface
}
// NetworkInterfaceInfo represents network interface info
type NetworkInterfaceInfo struct {
Name string
HwAddress string
MTU int
}
// IPv4NetworkInterface represents IPv4 configuration
type IPv4NetworkInterface struct {
Enabled bool
Config IPv4Configuration
}
// IPv6NetworkInterface represents IPv6 configuration
type IPv6NetworkInterface struct {
Enabled bool
Config IPv6Configuration
}
// IPv4Configuration represents IPv4 configuration
type IPv4Configuration struct {
Manual []PrefixedIPv4Address
DHCP bool
}
// IPv6Configuration represents IPv6 configuration
type IPv6Configuration struct {
Manual []PrefixedIPv6Address
DHCP bool
}
// PrefixedIPv4Address represents an IPv4 address with prefix
type PrefixedIPv4Address struct {
Address string
PrefixLength int
}
// PrefixedIPv6Address represents an IPv6 address with prefix
type PrefixedIPv6Address struct {
Address string
PrefixLength int
}
// Scope represents a device scope
type Scope struct {
ScopeDef string
ScopeItem string
}
// User represents a user account
type User struct {
Username string
Password string
UserLevel string // Administrator, Operator, User
}
// VideoSource represents a video source
type VideoSource struct {
Token string
Framerate float64
Resolution *VideoResolution
Imaging *ImagingSettings
}
// AudioSource represents an audio source
type AudioSource struct {
Token string
Channels int
}
// AudioOutput represents an audio output
type AudioOutput struct {
Token string
}
// ImagingOptions represents available imaging options
type ImagingOptions struct {
BacklightCompensation *BacklightCompensationOptions
Brightness *FloatRange
ColorSaturation *FloatRange
Contrast *FloatRange
Exposure *ExposureOptions
Focus *FocusOptions
IrCutFilterModes []string
Sharpness *FloatRange
WideDynamicRange *WideDynamicRangeOptions
WhiteBalance *WhiteBalanceOptions
}
// BacklightCompensationOptions represents backlight compensation options
type BacklightCompensationOptions struct {
Mode []string
Level *FloatRange
}
// ExposureOptions represents exposure options
type ExposureOptions struct {
Mode []string
Priority []string
MinExposureTime *FloatRange
MaxExposureTime *FloatRange
MinGain *FloatRange
MaxGain *FloatRange
MinIris *FloatRange
MaxIris *FloatRange
ExposureTime *FloatRange
Gain *FloatRange
Iris *FloatRange
}
// FocusOptions represents focus options
type FocusOptions struct {
AutoFocusModes []string
DefaultSpeed *FloatRange
NearLimit *FloatRange
FarLimit *FloatRange
}
// WideDynamicRangeOptions represents WDR options
type WideDynamicRangeOptions struct {
Mode []string
Level *FloatRange
}
// WhiteBalanceOptions represents white balance options
type WhiteBalanceOptions struct {
Mode []string
YrGain *FloatRange
YbGain *FloatRange
}
// MoveOptions represents imaging move options
type MoveOptions struct {
Absolute *AbsoluteFocusOptions
Relative *RelativeFocusOptions
Continuous *ContinuousFocusOptions
}
// AbsoluteFocusOptions represents absolute focus options
type AbsoluteFocusOptions struct {
Position FloatRange
Speed FloatRange
}
// RelativeFocusOptions represents relative focus options
type RelativeFocusOptions struct {
Distance FloatRange
Speed FloatRange
}
// ContinuousFocusOptions represents continuous focus options
type ContinuousFocusOptions struct {
Speed FloatRange
}
// ImagingStatus represents imaging status
type ImagingStatus struct {
FocusStatus *FocusStatus
}
// FocusStatus represents focus status
type FocusStatus struct {
Position float64
MoveStatus string
Error string
}