蓝牙信号的发射与接收_第1页
蓝牙信号的发射与接收_第2页
蓝牙信号的发射与接收_第3页
蓝牙信号的发射与接收_第4页
蓝牙信号的发射与接收_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.蓝牙协议规蓝牙协议是蓝牙设备间交换信息所应遵守的规则。与开放系统互连模型一样,蓝牙技术 的协议体系也采用了分层结构, 从底层到高层形成了蓝牙的协议栈, 各层协议规定了所完成 的功能和使用的数据分组格式, 并提供上下各层之间的接口。 所有的蓝牙设备制造厂商都必 须严格遵守蓝牙协议中的要求和规定,以保证蓝牙产品间的互操作性。1.1 蓝牙射频协议射频是指介于声音频率与红外线之间的电磁波频率。 蓝牙技术诞生的初衷是以低功耗、 低成 本的无线接口取代现在纷繁复杂的有线接口。蓝牙射频部分不是重新开发的新技术, 而是采用了在技术和市场上已经成熟的协议和算法。蓝牙射频部分主要处理空中数据的收发。 蓝牙工作

2、在无需许可证的 2.4GHzISM 频段上,采用了跳频扩谱技术主动地去避免工作频段受干 扰。蓝牙每个频道宽为 1MHz 79个跳频频点中至少有 75个应该伪随机地进行跳变,在一个30s的时间段内,任何一个频点的使用时不得超过0.4s。蓝牙的跳频速率为 1600次/s,每个频率持续时间 625us 称为一个时隙。主设备在偶数时隙发送数据,在奇数时隙接收数据; 从设备则与主设备相反。1.2 蓝牙基带与链路控制器协议 蓝牙基带与链路控制器主要负责射频部分的发送接收时间、 79 个频点的选择和发射功率等 级的选择。 蓝牙设备发送数据时, 基带部分将来自高层协议的数据进行信道编码, 向下传给 射频进行发

3、送; 接收数据时, 射频将经过解调恢复空中数据并上传给基带, 基带再对数据进 行信道解码,向高层传输1.2.1 蓝牙物理链路通信设备之间物理层的数据连接通道就是物理链路。 蓝牙系统中有两种物理链路: 异步无连 接链路ACL和同步面向连接链路 SCO ACL链路是微微网主设备和所有从设备之间的同步和 异步数据分组交换链路, 主要用于对时间要求不敏感的数据通信, 如文件数据或控制信令等。SCO链路是一条微微网中由主设备维护的点对点、对称的同步数据交换链路,主要用于对时 间要求很高的数据通信,如语音等。1.2.1.1 ACL 链路1. ACL链路的特点和性能 ACL链路在主从设备之间以分组交换方式传

4、输数据,即可以支持异步应用,也可以支持同步应用。一对主从设备只能建立一条ACL链路。ACL通信的可靠性可以由分组重传来保证。由于是分组交换,在没有数据通信时, 对应的ACL链路就保持静默。微微网中的主设备可以与每个相连的从设备都建立一条ACL链路。双向对称连接 ACL链路传输率为 433.9kbps ;双向非对称传输数据时,正向 5 时隙分组 链路可以达到最大传输率 723.2kbps, 反向单时隙链路传输率为 57.6kbps 。2. ACL链路的收发规则主设备在主从 ACL时隙内发送的ACL分组含有接收从设备的设备 地址;在随后的从主 ACL时隙内,从设备发送ACL分组到主设备。如果从设备

5、为能接收到主 从ACL分组头解析从设备地址, 或者解析到的地址与自身不匹配, 那么它就不能在紧跟的从 主ACL时隙发送ACL分组。ACL链路允许广播发送数据,此时主从 ACL分组头的从设备地址 被设为( 000)b, 微微网中每一个接收到的从设备都可以接受并读取,但不作响应。1.2.1.2 SCO 链路1.SCO链路的特点和性能 SCO链路在主设备预留的 SCO时隙内传输,因而可以看作电路交 换。SCO分组不进行重传操作,一般用象语言这样的实时性很强的数据传输。只有建立了 ACL链路后,才可以建立SCO链路。一个微微网中的主设备最多可以同时支持3条SCO链路;一个从设备与同一主设备最多可以同时

6、建立3条SCO链路,或者与不同主设备建立2条SCO链路。2.SC0链路的收发规则主设备在预留的主从SCO时隙内,向从设备发送 SCC分组,分组头含有应该做出响应的从设备地址。在紧跟的从主 SCO时隙内,对应的从设备向主设备发送SCO分组。与ACL分组不同的是,即使从设备未能从接收到的分组头解析出从设备地址,也 允许在其预留的 SCO时隙返回SCO分组。1.2.2蓝牙基带收发规则1.2.2.1 发送(TX)规则TX要分别进行 ACL和SCO链路的处理。单个从设备时 TX的ACL和 SCO缓存器如图2-2所示。ACL发送缓存分组打包器41/次态FIFO寄存器卜一异步 I/O 端口一SlaSit?、

7、次态/现态FTFO寄存器 SCO发送缓存 jlS/次态FIFO寄心器 同步I/O端口一 aS2b现态FIFO寄存器图2-2发送TX缓存ACL和SCO所有公共链路的分组(ID、Null、Poll、FHS和DM1中,只有DM1分组携带在链 路控制器和链路管理器之间交换的有效载荷中的公共分组使用ACL缓冲器。所有的AC(SCO分组都使用ACL( SCO缓存器。在DV分组中,语音部分使用SCO缓存器,数据部分使用 ACL 缓存器。1. ACL通信对于异步 ACL数据通信,只需考虑 ACL链路的TX缓存器,这时只使用 DM或 DH分组。数据速率选择视链路的质量而定。链路质量好时,选择DH分组(无FEC纠

8、错);链路质量差时选择 DM分组(有FEC纠错)。ACL链路的缺省类型是 Null ,这意味着如果没 有数据要发送或没有轮询到从设备就发送Null分组,这样就能够发送链路控制信息到其他蓝牙设备,如果没有链路控制信息要发送,就无需要发送任何分组。ACL链路发送分组时,链路管理器首先通过 S1a把数据装载到寄存器, 然后向链路控制器发送一个刷新指令,强迫开关S1转换(S1a和S1b同时转换)。需要发送有效载荷时,分组打包器读取现态寄存器 数据,根据分组类型构造有效载荷并附加到CAC和分组头的后面。接收放通过响应分组返回接收的发送结果,当结果是ACK时,S1就转换位置;结果是 NAK时,S1不转换位

9、置。只要链路管理器对寄存器装载新的信息,链路控制器就自动发送有效载荷,出现错误时,重传也自动的执行。当没有新的有效载荷要发送时,链路控制器将发送Null分组或什么也不发送。如果没有新的有效载荷装入到次态寄存器,在最后的分组被确认后,分组打包指示寄存器将为空,次态寄存器就转换为现态寄存器。如果新的数据装入次态寄存器,就需要执行刷新指令,切换开关到合适的寄存器。只要在每个TX时隙之前链路管理器不断装载数据,开关S1受响应分组信息控制,链路控制器就自动处理数据。一旦链路管理器的业务被中并 发送缺省的分组时, 就需要一个刷新指令来继续已中断数据流。在链路不好的情况下, 可能需要多次重传。但是对于时间受

10、限数据,由于链路错误一直重传就会发生超时,系统要决定继续发送更多的当前数据还是跳过这些不能发送的数据,这也需要使用刷新指令来实现。利用刷新指令可以强迫开关 S1切换,链路控制器不管接收方的结果也会强迫处理后面的有效 载荷数据。2.SC0通信SCO链路只使用HV分组类型进行通信。缺省的 SCO分组类型在SCO链路建 立时由主设备在链路管理层协商确定。SCO链路发送分组时,同步端口连续地装载SCO缓冲器的次态寄存器。S2开关根据SCO时隙间隔进行切换。对每个新的SCO寸隙,S2开关切换后,分组打包器从现态寄存器读取数据。如果SCO已经用于主从设备之间发送较高优先级的控制信息,分组打包器就将丢弃 S

11、CO信息代之以这些控制信息,该控制信息必须以 DM1分组 发送。在主设备和 SCO从设备间,数据和控制信息也可以使用DV或 DM1分组传输,主设备可以使用任何类型的 ACL分组发送数据和链路控制信息到其他ACL从设备。3. 混合数据/语音通信使用 DV分组时,链路控制器从数据寄存器读取数据填充数据段, 从语音寄存器读取语音填充语音段,然后切换开关S2。开关S1的位置取决于链路传输的结果。如果没有数据发送,SCO链路自动地从 DV分组类型切换到 HV分组类型(数据流中断时或新数据已经到达时要使用刷新指令)。若信道容量允许,就可以分别使用 ACL和SCO链路实现组合语音数据的传输1.2.2.2 接

12、收(RX规则ACL和SCO链路分别处理 RX进程。与ACL链路TX缓存器相反,主 设备对所有从设备公用一个 ACL链路RX缓存器。SCO缓存器数量取决于实际 SCO链路的数 量。RX进程如图2-3所示。ACL接收缓存T 现态/次态FIFO寄存器卜分细拆解器恥Slb、异步I/O端口Jf次态/现态FIFOuf存器SCO接收缓存T 现态/次态FIFO寄存器卜、S2i 同步I/O端口次态/现态FIFOuf/器|¥| 2-3接收RX缓存ACL链路RX缓存器包含两个FIFO寄存器,一个用于链路控制器访问和装载最新的RX分组,另一个用于链路管理器读取先前的载荷。SCO链路RX缓存器也包含两个 FI

13、FO寄存器,一个用来填充新到达的语音信息,另一个可以被语音处理单元读取。分组头Type字段指示当前分组是数据分组还是语音分组,分组拆解器可以自动的把数据送到合适的缓存器。链路管理器读取旧的寄存器后,开关S1就切换。如果下一个有效载荷在RX寄存器清空之前到达,在下一个返回的TX分组的分组头中必须包括一个Stop指示。一旦RX寄存器清空,Stop指示 就清除。新的ACL有效载荷存储到 ACL寄存器之前,必须检测 SEQN字段。L_CH中的刷新指 示和广播信息将影响对 SEQN勺解释。S2开关每隔TSCO寸间进行一次切换,如果分组头错 误没有新语音载荷到达,切换仍旧继续进行。2.223 流量控制新的

14、分组到达时, ACL链路的RX缓存器可能已经处于满的状态,此时就需要流量控制来解决这个问题。但是SCO数据不受流量控制的限制。1. 收方控制只要链路管理器没有清空ACL链路的RX缓存器,链路控制器就在返回分组头插入Stop指示。当能够再次接收新的数据时,就返回GO指示。即使再为返回 GO指示时,不含有数据的任何类型的分组仍然可以接收。 流量控制在收和发两个方向上分别进行, 设备及 时不能接收新的信息,仍可以发送信息。2. 发方控制链路控制器收到 Stop信号时将自动切换到缺省的分组类型上,当前的 ACL链路TX缓存器状态冻结。只要收到Stop指示就发送缺省分组。没有收到分组时,则默认是G指示。

15、缺省分组包含接收方向的链路控制信息,而且可能包含语音信息。链路控制器收到GO指示时将恢复发送存储在 ACL链路TX缓存器中的数据。当主设备与多个从设备通信时,如 果某个从设备向主设备发送了 Stop 指示,那么主设备将停止向这个从设备发送数据。1.3 蓝牙主机控制器接口协议1.3.1 蓝牙主机控制器接口概述蓝牙主机控制器接口 ( HCI)是蓝牙主机-主机控制器应用模式中蓝牙模块和主机的软硬件口, 它提供了控制基带与链路控制器、 链路管理器、 状态控制器等硬件功能的指令分组格式 (包 括响应事件分组格式)以及进行数据通信的数据分组格式 。蓝牙技术集成到各种数字设备的方式有两种:一种是单微控制器方

16、式,即所有的蓝牙 低层传输协议(包括蓝牙射频、基带与链路控制器、链路管理器)与高层传输协议(包括逻 辑链路控制与适配协议、 服务发现协议、 串口仿真、 网络封装协议等) 以及用户应用程序都 集成到一个模块当中, 整个处理过程由一个微处理器来完成; 另一个是双微控制器方式, 即 蓝牙协议与用户应用程序分别由主机和主控制器来实现 (低层传输协议一般通过蓝牙硬件模 式实现,模块内部嵌入式的微处理器称为主机控制器,高层传输协议和用户应用程序在写 入的个人计算机或嵌入的单片机、DSP等上运行,称为主机),主机和主机控制器之间通过标准的物理总线接口 (如通过串行总线 USB串行端口 RS232来连接。在蓝

17、牙的主机-主机 控制器连接模型当中,HCI作为蓝牙软件协议堆栈中软硬件之间的接口,它提供了一个控制 基带与链路管理器、 链路管理器、 状态寄存器等硬件的统一接口。 当主机和主机控制器通信 时, HCI 层以上的协议在主机上运行,而 HCI 层以下的协议由蓝牙主机控制器硬件来完成, 它们通过HCI传输层进行通信。主机和主机控制器之间都有HCI,它们具有相同的接口标准。主机控制器中的 HCI解释来自主机的信息并将信息发向相应的硬件模块单元,同时还将模块中的信息根据需要向上转发给主机。主机和主机控制器之间是通过HCI收发分组的方式进行信息交换的。 主机控制器执行主机指令后产生结果信息, 主机控制器通

18、过相应的事件分 组将此信息发送给主机。主机与主机控制器通过指令 -应答方式实现控制,主机向主机控 制器发送指令分组。 主机控制器执行指令后, 通常会返回给主机一个完成事件分组, 该分组 携带有指令完成信息; 对于有些分组, 不返回指令完成事件分组,但返回指令状态分组, 用 以说明主机发出的指令已经被主机控制器接收并开始处理; 如果指令执行错误, 返回的指令 状态事件分组就会指示相应的错误代码。 由于篇幅所限, 关于 HCI 分组类型格式、 参数和指 令在这里就不作介绍。1.3.2 蓝牙主机控制器接口传输层HCI 传输层是指蓝牙主机和蓝牙主机控制器之间相连的物理接口。HCI 传输层包括 USB、

19、RS232 UART和PC卡传输层。下面介绍一下和本文有关的RS232 UART专输层。1.321 HCI的RS232传输层RS232传输层与蓝牙 USB传输层不同,USB传输层能够区别不 同的HCI分组类型,从而做出相应的处理。对于RS232来说,所有的数据收发都是分别经过TX和RX两条线,蓝牙RS232主机无法区分收到的 HCI分组究竟是哪一分组,所以蓝牙RS232 主机的HCI分组必须附加特殊的标志用于区分其分组类型。这一标志就是蓝牙HCI RS232分组指示器,它附加于每种对应的 HCI分组的最前面。如表2-1所示。利用RS232接口进行 传输之前,在 RS232接口两端的设备应该双方

20、协商波特率、奇偶校验类型等接口参数。LS8IS1.协商协议在RS232发送任何数据之前,应当在主机控制器和主机之间协商波特率、奇偶校验类型、停止位和协议模式。协商模式可以在任何一端任何时候启动,以便得到新的协值,或者只是把新的 TDetect时间通知对方。当协商过程在数据传输过程中启动时,它将使用先前协商的设置来交换新的参数,而不是使用缺省值。协商分组格式如表2-2所示。UART设置和ACK字段见表2-3,其中停止位取0表示一个停止位, 取1表示2个停止位;校验使能 取0表示关闭校验,取1表示打开校验;校验类型取0表示奇校验,取1表示偶校验;ACK码取(000) b表示请求,取(001) b表

21、示认可,取(010) b表示不认可,(011) b- (111) b预留。如果使用 RTS/CTS作为错误指示和重新同步的方式,发送器要求的最大检测时间为 TDetect,它包括检测 CTS状态变化的时间和刷新发送缓冲区的时间,否则TDetect表示本地中断时延,时间的单位为100ms。S2-2RS232协商分组的格式Table 2-2 RS232 Fonmt of Treat Gi ouping序列号(80UARTi殳置利ACK披特率 (1 6 啊)TostsctBl 间 <161分组裘型头0X06 (呂位)衷2 -3 UART设曾和ACK字投TXble 2-3 UART Setup

22、and ACK Fieldbit 01bit 2bit 3bit 4bit 5-7保留停止位检验使能校脸类型ACK玛协议模式字段见表 2-4所示。CRC取 0表示分组后面不使用 CCITT-CRC校验,取1表示分组 后面使用CCITT-CRC校验。“所使用的定界符号”取0表示不使用定符号 0x7E,取1表示和一致性开销字节填充(COBS 一起使用定界符号 0x7E。“使用RTS/CTS字段取0表示不 使用RTS/CTS取1表示使用。“ RTS/CTS模式”字段取0表示RTS/CTS用于错误指示和重 新同步,取1表示不用于错误指示和重新同步。“使用错误恢复” 字段取0表示不支持错误恢复,取1表示

23、支持错误恢复。 若RTS/CTS用于同步,错误恢复重新发送错误的分组和所有 后面的分组。若使用 0x7E定界符作为实现同步的机制,就只重新发送错误的分组。错误恢 复不一定总成功,有可能发生超时和重传缓冲区满等情况。2 分组传输协议根据实际情况,进行分组传输时可以使用检错机制。同步机制可以使用RTS/CTS或者定界符来实现。使用RTS/CTS可以减少COBS编码的计算时间,但是需要2根额外的铜线。若使用 3芯线缆,不使用可编程 RTS/CTS那么定界符、0x7E就能够与COBS 一起使用。这两种方案的纠错能力差别不大。如果RTS/CTS衣2-4协议模式字段Table 2-4 Agreement

24、Mode Fidelbit obit 1bil 2bit 3bit 4bit 5-7所示用的所不用的使用RTS/CTS使用错误保留用于CRC定界符号RTS/CT S:模式恢复以后扩展再次用于同步,就简单的重发所有分组,并将含有错误的分组作为起始分组。如果使用定界符发送就只重发含错分组。可以选择不使用纠错功能,当接收端检测到错误时,仍将错误信息分组发到发送端。3 .同步方式(1)使用含有COBS定界符协议的同步方式在不能使用通过物理连接作为硬件流量控制的 RTS/CTS情况下,一般采用类似于高级数据链路控制(HDLC包含有16位CRC的数据帧和含有COBS的定界符0x7E作为检错和重新同步的手段

25、。当接收或检测到一个错误时,接收端 发送一个错误消息分组到发送端。该错误消息分组包含一个带有错误字段的序列号,序列号就是发送分组的序列号,但是不包含错误类型0x81。错误序列号字段是一个 8位的字段,每当发送一个新的分组,该字段的值就加一。对分组进行排序是接收端的任务,接收端要过滤掉重发分组。如果接收端没有接收到某个分组,发送端在其重发保持缓冲器中就不能找到一个正确的序列号,它就可以使用错误类型代码0x81发送一个错误信息,告诉接收端重发分组的序列号已经丢失,接收端就可以检测丢失的分组。这时就不能执行完整的错误恢复, 但是接收端可以检测到丢失的分组。(2)使用RTS/CTS的同步方式调制解调器

26、的 RTS和CTS这两个信号可以用来处理HCI分组的收发。在调制解调器模式下,RTS/CTS这两根线连接在一起,即本地的RTS远端CTS连接在一起,本地CTS和远端RTS连接在一起。这两个信号的 作用有二:一是用于只是检测到的一个错误,二是用于重新开始同步。HCI分组旨在CTS为1是发送,在HCI分组发送过程中或者在最后一个字节发送之后CTS变为0时,表示有错误存在。接收端一旦检测到错误就会放弃RTS,并向发送端发送一个包含错误类型代码的错误信息分组,这个分组包含了错误信号字段的序列号,。一旦发送但检测到CTS从1变为0,就停止发送任何信息,等待接受错误信息分组。当接收端准备接收新的数据时,在

27、最小的TDetect时间就会放弃 RTS协商过程中收发双方要交换TDetect的值。本地 TDetect、远端TDetect和波特率三者一起用于估计重发缓冲区的队列长度。在接收端再次放弃RTS之前,要刷新RX缓冲区。当发生错误时,要从错误的分组开始重新发送,序列号要与重发的分组 相同。接收端负责对分组进行排序,虑出重复分组。重发分组时,如果重发保持缓冲区当中 的分组序列号不正确,发送端将发送一个错误类型代码0x81的错误信息分组,并跳到具有正确序列号的分组进行发送。1.3.2.2 HCI的UART传输层UART和 RS232传输层都采用串行通信的方式在蓝牙设备的主机控制器接口之间进行数据传输,

28、两者间的区别在于应用环境。UART 传输层针对的环境是蓝牙芯片和主机在同一块印刷电路板上的情况,因此线路误码相对较少。RS232传输层支持的是蓝牙芯片和位于不同实体中的主机进行通信的情况,距离较远并且具有较高线路误码率, 因此RS232传输层对信号电器特性进行了规定。使用HCI的UART专输层的前提是假设没有线路误码,因而与HCI的RS232传输层相比,其分组格式只有指令分组、ACL数据分组、SCO 数据分组和事件分组,而没有错误消息分组和协商分组。与HCI的RS232传输层一样,HCI的UART专输层也使用分组指示器来区分这四种分组,HCI分组紧跟在 HCI分组指示器之后发送。UART采用了

29、 RS232的接口参数设置:波特率由生产厂商确定;8位数据位;无奇偶校 验位;1位停止位;流控信号为 RTS/CTS流关闭响应时间由生产商确定。RTS/CTS信号用来阻止UART缓存的暂时溢出,它不应该用于 HCI层的流控,因为HCI层有自身的流控机制。 如果CTS为1,则主机/主机控制器可以发送分组;如果CTS是0则不能。流关闭响应时间定义了从RTS置0到字节流实际停止间的最大时间。UART信号线将以空调制解调器的方法相连:本地TXD连接到RXD本地RTS连接到远端CTS反之亦然。如果主机或主机控制器在 通信过程中失去了同步, 则需要进行复位。 丢失同步的标志是发现了错误的 HCI 分组指示

30、器, 或者 HCI 分组中的长度字段超出范围。 在主机和主机控制器的方向发生同步丢失后, 主机控 制器将发送一个硬件错误事件分组通知主机, 然后等待主机发来的复位命令来执行复位。 接 下来主机控制器也将使用复位命令来重新开始同步。 在主机控制器到主机的方向发生同步丢 失后,主机将使用复位命令来对主机控制器进行复位, 接着主机通过检查复位命令的命令完 成事件来重新开始同步。1.4 蓝牙串口仿真协议 蓝牙是一种电缆替代技术,对串行电缆连接方式的替代是蓝牙应用的一个重要方面,因SIG发布了专门的串口仿真协议(RFCOMMM,为建立在串口之上的传统应用提供了接口环境,使他们可以不做什么改动就能在蓝牙无

31、线链路上工作。RFCOM采用了 ETSI的TS07.10标准的一个子集,并且针对蓝牙的实际应用情况作了修改。RFCOM参考模型见图2-4。 RFCOM支持两种实际应用设备,分别对应于一般串行通信中的数据终端设备DTE和数据通信设备DCE对于这两种设备的区分要由RFCOM高层的执行者来判断。不同的数据链路间及RFCOM与L2CAP间的数据和信息交换以帧的形式进行。RFCOMI支持两台设备间的多路串口仿真,也可仿真多个设备上的串口。RFCOM在应用的过程中涉及到多种流控机制以及RFCOMI自身的流控机制。应用142空调制解调器仿真空调制解调器是计算机网络中的一种模拟调制解调器,用于本地计算机和附近需要调制解调器的外设相连。在传输控制信号时,RFCOM并不区分DTE和DCE设备,当两台同类设备相连时,RFCOMI以传输RS232控制信号的方式创建了一个隐含的空调制解调器。如图2-5所示。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论