
    ;)diK&                         d dl Z d dlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZ  G d	 d
e          Z G d dee          Zee_        dS )    N)sleep   )ESP32ROM   )	ESPLoader	StubMixin)log)
FatalErrorNotSupportedErrorc                   F   e Zd ZU dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZedz   Zedz   Zedz   Zedz   ZdZedz   Zd	Zedz   ZdZedz   ZdZ edz   Z!dZ"edz   Z#dZ$eZ%dZ&edz   Z'dZ(edz   Z)dZ*dZ+dZ,dZ-dZ.dZ/d Z0e0d!z   Z1d"Z2e0d#z   Z3d$Z4e0d%z   Z5e0d&z   Z6e0d'z   Z7d(Z8g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3gZ9d4Z:d5d6d7d8d9d:d;d<d=d>d?
Z;e<e=e>f         e?d@<   dA Z@dB ZAdC ZBdD ZCdE ZDdF ZEdG ZFdH ZGdI ZHdJ ZIdXdLZJdM ZKdN ZLdO ZMdP ZNdQ ZOdR ZPdS ZQdT ZRdU ZSdV ZTdWS )Y
ESP32C3ROMzESP32-C3      B  B   <  <i   `          $   (   X   Fr   i|  `i  `i  `D   0   4   8            i   i   T   i|?   i  `   l           l   *1:          i:P)r   i   PADDING)r   r   DROM)i  ?i  ?DRAM)i ?i  ?BYTE_ACCESSIBLE)i  ?i  ?	DROM_MASK)i   @i  @	IROM_MASK)r   r   IROM)i 7@i  >@IRAM)   P   PRTC_IRAM)r/   r0   RTC_DRAM)i `i  `MEM_INTERNAL2l   l W( z
USER/EMPTYRESERVEDXTS_AES_128_KEYHMAC_DOWN_ALLHMAC_DOWN_JTAGHMAC_DOWN_DIGITAL_SIGNATUREHMAC_UPSECURE_BOOT_DIGEST0SECURE_BOOT_DIGEST1SECURE_BOOT_DIGEST2)
r   r   r   r         r   	   
      KEY_PURPOSESc                 R    d}|                      | j        d|z  z             dz	  dz  S )Nr!   r      r>   read_regEFUSE_BLOCK1_ADDRselfnum_words     ^/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/esptool/targets/esp32c3.pyget_pkg_versionzESP32C3ROM.get_pkg_versionw   0    d4HEFF"LPTTT    c                     d}|                      | j        d|z  z             dz	  dz  }d}|                      | j        d|z  z             dz	  dz  }|dz  |z   S )Nr   r      r   r!      r>   rE   )rI   hi_num_wordhilow_num_wordlows        rK   get_minor_chip_versionz!ESP32C3ROM.get_minor_chip_version{   sk    mmD2a+oFGG2MQUU}}T3q<7GHIIROSWWa3rN   c                 R    d}|                      | j        d|z  z             dz	  dz  S )Nr   r   r   r!   rE   rH   s     rK   get_major_chip_versionz!ESP32C3ROM.get_major_chip_version   rM   rN   c                 R    d}|                      | j        d|z  z             dz	  dz  S )Nr!   r      r>   rE   rH   s     rK   get_flash_capzESP32C3ROM.get_flash_cap   rM   rN   c                     d}|                      | j        d|z  z             dz	  dz  }dddddd	                    |d
          S )Nr   r   r>   XMCGDFMTTZBIT)r   r   r!   r   r    )rF   rG   get)rI   rJ   	vendor_ids      rK   get_flash_vendorzESP32C3ROM.get_flash_vendor   sS    ]]4#9Q\#JKKqPTXX	Tdt??CCIrRRRrN   c                     ddddd                     |                                 d          }|                                 }|                                 }| d| d| d	S )
NzESP32-C3 (QFN32)zESP8685 (QFN28)zESP32-C3 AZ (QFN32)zESP8686 (QFN24))r   r   r   r!   zUnknown ESP32-C3z (revision v.))rc   rL   rX   rV   )rI   	chip_name	major_rev	minor_revs       rK   get_chip_descriptionzESP32C3ROM.get_chip_description   s~    ! $ 	
 

 #d""$$&8
9
9 	 //11	//11	AAAAYAAAArN   c                     g d}d ddddd                     |                                 d          }|||d|                                  d	z   gz  }|S )
N)zWi-Fiz	BT 5 (LE)zSingle Core160MHzzEmbedded Flash 4MBzEmbedded Flash 2MBzEmbedded Flash 1MBzEmbedded Flash 8MB)r   r   r   r!   r   zUnknown Embedded Flashz (rh   )rc   r[   re   )rI   featuresflashs      rK   get_chip_featureszESP32C3ROM.get_chip_features   s    BBB ####
 
 #d  ""$<
=
= 	 !@d&;&;&=&=!@!@!@@AAHrN   c                     dS )Nr    rI   s    rK   get_crystal_freqzESP32C3ROM.get_crystal_freq   s    rrN   c                 "    t          | d          )NzReading flash voltager   rt   s    rK   get_flash_voltagezESP32C3ROM.get_flash_voltage   s    &=>>>rN   c                 "    t          | d          )NzOverriding VDDSDIOrw   )rI   new_voltages     rK   override_vddsdiozESP32C3ROM.override_vddsdio   s    &:;;;rN   BASE_MACc                     |dk    rdS |                      | j                  }|                      | j        dz             }t          j        d||          dd         }t	          |          S )zRead MAC from EFUSE regionr|   Nr   z>IIr   )rF   MAC_EFUSE_REGstructpacktuple)rI   mac_typemac0mac1	bitstrings        rK   read_maczESP32C3ROM.read_mac   si    z!!4}}T/00}}T/!344KtT221226	YrN   c                     d S Nrs   rt   s    rK   get_flash_crypt_configz!ESP32C3ROM.get_flash_crypt_config   s    trN   c                 F    |                      | j                  | j        z  S r   )rF   EFUSE_SECURE_BOOT_EN_REGEFUSE_SECURE_BOOT_EN_MASKrt   s    rK   get_secure_boot_enabledz"ESP32C3ROM.get_secure_boot_enabled   s$    MM$788,-	
rN   c                 :   |dk     s|| j         k    rt          d| j                    | j        | j        f| j        | j        f| j        | j        f| j        | j	        f| j
        | j        f| j        | j        fg|         \  }}|                     |          |z	  dz  S )Nr   z+Valid key block numbers must be in range 0-   )EFUSE_MAX_KEYr
   EFUSE_PURPOSE_KEY0_REGEFUSE_PURPOSE_KEY0_SHIFTEFUSE_PURPOSE_KEY1_REGEFUSE_PURPOSE_KEY1_SHIFTEFUSE_PURPOSE_KEY2_REGEFUSE_PURPOSE_KEY2_SHIFTEFUSE_PURPOSE_KEY3_REGEFUSE_PURPOSE_KEY3_SHIFTEFUSE_PURPOSE_KEY4_REGEFUSE_PURPOSE_KEY4_SHIFTEFUSE_PURPOSE_KEY5_REGEFUSE_PURPOSE_KEY5_SHIFTrF   )rI   	key_blockregshifts       rK   get_key_block_purposez ESP32C3ROM.get_key_block_purpose   s    q==I(:::Rd>PRR  
 ($*GH($*GH($*GH($*GH($*GH($*GH
 
U c""e+s22rN   c                       fdt           j        dz             D             }t           fd|D                       S )Nc                 :    g | ]}                     |          S rs   )r   ).0brI   s     rK   
<listcomp>z<ESP32C3ROM.is_flash_encryption_key_valid.<locals>.<listcomp>   s4     
 
 
./D&&q))
 
 
rN   r   c              3   .   K   | ]}|j         k    V  d S r   )PURPOSE_VAL_XTS_AES128_KEY)r   prI   s     rK   	<genexpr>z;ESP32C3ROM.is_flash_encryption_key_valid.<locals>.<genexpr>   s+      JJA177JJJJJJrN   )ranger   any)rI   purposess   ` rK   is_flash_encryption_key_validz(ESP32C3ROM.is_flash_encryption_key_valid   s`    
 
 
 
389Ka9O3P3P
 
 
 JJJJJJJJJJrN   c                 0    t          j        | |           d S r   )r   change_baud)rI   bauds     rK   r   zESP32C3ROM.change_baud   s    dD)))))rN   c                 N    | j         rdS |                                 | j        k    S )z[
        Check the UARTDEV_BUF_NO register to see if USB-JTAG/Serial is being used
        F)secure_download_modeget_uart_noUARTDEV_BUF_NO_USB_JTAG_SERIALrt   s    rK   uses_usb_jtag_serialzESP32C3ROM.uses_usb_jtag_serial   s.     $ 	5!!T%HHHrN   c                    |                                  r|                     | j        | j                   |                     | j        d           |                     | j        d           |                     | j        | j                   |                     | j        |                     | j                  | j	        z             |                     | j        d           d S d S )Nr   )
r   	write_regRTC_CNTL_WDTWPROTECT_REGRTC_CNTL_WDT_WKEYRTC_CNTL_WDTCONFIG0_REGRTC_CNTL_SWD_WPROTECT_REGRTC_CNTL_SWD_WKEYRTC_CNTL_SWD_CONF_REGrF   RTC_CNTL_SWD_AUTO_FEED_ENrt   s    rK   disable_watchdogszESP32C3ROM.disable_watchdogs   s     $$&& 	>NN48$:PQQQNN47;;;NN48!<<< NN494;QRRRNN*d89901  
 NN491=====	> 	>rN   c                 @    | j         s|                                  d S d S r   )sync_stub_detectedr   rt   s    rK   _post_connectzESP32C3ROM._post_connect   s/    & 	%""$$$$$	% 	%rN   c                 .   t          j        d           |                     | j        | j                   |                     | j        d           |                     | j        d           |                     | j        d           t          d           d S )Nz!Hard resetting with a watchdog...i  l      r   g      ?)r	   printr   r   r   RTC_CNTL_WDTCONFIG1_REGr   r   rt   s    rK   watchdog_resetzESP32C3ROM.watchdog_reset   s    	5666t4d6LMMMt3T:::(*N	
 	
 	
 	t4a888c




rN   c                     t          |                              t          t          dd                              st          d          t	          d |D                       rt          j        d           d S d S )Nr      z*SPI Pin numbers must be in the range 0-21.c                     g | ]}|d v |	S ))rQ      rs   )r   vs     rK   r   z3ESP32C3ROM.check_spi_connection.<locals>.<listcomp>
  s    ;;;aQ(]]]]]rN   zdGPIO pins 18 and 19 are used by USB-Serial/JTAG, consider using other pins for SPI flash connection.)setissubsetr   r
   r   r	   warning)rI   spi_connections     rK   check_spi_connectionzESP32C3ROM.check_spi_connection  s    >""++Ca,=,=>> 	KIJJJ;;>;;;<< 	KF    	 	rN   N)r|   )U__name__
__module____qualname__	CHIP_NAMEIMAGE_CHIP_IDIROM_MAP_STARTIROM_MAP_ENDDROM_MAP_STARTDROM_MAP_ENDSPI_REG_BASESPI_USR_OFFSSPI_USR1_OFFSSPI_USR2_OFFSSPI_MOSI_DLEN_OFFSSPI_MISO_DLEN_OFFSSPI_W0_OFFSSPI_ADDR_REG_MSBUSES_MAGIC_VALUEBOOTLOADER_FLASH_OFFSETUART_DATE_REG_ADDRUART_CLKDIV_REG
EFUSE_BASErG   r~   EFUSE_RD_REG_BASEr   r   r   r   r   r   r   r   r   r   r   r   %EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG!EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPTEFUSE_SPI_BOOT_CRYPT_CNT_REGEFUSE_SPI_BOOT_CRYPT_CNT_MASKr   r   r   SUPPORTS_ENCRYPTED_FLASHFLASH_ENCRYPTED_WRITE_ALIGNUARTDEV_BUF_NOr   RTCCNTL_BASE_REGr   r   r   r   r   r   r   r   
MEMORY_MAPUF2_FAMILY_IDrB   dictintstr__annotations__rL   rV   rX   r[   re   rl   rq   ru   rx   r{   r   r   r   r   r   r   r   r   r   r   r   rs   rN   rK   r   r      s        IMNLNLLLMMK!* OJ"U*&M"U*'$.!'$.!'$. '$. '$. '$.!,=)(/%#-#5 $-!)E1 '!"#"$N%&"!,v5 ' 06 9".7.7/&8" 	,++((((((333------((((((,,,,,,111J M ( !!$ $L$sCx.   U U U  U U UU U US S S
	B 	B 	B    ? ? ?< < <         
 
 
3 3 3 K K K* * *I I I> > >$% % %      rN   r   c                       e Zd ZdZdS )ESP32C3StubLoaderz-Stub loader for ESP32-C3, runs on top of ROM.N)r   r   r   __doc__rs   rN   rK   r   r     s        77DrN   r   )r   timer   esp32r   loaderr   r   loggerr	   utilr
   r   r   r   
STUB_CLASSrs   rN   rK   <module>r      s                 ) ) ) ) ) ) ) )       0 0 0 0 0 0 0 0       D	 	 	 	 		: 	 	 	 *
   rN   