Skip to main content

RK3308 WIFI 接口介绍

:::info 文档信息

文档标识:RK-KF-YF-338 · 发布版本:V1.0.1 · 发布日期:2020-02-28 · 页数:7 · 语言:中文

原始文档:Rockchip_Introduction_RK3308_DeviceIo_WIFI_CN.pdf

:::

章节大纲​

  • RK3308 WIFI 接口介绍(P1)
    • 前言(P2)
    • 目录(P3)
    • 1、概述(P4)
    • 2、接口说明(P5)
    • 3、使用示例(P7)

在线预览​

若预览无法显示,请直接下载 PDF 后用本地阅读器打开。


前言​

概述

该文档旨在介绍RK3308 DeviceIo库中接口。

芯片名称

RK3308

读者对象

本文档(本指南)主要适用于以下工程师:

技术支持工程师

软件开发工程师

修订记录

日期版本作者修改说明
2019-3-29V1.0.0Jacky.Ge初始版本
2020-02-28V1.0.1Ruby.Zhang调整文档格式,更新文档名称

目录​

RK3308 WIFI 接口介绍前言目录1、概述2、接口说明3、使用示例

1、概述​

该代码模块集成在libDeviceIo.so动态库里面,基于wpa封装的WIFI操作接口。

2、接口说明​

RK_WIFI_RUNNING_State_e

WIFI的几种状态定义

1 typedef enum { 2 RK WIFI State IDLE = 0, _ _ _ 3 RK WIFI State CONNECTING, _ _ _ 4 RK WIFI State CONNECTFAILED, _ _ _ 5 RK WIFI State CONNECTFAILED WRONG KEY, _ _ _ _ _ 6 RK WIFI State CONNECTED, _ _ _ 7 RK WIFI State DISCONNECTED _ _ _ 8 } RK WIFI RUNNING State e; _ _ _ _
1 2 3 4 5 6 7 8typedef enum { RK WIFI State IDLE = 0, _ _ _ RK WIFI State CONNECTING, _ _ _ RK WIFI State CONNECTFAILED, _ _ _ RK WIFI State CONNECTFAILED WRONG KEY, _ _ _ _ _ RK WIFI State CONNECTED, _ _ _ RK WIFI State DISCONNECTED _ _ _ } RK WIFI RUNNING State e; _ _ _ _
RK WIFI CONNECTION Encryp e _ _ _ _

WIFI加密类型,包括无密码、WPA和WEP三种方式

1 typedef enum { 2 NONE = 0, 3 WPA, 4 WEP 5 } RK WIFI CONNECTION Encryp e; _ _ _ _
1 2 3 4 5typedef enum { NONE = 0, WPA, WEP } RK WIFI CONNECTION Encryp e; _ _ _ _
RK WIFI INFO Connection s _ _ _ _

WIFI状态信息,参考wpa_cli -iwlan0 status

1 typedef struct { 2 int id; 3 char bssid[20]; 4 char ssid[64]; 5 int freq; 6 char mode[20]; 7 char wpa state[20]; _ 8 char ip address[20]; _ 9 char mac address[20]; _ 10 } RK WIFI INFO Connection s; _ _ _ _
1 2 3 4 5 6 7 8 9 10typedef struct { int id; char bssid[20]; char ssid[64]; int freq; char mode[20]; char wpa state[20]; _ char ip address[20]; _ char mac address[20]; _ } RK WIFI INFO Connection s; _ _ _ _
i

注册WIFI状态回调接口,在WIFI状态改变是回调

int RK_wifi_ble_register_callback(RK_wifi_state_callback cb)

ble wifi回调接口,用于ble配网时回调状态

int RK_wifi_running_getState(RK_WIFI_RUNNING_State_e* pState)

获取当前WIFI状态,成功返回0

int RK_wifi_running_getConnectionInfo(RK_WIFI_INFO_Connection_s* pInfo)

获取当前WIFI连接信息

int RK_wifi_enable_ap(const char* ssid, const char* psk, const char* ip)

根据传入的ssid、psk和ip开启softAp

int RK_wifi_disable_ap()

关闭softAp

int RK_wifi_scan(void)

执行WIFI sacn操作, 参见wpa_cli -iwlan0 scan

char* RK_wifi_scan_r(void)

获取WIFI scan结果,返回JSON。参见wpa_cli -iwlan0 scan_r

char* RK_wifi_scan_r_sec(const unsigned int cols)

获取WIFI scan结果指定列,返回JSON。参见RK_wifi_scan_r(void)

bssid / frequency / signal level / flags / ssid

使用5位二进制从左到右依次代表上述数据,例如RK_wifi_scan_r_sec(0x01)获取bssid数据,RK_wifi_scan_r_sec(0x10)获取ssid数据,RK_wifi_scan_r_sec(0x1F)获取所有数据

int RK_wifi_connect(const char* ssid, const char* psk)

以默认WPA加密方式连接指定热点

int RK_wifi_connect1(const char* ssid, const char* psk, const
RK_WIFI_CONNECTION_Encryp_e encryp, const int hide)

参见RK_wifi_connect接口,拓展加密类型,ssid隐藏性参数

int RK_wifi_disconnect_network(void)

断开WIFI连接

int RK_wifi_set_hostname(const char* name)

设置hostname

int RK_wifi_get_hostname(char* name, int len)

获取hostname

int RK_wifi_get_mac(char *wifi_mac)

获取mac地址

int RK_wifi_has_config(void)

网络是否配置过

int RK_wifi_ping(void)

以ping的方式判断网络是否连接

3、使用示例​

1 #include <stdio.h> 2 #include <string.h> 3 #include <DeviceIo/Rk wifi.h> _ 4 5 int RK wifi state callback(RK WIFI RUNNING State e state) _ _ _ _ _ _ _ _ 6 { 7 printf(" RK wifi state callback state:%d\n", state); _ _ _ _ 8 return 0; 9 } 10 11 int main(int argc, char **argv) 12 { 13 // 注册WIFI状态回调 14 RK wifi register callback( RK wifi state callback); _ _ _ _ _ _ _ 15 16 // 设置hostname后获取打印 17 char hostname[16]; 18 RK wifi set hostname("RKWIFI"); _ _ _ 19 memset(hostname, 0, sizeof(hostname)); 20 RK wifi get hostname(hostname, sizeof(hostname)); _ _ _ 21 printf("hostname:%s\n", hostname); 22 23 // 获取MAC地址并打印 24 char mac[32]; 25 memset(mac, 0, sizeof(mac)); 26 RK wifi get mac(mac); _ _ _ 27 printf("mac:%s\n", mac); 28 29 // 如果有配置过WIFI,enable wifi自动连接到配置的WIFI 30 // 否则连接到指定WIFI 31 if (RK wifi has config()) { _ _ _ 32 RK wifi enable(1); _ _ 33 } else { 34 RK wifi enable(1); _ _ 35 RK wifi connect("TP-LINK C734BC", "12345678"); _ _ _ 36 } 37 38 for (;;); 39 // 断开WIFI并关闭WIFI模块 40 RK wifi enable(0); _ _ 41 42 return 0; 43 } 44
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44#include <stdio.h> #include <string.h> #include <DeviceIo/Rk wifi.h> _ int RK wifi state callback(RK WIFI RUNNING State e state) _ _ _ _ _ _ _ _ { printf(" RK wifi state callback state:%d\n", state); _ _ _ _ return 0; } int main(int argc, char **argv) { // 注册WIFI状态回调 RK wifi register callback( RK wifi state callback); _ _ _ _ _ _ _ // 设置hostname后获取打印 char hostname[16]; RK wifi set hostname("RKWIFI"); _ _ _ memset(hostname, 0, sizeof(hostname)); RK wifi get hostname(hostname, sizeof(hostname)); _ _ _ printf("hostname:%s\n", hostname); // 获取MAC地址并打印 char mac[32]; memset(mac, 0, sizeof(mac)); RK wifi get mac(mac); _ _ _ printf("mac:%s\n", mac); // 如果有配置过WIFI,enable wifi自动连接到配置的WIFI // 否则连接到指定WIFI if (RK wifi has config()) { _ _ _ RK wifi enable(1); _ _ } else { RK wifi enable(1); _ _ RK wifi connect("TP-LINK C734BC", "12345678"); _ _ _ } for (;;); // 断开WIFI并关闭WIFI模块 RK wifi enable(0); _ _ return 0; }