a
    kÄ#d·8  ã                   @   s:  d dl mZmZmZmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZ G dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!G d d!„ d!eƒZ"ee!e"d"d#� G d$d%„ d%eƒZ#ee!e#d&d#� G d'd(„ d(eƒZ$ee!e$d)d#� G d*d+„ d+eƒZ%G d,d-„ d-eƒZ&G d.d/„ d/e&ƒZ'G d0d1„ d1eƒZ(G d2d3„ d3eƒZ)G d4d5„ d5eƒZ*G d6d7„ d7eƒZ+G d8d9„ d9eƒZ,G d:d;„ d;eƒZ-G d<d=„ d=eƒZ.G d>d?„ d?eƒZ/G d@dA„ dAeƒZ0G dBdC„ dCeƒZ1G dDdE„ dEeƒZ2G dFdG„ dGeƒZ3G dHdI„ dIeƒZ4G dJdK„ dKeƒZ5G dLdM„ dMeƒZ6G dNdO„ dOeƒZ7G dPdQ„ dQeƒZ8G dRdS„ dSeƒZ9G dTdU„ dUeƒZ:G dVdW„ dWeƒZ;G dXdY„ dYeƒZ<G dZd[„ d[eƒZ=G d\d]„ d]eƒZ>G d^d_„ d_eƒZ?G d`da„ daeƒZ@G dbdc„ dceƒZAG ddde„ deeƒZBG dfdg„ dgeƒZCG dhdi„ dieƒZDG djdk„ dkeƒZEG dldm„ dme&ƒZFG dndo„ doeƒZGG dpdq„ dqeƒZHG drds„ dseƒZIG dtdu„ dueƒZJG dvdw„ dweƒZKG dxdy„ dye&ƒZLG dzd{„ d{e(ƒZMG d|d}„ d}eƒZNd~S )é    )Úget_agÚget_max_ctoÚXCPEndiannessFieldÚStrVarLenField)ÚByteEnumFieldÚ	ByteFieldÚ
ShortFieldÚStrLenFieldÚIntFieldÚThreeBytesFieldÚ
FlagsFieldÚConditionalFieldÚ
XByteFieldÚ	XIntFieldÚFieldLenField)ÚPacketÚbind_layersc                   @   s$   e Zd ZdddœZeddeƒgZdS )ÚConnectZNORMALZUSER_DEFINED©r   é   Zconnection_moder   N)Ú__name__Ú
__module__Ú__qualname__Úcommandsr   Úfields_desc© r   r   úg/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/automotive/xcp/cto_commands_master.pyr      s   

ÿr   c                   @   s   e Zd ZdS )Ú
DisconnectN©r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )Ú	GetStatusNr   r   r   r   r   r       s   r   c                   @   s   e Zd ZdS )ÚSynchNr   r   r   r   r   r    %   s   r    c                   @   s   e Zd ZdS )ÚGetCommModeInfoNr   r   r   r   r   r!   *   s   r!   c                   @   s.   e Zd ZdZddddddœZedd	eƒgZd
S )ÚGetIdzGet identification from slaveÚASCIIZ$file_name_without_path_and_extensionZ!file_name_with_path_and_extensionÚURLÚFile)r   r   é   é   é   Zidentification_typer   N)r   r   r   Ú__doc__Útypesr   r   r   r   r   r   r"   /   s   ür"   c                   @   s0   e Zd ZdZedddg d¢ƒeeddƒƒgZdS )Ú
SetRequestz&Request to save to non-volatile memoryÚmoder   é   )Zstore_cal_reqZstore_daq_reqZclear_daq_reqÚx3Úx4Úx5Úx6Úx7Zsession_configuration_idN)r   r   r   r)   r   r   r   r   r   r   r   r   r+   :   s   ür+   c                   @   s8   e Zd ZdddœZdddœZeddeƒeddeƒgZdS )	ÚGetSeedÚfirstÚ	remainingr   ÚresourceÚignorer,   r   N)r   r   r   Z	seed_modeÚresr   r   r   r   r   r   r3   D   s
   



þr3   c                   @   s4   e Zd Zeddddd�edddd„ d	d„ d
�gZdS )ÚUnlockÚlenNÚseedÚB©Z	length_ofÚfmtó    c                 C   s   | j S ©N©r:   ©Úpr   r   r   Ú<lambda>R   r?   zUnlock.<lambda>c                   C   s
   t ƒ d S ©Nr&   ©r   r   r   r   r   rD   S   r?   ©Úlength_fromÚ
max_length)r   r   r   r   r   r   r   r   r   r   r9   N   s
   ÿþr9   c                   @   s0   e Zd ZeeddƒƒeddƒeeddƒƒgZdS )ÚSetMtaÚreservedr   Úaddress_extensionÚaddressN)r   r   r   r   r   r   r   r   r   r   r   r   rJ   W   s   ørJ   c                   @   s   e Zd ZeddƒgZdS )ÚUploadÚnr_of_data_elementsr   N©r   r   r   r   r   r   r   r   r   rN   e   s   rN   c                   @   s4   e Zd ZeddƒeddƒeddƒeeddƒƒgZdS )ÚShortUploadrO   r   rK   rL   rM   N)r   r   r   r   r   r   r
   r   r   r   r   r   rQ   j   s
   ürQ   c                   @   s(   e Zd ZeeddƒƒeeddƒƒgZdS )ÚBuildChecksumrK   r   Ú
block_sizeN)r   r   r   r   r   r   r   r   r   r   r   rR   t   s   úrR   c                   @   s&   e Zd ZddddœZeddeƒgZdS )ÚTransportLayerCmdZGET_SLAVE_IDZ
GET_DAQ_IDÚ
SET_DAQ_ID)éÿ   éþ   éý   Úsub_command_coderV   N)r   r   r   Úsub_commandsr   r   r   r   r   r   rT   €   s   ý
ÿrT   c                   @   s<   e Zd ZdddœZeddƒeddƒedd	ƒed
deƒgZdS )ÚTransportLayerCmdGetSlaveIdZidentify_by_echoZconfirm_by_inverse_echor   ÚxéX   ÚcéC   rC   éP   r,   r   N)r   r   r   Z	echo_moder   r   r   r   r   r   r   r[   Œ   s   þ
ür[   rV   )rY   c                   @   s   e Zd ZeeddƒƒgZdS )ÚTransportLayerCmdGetDAQIdÚdaq_list_numberr   N)r   r   r   r   r   r   r   r   r   r   ra   ž   s   ÿra   rW   c                   @   s0   e Zd ZddiZeeddƒƒeeddƒƒgZdS )ÚTransportLayerCmdSetDAQIdrX   rU   rb   r   Zcan_identifierN)r   r   r   Zsub_commandr   r   r
   r   r   r   r   r   rc   ¨   s
   ÿþrc   rX   c                   @   s   e Zd ZeddƒgZdS )ÚUserCmdrY   r   NrP   r   r   r   r   rd   ¶   s   ÿrd   c                   @   sB   e Zd Zeddƒeedddd„ d�dd„ ƒed	dd
d„ d�gZdS )ÚDownloadrO   r   Ú	alignmentr?   c                 C   s
   t ƒ d S rE   ©r   ©Zpktr   r   r   rD   Å   r?   zDownload.<lambda>©rH   c                 C   s
   t ƒ dkS rE   rg   rh   r   r   r   rD   Æ   r?   Údata_elementsc                 C   s    t ƒ dkrtƒ d S tƒ t ƒ  S )Nr   r&   )r   r   rh   r   r   r   rD   È   s   N)r   r   r   r   r   r	   r   r   r   r   r   re   ¿   s   ÿýÿúre   c                   @   s   e Zd ZdS )ÚDownloadNextNr   r   r   r   r   rk   Í   s   rk   c                   @   s:   e Zd Zeedddd„ d�dd„ ƒedddd„ d�gZd	S )
ÚDownloadMaxrf   r?   c                 C   s
   t ƒ d S ©Nr   rg   ©Ú_r   r   r   rD   ×   r?   zDownloadMax.<lambda>ri   c                 C   s
   t ƒ dkS rm   rg   rn   r   r   r   rD   Ø   r?   rj   c                 C   s   t ƒ tƒ d d  S )Nr&   r   )r   r   rn   r   r   r   rD   Ú   r?   N)r   r   r   r   r	   r   r   r   r   r   rl   Ó   s   þÿürl   c                
   @   sP   e Zd Zeddddd�eddƒeddƒeed	dƒƒedd
dd„ dd„ d�gZdS )ÚShortDownloadr:   Nrj   r<   r=   rK   r   rL   rM   r?   c                 C   s   | j S r@   rA   rB   r   r   r   rD   å   r?   zShortDownload.<lambda>c                   C   s
   t ƒ d S )Nr-   rF   r   r   r   r   rD   æ   r?   rG   )	r   r   r   r   r   r   r
   r   r   r   r   r   r   rp   Þ   s   ÿûrp   c                   @   s0   e Zd ZeddƒeeddƒƒeeddƒƒgZdS )Ú
ModifyBitsZshift_valuer   Zand_maskZxor_maskN)r   r   r   r   r   r   r   r   r   r   r   rq   ê   s   ýrq   c                   @   s4   e Zd ZdZedddg d¢ƒeddƒeddƒgZdS )	Ú
SetCalPagezSet calibration pager,   r   r-   )ZecuZxcpÚx2r.   r/   r0   r1   ÚallÚdata_segment_numZdata_page_numN©r   r   r   r)   r   r   r   r   r   r   r   rr   ô   s   ÿürr   c                   @   s$   e Zd ZdZeddƒeddƒgZdS )Ú
GetCalPagezGet calibration pageÚaccess_moder   ru   N©r   r   r   r)   r   r   r   r   r   r   rw   þ   s   þrw   c                   @   s   e Zd ZdZdS )ÚGetPagProcessorInfoz(Get general information on PAG processorN©r   r   r   r)   r   r   r   r   rz     s   rz   c                   @   sB   e Zd ZdZddddœZeddeƒeddƒed	dƒed
dƒgZdS )ÚGetSegmentInfoz&Get specific information for a SEGMENTZget_basic_address_infoZget_standard_infoZget_address_mapping_info©r   r   r&   r,   r   Úsegment_numberZsegment_infoZmapping_indexN)r   r   r   r)   Z	info_moder   r   r   r   r   r   r   r|     s   ý
ür|   c                   @   s,   e Zd ZdZeddƒeddƒeddƒgZdS )ÚGetPageInfoz#Get specific information for a PAGErK   r   r~   Zpage_numberNry   r   r   r   r   r     s
   ýr   c                   @   s,   e Zd ZdZedddg d¢ƒeddƒgZdS )ÚSetSegmentModezSet mode for a SEGMENTr,   r   r-   )ÚfreezeÚx1rs   r.   r/   r0   r1   r2   r~   Nrv   r   r   r   r   r€   %  s   ÿýr€   c                   @   s$   e Zd ZdZeddƒeddƒgZdS )ÚGetSegmentModezGet mode for a SEGMENTrK   r   r~   Nry   r   r   r   r   rƒ   .  s   þrƒ   c                   @   s4   e Zd ZdZeddƒeddƒeddƒeddƒgZdS )ÚCopyCalPagez›This command forces the slave to copy one calibration page to another.
    This command is only available if more than one calibration page is defined
    Zsegment_num_srcr   Zpage_num_srcZsegment_num_dstZpage_num_dstNry   r   r   r   r   r„   6  s   ür„   c                   @   s8   e Zd ZdZeddƒeeddƒƒeddƒeddƒgZdS )Ú	SetDaqPtrú3Data acquisition and stimulation, static, mandatoryrK   r   Údaq_list_numÚodt_numZodt_entry_numN©r   r   r   r)   r   r   r   r   r   r   r   r   r…   B  s   ür…   c                   @   s8   e Zd ZdZeddƒeddƒeddƒeeddƒƒgZdS )ÚWriteDaqr†   Z
bit_offsetr   Zsize_of_daq_elementrL   rM   N)r   r   r   r)   r   r   r
   r   r   r   r   r   rŠ   L  s   ürŠ   c                   @   sL   e Zd ZdZedddg d¢ƒeeddƒƒeeddƒƒeddƒed	dƒgZd
S )ÚSetDaqListModezSet mode for DAQ listr,   r   r-   )Zx0Ú	directionrs   r.   Ú	timestampZpid_offr1   r2   r‡   Úevent_channel_numZtransmission_rate_prescalerZdaq_list_prioN)	r   r   r   r)   r   r   r   r   r   r   r   r   r   r‹   V  s   ÿùr‹   c                   @   s(   e Zd ZdZeddƒeeddƒƒgZdS )ÚGetDaqListModezGet mode from DAQ listrK   r   rb   Nr‰   r   r   r   r   r�   c  s   þr�   c                   @   s6   e Zd ZdZddddœZeddeƒeeddƒƒgZd	S )
ÚStartStopDaqListzStart/stop/select DAQ listÚstopÚstartÚselectr}   r,   r   rb   N)	r   r   r   r)   Ú	mode_enumr   r   r   r   r   r   r   r   r�   k  s
   
þr�   c                   @   s*   e Zd ZdZddddœZeddeƒgZdS )	ÚStartStopSynchz$Start/stop DAQ lists (synchronously)r‘   r’   r“   r}   r,   r   N)r   r   r   r)   r”   r   r   r   r   r   r   r•   t  s   
ÿr•   c                   @   s   e Zd ZdZdS )ÚReadDaqzRead element from ODT entryNr{   r   r   r   r   r–   |  s   r–   c                   @   s   e Zd ZdZdS )ÚGetDaqClockzGet DAQ clock from slaveNr{   r   r   r   r   r—   �  s   r—   c                   @   s   e Zd ZdZdS )ÚGetDaqProcessorInfoz(Get general information on DAQ processorNr{   r   r   r   r   r˜   †  s   r˜   c                   @   s   e Zd ZdZdS )ÚGetDaqResolutionInfoz5Get general information on DAQ processing resolutioinNr{   r   r   r   r   r™   ‹  s   r™   c                   @   s(   e Zd ZdZeddƒeeddƒƒgZdS )ÚGetDaqListInfoz'Get specific information for a DAQ listrK   r   r‡   Nr‰   r   r   r   r   rš   �  s   þrš   c                   @   s(   e Zd ZdZeddƒeeddƒƒgZdS )ÚGetDaqEventInfoz-Get specific information for an event channelrK   r   rŽ   Nr‰   r   r   r   r   r›   ˜  s   þr›   c                   @   s(   e Zd ZdZeddƒeeddƒƒgZdS )ÚClearDaqListzClear DAQ list configurationrK   r   r‡   Nr‰   r   r   r   r   rœ   ¢  s   þrœ   c                   @   s   e Zd ZdZdS )ÚFreeDaqzClear dynamic DAQ configurationNr{   r   r   r   r   r�   ­  s   r�   c                   @   s(   e Zd ZdZeddƒeeddƒƒgZdS )ÚAllocDaqzAllocate DAQ listsrK   r   Z	daq_countNr‰   r   r   r   r   rž   ²  s   þrž   c                   @   s0   e Zd ZdZeddƒeeddƒƒeddƒgZdS )ÚAllocOdtzAllocate ODTs to a DAQ listrK   r   r‡   Z	odt_countNr‰   r   r   r   r   rŸ   º  s
   ýrŸ   c                   @   s8   e Zd ZdZeddƒeeddƒƒeddƒeddƒgZdS )ÚAllocOdtEntryzAllocate ODT entries to an ODTrK   r   r‡   rˆ   Zodt_entries_countNr‰   r   r   r   r   r    Ã  s   ür    c                   @   s   e Zd ZdZdS )ÚProgramStartz0Indicate the beginning of a programming sequenceNr{   r   r   r   r   r¡   Ï  s   r¡   c                   @   s@   e Zd ZdZdddœZeddeƒeeddƒƒeeddƒƒgZ	d	S )
ÚProgramClearz#Clear a part of non-volatile memoryZabsolute_accessZfunctional_accessr   r,   r   rK   Zclear_rangeN)
r   r   r   r)   rx   r   r   r   r
   r   r   r   r   r   r¢   Ô  s   

ýr¢   c                   @   s   e Zd ZdZdS )ÚProgramz%Program a non-volatile memory segmentNr{   r   r   r   r   r£   Þ  s   r£   c                   @   s   e Zd ZdZdS )ÚProgramResetz*Indicate the end of a programming sequenceNr{   r   r   r   r   r¤   ä  s   r¤   c                   @   s   e Zd ZdZdS )ÚGetPgmProcessorInfoz(Get general information on PGM processorNr{   r   r   r   r   r¥   é  s   r¥   c                   @   s0   e Zd ZdZdddœZeddeƒeddƒgZdS )	ÚGetSectorInfoz%Get specific information for a SECTORZget_addressZ
get_lengthr   r,   r   Zsector_numberN)r   r   r   r)   Zaddress_moder   r   r   r   r   r   r   r¦   î  s
   

þr¦   c                   @   s(   e Zd ZdZeddƒeeddƒƒgZdS )ÚProgramPreparez'Prepare non-volatile memory programmingZnot_usedr   Z	code_sizeNr‰   r   r   r   r   r§   ÷  s   þr§   c                   @   s4   e Zd ZdZeddƒeddƒeddƒeddƒgZdS )ÚProgramFormatz"Set data format before programmingZcompression_methodr   Zencryption_modeZprogramming_methodZaccess_methodNry   r   r   r   r   r¨   ÿ  s   ür¨   c                   @   s   e Zd ZdZdS )ÚProgramNextz2Program a non-volatile memory segment (Block Mode)Nr{   r   r   r   r   r©   	  s   r©   c                   @   s   e Zd ZdZdS )Ú
ProgramMaxz2Program a non-volatile memory segment (fixed size)Nr{   r   r   r   r   rª     s   rª   c                   @   s@   e Zd ZdZdddœZeddeƒeeddƒƒeeddƒƒgZ	d	S )
ÚProgramVerifyzProgram  VerifyZ!request_to_start_internal_routineZsending_verification_valuer   Zverification_moder   Zverification_typeZverification_valueN)
r   r   r   r)   Z
start_moder   r   r   r
   r   r   r   r   r   r«     s   þ
ýr«   N)OZ"scapy.contrib.automotive.xcp.utilsr   r   r   r   Zscapy.fieldsr   r   r   r	   r
   r   r   r   r   r   r   Zscapy.packetr   r   r   r   r   r    r!   r"   r+   r3   r9   rJ   rN   rQ   rR   rT   r[   ra   rc   rd   re   rk   rl   rp   rq   rr   rw   rz   r|   r   r€   rƒ   r„   r…   rŠ   r‹   r�   r�   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   rª   r«   r   r   r   r   Ú<module>   sŒ   4

	
ÿÿ
ÿ	

		

	
	
	
