当前位置: 首页 > news >正文

电量计驱动代码

外部电量计驱动代码,直接上代码了,懒,不做细节分析。。。。。

/** Fuelgauge battery driver** This package is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Software Foundation.** THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.*/#define pr_fmt(fmt)	"[hy4145] %s: " fmt, __func__
#include <linux/module.h>
#include <linux/param.h>
#include <linux/jiffies.h>
#include <linux/workqueue.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/interrupt.h>
#include <linux/gpio/consumer.h>#define sh_info	pr_info
#define sh_dbg	pr_debug
#define sh_err	pr_err
#define sh_log	pr_err#define	INVALID_REG_ADDR	0xFF
#define SHFS_UPDATE_KEY		0x8F91#define SH_FG_I2C_DEV_ADDR    (0x0b >> 1)
#define hy4145_ADDR 0x0b#define FG_FLAGS_FD				BIT(4)
#define	FG_FLAGS_FC				BIT(5)
#define	FG_FLAGS_DSG				BIT(6)
#define FG_FLAGS_RCA				BIT(9)#define DEBUG_INFO 0#if DEBUG_INFO#define debug(fmt,x...) printk("[hy4145]:-------------->%s(), line = %d " fmt,__FUNCTION__, __LINE__, ##x);
#else#define debug(fmt, x...)
#endifstruct sh_fg_chip* sh;	int charge_temp_value = 1000;
int charge_vlot_value = 0;
static int value_temp = 0;enum sh_fg_device {HY4145,
};static const unsigned char *device2str[] = {"hy4145",
};struct sh_fg_chip {struct device *dev;struct i2c_client *client;struct mutex update_lock;struct mutex irq_complete;bool resume_completed;u8 chip;struct power_supply *fg_psy;struct power_supply_desc fg_psy_d;};static int standard_command(struct i2c_client *client,unsigned char addr, unsigned char* buf)
{int ret = i2c_master_send(client, &addr, 1);if (ret < 0){pr_err("i2c_master_send error ret=%d\n", ret);return -1;}ret = i2c_master_recv(client, buf, 2);if (ret < 0){pr_err("i2c_master_recv error ret=%d\n", ret);return -1;}return 0;
}static int get_prop_status(struct sh_fg_chip *sh)
{unsigned char buf[2];standard_command(sh->client,0x00,buf);return buf[1]<<8|buf[0];
}st

相关文章:

电量计驱动代码

外部电量计驱动代码,直接上代码了,懒,不做细节分析。。。。。 /** Fuelgauge battery driver** This package is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License version 2 as* published by the Free Soft…...

如何将音频添加到视频并替换视频中的音轨

随着视频流媒体网站的流行和便携式设备的发展&#xff0c;你可能越来越倾向于自己制作视频并在互联网上分享。有时&#xff0c;你可能还需要编辑视频并为其添加背景音乐&#xff0c;因为音乐总是对视频的感知起着神奇的作用。 那如何给视频添加音频呢&#xff1f;或者如何用新…...

Android 单元测试初体验

Android 单元测试初体验 前言一、单元测试是什么&#xff1f;二、简单使用1.依赖2.单元测试代码简单模版及解释 总结 前言 当初在学校学安卓的时候&#xff0c;老师敢教学进度&#xff0c;翻到单元测试这一章节的时候提了两句&#xff0c;没有把单元测试当重点讲&#xff0c;只…...

HarmonyOS—ArkTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化【鸿蒙应用开发】

文章目录 ARKTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化@Observed 类装饰器说明装饰器参数类装饰器的使用@ObjectLink 变量装饰器说明装饰器参数同步类型允许装饰的变量类型被装饰变量的初始值举例装饰器的限制条件观察变化和行为表现观察的变化框架行为使用场景1.…...

设计问卷调查问题的技巧二:确定问题的结构与顺序

上篇文章中&#xff0c;我们了解到设计问卷调查问卷的技巧有保持问题中立、少用开放式问题、保持全名平衡的答案集、谨慎设置单一回答。在这篇文章中&#xff0c;我们将继续深入探讨设计问卷调查问题的剩余5大技巧&#xff01; Tip5&#xff1a;注意问题的顺序 虽然您可以任意…...

kubernetes使用nfs创建pvc部署mysql stateful的方法

kubernetes创建的pod默认都是无状态的&#xff0c;换句话说删除以后不会保留任何数据。 所以对于mysql这种有状态的应用&#xff0c;必须使用持久化存储作为支撑&#xff0c;才能部署成有状态的stateful. 最简单的方法就是使用nfs作为网络存储&#xff0c;因为nfs存储很容易被…...

JavaScript WebApi(二) 详解

监听事件 介绍 事件监听是一种用于在特定条件下执行代码的编程技术。在Web开发中&#xff0c;事件监听器可以用于捕获和响应用户与页面交互的各种操作&#xff0c;如点击、滚动、输入等。 事件监听的基本原理是&#xff0c;通过在特定元素上注册事件监听器&#xff0c;当事件…...

纯新手发布鸿蒙的第一个java应用

第一个java开发鸿蒙应用 1.下载和安装华为自己的app开发软件DevEco Studio HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 2.打开IDE新建工程&#xff08;当前用的IDEA 3.1.1 Release&#xff09; 选择第一个&#xff0c;其他的默认只能用(API9)版本&#xff0c;…...

UI自动化(selenium+python)之元素定位的三种等待方式!

前言 在UI自动化过程中&#xff0c;常遇到元素未找到&#xff0c;代码报错的情况。这种情况下&#xff0c;需要用等待wait。 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverWait 一、固定等待(sleep) 导入time模块&#xff0c;设定固定的等待时间 缺…...

[C++]指针与结构体

标题 一.指针1.指针的定义和使用2.指针所占的内存空间3.空指针与野指针4.const修饰指针5.指针和数组6.指针和函数 二.结构体1.结构体的定义与使用2.结构体数组3.结构体指针4.结构体的嵌套使用5.结构体做函数参数6.结构体中const使用场景7.案例练习 一.指针 作用: 可以通过指针…...

注解原理是什么 Spring MVC常用的注解有哪些?

文章目录 注解原理是什么Spring MVC常用的注解有哪些&#xff1f; 通过这篇文章来和大家一起认识springMVC常用的注解&#xff0c;那么首先需要来了解注解。 注解原理是什么 注解本质是一个继承了Annotation的特殊接口&#xff0c;其具体实现类是Java运行时生成的动态代理类。…...

【数据结构】树与二叉树(廿五):树搜索指定数据域的结点(算法FindTarget)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲3. 搜索指定数据域的结点a. 算法FindTargetb. 算法解析c. 代码实现a. 使用指向指针的指针b. 直接返回找到的节点 4. 代码整合 5.3.1 树的存储结构 5.…...

深度学习图像风格迁移 - opencv python 计算机竞赛

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…...

提高SQL语句执行效率的8个方法

提高SQL语句执行效率的8个方法 在日常的数据库操作中&#xff0c;如何提高SQL语句的执行效率是每个程序员都需要关注的问题&#xff0c;SQL语句的执行效率对系统的性能有着重要影响&#xff0c;本文将介绍8种提高SQL语句执行效率的方法。 合理使用索引 索引介绍 索引是数据…...

C语言,通过数组实现循环队列

实现循环队列最难的地方就在于如何判空和判满&#xff0c;只要解决了这两点循环队列的设计就没有问题。接下来我们将会使用数组来实现循环队列。 接下来&#xff0c;为了模拟实现一个容量为4的循环队列&#xff0c;我们创建一个容量为4 1 的数组。 接下来我们将会对这个数组…...

python+pygame+opencv+gpt实现虚拟数字人直播(一)

AI技术突飞猛进&#xff0c;不断的改变着人们的工作和生活。数字人直播作为新兴形式&#xff0c;必将成为未来趋势&#xff0c;具有巨大的、广阔的、惊人的市场前景。它将不断融合创新技术和跨界合作&#xff0c;提供更具个性化和多样化的互动体验&#xff0c;成为未来的一种趋…...

c语言:模拟实现各种字符串函数(2)

strncpy函数&#xff1a; 功能&#xff1a;拷贝指定长度的字符串a到字符串b中 代码模拟实现&#xff1a; //strncpy char* my_strncpy(char* dest, char* str,size_t num) {char* ret dest;assert(dest && str);//断言&#xff0c;如果其中有一个为空指针&#xff…...

【Proteus仿真】【STM32单片机】感应水龙头设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用LCD1602液晶模块、HCSR04超声波等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示超声波模块检测的距离&#xff0c;若检测距离小…...

P15 C++ 枚举

The ChenPi 前言 今天我们要讲的是 C 中的枚举。 enum 是 enumeration 的缩写&#xff0c;基本上可以说&#xff0c;它就是一个数值集合。如果你想要给枚举一个更实际的定义&#xff0c;它们是给一个值命名的一种方法。 所以我们不用一堆叫做 A、B、C 的整数。我们可以有一个…...

深入理解路由协议:从概念到实践

路由技术是Internet得以持续运转的关键所在&#xff0c;路由是极其有趣而又复杂的课题&#xff0c;永远的话题。 SO&#xff1a;这是一个解析路由协议的基础文章。 目录 前言路由的概念路由协议的分类数据包在网络中的路由过程理解路由表的结构路由器关键功能解析 前言 在互联…...

Hunyuan模型支持蒙古语吗?少数民族语言翻译案例

Hunyuan模型支持蒙古语吗&#xff1f;少数民族语言翻译案例 1. 引言 随着全球化进程的加速&#xff0c;语言多样性保护和文化交流变得愈发重要。对于蒙古族同胞、语言学研究者和跨文化交流工作者来说&#xff0c;一个关键问题常常被提及&#xff1a;当前主流的大语言模型是否…...

如何分析网站SEO数据,优化营销策略

如何分析网站SEO数据&#xff0c;优化营销策略 在当今数字化营销的时代&#xff0c;网站的SEO数据分析不仅是提升网站排名的关键&#xff0c;更是优化整体营销策略的重要手段。本文将详细探讨如何通过分析网站SEO数据来优化营销策略&#xff0c;助力企业在竞争激烈的市场中脱颖…...

PS软件自动化:利用SenseVoice-Small语音指令批量处理图片

PS软件自动化&#xff1a;利用SenseVoice-Small语音指令批量处理图片 你是不是也厌倦了在Photoshop里一遍又一遍地重复那些机械性的操作&#xff1f;给几十张图片统一调整尺寸、批量添加水印、或者对一组照片执行同样的滤镜效果。这些工作既枯燥又耗时&#xff0c;还容易因为手…...

脚本开发必看:随机数使用中的3个常见误区及正确写法(按键精灵版)

脚本开发必看&#xff1a;随机数使用中的3个常见误区及正确写法&#xff08;按键精灵版&#xff09; 在自动化脚本开发中&#xff0c;随机数功能就像一把双刃剑——用得好能让脚本行为更接近人类操作&#xff0c;用得不好则可能导致不可预测的bug。特别是在按键精灵这类工具中&…...

大模型实习备战路线图:从入门到入职

现在95%的大模型实习岗位&#xff0c;都不是让你去从头“创造”一个GPT-5&#xff0c;而是让你基于现有的模型&#xff0c;去做各种“下游”工作。什么意思呢&#xff1f;大家想象中的大模型实习&#xff0c;可能是这样的&#xff1a;一排排A100/H100在你面前闪烁&#xff0c;你…...

Mac开发环境神器:OpenClaw+千问3.5-27B调试日志分析

Mac开发环境神器&#xff1a;OpenClaw千问3.5-27B调试日志分析 1. 为什么开发者需要日志分析助手 作为一个长期在Mac上折腾各种开发环境的程序员&#xff0c;我经历过太多深夜调试的痛苦时刻。那些密密麻麻的终端日志输出&#xff0c;往往包含着关键错误线索&#xff0c;但要…...

从BOM到MES:制造业核心系统全解析,新手也能看懂

从BOM到MES&#xff1a;制造业核心系统全解析&#xff0c;新手也能看懂 走进任何一家现代化制造企业的生产车间&#xff0c;你会看到的不再是传统印象中机器轰鸣、工人忙碌的简单场景&#xff0c;而是由各种数字化系统精密协调运作的智能生态。对于刚接触制造业的新人来说&…...

Tinycon终极指南:如何在网站favicon上优雅显示通知气泡的完整教程

Tinycon终极指南&#xff1a;如何在网站favicon上优雅显示通知气泡的完整教程 【免费下载链接】tinycon A small library for manipulating the favicon, in particular adding alert bubbles and changing images. 项目地址: https://gitcode.com/gh_mirrors/ti/tinycon …...

SEO优化推广的具体流程是什么

SEO优化推广的具体流程是什么 在当今互联网时代&#xff0c;SEO优化推广已成为网站流量获取的关键手段。具体的SEO优化推广流程是什么呢&#xff1f;本文将详细介绍SEO优化推广的具体流程&#xff0c;帮助你更好地了解和实践这一重要的数字营销技能。 一、前期准备 在开始SE…...

智能家居中枢:OpenClaw+千问3.5-35B-A3B-FP8实现多模态家庭控制面板

智能家居中枢&#xff1a;OpenClaw千问3.5-35B-A3B-FP8实现多模态家庭控制面板 1. 为什么需要本地化的智能家居中枢&#xff1f; 去年冬天的一个深夜&#xff0c;我被空调异常启动的噪音惊醒。打开手机APP检查时&#xff0c;发现第三方云服务正在维护&#xff0c;所有设备状态…...