上一章对led子系统进行了概述,本章我们主要分析led子系统软件架构及数据结构。led子系统涉及的数据结构不多,软件架构也相对简单,下面我们就简要说明一下。本章的主要内容如下:
一、led子系统数据结构及关联
二、led子系统相关数据结构说明
针对led子系统,其实现主要分为三部分:
其实针对led子系统而言,其本身实现的功能也比较简单,目标就是控制led的亮(包括亮度调节)、灭以及闪烁这三种情况,而针对led亮、灭、闪烁的控制策略依据业务会有所不同,因此基于这些要求,led子系统抽象了两个数据结构:struct led_classdev、struct led-trigger。下面我们首先从需求入手,分析所需要实现的功能,然后再和led子系统针对数据结构的定义进行比较。
led设备需要实现的功能:
led触发器所需要实现的功能:
而led子系统中关于struct led_classdev、struct led-trigger也就是实现上述的功能,下面我们分析一下。
如下即为led_classdev,所包含的内容:
该数据结构的定义如下:
除了上述的数据结构之外,led子系统还提供了led-dev的注册与注销接口、led亮度设置接口、定时器实现的led闪烁接口、led-trigger的注册与注销接口等对外接口。
以上即是led_classdev、led_trigger以及led子系统提供接口的关联图,主要说明如下:
以上就是本文章的主要内容,led子系统相对来说是一个小系统,实现的功能也较简单,led-classdev、led-trigger的注册与注销也就是完成上述数据结构间的关联或取消上述数据结构间的关联。而上述数据结构的实现也较简单,因此也就不打算继续分析led-classdev、led-trigger的注册与注销接口了,由读者自行分析。下一篇文章我们实现一个ledtrigger-gpio-pwm,并借助上次实现的virt gpio,进行驱动的验证工作。