h;0dZddlTddlmZmZddlmZmZmZm Z m Z m Z ddlm Z ddlTddlmZddlTGddeZGd d eZGd d eZGd deZeedddddZGddeZGddeZGddeZGddeZGddeZ Gdd eZ!Gd!d"eZ"Gd#d$eZ#Gd%d&eZ$Gd'd(e%Z&Gd)d*eZ'd+S),z The File (and its derived classes) uses the classes of pySim.filesystem in order to describe the files specified in UIC Reference P38 T 9001 5.0 "FFFIS for GSM-R SIM Cards" )*)packunpack)StructInt8ubInt16ubInt24ubInt32ub FlagsEnum)Optional)CardProfileAddonceZdZdZdZdS)FuncNTypeAdapterctt|}t|dd}|ddt|dzt|dzdS)Nfunctional_numberpresentation_of_only_this_fn permanent_fn) swap_nibblesb2hintbool)selfobjcontextpathbcd last_digits 9/home/jenkins/workspace/simtester-sanitize/pySim/gsm_r.py_decodezFuncNTypeAdapter._decode*s`3s88$$R"%% %("X04Z!^0D0D $Z!^ 4 466 6cdS)NFIXMErrrr s r#_encodezFuncNTypeAdapter._encode1swr%N)__name__ __module__ __qualname__r$r*r(r%r#rr)s2666r%rc:eZdZdZdddddddfgZfdZxZS) EF_FNz Section 7.240315801000010ff0104138510000001fTr)functional_number_and_type list_numberctdddddtdtt dz dt z |_dS) N6ff1zEF.FNzFunctional numbers r8fidsfidnamedescrec_lenr3rr4)super__init__rrBytesr _constructr __class__s r#r@zEF_FN.__init__<sg V$W2F  D D D !=>NuUVxx>X>X!X!.v!577r%)r+r,r-__doc__ _test_decoder@ __classcell__rDs@r#r/r/5sq AR04d+M+M]^ a a cL 777777777r%r/ceZdZdZdZdZdS) PlConfAdapterz Section 7.4.3ct|dz}|dkrdS|dkrdS|dkrdS|dkrdS|dkrdS|dkrdSdS) NrNoner2rrrrrr nums r#r$zPlConfAdapter._decodeFsl#hhn !886 !881 !881 !881 !881 !881 8r%c|dkrdSt|}|dkrdS|dkrdS|dkrdS|dkrdS|dkrdSdS)NrMrrr2rOrNrPrQr)s r#r*zPlConfAdapter._encodeUsh &==1#hh !881 !881 !881 !881 !881 8r%Nr+r,r-rEr$r*r(r%r#rJrJCs8        r%rJceZdZdZdZdZdS) PlCallAdapterzSection 7.4.12ct|dz}|dkrdS|dkrdS|dkrdS|dkrdS|dkrdS|dkrdS|d krd S|dkrd SdS) NrLrrMr2rrNrOrPBArQrRs r#r$zPlCallAdapter._decodehs#hhn !886 !881 !881 !881 !881 !881 !883 !883 8r%c|dkrdS|dkrdS|dkrdS|dkrdS|dkrdS|dkrdS|dkrd S|d krd SdS) NrMrrr2rOrNrPrZrYr[rLr(r)s r#r*zPlCallAdapter._encode{sy &==1 !881 !881 !881 !881 !881 #::1 #::1 :r%NrUr(r%r#rWrWes8&r%rW)decision predefinednum_dial_digitsicemptyc @eZdZdZdddddddddd d fgZfd ZxZS) EF_CallconfCz Section 7.30026121ffffffffffff1e000a040a010253600795792426f0rO1612ffffffffffff r2rN350670599742620f) pl_confconf_nrmax_rand n_ack_maxpl_ack n_nested_maxtrain_emergency_gidshunting_emergency_gidimeictdddddtdttz dt t dz d tz d tz d ttz d tz d tz dtz dt t dz |_ dS)N6ff2z EF.CallconfC)ryz3Call Configuration of emergency calls Configuration)r:r;r<sizer=rnrorrprqrrrsrtrurv) r?r@rrJr BcdAdapterrArrWrBrCs r#r@zEF_CallconfC.__init__s V$^(S  U U U =+@+@!@!*:eAhh+?+?!?!+F!2!,W!4!)-*?*?!?!/!6!6v!=!9&!@!' 588(<(>r%r+r,r-rE_test_de_encoder@rGrHs@r#rhrhso <%7RVXAab% ( ( *O > > > > > > > > >r%rhc"eZdZdZfdZxZS) EF_CallconfIz Section 7.5c vtdddddtdtz dtz dt t z d tt d d d z dttdz dttdz |_ dS)N6ff3z EF.CallconfI)rz1Call Configuration of emergency calls Information)r:r;r<r>r=t_dur t_relcalcpl_callcauser2rNrP) powered_offradio_link_error user_commandgcrrfnrr) r?r@rr r rWrr r{rArBrCs r#r@zEF_CallconfI.__init__s V$^XQ  S S S !,W!4!*=+@+@!@!(!*6q<=A"O"O"O"O"'z%((';';!;!&z%((';';!;==r%)r+r,r-rEr@rGrHs@r#rrs> = = = = = = = = =r%rcDeZdZdZddeddfgZfdZxZS) EF_Shuntingz Section 7.603f8ffffff000000rOf8ffffff000000) common_gid shunting_gidctdddddtdtz dt dz |_dS) N6ff4z EF.ShuntingShuntingrrr:r;r<r=rzrrrL)r?r@rrrArBrCs r#r@zEF_Shunting.__init__s\ V$+*6  K K K f!4!/a!8::r%r+r,r-rEh2br}r@rGrHs@r#rrs` aEUAVAVXXZO:::::::::r%rc eZdZdZddddddddddeded ed d fd d ddddddddeded edd fgZfdZxZS) EF_GsmrPLMNz Section 7.722f860f86f8d6f8e01z228-06Tvbsvgcsemlppfneirener) supported preference6f8d6f8e01)plmnclass_of_networkic_incoming_ref_tbloutgoing_ref_tbl ic_table_ref22f810416f8d6f8e02z228-01Fr202ctdddddtdtt dz dt d t td d d d ddz dtdz z dt d z dt d z dt d z |_dS)N6ff5z EF.GsmrPLMNzGSM-R network selectionr7r9rrOrrrPr2rNrrrrrrrr) r?r@r PlmnAdapterrA BitStructr BitsIntegerrBrCs r#r@zEF_GsmrPLMN.__init__s V$]7  I I I  E!HH(=(=!=!3Ik)T_`aTbTbhipqyz@AJLKMKMKM?M>J;WX>>>Y5[5["[!6uQxx!?!3E!HH!W[*.$2A2APQITIT:=VZ]Z]^dZeZe25#d)) !>!> @ (:?Y^*.%2B2BQRIUIU:=VZ]Z]^dZeZe25#d)) !>!> @ O:::::::::r%rcjeZdZdZddeddddfdd ed d d dfgZfd ZxZS) EF_ICz Section 7.8f06f8e40f10001rbr041fr2)next_table_typeid_of_next_tableic_decision_valuenetwork_string_table_indexffffffffffffffrfffffic tdddddtdtz dt dz d t t dz d t z |_dS) NrzEF.ICzInternational Code)rLrLr9rrrNrr)r?r@r NextTableTyperAr{rrBrCs r#r@zEF_IC.__init__s} V$W2F  D D D !2=!@!3E!HH! > >#A,,r%r|rHs@r#rrsOO '''''''''r%rceZdZdZddeddddfdd ed d d dfd deddddfgZdfd ZxZS) EF_Switchingz Section 8.4 f26f87f0ff00rd6f870fffr)rrdecision_valuestring_table_index f06f8ff1ff01rb6f8f1fffr2 f16f89f5ff05rc6f895fffrP1234 SwitchingNc t|d||dtdtz dt dz dt t dz dt z |_dS)N)rYrYr9rrrNrr)r?r@rrrAr{rrBrr:r<r=rDs r#r@zEF_Switching.__init__sx St"v  ? ? ? !2=!@!3E!HH!>r%)rrNrrHs@r#rrs /@VYVYZ`VaVa.4APP R zssSY{{.4APP R |QTQTU[Q\Q\.4APP R O>>>>>>>>>>r%rceZdZdZdddeddfddd d d fgZed ez d edz Z ede edz de z Z dfd Z dededefdZdededefdZxZS) EF_Predefinedz Section 8.5f26f85r2rd6f85)rrf0ffc8rNr)predefined_value1string_table_index1rrrrr PredefinedNcTt|d||ddS)N)rOrOr9)r?r@rs r#r@zEF_Predefined.__init__s9 St"v  ? ? ? ? ?r% raw_bin_data record_nrreturncb|dkrt|j|St|j|SNr2)parse_constructconstruct_firstconstruct_others)rrrs r#_decode_record_binz EF_Predefined._decode_record_bins1 >>"4#7FF F"4#8,GG Gr% abstract_datac d}|dkr|j|}n|j|}t|Sr)rbuildr filter_dict)rrrkwargsrs r#_encode_record_binz EF_Predefined._encode_record_bin%sJ  >>$**=99AA%++M::A1~~r%)rrN)r+r,r-rErr}rrrArr{rrr@bytesrdictr bytearrayrrGrHs@r#rrs5 A,=SVSVW]S^S^``b AfSRRTO f.}</a8::Ov1**UU1XX2F2FF3F:<<??????HH3H4HHHH 3U^r%rcheZdZdZddedddfdded d dfgZdfd ZxZS)EF_DialledValsz Section 8.6ffffff22rfr22)rr dialed_digitsf16f8885rc6f8858r DialledValsNc t|d||dtdtz dt dz dt t dz |_dS)N)rrrrrrNrr2)r?r@rrrAr{rBrs r#r@zEF_DialledVals.__init__3si St$TOOO !2=!@!3E!HH! > > f<M O O O f?E G G G f<< > > > vO I K K K vL 0 2 2 2 vL 0 2 2 2 vL 0 2 2 2 vJ 7 9 9 9 vJ = ? ? ? vM = ? ? ? vO ? A A AM( R ur%)rrr)r+r,r-r@rGrHs@r#rr:s=++++++++++r%rc2eZdZdZfdZdddefdZxZS) AddonGSMRzQAn Addon that can be found on either classic GSM SIM or on UICC to support GSM-R.cntg}tdd|dS)NzGSM-Rz Railway GSM)r= files_in_mf)rr?r@)rrrDs r#r@zAddonGSMR.__init__ks8 KK  }%HHHHHr%cardCardBasercL||jdjS)Nr) file_existsrr:)rrs r#probezAddonGSMR.probeqs! 0 3 7888r%)r+r,r-rEr@rrrGrHs@r#rrise[[IIIII 9*999999999r%rN)(rE pySim.utilsstructrr constructrrrr r r r COptionalosmocom.construct pySim.profiler pySim.filesystemAdapterr LinFixedEFr/rJrWEnumByter TransparentEFrhrrrrrrrrCardDFrrr(r%r#r)s]4JJJJJJJJJJJJJJJJ++++++******     w    7 7 7 7 7J 7 7 7GD&&&&&G&&&RTDT%)d$@@@ >>>>>=>>>, = = = = =: = = = : : : : :- : : ::::::*:::2GGGGGJGGG" ' ' ' ' 'J ' ' '>>>>>:>>>&J< G G G G G] G G G,,,,,,,,^ 9 9 9 9 9 9 9 9 9 9r%