再Android10上实现检测AHD摄像头是否接入

项目有个需要,需要知道tp9951是否接入AHD摄像头

1,驱动层可以通过读取寄存器的值来检测是否接入AHD摄像头

    tp9951_write_reg(0x40, 0x00); //select decoder page
    tp9951_write_reg(0x41, ch);    
    val = tp9951_read_reg(TP_INPUT_STATUS_REG);
    pr_info("[%s] input_status ch %d : val:%x\n", __func__, ch, val);

        1号寄存器的bit7是检测是否接入摄像头的标记位。TP_INPUT_STATUS_REG为 0x01.

2,在/proc下增加一个文件节点来实现从kernel态设备状态传递到user态。

static char kbuf[28] = {0};
//open operation
static int proc_file_open(struct inode *inode, struct file *file)
{   
    MX_LOG_INF("come here.");
    return 0;
}
//read operation
static ssize_t proc_file_read(struct file *file, char __user *buffer, size_t len, loff_t *offset)
{
    int val=0;
    MX_LOG_INF("come here.");
    memset(kbuf, 0, sizeof(kbuf));
    val = mx_tp9951_ahd_det(0);
    if ((val & 0x0080) > 0)  {
        sprintf(kbuf, "%s\n", "unlink");
    } else {
        sprintf(kbuf, "%s\n", "link");
    }
    copy_to_user(buffer , kbuf , strlen(kbuf));
    return strlen(kbuf);
}
//write opertion
static ssize_t proc_file_write(struct file *file, const char __user *buffer, size_t len, loff_t *offset)
{
    MX_LOG_INF("come here.");
    //memset(kbuf, 0, sizeof(kbuf));
    //copy_from_user(kbuf , buffer , len);
    return len;
}
//release operation
int proc_file_release(struct inode *inode, struct file *file)
{
    MX_LOG_INF("come here.");
    return 0;
}

static const struct file_operations proc_file_ops = {
        .open           = proc_file_open,
        .read           = proc_file_read,
        .write          = proc_file_write,
        .release        = proc_file_release,
};

static int proc_file_init(void)
{
    proc_create_data("mx_ahd_det", 0644, NULL, &proc_file_ops, NULL);
    MX_LOG_INF("come here.");
    return 0;
}

static void proc_file_exit(void)
{
    remove_proc_entry("mx_ahd_det", NULL);
    MX_LOG_INF("come here.");
}

注:需要在模块初始化时调用proc_file_init函数,

      在模块退出函数地方调用proc_file_exit函数。

3, 用cat 命令可测试

$cat /proc/mx_ahd_det

 输出link表示当前接入了AHD摄像头。

输出unlink表示未接入AHD摄像头。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892480.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过华为鲲鹏认证的软件产品如何助力信创产业

软件通过华为鲲鹏认证与信创产业有着密切的联系。鲲鹏认证是华为推动信创产业发展的一项重要举措,通过该认证,软件可以在华为的生态系统中实现更好的兼容性和性能优化,从而推动信创产业的全面发展和国产化替代。 鲲鹏认证的定义和重要性 鲲鹏…

python基于大数据的电影市场预测分析

一、摘要 智慧是改变生活和生产的一种来源,那么智慧的体现更大程度上是对于软件技术的改变。当今社会,好的思路,好的创新方式往往是改变人们生活的一种来源。最常见最直接的形式就是各种软件的创始思路,京东因为非典的流行才能够…

[全国/全省/全市]初赛知识点复习大汇总

目录 计算机结构与组成原理 计算机发展及应用 1、第一台电子计算机的诞生: ENIAC 2、第一台具有存储程序功能的计算机:EDVAC。 图灵 计算机发展阶段 世界上最快的超级计算机 计算机应用 计算机保护知识产权 计算机病毒 硬件系统的组成 概述 …

分享一个图片RGB以及16进制颜色提取的在线网站

IMAGECOLORPICKER.com 网站链接:传送门呢 可以在线上传自己的图片,然后识别图片的颜色,比较方便。

2024年第九届数维杯大学生数学建模挑战赛赛题和数维杯国际数学建模 LaTeX 模板

2024年数维杯国际大学生数学建模挑战赛参赛规则 数维杯大学生数学建模竞赛每年分为两场,每年上半年为数维杯全国赛(5月下旬) ,下半年为数维杯国际挑战赛(11月下旬),已连续成功举办九届,2023年数维杯国际大学生数学建模挑战赛共有近…

【论文阅读】DL-SRIR综述2023

0. 摘要 SISR与DL的介绍 单图像超分辨率(SISR)是计算机视觉的一个重要研究领域,其目的是从低分辨率(LR)图像中恢复清晰、高分辨率(HR)图像。 随着深度学习理论和技术的快速发展,深度学习被引入到图像超分辨率(SR)领域,并在许多领域取得了远远超过传统方法的成果。 本文框架…

Mapbox GL 加载GeoServer底图服务器的WMS source

貌似加载有点慢啊!! 1 这是底图 2 这是加载geoserver中的地图效果 3源码 3.1 geoserver中的网络请求 http://192.168.10.10:8080/geoserver/ne/wms?SERVICEWMS&VERSION1.1.1&REQUESTGetMap&formatimage/png&TRANSPARENTtrue&STYL…

ImportError: /../lib/libstdc++.so.6: version `GLIBCXX_3.4.29解决方案

今天跑实验遇到了一个头疼的报错,完全看不懂,上网查了一下成功解决,但是网上的指令没法直接拿来用,所以在这里记录一下自己的解决方案。 报错信息: Traceback (most recent call last):File "/home/shizhiyuan/c…

数据结构 —— 树和二叉树简介

目录 0.前言 1.树的认识 什么是树 树的相关概念 树的表示 孩子兄弟表示法 2.二叉树的认识 什么是二叉树 特殊的二叉树 满二叉树 完全二叉树 二叉树的性质 性质一 性质二 性质三 二叉树的存储 顺序存储 链式存储 0.前言 笔者我之前讲解的数据结构都是线性…

OceanBase 的写盘与传统数据库有什么不同?

背景 在数据库开发过程中,“写盘”是一项核心操作,即将内存中暂存的数据安全地转储到磁盘上。在诸如MySQL这样的传统数据库管理系统中,写盘主要有以下几步:首先将数据写入缓存池;其次,为了确保数据的完整性…

深入理解Qt中的QTableView、Model与Delegate机制

文章目录 显示效果QTableViewModel(模型)Delegate(委托)ITEM控件主函数调用项目下载在Qt中,视图(View)、模型(Model)和委托(Delegate)机制是一种非常强大的架构,它们实现了MVC(模型-视图-控制器)设计模式。这种架构分离了数据存储(模型)、数据展示(视图)和数据操作(委托),使…

LabVIEW风机滚动轴承监测系统

矿井主通风机作为矿井中最重要的通风设备,一旦出现故障,不仅会影响矿井内的空气质量,还可能引发安全事故。研究表明,通风机中约30%的故障是由轴承问题引起的。因此,能够实时监控矿井主通风机轴承状态的系统&#xff0c…

Java基础(6)

深拷贝和浅拷贝区别了解吗?什么是引用拷贝?关于深拷贝和浅拷贝区别,我这里先给结论:浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部…

图像中的数值计算

目录 图像读取与形状图像数据展示图像数据操作超出范围的像素值处理 图像读取与形状 使用cv2.imread函数读取图像文件。图像的形状通过shape属性获取,格式为(高度, 宽度, 颜色通道数)。 import cv2img1 cv2.imread(bg.jpg) img2 cv2.imread(fish.jpg)print(img1…

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要,尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧,从代码结构、工具使用到团队协作的多个角度进行详细分析: 1. 模块化设计 模块化设计 是提高代码可维护性和…

jvm垃圾收集器简介

串行垃圾收集器 串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,Java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW(Stop-The-World),一般的javaweb应用中…

算法题总结(十三)—— 动态规划(上)

动态规划 动态规划理论基础 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff…

工业物联网关-连接Thingsboard

拓扑未来网关支持通过MQTT与Thingsboard连接,连接成功后,网关所有外部终端设备都可以通过网关与Thingsboard平台通讯。首先需要在Thingsboard平台上新建一个网关设备,如下图,注意要勾选"是否网关",否则该设备…

怎样设置Windows系统不会自动同步时间

一、背景 我们在进行测试一些软件的时候需要调整Windows系统的时间到指定的日期,并且希望这个手动调整的日期可以固定住不变,不希望电脑重启后恢复到当前的最新日期。 二、操作方法 注意:如下的操作方法是以Windows7系统为例进行演示说明&a…

打破医院内外网通讯壁垒的关键-消息摆渡

随着医疗行业的数字化发展,医院的信息安全需求不断增加,尤其是内外网隔离的严格要求。医院内部网络被划分为内网和外网,以保证核心系统的安全性。然而,这也带来了新的挑战——如何在内网与外网之间进行安全、高效的通讯&#xff1…