o
    z!h?0                     @   sH  d dl Z d dlZg ZG dd dZG dd dZG dd dZG dd	 d	eZG d
d deZG dd deZG dd dZ	G dd dZ
G dd dZG dd dZG dd dZG dd dZdd Zeddddd  d!Zi d ed"d dd#d  d!d$ed%d$d&d'd  d!d(ed)d(dd*d  d!d+ed,d+d-d.d  d!d/ed0d/d1d2d  d!d3ed4d3d5d6d  d!d7ed8d7d9d:d  d!d;ed<d;d=ed!d>ed?d>d@dAd  d!dBedCdBdDdEd  d!dFedGdFddHd  d!dIedJdId1dKd  d!dLedMdLd9dNd  d!dedOedPdOdQdRd  d!dSedTdSdUdVd  d!dWedXdWdUdYd  d!ZdS )Z    Nc                   @   s(   e Zd ZdZdZdd Zedd ZdS )BaseType)name
identifierfmtsizeparseNc                 C   s(   || _ || _|| _t|| _|| _d S N)r   r   r   structcalcsizer   r   )selfr   r   r   r    r   E/var/www/html/gps/gps/lib/python3.10/site-packages/fitdecode/types.py__init__   s
   
zBaseType.__init__c                 C   s
   | j d@ S )z("Base Type Number" as per SDK definition   )r   r   r   r   r   type_num   s   
zBaseType.type_num)__name__
__module____qualname__	__slots__enumr   propertyr   r   r   r   r   r   
   s    r   c                   @   s   e Zd ZdZdddZdS )	FieldTyper   	base_typer   Nc                 C      || _ || _|| _d S r   r   )r   r   r   r   r   r   r   r         
zFieldType.__init__r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @   s0   e Zd ZdZedd Zedd Zdd ZdS )	_FieldAndSubFieldBaser   c                 C   s   | j r| jS | jjS r   )is_base_typetyper   r   r   r   r   r   (      z_FieldAndSubFieldBase.base_typec                 C   s   t | jtS r   )
isinstancer    r   r   r   r   r   r   ,   s   z"_FieldAndSubFieldBase.is_base_typec                 C   s$   | j jr|| j jv r| j j| S |S r   )r    r   )r   	raw_valuer   r   r   render0   s   z_FieldAndSubFieldBase.renderN)r   r   r   r   r   r   r   r$   r   r   r   r   r   %   s    

r   c                       *   e Zd ZdZdZ		d fdd	Z  ZS )Field)r   r    def_numscaleoffsetunits
components	subfieldsfieldNc	           	         >   t    || _|| _|| _|| _|| _|| _|| _|| _	d S r   )
superr   r   r    r'   r(   r)   r*   r+   r,   )	r   r   r    r'   r(   r)   r*   r+   r,   	__class__r   r   r   =      

zField.__init__NNNNNr   r   r   r   
field_typer   __classcell__r   r   r0   r   r&   6   s    r&   c                       r%   )SubField)r   r'   r    r(   r)   r*   r+   
ref_fieldssubfieldNc	           	         r.   r   )
r/   r   r   r'   r    r(   r)   r*   r+   r8   )	r   r   r'   r    r(   r)   r*   r+   r8   r0   r   r   r   P   r2   zSubField.__init__r3   r4   r   r   r0   r   r7   J   s    r7   c                       s$   e Zd ZdZdZ fddZ  ZS )DevField)
dev_data_indexr   r'   r    r*   native_field_numr(   r)   r+   r,   devfieldc                    sJ   t    || _|| _|| _|| _|| _|| _d | _d | _	d | _
d | _d S r   )r/   r   r;   r   r'   r    r*   r<   r(   r)   r+   r,   )r   r;   r   r'   r    r*   r<   r0   r   r   r   h   s   

zDevField.__init__r4   r   r   r0   r   r:   ]   s    r:   c                   @      e Zd ZdZdd ZdS )ReferenceFieldr   r'   valuer#   c                 C      || _ || _|| _|| _d S r   r@   )r   r   r'   rA   r#   r   r   r   r   |      
zReferenceField.__init__Nr   r   r   r   r   r?   y       r?   c                   @   s*   e Zd ZdZdZ		dddZdd ZdS )	ComponentFieldr   r'   r(   r)   r*   
accumulatebits
bit_offset	componentNc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S r   rF   )	r   r   r'   r(   r)   r*   rG   rH   rI   r   r   r   r      s   
zComponentField.__init__c                 C   s|   |d u rd S t |tr+| jr| jt|d> krt d}t|D ]}|d> | }q |}t |tr<|| j? d| j> d @ }|S )N   r         )r"   tuplerI   len
ValueErrorreversedintrH   )r   r#   unpacked_numrA   r   r   r   r$      s   

zComponentField.render)NNNNNN)r   r   r   r   r5   r   r$   r   r   r   r   rE      s    
rE   c                   @   r>   )MessageTyper   mesg_numfieldsc                 C   r   r   rU   )r   r   rV   rW   r   r   r   r      r   zMessageType.__init__Nr   r   r   r   r   rT      rD   rT   c                   @   <   e Zd ZdZdd Zedd Zedd Zedd	 Zd
S )FieldDefinitionr-   r'   r   r   c                 C   rB   r   rZ   )r   r-   r'   r   r   r   r   r   r      rC   zFieldDefinition.__init__c                 C      dS )NFr   r   r   r   r   is_dev      zFieldDefinition.is_devc                 C   s   | j r| j jS dt| j S )Nunknown_)r-   r   strr'   r   r   r   r   r      s   zFieldDefinition.namec                 C      | j r| j jS | jS r   r-   r    r   r   r   r   r   r       r!   zFieldDefinition.typeN	r   r   r   r   r   r   r\   r   r    r   r   r   r   rY      s    

rY   c                   @   rX   )DevFieldDefinition)r-   r;   r   r'   r   c                 C   s$   || _ || _|| _|| _| j| _d S r   )r-   r;   r'   r   r    r   )r   r-   r;   r'   r   r   r   r   r      s
   zDevFieldDefinition.__init__c                 C   r[   )NTr   r   r   r   r   r\      r]   zDevFieldDefinition.is_devc                 C   s"   | j r| j jS d| j d| j S )Nunknown_dev__)r-   r   r;   r'   r   r   r   r   r      s   zDevFieldDefinition.namec                 C   s   | j jS r   )r-   r    r   r   r   r   r       s   zDevFieldDefinition.typeNrb   r   r   r   r   rc      s    	

rc   c                   @   s   e Zd ZdZ	dddZedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zdd ZdS )	FieldData	field_defr-   parent_fieldrA   r#   r*   Nc                 C   sF   || _ || _|| _|| _|| _|| _| js| jr!| jj| _d S d S d S r   rg   )r   rh   r-   ri   rA   r#   r*   r   r   r   r      s   zFieldData.__init__c                 C   s   | j r| j jS d| j S )aN  
        Field's name as defined in FIT global profile.

        If name was not found in global profile, a string is created with the
        form: ``unknown_{def_num}`` where ``def_num`` is the field's definition
        number.

        This value is **NOT** compatible with `is_named`.

        .. seealso:: `name_or_num`
        z
unknown_%dr-   r   r'   r   r   r   r   r     s   zFieldData.namec                 C   r`   )z
        Field's name as defined in FIT global profile.

        If name was not found in global profile, ``self.def_num`` is returned
        (`int`).

        This value is compatible with `is_named`.

        .. seealso:: `name`
        rj   r   r   r   r   name_or_num  s   zFieldData.name_or_numc                 C      | j r| j jS | jjS )z!Field's definition number (`int`))r-   r'   rh   r   r   r   r   r'     s   zFieldData.def_numc                 C   rl   )Field's `BaseType`)rh   r   r-   r   r   r   r   r   %  s   zFieldData.base_typec                 C      | j r| j jS dS )rm   T)r-   r   r   r   r   r   r   /  s   zFieldData.is_base_typec                 C   r`   r   ra   r   r   r   r   r    4  r!   zFieldData.typec                 C   rn   )Nr-   )r-   r5   r   r   r   r   r5   8  s   zFieldData.field_typec                 C   s   | j  S )zZ
        Flag to indicate whether this field has been generated through expansion
        )rh   r   r   r   r   is_expanded<  s   zFieldData.is_expandedc                 C   sV   | j r|| j j| j jfv rdS | jr|| jj| jjfv rdS | jr)|| jjkr)dS dS )zi
        Check if this field has the specified name (`str`) or definition number
        (`int`)
        TF)r-   r'   r   ri   rh   )r   rk   r   r   r   is_namedC  s   zFieldData.is_namedr   )r   r   r   r   r   r   r   rk   r'   r   r   r    r5   ro   rp   r   r   r   r   rf      s*    




	



rf   c                 C   s@   z| d |  d }W n ty   | }Y nw |jdddpd S )Nr   zutf-8replace)encodingerrors)indexrP   decode)	byteslikesr   r   r   parse_stringW  s   
rx   byte   Bc                 C   s   t dd | D rd S | S )Nc                 s   s    | ]}|d kV  qdS )   Nr   ).0br   r   r   	<genexpr>k  s    z<lambda>.<locals>.<genexpr>)allxr   r   r   <lambda>k  s    r   )r   r   r   r   r   c                 C      | dkrd S | S Nr|   r   r   r   r   r   r   o      rM   sint8r~   c                 C   r   )N   r   r   r   r   r   r   p  r      uint8c                 C   r   r   r   r   r   r   r   r   q  r      sint16hc                 C   r   )Ni  r   r   r   r   r   r   r  r      uint16Hc                 C   r   )Ni  r   r   r   r   r   r   s  r      sint32ic                 C   r   )Nir   r   r   r   r   r   t  r      uint32Ic                 C   r   )Nl    r   r   r   r   r   r   u  r      stringrw      float32fc                 C      t | rd S | S r   mathisnanr   r   r   r   r   w         float64dc                 C   r   r   r   r   r   r   r   r   x  r   
   uint8zc                 C   r   Nr   r   r   r   r   r   r   y  r      uint16zc                 C   r   r   r   r   r   r   r   r   z  r      uint32zc                 C   r   r   r   r   r   r   r   r   {  r      sint64qc                 C   r   )Nl    r   r   r   r   r   r   }  r      uint64Qc                 C   r   )Nl    r   r   r   r   r   r   ~  r      uint64zc                 C   r   r   r   r   r   r   r   r     r   )r   r	   __all__r   r   r   r&   r7   r:   r?   rE   rT   rY   rc   rf   rx   BASE_TYPE_BYTE
BASE_TYPESr   r   r   r   <module>   sn   	
0	i	
