
    ;)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	  G d d	e          Z
 G d
 dee
          Zee
_        dS )    N   )
ESP32C3ROM   )	ESPLoader	StubMixin)log)
FatalErrorc                      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'edz   Z(dZ)dZ*dZ+dZ,dZ-d Z.d!Z/e/dz   Z0e/dz   Z1e/dz   Z2d"Z3e/d	z   Z4d#Z5d$Z6d%Z7dZ8ddd&d'd(Z9g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3gZ:d4Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAd; ZBdDd=ZCd> ZDd? ZEd@ ZFdA ZGdB ZHdCS )E
ESP32H4ROMzESP32-H4      B  B   Ci    i 	`       $   (   X   i| `i `D   0   4   r      
            i @  i  8   i  x    T   i@   i T`i   i:Pia	`i   r   r   )48m24m16m12m)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)r0   r1   RTC_DRAM)i `i  `MEM_INTERNAL2l   *< c                     dS Nr    selfs    ^/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/esptool/targets/esp32h4.pyget_pkg_versionzESP32H4ROM.get_pkg_versionp       q    c                     dS r6   r7   r8   s    r:   get_minor_chip_versionz!ESP32H4ROM.get_minor_chip_versions   r<   r=   c                     dS r6   r7   r8   s    r:   get_major_chip_versionz!ESP32H4ROM.get_major_chip_versionv   r<   r=   c                     ddi                     |                                 d          }|                                 }|                                 }| d| d| dS )Nr   zESP32-H4 (QFN40)zUnknown ESP32-H4z (revision v.))getr;   rA   r?   )r9   	chip_name	major_rev	minor_revs       r:   get_chip_descriptionzESP32H4ROM.get_chip_descriptiony   sq    !

#d""$$&8
9
9 	 //11	//11	AAAAYAAAAr=   c                 
    g dS )N)z	BT 5 (LE)zIEEE802.15.4z	Dual Core96MHzr7   r8   s    r:   get_chip_featureszESP32H4ROM.get_chip_features   s    BBBBr=   c                     dS )Nr   r7   r8   s    r:   get_crystal_freqzESP32H4ROM.get_crystal_freq   s    rr=   c                 0    t          j        | |           d S N)r   change_baud)r9   bauds     r:   rQ   zESP32H4ROM.change_baud   s    dD)))))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       )rS   EUI64MAC_EXT)read_regMAC_EFUSE_REGstructpacktuplerE   )r9   mac_typemac0mac1base_macext_maceui64macss           r:   read_maczESP32H4ROM.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 rP   r7   r8   s    r:   get_flash_crypt_configz!ESP32H4ROM.get_flash_crypt_config   s    tr=   c                 F    |                      | j                  | j        z  S rP   )rX   EFUSE_SECURE_BOOT_EN_REGEFUSE_SECURE_BOOT_EN_MASKr8   s    r:   get_secure_boot_enabledz"ESP32H4ROM.get_secure_boot_enabled   s$    MM$788,-	
r=   c                     |dk     s|dk    rt          d          | j        | j        f| j        | j        f| j        | j        f| j        | j        f| j	        | j
        f| j        | j        fg|         \  }}|                     |          |z	  dz  S )Nr   r   z,Valid key block numbers must be in range 0-5   )r	   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_SHIFTrX   )r9   	key_blockregshifts       r:   get_key_block_purposez ESP32H4ROM.get_key_block_purpose   s    q==IMMKLLL ($*GH($*GH($*GH($*GH($*GH($*GH
 
U c""e+t33r=   c                 p      fdt          d          D             }t           fd|D                       S )Nc                 :    g | ]}                     |          S r7   )r|   ).0br9   s     r:   
<listcomp>z<ESP32H4ROM.is_flash_encryption_key_valid.<locals>.<listcomp>   s'    DDDaD..q11DDDr=   rU   c              3   .   K   | ]}|j         k    V  d S rP   )PURPOSE_VAL_XTS_AES128_KEY)r   pr9   s     r:   	<genexpr>z;ESP32H4ROM.is_flash_encryption_key_valid.<locals>.<genexpr>   s+      JJA177JJJJJJr=   )rangeany)r9   purposess   ` r:   is_flash_encryption_key_validz(ESP32H4ROM.is_flash_encryption_key_valid   sE    DDDD588DDD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   r   z*SPI Pin numbers must be in the range 0-39.c                     g | ]}|d v |	S ))      r7   )r   vs     r:   r   z3ESP32H4ROM.check_spi_connection.<locals>.<listcomp>   s    ;;;aQ(]]]]]r=   zdGPIO pins 13 and 14 are used by USB-Serial/JTAG, consider using other pins for SPI flash connection.)setissubsetr   r	   r   r   warning)r9   spi_connections     r:   check_spi_connectionzESP32H4ROM.check_spi_connection   s    >""++Ca,=,=>> 	KIJJJ;;>;;;<< 	KF    	 	r=   N)rS   )I__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_BASEEFUSE_BLOCK1_ADDRrY   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_MASKrh   ri   EFUSE_FORCE_USE_KM_KEY_REGEFUSE_FORCE_USE_KM_KEY_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_WDTWPROTECT_REGRTC_CNTL_SWD_CONF_REGRTC_CNTL_SWD_AUTO_FEED_ENRTC_CNTL_SWD_WPROTECT_REGRTC_CNTL_SWD_WKEYPCR_SYSCLK_CONF_REGPCR_SYSCLK_XTAL_FREQ_VPCR_SYSCLK_XTAL_FREQ_SFLASH_FREQUENCY
MEMORY_MAPUF2_FAMILY_IDr;   r?   rA   rI   rL   rN   rQ   rd   rf   rj   r|   r   r   r7   r=   r:   r   r      s       IMNLNL$LLMMK*J"U*&M"U*'$. '$. '$.!'$.!'$.!'$.!,=)(/%#-#5 $-!)E1 &!+e!3"+!"#"$N%&"#0361F:.7 ' 2V ;"$' 	 O 	,++((((((333------((((((,,,,,,111J M      B B BC C C  * * *( ( ( ("  
 
 
4 4 4K K K    r=   r   c                       e Zd ZdZdS )ESP32H4StubLoaderz-Stub loader for ESP32-H4, runs on top of ROM.N)r   r   r   __doc__r7   r=   r:   r   r      s        77Dr=   r   )rZ   esp32c3r   loaderr   r   loggerr   utilr	   r   r   
STUB_CLASSr7   r=   r:   <module>r      s           ) ) ) ) ) ) ) )            r r r r r r r rj	 	 	 	 		: 	 	 	 *
   r=   