电量计驱动代码

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

/** 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3使用高德地图获取经纬度

首先 安装依赖 cnpm i amap/amap-jsapi-loader --save <script setup> import { onMounted, reactive, ref } from vue import AMapLoader from amap/amap-jsapi-loaderconst map ref(null) const mapData reactive({map: {},keyword: ,selectedLocation: {},selecte…

python object类型

# object类是所有类的父类 # type是所有类的类型&#xff0c;也就是所有类都是由type实例化而来&#xff0c;包括type类和父类object # class 继承object 同时又type类实例化。其中type就是元类print(type的父类,type.__base__) class test:pass print(class的父类是&#xff1…

NX二次开发UF_CURVE_ask_spline_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_spline_data Defined in: uf_curve.h int UF_CURVE_ask_spline_data(tag_t spline_tag, UF_CURVE_spline_p_t spline_data ) overview 概述 Reads the spline data a…

Java核心知识点整理大全18-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

抖音小店怎么做?新手应该怎么运营?实操经验分享!

我是电商珠珠 抖音小店的热度一天天在攀升&#xff0c;很多新手小白都会跑来问我&#xff0c;想做抖音小店具体要怎么做。 接下来&#xff0c;我从头到尾的跟大家讲一遍&#xff0c;注意重点。 第一&#xff0c;入驻 入驻的时候需要准备一张营业执照&#xff0c;对于新手来…

Map<Object>, List<Object>>返回满足条件的数据

Map<Object>, List<Object>>返回满足条件的数据 当一个表查询多次时&#xff0c;为了减少数据库的查询操作&#xff0c;可以使用stream流来进行条件筛选&#xff0c;获取所需要的数据。 例&#xff1a; Map<Long, List<PurchaseOrder>> orderMap…

Linux驱动开发——网络设备驱动(理论篇)

目录 一、前言 二、网络层次结构 三、网络设备驱动核心数据结构和函数 一、前言 网络设备驱动是 Linux 的第三大类驱动&#xff0c;也是我们学习的最后一类 Linux 驱动。这里我们首先简单学习一下网络协议层次结构&#xff0c;然后简单讨论 Linux 内核中网络实现的层次结构。…

接口测试工具(Jmeter)必学技巧

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…

m3u8及其应用

m3u8与协程 HLS找m3u8AES加、解密实例 HLS 即HTTP Live Streaming&#xff0c;将流媒体切分为若干TS片段&#xff0c;通过一个M3U8列表文件将TS片段批量下载实时流式播放。 #EXTM3U:第一行tag标识。#EXT-X-VERSION:版本#EXT-X-TARGETDURATION:定义每个TS的【最大】duration&a…

【知网稳定检索】2024年应用经济学,管理科学与社会发展国际学术会议(AEMSS 2024)

2024年应用经济学&#xff0c;管理科学与社会发展国际学术会议&#xff08;AEMSS 2024&#xff09; 2024 International Conference on Applied Economics, Management Science and Social Development 2024年应用经济学&#xff0c;管理科学与社会发展国际学术会议&#xff…

C++ 协程

经典协程辅助入门代码&#xff1a; typedef cotask::task my_task_t; int main() { // create a task using factory function [with lambda expression] my_task_t::ptr_t task my_task_t::create([]() { //创建协程 std::cout ()->get_id() cotask::this_task::get…

uniapp在H5端实现PDF和视频的上传、预览、下载

上传 上传页面 <u-form-item :label"(form.ququ3 1 ? 参培 : form.ququ3 2 ? 授课 : ) 证明材料" prop"ququ6" required><u-button click"upload" slot"right" type"primary" icon"arrow-upward" t…

流媒体播放器EasyPlayer播放H.265与H.264时进度条样式异常该如何解决?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#…

网易云音乐7天黑胶VIP会员免费领取入口怎么领取网易云音乐黑胶VIP7天会员?

网易云音乐7天黑胶VIP会员免费领取入口怎么领取网易云音乐黑胶VIP7天会员&#xff1f; 1、百度搜索「词令」&#xff0c;在搜索框内输入词令「vip163」关键词直达口令&#xff0c;进入网易云音乐7天黑胶VIP会员免费领取入口&#xff1b; 2、输入网易云音乐黑胶VIP7天会员领取词…

AJAX技术-04-- 跨域说明

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1 同源策略同源策略介绍规定要求 请求协议://域名:端口号 关于同源策略练习关于同源策略总结 2.JSONPJSONP原理说明关于JSONP优化 3.CORS介绍介绍不允许跨域说明跨域…

Cascader 级联选择器动态加载数据的回显

如果后端没有只返回第三级的id,而是同时把第三级的名字一起返回了&#xff0c;那么就可以通过下面的方法来实现 1.在级联选择器里面加上这句代码 placeholder"请选择" 2.注册一个字符串 pleasett:"" 3.赋值 如过后端返回的有第三级的选项名 直接进行赋…

itBuilder支持AI对话方式设计表结构啦

更新提示 在老版的AI中不能对话&#xff0c;当AI对需求理解的不准确、不全面时&#xff0c;本次带来的更新针对这个缺陷&#xff0c;提供了再次和AI交互的功能&#xff0c;可以基于之前的设计结果进行修正&#xff0c;详情请点击视频查看。 vedio

【WP】Geek Challenge 2023 web 部分wp

官方出的题很好 学到很多东西 前面几道入门提就不写了 klf_ssti 目录扫描扫到一个robots.txt 打开存在hack路径&#xff0c;查看源码存在klf 传参,结合题目 就是ssti注入了&#xff0c;然后使用tplmap工具发现是盲注&#xff0c;我们这里直接用脚本找popen&#xff1a; im…

深度学习之十一(扩散模型--Diffusion Variational Autoencoder,DVAE)

概念 扩散模型DVAE(Diffusion Variational Autoencoder)是一种结合了变分自动编码器(VAE)和扩散过程的生成模型。它结合了时间连续的扩散过程和变分自编码器的概念,用于建模和生成具有时间序列结构的数据,例如视频、时间序列等。 主要概念: 变分自编码器(VAE): VAE…

一键修复0xc000007b错误代码,科普关于0xc000007b错误的原因

最近很多用户都有遇到过0xc000007b错误的问题&#xff0c;出现这样的问题想必大家都会手足无措吧&#xff0c;其实解决这样的问题也有很简单的解决方法&#xff0c;这篇文章就来教大家如何一键修复0xc000007b&#xff0c;同时给大家科普一下关于0xc000007b错误的原因&#xff0…