Files
controller-wisetopdataserver/python/biopro/devlib/__pycache__/data.cpython-37.opt-2.pyc
T

237 lines
27 KiB
Plaintext
Raw Normal View History

2021-12-20 14:52:55 +08:00
B
2021-12-22 14:29:56 +08:00
w¾ÂaÁâã@s^ddlZddlZddlZddlmZmZmZmZmZm Z m
2021-12-20 14:52:55 +08:00
Z
ddl m Z ddl m
Z
2021-12-22 14:29:56 +08:00
mZedƒZGdddeƒZGdd „d eeejd
ZGd d d edƒZeƒe_Gd
2021-12-20 14:52:55 +08:00
ddeeƒZeƒe_GdddƒZGdddee
ejd
2021-12-22 14:29:56 +08:00
ZGdddeƒZGdddeƒZGdddeƒZGdddeƒZGdddeƒZGdddeƒZGdd „d eƒZ dS)!éN)ÚOptionalÚTypeVarÚGenericÚTupleÚDictÚListÚAnyStr)Údatetime)Ú
RecordingDataÚRecordingFileDataFormatÚTc@seZdZdZdS)Ú EODInterrupt©N)Ú__name__Ú
__module__Ú __qualname__Ú __slots__rrrú7/home/pi/wisetopdataserver/python/biopro/devlib/data.pyr
sr
2021-12-20 14:52:55 +08:00
c@eZdZdZeejedœddƒƒZeeje dœddƒƒZ
2021-12-22 14:29:56 +08:00
e e dœddZ
eje e ed œd
d ƒZeedd œd
dƒZddZeZdS)ÚDataDecodeFormatr)ÚreturncCsdS)Nr)ÚselfrrrÚnames
2021-12-20 14:52:55 +08:00
zDataDecodeFormat.namecCsdS)Nr)rrrrÚformat*szDataDecodeFormat.formatcCsdS)Nr)rrrrÚmessage3szDataDecodeFormat.message)ÚdatarcCsdS)Nr)rrrrrÚdecode:szDataDecodeFormat.decode)ÚexprrcC|tjkrtjS|tjkr tjS|tjkr0tƒS|tjkr@tƒS|tjkrPtƒS|tjkr`tƒSt|t ƒrxt
d|ƒnrt|t ƒrê|  d¡rœt|ddƒS|  d¡r¶t|ddƒS|  d¡rÐt
|ddƒS|  d¡rêt|d dƒSt
dt |ƒƒdS)
Nz0current not support custom data decode format : s TDC4VAF2:é sTDC4VC:ésNeuliveThreeOne:és EISZeroOne:é )ÚNulDataDecoderÚNAMEÚINSTANCEÚRawDataDecoderÚTC4VAF2DataDecoderÚTDC4VAF2DataDecoderÚTDC4VCDataDecoderÚI4V4Z4T4DataDecoderÚ
2021-12-22 14:29:56 +08:00
isinstanceÚstrÚ RuntimeErrorÚbytesÚ
startswithÚNeuliveThreeOneDataDecoderÚEISZeroOneDataDecoder)ÚclsrrrrÚparseCs0



2021-12-20 14:52:55 +08:00

2021-12-22 14:29:56 +08:00

2021-12-20 14:52:55 +08:00

2021-12-22 14:29:56 +08:00

2021-12-20 14:52:55 +08:00

2021-12-22 14:29:56 +08:00



zDataDecodeFormat.parsecCs|jjS)N)Ú __class__r)rrrrÚ__str__fszDataDecodeFormat.__str__N)rrrrÚpropertyÚabcÚabstractmethodrrr,rrr*rr rÚ classmethodr1r3Ú__repr__rrrrrs
"r)Ú metaclassc@sHeZdZdZdZeedœddƒZeedœddƒZ edd œd
d Z
2021-12-20 14:52:55 +08:00
dS) r!ÚNULr)rcCs|jS)N)r")rrrrrsszNulDataDecoder.namecCstjS)N)r ÚRAW_DATA)rrrrrwszNulDataDecoder.formatN)rrcCsdS)Nr)rrrrrr{szNulDataDecoder.decode) rrrr"rr4r*rr,rrrrrrr!lsr!c@sHeZdZdZdZeedœddƒZeedœddƒZ eedœd d
Z
2021-12-22 14:29:56 +08:00
d S) r$ZRAWr)rcCs|jS)N)r")rrrrrŒszRawDataDecoder.namecCstjS)N)r r;)rrrrrszRawDataDecoder.format)rrcCs|S)Nr)rrrrrrszRawDataDecoder.decodeN) rrrr"rr4r*rr,rrrrrrr$sr$c@sdeZdZedƒZdZddZeeee ee efdœddZ
eeee ee efdœdd „Z d
2021-12-20 14:52:55 +08:00
S) ÚTimergcŒ1!„ A)Ú _start_timeÚ
_prev_timeÚ _overflowZ_sum_timestampÚ_prev_prev_timecCs8i|_i|_i|_i|_xtdƒD]}d|j|<q"WdS))r=r>r?r@Úrange)rZdev_numrrrÚ__init__¥s zTimer.__init__)ÚdeviceÚ
2021-12-22 14:29:56 +08:00
time_stamprc
C|j|dkr:||j|<||j|<||j|<d|j|<dS|j |d¡}|j |d¡}|j |d¡}|j|}|dkr¸||j|<d|j|<||}tdd|d|d|dt ¡ƒ |ddfS||kràtd d|d|d|dt ¡ƒ d
2021-12-20 14:52:55 +08:00
S|d krpd |krp|d
2021-12-22 14:29:56 +08:00
7}||j|<||j|<||jd
|}|jd
2021-12-20 14:52:55 +08:00
|||}tdd|d|d|d|dt ¡ƒ td|d|ƒ||dfS||kr¤|dkr¤tdd|d|d|dt ¡ƒ d
2021-12-22 14:29:56 +08:00
S||}||j|<|j|}||jd
||}||j|<||dfSdS)Nr)rrFzignore prev_time is None; ztime:z ; prev_time:z; prev_prev_time:ú,Fz ignore time_stamp == prev_time; )NNTiiéztime stamp overflow;z; delta:z overflow:z ; device:zignore negative delta; ) r=r>r@r?ÚgetÚprintr ÚnowÚOVERFLOW) rrDrEÚ prev_timeÚprev_prev_timeÚoverflowÚ
start_timeÚretÚdeltarrrÚeis_get_time_stamp®sJ


2021-12-20 14:52:55 +08:00


2021-12-22 14:29:56 +08:00


2021-12-20 14:52:55 +08:00


2021-12-22 14:29:56 +08:00

 
2021-12-20 14:52:55 +08:00

2021-12-22 14:29:56 +08:00


2021-12-20 14:52:55 +08:00
zTimer.eis_get_time_stampc
2021-12-22 14:29:56 +08:00
Cs0|j|dkr:||j|<||j|<||j|<d|j|<dS|j |d¡}|j |d¡}|j |d¡}|j|}|dkr¸||j|<d|j|<||}tdd|d|d|dt ¡ƒ |ddfS||kràtd d|d|d|dt ¡ƒ d
S|d krpd |krp|d
7}||j|<||j|<||jd
2021-12-20 14:52:55 +08:00
|}|jd
|||}tdd|d|d|d|dt ¡ƒ td|d|ƒ||dfS||kr¤|dkr¤tdd|d|d|dt ¡ƒ d
2021-12-22 14:29:56 +08:00
S||kræ||dkræ|dkrætdd|d|d|dt ¡ƒ d
S||}||j|<|j|}||jd
||}||j|<||dfSdS)Nr)rrFzignore prev_time is None; ztime:z ; prev_time:z; prev_prev_time:rFFz ignore time_stamp == prev_time; )NNTiirGztime stamp overflow;z; delta:z overflow:z ; device:zignore negative delta; i`êzignore big jump;) r=r>r@r?rHrIr rJrK) rrDrErLrMrNrOrPrQrrrÚget_time_stampèsP









 
"


zTimer.get_time_stampN) rrrÚintrKrrCÚfloatrrrRrSrrrrr< s
 ":r<c@eZdZdZdZddZeedœddƒZej edœd dƒZee
dœd
d ƒZ e e
ee ee fd œd
dZe e
ee ee fd œddZeje
eedœddƒZdS)ÚRecDataDecoderlÿÿ)Ú_deviceÚtimercCsd|_tƒ|_dS)Nr)rWr<rX)rrrrrC'szRecDataDecoder.__init__)rcCs|jS)N)rW)rrrrrD+szRecDataDecoder.device)ÚvaluecCs"d|kstdt|ƒƒ||_dS)Nrzillegal device value : )Ú
ValueErrorr*rW)rrYrrrrD/scCstjS)N)r ZREC_DATA)rrrrr6szRecDataDecoder.format)rErcCs|j |j|¡S)N)rXrSrD)rrErrrrS:szRecDataDecoder.get_time_stampcCs|j |j|¡S)N)rXrRrD)rrErrrrR=sz!RecDataDecoder.eis_get_time_stamp)rrcCsdS)Nr)rrrrrr@szRecDataDecoder.decodeN)rrrrKrrCr4rTrDÚsetterr,rrUrrrSrRr5r6r
rrrrrrV"s  rVcsJeZdZdZdZfddZeedœddƒZe e
e dœd d
Z Z
S) r%ZTC4VAF2)Ú
_prev_datacstƒ ¡d|_dS)N)ÚsuperrCr\)r)r2rrrC`s
zTC4VAF2DataDecoder.__init__)rcCs|jS)N)r")rrrrrdszTC4VAF2DataDecoder.name)rrcCs>t|ƒdkrdSt|dƒ}|dkr(dSt d|dd¡d}| |¡\}}}|dkr\dS|dkrn||_dS|j}||_|d}t|dƒ}d|dd|}t|jt|ƒt|ƒƒ}x€td|ddƒD]l} || }
|| d} |
d @d?} |
d
@d>| d @d?B}
| d @}|dkr*|  | |
d
¡qÊ|  | d¡qÊW|S)rGrz<Iéé ééðééüéi)
ÚlenrTÚstructÚunpackrSr\r
rDrBÚ append_data)rrÚ data_lengthrErQÚret_get_time_stampZ prev_dataÚ sample_raterPÚd1Úd2ÚchannelrYÚflagrrrrhs8     
zTC4VAF2DataDecoder.decode)rrrr"rrCr4r*rr,rr
rÚ
__classcell__rr)r2rr%Es  r%cszeZdZdZdZdZdedœfdd
Zeee e
e e e fdœd d
ƒZ
eed œd d
ƒZee edœddZZS)r&ZTDC4VAF2)é#éKiE)Úamp_gainÚ data_counterÚ
cali_coeffÚ _cali_coeffN)rwcs@tƒ ¡d|_d|_d|_d|_|dk r<||_| |¡|_dS)Nr)r]rCrurvrxrwÚ_decode_cali_coeff)rrw)r2rrrCÌs
zTDC4VAF2DataDecoder.__init__)rwrc C|dkr”g}xtddƒD]t}xntd|dd|ddƒD]N}t d|||d¡d}t d||d |d¡d}| ||f¡q:WqW|SdSdS)
ré érerr_z>hé
)rBrgrhÚappend)rrwÚ
cali_tablermÚampÚoffsetrrrryÙs" z&TDC4VAF2DataDecoder._decode_cali_coeff)rcCs(|jdkr|jS|j ¡d|jSdS):)rxr"Úencode)rrrrrès
zTDC4VAF2DataDecoder.name)rrcC|jdkr|jd7_nÆt|ƒdkr,dSt|dƒ}|dkrDdSt d|dd¡d}t d|dd¡d}| |¡\}}}|dkrdS|dks¤t|ƒdkrªd}nd |d|}t|j|d
t|ƒƒ}|j  |j
¡} t|ƒ}
xöt |ƒD]ê} dd| } | d|
krð|| }
|| d}|
d @d ?}|
d@d>|d
@d?B}|d@}|dkrd|  |d¡qð|dkrÆ|j
dk rÆ|j
|d| \}} |d}|dkr¬|d}ntd|d| |ƒ}n|d}|  ||¡qðW|SdS)NrcrGrArz<Ir_r^z<HigßO—nb@@rbrardrer{i)rvrfrTrgrhrSr
rDÚAMP_GAINÚindexrurBrirw)rrrjrEÚ
2021-12-20 14:52:55 +08:00
time_deltaÚ_rkrlrPruÚstoprmrrnrorprYrqÚgainÚ
cali_valuerrrrïsJ
2021-12-22 14:29:56 +08:00
      
2021-12-20 14:52:55 +08:00

2021-12-22 14:29:56 +08:00

zTDC4VAF2DataDecoder.decode)N)rrrr"r…rr,rCÚ staticmethodrrrrTryr4rrr
2021-12-20 14:52:55 +08:00
rrrrr)r2rr&˜s.
2021-12-22 14:29:56 +08:00
"r&cs”eZdZdZdZdZdZdZdedœfdd „
Z e
ee e e
eefd
œd d ƒZeed
œddƒZeed
œddƒZee edœddZZS)r'ÚTDC4VC)édii érAra)Ú_start_return_dataÚ _time_stampÚ_time_stamp_listÚ_discard_data_counterÚ_channelrurvrwrxÚ_cycle_start_timeÚ
_adc_clockÚ_axis_chÚ_prev_delta_timer\Ú_prev_time_stampN)rwcstƒ ¡d|_d|_g|_d|_d|_d|_d|_d|_ d|_
d|_ d|_ g|_
|dk rl||_ | |¡|_ d|_d|_d|_dS)NFr)r]rCrrrr“r”rr—rurvrxrwr•ryr\r˜r™)rrw)r2rrrCUs&
 zTDC4VCDataDecoder.__init__)rwrc C|dkr˜g}d}d}x~td|ƒD]p}xjtd|dƒD]Z}|||}t d|||d¡d}t d||d|d¡d}| ||f¡q2Wq W|StƒdSdS)Nrzraé!rrGz>hr_)rBrgrhr~rI)rwrÚ
max_lengthÚ$size_of_cali_data_per_amp_gain_levelrmr€rrrrrryos  z$TDC4VCDataDecoder._decode_cali_coeff)rcCs(|jdkr|jS|j ¡d|jSdS)Nrƒ)rxr"r„)rrrrrˆs
zTDC4VCDataDecoder.namecCs d}|jdkrd|jd}|S)NréÈ)r)rÚresultrrrÚreal_sample_rateŽs
z"TDC4VCDataDecoder.real_sample_rate)rrc&Cs\t|ƒdkrdSt|dƒ}d|d}tt|ƒ|dƒ}|dkrHdSt d|dd¡d}t d|dd¡d}|dks”|jdkrš|j|kršd |_|dks°|dks°|jsº||_dS|jd
krÖ|jd7_dSt|ƒ}|dkrü|jrü| |¡\}}} |dkst|ƒdkrd}
t|jƒdkr$|dk r$|} ||jd} |jd|krXdSt| |j dƒdks€|jddkrŠ|j d} d | | }
|
||}
t
|j |jdd t|
ƒt|
ƒd ƒ}|j |_
|j}|d}|d krêd}xøt|ƒD]ì}dd|}|d|kr:||d
@d ?}||d@}||d}|}|d>|B}|dkrÊ|jddk rÊ|jdd||\}}|dkr|d}n6|dkr°|dkr°|d}ntd |d||ƒ}n|d}| ||¡qôWd}d}d}d}|jdkrÜt|jƒdd}dd|Dƒ}| ¡x°t|ƒD]¢}|d|}|d|d} |d|d }!||d>||dB}"|| d>|| dB}#||!d>||!dB}$|"dkrÀ|"d}"|#dkrÒ|#d}#|$dkrä|$d}$tt |"d|#d|$d¡ƒ}%t|ƒdkr:t|dƒdkr:| |t|"dƒ¡t|ƒdkrnt|dƒdkrn| |t|#dƒ¡t|ƒdkr¢t|dƒdkr¢| |t|$dƒ¡t|ƒd kr4t|dƒdkr4| |t|%dƒ¡q4W|j ¡|j ¡|j  ¡|j |j¡|j |¡|j  |¡|S|dk rX|j |j¡|j |¡|j  |¡dSdS)Nr|rGrAr_r^rz>Iz>HTr}rarbrciéiiicSsg|]}|qSrr)Ú.0Úchrrrú
<listcomp> sz,TDC4VCDataDecoder.decode.<locals>.<listcomp>iiÿÿre)rfrTrgrhrrr“rSr™r˜r
rDr•ÚcyclerurBr\rir—ÚbinÚreverseÚmathÚsqrtÚpopr~rw)&rrrjÚaxis_start_indexÚaxis_data_lengthrEr‡r‰rˆrkrlZdata_length_for_sample_rateÚdata_packets_time_deltaZsample_rate_channel_upper_256rPrurmrrnroÚd3rprYrÚ
x_axis_acc_chÚ
y_axis_acc_chÚ
z_axis_acc_chÚ axis_acc_chÚaxis_channel_allowÚaxis_channel_allow_listÚ x_axis_indexÚ y_axis_indexÚ z_axis_indexÚ x_axis_dataÚ y_axis_dataÚ z_axis_dataÚ axis_datarrrr   

(
  $
    


  


"


  
  zTDC4VCDataDecoder.decode)N)rrrr"r…Ú CH_NUMBERÚGAIN_LEVEL_NUMBERrr,rCrrrrTryr4rrr
rrrrr)r2rr'5s"r'csneZdZdZdZdZfddZeedœddƒZ e
edœd d
Z e e
e
2021-12-20 14:52:55 +08:00
d œd d
2021-12-22 14:29:56 +08:00
ZedœddZZS)r(ZI4V4Z4T4Ú
CycleComplete)Ú_messageÚ
_cycle_numberrrÚ_total_time_stampÚ_moder•Ú
_mode_stopcs>tƒ ¡d|_d|_d|_d|_d|_d|_d|_g|_ dS)NrF)
r]rCr¿rrr•)r)r2rrrCZs
2021-12-20 14:52:55 +08:00
zI4V4Z4T4DataDecoder.__init__)rcCs|jS)N)r")rrrrrgszI4V4Z4T4DataDecoder.namecCs|j}d|_|S)N))rrPrrrrkszI4V4Z4T4DataDecoder.message)rrcCs,t|ƒdkrdSt d|dd¡d}t d|dd¡d}t d|dd¡d}t d|dd …¡d}t d
|d d ¡d}|d }|d }|d
} |d}
|d} |d} |d}
|d@dkrÒd}nd}|dkräd|_|dksú|dksú|jsþdS|dkrH|jdkrH| |¡\}}}|dkrHtdt|ƒt ¡dƒdS|dkrntdt|ƒt ¡ƒd|_ nd|_ t
|j t |ddƒdƒ}| 
d|¡| 
d|¡| 
d|¡| 
d|¡| 
d|¡| 
d| ¡| 
d|
¡| 
d| ¡| 
d| ¡| 
2021-12-22 14:29:56 +08:00
d|
2021-12-20 14:52:55 +08:00
¡||jkr(|jd ||_||_|S)!Néz>irGérré
2021-12-22 14:29:56 +08:00
z<Iéz>Hééxéyézé{é|éÿÿÿÿrbé TFzerror timeStamp full data:Ú
zfinishMode full data:ièr_rerar^rrAz=%d)rfrgrhrrSrIÚlistr rJr
rDrTrir¿ÚMESSAGE_CYCLE_COMPLETEr¾)rrÚcurrentÚvoltageÚ impedancerEÚ cycle_numberZfinish_mode_falgZ mem_wrongZ
2021-12-20 14:52:55 +08:00
mem_retry_cntZmem_green_wrongZmem_green_retry_cntZram_numZ broken_flagÚ
finishModerQrkrPrrrrqsZ  
2021-12-22 14:29:56 +08:00

           zI4V4Z4T4DataDecoder.decodecCs|jS)N))rrrrÚ isFinishModeÅsz I4V4Z4T4DataDecoder.isFinishMode)rrrr"rrCr4r*rrrr,r
rrTr×rrrr)r2rr(>s
Tr(csJeZdZdZdZfddZeedœddƒZe e
e dœd d
2021-12-20 14:52:55 +08:00
Z Z
S) ÚTDBC4VCTHDataDecoderZ TDBC4VCTH)Ú_remindcstƒ ¡d|_dS)NrG)r]rC)r)r2rrrCÝs
zTDBC4VCTHDataDecoder.__init__)rcCs|jS)N)r")rrrrrâszTDBC4VCTHDataDecoder.name)rrcCsd|jdkrtƒt|ƒdkr dSt|dƒ}|dkr8dSt d|dd¡d}| |¡\}}}t|jt|ƒdƒ}|dkr`|d}|d}|d@d>|d @B} d
| d } |  dt| ƒ¡d}
x˜t
d|d ƒD]ˆ} || }|| d}|| d} || d
}
|d ?d@}|d@d>|d @B}|
2021-12-22 14:29:56 +08:00
| d @d>|
d @B7}
d|d| }|  |t|ƒ¡qÎW|