上层监听Kernel上报的UEvent事件Demo

编程入门 行业动态 更新时间:2024-10-13 08:20:42

上层监听Kernel上报的UEvent<a href=https://www.elefans.com/category/jswz/34/1770959.html style=事件Demo"/>

上层监听Kernel上报的UEvent事件Demo

最近的项目需要上层判断新外挂的mcu的连接状态 , 其节点自定义为  /sys/class/lgy_class/lgy/lgy。

在kernel中创建节好点的时候,其实已经有了uevent事件了。

上层需要监听的是这个节点虚拟出来的

 

1,在自定义的NeoManagerService.java 服务中添加监听动作;

private static final String LGY_STATE_MATCH ="DEVPATH=/devices/virtual/lgy_class/lgy";

    

/** Listens for uevent messages from the kernel to monitor the lgy state*/ 
private final class LgyUEventObserver extends UEventObserver {@Overridepublic void onUEvent(UEventObserver.UEvent event) {Log.d("lgy_debug","onUEvent 1111111111111");Log.d("lgy_debug","onUEvent 2222222222222");String state = event.get("LGY_STATE");Log.d("lgy_debug","onUEvent 2222222222222 state ="+state);doSomeThing();}
}

 

private static final String LGY_STATE_MATCH ="DEVPATH=/devices/virtual/lgy_class/lgy";private static UEventObserver mUEventObserver;public NeoManagerService(Context context) {//super(context);mContext = context;	try {myService = ILgytestDevice.getService(); mLgytestCallback = new LgytestCallback();myService.registerCallback(mLgytestCallback);mUEventObserver = new LgyUEventObserver();mUEventObserver.startObserving(LGY_STATE_MATCH);} catch (Exception e) {Log.e ("lgy_debug","ILgytestDevice getService error!");e.printStackTrace();}			}

 

kernel层使用kobject_uevent_env函数上报uevent事件

char *disconnected[2] = { "LGY_STATE=DISCONNECTED", NULL };
char *connected[2] = { "LGY_STATE=CONNECTED", NULL };
char **uevent_envp = NULL;uevent_envp = dev->connected ? connected : disconnected;//设备连接状态kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, uevent_envp);//开始上报事件
//kobject_uevent(&dev->kobj, KOBJ_CHANGE);//这种方式上层得不到LGY_STATE的值

 

更多推荐

上层监听Kernel上报的UEvent事件Demo

本文发布于:2024-02-25 00:58:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1697264.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:事件   Kernel   UEvent   Demo

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!