标准描述了RFID阅读器和客户端之间的接口。是面向消息的协议。
需要用户自己保持客户端和阅读器间的状态一致性。
客户端发起的到阅读器的消息:
- 设置阅读器的配置
- 读取阅读器的配置
- 发现阅读器的能力
- 管理inventory操作
- 管理访问操作
阅读器发起的到客户端的消息:
- 报告阅读器状态
- 报告RF survey
- 报告Inventory的结果
- 报告访问的结果
- Keepalives
客户端发起的到阅读器的消息都需要响应。
阅读器发起的到客户端的消息只有keepalives需要响应。
LLRP (1.1版)的连接包含两个阶段:版本协商(我现在手头的设备不支持这个功能)和运行时。
运行时的执行阶段如下:
- 发现能力
- 设备配置
- (可选的)inventory和访问操作设置
- 执行inventory循环:如果标签匹配成功,访问控制操作将在inventory周期内执行。
- 执行RF survey操作
- 发送报告回客户端
LLRP中的RF操作有:
- 阅读器操作(RO): 天线Inventory, RF Survey
- 访问操作(AO)
天线Inventory(AI)是阅读器和标签间的最小交互单元,用AISpec来描述,包括N * M个天线Inventory操作,其中N是天线数,M是InventoryParameterSpecs数。
RF Survey是阅读器使用一系列频率在一个天线上执行扫描和测量电量的操作。用RFSurveySpec描述。
阅读器操作用ROSpec描述,包括至少一个Spec(AISpec或RFSuerveySpec)。
ROSpec的状态图
阅读器根据ROSpec中的优先级进行强占(我手头的设备只支持一个ROSpec,没有这种情况)。
在ROSpec进入Active状态后,依次选择ROSpec中的Spec(AISpec或RFSurveySpec)执行。
访问操作用AccessSpec描述,通过引用的ID号与ROSpec相关联。AccessSpec中包含的TagSpec和OpSpec分别表示标签匹配条件和操作说明,当ROSpec中的AISpec选择了一个标签,而这个标签符合了某个与该ROSpec关联的AccessSpec中的TagSpec,则根据OpSpec的描述对该标签执行对应操作。
有一种特殊的OpSpec——ClientRequestOpSpec,阅读器会向客户端发送请求来获取额外的参数,需要客户端响应。
AccessSpec的状态
LLRP中连接可以是客户端发起的,也可以是阅读器发起的(还没有搞清楚阅读器如何发起)。
缺省的端口是5084,缺省的TLS端口是5085(没有试验过)。
连接到一个已经建立连接的阅读器时,如果成功,原先的连接会被关闭;如果不能关闭原来的连接,则当前的请求返回错误。
当阅读器收不到客户端的keepalives响应时,阅读器会关闭连接。