
    ;)di                         d dl 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   )
ESP32C3ROM   )	ESPLoader	StubMixin)log)
FatalErrorNotSupportedErrorc                      e 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Z-e-dz   Z.e-dz   Z/e-dz   Z0e-d	z   Z1dZ2e-d
z   Z3dZ4ddd d!Z5g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,gZ6d-Z7d. Z8d/ Z9d0 Z:d1 Z;d2 Z<d3 Z=d4 Z>d=d6Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDd<S )>
ESP32C6ROMzESP32-C6      Bi  B   Cr   i 0 `          $   (   X   i|  `i `D   0   4   8            i   i   T   i@   i `i   i:Pr   )80m40m20m)r   i   PADDING)r   r   DROM)  @  @DRAM)r$   r%   BYTE_ACCESSIBLE) @i  @	DROM_MASK)i   @r(   	IROM_MASK)r   r   IROM)r$   r%   IRAM)   P @ PRTC_IRAM)r-   r.   RTC_DRAM)i `i  `MEM_INTERNAL2ibTc                 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/esp32c6.pyget_pkg_versionzESP32C6ROM.get_pkg_versionh   0    d4HEFF"LPTTT    c                 R    d}|                      | j        d|z  z             dz	  dz  S )Nr   r         r4   r7   s     r:   get_minor_chip_versionz!ESP32C6ROM.get_minor_chip_versionl   r<   r=   c                 R    d}|                      | j        d|z  z             dz	  dz  S )Nr   r      r4   r7   s     r:   get_major_chip_versionz!ESP32C6ROM.get_major_chip_versionp   r<   r=   c                     ddd                     |                                 d          }|                                 }|                                 }| d| d| dS )NzESP32-C6 (QFN40)zESP32-C6FH4 (QFN32))r   r   zUnknown ESP32-C6z (revision v.))getr;   rD   rA   )r8   	chip_name	major_rev	minor_revs       r:   get_chip_descriptionzESP32C6ROM.get_chip_descriptiont   sx    !$
 
 #d""$$&8
9
9 	 //11	//11	AAAAYAAAAr=   c                 
    g dS )N)zWi-Fi 6z	BT 5 (LE)zIEEE802.15.4zSingle Core + LP Core160MHz r8   s    r:   get_chip_featureszESP32C6ROM.get_chip_features}   s    
 
 
 	
r=   c                     dS )Nr   rO   rP   s    r:   get_crystal_freqzESP32C6ROM.get_crystal_freq   s    rr=   c                 "    t          | d          )NzOverriding VDDSDIO)r
   )r8   new_voltages     r:   override_vddsdiozESP32C6ROM.override_vddsdio   s    &:;;;r=   BASE_MACc                    |                      | j                  }|                      | j        dz             }t          j        d||          dd         }t          j        d|dz	  dz            }|dd	         |z   |d	d
         z   }t	          |          t	          |          t	          |          d}|                    |d          S )zRead MAC from EFUSE regionr   z>IIr   Nz>Hr   i  r   r      )rW   EUI64MAC_EXT)r5   MAC_EFUSE_REGstructpacktuplerH   )r8   mac_typemac0mac1base_macext_maceui64macss           r:   read_maczESP32C6ROM.read_mac   s    }}T/00}}T/!344;udD11!""5+dTRZ6$9::1'(1Q3-7
 h5\\W~~
 

 xx$'''r=   c                     d S NrO   rP   s    r:   get_flash_crypt_configz!ESP32C6ROM.get_flash_crypt_config   s    tr=   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-r@   )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_SHIFTr5   )r8   	key_blockregshifts       r:   get_key_block_purposez ESP32C6ROM.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2r=   c                       fdt           j        dz             D             }t           fd|D                       S )Nc                 :    g | ]}                     |          S rO   )r|   ).0br8   s     r:   
<listcomp>z<ESP32C6ROM.is_flash_encryption_key_valid.<locals>.<listcomp>   s4     
 
 
./D&&q))
 
 
r=   r   c              3   .   K   | ]}|j         k    V  d S ri   )PURPOSE_VAL_XTS_AES128_KEY)r   pr8   s     r:   	<genexpr>z;ESP32C6ROM.is_flash_encryption_key_valid.<locals>.<genexpr>   s+      JJA177JJJJJJr=   )rangerl   any)r8   purposess   ` r:   is_flash_encryption_key_validz(ESP32C6ROM.is_flash_encryption_key_valid   s`    
 
 
 
389Ka9O3P3P
 
 
 JJJJJJJJJJr=   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-30.c                     g | ]}|d v |	S ))r   r   rO   )r   vs     r:   r   z3ESP32C6ROM.check_spi_connection.<locals>.<listcomp>   s    ;;;aQ(]]]]]r=   zdGPIO pins 12 and 13 are used by USB-Serial/JTAG, consider using other pins for SPI flash connection.)setissubsetr   r	   r   r   warning)r8   spi_connections     r:   check_spi_connectionzESP32C6ROM.check_spi_connection   s    >""++Ca,=,=>> 	KIJJJ;;>;;;<< 	KF    	 	r=   c                 .    t          j        |            d S ri   )r   watchdog_resetrP   s    r:   r   zESP32C6ROM.watchdog_reset   s     	 &&&&&r=   N)rW   )E__name__
__module____qualname__	CHIP_NAMEIMAGE_CHIP_IDIROM_MAP_STARTIROM_MAP_ENDDROM_MAP_STARTDROM_MAP_ENDBOOTLOADER_FLASH_OFFSETSPI_REG_BASESPI_USR_OFFSSPI_USR1_OFFSSPI_USR2_OFFSSPI_MOSI_DLEN_OFFSSPI_MISO_DLEN_OFFSSPI_W0_OFFSUART_DATE_REG_ADDR
EFUSE_BASEr6   r\   EFUSE_RD_REG_BASErm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   %EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG!EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPTEFUSE_SPI_BOOT_CRYPT_CNT_REGEFUSE_SPI_BOOT_CRYPT_CNT_MASKEFUSE_SECURE_BOOT_EN_REGEFUSE_SECURE_BOOT_EN_MASKr   SUPPORTS_ENCRYPTED_FLASHFLASH_ENCRYPTED_WRITE_ALIGNUARTDEV_BUF_NOUARTDEV_BUF_NO_USB_JTAG_SERIALDR_REG_LP_WDT_BASERTC_CNTL_WDTCONFIG0_REGRTC_CNTL_WDTCONFIG1_REGRTC_CNTL_WDTWPROTECT_REGRTC_CNTL_SWD_CONF_REGRTC_CNTL_SWD_AUTO_FEED_ENRTC_CNTL_SWD_WPROTECT_REGRTC_CNTL_SWD_WKEYFLASH_FREQUENCY
MEMORY_MAPUF2_FAMILY_IDr;   rA   rD   rL   rQ   rS   rV   rg   rj   r|   r   r   r   rO   r=   r:   r   r      s       IMNLNL!LLMMK*J"U*&M"U*'$.!'$.!'$. '$. '$. '$.!,=)(/%#-#5 $-!)E1 '!"#"$N%&"#0360691F:.7 ' 2V ;"  O 	,++((((((333------((((((,,,,,,111J MU U UU U UU U UB B B
 
 
  < < <( ( ( ("  3 3 3 K K K  ' ' ' ' 'r=   r   c                       e Zd ZdZdS )ESP32C6StubLoaderz-Stub loader for ESP32-C6, runs on top of ROM.N)r   r   r   __doc__rO   r=   r:   r   r      s        77Dr=   r   )r]   esp32c3r   loaderr   r   loggerr   utilr	   r
   r   r   
STUB_CLASSrO   r=   r:   <module>r      s           ) ) ) ) ) ) ) )       0 0 0 0 0 0 0 0w' w' w' w' w' w' w' w't	 	 	 	 		: 	 	 	 *
   r=   