具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则在说明书的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本发明实施例的移动终端的示意图。如图1所示,本发明实施例的通信***包括移动终端包括至少一个处理器11;以及,与至少一个处理器11通信连接的存储器12;以及,与扫描装置通信连接的通信组件13;以及,至少一个卡槽,用于承载全球用户识别卡14(USIM,Universal Subscriber Identity Module);通信组件13在处理器11的控制下与USIM进行交互;其中,存储器12存储有可被至少一个处理器11执行的指令,指令被至少一个处理器11执行以实现本发明实施例的通信方法。
进一步地,移动终端为可以智能手机、平板电脑、可穿戴设备以及其它可以承载USIM的任何其他类型的电子计算设备。
进一步地,USIM是UICC(Universal Integrated Circuit Card,通用集成电路卡)上的一种应用。USIM包括用户签约信息、鉴权信息、付费方式、用户短消息等。USIM用于通用移动通信***(UMTS,Universal Mobile Telecommunication System)网络中,即WCDMA(Wideband Code Division Multiple Access,宽带码分多址)网络中。当终端(包括电路交换功能和分组交换功能)要使用WCDMA业务时,需要使用USIM。
进一步地,USIM主要包括下列信息:
国际移动用户标识(IMSI,International Mobile Subscriber Identity)。IMSI是分配给每个用户的唯一标识,该标识对用户来说是不可见的,而对网络来说是可见的。IMSI作为用户标识用于鉴权目的。在IP多媒体子***(IMS,IP Multimedia Subsystem)中其私有用户标识等价于IMSI。
移动用户ISDN号码(MSISDN,Mobile Subscriber ISDN Number):在该域中存储了分配给用户的一个或者多个电话号码。
加密密钥(CK,Cipher Key)和完整性密钥(IK,Integrity Key):这些密钥用于空中接口中数据的加密和完整性保护。USIM单独存储在电路域和分组域使用的密钥。
短消息(SMS,Short Message Service):USIM可以存储短消息以及相关的数据,例如发送者、接收者、状态等。
短消息参数:该域用于存储与SMS业务有关的配置数据,例如SMS中心地址、支持的协议等等。
多媒体消息业务(MMS,Multimedia Message Service)用户连接性参数:该域用于存储与MMS业务相关的配置数据,例如MMS服务器地址、MMS网关地址。
MMS用户优选信息:该域用于存储与MMS业务有关的用户优选信息,例如发送报告标志、优先级、到期信息等。
进一步地,图2是本发明实施例的USIM的文件结构的示意图。如图2所示,USIM的文件结构为树形结构,包括MF(Master File,主文件)、EF(Elementary File,基本文件)、EFPL(language preference EF,语言选择文件)、DFTELECOM(TELECOM EF,电信目录)、EFICCID(Integrate circuit card identity EF,IC卡的唯一识别号码)、EFDIR(diretory EF,目录文件)DF(Dedicated File,专用文件)和ADF(Application DF,应用专用文件)。
其中,MF为根目录,所有非ETSI(European Telecommunications StandardsInstitute,欧洲电信标准化协会)GSM(Global System for Mobile Communications,全球移动通信***)协议中规定的应用文件由各厂家自行定义在根目录下(如:PIN1,PIN2…)。每个USIM卡只有一个唯一的主文件,其他所有文件都是它的子孙,主文件只有文件头,用于存放USIM卡的控制和管理信息。
DF为专用文件,也只有一个文件头,用于存放整个目录的管理控制信息,专用文件相当于一个目录的根。
ADF为特殊的专用文件目录,包括应用所有的专用目录文件和基本文件。
EF是集成电路卡文件***中的基本文件,用来存储数据,相当于计算机中的文件。既有文件头,也有文件体,文件头存放该文件的位置和控制信息,文件体存放真正的数据,USIM中只有基本文件有文件体,也只有基本文件才用来存放数据。
EFPL包括一种或多种语言的编码。这些信息由用户/运营商确定,按优先权的顺序定义了首选语言。
EFICCID是USIM的唯一识别号,包含运营商、卡商、发卡时间、省市代码等信息。
DFTELECOM包括测试文件(EFTEST)、缩位拨号(EFADN)和短消息(EFSMS)等。其中,缩位拨号和短消息的记录个数为最低配置要求。
EFDIR包括应用标识符(AID,application identifier)和应用标签作为必选项。USIM应用通过AID选择方式进行选择。
进一步地,ADF1和ADF2下的EF1-EFz,以及EF1-EFy可以是EFLI(语言指示)、EFIMSI(国际移动用户识别符)、EFkeys(加密密钥和完整性密钥)、EFUST(USIM服务表)、EFACM(呼叫累计表)等。
进一步地,USIM通过文件标识符(FID,File Identifier)进行文件访问。
具体地,FID用于定位或标识一个特定的文件。在有关文件建立时,设定文件的FID。当前目录的子文件及当前目录的父文件及直接子目录不能具有相同的FID值。FID的串连接就是路径。路径以MF或当前DF开始,以文件本身的标识符为结束。FID的顺序总是从上级目录到子目录。
进一步地,在UICC激活并且返回复位应答(ATR,Answer To Request)后,根目录被默认为当前目录。利用“SELECT(选择)”功能,选择文件。
任何应用的专用命令都应仅在该应用是当前目录时才可操作。
下列文件可以从最后选中的文件通过FID引用被选中:任何当前目录的直接子文件;任何当前DF的父目录的直接子目录;当前目录的父目录;当前DF或ADF;MF。
图3是现有技术的通信***的示意图。如图3所示,现有技术中的通信***包括多个功能模块和USIM。本实施例以四个功能模块31a-31d为例进行说明。
具体地,LTE/NB-IOT等移动终端在进行通信过程中需要多次与USIM进行交互,获取用户信息,与网络进行双向认证之后,接入网络,与网络进行通信。多个功能模块都可能去查询USIM信息,每个模块各自与USIM进行交互,以获取USIM信息。
具体地,以功能模块需要进行读写操作为例进行说明。如图2所示,USIM应用中的文件结构目录,一般是文件路径是MF-DF-EF,也有部分的EF直接存在于MF根目录下。对于USIM应用来说,EF一般存在于ADF目录下。想要获取或更新某个EF文件内容,首先要进入该文件所在目录,然后再对EF进行相应操作。所在目录不同,可选择的文件权限不同。下列文件可以从最后选中的文件通过FID引用被选中:任何当前目录的直接子文件;任何当前DF的父目录的直接子目录;当前目录的父目录;当前DF或ADF;MF。其他的情况则需要重新进入相应目录才能选中文件。
具体地,图4是现有技术的功能模块与USIM的数据交互的流程图。如图4所示,现有技术中功能模块在进行写文件操作时包括如下步骤:
步骤S401、功能模块选择MF(SELECT MF)。
步骤S402、USIM发送状态字节(status bytes)。
步骤S403、功能模块发送获取响应(GET RESPONSE)。
步骤S404、USIM向功能模块回复文件内容和状态字节。
步骤S405、功能模块选择DF/ADF(SELECT DF/ADF)。
步骤S406、USIM发送状态字节。
步骤S407、功能模块发送获取响应。
步骤S408、USIM向功能模块回复文件内容和状态字节。
步骤S409、功能模块选择EF(SELECT EF)。
步骤S410、USIM发送状态字节。
步骤S411、功能模块发送获取响应。
步骤S412、USIM向功能模块回复文件内容和状态字节。
步骤S413、功能模块读写文件。
步骤S414、USIM发送状态字节。
由此,通过上述步骤S401-S414可以完成写文件操作。
进一步地,在进行读取文件操作时,除上述步骤S401-S414之外,还包括如下步骤:
步骤S415、功能模块发送获取响应。
步骤S416、USIM向功能模块回复文件内容和状态字节。
由此,通过上述步骤S401-S416可以完成读取文件操作。
进一步地,功能模块与USIM交互的一般命令格式是5字节命令头,后面看情况是否附加数据。5字节命令头分别是CLA,INS,P1,P2和Lc。其中,CLA为指令类别;INS为指令码;P1、P2为参数;Lc为数据的长度。对于LTE来说,CLA=0。INS用于区分命令,如SELECT FILE(选择文件)的INS是0xa4,GET RESPONSE命令的INS是0xc0,READ BINARY(读二进制)的INS是0xb0;P1和P2需要根据命令类型来定,Lc代表要传给USIM应用的数据长度。功能模块会先将5字节命令头发给USIM,等USIM回复了一个INS字节之后,再将后续数据发给USIM,USIM再返回status bytes,终端根据status bytes进行后续操作。如果status bytes是0x610xXX,终端就需要通过GET RESPONSE命令来获取0xXX字节的文件信息,从信息中获取EF文件类型和长度信息,用于后续读取/更新文件;若收到状态字0x90 0x00则代表命令完成。
具体地,功能模块先向USIM应用发送选择MF文件的命令,按照上述分两次发给USIM,USIM收到之后会回复状态字节,终端根据状态字节判断是否进行GET RESPONSE。相同地,之后选择DF文件进入DF文件目录,再选择EF,对EF进行读写操作。若连续两个EF的目录相同,第二次操作EF文件时可以直接选择EF,不必再重复进入MF和DF。
但是,如上述图3和图4可知,多个功能模块各自与USIM进行交互会发生冲突,导致USIM收到的命令混乱,无法正常处理并返回正确的文件内容,而且代码逻辑性混乱,不好维护;同时,每次与卡的交互过程会花费一定的时间,通信过程中若多次与USIM进行交互,会降低***运行效率。
图5是本发明实施例的通信***的示意图。如图5所示,本法实施例的通信***包括多个功能模块、控制模块52和USIM。本实施例以四个功能模块51a-51d为例进行说明。其中,功能模块可以与控制模块52进行数据交互,控制模块52可以与USIM进行数据交互。
进一步地,各个功能模块可以是移动终端的各个应用程序(APP,application),或者,同一应用程序中的不同功能的子程序。
进一步地,移动终端在每一次开机后,控制模块52与USIM进行数据交互以获取多个预定的数据包和对应的文件标识。
进一步地,所述数据包为USIM文件,例如,EFDIR,EFICCID和EFPL等。
进一步地,所述文件标识可以是文件标识符FID,也可以是新生成的其它格式的文件标识。
进一步地,每个数据包有一个对应的文件标识,且不同数据包对应的文件标识不同。
进一步地,移动终端在每一次开机后,控制模块52与USIM进行数据交互以获取USIM服务表(EFUST),USIM服务表用于表示所述目标文件标识对应的数据包在USIM中的存在情况。
进一步地,所述数据包为USIM文件。
具体地,以LTE通信***为例,预先设置控制模块需要保存的文件。开机时,控制模块进入MF和ADF之后,记录当前文件目录。首先读取EFUST文件,该文件每个bit会标识相应文件是否存在,例如,bit85标识EFepsloci(EPS location information,ESP位置信息)是否存在,bit20标识EFplmnwact(User controlled PLMN selector with Access Technology,用户控制PLMN选择器与访问技术)是否存在。之后连续读取通信***中所需的其他文件,如EFimsi,EFepsloci和EFplmnwact等,这里所有文件的目录相同,所以后续文件读取不需要进入MF-ADF的过程,查询EFUST发现文件存在后直接选中EF文件进行读取即可,可以多次省略图4中步骤S401-S408,减少与USIM的交互次数。
另外,对于固定长度的文件,可以省略图4中步骤S411-S412,例如EFimsi是固定长度9字节的二进制文件,选择EFimsi命令中设置P2=0x0c,即不需要返回数据,就无需通过GET RESPONSE命令获取文件长度和类型,直接可以用ReadBinary命令去读取9字节文件信息。
进一步地,控制模块的通信方法如图6所示,包括如下步骤:
步骤S610、接收功能模块的发送的操作指令。
在本实施例中,控制模块接收功能模块发送的操作指令。
步骤S620、判断操作指令是否为读取操作指令。
在本实施例中,控制模块判断接收到的操作指令是否是读取操作指令,所述读取操作指令用于读取文件。
进一步地,响应于所述操作指令是读取操作指令,进入步骤S630。
进一步地,响应于所述操作指令不是读取操作指令,进入步骤S1010。
步骤S630、获取目标文件标识。
在本实施例中,响应于接收到功能模块发送的操作指令为读取操作指令,根据所述读取操作指令获取目标文件标识。
步骤S640、在文件包中检测所述目标文件标识。
在本实施例中,控制模块在文件包中检测所述目标文件标识。
进一步地,如上所述,在移动终端开机时,控制模块与USIM进行数据交互以获取所述文件包,所述文件包包括多个预定的数据包和对应的文件标识。
进一步地,所述预定的数据包可以是在读写操作中使用频率较高的USIM文件。
进一步地,响应于在所述文件包中检测到所述目标文件标识,进入步骤S650。
进一步地,响应于在所述文件包中检测到所述目标文件标识,进入步骤S670。
步骤S650、获取数据包。
在本实施例中,控制模块响应于在所述文件包中检测到所述目标文件标识,获取所述目标文件标识对应的数据包。
步骤S660、发送数据包。
在本实施例中,控制模块将所述目标文件标识对应的数据包发送至功能模块。
进一步地,在步骤S640中,控制模块响应于在所述文件包中没有检测到所述目标文件标识后,所述方法还包括如下步骤:
步骤S670、检测数据包在USIM中是否存在。
在本实施例中,控制模块响应于在所述文件包中没有检测到所述目标文件标识,根据USIM服务表检测所述目标文件标识对应的数据包的是否存在与USIM中,所述USIM服务表用于表示所述目标文件标识对应的数据包在USIM中的存在情况。
进一步地,如上所述,所述USIM服务表在移动终端开机时与USIM进行交互获取。
进一步地,响应于根据所述USIM服务表检测到所述目标文件标识对应的数据包存在,进入步骤S680。
进一步地,响应于根据所述USIM服务表检测到所述目标文件标识对应的数据包不存在,进入步骤S690。
步骤S680、从USIM中获取数据包。
在本实施例中,控制模块响应于根据所述USIM服务表检测到所述目标文件标识对应的数据包存在,与USIM进行交互以获取所述目标文件标识对应的数据包。
进一步地,从USIM中获取到数据包后,将所述数据包发送至功能模块。
步骤S690、发送操作失败信息。
在本实施例中,响应于根据所述USIM服务表检测到所述目标文件标识对应的数据包不存在,向功能模块返回操作失败信息。
由此,功能模块在读取文件时,控制模块优先遍历检索已保存的文件信息,如果存在,直接将保存的内容返回给功能模块即可,无需与USIM进行交互。例如,在LTE***中,NAS(Network Attached Storage,网络附属存储)会读取EFimsi内容,AT(Attention,注意)命令也会查询EFimsi内容,两个模块发请求消息给USIM控制模块,USIM控制模块都不需要真正与USIM交互,直接将保存的EFimsi文件内容回复即可,节省时间。
进一步地,与USIM进行交互以获取所述目标文件标识对应的数据包的流程如图7所示,包括如下步骤:
步骤S710、获取当前保存的目录。
在本实施例中,控制模块获取当前保存的目录。
步骤S720、查询所述目标文件标识对应的数据包的目录与当前保存的目录的一致性。
在本实施例中,控制模块查询所述目标文件标识对应的数据包的目录与当前保存的目录是否一致。
可选地,在符合以下条件时,表示目标文件标识对应的数据包的目录与当前保存的目录一致:
所述目标文件标识对应的数据包为任何当前目录的直接子文件时。
所述目标文件标识对应的数据包为任何当前DF的父目录的直接子目录时。
所述目标文件标识对应的数据包为当前目录的父目录。
所述目标文件标识对应的数据包为当前DF或ADF。
所述目标文件标识对应的数据包为MF。
进一步地,以图8所示的文件结构为例进行说明,保存的当前目录与匹配的文件的对应关系如图9所示。
步骤S730、从USIM中获取所述目标文件标识对应的数据包。
在本实施例中,控制模块响应于所述目标文件标识对应的数据包的目录与当前保存的目录一致,从USIM中获取所述目标文件标识对应的数据包。
进一步地,控制模块响应于所述目标文件标识对应的数据包的目录与当前保存的目录不一致,进入步骤S640。
步骤S740、进入对应的目录获取所述目标文件标识对应的数据包。
在本实施例中,控制模块响应于所述目标文件标识对应的数据包的目录与当前保存的目录不一致,按照文件选择权限逐级进入对应的目录获取所述目标文件标识对应的数据包。
由此,即可完成控制模块和USIM的读取操作。
进一步地,在上述步骤S730或步骤S740中,控制模块从USIM中获取到对应的数据包后,进入步骤S660,控制模块将所述目标文件标识对应的数据包发送至功能模块。
由此,如果请求的文件不存在于已保存信息中,根据EFust查询文件存在,则USIM控制模块再与USIM进行交互,再查询请求文件的目录与当前保存的目录是否一致,一致则直接选择目标文件,再进行读/写操作;不一致的话,再按照文件选择权限逐级进入新的文件目录,对目标EF进行读/写操作。
进一步地,对于图6中步骤S620,判断操作指令是否为读取操作指令,响应于所述操作指令不是读取操作指令,进入图10所示的步骤,具体包括:
步骤S1010、判断是否是更新操作指令。
在本实施例中,在步骤S620中,控制模块判断操作指令是否为读取操作指令,响应于所述操作指令不是读取操作指令,判断所述操作指令是否是更新操作指令,所述更新操作指令为写文件操作。
进一步地,响应于所述操作指令是更新操作指令,进入步骤S1020。
进一步地,响应于所述操作指令不是更新操作指令,进入步骤S1110。
步骤S1020、判断是否是即时更新。
在本实施例中,响应于所述操作指令是更新操作指令,控制模块判断更新指令是否是即时更新指令。
进一步地,更新操作的类型包括即时更新和非即时更新。
进一步地,响应于所述更新操作的类型为即时更新,进入步骤S1030。
进一步地,响应于所述更新操作的类型为非即时更新,进入步骤S1040。
步骤S1030、更新所述文件包和USIM中的内容。
在本实施例中,响应于所述更新操作的类型为即时更新,控制模块更新所述文件包中的内容,并更新所述USIM中的内容。
步骤S1040、更新所述文件包中的内容。
在本实施例中,响应于所述更新操作的类型为非即时更新,只更新所述文件包中内容。
步骤S1050、发送通知消息。
在本实施例中,功能模块进行更新操作后,向功能模块发送通知消息。
由此,即可完成USIM和控制模块的更新操作。
进一步地,对于图10中步骤S1010,判断操作指令是否为更新操作指令,响应于所述操作指令不是更新操作指令,表明操作指令为交互操作指令,进入步骤S1110。
步骤S1110、与USIM进行交互。
在本实施例中,响应于操作指令不是读取操作指令,且不是更新操作指令,则将该指令归类为交互操作指令,所述交互指令包括验证PIN(Personal IdentificationNumber,SIM卡的个人识别密码)码、查询USIM状态等指令。
进一步地,响应于所述操作指令为交互操作指令,将所述交互操作指令转换为对应的USIM命令与USIM进行交互。
由此,对于其他命令请求,如验证PIN码,查询USIM状态等,控制模块直接将其转换成相应USIM命令与USIM交互即可。
可选地,所述交互指令包括同步指令。
进一步地,所述方法还包括如下步骤:
步骤S1111、响应于接收到同步指令,根据更新后的文件包中的内容更新USIM中的内容。
在本实施例中,在上述步骤S1040之后,***空闲或者即将关闭时,会给控制模块发送同步指令。同步指令用于指示控制模块将之前仅在文件包中更新的内容同步更新到USIM中,或者,指示USIM控制模块将数据包中未更新到USIM卡中的文件信息更新到卡里。
进一步地,如果是指示USIM控制模块将数据包中未更新到USIM卡中的文件信息更新到卡里,则根据数据包中的文件信息逐个文件去写卡。
由此,更新USIM文件时,如果不是要求即时更新的文件,均只更新控制模块保存的信息,不真正去更新USIM中的文件,等待***空闲时再去真正更新USIM,提高***运行效率;如果需要即时更新,则同时更新控制模块的保存信息与USIM中的文件信息。
本发明实施例将控制与USIM进行交互的部分设计成单独的一个控制模块,处理解析其他功能模块发来的获取或更新USIM信息的消息,将其转化成USIM卡能识别的命令通知USIM应用,然后获取USIM卡回复信息转发给请求方,实现与USIM卡的交互。如此避免了与其他代码耦合到一起,其他模块直接与该功能模块交互,使整个***的功能区分及代码逻辑更清晰,便于管理及维护。
本发明实施例通过在开机时一次性读取通信过程已知需要的文件,优先读取EFust文件,从该文件内容可判断其他文件是否存在于USIM卡,对于不存在的文件就不需要与卡进行交互了。保存读取的文件信息,其他任务来获取文件信息时直接可以从保存的信息中获得,减少与卡的交互次数,节省时间。
本发明实施例在实现读写文件时,对于已知或固定的文件长度,直接进行读写,无需通过GET RESPONSE命令先获取文件信息,缩减了与USIM交互的步骤。
本发明实施例在更新USIM文件时,除了协议规定时间需更新的文件,其他文件更新时均可以先更新到USIM控制模块保存的文件信息中,待空闲时再真正更新到USIM卡中,提高***运行效率。
本发明实施例保存当前文件目录信息,下次读写文件请求到来时,先比较文件目录,若目录相同,则可以直接选中文件,缩减与卡交互的步骤,否则重选进入本次文件的目录之后再进行文件操作。
本发明实施例通过移动终端开机时获取多个预定的USIM数据包和对应的文件标识,在接收到功能模块发送的读取操作指令后,根据操作指令中的目标文件标识在文件包中直接获取对应的数据包,并将目标文件标识对应的数据包发送至功能模块。由此,可以减少功能模块与USIM之间的交互次数,提高通信效率,便于维护。
进一步地,本发明实施例的移动终端包括:一个或多个处理器11以及存储器12,图1中以一个处理器11为例进行说明。处理器11、存储器12可以通过总线或者其他方式连接。存储器12作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器11通过运行存储在存储器12中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述通信方法。
存储器12可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器12可选包括相对于处理器11远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器12中,当被一个或者多个处理器11执行时,执行本发明实施例中的通信方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本发明的另一个实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。