
    h"	                         d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZ  G d de          Z G d d	e	          Zg d
Zg dZ G d de          Z eeee           dS )z
CACE PPI types
    )PPI_DOT11COMMON)bind_layers)	ByteFieldField
FlagsFieldLELongFieldLEShortField)PPI_HdrPPI_Elementc                       e Zd Zd Zd ZdS )dBmByteFieldc                 4    t          j        | ||d           d S )Nb)r   __init__)selfnamedefaults      Z/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/contrib/ppi_cace.pyr   zdBmByteField.__init__   s    tT7C00000    c                     |d|z  }|S )Nz%4d dBm )r   pktxs      r   i2reprzdBmByteField.i2repr   s    =AAr   N)__name__
__module____qualname__r   r   r   r   r   r   r      s2        1 1 1    r   r   c                       e Zd Zd Zd ZdS )PPITSFTFieldc                 x    d}|r|                     d          }|sd}|dz  rd}nd}|t          |          z  }|S )Nr   	Pkt_Flags   gMbP?gư>)getfieldvalfloat)r   r   r   flagsscaletouts         r   i2hzPPITSFTField.i2h    sZ     	1OOK00E 	E4< 	EEEuQxxr   c                 t    d}|r|                     d          }|r|dz  rd}t          ||z  dz             }|S )Ng    .Ar!   r"   g     @@g      ?)r#   int)r   r   r   r&   r%   r'   s         r   h2izPPITSFTField.h2i-   sS     	OOK00E %$, EAI$%%r   N)r   r   r   r(   r+   r   r   r   r   r      s2              r   r   ) r,   r,   r,   TurboCCKOFDM2GHz5GHzPassiveOnlyzDynamic CCK-OFDMGSFK)FCSTSFT_msFCS_Invalid	PHY_Errorc                       e Zd ZdZ edd           eddde           edd           edd           eddde           e	d	d           e	d
d           e
dd           e
dd          g	Zd ZdS )PPI_Dot11CommonzPPI 802.11-Common	TSF_Timerr   r!   iRateCh_FreqCh_FlagsFHSS_HopFHSS_Pat	AntsignaliAntnoisec                 
    d|fS )Nr   r   )r   ss     r   extract_paddingzPPI_Dot11Common.extract_paddingK   s    Avr   N)r   r   r   r   r   r   _PPIDot11CommonPktFlagsr	   _PPIDot11CommonChFlagsr   r   fields_descrD   r   r   r   r9   r9   ?   s        D<Q//:k1c3JKK<**<	1--:j!S2HII9Z++9Z++<T22<
D113K    r   r9   )pfh_typeN)__doc__
scapy.datar   scapy.packetr   scapy.fieldsr   r   r   r   r	   scapy.layers.ppir
   r   r   r   rF   rE   r9   r   r   r   <module>rN      sQ    ' & & & & & $ $ $ $ $ $              1 1 1 1 1 1 1 1    5       ;   0/ / /  IHH     k   ( G_ ? ? ? ? ? ?r   