Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
moimo committed Dec 18, 2015
1 parent c562f2b commit 0ac5410
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,21 +70,21 @@ Pando协议定义了一套简单、统一的通信流程与数据包格式,实
2. 接入时必须上报device token和device id.
一方面,服务使用device id区分当前是哪个设备尝试接入;另一方面,服务器会进行校验device token和device id,通过校验后才能进行后续的信息交互。
接入流程中和服务器的任何数据流交互必须校验设备token(包括服务器和设备都需要对协议包中的token字段进行比对校验,如果不合法则应该丢弃)。
3. 设备接入后,不同类型的设备,要以不同频率持续向服务器发送心跳包
3. 设备接入后,定期向服务器发送心跳包保持连接。不同类型的设备的心跳间隔不一样。
4. 在token过期的情况下,服务器会关闭连接或向设备发送“重新登陆”的指令,网关收到后重新进入登陆流程,获取新的token。
5. 当设备发现上次心跳发送失败时,重新进入接入流程。

## 四、数据包交互
设备完成接入流程后,开始信息的交互,包括状态、数据、事件。
设备完成接入流程后,开始信息的交互,包括状态、命令、事件。
### 1. 信息的传递的两个阶段:
* **设备和硬件子设备之间**
受硬件子设备性能所限,包括运算性能、内存、传输带宽等,这阶段使用较为紧凑的二进制数据包形式进行传输。
数据通过串口,蓝牙,I2C等接口传输,传输路径较短,数据丢失损坏的概率较小,因此没有涉及复杂的校验机制。
目前仅使用了crc校验确定数据的完整,采用sequence、ack的方式保证数据的可靠到达。
如下图所示,接收方需要回复ack包进行确认,要求回复的sequence与收到的一致。如果发送方没有收到ack,则重发数据包,尝试3次后不再重传。
指令、状态、事件拥有独立的sequence,每发一个包递增1,重传数据包时sequence不变。
状态、命令、事件拥有独立的sequence,每发一个包递增1,重传数据包时sequence不变。
![](images/hardeware-data-seq.png)
实际情况还是需要一种简单,可移植,开销小的通信机制保证数据的完整性【待实现】。
实际情况需要一种更加简单、可靠、可移植,开销小的通信机制保证数据的完整性【待实现】。

* **设备和服务器之间**
internet网络环境非常复杂,进行数据传输时,必须有多种机制保证数据传输的安全及完整性。
Expand All @@ -94,7 +94,7 @@ internet网络环境非常复杂,进行数据传输时,必须有多种机制
* **关键信息:传输过程中无需转换**
sub device id: 子设备id。一个网关拥有多个子设备,id用于表示数据包归属于哪个子设备
command num,event num:指令编号、事件编号
property num: 数据的属性编号
property num: 状态的属性编号
tlv: type, length, value的缩写,type表示value的数据类型,length则表示value(bytes, string这种无类型长度的数据)的具体长度。tlv保存了指令、事件、状态属性的参数。
* **辅助信息:网关会根据场景进行转换**
**网关**
Expand Down Expand Up @@ -126,8 +126,8 @@ flag:用于未来协议扩展
* ESP8266作为接入设备,同时自己又充当一个硬件层设备,通过GPIO控制外围接口(GPIO等);
* 选择3G模块作为接入internet的通道时,由于3G模块上无法运行自己的软件,只能通过AT指令进行通信。此时选择STM32作为硬件层设备,同时需要在上面运行接入设备的软件。

### 5. 平台通用的指令和事件
服务器会操作维护网关的一些状态,为了实现这个目的,定义了[平台通用的指令和事件](doc/universal-event-and-command.md)
### 5. 平台通用的命令和事件
服务器会操作维护网关的一些状态,为了实现这个目的,定义了[平台通用的命令和事件](doc/universal-event-and-command.md)
网关的程序需要实现一个虚拟的硬件子设备,来实现这些通用指令和事件。

## 数据结构
Expand Down

0 comments on commit 0ac5410

Please sign in to comment.