
    ;)di^                     j    d dl mZmZ d dlmZ  G d de          Z G d dee          Zee_        dS )   )	ESPLoader	StubMixin)
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dd	ddddddd	ZdddddZdZg dg dg dg dgZdZd Zd  Zd! Zd" Z fd#Z fd$Zd% Zd)d'Zd( Z xZ S )*
ESP8266ROMz'Access class for ESP8266 ROM bootloaderESP8266l   A P ?T ?\ ?i  `       $   N@   i  `r          0   P   `         )	512KB256KB1MB2MB4MBz2MB-c1z4MB-c18MB16MB      )80m40m26m20m)i  ?i ?DPORT)i ?i   @DRAM)i  @i @IRAM)i @i.@IROMia~c                     |                      d          dz  }||                      d          dz  z  }||                      d          dz  z  }||                      d          z  }|S )Nr   r   iX ?r   r
   r   r	   )read_reg)selfresults     ^/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/esptool/targets/esp8266.py
get_efuseszESP8266ROM.get_efuses@   si    z**b0$--
++r11$--
++r11$--
+++    c                     |dz  dk    }|dz  dk    }|dz  dk    }|dz  dk    }|r|s|s|sdS |s|rdS |s|r|s|sdS |s|rdS d	S )
Nr   r   l	                    l	                    l	                    r   r       )r*   efusesr0_4r3_25r3_26r3_27s         r,   _get_flash_sizezESP8266ROM._get_flash_sizeH   s    &!a'8$*8$*8$* 	 	  q u q 	 	  q u qrr.   c                     |                                  }|dz  dk    }|rA|                     |          }|dz  dk    }|rdnd|rdndd                    |d	          }|S d
S )Nl              r   r   
ESP8285H08
ESP8285N08
ESP8285H16
ESP8285N16)r   r   ESP8285	ESP8266EX)r-   r8   get)r*   r3   is_8285
flash_sizemax_temp	chip_names         r,   get_chip_descriptionzESP8266ROM.get_chip_description[   s    ""()  		--f55J&!H $,=<<#+=<<  c*i((  {r.   c                 F    ddg}d|                                  v r|dgz  }|S )NzWi-Fi160MHzr>   zEmbedded Flash)rE   )r*   featuress     r,   get_chip_featureszESP8266ROM.get_chip_featuresl   s6    X&113333)**Hr.   c                     | j         r#t                                          |           d S |                     dd           d S )Nr   )IS_STUBsuperflash_spi_attachflash_begin)r*   hspi_arg	__class__s     r,   rM   zESP8266ROM.flash_spi_attachr   sI    < 	#GG$$X..... Q"""""r.   c                 \    | j         r#t                                          |           d S d S N)rK   rL   flash_set_parameters)r*   sizerP   s     r,   rS   zESP8266ROM.flash_set_parametersz   s5    < 	/GG((.....	/ 	/r.   c                     |                      | j                  }|                      | j                  }|dz	  |dz  dz  z  S )z_
        Read Chip ID from efuse - the equivalent of the SDK system_get_chip_id() func
           i    )r)   ESP_OTP_MAC0ESP_OTP_MAC1)r*   id0id1s      r,   chip_idzESP8266ROM.chip_id   sD     mmD-..mmD-..r	sX~!344r.   BASE_MACc                 l   |dk    rdS |                      | j                  }|                      | j                  }|                      | j                  }|dk    r|dz	  dz  |dz	  dz  |dz  f}n-|dz	  dz  dk    rd}n|dz	  dz  dk    rd	}nt	          d
          ||dz	  dz  |dz  |dz	  dz  fz   S )zRead MAC from OTP ROMr]   Nr   r      rW   )rV      4   r   )      t   zUnknown OUIrV   )r)   rX   rY   ESP_OTP_MAC3r   )r*   mac_typemac0mac1mac3ouis         r,   read_maczESP8266ROM.read_mac   s    z!!4}}T.//}}T.//}}T.//199BJ$&d(:D4KHCCrzT!a''$CCrzT!a''$CC]+++tqyD($+
d7JKKKr.   c                     d}| j         }||z   dz
  |z  }||z  }|||z  z
  }||k     r|}|d|z  k     r|dz   dz  |z  S ||z
  |z  S )ztCalculate an erase size given a specific size in bytes.

        Provides a workaround for the bootloader erase bug.r   r   r   )FLASH_SECTOR_SIZE)r*   offsetrT   sectors_per_blocksector_sizenum_sectorsstart_sectorhead_sectorss           r,   get_erase_sizezESP8266ROM.get_erase_size   s    
 ,k)A-+=,(L;L,LM%%&L\)))!O)K77,.+==r.   )r]   )!__name__
__module____qualname____doc__	CHIP_NAMEMAGIC_VALUErX   rY   re   SPI_REG_BASESPI_USR_OFFSSPI_USR1_OFFSSPI_USR2_OFFSSPI_MOSI_DLEN_OFFSSPI_MISO_DLEN_OFFSSPI_W0_OFFSUART_CLKDIV_REGXTAL_CLK_DIVIDERFLASH_SIZESFLASH_FREQUENCYBOOTLOADER_FLASH_OFFSET
MEMORY_MAPUF2_FAMILY_IDr-   r8   rE   rI   rM   rS   r\   rk   rt   __classcell__)rP   s   @r,   r   r   
   s       11IK LLLLLMMK O 
 
K 	 O   	*))(((((((((	J M    &  "  # # # # #/ / / / /
5 5 5L L L L"> > > > > > >r.   r   c                       e Zd ZdZd ZdS )ESP8266StubLoaderz,Stub loader for ESP8266, runs on top of ROM.c                     |S rR   r2   )r*   rn   rT   s      r,   rt   z ESP8266StubLoader.get_erase_size   s    r.   N)ru   rv   rw   rx   rt   r2   r.   r,   r   r      s)        66    r.   r   N)loaderr   r   utilr   r   r   
STUB_CLASSr2   r.   r,   <module>r      s    * ) ) ) ) ) ) )      _> _> _> _> _> _> _> _>D    	:    *
   r.   