Wi-Fi NAN AT 命令集

备注

  • NAN AT 命令集默认未启用。

  • 参考 配置工程(menuconfig) ,进入 CONFIG WIFI 配置,勾选 Enable NAN host control app (km4_tz / WHC host) 来启用 NAN AT 命令集(该选项会自动使能 Enable NAN)。

  • 使能 IPv6 数据面(AT+NANDPIP=6),进入 CONFIG LWIP 配置,勾选 Enable LWIP IPV6

AT+NANSTART

功能说明

初始化 NAN 并加入或组建 cluster

备注

NAN 以 auto_accept 模式启动:收到 NDP 请求时由事件上下文自动应答,并在 SETUP 配对后自动进行 NIK 跟进(对 NDP 超时较短的对端,如 iPhone,尤为必要)。

命令格式

AT+NANSTART

响应格式

成功响应:

OK

错误响应:

ERROR: -1

AT+NANSTOP

功能说明

停止 NAN 并释放其资源

命令格式

AT+NANSTOP

响应格式

成功响应:

OK

AT+NANPUB

功能说明

发布 NAN 服务(作为 publisher)

命令格式

AT+NANPUB=name,<service_name>[,<type>,<value>……]

响应格式

成功响应:

OK

错误响应:

ERROR: -1

参数

<type>:

参数类型,后跟对应 <value>

  • name:后跟服务名称

  • id:后跟 publish ID

  • sec:后跟安全类型

  • pmk:后跟预共享密钥

  • pw:后跟 passphrase

  • bstrap:后跟 bootstrapping method

  • nik:后跟 NIK caching 开关

  • gtk:后跟 GTK cipher 开关

<value>:

对应 <type> 的具体参数

name:

服务名称字符串(必需)

id:

publish ID

  • 默认值:1

sec:

安全类型

  • 0:open(默认值)

  • 1:pmk

  • 2:passphrase

  • 3:pairing

pmk:

预共享密钥

  • 长度:32 字符

  • 当 sec 为 1 时必需

pw:

passphrase

  • 长度范围:[1,16] 字符

  • 当 sec 为 2 时必需

bstrap:

bootstrapping method(enum nan_bstrap_method,位掩码,字段为 u8、仅低 8 bit 可设)

  • 仅当 sec3(pairing)时生效,默认 1(opportunistic)

  • 每个 bit 是一种凭据交换方式,两端须构成 display↔keypad / display↔scan / tag↔reader 的兼容配对,否则静默不发现

  • 常用取值(值 / bit / 含义 / 角色):

    • 1(BIT0):opportunistic(无口令)—— 对称,两端都填 1

    • 2(BIT1):pin-code —— display 侧(展示 PIN)

    • 4(BIT2):passphrase —— display 侧(展示口令)

    • 6(BIT1|BIT2):display(pin-code + passphrase)—— display 侧,iPhone 场景 publisher 用

    • 8(BIT3):QR code —— display 侧(显示二维码)

    • 16(BIT4):NFC tag —— 作 NFC 标签

    • 32(BIT5):pin-code —— keypad 侧(键盘输入 PIN)

    • 64(BIT6):passphrase —— keypad 侧(键盘输入口令)

    • 128(BIT7):QR code —— scan 侧(摄像头扫码)

nik:

NIK caching 开关

  • 0:禁用

  • 1:启用(默认值)

gtk:

GTK cipher 开关

  • 0:禁用(默认值)

  • 1:启用

备注

  • <type>、<value> 键值对顺序可任意排列,且必须成对出现(name 及其值必填)。

  • 参数缺失、成对关系不满足或包含未知 <type> 时,会先打印命令用法帮助,再返回 ERROR: -1

  • bstrap 常用配对(仅 sec3 时生效):

    • opportunistic:两端都填 1,且跳过 NANSETPW;

    • 真机 iPhone:publisher 填 6(display),iPhone 为 keypad(用户输 PIN);

    • 两板 pin-code 配对:一端填 32(keypad),另一端填 2(display)。

AT+NANSUB

功能说明

订阅 NAN 服务(作为 subscriber)

命令格式

AT+NANSUB=name,<service_name>[,<type>,<value>……]

响应格式

成功响应:

OK

错误响应:

ERROR: -1

参数

<type>:

参数类型,后跟对应 <value>

  • name:后跟服务名称

  • id:后跟 subscribe ID

  • sec:后跟安全类型

  • pmk:后跟预共享密钥

  • pw:后跟 passphrase

  • bstrap:后跟 bootstrapping method

  • nik:后跟 NIK caching 开关

<value>:

对应 <type> 的具体参数

name:

服务名称字符串(必需)

id:

subscribe ID

  • 默认值:1

sec:

安全类型

  • 0:open(默认值)

  • 1:pmk

  • 2:passphrase

  • 3:pairing

pmk:

预共享密钥

  • 长度:32 字符

  • 当 sec 为 1 时必需

pw:

passphrase

  • 长度范围:[1,16] 字符

  • 当 sec 为 2 时必需

bstrap:

bootstrapping method(enum nan_bstrap_method,位掩码,字段为 u8、仅低 8 bit 可设)

  • 仅当 sec3(pairing)时生效,默认 1(opportunistic)

  • 每个 bit 是一种凭据交换方式,两端须构成 display↔keypad / display↔scan / tag↔reader 的兼容配对,否则静默不发现

  • 常用取值(值 / bit / 含义 / 角色):

    • 1(BIT0):opportunistic(无口令)—— 对称,两端都填 1

    • 2(BIT1):pin-code —— display 侧(展示 PIN)

    • 4(BIT2):passphrase —— display 侧(展示口令)

    • 6(BIT1|BIT2):display(pin-code + passphrase)—— display 侧,iPhone 场景 publisher 用

    • 8(BIT3):QR code —— display 侧(显示二维码)

    • 16(BIT4):NFC tag —— 作 NFC 标签

    • 32(BIT5):pin-code —— keypad 侧(键盘输入 PIN)

    • 64(BIT6):passphrase —— keypad 侧(键盘输入口令)

    • 128(BIT7):QR code —— scan 侧(摄像头扫码)

nik:

NIK caching 开关

  • 0:禁用

  • 1:启用(默认值)

备注

  • <type>、<value> 键值对顺序可任意排列,且必须成对出现(name 及其值必填)。

  • 参数缺失、成对关系不满足或包含未知 <type> 时,会先打印命令用法帮助,再返回 ERROR: -1

  • bstrap 常用配对(仅 sec3 时生效):

    • opportunistic:两端都填 1,且跳过 NANSETPW;

    • 真机 iPhone:publisher 填 6(display),iPhone 为 keypad(用户输 PIN);

    • 两板 pin-code 配对:一端填 32(keypad),另一端填 2(display)。

AT+NANSETPW

功能说明

设置配对使用的 passphrase。若已发现对端(peer),则作用于该 peer;否则作为全局默认口令。

命令格式

AT+NANSETPW=<passphrase>

响应格式

成功响应:

OK

错误响应:

ERROR: -1

参数

<passphrase>:

配对使用的 passphrase

备注

AT 层不对 <passphrase> 做长度校验(与 NANPUB/NANSUB 的 pw 不同),长度约束由底层 API 决定。

AT+NANBSTRAPREQ

功能说明

由 subscriber 发起 bootstrapping 握手

命令格式

AT+NANBSTRAPREQ

响应格式

成功响应:

OK

错误响应:

ERROR: -1

AT+NANPAIR

功能说明

由 initiator 发起 NAN 配对(PASN)

命令格式

AT+NANPAIR[=verification]

响应格式

成功响应:

OK

错误响应:

ERROR: -1

参数

verification:

配对类型

  • 不带参数:setup 配对(默认)

  • verification:verification(校验)配对

AT+NANDPREQ

功能说明

由 subscriber 向 publisher 发起数据通路(data path)建立

命令格式

AT+NANDPREQ

响应格式

成功响应:

OK

错误响应:

ERROR: -1

AT+NANDPRSP

功能说明

由 publisher 接受数据通路(data path)建立请求

命令格式

AT+NANDPRSP

响应格式

成功响应:

OK

错误响应:

ERROR: -1

备注

使能 auto_accept 时,responder 已在事件上下文中自动应答,本命令为幂等操作。

AT+NANDPEND

功能说明

拆除数据通路(data path)

命令格式

AT+NANDPEND[=<ndp_id>]

响应格式

成功响应:

OK

参数

<ndp_id>:

待拆除的 NDP ID

  • 默认值:0(最后一个 ndp-id)

AT+NANDPIP

功能说明

在数据通路(data path)上拉起 L3 网络接口

命令格式

AT+NANDPIP[=<4/6>]

响应格式

成功响应:

OK

错误响应:

ERROR: -1

参数

<4/6>:

IP 版本

  • 4:静态 IPv4 + 静态 ARP(默认值)

  • 6:IPv6 link-local(EUI-64)+ 静态邻居

备注

  • 6 走 IPv6;缺省或任意非 6 的取值一律按 IPv4 处理。

  • 使用 6 需在编译时使能 CONFIG_LWIP_IPV6