代码工程的GITHUB连接:点进进入GITHUB仓库
https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi

Marvell自己实现驱动系列文章分为几篇介绍:
SDIO wifi Marvell8801/Marvell88w8801 介绍(一) ---- 芯片介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(二) ---- SDIO协议介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(三) ---- 寄存器介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(四) ---- 命令/事件/数据格式
SDIO wifi Marvell8801/Marvell88w8801 介绍(五) ---- TLV
SDIO wifi Marvell8801/Marvell88w8801 介绍(六) ---- 实现初始化功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(七) ---- 实现搜索功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(八) ---- 实现STA功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(九) ---- 实现AP功能
SDIO wifi Marvell8801/Marvell88w8801 介绍(十) ---- 移植TCP/IP协议栈LWIP
SDIO wifi Marvell8801/Marvell88w8801 介绍(十一) ---- 自己编写LWIP没有的DHCP server
SDIO wifi Marvell8801/Marvell88w8801 介绍(十二) ---- MQTT介绍
SDIO wifi Marvell8801/Marvell88w8801 介绍(十三) ---- 百度云操作说明
SDIO wifi Marvell8801/Marvell88w8801 介绍(十四) ---- 上位机STA操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十五) ---- 上位机AP操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十六) ---- 上位机UDP操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十七) ---- 上位机TCP操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十八) ---- 上位机PING操作/代码
SDIO wifi Marvell8801/Marvell88w8801 介绍(十九) ---- 上位机云服务器(百度云)操作/代码

每篇更新打开专栏可以看到:打开Marvell8801/Marvell8801 专栏

关于裸机AP模式操作介绍主要分为以下图示几部分

1)开启热点命令格式介绍,主要对开启热点的格式进行介绍,包括TLV
2)开启默认热点介绍
3)开启特定SSID的热点介绍
4)开启WPA/WAP2热点介绍
5)停止热点介绍
6)AP主动踢掉某一个STA的介绍
另外,在写这个驱动之前我是假设平台的SDIO驱动已经调试OK,如果需要查看SDIO驱动方面,可以直接参照我的裸机代码,另外写这个驱动的目的是让你快速入门Marvell88w8801这颗wifi 芯片,其中没有复杂的802.11n的处理,如果你不想看Linux复杂的驱动,可以通过这个裸机快速入门。

1. 开启热点命令格式介绍

首先说明下创建dafault open wpa wpa2热点都是通过一个函数mrvl88w8801_cre_ap来实现
另外,我们先来看下创建热点的cmd/cmd response的格式

Start很简单,关键在于配置cmd/cmd response


最关键的部分在于ConfigDate,那些部分是TLV,我们先列出TLV list,在后面针对创建不同的节点再做介绍



停止热点的cmd/cmd response如图:

2. Marvell88w8801直接开启默认热点

开启热点很简单,只需要发送cmd HOST_CMD_APCMD_BSS_START就能得到一个默认的热点,如果之前没有配置过的话,那么就会得到一个叫做Marvell Micro AP的没有加密的热点,如图:

另外函数实现如下:


/******************************************************************************* 函数名:   mrvl88w8801_cre_ap_prepare* 参数:     tx(IN)              -->tx buffer* 返回值:   返回执行结果* 描述: 组HOST_CMD_APCMD_BSS_START command的封包,主要用于开启热点
******************************************************************************/
static uint8_t mrvl88w8801_cre_ap_prepare(uint8_t* tx)
{HostCmd_DS_COMMAND *cmd = (HostCmd_DS_COMMAND *)tx;uint16_t tx_packet_len = CMD_HDR_SIZE;cmd->pack_len = tx_packet_len;cmd->pack_type = TYPE_CMD_CMDRSP;cmd->command = HOST_CMD_APCMD_BSS_START;cmd->size = tx_packet_len - CMD_SDIO_HDR_SIZE;cmd->seq_num = 0;cmd->bss = BSS_TYPE_UAP << 4;cmd->result = 0;return COMP_ERR_OK;
}

3. Marvell88w8801 开启open热点

如果要创建一个open热点,那么我们就需要在发送HOST_CMD_APCMD_BSS_START命令之前先发送HOST_CMD_APCMD_SYS_CONFIGURE来配置热点,所有的配置TLV在开始的时候都有贴出,open热点主要用到两个。
1)SSID TLV,主要用于配置AP热点的名称
2)TLV_TYPE_UAP_BCAST_SSID_CTL TLV,主要用于该AP热点是否隐藏
SSID不做过多介绍,就是2byte type,2byte len,0~32 byte的名称
TLV_TYPE_UAP_BCAST_SSID_CTL TLV介绍如下

Enable是能被搜索到,disable不能被搜索到
整个过程是先发送HOST_CMD_APCMD_SYS_CONFIGURE然后收到cmd response后发送HOST_CMD_APCMD_BSS_START,这样热点就生产了,是一个open热点

4. Marvell88w8801 开启WPA/WPA2热点

Wpa热点除了以上open两个TLV外,还包含以下TLV
1)TLV_TYPE_UAP_WPA_PASSPHRASE
2)TLV_TYPE_UAP_ENCRYPT_PROTOCOL
3)TLV_TYPE_UAP_AKMP
4)TLV_TYPE_PWK_CIPHER
5)TLV_TYPE_GWK_CIPHER
其中TLV_TYPE_UAP_WPA_PASSPHRASE主要作用就是配置AP热点的密码

TLV_TYPE_UAP_ENCRYPT_PROTOCOL主要用于配置加密协议

WPA主要用于bit 3,WPA2主要用于bit5,看下代码的处理

TLV_TYPE_UAP_AKMP主要是用于认证的密码类型

此处我们选择keymgmt中的bit 1 psk
TLV_TYPE_PWK_CIPHER主要用于配对密码类型,此处不管是WPA还是WPA2我们都选择CCMP

代码如下

TLV_TYPE_GWK_CIPHER主要用于分组密码类型,我们也选择使用CCMP

代码如下

整个wap/wap2的方式和open方式流程一样,同样是:先发送
HOST_CMD_APCMD_SYS_CONFIGURE然后收到cmd response后发送
HOST_CMD_APCMD_BSS_START,只不过多了几个TLV

5. Marvell88w8801 停止热点

停止热点的命令也很简单,在开始部分我们已经贴出命令格式,代码如下


/*******************************************************************************    函数名:    mrvl88w8801_stop_ap_prepare* 参数:    tx(IN)              -->tx buffer* 返回值:   返回执行结果* 描述: 组HOST_CMD_APCMD_BSS_STOP command的封包,主要用于停止热点
******************************************************************************/
static uint8_t mrvl88w8801_stop_ap_prepare(uint8_t* tx)
{HostCmd_DS_COMMAND *cmd = (HostCmd_DS_COMMAND *)tx;uint16_t tx_packet_len = CMD_HDR_SIZE;cmd->pack_len = tx_packet_len;cmd->pack_type = TYPE_CMD_CMDRSP;cmd->command = HOST_CMD_APCMD_BSS_STOP;cmd->size = tx_packet_len - CMD_SDIO_HDR_SIZE;cmd->seq_num = 0;cmd->bss = BSS_TYPE_UAP << 4;cmd->result = 0;return COMP_ERR_OK;
}

6. Marvell88w8801 AP主动踢掉STA

AP主动踢掉STA主要用以下命令HOST_CMD_APCMD_STA_DEAUTH
Cmd/cmd response格式如图

代码实现如图


/*******************************************************************************    函数名:    mrvl88w8801_disconnect_sta_prepare* 参数:     tx(IN)              -->tx bufferdata_buff(IN)        -->搜索的cmd body,在这里就是channel listdata_len(IN)      -->搜索的cmd body len,在这里就是channel list长度* 返回值:     返回执行结果* 描述: 组HOST_CMD_APCMD_STA_DEAUTH command的封包,主要用于AP踢掉STA
******************************************************************************/
static uint8_t mrvl88w8801_disconnect_sta_prepare(uint8_t* tx,void *data_buff,uint16_t data_len)
{HostCmd_DS_COMMAND *cmd = (HostCmd_DS_COMMAND *)tx;HostCmd_DS_802_11_DEAUTHENTICATE *pdeauth = &cmd->params.deauth;uint16_t tx_packet_len = CMD_HDR_SIZE + sizeof(HostCmd_DS_802_11_DEAUTHENTICATE);cmd->pack_len = tx_packet_len;cmd->pack_type = TYPE_CMD_CMDRSP;cmd->command = HOST_CMD_APCMD_STA_DEAUTH;cmd->size = tx_packet_len - CMD_SDIO_HDR_SIZE;cmd->seq_num = 0;cmd->bss = BSS_TYPE_UAP << 4;cmd->result = 0;comp_memcpy(pdeauth->mac_addr,data_buff,data_len);pdeauth->reason_code = 2;return COMP_ERR_OK;
}

STM32F103+SDIO wifi Marvell8801/Marvell88w8801 介绍(九) ---- Marvell 8801/Marvell 88w8801 实现AP功能/实现热点功能相关推荐

  1. SDIO wifi Marvell8801/Marvell88w8801 介绍(八) ---- Marvell 8801实现STA功能/连接open热点/连接wpa热点/连接wpa2热点

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  2. STM32F103驱动SDIO wifi Marvell8801/Marvell88w8801 介绍(十一) ---- 编写LWIP DHCP server

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  3. STM32F103驱动SDIO wifi Marvell8801/Marvell88w8801 介绍(十) ---- 移植TCP/IP协议栈LWIP

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  4. SDIO wifi Marvell8801/Marvell88w8801 介绍(三) ---- Marvell8801/Marvell88w8801寄存器介绍

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  5. SDIO wifi Marvell8801/Marvell88w8801 介绍(五) ---- Marvell8801/Marvell88w8801 TLV

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  6. SDIO wifi Marvell8801/Marvell88w8801 介绍(四) ---- Marvell8801/Marvell88w8801命令/事件/数据格式

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  7. SDIO wifi Marvell8801/Marvell88w8801 介绍(七) ---- Marvell8801/Marvell88w8801实现搜索功能

    在介绍SDIO wifi Marvell8801/Marvell88w8801之前先附上模块链接: 点击购买Marvell8801开发板 代码工程的GITHUB连接:点进进入GITHUB仓库 http ...

  8. 自己实现SDIO wifi Marvell8801/Marvell88w8801驱动 介绍(一) ---- 芯片介绍

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  9. Linux SDIO WIFI Marvell8801/Marvell88w8801(六) --- Marvell Linux Wi-Fi driver介绍-WIFI插入卡槽内发生的事情

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

最新文章

  1. 惊呆,一条sql竟然让oracle奔溃了
  2. 盘点我跳过的科研天坑,进坑就是半年白干
  3. docker部署resin应用
  4. 智能家居项目开发准备工作
  5. P2580-于是他错误的点名开始了【Trie,字符串】
  6. 【例题+习题】【数值计算方法复习】【湘潭大学】(四)
  7. Debian下RPM包安装
  8. LVM的逻辑卷管理及CentOS挂载
  9. json 插入数据_Oracle Database 20c:JSON功能增强
  10. ubuntu16.04 kinect2 驱动和ROS驱动
  11. 教育版AutoCAD下载开启,你知道吗?
  12. windows下解压tar.gz文件
  13. matlab画带有正态密度曲线的直方图
  14. have datatype/md5sum 相关的错误 IndentationError: unexpected indent
  15. Protell99中的铺铜设置
  16. 苹果手机其他占内存很大去哪删除_手机没内存,照片又不舍得删除?这里有6大方法能帮你解决!...
  17. 在 Oracle 云上用 Cluster API 升级 K8s 集群
  18. 跨平台flutter- window与Android Studio环境配置
  19. 二手苹果手机哪个性价比高?
  20. iphone使用技巧大全

热门文章

  1. 为什么静下心来阅读会是一种奢侈?
  2. .NetCore框架Surging系列(六)路由发现
  3. 使用windows自带的局域网连接传输文件
  4. Ristretto:面向硬件的卷积神经网络逼近
  5. 安装a0时服务器名称不显示,现场审计实施系统(AO2011)安装图示
  6. 大数据技术人员工具包之—常见数据挖掘分析处理工具
  7. onCreate与onStart区别,onStart与onResume区别
  8. 人体的矢状面,冠状面,以及水平面,你懂吗?
  9. STM32 在flash中存储float数据
  10. 企业级360°全方位用户画像:项目介绍[二]