@@ -393,6 +393,7 @@ def __init__(
393
393
self .adjust_time = adjust_time
394
394
self .dt_diff = None
395
395
self .xaddrs = {}
396
+ self ._capabilities : Optional [Dict [str , Any ]] = None
396
397
397
398
# Active service client container
398
399
self .services : Dict [Tuple [str , Optional [str ]], ONVIFService ] = {}
@@ -403,6 +404,12 @@ def __init__(
403
404
self ._snapshot_client = AsyncClient (verify = _NO_VERIFY_SSL_CONTEXT )
404
405
self ._background_tasks = set ()
405
406
407
+ async def get_capabilities (self ) -> Dict [str , Any ]:
408
+ """Get device capabilities."""
409
+ if self ._capabilities is None :
410
+ await self .update_xaddrs ()
411
+ return self ._capabilities
412
+
406
413
async def update_xaddrs (self ):
407
414
"""Update xaddrs for services."""
408
415
self .dt_diff = None
@@ -438,6 +445,10 @@ async def update_xaddrs(self):
438
445
self .xaddrs [namespace ] = capability ["XAddr" ]
439
446
except Exception :
440
447
logger .exception ("Unexpected service type" )
448
+ try :
449
+ self ._capabilities = self .to_dict (capabilities )
450
+ except Exception :
451
+ logger .exception ("Failed to parse capabilities" )
441
452
442
453
async def create_pullpoint_subscription (
443
454
self , config : Optional [Dict [str , Any ]] = None
0 commit comments