Wi-Fi 开发指南
简介
Quectel FCM242D 和 FGM842D 系列模块支持 QuecOpen® 解决方案。QuecOpen® 是基于 RTOS 系统的嵌入式开发平台。它旨在简化物联网应用的开发和设计。有关 QuecOpen® 的更多信息,请参见 快速入门指南。
本文档适用于基于 SDK 构建环境的 QuecOpen® 解决方案。它介绍了 FCM242D 和 FGM842D 系列模块的 Wi-Fi API 和相关示例,以及通过网页进行 Wi-Fi 配网的内容。
Wi-Fi API
头文件
ql_wlan.h,Wi-Fi API 的头文件,在 ql_components/api 目录中。除非另有说明,本文档中提到的所有头文件都在此目录中。
API 概述
| 函数 | 描述 |
|---|---|
ql_wlan_get_mac() |
获取 Wi-Fi 通信的 MAC 地址。 |
ql_wlan_set_mac() |
设置 Wi-Fi 通信的 MAC 地址。 |
ql_wlan_start() |
启动 STA 或 AP 模式。 |
ql_wlan_start_sta_adv() |
启用 STA 快速连接 AP。 |
ql_wlan_stop() |
停止 STA 或 AP 模式。 |
ql_wlan_start_scan() |
启用 AP 扫描。 |
ql_wlan_scan_ap_reg_cb() |
注册扫描完成后调用的回调函数。 |
ql_wlan_sta_scan_result() |
获取 STA 模式下的网络扫描结果。 |
ql_wlan_start_assign_scan() |
扫描指定的 AP。 |
ql_wlan_status_register_cb() |
注册 Wi-Fi 状态寄存器的回调函数。 |
ql_wlan_start_monitor() |
启用监控模式。 |
ql_wlan_stop_monitor() |
禁用监控模式。 |
ql_wlan_register_monitor_cb() |
注册监控模式的回调函数。 |
ql_wlan_ap_para_info_get() |
获取当前的 AP 信息。 |
ql_wlan_get_ip_status() |
获取当前的 Wi-Fi 网络状态。 |
ql_wlan_get_link_status() |
获取模块作为 STA 时与 AP 的连接状态。 |
ql_wlan_get_channel() |
获取正在监控的通道。 |
ql_wlan_set_channel() |
设置要监控的通道。 |
ql_wlan_set_channel_sync() |
设置要监控的通道而不重新启动监控模式。 |
ql_sta_chiper_type() |
获取连接 AP 的加密方法。 |
ql_wlan_ota_download() |
升级模块固件。 |
ql_ap_ip_is_start() |
获取 AP 的状态。 |
ql_sta_ip_is_start() |
查询模块作为 STA 时是否连接到 AP。 |
ql_airkiss_start() |
启动 AirKiss 配网。 |
ql_airkiss_is_at_its_context() |
检查 AirKiss 配网是否正在进行。 |
ql_wifi_stainfo_read() |
从 flash 读取 Wi-Fi 信息。 |
ql_wifi_stainfo_write() |
将 Wi-Fi 信息写入 flash。 |
ql_wifi_stainfo_remove() |
从 flash 删除 Wi-Fi 信息。 |
ql_uart_baudrate_write() |
将波特率写入 flash。 |
ql_uart_baudrate_read() |
从 flash 读取波特率。 |
ql_uart_baudrate_remove() |
从 flash 删除波特率。 |
API 描述
ql_wlan_get_mac
此函数获取 Wi-Fi 通信的 MAC 地址。
原型:
int ql_wlan_get_mac(char *mac)
参数:
mac:[出] 获取的 MAC 地址。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wifi_errcode_e
函数执行结果代码的枚举:
typedef enum
{
QL_WIFI_SUCCESS = 0,
QL_WIFI_EXECUTE_ERR,
QL_WIFI_INVALID_PARAM_ERR,
} ql_wifi_errcode_e
成员:
| 成员 | 描述 |
|---|---|
QL_WIFI_SUCCESS |
执行成功 |
QL_WIFI_EXECUTE_ERR |
执行失败 |
QL_WIFI_INVALID_PARAM_ERR |
参数无效 |
ql_wlan_set_mac
此函数设置 Wi-Fi 通信的 MAC 地址。
原型:
int ql_wlan_set_mac(char *mac)
参数:
mac:[入] 要设置的 MAC 地址。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_start
此函数启动 STA 或 AP 模式。上层应用程序在获取 SSID 和密码后启动 Wi-Fi 网络连接。
原型:
int ql_wlan_start(ql_network_init_s *inNetworkInitPara)
参数:
inNetworkInitPara:[入] Wi-Fi 网络连接配置信息。有关详细信息,请参见 ql_network_init_s。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_network_init_s
Wi-Fi 网络连接配置信息的结构:
typedef struct
{
char wifi_mode;
char wifi_ssid[33];
char wifi_key[108];
char local_ip_addr[16];
char net_mask[16];
char gateway_ip_addr[16];
char dns_server_ip_addr[16];
char dhcp_mode;
char wifi_bssid[6];
char reserved[26];
int wifi_retry_interval;
bool hidden_ssid;
} ql_network_init_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| char | wifi_mode |
Wi-Fi 工作模式。有关详细信息,请参见 ql_wifi_mode_e。 |
| char | wifi_ssid |
要连接或创建的 AP 的 SSID。 |
| char | wifi_key |
要连接或创建的 AP 的密码。 |
| char | local_ip_addr |
静态 IP 地址,当 DHCP 禁用时有效。 |
| char | net_mask |
静态子网掩码,当 DHCP 禁用时有效。 |
| char | gateway_ip_addr |
静态网关地址,当 DHCP 禁用时有效。 |
| char | dns_server_ip_addr |
静态 DNS 地址,当 DHCP 禁用时有效。 |
| char | dhcp_mode |
DHCP 模式:0 = DHCP_DISABLE (DHCP 禁用),1 = DHCP_CLIENT (DHCP 客户端),2 = DHCP_SERVER (DHCP 服务器,仅在 AP 模式下支持) |
| char | wifi_bssid |
AP 的 BSSID(保留,目前不支持)。 |
| char | reserved |
保留。 |
| int | wifi_retry_interval |
重连间隔。单位:毫秒(保留,目前不支持)。 |
| bool | hidden_ssid |
是否隐藏 SSID(目前不支持)。 |
ql_wifi_mode_e
Wi-Fi 工作模式的枚举:
typedef enum
{
QL_SOFT_AP,
QL_STATION,
QL_P2P,
} ql_wifi_mode_e
成员:
| 成员 | 描述 |
|---|---|
QL_SOFT_AP |
AP 模式 |
QL_STATION |
STA 模式 |
QL_P2P |
P2P 模式(目前不支持) |
ql_wlan_start_sta_adv
此函数启用 STA 快速连接 AP。
原型:
int ql_wlan_start_sta_adv(ql_network_InitTypeDef_adv_s *inNetworkInitParaAdv)
参数:
inNetworkInitParaAdv:[入] 快速连接配置信息。有关详细信息,请参见 ql_network_InitTypeDef_adv_s。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_network_InitTypeDef_adv_s
快速连接配置信息的结构:
typedef struct ql_network_InitTypeDef_adv_st
{
ql_apinfo_adv_s ap_info;
char key[64];
int key_len;
char local_ip_addr[16];
char net_mask[16];
char gateway_ip_addr[16];
char dns_server_ip_addr[16];
char dhcp_mode;
char reserved[32];
int wifi_retry_interval;
} ql_network_InitTypeDef_adv_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
ql_apinfo_adv_s |
ap_info |
要快速连接的 AP 信息。有关详细信息,请参见 ql_apinfo_adv_s。 |
| char | key |
要快速连接的 AP 的密码。 |
| int | key_len |
密码长度。单位:字节。 |
| char | local_ip_addr |
静态 IP 地址,当 DHCP 禁用时有效。 |
| char | net_mask |
静态子网掩码,当 DHCP 禁用时有效。 |
| char | gateway_ip_addr |
静态网关地址,当 DHCP 禁用时有效。 |
| char | dns_server_ip_addr |
静态 DNS 地址,当 DHCP 禁用时有效。 |
| char | dhcp_mode |
DHCP 模式:0 = DHCP_DISABLE (DHCP 禁用),1 = DHCP_CLIENT (DHCP 客户端),2 = DHCP_SERVER (DHCP 服务器,仅在 AP 模式下支持) |
| char | reserved |
保留。 |
| int | wifi_retry_interval |
重连时间。单位:毫秒(保留)。 |
ql_apinfo_adv_s
要快速连接的 AP 信息的结构:
typedef struct
{
char ssid[32];
char bssid[6];
uint8_t channel;
uint8_t security;
} ql_apinfo_adv_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| char | ssid |
要快速连接的 AP 的 SSID。 |
| char | bssid |
要快速连接的 AP 的 BSSID。 |
| uint8_t | channel |
要快速连接的 AP 的通道。 |
| uint8_t | security |
要快速连接的 AP 的加密方法。有关详细信息,请参见 ql_wlan_sec_type_e。 |
ql_wlan_sec_type_e
加密方法的枚举:
typedef enum
{
QL_SECURITY_TYPE_NONE,
QL_SECURITY_TYPE_WEP,
QL_SECURITY_TYPE_WPA_TKIP,
QL_SECURITY_TYPE_WPA_AES,
QL_SECURITY_TYPE_WPA_MIXED,
QL_SECURITY_TYPE_WPA2_TKIP,
QL_SECURITY_TYPE_WPA2_AES,
QL_SECURITY_TYPE_WPA2_MIXED,
QL_SECURITY_TYPE_WPA3_SAE,
QL_SECURITY_TYPE_WPA3_WPA2_MIXED,
QL_SECURITY_TYPE_EAP,
QL_SECURITY_TYPE_OWE,
QL_SECURITY_TYPE_AUTO,
} ql_wlan_sec_type_e
成员:
| 成员 | 描述 |
|---|---|
QL_SECURITY_TYPE_NONE |
无加密。 |
QL_SECURITY_TYPE_WEP |
WEP 加密。 |
QL_SECURITY_TYPE_WPA_TKIP |
WPA_TKIP 加密。 |
QL_SECURITY_TYPE_WPA_AES |
WPA_AES 加密。 |
QL_SECURITY_TYPE_WPA_MIXED |
WPA 混合加密。 |
QL_SECURITY_TYPE_WPA2_TKIP |
WPA2_TKIP 加密。 |
QL_SECURITY_TYPE_WPA2_AES |
WPA2_AES 加密。 |
QL_SECURITY_TYPE_WPA2_MIXED |
WPA2 混合加密。 |
QL_SECURITY_TYPE_WPA3_SAE |
WPA3_SAE 加密。 |
QL_SECURITY_TYPE_WPA3_WPA2_MIXED |
WPA2/WPA3 混合加密。 |
QL_SECURITY_TYPE_EAP |
可扩展认证协议。 |
QL_SECURITY_TYPE_OWE |
机会性无线加密。 |
QL_SECURITY_TYPE_AUTO |
自动安全类型选择。 |
ql_wlan_stop
此函数停止 STA 或 AP 模式。
原型:
int ql_wlan_stop(ql_wifi_mode_e mode)
参数:
mode:[入] 要禁用的 Wi-Fi 工作模式。有关详细信息,请参见 ql_wifi_mode_e。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_start_scan
此函数启用 AP 扫描。
原型:
int ql_wlan_start_scan(void)
参数:
无
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_scan_ap_reg_cb
此函数注册扫描完成后调用的回调函数。
原型:
int ql_wlan_scan_ap_reg_cb(ql_func_scan_callback ind_cb)
参数:
ind_cb:[入] 扫描完成后调用的回调函数。有关详细信息,请参见 ql_func_scan_callback。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_func_scan_callback
此函数是扫描完成后调用的回调函数。
原型:
typedef void (*ql_func_scan_callback)(void *arg, unsigned char vif_idx)
参数:
arg:[入] 保留。
vif_idx:[入] 保留。
ql_wlan_sta_scan_result
此函数获取 STA 模式下的网络扫描结果。可以在扫描完成后调用。
原型:
int ql_wlan_sta_scan_result(ql_scan_result_s *results)
参数:
results:[入] 扫描结果。有关详细信息,请参见 ql_scan_result_s。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_scan_result_s
扫描结果的结构:
typedef struct ql_ScanResult_adv
{
char ApNum;
ql_apliststruct *ql_aplist_s;
} ql_scan_result_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| char | ApNum |
扫描到的 AP 数量。 |
| ql_apliststruct* | ql_aplist_s |
扫描到的 AP 信息。有关详细信息,请参见 ql_apliststruct。 |
ql_apliststruct
扫描到的 AP 信息的结构:
typedef struct
{
char ssid[33];
char ApPower;
uint8_t bssid[6];
char channel;
uint8_t security;
} ql_apliststruct
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| char | ssid |
扫描到的 AP 的 SSID。 |
| char | ApPower |
扫描到的 AP 的信号强度。范围:-100 到 0。 |
| uint8_t | bssid |
扫描到的 AP 的 BSSID。 |
| char | channel |
扫描到的 AP 的通道。 |
| uint8_t | security |
AP 加密方法。有关详细信息,请参见 ql_wlan_sec_type_e。 |
ql_wlan_start_assign_scan
此函数扫描指定的 AP。
原型:
int ql_wlan_start_assign_scan(UINT8 **ssid_ary, UINT8 ssid_num)
参数:
ssid_ary:[入] 指定 AP 的 SSID。
ssid_num:[入] 指定 AP 的数量。它只能设置为 1,这意味着只能扫描指定的 AP。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_status_register_cb
此函数注册 Wi-Fi 状态寄存器的回调函数。
原型:
int ql_wlan_status_register_cb(ql_func_status_callback cb)
参数:
cb:[入] Wi-Fi 状态寄存器的回调函数。有关详细信息,请参见 ql_func_status_callback。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_func_status_callback
此函数是 Wi-Fi 状态寄存器的回调函数。
原型:
typedef void (*ql_func_status_callback)(ql_wlan_evt_type *ctxt)
参数:
ctxt:[出] 保留。
ql_wlan_start_monitor
此函数启用监控模式。
原型:
int ql_wlan_start_monitor(void)
参数:
无
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_stop_monitor
此函数禁用监控模式。
原型:
int ql_wlan_stop_monitor(void)
参数:
无
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_register_monitor_cb
此函数注册监控模式的回调函数。
原型:
int ql_wlan_register_monitor_cb(ql_monitor_cb_t fn)
参数:
fn:[入] 监控模式的回调函数。有关详细信息,请参见 ql_monitor_cb_t。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_monitor_cb_t
此函数是监控模式的回调函数。
原型:
typedef void (*ql_monitor_cb_t)(uint8_t *data, int len, ql_wifi_link_info_t *info)
参数:
data:[出] 监控期间返回的数据。
len:[出] 监控期间返回的数据长度。单位:字节。
info:[出] 监控数据包的信息。有关详细信息,请参见 ql_wifi_link_info_t。
ql_wifi_link_info_t
监控数据包信息的结构:
typedef struct
{
int8_t rssi;
} ql_wifi_link_info_t
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| int8_t | rssi |
监控数据包的信号强度。 |
ql_wlan_ap_para_info_get
此函数获取当前的 AP 信息。
原型:
int ql_wlan_ap_para_info_get(ql_network_init_ap_s *ap_info)
参数:
ap_info:[出] AP 信息。有关详细信息,请参见 ql_network_init_ap_s。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_network_init_ap_s
AP 信息的结构:
typedef struct ql_network_init_ap_st
{
char wifi_ssid[32];
char wifi_key[64];
uint8_t channel;
uint8_t security;
uint8_t ssid_hidden;
uint8_t max_con;
char local_ip_addr[16];
char net_mask[16];
char gateway_ip_addr[16];
char dns_server_ip_addr[16];
char dhcp_mode;
char reserved[32];
int wifi_retry_interval;
} ql_network_init_ap_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| char | wifi_ssid |
要连接或创建的 AP 的 SSID。 |
| char | wifi_key |
要连接或创建的 AP 的密码。 |
| uint8_t | channel |
AP 的通道。 |
| uint8_t | security |
AP 加密方法(保留,目前不支持)。 |
| uint8_t | ssid_hidden |
启用 SSID 隐藏功能(保留,目前不支持)。 |
| uint8_t | max_con |
可以连接到当前 AP 的 STA 的最大数量(保留,目前不支持)。 |
| char | local_ip_addr |
静态 IP 地址,当 DHCP 禁用时有效。 |
| char | net_mask |
静态子网掩码,当 DHCP 禁用时有效。 |
| char | gateway_ip_addr |
静态网关地址,当 DHCP 禁用时有效。 |
| char | dns_server_ip_addr |
静态 DNS 地址,当 DHCP 禁用时有效。 |
| char | dhcp_mode |
DHCP 模式:0 = DHCP_DISABLE (DHCP 禁用),1 = DHCP_CLIENT (DHCP 客户端),2 = DHCP_SERVER (DHCP 服务器,仅在 AP 模式下支持) |
| char | reserved |
保留。 |
| int | wifi_retry_interval |
重连间隔。单位:毫秒(保留,目前不支持)。 |
ql_wlan_get_ip_status
此函数获取当前的 Wi-Fi 网络状态。
原型:
int ql_wlan_get_ip_status(ql_ip_status_s *outNetpara, ql_wifi_mode_e inInterface)
参数:
outNetpara:[出] Wi-Fi 网络状态。有关详细信息,请参见 ql_ip_status_s。
inInterface:[入] Wi-Fi 工作模式。有关详细信息,请参见 ql_wifi_mode_e。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_ip_status_s
Wi-Fi 网络状态的结构:
typedef struct
{
uint8_t dhcp;
char ip[16];
char gate[16];
char mask[16];
char dns[16];
char mac[16];
char broadcastip[16];
char standby_dns[16];
} ql_ip_status_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| uint8_t | dhcp |
获取的 DHCP 模式:0 = DHCP_DISABLE (DHCP 禁用),1 = DHCP_CLIENT (DHCP 客户端),2 = DHCP_SERVER (DHCP 服务器,仅在 AP 模式下支持) |
| char | ip |
获取的 IP 地址。 |
| char | gate |
获取的网关 IP 地址。 |
| char | mask |
获取的子网掩码。 |
| char | dns |
获取的 DNS 服务 IP 地址。 |
| char | mac |
获取的 MAC 地址。 |
| char | broadcastip |
获取的广播 IP 地址(保留,目前不支持)。 |
| char | standby_dns |
辅助 DNS 服务器地址。 |
ql_wlan_get_link_status
此函数获取模块作为 STA 时与 AP 的连接状态。
原型:
int ql_wlan_get_link_status(ql_link_status_s *outStatus)
参数:
outStatus:[出] 连接状态。有关详细信息,请参见 ql_link_status_s。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_link_status_s
连接状态的结构:
typedef struct
{
int conn_state;
int wifi_strength;
uint8_t ssid[33];
uint8_t bssid[6];
uint16_t aid;
int channel;
uint8_t security;
} ql_link_status_s
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| int | conn_state |
当前连接状态。 |
| int | wifi_strength |
当前信号强度。 |
| uint8_t | ssid |
当前连接 AP 的 SSID。 |
| uint8_t | bssid |
AP 的 BSSID。 |
| uint16_t | aid |
AP 分配的唯一标识符。 |
| int | channel |
当前连接 AP 的通道。 |
| uint8_t | security |
AP 加密方法。有关详细信息,请参见 ql_wlan_sec_type_e。 |
ql_wlan_get_channel
此函数获取正在监控的通道。
原型:
int ql_wlan_get_channel(void)
参数:
无
返回值:
正在监控的通道。
ql_wlan_set_channel
此函数设置要监控的通道。
原型:
int ql_wlan_set_channel(int channel)
参数:
channel:[入] 通道。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wlan_set_channel_sync
此函数设置要监控的通道而不重新启动监控模式。
原型:
int ql_wlan_set_channel_sync(int channel)
参数:
channel:[入] 通道。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_sta_chiper_type
此函数获取连接 AP 的加密方法。
原型:
int ql_sta_chiper_type(void)
参数:
无
返回值:
AP 加密方法。有关详细信息,请参见 ql_wlan_sec_type_e。
ql_wlan_ota_download
此函数升级模块固件。
原型:
int ql_wlan_ota_download(const char *uri)
参数:
uri:[入] 存储升级包的 HTTP 服务器域名。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_ap_ip_is_start
此函数获取 AP 的状态。
原型:
uint32 ql_ap_ip_is_start(void)
参数:
无
返回值:
0 = 禁用,1 = 启用
ql_sta_ip_is_start
此函数查询模块作为 STA 时是否连接到 AP。
原型:
uint32 ql_sta_ip_is_start(void)
参数:
无
返回值:
0 = 未连接,1 = 已连接
ql_airkiss_start
此函数启动 AirKiss 配网。
原型:
int ql_airkiss_start(uint8_t start)
参数:
start:[入] 启动或停止 AirKiss 配网。0 = 停止,1 = 启动
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_airkiss_is_at_its_context
此函数检查 AirKiss 配网是否正在进行。
原型:
uint32 ql_airkiss_is_at_its_context(void)
参数:
无
返回值:
0 = AirKiss 配网未进行,1 = AirKiss 配网正在进行
ql_wifi_stainfo_read
此函数从 flash 读取 Wi-Fi 信息。
原型:
int ql_wifi_stainfo_read(ql_wifi_nv_info_t *wifi_info)
参数:
wifi_info:[出] Wi-Fi 信息。有关详细信息,请参见 ql_wifi_nv_info_t。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wifi_nv_info_t
Wi-Fi 信息的结构:
typedef struct {
uint8_t sync;
char sta_ssid[33];
char sta_pwd[64];
uint8_t sta_bssid[6];
uint8_t channel;
uint8_t auto_conn;
} ql_wifi_nv_info_t
参数:
| 类型 | 参数 | 描述 |
|---|---|---|
| uint8_t | sync |
扫描到的 AP 数量。 |
| char | sta_ssid |
AP 的 SSID。 |
| char | sta_pwd |
连接到 AP 的密码。 |
| uint8_t | sta_bssid |
AP 的 BSSID。 |
| uint8_t | channel |
通道。 |
| uint8_t | auto_conn |
是否自动重连。0 = 不自动重连,1 = 自动重连。 |
ql_wifi_stainfo_write
此函数将 Wi-Fi 信息写入 flash。
原型:
int ql_wifi_stainfo_write(ql_wifi_nv_info_t *wifi_info)
参数:
wifi_info:[入] Wi-Fi 信息。有关详细信息,请参见 ql_wifi_nv_info_t。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_wifi_stainfo_remove
此函数从 flash 删除 Wi-Fi 信息。
原型:
int ql_wifi_stainfo_remove(void)
参数:
无
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_uart_baudrate_write
此函数将波特率写入 flash。
原型:
int ql_uart_baudrate_write(int *baud)
参数:
baud:[入] 波特率。单位:Bd。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_uart_baudrate_read
此函数从 flash 读取波特率。
原型:
int ql_uart_baudrate_read(int *baud)
参数:
baud:[出] 波特率。单位:Bd。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
ql_uart_baudrate_remove
此函数从 flash 删除波特率。
原型:
int ql_uart_baudrate_remove(void)
参数:
baud:[入] 波特率。单位:Bd。
返回值:
函数执行结果代码。有关详细信息,请参见 ql_wifi_errcode_e。
示例代码
ql_wlan_demo.c,Wi-Fi API 示例代码文件,在 ql_application/example/wlan_demo 目录中,您可以在其中查看完整的 Wi-Fi API 示例并实现 Wi-Fi 相关功能。以下显示了一些相关功能的示例代码:
启用 STA 连接 AP
void ql_demo_sta_app_init(char *oob_ssid, char *connect_key)
{
/* 定义用于传递参数的结构 */
ql_network_init_s wNetConfig;
int ssid_len, key_len;
os_memset(&wNetConfig, 0x0, sizeof(ql_network_init_s));
/* 检查 SSID 的长度,不能超过 32 字节 */
ssid_len = os_strlen(oob_ssid);
if(SSID_MAX_LEN < ssid_len || ssid_len < 1)
{
ql_wlan_log("ssid length error\n");
return;
}
key_len = os_strlen(connect_key);
if (STA_KEY_MAX_LEN < key_len || key_len < 8)
{
bk_printf("key length error\n");
return;
}
/* 将 SSID 和密码传递到结构中 */
os_strcpy((char *)wNetConfig.wifi_ssid, oob_ssid);
os_strcpy((char *)wNetConfig.wifi_key, connect_key);
/* STATION 模式 */
wNetConfig.wifi_mode = QL_STATION;
/* 使用 DHCP CLIENT 从路由器动态获取 IP 地址 */
wNetConfig.dhcp_mode = DHCP_CLIENT;
wNetConfig.wifi_retry_interval = 100;
ql_wlan_log("ssid:%s key:%s\n", wNetConfig.wifi_ssid, wNetConfig.wifi_key);
/* 启动 STATION */
ql_wlan_start(&wNetConfig);
}
启动 AP
void ql_demo_softap_app_init(char *ap_ssid, char *ap_key)
{
/* 定义用于传递参数的结构 */
ql_network_init_s wNetConfig;
int len;
/* 清除结构 */
os_memset(&wNetConfig, 0x0, sizeof(ql_network_init_s));
len = os_strlen(ap_ssid);
if(SSID_MAX_LEN < len || len < 1)
{
ql_wlan_log("ssid length error\n");
return;
}
len = os_strlen(ap_key);
if(63 < len || len < 8)
{
bk_printf("key length error\n");
return;
}
/* 传递 ap ssid 和 ap key 以连接 */
os_strcpy((char *)wNetConfig.wifi_ssid, ap_ssid);
os_strcpy((char *)wNetConfig.wifi_key, ap_key);
/* AP 模式 */
wNetConfig.wifi_mode = QL_SOFT_AP;
/* 使用 DHCP SERVER 模式,需要将静态地址分配为本地地址 */
wNetConfig.dhcp_mode = DHCP_SERVER;
wNetConfig.wifi_retry_interval = 100;
os_strcpy((char *)wNetConfig.local_ip_addr, QL_WLAN_DEFAULT_IP);
os_strcpy((char *)wNetConfig.net_mask, QL_WLAN_DEFAULT_MASK);
os_strcpy((char *)wNetConfig.gateway_ip_addr, QL_WLAN_DEFAULT_GW);
os_strcpy((char *)wNetConfig.dns_server_ip_addr, QL_WLAN_DEFAULT_GW);
ql_wlan_log("ssid:%s key:%s\n", wNetConfig.wifi_ssid, wNetConfig.wifi_key);
/* 启动 ap */
ql_wlan_start(&wNetConfig);
}
启动 Wi-Fi 扫描并分析扫描结果
/* 回调函数,用于扫描后解析扫描结果 */
static void scan_cb(void *ctxt, uint8_t param)
{
int ret = 0;
ql_scan_result_s info;
char *auth_str[] = {"open", "wep", "wpa", "wpa", "wpa2", "wpa2", "wpa/wpa2", "wpa3", "wpa2/wpa3"};
ret = ql_wlan_sta_scan_result(&info);
if (ret == 0) {
ql_wlan_log("Got ap count: %d\n", info.ApNum);
for (int i = 0; i < info.ApNum; i++){
debug_log("\"%s\", %02x%02x%02x%02x%02x%02x, %d, %s, %d\n",
info.ql_aplist_s[i].ssid, MAC2STR(info.ql_aplist_s[i].bssid),
info.ql_aplist_s[i].ApPower, auth_str[info.ql_aplist_s[i].security],
info.ql_aplist_s[i].channel);
}
os_free(info.ql_aplist_s);
}
else
{
ql_wlan_log("not found bss.\n");
}
}
void ql_demo_scan_app_init(void)
{
/* 注册扫描回调函数 */
ql_wlan_scan_ap_reg_cb(scan_cb);
/* 启动扫描 */
ql_wlan_start_scan();
}
通过网页进行 Wi-Fi 配网
环境准备
硬件环境:
| 硬件 | 数量 |
|---|---|
| Quectel FCM242D-TE-B | 1 |
| Micro USB 线缆 | 2 |
| PC | 1 |

Wi-Fi 配网步骤
编译和下载代码
在 ql_app_mian.c 中将宏 CFG_ENABLE_QUECTEL_AP_NET 设置为 1。如下图所示:

请参见 快速入门指南 获取代码编译步骤。编译后生成的 .bin 文件存储在 out/ 目录中。将 .bin 文件烧录到开发板。烧录过程完成后,模块将自动重置,SDK 中的 Wi-Fi 配网示例程序将自动运行。
Wi-Fi 配网过程
运行 SDK 中的 Wi-Fi 配网示例程序,启用热点名称为 "FCM242D"(使用 FCM242D 或 FGM842D 系列模块时,热点名称固定为 "FCM242D")和密码为 "12345678" 的热点。

连接到 "FCM242D" 热点,并在 PC 上的浏览器中输入 "192.168.19.1",然后显示 Wi-Fi 配网界面。

在 "SSID" 和 "Password" 的输入框中输入 SSID 和密码,然后单击 Save 以连接 Wi-Fi。

查看模块的日志以检查模块是否连接到指定的 AP 热点。如果显示下图中红色框中的信息,则已连接到 AP 热点。

网页示例代码
ql_wlan_config_network_demo.c,通过网页进行 Wi-Fi 配网的代码示例文件,在 ql_application/example/wlan_config_network_demo 目录中,您可以在其中查看完整的示例并实现通过网页进行 Wi-Fi 配网的相关功能。
附录参考
相关文档
相关文档:
| 文档名称 |
|---|
| Quectel_FCM242D&FGM842D_Series_QuecOpen(SDK)_Quick_Start_Guide |
术语和缩略语
术语和缩略语:
| 缩略语 | 描述 |
|---|---|
| AES | 高级加密标准 |
| AP | 接入点 |
| API | 应用程序编程接口 |
| BSSID | 基本服务集标识符 |
| DHCP | 动态主机配置协议 |
| DNS | 域名服务器 |
| EAP | 可扩展认证协议 |
| HTTP | 超文本传输协议 |
| IoT | 物联网 |
| IP | 互联网协议 |
| MAC | 媒体访问控制 |
| OWE | 机会性无线加密 |
| P2P | 点对点 |
| PC | 个人计算机 |
| RTOS | 实时操作系统 |
| SAE | 同时认证等于 |
| SDK | 软件开发工具包 |
| SSID | 服务集标识符 |
| STA | 站点 |
| TKIP | 临时密钥完整性协议 |
| USB | 通用串行总线 |
| WEP | 有线等效隐私 |
| WPA | Wi-Fi 保护访问 |