luckfox-pico-sdk/project/app/wifi_app/wifi/include/Rk_wifi.h
luckfox-eng29 8f34c2760d project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches.
project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between
the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door
for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more
usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp:
Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for
compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem.
sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device
tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately.
sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick
boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades.
sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for
fastboot.

Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
2024-10-14 09:47:04 +08:00

314 lines
7.4 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __RK_WIFI_H__
#define __RK_WIFI_H__
#ifdef __cplusplus
extern "C" {
#endif
/* 编程规范
* return 返回值TRUE/FALSE -ERRCODE
*/
#define RK_WIFI_VERSION "V2.1"
#define RK_WIFI_SAVED_INFO_MAX 10
#define SSID_BUF_LEN 64
#define BSSID_BUF_LEN 20
#define STATE_BUF_LEN 20
#define RK_WIFI_ETHER_ADDR_LEN 6
#define RK_WIFI_BSSID_LEN 6
#define RK_WIFI_SSID_LENGTH_MAX 64
#define RK_WIFI_IPV4_ADDR_LEN 4
//国家码
typedef enum RK_WIFI_COUNTRY_CODE {
RK_WIFI_COUNTRY_CODE_CHINESE,
RK_WIFI_COUNTRY_CODE_USA,
RK_WIFI_COUNTRY_CODE_EUROPE,
RK_WIFI_COUNTRY_CODE_JAPAN,
RK_WIFI_COUNTRY_CODE_CANADA,
RK_WIFI_COUNTRY_CODE_AUSTRALIA,
RK_WIFI_COUNTRY_CODE_ISRAEL,
RK_WIFI_COUNTRY_CODE_MEXICO,
RK_WIFI_COUNTRY_CODE_FRANCE,
RK_WIFI_COUNTRY_CODE_MAX,
} RK_WIFI_COUNTRY_CODE;
/* WIFI STATE WIFI运行状态 */
typedef enum {
RK_WIFI_State_IDLE = 0,
/* 连接中 */
RK_WIFI_State_CONNECTING,
/* 连接失败*/
RK_WIFI_State_CONNECTFAILED,
/* 连接失败扫描不到配置的AP*/
RK_WIFI_State_CONNECTFAILED_NOT_FOUND,
/* 连接失败,密码错误 */
RK_WIFI_State_CONNECTFAILED_WRONG_KEY,
/* 认证成功或失败,很少用到 */
RK_WIFI_State_AUTH_SUCCESS,
RK_WIFI_State_AUTH_FAILED,
/* 连接成功 */
RK_WIFI_State_CONNECTED,
/* WiFi断开 */
RK_WIFI_State_DISCONNECTED,
/* WiFi断开应用层主动断开 */
RK_WIFI_State_DISCONNECTED_BY_HOST,
/* WiFi断开被路由器踢掉 */
RK_WIFI_State_DISCONNECTED_BY_ROUTER,
/* WiFi断开由于beacon丢失 */
RK_WIFI_State_DISCONNECTED_LOST_BEACON,
/* WiFi打开成功 */
RK_WIFI_State_OPEN,
/* WiFi打开失败 */
RK_WIFI_State_OPEN_FAIL,
/* WiFi关闭成功 */
RK_WIFI_State_OFF,
/* WiFi发起扫描 */
RK_WIFI_State_SCAN,
/* WiFi扫描完成 */
RK_WIFI_State_SCAN_RESULTS,
/* WiFi无法获取IP */
RK_WIFI_State_DHCP_ERR,
/* WiFi获取到IP */
RK_WIFI_State_DHCP_OK,
/* WiFi未配置 */
RK_WIFI_State_NOT_CFG_NETWORK,
/*
* 低功耗专用表示是低功耗WiFi发来的事件
* only for lower power wifi
*/
RK_WIFI_State_LP_EVENT_TYPE,
/* WiFi未知错误 */
RK_WIFI_State_UNKNOW_ERR,
} RK_WIFI_RUNNING_State_e;
/*
* RK_WIFI_State_LP_EVENT_TYPE
* 低功耗专用表示是低功耗WiFi发来的事件
* 下面是具体事件
* only for lower power wifi
*/
typedef enum {
RK_WIFI_LP_LONG_PRESS, //长按
RK_WIFI_LP_SHORT_PRESS, //短按
RK_WIFI_LP_DOORBELL, //门铃
RK_WIFI_LP_KEEPALIVE_OK, //保活成功
RK_WIFI_LP_KEEPALIVE_FAILED, //保活失败
RK_WIFI_LP_BAT_LEVEL, //电池电量
RK_WIFI_LP_PIR_DETECT, //PIR触发
RK_WIFI_LP_WAKEUP_REASON, //唤醒reason
RK_WIFI_LP_ANTIDISASSEMBLY, //防拆除
RK_WIFI_LP_END,
} RK_WIFI_LP_Event_Type_e;
typedef enum {
RK_WIFI_WAKEUP_IO, // hardware io
RK_WIFI_WAKEUP_NETWORK, // keepalive wakeup netpattern
RK_WIFI_WAKEUP_CONNECT, // ap reconnect fail timeout
RK_WIFI_WAKEUP_KEEPALIVE, // keepalive resend timeout
RK_WIFI_WAKEUP_TCP_NETPATTERN, // tcp netpattern match
RK_WIFI_WAKEUP_UDP_NETPATTERN, // udp netpattern match
RK_WIFI_WAKEUP_WK_SSID, // wakeup ssid match
RK_WIFI_WAKEUP_MAGIC_PKT, // wakeup magic packet match
RK_WIFI_WAKEUP_DETECT_PIR, // wakeup by pir detect
} RK_WIFI_LP_Wakeup_Reason_e;
/* 加密类型 */
typedef enum {
NONE = 0,
WPA,
WEP,
WPA3
} RK_WIFI_CONNECTION_Encryp_e;
/*
* WiFi反馈的运行信息一般通过两种方式获取
* 1. 打开WiFi时注册的callback被动反馈
* 2. 通过RK_wifi_running_getConnectionInfo主动获取
*/
typedef struct {
/* 配置WiFi的索引一般只用于传统WiFi */
int id;
/* 连接到AP的MAC地址 */
char bssid[BSSID_BUF_LEN];
/* 连接到AP的名字 */
char ssid[SSID_BUF_LEN];
/* 连接到AP的频率 */
int freq;
char channel[6];
/* AP/STA */
char mode[20];
/* 连接状态 */
char wpa_state[20];
/* 获取到的IP地址 */
char ip_address[20];
/* 获取到的网关 */
char gw[20];
/* 获取到的网关 */
char dns[20];
/* 本机的MAC地址 */
char mac_address[20];
/* WiFi断开原因如果有 */
int reason;
/* WIFI固件版本信息 */
char version[10];
/* only for lower power wifi
* 低功耗WiFi的EVENT的具体类型
*/
RK_WIFI_LP_Event_Type_e lp_event_type;
/* 具体类型的数据,比如电池电量等 */
int lp_data[32];
} RK_WIFI_INFO_Connection_s;
typedef struct {
RK_WIFI_INFO_Connection_s wifi_con_info;
//下面只针对IPC低功耗WiFi
RK_WIFI_RUNNING_State_e type;
char data[64];
} RK_WIFI_INFO_s;
/* 配置的WiFi信息一般只用于传统WiFi传统WiFi可以配置多个AP */
typedef struct {
int id;
char bssid[BSSID_BUF_LEN];
char ssid[SSID_BUF_LEN];
char state[STATE_BUF_LEN];
} RK_WIFI_SAVED_INFO_s;
/* 跟服务器或云端保活的基本信息仅用于IPC低功耗WiFi */
typedef struct {
char domain[64]; //IP地址如果是域名需解析成功具体的地址
char port[4]; //远端端口号
char device_id[128]; //设备ID
char key[128]; //加密KEY
char period[4]; //保活包交互间隔
char wake_str[64]; //唤醒匹配的字符串
} RK_WIFI_LOW_POWER_KEEPALIVE_s;
/*
* 注意:
* return: 返回大于等于0成功小于0失败
*/
/* 状态信息回调函数定义 */
typedef int(*RK_wifi_state_callback)(RK_WIFI_RUNNING_State_e state, RK_WIFI_INFO_Connection_s *info);
//注册状态回调
int RK_wifi_register_callback(RK_wifi_state_callback cb);
//获取当前连接信息
int RK_wifi_running_getConnectionInfo(RK_WIFI_INFO_Connection_s* pInfo);
//WiFi使能或失能1 使能0 失能
int RK_wifi_enable(int enable);
//扫描
int RK_wifi_scan(void);
//获取扫描结果一般是再回调中得到RESULTS事件通知
char* RK_wifi_scan_r(void);
//发起连接
int RK_wifi_connect(char* ssid, const char* psk);
//连接WEP加密的WIFI
int RK_wifi_connect_wep(char* ssid, const char* psk);
//断开当前网络
int RK_wifi_disconnect_network(void);
//WiFi恢复之前的配置,或重连之前的配置
int RK_wifi_recovery(void);
//移除连接过的WiFi
int RK_wifi_forget_with_ssid(char *ssid);
//取消正在进行连网
int RK_wifi_cancel(void);
//获取配置过的WiFi信息
int RK_wifi_getSavedInfo(RK_WIFI_SAVED_INFO_s **pInfo, int *ap_cnt);
//连接之前连过的WiFi
int RK_wifi_connect_with_ssid(char* ssid);
//WiFi恢复出厂设置
int RK_wifi_reset(void);
//获取AP的信号强度
int RK_wifi_get_connected_ap_rssi(void);
//获取COUNTRY CODE
int RK_wifi_get_ccode(void);
//配置COUNTRY CODE
int RK_wifi_set_ccode(void);
//传输ota固件
int Rk_wifi_ota(char *path);
//wifi重启
int RK_wifi_reboot(void);
//获取平台PIR电平值1为触发PIR0为无触发
int RK_get_pirstate(unsigned int *pir_ret);
/*
* 低功耗专用API
*/
//进入低功耗
int RK_wifi_enter_sleep(int argc, char *argv[]);
//退出低功耗
int RK_wifi_exit_sleep(void);
//启动保活
int RK_wifi_start_keepalive(RK_WIFI_LOW_POWER_KEEPALIVE_s *cfg);
//取消之前的保活
int RK_wifi_stop_keepalive(int port);
//配置路由器的本身的监听间隔
int RK_wifi_set_BeaconListenInterval(int dtim);
//特殊: Rockchip配网demo使用目前仅用于传统WiFi
char *RK_wifi_scan_for_softap(void);
//获取电量,结果通过低功耗事件回调返回
int RK_wifi_get_batlevel();
//获取唤醒信息,结果通过低功耗事件回调返回
int RK_wifi_get_wkreason();
//同步阻塞获取utc时间
int RK_wifi_get_utc(unsigned long long *utc);
//配置PIR
int RK_wifi_set_pir(int enable);
#ifdef __cplusplus
}
#endif
#endif