基于Dragonboard 410c的指纹锁(六)

2024-03-09 10:38
文章标签 指纹锁 dragonboard 410c

本文主要是介绍基于Dragonboard 410c的指纹锁(六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      中断了一段时间的指纹探究又要开始了,底层驱动暂时没找到任何实例,在网上查了一下,大部分都说厂商会提供驱动、库、以及HAL层实现,所以感觉有点无奈,因为我在网上买的指纹模块,除了模块和相关资料外,根本就没有提供所谓的驱动、库以及HAL层实现。所以智能去代码里去找相关实例,驱动暂时没有找到,但是HAL层实现到是发现了。

     前面已经提过,Android系统从M开始才将指纹识别的部分添加进去,所以,查找指纹模块相关的代码至少要从Android M开始。好了,接下来一起看看。

    HAL层代码路径:

    hardware/libhardware/modules/fingerprint/fingerprint.c  

打开代码后找到函数入口:

fingerprint_module_t HAL_MODULE_INFO_SYM = {
    .common = {
        .tag                = HARDWARE_MODULE_TAG,
        .module_api_version = FINGERPRINT_MODULE_API_VERSION_2_0,
        .hal_api_version    = HARDWARE_HAL_API_VERSION,
        .id                 = FINGERPRINT_HARDWARE_MODULE_ID,
        .name               = "Demo Fingerprint HAL",
        .author             = "The Android Open Source Project",
        .methods            = &fingerprint_module_methods,
    },
};

主要的fingerprint_module_methods。

static struct hw_module_methods_t fingerprint_module_methods = {
    .open = fingerprint_open,
};

然后继续向下看看fingerprint_open

static int fingerprint_open(const hw_module_t* module, const char __unused *id,
                            hw_device_t** device)
{
    if (device == NULL) {
        ALOGE("NULL device on open");
        return -EINVAL;
    }

    fingerprint_device_t *dev = malloc(sizeof(fingerprint_device_t));
    memset(dev, 0, sizeof(fingerprint_device_t));

    dev->common.tag = HARDWARE_DEVICE_TAG;
    dev->common.version = FINGERPRINT_MODULE_API_VERSION_2_0;
    dev->common.module = (struct hw_module_t*) module;
    dev->common.close = fingerprint_close;

    dev->pre_enroll = fingerprint_pre_enroll;
    dev->enroll = fingerprint_enroll;
    dev->get_authenticator_id = fingerprint_get_auth_id;
    dev->cancel = fingerprint_cancel;
    dev->remove = fingerprint_remove;
    dev->set_active_group = fingerprint_set_active_group;
    dev->authenticate = fingerprint_authenticate;
    dev->set_notify = set_notify_callback;
    dev->notify = NULL;

    *device = (hw_device_t*) dev;
    return 0;
}


到这只需要看后面的函数就可以了,如:fingerprint_pre_enroll

static uint64_t fingerprint_pre_enroll(struct fingerprint_device __unused *dev) {
    return FINGERPRINT_ERROR;
}

其他函数就不用看了,内容都一样:return FINGERPRINT_ERROR

其实大概的意思应该是,接口和框架在这了,具体内容就要你自己去实现了。很是无奈,但是船到桥头自然直、车到山前必有路。源码里一搜,发现了一个实现。

路径:

device/generic/goldfish/fingerprint/fingerprint.c

具体内容实现很清楚,注释也解释的很明白,这里就不再赘述了,大家自己看吧。

指纹虐我千百遍,我待指纹如初恋,有事没事还是要接着看。









这篇关于基于Dragonboard 410c的指纹锁(六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790425

相关文章

【嵌入式DIY实例】-指纹锁

DIY指纹锁 文章目录 DIY指纹锁1、硬件准备1.1 R307指纹传感器模介绍2、硬件接线原理图3、代码实现 在这个项目中,我们将使用 Arduino 构建一个指纹门锁安全系统。 该系统可用于我们的家庭、办公室等提供安全保障。 我们还可以用它来打开门,只需将手指放在门锁上即可。 安全是许多房主的首要任务。 指纹门锁安全系统是为您的家添加额外安全层的好方法。 该门锁系统使用

MQTT协议的智能家居之指纹锁

基于之前的智能家居项目,这次添加了指纹锁设备的设计,硬件端主要使用0.96oled显示屏,ESP8266-NODEMCU,BYJ48步进电机以及配套驱动板,AS608指纹模块。 整个项目除了硬件端,还接入了我自己的服务器,可通过APP进行云端远程操控,对指纹锁进行模式设置和指纹设置。 装置器件图放在下面,以供参考: 附上演示视频: 智能家居-基于mqtt协议的APP控制指纹锁装置

【嵌入式实践】【芝麻】【硬件篇-1】从0到1给电动车添加指纹锁:电源电路调研及原理讲解

0. 前言         该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹,电动车进入P档等待时计时,计时超过5min则自动锁车,计时过程中按刹车可中断P档状态,同时中断锁车计时。改项目我称之为“芝麻”,取自芝麻开门(明明是车,哪里来的“门”,因为插钥匙的地方被修车师傅称之为“电门锁”)。 专栏目录:快速导航 视频地址:b站链接 软件、

基于Dragonboard 410c的燃气烟雾检测器(五)

经过一段时间的努力终于将燃气烟雾检测器做完了,现在简单描述一下其工作原理和操作过程。      首先燃气烟雾检测器肯定是放到容易发生有毒可燃气体泄漏和容易发生火灾的地方,这里我们就用一个打火机来模拟气体泄漏。      这个装置是通过app控制的,当打开app后,我们要进行一下复位打开设备,此时会看到温湿度传感器检测到的数据,当温度过高或者比较干燥时会温馨提示注意防火。

Dragonboard 410c开发过程中遇到的节点读写问题

前段时间基于Dragonboard 410c做了一个小东西,虽然比较简单但是遇到一个比较烦躁的问题,自己写了一个驱动程序,创建了几个文件节点,然后又在hal层写了一个小程序去对节点进行操作,但是问题来了,打开节点的时候没有问题,读取数据的时候也没有报错,唯独在写数据的时候报错了,让人很抓狂,接下来一起看看吧。       情况描述:       自己创建了pwm节点,但是hal层读

于Dragonboard 410c的智能照明系统(二)

在上篇blog中,我们已经准备好做这个小设计的物品了,现在到了真正开始做的时候了,其主要部分就是aw2013这颗芯片的控制,通过它就可以随意的控制灯了,但是,总感觉这颗芯片用在这里明显制约了这个照明系统,因为aw2013是用来控制led灯的,所以亮度上总感觉有点不够,不过后面我们可以慢慢完善,先来看看驱动代码吧。 #include <linux/leds-aw2013.h> #include <

基于Dragonboard 410c的燃气烟雾检测器(四)

前面已经简单的将燃气烟雾检测模块MQ-2和温湿度检测模块dht11的底层驱动实现了,下面再加一个简单的红灯的驱动,用于报警: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/interrupt.h>

基于Dragonboard 410c的燃气烟雾检测器(三)

燃气烟雾检测模块MQ-2在上篇博客中已经写好了,接下来是温湿度检测模块dht11了,模块信息在前面已经介绍过了,这里就不再赘述了,直接看程序: #include <linux/kernel.h> #include <linux/module.h> #include <linux/workqueue.h> #include <linux/slab.h> #include <linux/

基于Dragonboard 410c的燃气烟雾检测器(二)

前面已经将做一个燃气烟雾检测器需要用的主要模块介绍了一下,准备好这些模块后,就是硬件连接了,先说一下MQ-2这个模块,它有AO(模拟信号)输出和DO(TTL信号)输出,这里我是接的DO,接下来就是软件上如何去实现了,下面来看一下具体过程:   首先来看一下燃气烟雾检测模块MQ-2的底层驱动程序: #include <linux/module.h> #include <linux/kern

基于Dragonboard 410c的燃气烟雾检测器(一)

火是大家再熟悉不过的东西了,它可以在寒冷时给你温暖,在黑暗中给你光明,在饥饿时有热腾腾的食物,让人类摆脱了茹毛饮血的生活,火的作用和好处也是数不胜数,但是凡事都有两面性,一旦发生火灾,后果不堪设想,所以,最近想到用410c做一个简单的燃气烟雾检测器,让我们一起来了解一下吧。   其主要功能和模块如下:  (1)燃气烟雾检测模块MQ-2   首先说一下为什么选用这个模块,因为大部分家庭都至