2026-05-13 17:18:50 +08:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2026-07-02 17:16:18 +08:00
< meta name = "generator" content = "pdoc 14.0.0" / >
< title > Module List – pdoc 14.0.0< / title >
2026-05-13 17:18:50 +08:00
< style > / * ! * B o o t s t r a p R e b o o t v 5 . 0 . 0 ( h t t p s : / / g e t b o o t s t r a p . c o m / ) * C o p y r i g h t 2 0 1 1 - 2 0 2 1 T h e B o o t s t r a p A u t h o r s * C o p y r i g h t 2 0 1 1 - 2 0 2 1 T w i t t e r , I n c . * L i c e n s e d u n d e r M I T ( h t t p s : / / g i t h u b . c o m / t w b s / b o o t s t r a p / b l o b / m a i n / L I C E N S E ) * F o r k e d f r o m N o r m a l i z e . c s s , l i c e n s e d M I T ( h t t p s : / / g i t h u b . c o m / n e c o l a s / n o r m a l i z e . c s s / b l o b / m a s t e r / L I C E N S E . m d ) * / * , : : a f t e r , : : b e f o r e { b o x - s i z i n g : b o r d e r - b o x } @ m e d i a ( p r e f e r s - r e d u c e d - m o t i o n : n o - p r e f e r e n c e ) { : r o o t { s c r o l l - b e h a v i o r : s m o o t h } } b o d y { m a r g i n : 0 ; f o n t - f a m i l y : s y s t e m - u i , - a p p l e - s y s t e m , " S e g o e U I " , R o b o t o , " H e l v e t i c a N e u e " , A r i a l , " N o t o S a n s " , " L i b e r a t i o n S a n s " , s a n s - s e r i f , " A p p l e C o l o r E m o j i " , " S e g o e U I E m o j i " , " S e g o e U I S y m b o l " , " N o t o C o l o r E m o j i " ; f o n t - s i z e : 1 r e m ; f o n t - w e i g h t : 4 0 0 ; l i n e - h e i g h t : 1 . 5 ; c o l o r : # 2 1 2 5 2 9 ; b a c k g r o u n d - c o l o r : # f f f ; - w e b k i t - t e x t - s i z e - a d j u s t : 1 0 0 % ; - w e b k i t - t a p - h i g h l i g h t - c o l o r : t r a n s p a r e n t } h r { m a r g i n : 1 r e m 0 ; c o l o r : i n h e r i t ; b a c k g r o u n d - c o l o r : c u r r e n t C o l o r ; b o r d e r : 0 ; o p a c i t y : . 2 5 } h r : n o t ( [ s i z e ] ) { h e i g h t : 1 p x } h 1 , h 2 , h 3 , h 4 , h 5 , h 6 { m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : . 5 r e m ; f o n t - w e i g h t : 5 0 0 ; l i n e - h e i g h t : 1 . 2 } h 1 { f o n t - s i z e : c a l c ( 1 . 3 7 5 r e m + 1 . 5 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 1 { f o n t - s i z e : 2 . 5 r e m } } h 2 { f o n t - s i z e : c a l c ( 1 . 3 2 5 r e m + . 9 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 2 { f o n t - s i z e : 2 r e m } } h 3 { f o n t - s i z e : c a l c ( 1 . 3 r e m + . 6 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 3 { f o n t - s i z e : 1 . 7 5 r e m } } h 4 { f o n t - s i z e : c a l c ( 1 . 2 7 5 r e m + . 3 v w ) } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { h 4 { f o n t - s i z e : 1 . 5 r e m } } h 5 { f o n t - s i z e : 1 . 2 5 r e m } h 6 { f o n t - s i z e : 1 r e m } p { m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 r e m } a b b r [ d a t a - b s - o r i g i n a l - t i t l e ] , a b b r [ t i t l e ] { - w e b k i t - t e x t - d e c o r a t i o n : u n d e r l i n e d o t t e d ; t e x t - d e c o r a t i o n : u n d e r l i n e d o t t e d ; c u r s o r : h e l p ; - w e b k i t - t e x t - d e c o r a t i o n - s k i p - i n k : n o n e ; t e x t - d e c o r a t i o n - s k i p - i n k : n o n e } a d d r e s s { m a r g i n - b o t t o m : 1 r e m ; f o n t - s t y l e : n o r m a l ; l i n e - h e i g h t : i n h e r i t } o l , u l { p a d d i n g - l e f t : 2 r e m } d l , o l , u l { m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 r e m } o l o l , o l u l , u l o l , u l u l { m a r g i n - b o t t o m : 0 } d t { f o n t - w e i g h t : 7 0 0 } d d { m a r g i n - b o t t o m : . 5 r e m ; m a r g i n - l e f t : 0 } b l o c k q u o t e { m a r g i n : 0 0 1 r e m } b , s t r o n g { f o n t - w e i g h t : b o l d e r } s m a l l { f o n t - s i z e : . 8 7 5 e m } m a r k { p a d d i n g : . 2 e m ; b a c k g r o u n d - c o l o r : # f c f 8 e 3 } s u b , s u p { p o s i t i o n : r e l a t i v e ; f o n t - s i z e : . 7 5 e m ; l i n e - h e i g h t : 0 ; v e r t i c a l - a l i g n : b a s e l i n e } s u b { b o t t o m : - . 2 5 e m } s u p { t o p : - . 5 e m } a { c o l o r : # 0 d 6 e f d ; t e x t - d e c o r a t i o n : u n d e r l i n e } a : h o v e r { c o l o r : # 0 a 5 8 c a } a : n o t ( [ h r e f ] ) : n o t ( [ c l a s s ] ) , a : n o t ( [ h r e f ] ) : n o t ( [ c l a s s ] ) : h o v e r { c o l o r : i n h e r i t ; t e x t - d e c o r a t i o n : n o n e } c o d e , k b d , p r e , s a m p { f o n t - f a m i l y : S F M o n o - R e g u l a r , M e n l o , M o n a c o , C o n s o l a s , " L i b e r a t i o n M o n o " , " C o u r i e r N e w " , m o n o s p a c e ; f o n t - s i z e : 1 e m ; d i r e c t i o n : l t r ; u n i c o d e - b i d i : b i d i - o v e r r i d e } p r e { d i s p l a y : b l o c k ; m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 r e m ; o v e r f l o w : a u t o ; f o n t - s i z e : . 8 7 5 e m } p r e c o d e { f o n t - s i z e : i n h e r i t ; c o l o r : i n h e r i t ; w o r d - b r e a k : n o r m a l } c o d e { f o n t - s i z e : . 8 7 5 e m ; c o l o r : # d 6 3 3 8 4 ; w o r d - w r a p : b r e a k - w o r d } a > c o d e { c o l o r : i n h e r i t } k b d { p a d d i n g : . 2 r e m . 4 r e m ; f o n t - s i z e : . 8 7 5 e m ; c o l o r : # f f f ; b a c k g r o u n d - c o l o r : # 2 1 2 5 2 9 ; b o r d e r - r a d i u s : . 2 r e m } k b d k b d { p a d d i n g : 0 ; f o n t - s i z e : 1 e m ; f o n t - w e i g h t : 7 0 0 } f i g u r e { m a r g i n : 0 0 1 r e m } i m g , s v g { v e r t i c a l - a l i g n : m i d d l e } t a b l e { c a p t i o n - s i d e : b o t t o m ; b o r d e r - c o l l a p s e : c o l l a p s e } c a p t i o n { p a d d i n g - t o p : . 5 r e m ; p a d d i n g - b o t t o m : . 5 r e m ; c o l o r : # 6 c 7 5 7 d ; t e x t - a l i g n : l e f t } t h { t e x t - a l i g n : i n h e r i t ; t e x t - a l i g n : - w e b k i t - m a t c h - p a r e n t } t b o d y , t d , t f o o t , t h , t h e a d , t r { b o r d e r - c o l o r : i n h e r i t ; b o r d e r - s t y l e : s o l i d ; b o r d e r - w i d t h : 0 } l a b e l { d i s p l a y : i n l i n e - b l o c k } b u t t o n { b o r d e r - r a d i u s : 0 } b u t t o n : f o c u s : n o t ( : f o c u s - v i s i b l e ) { o u t l i n e : 0 } b u t t o n , i n p u t , o p t g r o u p , s e l e c t , t e x t a r e a { m a r g i n : 0 ; f o n t - f a m i l y : i n h e r i t ; f o n t - s i z e : i n h e r i t ; l i n e - h e i g h t : i n h e r i t } b u t t o n , s e l e c t { t e x t - t r a n s f o r m : n o n e } [ r o l e = b u t t o n ] { c u r s o r : p o i n t e r } s e l e c t { w o r d - w r a p : n o r m a l } s e l e c t : d i s a b l e d { o p a c i t y : 1 } [ l i s t ] : : - w e b k i t - c a l e n d a r - p i c k e r - i n d i c a t o r { d i s p l a y : n o n e } [ t y p e = b u t t o n ] , [ t y p e = r e s e t ] , [ t y p e = s u b m i t ] , b u t t o n { - w e b k i t - a p p e a r a n c e : b u t t o n } [ t y p e = b u t t o n ] : n o t ( : d i s a b l e d ) , [ t y p e = r e s e t ] : n o t ( : d i s a b l e d ) , [ t y p e = s u b m i t ] : n o t ( : d i s a b l e d ) , b u t t o n : n o t ( : d i s a b l e d ) { c u r s o r : p o i n t e r } : : - m o z - f o c u s - i n n e r { p a d d i n g : 0 ; b o r d e r - s t y l e : n o n e } t e x t a r e a { r e s i z e : v e r t i c a l } f i e l d s e t { m i n - w i d t h : 0 ; p a d d i n g : 0 ; m a r g i n : 0 ; b o r d e r : 0 } l e g e n d { f l o a t : l e f t ; w i d t h : 1 0 0 % ; p a d d i n g : 0 ; m a r g i n - b o t t o m : . 5 r e m ; f o n t - s i z e : c a l c ( 1 . 2 7 5 r e m + . 3 v w ) ; l i n e - h e i g h t : i n h e r i t } @ m e d i a ( m i n - w i d t h : 1 2 0 0 p x ) { l e g e n d { f o n t - s i z e : 1 . 5 r e m } } l e g e n d + * { c l e a r : l e f t } : : - w e b k i t - d a t e t i m e - e d i t - d a y - f i e l d , : : - w e b k i t - d a t e t i m e - e d i t - f i e l d s - w r a p p e r , : : - w e b k i t - d a t e t i m e - e d i t - h o u r - f i e l d , : : - w e b k i t - d a t e t i m e - e d i t - m i n u t e , : : - w e b k i t - d a t e t i m e - e d i t - m o n t h - f i e
< style > /*! syntax-highlighting.css */ pre { line-height : 125 % ; } span . linenos { color : inherit ; background-color : transparent ; padding-left : 5 px ; padding-right : 20 px ; } . pdoc-code . hll { background-color : #ffffcc } . pdoc-code { background : #f8f8f8 ; } . pdoc-code . c { color : #3D7B7B ; font-style : italic } . pdoc-code . err { border : 1 px solid #FF0000 } . pdoc-code . k { color : #008000 ; font-weight : bold } . pdoc-code . o { color : #666666 } . pdoc-code . ch { color : #3D7B7B ; font-style : italic } . pdoc-code . cm { color : #3D7B7B ; font-style : italic } . pdoc-code . cp { color : #9C6500 } . pdoc-code . cpf { color : #3D7B7B ; font-style : italic } . pdoc-code . c1 { color : #3D7B7B ; font-style : italic } . pdoc-code . cs { color : #3D7B7B ; font-style : italic } . pdoc-code . gd { color : #A00000 } . pdoc-code . ge { font-style : italic } . pdoc-code . gr { color : #E40000 } . pdoc-code . gh { color : #000080 ; font-weight : bold } . pdoc-code . gi { color : #008400 } . pdoc-code . go { color : #717171 } . pdoc-code . gp { color : #000080 ; font-weight : bold } . pdoc-code . gs { font-weight : bold } . pdoc-code . gu { color : #800080 ; font-weight : bold } . pdoc-code . gt { color : #0044DD } . pdoc-code . kc { color : #008000 ; font-weight : bold } . pdoc-code . kd { color : #008000 ; font-weight : bold } . pdoc-code . kn { color : #008000 ; font-weight : bold } . pdoc-code . kp { color : #008000 } . pdoc-code . kr { color : #008000 ; font-weight : bold } . pdoc-code . kt { color : #B00040 } . pdoc-code . m { color : #666666 } . pdoc-code . s { color : #BA2121 } . pdoc-code . na { color : #687822 } . pdoc-code . nb { color : #008000 } . pdoc-code . nc { color : #0000FF ; font-weight : bold } . pdoc-code . no { color : #880000 } . pdoc-code . nd { color : #AA22FF } . pdoc-code . ni { color : #717171 ; font-weight : bold } . pdoc-code . ne { color : #CB3F38 ; font-weight : bold } . pdoc-code . nf { color : #0000FF } . pdoc-code . nl { color : #767600 } . pdoc-code . nn { color : #0000FF ; font-weight : bold } . pdoc-code . nt { color : #008000 ; font-weight : bold } . pdoc-code . nv { color : #19177C } . pdoc-code . ow { color : #AA22FF ; font-weight : bold } . pdoc-code . w { color : #bbbbbb } . pdoc-code . mb { color : #666666 } . pdoc-code . mf { color : #666666 } . pdoc-code . mh { color : #666666 } . pdoc-code . mi { color : #666666 } . pdoc-code . mo { color : #666666 } . pdoc-code . sa { color : #BA2121 } . pdoc-code . sb { color : #BA2121 } . pdoc-code . sc { color : #BA2121 } . pdoc-code . dl { color : #BA2121 } . pdoc-code . sd { color : #BA2121 ; font-style : italic } . pdoc-code . s2 { color : #BA2121 } . pdoc-code . se { color : #AA5D1F ; font-weight : bold } . pdoc-code . sh { color : #BA2121 } . pdoc-code . si { color : #A45A77 ; font-weight : bold } . pdoc-code . sx { color : #008000 } . pdoc-code . sr { color : #A45A77 } . pdoc-code . s1 { color : #BA2121 } . pdoc-code . ss { color : #19177C } . pdoc-code . bp { color : #008000 } . pdoc-code . fm { color : #0000FF } . pdoc-code . vc { color : #19177C } . pdoc-code . vg { color : #19177C } . pdoc-code . vi { color : #19177C } . pdoc-code . vm { color : #19177C } . pdoc-code . il { color : #666666 } < / style >
< style > /*! theme.css */ : root { --pdoc-background : #fff ; } . pdoc { --text : #212529 ; --muted : #6c757d ; --link : #3660a5 ; --link-hover : #1659c5 ; --code : #f8f8f8 ; --active : #fff598 ; --accent : #eee ; --accent2 : #c1c1c1 ; --nav-hover : rgba ( 255 , 255 , 255 , 0.5 ) ; --name : #0066BB ; --def : #008800 ; --annotation : #007020 ; } < / style >
2026-07-02 17:16:18 +08:00
< style > /*! layout.css */ html , body { width : 100 % ; height : 100 % ; } html , main { scroll-behavior : smooth ; } body { background-color : var ( - - pdoc - background ) ; } @ media ( max-width : 769px ) { # navtoggle { cursor : pointer ; position : absolute ; width : 50 px ; height : 40 px ; top : 1 rem ; right : 1 rem ; border-color : var ( - - text ) ; color : var ( - - text ) ; display : flex ; opacity : 0.8 ; z-index : 999 ; } # navtoggle : hover { opacity : 1 ; } # togglestate + div { display : none ; } # togglestate : checked + div { display : inherit ; } main , header { padding : 2 rem 3 vw ; } header + main { margin-top : -3 rem ; } . git-button { display : none !important ; } nav input [ type = "search" ] { max-width : 77 % ; } nav input [ type = "search" ] : first-child { margin-top : -6 px ; } nav input [ type = "search" ] : valid ~ * { display : none !important ; } } @ media ( min-width : 770px ) { : root { --sidebar-width : clamp ( 12.5 rem , 28 vw , 22 rem ) ; } nav { position : fixed ; overflow : auto ; height : 100 vh ; width : var ( - - sidebar - width ) ; } main , header { padding : 3 rem 2 rem 3 rem calc ( var ( - - sidebar - width ) + 3 rem ) ; width : calc ( 54 rem + var ( - - sidebar - width ) ) ; max-width : 100 % ; } header + main { margin-top : -4 rem ; } # navtoggle { display : none ; } } # togglestate { position : absolute ; height : 0 ; opacity : 0 ; } nav . pdoc { --pad : clamp ( 0.5 rem , 2 vw , 1.75 rem ) ; --indent : 1.5 rem ; background-color : var ( - - accent ) ; border-right : 1 px solid var ( - - accent2 ) ; box-shadow : 0 0 20 px rgba ( 50 , 50 , 50 , .2 ) inset ; padding : 0 0 0 var ( - - pad ) ; overflow-wrap : anywhere ; scrollbar-width : thin ; scrollbar-color : var ( - - accent2 ) transparent } nav . pdoc :: -webkit-scrollbar { width : .4 rem ; } nav . pdoc :: -webkit-scrollbar-thumb { background-color : var ( - - accent2 ) ; } nav . pdoc > div { padding : var ( - - pad ) 0 ; } nav . pdoc . module-list-button { display : inline-flex ; align-items : center ; color : var ( - - text ) ; border-color : var ( - - muted ) ; margin-bottom : 1 rem ; } nav . pdoc . module-list-button : hover { border-color : var ( - - text ) ; } nav . pdoc input [ type = search ] { display : block ; outline-offset : 0 ; width : calc ( 100 % - var ( - - pad ) ) ; } nav . pdoc . logo { max-width : calc ( 100 % - var ( - - pad ) ) ; max-height : 35 vh ; display : block ; margin : 0 auto 1 rem ; transform : translate ( calc ( -.5 * var ( - - pad ) ) , 0 ) ; } nav . pdoc ul { list-style : none ; padding-left : 0 ; } nav . pdoc > div > ul { margin-left : calc ( 0 px - var ( - - pad ) ) ; } nav . pdoc li a { padding : .2 rem 0 .2 rem calc ( var ( - - pad ) + var ( - - indent ) ) ; } nav . pdoc > div > ul > li > a { padding-left : var ( - - pad ) ; } nav . pdoc li { transition : all 100 ms ; } nav . pdoc li : hover { background-color : var ( - - nav - hover ) ; } nav . pdoc a , nav . pdoc a : hover { color : var ( - - text ) ; } nav . pdoc a { display : block ; } nav . pdoc > h2 : first-of-type { margin-top : 1.5 rem ; } nav . pdoc . class : before { content : "class " ; color : var ( - - muted ) ; } nav . pdoc . function : after { content : "()" ; color : var ( - - muted ) ; } nav . pdoc footer : before { content : "" ; display : block ; width : calc ( 100 % - var ( - - pad ) ) ; border-top : solid var ( - - accent2 ) 1 px ; margin-top : 1.5 rem ; padding-top : .5 rem ; } nav . pdoc footer { font-size : small ; } < / style >
< style > / * ! c o n t e n t . c s s * / . p d o c { c o l o r : v a r ( - - t e x t ) ; b o x - s i z i n g : b o r d e r - b o x ; l i n e - h e i g h t : 1 . 5 ; b a c k g r o u n d : n o n e ; } . p d o c . p d o c - b u t t o n { c u r s o r : p o i n t e r ; d i s p l a y : i n l i n e - b l o c k ; b o r d e r : s o l i d b l a c k 1 p x ; b o r d e r - r a d i u s : 2 p x ; f o n t - s i z e : . 7 5 r e m ; p a d d i n g : c a l c ( 0 . 5 e m - 1 p x ) 1 e m ; t r a n s i t i o n : 1 0 0 m s a l l ; } . p d o c . p d o c - a l e r t { p a d d i n g : 1 r e m 1 r e m 1 r e m c a l c ( 1 . 5 r e m + 2 4 p x ) ; b o r d e r : 1 p x s o l i d t r a n s p a r e n t ; b o r d e r - r a d i u s : . 2 5 r e m ; b a c k g r o u n d - r e p e a t : n o - r e p e a t ; b a c k g r o u n d - p o s i t i o n : 1 r e m c e n t e r ; m a r g i n - b o t t o m : 1 r e m ; } . p d o c . p d o c - a l e r t > * : l a s t - c h i l d { m a r g i n - b o t t o m : 0 ; } . p d o c . p d o c - a l e r t - n o t e { c o l o r : # 0 8 4 2 9 8 ; b a c k g r o u n d - c o l o r : # c f e 2 f f ; b o r d e r - c o l o r : # b 6 d 4 f e ; b a c k g r o u n d - i m a g e : u r l ( " d a t a : i m a g e / s v g + x m l , % 3 C s v g % 2 0 x m l n s % 3 D % 2 2 h t t p % 3 A / / w w w . w 3 . o r g / 2 0 0 0 / s v g % 2 2 % 2 0 w i d t h % 3 D % 2 2 2 4 % 2 2 % 2 0 h e i g h t % 3 D % 2 2 2 4 % 2 2 % 2 0 f i l l % 3 D % 2 2 % 2 3 0 8 4 2 9 8 % 2 2 % 2 0 v i e w B o x % 3 D % 2 2 0 % 2 0 0 % 2 0 1 6 % 2 0 1 6 % 2 2 % 3 E % 3 C p a t h % 2 0 d % 3 D % 2 2 M 8 % 2 0 1 6 A 8 % 2 0 8 % 2 0 0 % 2 0 1 % 2 0 0 % 2 0 8 % 2 0 0 a 8 % 2 0 8 % 2 0 0 % 2 0 0 % 2 0 0 % 2 0 0 % 2 0 1 6 z m . 9 3 - 9 . 4 1 2 - 1 % 2 0 4 . 7 0 5 c - . 0 7 . 3 4 . 0 2 9 . 5 3 3 . 3 0 4 . 5 3 3 . 1 9 4 % 2 0 0 % 2 0 . 4 8 7 - . 0 7 . 6 8 6 - . 2 4 6 l - . 0 8 8 . 4 1 6 c - . 2 8 7 . 3 4 6 - . 9 2 . 5 9 8 - 1 . 4 6 5 . 5 9 8 - . 7 0 3 % 2 0 0 - 1 . 0 0 2 - . 4 2 2 - . 8 0 8 - 1 . 3 1 9 l . 7 3 8 - 3 . 4 6 8 c . 0 6 4 - . 2 9 3 . 0 0 6 - . 3 9 9 - . 2 8 7 - . 4 7 l - . 4 5 1 - . 0 8 1 . 0 8 2 - . 3 8 1 % 2 0 2 . 2 9 - . 2 8 7 z M 8 % 2 0 5 . 5 a 1 % 2 0 1 % 2 0 0 % 2 0 1 % 2 0 1 % 2 0 0 - 2 % 2 0 1 % 2 0 1 % 2 0 0 % 2 0 0 % 2 0 1 % 2 0 0 % 2 0 2 z % 2 2 / % 3 E % 3 C / s v g % 3 E " ) ; } . p d o c . p d o c - a l e r t - w a r n i n g { c o l o r : # 6 6 4 d 0 3 ; b a c k g r o u n d - c o l o r : # f f f 3 c d ; b o r d e r - c o l o r : # f f e c b 5 ; b a c k g r o u n d - i m a g e : u r l ( " d a t a : i m a g e / s v g + x m l , % 3 C s v g % 2 0 x m l n s % 3 D % 2 2 h t t p % 3 A / / w w w . w 3 . o r g / 2 0 0 0 / s v g % 2 2 % 2 0 w i d t h % 3 D % 2 2 2 4 % 2 2 % 2 0 h e i g h t % 3 D % 2 2 2 4 % 2 2 % 2 0 f i l l % 3 D % 2 2 % 2 3 6 6 4 d 0 3 % 2 2 % 2 0 v i e w B o x % 3 D % 2 2 0 % 2 0 0 % 2 0 1 6 % 2 0 1 6 % 2 2 % 3 E % 3 C p a t h % 2 0 d % 3 D % 2 2 M 8 . 9 8 2 % 2 0 1 . 5 6 6 a 1 . 1 3 % 2 0 1 . 1 3 % 2 0 0 % 2 0 0 % 2 0 0 - 1 . 9 6 % 2 0 0 L . 1 6 5 % 2 0 1 3 . 2 3 3 c - . 4 5 7 . 7 7 8 . 0 9 1 % 2 0 1 . 7 6 7 . 9 8 % 2 0 1 . 7 6 7 h 1 3 . 7 1 3 c . 8 8 9 % 2 0 0 % 2 0 1 . 4 3 8 - . 9 9 . 9 8 - 1 . 7 6 7 L 8 . 9 8 2 % 2 0 1 . 5 6 6 z M 8 % 2 0 5 c . 5 3 5 % 2 0 0 % 2 0 . 9 5 4 . 4 6 2 . 9 . 9 9 5 l - . 3 5 % 2 0 3 . 5 0 7 a . 5 5 2 . 5 5 2 % 2 0 0 % 2 0 0 % 2 0 1 - 1 . 1 % 2 0 0 L 7 . 1 % 2 0 5 . 9 9 5 A . 9 0 5 . 9 0 5 % 2 0 0 % 2 0 0 % 2 0 1 % 2 0 8 % 2 0 5 z m . 0 0 2 % 2 0 6 a 1 % 2 0 1 % 2 0 0 % 2 0 1 % 2 0 1 % 2 0 0 % 2 0 2 % 2 0 1 % 2 0 1 % 2 0 0 % 2 0 0 % 2 0 1 % 2 0 0 - 2 z % 2 2 / % 3 E % 3 C / s v g % 3 E " ) ; } . p d o c . p d o c - a l e r t - d a n g e r { c o l o r : # 8 4 2 0 2 9 ; b a c k g r o u n d - c o l o r : # f 8 d 7 d a ; b o r d e r - c o l o r : # f 5 c 2 c 7 ; b a c k g r o u n d - i m a g e : u r l ( " d a t a : i m a g e / s v g + x m l , % 3 C s v g % 2 0 x m l n s % 3 D % 2 2 h t t p % 3 A / / w w w . w 3 . o r g / 2 0 0 0 / s v g % 2 2 % 2 0 w i d t h % 3 D % 2 2 2 4 % 2 2 % 2 0 h e i g h t % 3 D % 2 2 2 4 % 2 2 % 2 0 f i l l % 3 D % 2 2 % 2 3 8 4 2 0 2 9 % 2 2 % 2 0 v i e w B o x % 3 D % 2 2 0 % 2 0 0 % 2 0 1 6 % 2 0 1 6 % 2 2 % 3 E % 3 C p a t h % 2 0 d % 3 D % 2 2 M 5 . 5 2 . 3 5 9 A . 5 . 5 % 2 0 0 % 2 0 0 % 2 0 1 % 2 0 6 % 2 0 0 h 4 a . 5 . 5 % 2 0 0 % 2 0 0 % 2 0 1 % 2 0 . 4 7 4 . 6 5 8 L 8 . 6 9 4 % 2 0 6 H 1 2 . 5 a . 5 . 5 % 2 0 0 % 2 0 0 % 2 0 1 % 2 0 . 3 9 5 . 8 0 7 l - 7 % 2 0 9 a . 5 . 5 % 2 0 0 % 2 0 0 % 2 0 1 - . 8 7 3 - . 4 5 4 L 6 . 8 2 3 % 2 0 9 . 5 H 3 . 5 a . 5 . 5 % 2 0 0 % 2 0 0 % 2 0 1 - . 4 8 - . 6 4 1 l 2 . 5 - 8 . 5 z % 2 2 / % 3 E % 3 C / s v g % 3 E " ) ; } . p d o c . v i s u a l l y - h i d d e n { p o s i t i o n : a b s o l u t e ! i m p o r t a n t ; w i d t h : 1 p x ! i m p o r t a n t ; h e i g h t : 1 p x ! i m p o r t a n t ; p a d d i n g : 0 ! i m p o r t a n t ; m a r g i n : - 1 p x ! i m p o r t a n t ; o v e r f l o w : h i d d e n ! i m p o r t a n t ; c l i p : r e c t ( 0 , 0 , 0 , 0 ) ! i m p o r t a n t ; w h i t e - s p a c e : n o w r a p ! i m p o r t a n t ; b o r d e r : 0 ! i m p o r t a n t ; } . p d o c h 1 , . p d o c h 2 , . p d o c h 3 { f o n t - w e i g h t : 3 0 0 ; m a r g i n : . 3 e m 0 ; p a d d i n g : . 2 e m 0 ; } . p d o c > s e c t i o n : n o t ( . m o d u l e - i n f o ) h 1 { f o n t - s i z e : 1 . 5 r e m ; f o n t - w e i g h t : 5 0 0 ; } . p d o c > s e c t i o n : n o t ( . m o d u l e - i n f o ) h 2 { f o n t - s i z e : 1 . 4 r e m ; f o n t - w e i g h t : 5 0 0 ; } . p d o c > s e c t i o n : n o t ( . m o d u l e - i n f o ) h 3 { f o n t - s i z e : 1 . 3 r e m ; f o n t - w e i g h t : 5 0 0 ; } . p d o c > s e c t i o n : n o t ( . m o d u l e - i n f o ) h 4 { f o n t - s i z e : 1 . 2 r e m ; } . p d o c > s e c t i o n : n o t ( . m o d u l e - i n f o ) h 5 { f o n t - s i z e : 1 . 1 r e m ; } . p d o c a { t e x t - d e c o r a t i o n : n o n e ; c o l o r : v a r ( - - l i n k ) ; } . p d o c a : h o v e r { c o l o r : v a r ( - - l i n k - h o v e r ) ; } . p d o c b l o c k q u o t e { m a r g i n - l e f t : 2 r e m ; } . p d o c p r e { b o r d e r - t o p : 1 p x s o l i d v a r ( - - a c c e n t 2 ) ; b o r d e r - b o t t o m : 1 p x s o l i d v a r ( - - a c c e n t 2 ) ; m a r g i n - t o p : 0 ; m a r g i n - b o t t o m : 1 e m ; p a d d i n g : . 5 r e m 0 . 5 r e m . 5 r e m ; o v e r f l o w - x : a u t o ; b a c k g r o u n d - c o l o r : v a r ( - - c o d e ) ; } . p d o c c o d e { c o l o r : v a r ( - - t e x t ) ; p a d d i n g : . 2 e m . 4 e m ; m a r g i n : 0 ; f o n t - s i z e : 8 5 % ; b a c k g r o u n d - c o l o r : v a r ( - - c o d e ) ; b o r d e r - r a d i u s : 6 p x ; } . p d o c a > c o d e { c o l o r : i n h e r i t ; } . p d o c p r e > c o d e { d i s p l a y : i n l i n e - b l o c k ; f o n t - s i z e : i n h e r i t ; b a c k g r o u n d : n o n e ; b o r d e r : n o n e ; p a d d i n g : 0 ; } . p d o c > s e c t i o n : n o t ( . m o d u l e - i n f o ) { m a r g i n - b o t t o m : 1 . 5 r e m ; } . p d o c . m o d u l e n a m e { m a r g i n - t o p : 0 ; f o n t - w e i g h t : b o l d ; } . p d o c . m o d u l e n a m e a { c o l o r : v a r ( - - l i n k ) ; t r a n s i t i o n : 1 0 0 m s a l l ; } . p d o c . g i t - b u t t o n { f l o a t : r i g h t ; b o r d e r : s o l i d v a r ( - - l i n k ) 1 p x ; } . p d o c . g i t - b u t t o n : h o v e r { b a c k g r o u n d - c o l o r : v a r ( - - l i n k ) ; c o l o r : v a r ( - - p d o c - b a c k g r o u n d ) ; } . v i e w - s o u r c e - t o g g l e - s t a t e , . v i e w - s o u r c e - t o g g l e - s t a t e ~ . p d o c - c o d e { d i s p l a y : n o n e ; } . v i e w - s o u r c e - t o g g l e - s t a t e : c h e c k e d ~ . p d o c - c o d e { d i s p l a y : b l o c k ; } . v i e w - s o u r c e - b u t t o n { d i s p l a y : i n l i n e - b l o c k ; f l o a t : r i g h t ; f o n t - s i z e : . 7 5 r e m ; l i n e - h e i g h t : 1 . 5 r e m ; c o l o r : v a r ( - - m u t e d ) ; p a d d i n g : 0 . 4 r e m 0 1 . 3 r
2026-05-13 17:18:50 +08:00
< style > /*! custom.css */ < / style >
< style > header . pdoc { display : flex ; align-items : center ; flex-wrap : wrap ; } header . pdoc img { max-width : 200 px ; max-height : 75 px ; padding-right : 2 rem ; } header . pdoc input [ type = search ] { outline-offset : 0 ; font-size : 1.5 rem ; min-width : 60 % ; flex-grow : 1 ; padding-left : .5 rem ; margin : 1.75 rem 0 ; } < / style > < / head >
< body >
< nav class = "pdoc" >
< label id = "navtoggle" for = "togglestate" class = "pdoc-button" > < svg xmlns = 'http://www.w3.org/2000/svg' viewBox = '0 0 30 30' > < path stroke-linecap = 'round' stroke = "currentColor" stroke-miterlimit = '10' stroke-width = '2' d = 'M4 7h22M4 15h22M4 23h22' / > < / svg > < / label >
< input id = "togglestate" type = "checkbox" aria-hidden = "true" tabindex = "-1" >
< div > < h2 id = "AllModules" > Available Modules< / h2 >
< ul >
< li > < a href = "UniTAP/tsi_lib.html" > TSI_LIB< / a > < / li >
< li > < a href = "UniTAP/common/audio_mode.html" > AUDIO_MODE< / a > < / li >
< li > < a href = "UniTAP/common/color_info.html" > COLOR_INFO< / a > < / li >
< li > < a href = "UniTAP/common/data_info.html" > DATA_INFO< / a > < / li >
< li > < a href = "UniTAP/common/timestamp.html" > TIMESTAMP< / a > < / li >
< li > < a href = "UniTAP/common/timing.html" > TIMING< / a > < / li >
< li > < a href = "UniTAP/common/video_frame.html" > VIDEO_FRAME< / a > < / li >
< li > < a href = "UniTAP/common/video_mode.html" > VIDEO_MODE< / a > < / li >
< li > < a href = "UniTAP/common/dsc_video_frame.html" > DSC_VIDEO_FRAME< / a > < / li >
< li > < a href = "UniTAP/common/dsc_compression_info.html" > DSC_COMPRESSION_INFO< / a > < / li >
< li > < a href = "UniTAP/dev/device.html" > DEVICE< / a > < / li >
< li > < a href = "UniTAP/dev/dev_3xx_roles.html" > DEV_3XX_ROLES< / a > < / li >
< li > < a href = "UniTAP/dev/dev_4xx_roles.html" > DEV_4XX_ROLES< / a > < / li >
< li > < a href = "UniTAP/dev/dev_5xx_roles.html" > DEV_5XX_ROLES< / a > < / li >
< li > < a href = "UniTAP/dev/modules/capturer/result_object.html" > RESULT_OBJECT< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_tests.html" > DUT_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/test_info.html" > TEST_INFO< / a > < / li >
< li > < a href = "DUT_TEST_GROUPS_INFO.html" > DUT_TEST_GROUPS_INFO< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/audio_test.html" > AUDIO_TEST< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/cec_tests.html" > CEC_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/crc_video_tests.html" > CRC_VIDEO_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp1_4_source_tests.html" > DP1_4_SOURCE_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp2_1_source_tests.html" > DP2_1_SOURCE_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_1_4_source_general_tab.html" > DP_1_4_SOURCE_GENERAL_TAB< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_2_1_source_general_tab.html" > DP_2_1_SOURCE_GENERAL_TAB< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_electrical_tests.html" > DP_ELECTRICAL_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp1_4_sink_tests.html" > DP1_4_SINK_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_source_adaptive_sync_tab.html" > DP_SOURCE_ADAPTIVE_SYNC_TAB< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_source_audio_tab.html" > DP_SOURCE_AUDIO_TAB< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_source_display_id_tab.html" > DP_SOURCE_DISPLAY_ID_TAB< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/dp_source_dsc_tab.html" > DP_SOURCE_DSC_TAB< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdcp_1a_tests.html" > HDCP_1A_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdcp_1b_tests.html" > HDCP_1B_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdcp_2c_tests.html" > HDCP_2C_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdcp_3a_tests.html" > HDCP_3A_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdcp_3b_tests.html" > HDCP_3B_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdcp_3c_tests.html" > HDCP_3C_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdmi_electrical_tests.html" > HDMI_ELECTRICAL_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdr10_tests.html" > HDR10_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/link_config_test.html" > LINK_CONFIG_TEST< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/pixel_video_test.html" > PIXEL_VIDEO_TEST< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/usbc_electrical_tests.html" > USBC_ELECTRICAL_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/vrr_tests.html" > VRR_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdmi_sink_tests.html" > HDMI_SINK_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdmi_sink_continuity_tests.html" > HDMI_SINK_CONTINUITY_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/dut_tests/dut_default_params/hdmi_sink_cable_check_tests.html" > HDMI_SINK_CABLE_CHECK_TESTS< / a > < / li >
< li > < a href = "UniTAP/dev/modules/opf/handler.html" > HANDLER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/dprx.html" > DPRX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/dprx4xx.html" > DPRX4XX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/dprx5xx.html" > DPRX5XX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/dptx.html" > DPTX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/dptx4xx.html" > DPTX4XX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/dptx5xx.html" > DPTX5XX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/hdrx.html" > HDRX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/hdrx4xx.html" > HDRX4XX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/hdtx.html" > HDTX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/hdtx4xx.html" > HDTX4XX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/pdc_port.html" > PDC_PORT< / a > < / li >
< li > < a href = "UniTAP/dev/ports/port.html" > PORT< / a > < / li >
< li > < a href = "UniTAP/dev/ports/rx.html" > RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/tx.html" > TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/ag/ag.html" > AG< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/ag/types.html" > TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/ag/ag_utils.html" > AG_UTILS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/audio/audio_capturer.html" > AUDIO_CAPTURER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/audio/result_audio.html" > RESULT_AUDIO< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/bulk/bulk_capturer.html" > BULK_CAPTURER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/bulk/bulk_types.html" > BULK_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/bulk/result_bulk.html" > RESULT_BULK< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/event/event_capturer.html" > EVENT_CAPTURER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/event/event_types.html" > EVENT_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/event/result_event.html" > RESULT_EVENT< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/video/result_video.html" > RESULT_VIDEO< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/capturer/video/video_capturer.html" > VIDEO_CAPTURER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/dpcd/dpcd.html" > DPCD< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/edid/edid.html" > EDID< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/edid/edid_types.html" > EDID_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/fec/fec_rx.html" > FEC_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/fec/fec_shared.html" > FEC_SHARED< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/fec/fec_tx.html" > FEC_TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/hdcp/hdcp_rx.html" > HDCP_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/hdcp/hdcp_tx.html" > HDCP_TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/hdcp/types.html" > TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_rx.html" > LINK_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_rx_caps.html" > LINK_RX_CAPS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_rx_status.html" > LINK_RX_STATUS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_rx_types.html" > LINK_RX_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_status_common.html" > LINK_STATUS_COMMON< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_tx.html" > LINK_TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_tx_config.html" > LINK_TX_CONFIG< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_tx_status.html" > LINK_TX_STATUS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_tx_types.html" > LINK_TX_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/dp/link_rx_aux_controller.html" > LINK_RX_AUX_CONTROLLER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/arc_rx.html" > ARC_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/capabilities.html" > CAPABILITIES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/frl_caps_rx.html" > FRL_CAPS_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/frl_control_tx.html" > FRL_CONTROL_TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/link.html" > LINK< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/status_rx.html" > STATUS_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/status_tx.html" > STATUS_TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/tmds_rx.html" > TMDS_RX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/tmds_tx.html" > TMDS_TX< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/link/hdmi/types.html" > TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/panel_replay/pr.html" > PR< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/panel_replay/pr_config.html" > PR_CONFIG< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/panel_replay/pr_types.html" > PR_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/panel_replay/pr_status.html" > PR_STATUS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/vtg/pg.html" > PG< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/vtg/pg_pattern_params.html" > PG_PATTERN_PARAMS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/vtg/timing_manager.html" > TIMING_MANAGER< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/vtg/types.html" > TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_bus_status.html" > PDC_BUS_STATUS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_capabilities.html" > PDC_CAPABILITIES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_contract_control.html" > PDC_CONTRACT_CONTROL< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_controls.html" > PDC_CONTROLS< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_dp_alt_mode.html" > PDC_DP_ALT_MODE< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_dpam_types.html" > PDC_DPAM_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_power_sink.html" > PDC_POWER_SINK< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_power_source.html" > PDC_POWER_SOURCE< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdc_types.html" > PDC_TYPES< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdo.html" > PDO< / a > < / li >
< li > < a href = "UniTAP/dev/ports/modules/pdc/pdo_types.html" > PDO_TYPES< / a > < / li >
< li > < a href = "UniTAP/utils/dscl_api.html" > DSCL_API< / a > < / li >
< li > < a href = "UniTAP/utils/function_wrapper.html" > FUNCTION_WRAPPER< / a > < / li >
< li > < a href = "Examples.html" > Examples< / a > < / li >
< li > < a href = "Quickstart.html" > Quickstart< / a > < / li >
< / ul >
< / div >
< / nav >
< header class = "pdoc" >
< a href = "https://www.unigraf.fi" > < img src = "https://www.unigraf.fi/app/themes/unigraf-theme/assets/images/unigraf-logo.png" alt = "project logo" / >
< / a > < input type = "search" placeholder = "Search API Documentation..." aria-label = "search box" >
< / header >
< main class = "pdoc" >
2026-07-02 17:16:18 +08:00
< div > < h1 > What is UniTAP?< / h1 > < p > UniTAP is a < a href = "https://docs.python.org/3/tutorial/index.html" > Python module< / a > that allows you to work directly with UCD devices.< / p > < h1 > How can I start?< / h1 > < p > Go to the section < a href = "Quickstart.html" > Quickstart< / a > and read how you can quickly start writing your own test scripts using the UniTAP API.< / p > < h1 > Are there ready-made examples of using the API?< / h1 > < p > To see the most popular API usages, see the < a href = "Examples.html" > Examples< / a > section.< / p > < h1 > What is the structure of a Python module?< / h1 > < p > UniTAP has a pretty simple structure. There are several main sections:< ul > < li > < a href = "#Common" > Common types< / a > < / li > < li > < a href = "#DeviceTypes" > Device types< / a > < / li > < li > < a href = "#DeviceModules" > Device modules< / a > < / li > < / ul > < / p > < h3 id = "Common" > Common types< / h3 > < p > You can use these types not only when writing scripts, but also in your own projects, since these types do not depend on the TSI library. Main list of types:< ul > < li > < a href = "UniTAP/common/audio_mode.html" > Audio Mode< / a > < / li > < li > < a href = "UniTAP/common/color_info.html" > Color Info< / a > < / li > < li > < a href = "UniTAP/common/data_info.html" > Data Info< / a > < / li > < li > < a href = "UniTAP/common/timestamp.html" > Timestamp< / a > < / li > < li > < a href = "UniTAP/common/timing.html" > Timing< / a > < / li > < li > < a href = "UniTAP/common/video_frame.html" > Video Frame< / a > < / li > < li > < a href = "UniTAP/common/video_mode.html" > Video Mode< / a > < / li > < li > < a href = "UniTAP/common/dsc_video_frame.html" > DSC Video Frame< / a > < / li > < li > < a href = "UniTAP/common/dsc_compression_info.html" > DSC Compression Info< / a > < / li > < / ul > < / p > < h3 id = "DeviceTypes" > Device types< / h3 > < p > Our UniTAP API currently supports the following devices:< ul > < li > < a href = "UniTAP/dev/dev_3xx_roles.html#UCD301" > UCD-301< / a > in < a href = "UniTAP/dev/ports/hdrx.html" > HDMI Sink< / a > and < a href = "UniTAP/dev/ports/dprx.html" > DP Sink< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_3xx_roles.html#UCD323" > UCD-323< / a > in < a href = "UniTAP/dev/ports/hdrx.html" > HDMI Sink< / a > , < a href = "UniTAP/dev/ports/dprx.html" > DP Sink< / a > , < a href = "UniTAP/dev/ports/hdtx.html" > HDMI Source< / a > and < a href = "UniTAP/dev/ports/dptx.html" > DP Source< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_3xx_roles.html#UCD340" > UCD-340< / a > in < a href = "UniTAP/dev/ports/dptx.html" > DP Source< / a > , < a href = "UniTAP/dev/ports/dprx.html" > DP Sink< / a > and < a href = "UniTAP/dev/ports/pdc_port.html#PDC340" > PDC (Sink and Source)< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD400" > UCD-400< / a > in < a href = "UniTAP/dev/ports/dptx4xx.html" > DP Source< / a > and < a href = "UniTAP/dev/ports/dprx4xx.html" > DP Sink< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD422" > UCD-422< / a > in < a href = "UniTAP/dev/ports/hdtx4xx.html" > HDMI Source< / a > and < a href = "UniTAP/dev/ports/hdrx4xx.html" > HDMI Sink< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD424" > UCD-424< / a > in < a href = "UniTAP/dev/ports/dptx4xx.html" > DP Source< / a > , < a href = "UniTAP/dev/ports/dprx4xx.html" > DP Sink< / a > and < a href = "UniTAP/dev/ports/pdc_port.html#PDC424" > PDC (Sink and Source)< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD451" > UCD-451< / a > in < a href = "UniTAP/dev/ports/dptx4xx.html" > DP Source< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD452" > UCD-452< / a > in < a href = "UniTAP/dev/ports/hdtx4xx.html" > HDMI Source< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD461" > UCD-461< / a > in < a href = "UniTAP/dev/ports/dptx4xx.html" > DP Source< / a > and < a href = "UniTAP/dev/ports/dprx4xx.html" > DP Sink< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_4xx_roles.html#UCD462" > UCD-462< / a > in < a href = "UniTAP/dev/ports/hdtx4xx.html" > HDMI Source< / a > and < a href = "UniTAP/dev/ports/hdrx4xx.html" > HDMI Sink< / a > roles< / li > < li > < a href = "UniTAP/dev/dev_5xx_roles.html#UCD500" > UCD-500< / a > in < a href = "UniTAP/dev/ports/dptx5xx.html" > DP Source< / a > , < a href = "UniTAP/dev/ports/dprx5xx.html" > DP Sink< / a > and < a href = "UniTAP/dev/ports/pdc_port.html#PDC500" > PDC (Sink and Source)< / a > roles< / li > < / ul > < / p > < h3 id = "DeviceModules" > Device modules< / h3 > < p > On all devices allows following modules:< ul > < li > < a href = "UniTAP/dev/modules/dut_tests/dut_tests.html" > Test mod
2026-05-13 17:18:50 +08:00
< / main > < script >
function escapeHTML(html) {
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
}
const originalContent = document.querySelector("main.pdoc");
let currentContent = originalContent;
function setContent(innerHTML) {
let elem;
if (innerHTML) {
elem = document.createElement("main");
elem.classList.add("pdoc");
elem.innerHTML = innerHTML;
} else {
elem = originalContent;
}
if (currentContent !== elem) {
currentContent.replaceWith(elem);
currentContent = elem;
}
}
function getSearchTerm() {
return (new URL(window.location)).searchParams.get("search");
}
const searchBox = document.querySelector(".pdoc input[type=search]");
searchBox.addEventListener("input", function () {
let url = new URL(window.location);
if (searchBox.value.trim()) {
url.hash = "";
url.searchParams.set("search", searchBox.value);
} else {
url.searchParams.delete("search");
}
history.replaceState("", "", url.toString());
onInput();
});
window.addEventListener("popstate", onInput);
let search, searchErr;
async function initialize() {
try {
search = await new Promise((resolve, reject) => {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.onload = () => resolve(window.pdocSearch);
script.onerror = (e) => reject(e);
script.src = "search.js";
document.getElementsByTagName("head")[0].appendChild(script);
});
} catch (e) {
console.error("Cannot fetch pdoc search index");
searchErr = "Cannot fetch search index.";
}
onInput();
document.querySelector("nav.pdoc").addEventListener("click", e => {
if (e.target.hash) {
searchBox.value = "";
searchBox.dispatchEvent(new Event("input"));
}
});
}
function onInput() {
setContent((() => {
const term = getSearchTerm();
if (!term) {
return null
}
if (searchErr) {
return `< h3 > Error: ${searchErr}< / h3 > `
}
if (!search) {
return "< h3 > Searching...< / h3 > "
}
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
const results = search(term);
let html;
if (results.length === 0) {
html = `No search results for '${escapeHTML(term)}'.`
} else {
html = `< h4 > ${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.< / h4 > `;
}
for (let result of results.slice(0, 10)) {
let doc = result.doc;
let url = `${doc.modulename.replaceAll(".", "/")}.html`;
if (doc.qualname) {
url += `#${doc.qualname}`;
}
let heading;
switch (result.doc.kind) {
case "function":
if (doc.fullname.endsWith(".__init__")) {
heading = `< span class = "name" > ${doc.fullname.replace(/\.__init__$/, "")}< / span > ${doc.signature}`;
} else {
heading = `< span class = "def" > ${doc.funcdef}< / span > < span class = "name" > ${doc.fullname}< / span > ${doc.signature}`;
}
break;
case "class":
heading = `< span class = "def" > class< / span > < span class = "name" > ${doc.fullname}< / span > `;
if (doc.bases)
heading += `< wbr > (< span class = "base" > ${doc.bases}< / span > )`;
heading += `:`;
break;
case "variable":
heading = `< span class = "name" > ${doc.fullname}< / span > `;
if (doc.annotation)
heading += `< span class = "annotation" > ${doc.annotation}< / span > `;
if (doc.default_value)
heading += `< span class = "default_value" > = ${doc.default_value}< / span > `;
break;
default:
heading = `< span class = "name" > ${doc.fullname}< / span > `;
break;
}
html += `
< section class = "search-result" >
< a href = "${url}" class = "attr ${doc.kind}" > ${heading}< / a >
< div class = "docstring" > ${doc.doc}< / div >
< / section >
`;
}
return html;
})());
}
if (getSearchTerm()) {
initialize();
searchBox.value = getSearchTerm();
onInput();
} else {
searchBox.addEventListener("focus", initialize, {once: true});
}
searchBox.addEventListener("keydown", e => {
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
let focused = currentContent.querySelector(".search-result.focused");
if (!focused) {
currentContent.querySelector(".search-result").classList.add("focused");
} else if (
e.key === "ArrowDown"
& & focused.nextElementSibling
& & focused.nextElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.nextElementSibling.classList.add("focused");
focused.nextElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "ArrowUp"
& & focused.previousElementSibling
& & focused.previousElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.previousElementSibling.classList.add("focused");
focused.previousElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "Enter"
) {
focused.querySelector("a").click();
}
}
});
< / script > < / body >
< / html >