(gddlZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZGddZGd d eZGd d eZGd de ZdS)N)Optional)h2bb2hHexstr) LinkBaseTpdu) ReaderError ProtocolError)ResTupleceZdZddZdZdS) L1CTLMessagerc<tjd|||_dS)NBBxx)structpackdata)selfmsg_typeflagss E/home/jenkins/workspace/simtester-sanitize/pySim/transport/calypso.py__init__zL1CTLMessage.__init__*sK%88 c`tjdt|j|jzS)N!H)rrlenrrs rgen_msgzL1CTLMessage.gen_msg.s#{4TY0049<s> -... V[/// r) rrrr+L1CTL_RESET_INDL1CTL_RESET_CONFL1CTL_RES_T_BOOTL1CTL_RES_T_FULLL1CTL_RES_T_SCHEDr __classcell__r-s@rr"r"2sfOO-0000000000rr"c&eZdZdZdZfdZxZS)L1CTLMessageSIMctt|j|xj|z c_dSN)r*r L1CTL_SIM_REQr)rtpdur-s rrzL1CTLMessageSIM.__init__Is2 +,,, T r)rrrr;L1CTL_SIM_CONFrr3r4s@rr6r6CsDMNrr6ceZdZdZdZejdfdejffd ZdZdd e fd Z d Z d Z d e fdZdZddee defdZde d efdZd efdZedejfdZxZS)CalypsoSimLinkz(Transport Link for Calypso based phones.z Calypso-based (OsmocomBB) readerz/tmp/osmocom_l2) osmocon_sockoptsc l|j}tjdi|tj|st d|ztd|ztjtj tj |_ |j |||_ dS)Nz#There is no such ('%s') UNIX socketz Connecting to osmocon at '%s'...r )r@r*rospathexistsrprintsocketAF_UNIX SOCK_STREAMsockconnect _sock_path)rrAkwargs sock_pathr-s rrzCalypsoSimLink.__init__Rs% ""6"""w~~i(( C5 ACC C 09<===M&.&2DEE  )$$$$rc8|jdSr:)rJclosers r__del__zCalypsoSimLink.__del__cs rexp_lenctj|jgggd\}}}|std|j|}|S)Ng@z!Timeout waiting for card response)selectrJrrecv)rrSs_rsps r wait_for_rspzCalypsoSimLink.wait_for_rspfsS- RS991a CABB BinnW%% rct}|j||}t jd|}|dtjkrtddS)Nz!HBr&zFailed to reset Calypso PHY) r"rJsendrrZr unpack_fromr/r)rreq_msgrYrsp_msgs r _reset_cardzCalypsoSimLink._reset_cardpsz#%% w(()))!!$UC00 1:*; ; ;;<< < < ;rc.|dSr:) reset_cardrs rrKzCalypsoSimLink.connect{s rreturncdS)N3b00r rs rget_atrzCalypsoSimLink.get_atr~svrcdSr:r rs r disconnectzCalypsoSimLink.disconnect rNFtimeout newcardonlycdSr:r )rrjrks r wait_for_cardzCalypsoSimLink.wait_for_cardrirr<ctt|}|j||t jd}t jd|d}|t jdkrtd|j |}t jd|}|dtj krtdt jd}t||krtd||d}|dd}|dd}t|t|fS)Nrrrz'Missing L1CTL header for L1CTL_SIM_CONFz!Unexpected L1CTL message receivedzEmpty response from SIM?!?)r6rrJr\rrZrcalcsizer]rrVr=rr r) rr<r^rYmsg_lenhdroffsetrsws r send_tpduzCalypsoSimLink.send_tpdusL"#d)),, w(())) 5 566$T3//2 V_V,, , ,GHH HinnW%% -- q6_3 3 3ABB B(( s88v   <== =&''l3B3x X4yy#b''!!rcd|jzS)Nz osmocon:%s)rLrs r__str__zCalypsoSimLink.__str__st//r arg_parsercf|dd}|ddddddS)NzOsmocomBB Readera2Use an OsmocomBB compatible phone to access the SIM inserted to the phone SIM slot. This will require you to run the OsmocomBB firmware inside the phone (can be ram-loaded). It also requires that you run the ``osmocon`` program, which provides a unix domain socket to which this reader driver can attach.z --osmoconr@PATHzISocket path for Calypso (e.g. Motorola C1XX) based reader (via OsmocomBB))destmetavardefaulthelp)add_argument_group add_argument)rx osmobb_groups rargparse_add_reader_argsz'CalypsoSimLink.argparse_add_reader_argssZ!445GJ9::  !!+NF\`'r " t t t t tr)rR)NF)rrr__doc__nameargparse NamespacerrQintrZr`rKrrfrhrboolrmr rustrrw staticmethodArgumentParserrr3r4s@rr?r?Ns~22 -D2D(2DRc2d2d2d$$X/$$$$$$"C = = =     Xc]      "f " " " " "D00000tX-Dttt\tttttrr?)rUrrGrCrtypingr osmocom.utilsrrrpySim.transportrpySim.exceptionsrr pySim.utilsr r r"r6r?r rrrsd& **********((((((77777777 ========$00000 000"letetetetet\etetetetetr