§
    é%Âj`  ã                  óÖ   — d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	  ej
        d¦  «        Ze	 G d„ d¦  «        ¦   «         Z G d„ d	¦  «        Ze                     ¦   «         ZdS )
zJOpt-in, content-free send diagnostics. No wire/protocol or pacing changes.é    )ÚannotationsN)Ú	dataclassz)uvicorn.error.device_gateway.speech_tracec                  óŒ   — e Zd ZU ded<   ded<   ded<   ded<   dZded	<   dZded
<   dZded<   dZded<   dZded<   dZ	ded<   dS )ÚStreamÚstrÚ	speech_idÚ	device_idÚsourceÚfloatÚoriginr   ÚintÚchunksÚ	raw_bytesÚmax_send_msÚmax_lock_msÚmax_drift_msFÚboolÚend_sentN)
Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   r   r   r   © ó    úe/home/lighthouse/esp32-dev/.cache/wifi-fallback-speech-ab-0.5.1/server/device_gateway/speech_trace.pyr   r      s˜   € € € € € € à€N€N�NØ€N€N�NØ€K€K�KØ€M€M�MØ€F€O€O€O�OØ€IÐÐÐÑØ€KÐÐÐÑØ€KÐÐÐÑØ€LÐÐÐÑØ€HÐÐÐÑÐÐr   r   c                  ób   — e Zd Zdej        dddœd„Zed„ ¦   «         Zd„ Zdd	„Z	d
„ Z
dddœd„ZdS )ÚSpeechTraceFNé   )ÚclockÚsinkÚeveryc               ój   — |||c| _         | _        | _        t          d|¦  «        | _        i | _        d S )Né   )Úenabledr   r    Úmaxr!   Ústreams)Úselfr$   r   r    r!   s        r   Ú__init__zSpeechTrace.__init__   s2   € Ø.5°u¸dÐ+ˆŒ�d”j $¤)Ý˜˜E‘]”]ˆŒ
ØˆŒˆˆr   c                ó|   —  | t          j        d¦  «        dk    t          j        d¦  «        dk    rdnd¬¦  «        S )NÚGATEWAY_SPEECH_TRACEÚ1ÚGATEWAY_SPEECH_TRACE_EVERYr#   r   )r!   )ÚosÚgetenv)Úclss    r   Úfrom_envzSpeechTrace.from_env"   sP   € ð ˆs•2”9Ð3Ñ4Ô4¸Ò;Ý œiÐ(DÑEÔEÈÒLÐL˜˜ÐRSðUñ Uô Uð 	Ur   c                óÚ   — | j         rct          ||j        ||                      ¦   «         ¦  «        | j        |j        <   |                      t          d||j        |¬¦  «        ¦  «         d S d S )NÚbegin)Úeventr   r	   r
   )r$   r   r	   r   r&   Úconnection_idÚemitÚdict)r'   Údevicer   r
   s       r   r2   zSpeechTrace.begin(   st   € ØŒ<ð 	kÝ17¸	À6ÔCSÐU[Ð]a×]gÒ]gÑ]iÔ]iÑ1jÔ1jˆDŒL˜Ô-Ñ.Ø�IŠI•d °IÈÔIYÐbhÐiÑiÔiÑjÔjÐjÐjÐjð	kð 	kr   Tc                óÀ   — | j         �"|                       t          |¦  «        ¦  «         |r2t                               dt	          j        |dd¬¦  «        ¦  «         d S d S )Nz[SPEECH_TRACE] %s©ú,ú:T©Ú
separatorsÚensure_ascii)r    r6   ÚlogÚinfoÚjsonÚdumps)r'   ÚrecordÚ	importants      r   r5   zSpeechTrace.emit-   sd   € ØŒ9Ð Ø�IŠI•d˜6‘l”lÑ#Ô#Ð#Øð 	hÝ�HŠHÐ(­$¬*°VÈ
ÐaeÐ*fÑ*fÔ*fÑgÔgÐgÐgÐgð	hð 	hr   c                ó�  — | j                              |j        ¦  «        }|�|j        |k    rd S | j                              |j        d ¦  «         |                      t          d|j        |j        |j        |j	        |j
        |j        |j        |j        |j        |                      ¦   «         |j        z
  dz  ¬¦  «        ¦  «         d S )NÚsummaryéè  )r3   r   r	   r
   Úcompleted_chunksÚraw_pcm_bytesÚmax_websocket_send_msÚmax_device_lock_wait_msr   Úspeech_end_sentÚ
elapsed_ms)r&   Úgetr4   r   Úpopr5   r6   r	   r
   r   r   r   r   r   r   r   r   )r'   r7   r   Ústreams       r   ÚfinishzSpeechTrace.finish3   sÏ   € Ø”×!Ò! &Ô"6Ñ7Ô7ˆØˆ>˜VÔ-°Ò:Ð:ØˆFØŒ×Ò˜Ô-¨tÑ4Ô4Ð4Ø�	Š	•$˜Y°&Ô2BÈfÔN^Ø$œm¸f¼mØ%+Ô%5ÈVÔM_Ø/5Ô/AÐPVÔPcØ'-¤ÀDÇJÂJÁLÄLÐQWÔQ^ÑD^Ð`dÑCdð	fñ fô fñ 	gô 	gð 	gð 	gð 	gr   r   )Úscheduled_elapsed_msrI   c          
   ƒ  óL
  K  — | j         r| j                             |j        ¦  «        nd }|€f|j        4 ƒd {V —† t          j        |j                             |¦  «        d¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d S t          t          j        |dd¬¦  «                             ¦   «         ¦  «        }|                      ¦   «         }d x}}	d }
|                     d¦  «        }|dk    r|                     d¦  «        nd }|                     d¦  «        |j        k    }|sd	\  }}	 |j        4 ƒd {V —† |                      ¦   «         }t          j        |j                             |¦  «        d¦  «        ƒ d {V —† |                      ¦   «         }	d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   n'# t          $ r}t!          |¦  «        j        }
‚ d }~ww xY w|	€|                      ¦   «         n|	}|€|n||z
  d
z  }|€d n||z
  d
z  }|€d n||j        z
  d
z  |z
  }t'          |j        |pd¦  «        |_        t'          |j        |¦  «        |_        t'          |j        |pd¦  «        |_        |	�:|r8|xj        |dk    z  c_        |xj        |z  c_        |xj        |dk    z  c_        t5          di dd“d|j        “d|j        “d|j        “d|“d|“d|dk    r|                     d¦  «        nd “d|“d|“d|“d||j        z
  d
z  “d|“d|“d|	€d n|	|j        z
  d
z  “d|“d|
“Ž}|dk    p+|d u p'|| j        z  dk    p|
d up|pddk    p|dk    p|pddk    }|                      ||¦  «         d S # |	€|                      ¦   «         n|	}|€|n||z
  d
z  }|€d n||z
  d
z  }|€d n||j        z
  d
z  |z
  }t'          |j        |pd¦  «        |_        t'          |j        |¦  «        |_        t'          |j        |pd¦  «        |_        |	�:|r8|xj        |dk    z  c_        |xj        |z  c_        |xj        |dk    z  c_        t5          di dd“d|j        “d|j        “d|j        “d|“d|“d|dk    r|                     d¦  «        nd “d|“d|“d|“d||j        z
  d
z  “d|“d|“d|	€d n|	|j        z
  d
z  “d|“d|
“Ž}|dk    p+|d u p'|| j        z  dk    p|
d up|pddk    p|dk    p|pddk    }|                      ||¦  «         w xY w)Né   r9   Fr<   ÚtypeÚspeech_chunkÚsequencer   )Nr   rG   r   Ú
speech_endr3   Úsendr	   r
   Úmessage_typer   rI   Úwire_payload_bytesrR   Úsend_attempt_msÚdevice_lock_wait_msÚwebsocket_send_msÚsend_complete_msÚdrift_from_nominal_msÚerroré–   éd   r   )r$   r&   rN   r4   Ú	send_lockÚasyncioÚwait_forÚ	websocketÚ	send_jsonÚlenrA   rB   Úencoder   r   ÚBaseExceptionrU   r   r   r%   r   r   r   r   r   r   r6   r	   r
   r!   r5   )r'   r7   ÚpayloadrR   rI   rP   Ú
wire_bytesÚattemptÚacquiredÚcompletera   ÚkindrW   Ú	is_streamÚexcÚfinishedÚlock_msÚsend_msÚdriftrC   rD   s                        r   rY   zSpeechTrace.send>   sŠ  è è € Ø;?¼<ÐQ�”×!Ò! &Ô"6Ñ7Ô7Ð7ÈTˆØˆ>ØÔ'ð Oð Oð Oð Oð Oð Oð Oð OÝÔ& vÔ'7×'AÒ'AÀ'Ñ'JÔ'JÈAÑNÔNÐNÐNÐNÐNÐNÐNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð OàˆFõ �œ G¸
ÐQVÐWÑWÔW×^Ò^Ñ`Ô`ÑaÔaˆ
Ø—*’*‘,”,ˆØ"Ð"ˆ�8ØˆØ�{Š{˜6Ñ"Ô"ˆØ.2°nÒ.DÐ.D�7—;’;˜zÑ*Ô*Ð*È$ˆØ—K’K Ñ,Ô,°Ô0@Ò@ˆ	Øð 	:Ø29Ñ/Ð  -ð	)ØÔ'ð (ð (ð (ð (ð (ð (ð (ð (ØŸ:š:™<œ<�ÝÔ& vÔ'7×'AÒ'AÀ'Ñ'JÔ'JÈAÑNÔNÐNÐNÐNÐNÐNÐNÐNØŸ:š:™<œ<�ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (øøõ ð 	ð 	ð 	Ý˜‘I”IÔ&ˆEØøøøøð	øøøð (0Ð'7�t—z’z‘|”|�|¸XˆHØ$,Ð$4˜˜¸(ÀGÑKÈTÑQˆGØ&Ð.�d�d°X¸hÑ5FÈÑ4LˆGØ0Ð8�D�D¸wÀvÄ}Ñ?TÐVZÑ>ZÐ[oÑ>oˆEÝ!$ VÔ%7¸¸ÀAÑ!FÔ!FˆFÔÝ!$ VÔ%7¸Ñ!AÔ!AˆFÔÝ"% fÔ&9¸5¸:ÀAÑ"FÔ"FˆFÔØÐ#¨	Ð#Ø�” ¨Ò!7Ñ7�”ØÐ Ô  MÑ1Ð Ô Ø�” 4¨<Ò#7Ñ7�”Ýð Dð Dð D  ð D°&Ô2BÐ2Bð DÈfÔN^ÐN^ð DØ!'¤ ðDØ=A¸TðDØLTÈHðDà:>À,Ò:NÐ:N §¢¨XÑ!6Ô!6Ð!6ÐTXøðDð )6¨ðDð KUÈ*ðDð 0DÐ/Cð	Dð
 ,3°6´=Ñ+@À$Ñ*FÐ*FðDð /6¨gðDð JQÈðDð 4<Ð3C¨4¨4È(ÐSYÔS`ÑJ`ÐbfÑIføðDð 16°ðDð >C¸UðDˆFð  Ò/ð m°8¸tÐ3Cð mÀxÐRVÔR\ÑG\Ð`aÒGað mØ!¨Ð-ðmØ29°,¸QÀ#Ò1EðmØIPÐSVÊðmØ[`Ð[eÐdeÐilÒZlð à�IŠI�f˜iÑ(Ô(Ð(Ð(Ð(øð- (0Ð'7�t—z’z‘|”|�|¸XˆHØ$,Ð$4˜˜¸(ÀGÑKÈTÑQˆGØ&Ð.�d�d°X¸hÑ5FÈÑ4LˆGØ0Ð8�D�D¸wÀvÄ}Ñ?TÐVZÑ>ZÐ[oÑ>oˆEÝ!$ VÔ%7¸¸ÀAÑ!FÔ!FˆFÔÝ!$ VÔ%7¸Ñ!AÔ!AˆFÔÝ"% fÔ&9¸5¸:ÀAÑ"FÔ"FˆFÔØÐ#¨	Ð#Ø�” ¨Ò!7Ñ7�”ØÐ Ô  MÑ1Ð Ô Ø�” 4¨<Ò#7Ñ7�”Ýð Dð Dð D  ð D°&Ô2BÐ2Bð DÈfÔN^ÐN^ð DØ!'¤ ðDØ=A¸TðDØLTÈHðDà:>À,Ò:NÐ:N §¢¨XÑ!6Ô!6Ð!6ÐTXøðDð )6¨ðDð KUÈ*ðDð 0DÐ/Cð	Dð
 ,3°6´=Ñ+@À$Ñ*FÐ*FðDð /6¨gðDð JQÈðDð 4<Ð3C¨4¨4È(ÐSYÔS`ÑJ`ÐbfÑIføðDð 16°ðDð >C¸UðDˆFð  Ò/ð m°8¸tÐ3Cð mÀxÐRVÔR\ÑG\Ð`aÒGað mØ!¨Ð-ðmØ29°,¸QÀ#Ò1EðmØIPÐSVÊðmØ[`Ð[eÐdeÐilÒZlð à�IŠI�f˜iÑ(Ô(Ð(Ð(øøøsa   º4B Â 
B
ÂB
Ä;G ÅAF6Æ$G Æ6
G Ç G ÇG ÇG ÇN	 Ç
G,ÇG'Ç'G,Ç,N	 Î	FT#)F)T)r   r   r   ÚtimeÚ	monotonicr(   Úclassmethodr0   r2   r5   rQ   rY   r   r   r   r   r      s¸   € € € € € ð¨t¬~ÀDÐPQð ð ð ð ð ð
 ðUð Uñ „[ðUð
kð kð kð
hð hð hð hð	gð 	gð 	gð CGÐVWð 0)ð 0)ð 0)ð 0)ð 0)ð 0)ð 0)r   r   )Ú__doc__Ú
__future__r   re   rA   Úloggingr-   rx   Údataclassesr   Ú	getLoggerr?   r   r   r0   Útracer   r   r   ú<module>r�      së   ðØ PÐ PØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !à€gÔÐCÑDÔD€ð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ðR)ð R)ð R)ð R)ð R)ñ R)ô R)ð R)ðj 	×ÒÑÔ€€€r   