具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。
Secure Digital Memory Card(安全数码卡)简称SD卡(本发明申请文件后文采用SD卡的名称),标准尺寸为32mm×24mm×2.1mm。SD卡结合了SanDisk(闪迪)公司的快闪记忆卡控制与MLC(Multilevel Cell,多层单元)技术和Toshiba(东芝)公司的0.16u及0.13u的NAND(Not AND,与非门)技术,通过9针的接口界面与专门的驱动器相连接。该9针接口界面可以有两种接线方式,分别为安全数字输入/输出方式(Secure Digital Input and Output,简称SDIO)和串行外设接口方式(Serial Peripheral Interface,简称SPI)。图1A所示为SD卡的外型以及9针接口界面示意图。其中9个针脚(pin)的名称、类型和所处理的信号如图1B所示。在SDIO模式下,1号管脚用于传输卡检测信号,并且与9、8、7号管脚一起组成4个比特的数据信号;2号管脚用于传输命令和响应;3号和6号管脚是接地管脚,4号管脚接电源,5号管脚接时钟信号。在SPI模式下,1号管脚用于芯片选定,2号和7号管脚分别用于数据的输入和输出,3号和6号管脚是接地管脚,4号管脚接电源,5号管脚接时钟信号。图1A中所示的WP(Write Protect,写保护)端子可以为物理开关结构,用于设置或解除设置SD卡的写保护功能,其具体结构和工作原理是公知的,此处不做赘述。SD卡因其轻便小巧的结构特性,在数码相机,手机以及MID(Mobile Internet Device,移动互联网设备)等终端设备上应用非常广泛。除标准SD卡外,尺寸为15mm×11mm×1mm的微型安全数码卡(Micro SecureDigital Memory Card,简称MicroSD,也可称为Trans Flash卡或TF卡)以及尺寸为21.5mm×20mmx1.4mm的Mini SD卡(迷你SD卡)也得到了广泛的应用。并且,通过适配器的连接,MicroSD卡或Mini SD卡也可以插接在终端设备的标准SD卡槽中使用。
本发明实施例所提供的技术方案,就是将无线上网模块集成在标准SD卡中,或者集成在MicroSD卡或Mini SD卡中。这种采用标准SD卡或者MicroSD卡或Mini SD卡中,采用安全数码接口的无线上网模块,可以作为一种数据卡的产品形态。由于通过适配器的连接,MicroSD卡或Mini SD卡也可以插接在终端设备的SD卡槽中使用,后文将以标准SD卡为例来说明本发明实施例的技术方案。而对于在MicroSD卡或Mini SD卡中集成无线上网模块的方案,可以参考标准SD的方式实现。为了叙述的方便,在不明确区分的情形下,后文的SD卡指标准尺寸的SD卡。
如图2所示,为本发明实施例提供的一种无线上网模块200,该模块包括:安全数码卡接口子模块201、无线上网处理子模块202;所述无线上网处理子模块202通过所述安全数码卡接口子模块201与用户终端进行信息交互。
其中,该无线上网模块200通过安全数码卡槽或微型安全数码卡槽插入用户终端,就可以建立无线连接。用户可以通过用户终端无线上网,或通过无线网络传送照片等。
所述无线上网模块200可以是如图1A所示的SD卡的形态,其中所述的安全数码卡接口子模块201在外部形态上即图1A所示的9个针脚。其接线方式可以是SDIO方式,也可以是SPI方式。具体的针脚信号在图1B中已经有所介绍。此外,这两种方式下各管脚的在SD卡内的布线方式和驱动方式也都是成熟的现有技术,对于本领域普通技术人员来说是公知的,此处不再赘述。
所述无线上网处理子模块202的一种实施方式可以如图3所示,包括:天线301、射频处理单元302、SIM(Subscriber Identity Module,移动用户识别卡)单元303和基带处理单元304。
其中,所述天线301,用于将接收到的无线信号传输给所述射频处理单元202,或者将射频处理单元302的发射信号转换为电磁波,发送出去。
需要注意的是,所述天线301可以设置在所述无线上网模块的主板内,例如:可以将所述天线301铺设在所述无线上网模块的主板上,如图4所示,天线301位于无线上网模块的另一端,即天线301和安全数码卡接口分别位于无线上网模块的两端。或者,还可以将所述天线通过所述无线上网模块的主板触点连接到所述射频处理单元。
还需要说明的是,所述铺设天线处,可以保留一定的区域禁布元器件。
所述射频处理单元302,用于对所述天线301接收到的无线信号进行选频、放大、下变频处理,并将其转换成中频信号或基带信号发送给所述基带处理单元304,或者,用于将所述基带处理单元304发送的基带信号或中频信号经过上变频并适当放大通过所述天线301发送出去。
所述移动用户识别卡单元303,用于存储用户参数信息;其中,所述用户参数信息可以包括:数字移动电话客户的信息,加密的密钥等内容,可供网络客户身份进行鉴别,并对客户通话时的语音信息进行加密。
需要注意的是,所述移动用户识别卡单元可以由SIM晶元(die)通过封装技术封装而成。
所述基带处理单元304,用于根据所述移动用户识别卡单元303所获取的参数信息以及无线标准协议要求,对接收到的所述中频信号或基带信号进行处理;或者,接收来自安全数码卡接口子模块201的数据信息;将所述数据信息进行数据识别;如果所述数据信息中包括传输控制命令,则将其通过传输控制命令端口发送;如果所述数据信息中包括传输网络报文,则将其通过传输网络报文端口发送。
需要注意的是,该无线上网处理子模块202还可以包括:电源管理单元305和存储单元306;
所述电源管理单元305,用于将所述用户终端的电源电压转化为所述基带处理单元304、所述存储单元306、所述射频处理单元302、所述移动用户识别卡单元303所需的电压,以便为所述各个单元提供电源。
所述存储单元306,用于存储通过所述基带处理单元304处理所获取到的传输网络报文和无线上网模块运行所需要的应用程序。
从上面的描述可以看出,在将所述无线上网模块200集成在SD卡上后,所述无线上网模块200与PC的交互只能通过SD卡的接口完成,即采用SDIO或SPI方式完成。然而,在现有技术中,由于PC上的SD卡插槽只能识别特定的命令,是无法完成所述无线上网模块200与PC的信息交互的。
为了解决这一技术问题,本发明实施例进一步提出了以下技术方案。请参之间的通信和交互提供翻译,建立桥梁。
所述适配单元505是软件单元,也可以是硬件单元。但本发明实施例优选以软件方式实现。如果所述适配单元505是软件单元,则其可以安装在所述无线上网处理子模块202的存储单元306中,或者也可以安装在所述安全数据卡接口子模块201中的用于存储驱动程序的存储单元中,或者在所述的无线上网模块200中单独开辟一个存储空间用来安装所述适配单元505的软件。所述适配单元505用于:将所述无线上网处理功能单元502上的各端口模拟成为SD卡分区,通过所述安全数码接口功能单元501上报给主机侧;通过所述安全数码接口功能单元501接收将来自主机侧的以SD卡接口格式封装的下行交互信息,将该以SD卡接口格式封装的下行交互信息解封装后,将相应的下行交互信息按照所述无线上网处理功能单元的接口格式下发给各端口;将各端口以所述无线上网处理功能单元的接口格式向主机侧上报的上行交互信息,按照SD卡接口格式封装后,通过所述安全数码接口功能单元501发送给主机侧。所述下行交互信息可以是主机侧下发给所述无线上网处理子模块202的各端口的命令或数据,或者是所述无线上网处理子模块202的各端口向主机侧上报的数据或响应。可以理解的,所述适配单元505在实现上可以包括安全数码卡分区信息生成子单元,用于获取所述无线上网处理功能单元的各端口的配置信息,并根据所述配置信息,生成与各端口分别对应的安全数码卡分区信息;安全数码卡分区信息上报子单元,用于按照安全数码卡的初始化流程与主机侧交互,上报所述安全数码卡分区信息给主机侧;安全数码卡分区映射子单元,用于把生成的分区分别映射到所述无线上网处理功能单元的对应端口上。进一步的,所述适配单元505还可以包括解封装子单元,用于解析所述安全数码卡接口功能单元接收的来自主机侧的小型计算机系统接口SCSI写请求命令的数据包或者SCSI读请求命考图5。图5所示为所述无线上网模块200的功能结构示意图。安全数码卡接口功能单元501是所述安全数码卡接口子模块201上的软件功能单元,用于通过现有的SD卡的9针接口界面,可以采用现有的SDIO或者SPI方式与主机侧通信。这一功能单元在现有的SD卡中是已经存在的。无线上网处理功能单元503是所述无线上网处理子模块202上的软件功能单元,可以采用现有的方式实现无线上网功能。具体的,其中可以包括数个端口,例如,如图所示,可以分别为设备管理端口5031,Modem(调制解调)端口5033和其他功能端口5035。所述设备管理端口5031用于根据来自主机侧的设备管理命令和/或数据,对所述无线上网处理子模块202进行管理;所述Modem端口5033用于根据来自主机侧的调制解调命令和/或数据,实现拨号上网以及数据报文传输等无线上网功能;所述其他功能端口5035用于根据来自主机侧的其他命令和数据,实现其他功能,例如网卡功能、GPS功能等,本发明实施例不做限定。如前所述,在本发明实施例中,所述安全数码卡接口功能单元501和所述无线上网处理功能单元503均可以采用现有的技术方案来实现。当然,本发明实施例也不排除可以对这两个功能单元单独进行改进,以提高其各自的功能或效率。
当所述安全数码卡接口功能单元501和所述无线上网处理功能单元503采用现有的技术方案来实现,或者虽然对这两个功能单元或者其中的一个功能单元进行了改进,但没有改变其与其他的功能单元的通信接口的情形下,采用本发明实施例前述提到的方案,将所述无线上网处理子模块202集成在SD卡接口的无线上网模块200中,并通过所述安全数码卡接口子模块201与主机侧进行交互的情形下,由于所述无线上网处理子模块202的通信接口与所述安全数码卡接口子模块201的通信接口不同,就需要在两个功能模块之间插入一个适配单元505,以为所述无线上网处理子模块202与所述安全数码卡接口子模块201令的数据包;写端口子单元,用于将所述解封装子单元解析出的SCSI读请求命令的数据包中的命令或者数据,写入所述无线上网处理功能单元的相应端口;读端口子单元,用于根据所述解封装子单元解析出的SCSI读请求命令的数据包中的读命令,从所述无线上网处理功能单元的相应端口读取数据包;封装子单元,用于将所述读端口子单元从所述无线上网处理功能单元的相应端口读取的数据包封装为SCSI读请求命令的响应数据包,并通过所述安全数码卡接口功能单元上报给主机侧。
所述适配单元505将所述无线上网处理功能单元502上的各端口模拟成为SD卡分区,通过所述安全数码接口功能单元501上报给主机侧的具体流程的一个示例可以参考图6。
步骤601、适配单元505检测到安全数码卡接口功能单元501与主机侧建立连接。所示适配单元505可以是检测到其所在的无线上网模块200与主机侧建立电连接,即判定所述安全数码卡接口功能单元501与主机侧建立连接。在实际使用中,SD卡接口的无线上网模块200插入主机侧的SD插槽或是读卡器中,即可通过9针接口中的第4管脚与主机侧建立电连接。此时,所述适配单元505可以检测到该无线上网模块200已经上电,即可判定安全数码卡接口功能单元501与主机侧建立连接。
步骤602、适配单元505获取无线上网处理功能单元503的各端口的配置信息,并根据所述配置信息,生成与各端口分别对应的SD卡分区信息。所述配置信息例如可以包括端口的个数,端口的类型和端口的排列顺序等。所述SD卡分区信息为SD卡本身的分区规范的信息。
步骤603、适配单元505按照标准的SD卡的初始化流程与主机侧交互,上报所述SD卡分区信息给主机侧。
步骤604、适配单元505把生成的分区分别映射到无线上网处理功能单元503的对应端口上,并为各端口分配对应的缓存区。所述缓存区用于存储主机侧与各端口之间的上行交互信息和/或下行交互信息,至少应当用于存储上行交互信息。可以理解的,所述缓存区可以是在所述无线上网模块上的,此时所述无线上网模块还包括存储单元。
如前所述的,所述SD卡接口的无线上网模块200上的适配层505会向主机侧上报SD卡的分区,各分区实际是所述无线上网模块200上的无线上网处理功能单元503的各端口,例如设备管理端口5031,Modem端口5033等。与之相对应的,主机侧需要识别出该SD卡接口的无线上网模块200为无线上网设备,才能使主机侧的应用层软件使用到该无线上网模块200的无线上网功能。以下以所述主机为PC为例,来说明PC识别所述插接在SD卡插槽或读卡器中的设备为无线上网设备的方法。
在现有技术中,通用的SD卡接口设备的PC侧的驱动结构示意如图7所示。在图7中,SD卡接口设备插入SD读卡器或者SD插槽中。根据主机对SD读卡器或SD插槽的驱动方式不同,可以有两种数据路径,分别为R1和R2。
对于R1,SD读卡器或者SD插槽直接连在USB(Universal Serial BUS,通用串行总线)总线上。数据经过USB总线、Mass Storage(大容量存储器)驱动、SCSI(小型计算机系统接口,Small Computer System Interface)总线的中间层(Midlevel)、Disk(磁盘)驱动,而与应用层软件信息交互。
对于R2,SD读卡器或者SD插槽直接连在MMC(Multi Media Card,多媒体存储卡)/SD总线上。数据经过MMC/SD总线、块媒体驱动、SCSI总线的中间层、Disk驱动,而与应用层软件信息交互。
无论是采用R1还是R2的路径,在现有技术中,主机侧都只能将SD卡接口设备作为存储设备识别并使用。对于插入SD读卡器或者SD插槽的SD卡接口的无线上网模块200来说,采用现有技术的PC驱动结构并不能实现无线上网功能。为此,本发明实施例公开了一种PC侧的驱动结构,请参考图8。
对比图7可知,图8所示的实施例在主机的驱动层增加了一个虚拟总线,以及Modem驱动、串口驱动。可选的,当所述SD卡接口的无线上网模块200还可以支持局域网连接的话,则还可以增加网卡驱动,此时所述无线上网模块200上的其他功能端口5035应当包括网卡功能端口,当然,还可以存在其他功能端口。所述Modem驱动、串口驱动和网卡驱动都可以是所述SD卡接口的无线上网模块200的私有驱动,即专门为该SD卡接口的无线上网模块200开发的驱动,也可以是PC的操作系统中自带的标准驱动。一般来说,如Windows操作系统中可能带有一些通用的外设驱动,如果这些驱动可以识别所述无线上网模块200上的各端口,则可以使用这些驱动。优选的,本发明实施例采用专门的私有驱动。
当SD卡接口的无线上网模块200连接到PC上,所述SD卡接口的无线上网模块200上的适配层505会向主机侧上报SD卡的分区信息。所述SD卡接口的无线上网模块200按照现有技术中的SD卡接口设备的情况加载了Disk驱动后,所述虚拟总线会检测到该SD卡接口的无线上网模块200,并自动加载对应的串口驱动和Modem驱动,为应用层提供虚拟的串口设备和Modem设备。然后通过虚拟总线,这些串口设备和Modem设备会被映射到SD卡接口的无线上网模块200的对应的SD卡分区上。所述通过虚拟总线映射,是指所述虚拟总线的开发者与所述SD接口的无线上网模块200的开发者事先约定了所述SD卡接口的无线上网模块200的分区与各种设备,例如各分区分别与串口设备和Modem设备之间的对应关系的规则。即所述虚拟总线知晓哪一个SD分区是对应的串口设备,哪一个是对应的Modem设备。这样应用层对虚拟的串口设备和Modem设备进行操作,实际上就是对SD卡接口的无线上网模块200的对应分区进行操作。又由于所述SD卡接口的无线上网模块200的各对应分区实际是所述无线上网模块200上的无线上网处理功能单元503的各端口,例如设备管理端口5031,Modem端口5033等,则应用层对虚拟的串口设备和Modem设备进行操作,就是对SD卡接口的无线上网模块200的设备管理端口5031和Modem端口5033进行操作。换言之,就是将应用层与所述串口设备和调制解调设备的通信映射到所述SD卡接口的无线上网模块200的对应的SD卡分区上。此时的主机侧可以看做配置有一个主机通信模块,所述主机通信模块包括安全数码卡接口单元和磁盘驱动单元,还包括虚拟总线单元、串口驱动单元和调制解调驱动单元,所述安全数码卡接口单元用于与安全数码卡接口的无线上网模块建立连接;所述磁盘驱动单元用于建立所述安全数码卡接口单元与所述虚拟总线单元之间的通信连接;所述虚拟总线单元用于接收来自安全数码卡接口的无线上网模块上报的安全数码卡分区信息,使能所述串口驱动单元和调制解调驱动单元;所述串口驱动单元和调制解调驱动单元用于为应用层提供虚拟的串口设备和调制解调设备;所述虚拟总线单元还用于将所述应用层与所述虚拟的串口设备和调制解调设备的通信映射到所述安全数码卡接口的无线上网模块的对应的安全数码卡分区上。所述虚拟总线单元包括映射子单元,所述映射子单元用于按照预定的所述虚拟的串口设备和调制解调设备与所述安全数码卡接口的无线上网模块的对应的安全数码卡分区的对应关系的规则,将所述应用层与所述虚拟的串口设备和调制解调设备的通信映射到所述安全数码卡接口的无线上网模块的对应的安全数码卡分区上。
对于R1路径来说,本发明实施例还提供了另外一种PC侧的驱动结构。请参考图9。从图9可知,本发明实施例在SCSI总线中间层与Disk驱动之间,增加了一个Filter(过滤)驱动。并且在该Filter驱动之上,与Disk驱动并列的,增加了总线驱动,以及相应的串口驱动、Modem驱动,可选的,还有网卡驱动。所述串口驱动、Modem驱动和网卡驱动可以是所述SD卡接口的无线上网模块200的私有驱动,也可以是标准驱动。此处不再赘述。此时的主机侧可以看做配置了另一种主机通信模块,包括安全数码卡接口单元,通用串行总线USB驱动单元,还包括过滤驱动单元和总线驱动单元,其中,所述安全数码卡接口单元用于检测安全数码卡接口的设备的接入并与之建立连接;所述USB驱动单元用于建立所述安全数码卡接口单元与所述过滤驱动单元之间的通信连接;所述过滤驱动单元用于检测所述接入的安全数码卡接口的设备是否是安全数码卡接口的无线上网模块,若是,则接收来自安全数码卡接口的无线上网模块上报的安全数码卡分区信息,并修改所述安全数码卡接口的无线上网模块的硬件身份ID,使能所述总线驱动单元;所述总线驱动单元用于根据所述安全数码卡分区信息创建串口设备和调制解调设备,并加载相应的串口驱动和调制解调驱动,以使应用层通过所述串口设备和调制解调设备与所述安全数码卡接口的无线上网模块的对应的安全数码卡分区建立通信。
采用图9的PC侧的驱动结构时,当SD卡接口的无线上网模块200连接到PC上,所述SD卡接口的无线上网模块200上的适配层505会向主机侧上报SD卡的分区。PC的系统为所述SD卡接口的无线上网模块200加载驱动的过程可以如图10所示。
步骤1001、系统检测到SD卡接口的设备接入。
步骤1002、系统为该SD卡接口的设备加载USB Mass Storage驱动。
步骤1003、系统将过滤驱动加载到USB Mass Storage上。
步骤1004、过滤驱动使用自定义的USB命令查询该设备是否为SD卡接口的无线上网模块。作为一个示例,此自定义USB命令格式可以如下:
Field |
Size(byte) |
Value |
bmRequestType |
1 |
0xc0 |
bRequest |
1 |
0x9a |
wValue |
2 |
0x01 |
wIndex |
2 |
0x00 |
wlength |
2 |
0x0F |
从上面可以看到,该USB命令是一个标准USB命令的格式,其中自定义当bRequest字段的值为0x9a时,为查询该设备是否为SD卡接口的无线上网模块的命令。这一自定义值仅用于作为一个示例,而不是限定。可以采用其他自定义字符作为字段的值来执行这一功能。该查询功能可以由所述过滤驱动单元中包括的查询子模块来实现。
可以设定,SD卡接口的无线上网模块对此命令的返回值为某一特定格式或内容的字符或代码,例如可以是ASCII形式的字符串“HW_SD_DATACARD”;而对于其它设备,由于不支持此自定义命令,则返回值无法表明其是SD卡接口的无线上网模块,例如可以直接返回STALL。
步骤1005、对于返回值无法表明其是SD卡接口的无线上网模块的设备,例如直接返回STALL的设备,所述过滤驱动判定该接入设备不是无线上网模块,直接将其向系统上报为磁盘设备,加载系统自带的Disk驱动。驱动加载过程完成。
步骤1006、对于返回值表明其是SD卡接口的无线上网模块的设备,过滤驱动通过修改其硬件ID(Identity,身份)而为其加载总线驱动。作为一个示例,可以将其硬件ID修改为“HW_SD/VID_12D1&PID_xxxx”的形式。可以理解的,针对无线上网模块的不同端口,可以设置有不同的硬件ID。过滤驱动的开发者与所述SD接口的无线上网模块200的开发者事先约定了所述SD卡接口的无线上网模块200的分区与各种设备,例如串口设备和Modem设备之间的对应关系的规则。即所述过滤驱动知晓哪一个SD分区是对应的串口设备,哪一个是对应的Modem设备。通过修改硬件ID,总线驱动上不再需要维护所述对应关系。这一修改硬件ID的功能可以由所述过滤驱动单元包括的硬件ID修改子模块来实现。可以理解的,所述过滤驱动单元还包括存储设备上报子模块,用于将当所述接入的安全数码卡接口的设备不是安全数码卡接口的无线上网模块时,则将其上报为普通的安全数码卡接口的存储设备。
步骤1007、总线驱动根据所述SD卡接口的无线上网模块200上报的SD卡分区信息创建对应设备,并加载相应的驱动。例如所述总线驱动通过使用标准SCSI命令查询SD接口的无线上网设备的分区数量,并根据分区中的扩展类型信息创建不同的设备对象,从而加载Modem、串口、网卡等不同的驱动。驱动加载过程完成。
采用上述任一方式加载驱动后,应用层的应用软件,例如无线上网模块管理软件,就可以与SD接口的无线上网模块200进行通信了。以采用图8所示的驱动结构为例,在PC侧,所述的通信方法如图11所示。
图11A所示为PC侧向所述无线上网模块200发出命令或者写入数据的方法。例如,所述PC侧的应用层软件通过向所述无线上网模块200的与虚拟串口设备对应的SD卡分区发出命令来管理所述无线上网模块200,或者通过向所述无线上网模块200的与虚拟Modem设备对应的SD卡分区传送数据,从而将所述数据通过所述无线上网模块200的无线上网功能传送到外部网络。
步骤1101、虚拟总线接收来自应用层软件的命令或数据。例如,所述命令可以是前述的应用层软件用来管理所述无线上网模块200的命令,所述数据可以是前述的应用层软件需要通过所述无线上网模块200传送到外部网络的数据。可以理解的,根据所述命令或数据的性质不同,以及当前所述无线上网模块200接入网络的方式的不同,所述命令或数据可以通过串口、Modem口或者网口下发。
步骤1102、将所述命令或数据封装为SCSI写请求命令的数据包。具体的,作为举例,可以是将SCSI命令中用于指示操作类型的字段赋值为与写请求对应的值,并将所述命令或数据所缓存的地址或用于指示该地址的信息与所述写请求命令一起封装,作为所述SCSI写请求命令的数据包。
步骤1103、将所述SCSI写请求命令的数据包经由Disk驱动层发送给无线上网模块200的对应分区接口,所述对应分区为与所述来自应用层软件的命令或数据的功能或性质相对应的分区。按照现有的PC驱动的架构,往SD卡的分区中写数据是由Disk驱动完成的。虚拟总线需要先把需要往所述无线上网模块200的各分区接口中写入的数据包发送给Disk驱动,由所述Disk驱动写入。所述对应分区根据步骤1101中的命令或数据的性质决定。例如,所述命令为应用层软件用来管理所述无线上网模块200的命令时,所述对应的分区为所述无线上网模块200的设备管理端口5031所对应的SD分区;所述数据为应用层软件需要通过所述无线上网模块200传送到外部网络的数据时,所述对应的分区为所述无线上网模块200的Modem端口5033所对应的SD分区。
通过上述步骤1101至1103的操作,应用层软件的命令或数据可以被写入所述无线上网模块200的SD接口分区,从而实现对所述无线上网模块200的管理,以及对其无线上网功能的使用。
在对所述无线上网模块200的管理或者对其无线上网功能的使用的过程中,还需要接收来自所述无线上网模块200的响应,或者通过所述无线上网模块200接收来自外部网络的数据。这就需要应用层软件能够读取所述无线上网模块200上的数据。本实施例采用虚拟总线通过所述无线上网模块200的相应的SD卡分区读取数据的方式来实现。例如,图11B所示的为本实施例提供的PC侧从所述无线上网模块200读取响应或者数据的方法。
步骤1104、虚拟总线将SCSI读请求命令的数据包经由Disk驱动层发送给无线上网模块200的对应分区,所述对应分区为与所述虚拟总线要求读取的响应或数据的性质相对应的分区。与步骤1103类似的,例如,若所述虚拟总线要求读取的为针对应用层软件用来管理所述无线上网模块200的命令的响应时,所述对应的分区为所述无线上网模块200的设备管理端口5031所对应的SD分区;若所述虚拟总线要求读取的为应用层软件需要通过所述无线上网模块200接收的来自外部网络的数据时,所述对应的分区为所述无线上网模块200的Modem端口5033所对应的SD分区。作为一个例子,所述SCSI读请求命令的数据包可以包括,将SCSI命令中用于指示操作类型的字段赋值为与读请求对应的值,并将主机侧预分配的用于缓存所读取数据的缓存地址,或者用于指示该地址的信息,一起封装。
步骤1105、接收来自所述无线上网模块200的相应分区接口的读请求命令的响应数据包。所述读请求命令的响应数据包中封装有所述无线上网模块200上报的针对发自所述应用层软件的命令(例如设备管理命令或拨号命令)的响应或者来自外部网络的数据。
步骤1106、对所述读请求命令的响应数据包进行SCSI解封装,将其中的响应或数据发送给应用层软件。如果是按照步骤1104中所述的例子进行封装,则所述解封装及发送数据可以是,解封装后,根据所述读请求识别此次操作为读操作,则将需要上报的数据发往所述主机侧预分配的缓存地址。
通过上述步骤1104至1106的操作,所述无线上网模块200向应用层软件上报的响应或数据可以通过所述无线上网模块200的相应端口经由虚拟总线实现上报,从而完成对所述无线上网模块200的管理,以及对其无线上网功能的使用。可以理解的是,上述步骤1101至1103所示的向所述无线上网模块200写入命令或数据的过程,以及步骤1104至1106所示的从所述无线上网模块200读取响应或者数据的过程,是对应的过程,但是并不一定需要时序上的衔接对应。例如,所述步骤1101至1103写入的命令,并非一定要在下一个步骤1104至1106所示的读取过程中得到响应,而可以是在若干个读取过程之后的某一个读取过程得到响应。当然,也可以是在时序上的衔接对应。
可以理解的是,实现上述方法时,所述虚拟总线单元可以还包括应用层接口子单元和封装子单元,其中,所述应用层接口子单元用于接收来自所述应用层的命令或数据;所述封装子单元用于将所述命令或数据封装为小型计算机系统接口SCSI写请求命令的数据包;所述映射子单元则用于将所述SCSI写请求命令的数据包发送给所述无线上网模块的对应的安全数码卡分区。进一步的,所述虚拟总线单元还包括读命令生成子单元、解封装子单元,其中,所述读命令生成子单元用于生成小型计算机系统接口SCSI读请求命令的数据包;所述映射子单元则用于将所述SCSI读请求命令的数据包发送给所述无线上网模块的对应的安全数码卡分区,并从所述安全数码卡分区读取所述SCSI读请求命令的响应数据包,所述SCSI读请求命令的响应数据包中封装有所述无线上网模块上报的针对发自所述应用层的命令的响应或者来自外部网络的数据;所述解封装子单元用于对所述SCSI读请求命令的响应数据包进行SCSI解封装;所述应用层接口子单元用于将所述解封装后的响应或数据发送给应用层。进一步的,所述虚拟总线单元还包括判断单元,用于判断所述封装子单元生成的SCSI写请求命令在所述无线上网模块是否处理成功,若成功,则触发所述读命令生成子单元生成所述SCSI读请求命令的数据包。
可以理解的是,上述步骤1101至1106中描述的虚拟总线,在采用图9所示的PC侧驱动结构时,可以替换为总线驱动。其中描述的虚拟串口设备和虚拟Modem设备,在采用图9所示的PC侧驱动结构时,即所述总线驱动根据所述SD卡分区信息创建串口设备和调制解调设备。后文的描述的各实施例中提到的虚拟总线、虚拟串口设备、虚拟Modem设备、虚拟网口等也可以参照这一对应关系替换,从而得出在采用图9所示的PC侧驱动结构时的实施例。未免累赘,不再单独描述。
如前在论述图5所示的所述无线上网模块200的功能结构示意图时所述,本发明实施例的方案中,通过在所述无线上网模块200中设置适配单元505的方式,以实现SD接口分区与所述无线上网模块200中无线上网处理功能单元502上的各端口的对应,并完成命令或数据的转译和传输。具体的,在无线上网模块200侧,与图11所示的方法对应的,SD接口的无线上网模块200与所述PC侧的通信方法如图12A所示。
步骤1201、适配单元通过某一SD接口分区接收来自PC侧的写请求命令的数据包。所述某一分区为其向PC侧上报的SD接口分区中的一个。具体来自哪一个分区,有PC侧通过哪一个分区下发所述写请求命令的数据包决定。具体的,可以参考前述图11A中步骤1103的描述。
步骤1202、解析所述写请求命令的数据包,将解析出的命令或数据传送给无线上网处理功能单元502上的与所述SD接口分区对应的端口。所述写请求命令的数据包在PC侧下发过程中是以SD接口的格式封装的,所述适配单元505将所述写请求命令的数据包进行解封装,解析出其中的命令或数据,例如,该命令或数据可以是对所述无线上网模块200进行管理的命令,或者需要通过所述无线上网模块200发送给外部网络的数据。根据步骤1201中所述写请求命令的数据包收到的分区接口的不同,适配单元将其发送给相应的端口。分区接口与端口的对应关系在所述适配单元向PC侧上报SD接口分区时就已经绑定了。具体可以参考前述对图6进行描述时的相应部分。
步骤1203、所述端口根据所述命令或数据进行相应处理。所述端口可以是设备管理端口5031,或者Modem端口5033等。所述根据所述命令或数据进行相应处理,可以是,例如若所述命令是发给所述设备管理端口5031的对所述无线上网模块200进行管理的命令,则所述设备管理端口5031根据所述命令对所述无线上网模块200进行相应设置。若所述数据是发给所述Modem端口的需要发送给外部网络的数据,则所述Modem端口5033根据所述数据进行调制,并发送调制完的数据包。
步骤1204、若所述处理产生相应响应,则将所述响应的数据包写入该端口的缓存区。可以理解的,由于并非每一次操作都一定会产生响应数据,本步骤是可选步骤。所述响应可以是针对操作命令的操作结果响应,也可以是来自外部网络的数据响应,或者是来自外部网络的数据请求。这些都可以看作是对所述应用层软件下发的命令或数据的响应。所述缓存区为前述步骤604中描述的适配单元505为各端口分配的缓存区。
通过上述步骤1201至1204的操作,来自PC侧的命令或数据可以被写入所述无线上网模块200的相应端口,从而实现对所述无线上网模块200的管理,以及对其无线上网功能的使用。
在对所述无线上网模块200的管理或者对其无线上网功能的使用的过程中,还需要将所述无线上网模块200的响应,或者通过所述无线上网模块200接收来自外部网络的数据,上报给PC侧。图12B所示的为本实施例提供的所述无线上网模块200向PC侧上报响应或者数据的方法。
步骤1205、适配单元通过某一SD接口分区接收来自PC侧的读请求命令的数据包。该步骤与步骤1201类似,所不同的是本步骤接收的是读请求命令的数据包。
步骤1206、从该分区对应的端口的缓存区中读取一个数据包。所述缓存区中的数据包为步骤1204中存入的数据包。所述数据包可以是针对操作命令的操作结果响应的数据包,也可以是来自外部网络的数据响应的数据包,或者是来自外部网络的数据请求的数据包。
步骤1207、将所述读取的数据包封装为所述读请求命令的响应数据包,发送给主机侧。
通过上述步骤1205至1207的操作,所述无线上网模块200中无线上网处理功能单元503中的各端口可以通过适配单元505向PC侧上报响应或数据,从而完成对所述无线上网模块200的管理,以及对其无线上网功能的使用。可以理解的是,上述步骤1201至1204所示的过程,以及步骤1205至1207所示的过程,是对应的过程,但是并不一定需要时序上的衔接对应。当然,也可以是在时序上的衔接对应。
可以理解的,应用本发明实施例公开的SD接口的无线上网模块200,以及PC侧驱动结构,通过图11所示的方法与图12所示的方法的配合,可以实现PC上的应用层软件与所述无线上网模块200中无线上网处理功能单元503中的各端口的通信,完成应用层软件对所述无线上网处理功能单元503的管理,以及对其无线上网功能的使用。
接下来,图13和图14进一步给出了更具体的实施例,以更生动的说明本发明实施例公开的SD接口的无线上网模块200的使用方法。
图13所示为应用层软件通过虚拟的串口设备对SD接口的无线上网模块200进行管理的方法。
步骤1301、应用层软件打开虚拟的串口设备,下发AT命令。采用如图8或图9所示的PC侧的驱动结构之后,应用层软件,例如Modem管理软件,会看到由串口驱动、Modem驱动等虚拟的串口设备、Modem设备。所述AT命令(AT Commands),是一种用于调制解调器的命令语言。AT即Attention,用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS Block Mode的协议,通过终端设备或电脑来完全控制。由Hayes公司发明,现在已成为事实上的标准并被所有调制解调器制造商采用的一个调制解调器命令语言。每条命令以字母″AT″开头,因而得名。AT后跟字母和数字表明具体的功能。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP(惠普)共同为GSM研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM07.05标准以及GSM07.07标准。本实施例对于所述AT命令采用哪一版本的标准甚至是否采用标准技术都不做限制,只需要能够对所述无线上网模块200进行管理即可。
步骤1302、虚拟总线获取该AT命令,封装为SCSI写请求命令的数据包。
步骤1303、虚拟总线把所述数据包发送给Disk驱动层,请求往对应的分区写数据。
步骤1304、Disk驱动把该数据包下发给SD接口的无线上网模块200的设备管理端口5031对应的分区接口。
步骤1305、SD接口的无线上网模块从所述分区接口获取所述数据包,适配单元505解析所述数据包后获取所述AT命令
步骤1306、SD接口的无线上网模块的设备管理端口5301根据所述AT命令对所述无线上网模块200进行管理
步骤1307、与所述设备管理端口5301对应的缓存区缓存所述AT命令的响应信息。此时一个命令下发流程结束。
后面的步骤是读取前述步骤1301至1307下发的命令的响应的步骤。二者具有对应关系,但并不要求在时间上的紧密衔接,即针对步骤1301至1307中下发的命令的响应,并不必然在紧接着的步骤1308至1313读取。
步骤1308、虚拟总线等待SCSI写请求命令的处理结果。
步骤1309、虚拟总线判断所述SCSI写请求命令的处理是否成功,若成功,则继续步骤1310,否则结束本方法的流程。所述判断SCSI写请求命令的处理是否成功,是采用SCSI命令规范中的方式判断的,例如采用ACK包来判断。
步骤1310、虚拟总线下发标准的SCSI读请求命令。
步骤1311、适配单元505把设备管理端口5301对应的缓存队列中的AT命令响应信息封装为对SCSI读请求命令的响应发给虚拟总线。
步骤1312、虚拟总线解析所述读请求命令的响应中的AT命令响应信息。
步骤1313、虚拟总线把AT命令的响应结果通过虚拟的串口设备反馈给应用层软件。
通过上面的步骤1301至1313,应用层软件可以对SD接口的无线上网模块200进行管理。
图14所示为应用层软件通过虚拟的Modem设备与SD接口的无线上网模块200进行数据业务的方法。
步骤1401、应用层软件通过虚拟的modem设备,发起拨号操作,成功后进行数据业务。本步骤中,应用层软件实际在一次下发数据的过程中,只会选择发起拨号操作或者进行数据业务中的一种。发起拨号操作可以是接受用户的操作发起拨号,也可以是自动重拨的过程中的一次拨号,还可以是检测到网络断开后的自动拨号,等等,本实施例不做限定。数据业务即正常的上网过程中与外部网络交互数据报文的业务。
步骤1402、虚拟总线获取modem设备下发的拨号命令或用于数据业务的数据,封装为SCSI写请求命令的数据包。
步骤1403、虚拟总线把封装好的SCSI写请求命令的数据包发送给Disk驱动,请求往对应的分区写数据。
步骤1404、Disk驱动把该SCSI写请求命令的数据包下发给SD接口的无线上网模块200的对应分区接口。所述对应分区接口一般为Modem端口对应的分区接口。
步骤1405、SD接口的无线上网模块200的适配单元505从分区接口获取该SCSI写请求命令的数据包后,解析出所述拨号命令或用于数据业务的数据。
步骤1406、Modem端口判断此次操是否为拨号命令。若是拨号命令,则继续执行步骤1407,否则默认为数据业务,跳转至步骤1410。
步骤1407、SD接口的无线上网模块200根据所述拨号命令,发起拨号。具体的,发起拨号的是所述SD接口的无线上网模块200上的无线上网处理功能模块503中的Modem端口5031。
步骤1408、所述无线上网模块200判断此次拨号是否成功,若成功,则继续执行步骤1409,否则结束此次拨号。或者,如果所述无线上网模块200上配置有自动重拨功能,则也可以不结束此次拨号,而跳转至步骤1407重复拨号,直到拨号成功,或者满足无线上网模块200上设置的其他停止拨号条件,例如连续10次拨号均不能成功。
步骤1409、SD接口的无线上网模块设备把modem对应的分区置为数据模式。并转至步骤1401,应用层软件可以开始数据业务。
步骤1410、SD接口的无线上网模块200根据所述数据,进行数据业务。并转至步骤1401,应用层软件可以继续按照上述步骤进行数据业务。
后面的步骤是读取前述步骤1401至1410下发的拨号命令的响应或数据业务中从外部网络收到的数据的步骤。二者具有对应关系,但并不要求在时间上的紧密衔接,即针对步骤1401至1410中下发的数据的响应,并不必然在紧接着的步骤1411至1417读取。
步骤1411、虚拟总线等待SCSI写请求的处理结果。
步骤1412、虚拟总线判断所述SCSI写请求命令的处理是否成功,若成功,则继续步骤1310,否则结束本方法的流程。所述判断也可以采用例如ACK包的方式进行。
步骤1413、虚拟总线下发标准的SCSI读请求命令
步骤1414、SD接口的无线上网模块200的适配单元505根据所述读请求命令,把需要上报的数据作为所述读请求命令的响应数据包传给虚拟总线。
步骤1415、虚拟总线解析所述读请求命令的响应数据包,获取所述上报的数据。
步骤1416、虚拟总线把所述上报的数据上传给虚拟的modem设备。
通过上面的步骤1401至1417,应用层软件可以对SD接口的无线上网模块200发起拨号,并通过其无线上网功能实现与外部网络的数据交互。
前述的各方法中提到的SD接口的无线上网模块200均是如图2所示的无线上网模块,其功能结构示意图如图5所示。实际上,该无线上网模块可以集成SD卡的存储功能。如图15所示,一个无线上网模块1500由安全数码卡接口子模块1501、无线上网处理子模块1502和安全数码存储子模块1503构成。所述安全数码卡接口子模块1501和无线上网处理子模块1502与图2所示的安全数码卡接口子模块201和无线上网处理子模块202相同。所述安全数码存储子模块1503与现有技术中的SD卡的存储模块相同。相应的,图15所示的功能结构示意图如图16所示。其中,安全数码卡接口功能单元1601和无线上网处理功能单元1603与图5中的安全数码卡接口功能单元501和无线上网处理功能单元503相同,其中无线上网处理功能单元1603中的设备管理端口16031、Modem端口16033以及其他功能端口16035也与图5中的无线上网处理功能单元503中的设备管理端口5031、Modem端口5033以及其他功能端口5035相同。图示的安全数码存储功能单元1607采用现有的SD卡中的存储功能单元实现。其可以与所述无线上网处理功能单元1603之间有通信通道,也可以没有。图示的适配单元1605除具备图5所示的适配单元505的功能外,还用于将所述安全数码存储功能单元作为所述SD接口的无线上网模块1500的一个SD接口分区向PC侧上报,并在与PC侧的数据交互过程中,透传PC下发到所述安全数码存储功能单元对应的SD接口分区中的数据,以实现现有的SD卡的存储功能。
上述SD接口的无线上网模块1500可以用于PC机、智能手机等可以运行应用软件对无线上网模块进行管理的主机上。但是对于很多集成了SD插槽或是读卡器,而又没有复杂设备管理和网络管理功能的消费电子产品(例如相机、电子相框等电子产品)中,上述SD接口的无线上网模块1500的设备管理端口的功能和Modem端口的功能因为没有主机侧应用软件的支持将不可用,上述SD接口的无线上网模块1500将会退化为一个普通的SD卡设备。
为了使普通的消费电子产品(例如相机、电子相框等电子产品)也能通过SD接口的无线上网设备直接连入外部网络,而改变目前的此类消费电子产品中的数据要与网络交互必须借助PC机或智能手机等中转的现状,本发明实施例对所述SD接口的无线上网模块1500进一步进行了改进。请参考图17。对比图16可知,图17在图16所示的SD接口的无线上网模块1500的功能结构的基础上,增加了一个数据同步功能单元1709,而其他的功能单元,包括安全数码接口功能单元1701和安全数码存储功能单元1707分别与图16中的安全数码接口功能单元1601和安全数码存储功能单元1607相同。所述数据同步功能单元1709用于检测到所述安全数码存储功能单元1707或者与所述安全数码存储功能单元1707绑定的外部网络空间的数据发生改变时,根据预置的同步策略,进行数据同步。所述无线上网处理功能单元1703与无线上网处理功能单元1603相比,其改进在于,检测到所述无线上网模块1500上电的情形下,自动根据预置的拨号信息进行自动拨号。所述适配单元1705还需要将所述数据同步功能单元1709作为一个SD分区进行上报,以便主机侧可以对其进行设置,预置同步策略。可以理解的,在所述数据同步功能单元1709上预置同步策略,以及在所述无线上网处理功能单元1703上预置拨号信息,都可以采用前述各实施例中的PC侧应用软件对所述无线上网模块进行管理和设置的方法。也就是说,所述预置的同步策略和拨号信息,都需要先使用所述无线上网模块,在具备复杂设备管理和网络管理功能的电子设备(例如PC机或者智能手机等)上,通过图2至图16前述的各种实施例的方法来实现。
在所述数据同步功能单元1709上预置同步策略,以及在所述无线上网处理功能单元1703上预置拨号信息以后,所述SD接口的无线上网模块就可以插入普通的消费电子产品(例如相机、电子相框等电子产品)的SD卡插槽中进行使用了。下面以所述消费电子产品时数码相机为例,来说明使用的方法。
请参考图18。
步骤1801、SD接口的无线上网模块被使能。SD接口的无线上网模块插入数码相机的SD卡插槽中,将数码相机的电源接通,所述SD接口的无线上网模块即可以被使能。当然,数码相机的操作系统或者硬件设施上也可以设置是否启用SD接口设备的选择项,此时,则需要选择启用SD接口的设备,所述SD接口的无线上网模块才会被使能。
步骤1802、无线上网处理功能单元1703根据预置的拨号信息自动进行拨号。
步骤1803、数据同步功能单元1709检测网络的连接状态。
步骤1804、若网络已经成功连接,则继续执行步骤1805,否则返回步骤1803。
步骤1805、数据同步功能单元1709根据模块中预置的网络空间信息,自动登陆网络空间。所述网络空间可以是例如用户的个人主页,QQ空间,开心网空间,facebook账户空间,MSN账户空间等,也可以是个人服务器上的某一空间,或者是他人开放共享的网络空间等。
步骤1806、数据同步功能单元1709把网络空间的数据映射到安全数码存储功能单元1707的指定目录下。这样,对所述指定目录中数据的操作,就可以被同步到与之相映射的网络空间上。
步骤1807、数据同步功能单元1709检测到网络空间数据发生改变,则执行步骤1809。
步骤1808、数据同步功能单元1709检测到用户往安全数码存储功能单元1707中写入新的数据,则执行步骤1809。
在步骤1807或步骤1808所述的情景中的任一种发生的时候,执行步骤1809:数据同步功能单元1709根据预置的同步策略,检查是否需要进行数据同步。所述预置的同步策略,可以是实时同步,即网络空间与安全数码存储功能单元1707中任一数据改变即发起同步,或者是定时同步,例如当天下午3点发起同步,或者还可以是周期性同步,例如每周三早上8点同步,或者是分数据目录同步,例如仅将安全数码存储功能单元1707的“我的照片”目录下的数据与网络空间中的“我的相册”目录下的数据同步,或者是分数据类型同步,例如仅不同安全数码存储功能单元1707中的图片格式文件和网络空间中的图片格式文件,而不同步文档格式或音视频媒体文件。
步骤1810、如需要同步,则继续执行步骤1811,否则返回步骤1809。
步骤1811、数据同步功能单元1709检测与网络空间连接状态。
步骤1812、如连接正常,则继续执行步骤1813,否则结束此次同步操作。
步骤1813、数据同步功能单元1709把安全数码存储功能单元1707的数据同步到网络空间,或是把网络空间的数据同步到安全数码存储功能单元1707。
通过应用本发明实施例提供的SD接口的无线上网模块,采用图18所示的方法,可以实现没有复杂设备管理和网络管理功能的消费电子产品(例如相机、电子相框等电子产品)上的数据与网络空间的直接同步,而不再需要借助PC机或智能手机等具备上网终端能力的电子设备。
本发明前述各实施例介绍了几种SD接口的无线上网模块,并对其中的功能模块的结构进行了改进,采用本发明实施例改进后的PC侧驱动结构,可以实现SD接口的无线上网模块与PC侧的应用层软件的通信,该应用层软件可以对该SD接口的无线上网模块进行管理和设置,并通过其接入外部网络。进一步的,改进后的SD接口的无线上网模块还可以集成SD卡的存储功能;再次改进后的SD接口的无线上网模块还可以使没有复杂设备管理和网络管理功能的消费电子产品(例如相机、电子相框等电子产品)上的数据与网络空间的直接同步,极大的改善了用户体验,扩展了无线通信业务。前述各实施例的无线上网模块均可以设置在外形为标准安全数码卡或微型安全数码卡或迷你安全数码卡的封装形态,包括9针的安全数码卡接口界面的数据卡产品中。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。