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

128 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
ñ0Àa^€ã@sddlZddlZddlmZddlmZddlmZddlmZm Z m
2021-12-20 14:52:55 +08:00
Z
m Z m Z m
Z
mZmZddlTddlmZmZmZddlmZdd lmZd
dlTd
2021-12-22 14:29:56 +08:00
d lmZGd d
2021-12-20 14:52:55 +08:00
d
eƒZGdddeƒZGdddeƒZGdddeƒZ eGdddƒƒZ!Gddde"ƒZ#e#ddddddƒe#_$Gddde"ej%dZ&Gddde&ƒZ'e'de#j$eƒe'_$GdddƒZ(Gdd „d ƒZ)Gd!d"„d"ƒZ*Gd#d$„d$eƒZ+Gd%d&„d&e&ej%dZ,Gd'd(„d(eej%dZ-Gd)d*„d*e-ƒZ.e/ed+œd,d-„Z0e/e e1d.œd/d0„Z2e/e e3d1œd2d3„Z4e/e e3d1œd4d5„Z5dS)6éN)ÚIntEnum)Útotal_ordering)Útime)ÚAnyÚOptionalÚTupleÚUnionÚListÚDictÚCallableÚNoReturn)Ú*)ÚADDRESSÚ
EMPTY_ADDRESSÚ address_str)ÚWHITE)Ú
LoggerFlagé)ÚMenuc@s$eZdZdZdZdZdZdZdZdS)ÚDeviceCommandActionrrééééN) Ú__name__Ú
__module__Ú __qualname__ZNOTHINGÚSUCCESSZ CONNECTEDÚ DISCONNECTEDÚSCANZMENU©r r ú9/home/pi/wisetopdataserver/python/biopro/devlib/device.pyrs rc@seZdZdZdS)ÚDeviceBusyErrorr N)rrrÚ __slots__r r r r!r"sr"cs<eZdZdZedœfdd ZeeedœddƒZZ S)ÚCommandNotFoundError)Ú_command)Úcommandcstƒ td|¡||_dS)Nz : )ÚsuperÚ__init__ÚCOMMAND_UNKNOWNr%)Úselfr&)Ú __class__r r!r('szCommandNotFoundError.__init__)ÚreturncCs|jS)N)r%)r*r r r!r&,szCommandNotFoundError.command)
rrrr#Ústrr(Úpropertyrr&Ú
__classcell__r r )r+r!r$"sr$cs8eZdZdZddœfdd ZeddœddƒZZS) ÚMasterDeviceError)Ú_masterÚ MasterDevice)Úmastercstƒ d¡||_dS)Nzmaster device error)r'r(r1)r*r3)r+r r!r(4s zMasterDeviceError.__init__)r,cCs|jS)N)r1)r*r r r!Údevice8szMasterDeviceError.device)rrrr#r(r.r4r/r r )r+r!r01sr0c@eZdZdZd#eeeeedœddZeedœdd „ƒZ eedœd
d ƒZ
eedœd d
ƒZ eeedœddƒZ e
eeefddœddƒZeeddœddƒZeeddœddƒZddZddZddœddZdd „Zd!d"„ZdS)$ÚDeviceLibraryVersion)Ú_majorÚ_minorÚ_patchÚ_markrN)ÚmajorÚminorÚpatchÚmarkcCs||_||_||_||_dS)N)r6r7r8r9)r*r:r;r<r=r r r!r(YszDeviceLibraryVersion.__init__)r,cCs|jS)N)r6)r*r r r!r:eszDeviceLibraryVersion.majorcCs|jS)N)r7)r*r r r!r;iszDeviceLibraryVersion.minorcCs|jS)N)r8)r*r r r!r<mszDeviceLibraryVersion.patchcCs|jS)N)r9)r*r r r!r=qszDeviceLibraryVersion.mark)Újsonr,cCs<t|tƒr| |¡St|tƒr(| |¡Stdt|ƒƒdS)Nzunknown version expression : )Ú
isinstancer-Ú
_value_of_strÚdictÚ_value_of_jsonÚ RuntimeErrorÚ _truncate)Úclsr>r r r!Úvalue_ofus




zDeviceLibraryVersion.value_of)Úexprr,c
Ct d|¡}|dkr td|ƒyJt| d¡ƒ}t| d¡ƒ}| d¡}|dk rZt|ƒ}nd}| d¡}Wn0tk
}ztd|ƒ|Wdd}~XYnXt||||ƒSdS)NzA(?P<major>\d+)\.(?P<minor>\d+)(\.(?P<patch>\d+))?(-(?P<mark>.+))?z,illegal device library version expression : r:r;r<rr=)ÚreÚmatchrCÚintÚgroupÚ
ValueErrorr5)rGÚmr:r;r<r=Úer r r!r@s  

 z"DeviceLibraryVersion._value_of_strcCsPt|dtdƒ}t|dtdƒ}t|dtdddd}t|dtddd }t||||ƒS)
Nr:Úversionr;r<Tr)ÚnullableÚdefaultr=)rP)Ú_getrJr-r5)r>r:r;r<r=r r r!rB˜s
z#DeviceLibraryVersion._value_of_jsoncCsd|jd|jd|jS)é
é)r6r7r8)r*r r r!Ú__hash__¡szDeviceLibraryVersion.__hash__cCs2t|tƒsdS|j|jko0|j|jko0|j|jkS)NF)r?r5r6r7r8)r*Úotherr r r!Ú__eq__¤s

  zDeviceLibraryVersion.__eq__)rWcCsL|j|jkr|j|jkS|j|jkr0|j|jkS|j|jkrH|j|jkSdS)NF)r6r7r8)r*rWr r r!Ú__lt__®s      zDeviceLibraryVersion.__lt__cCs*d|j|j|j|jdk r"d|jndfS)Nz
%d.%d.%d%sz-%sÚ)r6r7r8r9)r*r r r!Ú__str__·szDeviceLibraryVersion.__str__cCst|ƒS)N)r-)r*r r r!Ú__repr__»szDeviceLibraryVersion.__repr__)rN)rrrr#rJrr-r(r.r:r;r<r=Ú classmethodrÚJSONrFÚ staticmethodr@Ú JSON_OBJECTrBrVrXrYr[r\r r r r!r5=s* 

 r5c@eZdZUdZded<dZeeeeeedœddZeedœdd „ƒZ eedœd
d ƒZ
eedœd d
ƒZ eedœddƒZ eedœddƒZ
eedœddƒZeedœddZddZddZddZddZdS)ÚDeviceSerialNumberNÚUNKNOWN)Ú_p1Ú_p2Ú_v1Ú_v2Ú_s1Ú_s2)Úmajor_product_numberÚminor_product_numberÚmajor_version_numberÚminor_version_numberÚserial_year_numberÚserial_month_numbercCs(||_||_||_||_||_||_dS)N)rcrdrerfrgrh)r*rirjrkrlrmrnr r r!r(Ös zDeviceSerialNumber.__init__)r,cCs|jS)N)rc)r*r r r!riäsz'DeviceSerialNumber.major_product_numbercCs|jS)N)rd)r*r r r!rjësz'DeviceSerialNumber.minor_product_numbercCs|jS)N)re)r*r r r!rkòsz'DeviceSerialNumber.major_version_numbercCs|jS)N)rf)r*r r r!rlùsz'DeviceSerialNumber.minor_version_numbercCs|jS)N)rg)r*r r r!rmsz%DeviceSerialNumber.serial_year_numbercCs|jS)N)rh)r*r r r!rnsz&DeviceSerialNumber.serial_month_numbercCs|j|j|j|j|j|jgS)N)rcrdrerfrgrh)r*r r r!Úas_jsonszDeviceSerialNumber.as_jsoncCs d|j|j|j|j|j|jfS)Nz%d.%d/%d.%d/2%03dy%02d)rcrdrerfrgrh)r*r r r!r[szDeviceSerialNumber.__str__cCst|ƒS)N)r-)r*r r r!r\szDeviceSerialNumber.__repr__cCs\d}|d|j}|d|j}|d|j}|d|j}|d|j}|d|j}|S)NrSé)rirjrkrlrmrn)r*Úretr r r!rVszDeviceSerialNumber.__hash__cCsz||kr dS||jks ||jkr$dSt|tƒs2d|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j|jkS)NTF) rbr?rarirjrkrlrmrn)r*rWr r r!rX"s
     zDeviceSerialNumber.__eq__)rrrrbÚ__annotations__r#rJr(r.rirjrkrlrmrnr ror[r\rVrXr r r r!ra¿s2
  rac@seZdZdZeejeedœddƒƒZ eeje
dœddƒƒZ eeje dœddƒƒZ
eejedœd d
ƒƒZeeje
dœd d ƒƒZeeje
dœd
dƒƒZeejeedœddƒƒZeejeedœddƒƒZeejeedœddƒƒZedœddZddœddZdS)Ú
DeviceInfor )r,cCsdS)Nr )r*r r r!Ú device_id<szDeviceInfo.device_idcCsdS)Nr )r*r r r!Ú device_nameBszDeviceInfo.device_namecCsdS)Nr )r*r r r!Ú
serial_numberHszDeviceInfo.serial_numbercCsdS)Nr )r*r r r!Ú mac_addressNszDeviceInfo.mac_addresscCsdS)Nr )r*r r r!Ú library_nameTszDeviceInfo.library_namecCsdS)Nr )r*r r r!Úlibrary_version^szDeviceInfo.library_versioncCsdS)Nr )r*r r r!ÚbatteryhszDeviceInfo.batterycCsdS)Nr )r*r r r!ÚparentpszDeviceInfo.parentcCsdS)Nr )r*r r r!Úrecording_file_namexszDeviceInfo.recording_file_namec
Csfy
|j}Wnd}YnXy
|j}Wnd}YnX|j|jt|jƒ|j ¡|||j|j |j
dœ S)unknown) rtruÚdevice_addressrvrxryrzr{r|) rxryrtruÚlistrwrvrorzr{r|)r*rxryr r r!ros"



zDeviceInfo.as_json)r4cCsD|jdks|j|jkoB|jdks,|j|jkoB|j|jkoB|j|jkS)N)rtrurvrw)r*r4r r r!rIs zDeviceInfo.matchN)rrrr#r.ÚabcÚabstractmethodrrJrtr-rurarvrrwrxryrzrAr{r|r`rorIr r r r!rs9s<rs)Ú metaclassc
eZdZUdZdZdZdZeeeefZdZde d<dZ
ddedddddfe e e
ee e e e e e ee ee ee e e edœ d d
Zee ed œd d
ƒZee e d œddƒZee
d œddƒZeed œddƒZee e d œddƒZee e d œddƒZee ed œddƒZee ed œddƒZee e d œddƒZee ed œddƒZee d œd d!„ƒZeje d"œd#d!„ƒZfd$d%„Ze edd&œd'd(„ƒZ!d)d*„Z"d+d,„Z#d-d.„Z$d/d0„Z%‡Z&S)1ÚDeviceResponseInfor}Z not_foundZscannedZ connectedNrb) Ú
_device_idÚ _device_nameÚ_serial_numberÚ _mac_addressÚ
_library_nameÚ_library_versionÚ_statusÚ_batteryÚ_parentÚ_recording_file_nameÚ
_addr_type) rurvrwrxryÚstatusrtrzr{r|Ú addr_typec Csˆ|dkr|j}n||jkr&td|ƒ|dkr4tƒ|dkrBtƒ||_||_||_||_||_||_ ||_
||_ | |_ |
|_
| |_dS)Nzillegal status : )ÚSTATUS_UNKNOWNÚSTATUSrLrCr„r…r†r‡r‰rr) r*rurvrwrxryrrtrzr{r|rr r r!r(Ès&

 zDeviceResponseInfo.__init__)r,cCs|jS)N)r„)r*r r r!rtëszDeviceResponseInfo.device_idcCs|jS)N)r…)r*r r r!ruïszDeviceResponseInfo.device_namecCs|jS)N)r†)r*r r r!rvósz DeviceResponseInfo.serial_numbercCs|jS)N)r‡)r*r r r!rw÷szDeviceResponseInfo.mac_addresscCs|jS)N)rˆ)r*r r r!rxûszDeviceResponseInfo.library_namecCs|jS)N)r‰)r*r r r!ryÿsz"DeviceResponseInfo.library_versioncCs|jS)N)r)r*r r r!rzszDeviceResponseInfo.batterycCs|jS)N))r*r r r!r{szDeviceResponseInfo.parentcCs|jS)N)r)r*r r r!r| sz&DeviceResponseInfo.recording_file_namecCs|jS)N))r*r r r!rszDeviceResponseInfo.addr_typecCs|jS)N))r*r r r!Ú
device_statussz DeviceResponseInfo.device_status)ÚvaluecCs
||_dS)N))r*r”r r r!r“scstƒ ¡}|j|d<|S)Nr)r'ro)r*rq)r+r r!ros

zDeviceResponseInfo.as_json)Úaddressr,cCstdtj|ƒS)N)rarb)rEr•r r r!Ú
address_of szDeviceResponseInfo.address_ofcCst|ƒS)N)r-)r*r r r!r\&szDeviceResponseInfo.__repr__cCsd|jt|jƒt|jƒf}|jdk rR|jdk r@|jd|jnd}d|d}nd}|jdkrfd}n
t|jƒ}d|||j |fS)Nz%s,%s,%sú-rZú]z???zDeviceResponseInfo[%s]%s:%s[%s])
r…rr‡r-r†rˆr‰ryr)r*Ús1Ús2Zs3r r r!r[)s


zDeviceResponseInfo.__str__cCsDt|jƒ}|dt|jƒ}|dt|jƒ}|dt|jƒ}|S)Nrp)Úhashr…r†r‡r)r*rqr r r!rV:s

zDeviceResponseInfo.__hash__cCs>||kr dSt|tƒsd|j|jko<|j|jko<|j|jkS)NTF)r?rurvrw)r*rWr r r!rXBs
  zDeviceResponseInfo.__eq__)'rrrrÚSTATUS_NOT_FOUNDÚSTATUS_SCANNEDÚSTATUS_CONNECTEDrrbrrr#rr-rarrJrAr(r.rtrurvrwrxryrzr{r|rr“Úsetterror]rr\r[rVrXr/r r )r+r!žs\
  F c@seZdZdZdZdZdZdZdZdZ dZ
dZ dZ d Z
d
ZdZdZdZdZd Zd ZdZdZdZdZd Zd
ZeedœddƒZeeedœddƒZdS)ÚDeviceInstructioné0éÀépéðéé é@éé`é éPéÿÿÿÿr )Úins_typecCs,||j|j|j|jfkr(tdt|ƒƒdS)Nzunknown instruction type : )ÚTYP_RISÚTYP_VISÚTYP_CISÚTYP_IISrLr-)rEr r r!Úvalid_ins_type¾sz DeviceInstruction.valid_ins_type)r,cCs:|dkr|jS|dkr|jS|dkr*|jStd|ƒdS)NZRISZVISZCISzunknown instruction type : )rC)rEr r r!Úget_instruction_typeÃsz&DeviceInstruction.get_instruction_typeN) rrrÚVIS_RSTÚVIS_DEVICE_DETECTÚVIS_DEVICE_DONEÚ VIS_CC_ZEROZVIS_ASKÚVIS_STIÚVIS_FUHÚVIS_INTÚVIS_CALÚCIS_VOLTZCIS_LEDZCIS_CALIÚ CIS_VERSIONZCIS_RFZCIS_ASÚ
VIS_STARTRÚ
VIS_STARTSÚ VIS_STOPRÚ VIS_STOPSr²r#r]rJr-r´r r r r!Us8!c@s|eZdZdZdZdZdZdZdZdZ dZ
d Z d
Z d Z
d Zd
ZdZdZdZeeeeeegZdZeeeedfdœddZdS)ÚDeviceCommonInstructionÚresetÚstartÚ interruptÚcloseÚflushÚcallÚrecordZ
record_allZ stimulateZ stop_recordZstop_stimulater¶r¸r .)Ú instructionr,cC||jkrdS||jkrdS||jkr*dS||jkr8dS||jkrFdS||jkrTdS||jkrbdS||jkrpdS||jkr~dS||j krŒd S||j
kršd S||j kr¨d
S||j kr¶d S||j
krÄd S||jkrÒd
S||jkrâdSdSdS)N)z _sync(False)z_notify(False)rµ)z_data_format("TDC4VAF2")z
_notify(True)r¹z _sync(True))z _sync(False)z_notify(False)r»)))))r¸)r¿))))))ÚRESETÚSTARTÚ INTERRUPTÚCLOSEÚFLUSHÚCALLr¶r¸ÚRECORDÚ
RECORD_ALLÚ STIMULATEÚ STOP_RECORDÚSTOP_STIMULATEr½)rEr r r!Ú__new__èsB














 zDeviceCommonInstruction.__new__N)rrrr¸ÚALLr#r-rrr×r r r r!Ïs&c@seZdZdZdZdS)Ú
DeviceFeaturerrN)rrrZBATTERYÚ CALIBRATIONr r r r!
scs$eZdZeedœfdd ZZS)ÚDeviceFeatureUnsupportedError)rtÚfeaturecstƒ d||f¡dS)Nz0device [%d] do not support feature code : 0x%04X)r'r()r*rt)r+r r!r(sz&DeviceFeatureUnsupportedError.__init__)rrrrJr(r/r r )r+r!sc@sFeZdZdZeedœddƒZeedœddƒZeedœddƒZee dœd d
ƒZ
e j e
dœd d ƒZeed
œddZedœddZe j ee
dœddƒZe j eeedœddƒZeedœddƒZeedœddƒZddZedœdd „Zed!œd"d#„Zed!œd$d#„Zee