
    :)di                          d dl mZmZ d dlZd dlmZ ddlmZ  G d d          Z G d d	          Z	 G d
 d          Z
 G d d          ZdS )    )Counter
namedtupleN)log   )CSVFuseTablec                   &    e Zd ZdZdZdZdZdZdZdS )EfuseRegistersBaser   r            g      ?N)	__name__
__module____qualname__CODING_SCHEME_NONECODING_SCHEME_34CODING_SCHEME_REPEATCODING_SCHEME_NONE_RECOVERYCODING_SCHEME_RSEFUSE_BURN_TIMEOUT     i/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/espefuse/efuse/mem_definition_base.pyr	   r	      s4        "#r   r	   c                   R    e Zd ZU g Zeed<    edd          Zed             Z	d Z
dS )EfuseBlocksBaseBLOCKSNamedtupleBlockzPname alias id rd_addr wr_addr write_disable_bit read_disable_bit len key_purposec                 @    t           j                            |           S )N)r   r   _make)tuple_blocks    r   getzEfuseBlocksBase.get!   s    .44[AAAr   c                     g }| j         D ]i}|                     |          }|j        dk    rG|j        r|                    |j                   |j        r|j        D ]}|                    |           j|S )Nr   )r   r    idnameappendalias)selflist_of_namesblockblkr%   s        r   get_blocks_for_keysz#EfuseBlocksBase.get_blocks_for_keys%   s    [ 	4 	4E((5//Cvzz8 3!((2229 4!$ 4 4%,,U3333r   N)r   r   r   r   list__annotations__r   r   staticmethodr    r*   r   r   r   r   r      sl         FD j	+ O B B \B
 
 
 
 
r   r   c                   v    e Zd ZU dZdZdZdZdZg Ze	e
         ed<   dZdZdZe	e         dz  ed<   dZdZdZdZdS )Field r   N	alt_namesread_disable_bitconfig)r   r   r   r#   r(   wordposbit_lenr1   r+   strr,   typewrite_disable_bitr2   intcategory
class_typedescription
dictionaryr   r   r   r/   r/   2   sv         DED
CGItCyD)-d3i$&---HJKJJJr   r/   c                   "    e Zd ZddZd Zd ZdS )EfuseFieldsBasereturnNc                 *   g | _         d }|d         D ]S}|d         |         }|d         dk    r5t                      }||_        |d         |_        |d         |_        |d         |_        |d         |_        |d	         |_        |d
         |_        t          |d         t                    r%d |d                             d          D             n|d         |_        |d         |_        |d         r|d                             d          ng |_        |d         dk    rt          |d                   nd |_         |||           | j                             |           U|                     |          r|                                  d S d S )Nc                    d }|                     d          r	d| _        d S d|v r	d| _        d S d|v r	d| _        d S d|v r	d	| _        d S  ||d
dg          r	d| _        d S  ||ddg          r	d| _        d S d|v rd| _        |dv r	d| _        d S d S  ||g d          rd| _        d| _        d S  ||g d          r>d| _        |                     d          r	d| _        d S  ||g d          r	d| _        d S d S  ||g d          rd| _        |dk    r	d| _        d S d S  ||g d          r<d| _        |d k    r	d!| _        d S  ||g d"          r	d#| _        d S |d$k    rd%| _        d S d S d S )&Nc                 :     t           fd|D                       S )Nc                     g | ]}|v S r   r   ).0r4   r#   s     r   
<listcomp>zcEfuseFieldsBase.__init__.<locals>.set_category_and_class_type.<locals>.includes.<locals>.<listcomp>H   s    ;;;TDDL;;;r   )any)r#   namess   ` r   includeszOEfuseFieldsBase.__init__.<locals>.set_category_and_class_type.<locals>.includesG   s&    ;;;;U;;;<<<r   SPI_PAD_CONFIGzspi padUSBusbWDTwdtJTAGjtagFLASHFORCE_SEND_RESUMEflashVDD_SPI_XPDvddMAC)rX   
CUSTOM_MACMAC_EXTmac)
BLOCK_KEY0
BLOCK_KEY1
BLOCK_KEY2
BLOCK_KEY3
BLOCK_KEY4
BLOCK_KEY5BLOCK1BLOCK2securitykeyblock)KEYSECUREDOWNLOADSPI_BOOT_CRYPT_CNTKEY_PURPOSESECURE_VERSIONDPAECDSAFLASH_CRYPT_CNTENCRYPTDECRYPTABS_DONErj   
keypurpose)rn   ri   rk   bitcount)VERSIONWAFER_IDPKGPACKAGEREVidentityOPTIONAL_UNIQUE_ID)	ADCLDODBIAS_HVTCALIBOCODETEMPERATURELSLPDSLPcalibrationADC_VREFvref)r|   r}   r~   r   adc_tp
TEMP_CALIBt_sensor)
startswithr;   r<   )efuser#   rJ   s      r   set_category_and_class_typez=EfuseFieldsBase.__init__.<locals>.set_category_and_class_typeF   s   = = = /00 Z2!*$!&$!&4!'$*= >?? N2!($U 344 K2!&$!&;;;',E$$$ <; 	 	 	  C2 ",#-       32" ",??=11 2'3E$$$XUUU  2 (2E$$$2 2
 $ T T TUU 2!+///'1E$$$ 0/ 
 
 
  2 "/:%%'-E$F8D"A"A"ABB 2'/E$$$\))'1E$$$+2 2( *)r   EFUSESshowyr)   r4   r5   lenr8   wr_disrd_disc                 ,    g | ]}t          |          S r   )r:   )rF   xs     r   rG   z,EfuseFieldsBase.__init__.<locals>.<listcomp>   s    DDDSVVDDDr    descaltdictr0   )
ALL_EFUSESr/   r#   r(   r4   r5   r6   r8   r9   
isinstancer7   splitr2   r=   r1   evalr>   r$   extend_efusescheck_name_duplicates)r&   e_descextend_efuse_table_filer   e_name	data_dictds          r   __init__zEfuseFieldsBase.__init__C   s    "^	2 ^	2 ^	2@ X& 	* 	*Fx(0I C''GG#E*"6*!%(%e,	"6*&/&9# ")H"5s;;-DDYx%8%>%>s%C%CDDDD"8, "
 !*& 1=Fu=MUi.44S999SU/8/@B/F/FD6*+++D  ,+Av666&&q)))566 	)&&(((((	) 	)r   c                 X   d | j         D             }| j         D ]#}|j        r|                    |j                   $t          |          }d |                                D             }|r>t          j        dd                    |          z              t          j	        d          d S )Nc                     g | ]	}|j         
S r   )r#   )rF   ns     r   rG   z9EfuseFieldsBase.check_name_duplicates.<locals>.<listcomp>   s    111A111r   c                 $    h | ]\  }}|d k    |S )r   r   )rF   r#   counts      r   	<setcomp>z8EfuseFieldsBase.check_name_duplicates.<locals>.<setcomp>   s!    OOO{tUUQYYdYYYr   zNames that are not unique: z, zDuplicate names found in eFuses)
r   r1   extendr   itemsr   printjoinesptool
FatalError)r&   rI   r   name_counts
duplicatess        r   r   z%EfuseFieldsBase.check_name_duplicates   s    11111 	* 	*A{ *Q[)))ennOOk.?.?.A.AOOO
 	HI3dii
6K6KKLLL$%FGGG	H 	Hr   c                     |rt          j        |                                          }|D ]^}t                      }|j        |_        |j        |_        |j        dz  |_	        |j        dz  |_
        |j        |_        |j        dk    rd}n1|j        dk    r|j        dz  dk    rd|j        dz   }n
d|j         }||_        d |_        d |_        |j        dk    rP| j        D ]H}|j        |j        k    r6|j        |j        |_        |j        |j        |_        |j        	|j         nId|_        |j        |_        |j        r|j                            d	          ng |_        d
|_        | j                            |           `dS dS )N    r   bool   r   zbytes:zuint:Userr   r0   TF)r   from_csvreadr/   
field_namer#   efuse_blockr(   	bit_startr4   r5   	bit_countr6   r8   r9   r2   r   r;   commentr=   r1   r   r>   r$   )r&   r   tablepitemstr_typefields          r   r   zEfuseFieldsBase.extend_efuses   s   " &	 )*A*F*F*H*HIIE #- #-wwL	]
K2-	;+ {;!##%HH{R''AK!Oq,@,@#>AK1,<#>#>#81;#8#8$	)-&(,%:?? "& 
& 
& ;$*44$6B9>9P 6$5A8=8N 5 $ 5 A$($:$F % &#$9 ;<;!N!2!23!7!7!7B"$&&t,,,,4ur   )rA   N)r   r   r   r   r   r   r   r   r   r@   r@   B   sN        |) |) |) |)|
H 
H 
H( ( ( ( (r   r@   )collectionsr   r   r   esptool.loggerr   csv_table_parserr   r	   r   r/   r@   r   r   r   <module>r      s    , + + + + + + +        * * * * * *              2        s s s s s s s s s sr   