Android S WLAN 架构

Android S WLAN 架构

  • Android S WLAN 架构
    • 一、WLAN架构
    • AppLication Framework(应用程序框架)
    • Wi-Fi Service(WiFi服务)
    • Wi-Fi HAL
  • 二、AIDL、HIDL、HAL
    • AIDL
    • HIDL
    • HAL

一、WLAN架构

AppLication Framework(应用程序框架)

应用代码都位于此,使用各种 android.net.wifi API 与 WLAN 框架和硬件进行交互。此代码在内部通过 Binder IPC(跨进程通信) 机制调用 WLAN 进程。

Wi-Fi Service(WiFi服务)

Wi-Fi Service在系统Service中运行,这类服务位于 packages/modules/Wifi/service/ 中。Wi-Fi Service通过 HIDL 与 Wi-Fi HAL 进行通信。

Wi-Fi 服务有很多种:

  • WifiService(WLAN 服务):用于控制 WLAN 基础架构模式(包括 STA 和 AP)的主要机制。
  • WifiP2pService(WLAN 点对点服务):管理 WLAN 直连模式。
  • WifiAwareService(WLAN 感知服务):管理 WLAN 感知模式。
  • WifiRttService(Wi-Fi RTT 服务):管理 IEEE 802.11mc FTM 功能。

此外,Wi-Fi 框架还包含一个独立的 wificond 进程,该进程位于 system/connectivity/wificond 中。WifiService通过binder与wificond 进程通信,wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信。

Wi-Fi HAL

WLAN 框架具有三个 WLAN HAL 表面,分别由三个不同的 HIDL 软件包表示:供应商 HAL、客户端 HAL 和 Hostapd HAL。

  • 供应商 HAL:Android 专用命令的 HAL 表面。HIDL 文件位于 hardware/interfaces/wifi/1.x 中。
  • 客户端 HAL:wpa_supplicant 的 HAL 表面。HIDL 文件位于 hardware/interfaces/supplicant/1.x 中。
  • Hostapd HAL:hostapd 的 HAL 表面。HIDL 文件位于 hardware/interfaces/hostapd/1.x 中。

二、AIDL、HIDL、HAL

AIDL

AIDL(Android 接口定义语言)是常用的安卓IPC(跨进程通信)的方式,常用于连接App和Framework,AIDL是架构在Android binder之上,用来定义Android基于Binder通信的Client与Service之间的接口

HIDL

HIDL(HAL interface definition language)是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL),HIDL则是用来连接Framework和HAL,HIDL则使用HwBinder通信。
HIDL可以分为:HIDL C++(C++实现)、HIDL Java(Java 实现),并且还主要分为直通式和绑定式

AIDL常用于连接App和Framework,HIDL则是用来连接Framework和HAL,AIDL使用Binder通信,HIDL则使用HwBinder通信,他们都是通过Binder驱动完成通信,只不过两个Binder域不一样

HAL

HAL(Hardware Abstraction Layer)即硬件抽象层是连接Android Framework与Linux设备驱动的桥梁,有两个方面的目的

  1. 屏蔽掉不同硬件设备的差异,为Android提供了统一的设备访问接口;不同的硬件厂商遵循HAL标准来实现自己的硬件控制逻辑,开发者不必关心硬件设备的差异,只需按照HAL提供的标准接口对硬件进行访问即可。
  2. 帮助硬件厂商隐藏了设备的核心细节,HAL层位于用户空间,遵循Apache协议,允许硬件厂商不公开源码,将设备相关的实现放在HAL层中实现,并以共享库(.so)的形式进行提供。

Android S WLAN 架构相关推荐

  1. SDIO_WiFi驱动学习之安卓WLAN架构介绍及调用流程分析

    一.引言 上一篇博客介绍了MMC子系统和SDIO相关知识及架构,这一篇博客则分析一下安卓的WLAN架构及上层如何调用WLAN驱动的流程. 虽然我工作的开发环境是安卓系统,但由于我不是专业的安卓应用/框 ...

  2. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

  3. Android之平台架构

    android平台及架构简述 android系统的底层是建立在linux系统之上,是由操作系统.中间件.用户界面和应用软件四层组成.该四层确 保了层与层之间的低耦合,当下层发生改变时,上层应用程序无需 ...

  4. Android存储系统之架构篇

    一.概述 本文讲述Android存储系统的架构与设计,涉及到最为核心的便是MountService和Vold这两个模块以及之间的交互.上一篇文章Android存储系统之源码篇从源码角度介绍相关模块的创 ...

  5. Android Camera 系统架构源码分析

    Android Camera 系统架构源码分析(1)---->Camera的初始化 Android Camera 系统架构源码分析(2)---->Camera的startPreview和s ...

  6. Android App的架构设计:从VM、MVC、MVP到MVVM

    随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...

  7. Android之系统架构

    Android 是Google开发的基于Linux平台的开源手机操作系统.它包括操作系统.用户界面和应用程序 -- 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍.Andr ...

  8. android让一个控件跟上面控件对其,学个明白--Android控件架构

    Android控件架构 1.什么是View? View是Android中所有控件的基类.View是界面层的控件的一种抽象,它代表了一个控件.在Android中每个控件都会在界面中占得一块矩形的区域.在 ...

  9. 自定义控件android.r,Android控件架构与自定义控件

    前言 最近在开发的路上越走越远了,每天在看各位大神公众号更新内容是自定义View的时候,一些小的内容有点模具,决定回过头来温习一下过往的内容.此篇也是根据android群英传来总结的一篇文章. 1 A ...

最新文章

  1. 43.放苹果(递归练习)
  2. 擦除:提升 CNN 特征可视化的 3 种重要手段
  3. Android-Binder进程间通讯机制-多图详解
  4. 四大算法解决最短路径问题(Dijkstra+Bellman-ford+SPFA+Floyd)
  5. Oracle——17概要文件
  6. Mysql主从配置,实现读写分离
  7. python多线程编程_python多线程编程(1): python对多线程的支持
  8. 管理对象空间——管理存储参数
  9. Java基础复习笔记系列 七 IO操作
  10. 你必须要找到你所爱的东西
  11. Kickstarter 开源其 Android 和 iOS 应用
  12. sqlmap重要参数详解+用法,解决入门难题
  13. 探究网络信息安全问题及防范措施
  14. 梧桐冷 暮秋雨落夜三更
  15. 鸿蒙修复了蓝牙麦克风问题吗,手机变传声器、麦克风?华为P40的隐藏功能你知道吗?...
  16. C语言关闭终端回显【转】
  17. unity 内部嵌入的网页插件中播放视频网页的问题
  18. 端口号是什么以及常见端口号
  19. iOS开发--封装的几个小动画
  20. 【Matlab 常用图像处理函数 汇总】

热门文章

  1. ADS-B接收机SBS-3支持acars和SDR
  2. win10向日葵远程黑屏/卡屏不能控制的解决办法
  3. 给你的视频配音,只需这3款免费软件工具(文字转语音)!
  4. 把jpg图片批量转化为png图片 python|||把视频MP4转换为图片或图片转换为视频
  5. 为什么有人讨厌 Google 的新 Logo?
  6. Linux之wc命令详解
  7. LightOJ 1340 Story of Tomisu Ghost
  8. 如果你跳槽,你会选择什么行业,什么人
  9. 一个换了马甲的OTL功放电路
  10. 什么题目的暂时还没想好