应用程序监听驱动程序消息 疯壳 出品 在前面课程中,我们通过驱动服务基类成员IDeviceIoService中的Dispatch方法进行用户态应用程序和内核态驱动程序的消息交互,其中涉及到两个HdfSBuf——data与reply: data:为app向驱动传递的数据的指针 reply:为驱动向app传递的数据的指针 除此之外,app下发数据以后,驱动程序可以通过主动上报事件的方式向app发送消息,而app端则需要注册监听上报事件的相关操作方法。 在前面课程的代码基础上,app与驱动源码需要做下列修改:
1.消息回调声明 我这里在main函数上方进行声明 Ps:static int OnDevEventReceived(void *priv, uint32_t id, struct HdfSBuf *data); 2.消息回调实体定义 我这里在main函数后面进行消息回调的实体定义 Ps: static int OnDevEventReceived(void *priv, uint32_t id, struct HdfSBuf *data) { unsigned int tmp = 0; OsalTimespec time; OsalGetTime(&time); HDF_LOGE("%s received event at %llu.%llu", (char *)priv, time.sec, time.usec); if (!HdfSbufReadUint32(data,(unsigned int*)&tmp)) { HDF_LOGE("drv fail to read sbuf"); return -1; } HDF_LOGE("%s: dev event received: %d %d", (char *)priv, id, tmp); return 0; } 3.添加系统时间、延迟等接口头文件 4.mian函数修改一 在main函数此处定义监听相关变量以及监听注册 Ps: static struct HdfDevEventlistener listener = { .callBack = OnDevEventReceived, .priv ="fk sample_service" }; if (HdfDeviceRegisterEventListener(serv, &listener) != 0) { HDF_LOGE("fail to register event listener"); return -1; } 5.main函数修改二 添加取消注册操作 Ps: HdfDeviceUnregisterEventListener(serv, &listener); 二、驱动修改 驱动程序在Disaptch中写寄存器操作后面添加箭头所示代码实现驱动消息主动上报 Ps: return HdfDeviceSendEvent(client->device, cmdCode, data); 上图添加的接口在hdf_device_desc.h文件中声明: 其中第一个参数为 HdfDeviceObject结构体指针,该结构体指针为Disaptch第一个参数中的结构体的成员,他表示驱动程序设备对象的指针。 第二个参数表示消息发送事件的ID,上面的代码直接回传了cmdCode。 第三个参数表示驱动程序发送的消息内容的指针,上面的代码直接回传了data buf。 接下来将代码重新编译,将编译生成的文件烧录到板子中,运行 /bin 目录下的myapp结果如下: 终端中打印的信息完全符合我们的代码逻辑。 |
共1条
1/1 1 跳转至页
疯壳-鸿蒙OS-应用程序监听驱动程序消息

只看楼主 1楼
关键词: 疯壳 鸿蒙os
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |