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

自用--过往项目分析--算是成长把--看看大佬们写的好代码

从测试用例开始分析
“D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\interfaces\plugin\vibrator\test\unittest\ExampleJsunit.test.js”
下来后就是函数注册
D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\interfaces\plugin\vibrator\src\vibrator_js.cpp
再接下来
D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\interfaces\native\vibrator\src\vibrator_agent.cpp

再接下来
D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\frameworks\native\miscdevice\include\vibrator_service_client.h
以上就是客户端的注册了

D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\frameworks\native\miscdevice\include\i_miscdevice_service.h

D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\frameworks\native\miscdevice\include\miscdevice_service_proxy.h

接下来就是服务端口了
D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\frameworks\native\miscdevice\include\i_miscdevice_service.h
D:\sensor\sensors_miscdevice-master\sensors_miscdevice-master\services\miscdevice_service\include\miscdevice_service_stub.h

豆包写的
层级 文件路径 核心职责
JS 测试层 interfaces/plugin/vibrator/test/unittest/ExampleJsunit.test.js 编写自动化测试用例,验证vibrator模块 JS 接口的功能正确性
NAPI 注册层 interfaces/plugin/vibrator/src/vibrator_js.cpp 完成vibrator NAPI 模块注册、枚举常量定义、JS 接口与 Native 函数的映射

JS测试用例调用vibrator.vibrate(10, callback)

JS运行时通过require(‘vibrator’)加载已注册的NAPI模块

触发vibrator_js.cpp中Vibrate函数执行

Vibrate函数解析参数类型(数字10),分发至VibrateTime

VibrateTime解析时长、校验合法性后,调用Native层StartVibrate(10)

Native层执行震动逻辑(或返回错误),通过回调函数将结果返回至JS测试用例

测试用例根据回调结果执行断言,完成功能验证

三、用通俗例子理解:类比 “去银行取钱”
把整个流程类比成你(测试用例)去银行取钱(调用马达震动):
你(测试用例):只想取钱,不想知道金库在哪、怎么开;
银行柜员(VibratorServiceClient,客户端):你和金库之间的代理,帮你提交取钱请求;
银行金库管理员(MiscdeviceService,服务端):唯一有权限打开金库(操作马达)的人;
流程必然是:你 → 柜员(提交取钱请求) → 金库管理员(取钱) → 柜员(把钱给你)
而不可能是:你 → 直接找金库管理员(权限不够,进不去);或 金库管理员 → 主动把钱给你(你没请求,管理员不知道你要多少)。
这个例子完全对应振动器的调用逻辑:测试用例 → VibratorServiceClient(提交震动请求) → MiscdeviceService(操作马达) → VibratorServiceClient(返回结果) → 测试用例。

客户端Proxy::Vibrate → 打包参数 → Remote()->SendRequest(VIBRATE, data, reply)

IPC框架转发请求 → 服务端Stub::OnRemoteRequest(code=3, data, reply)

OnRemoteRequest:

  1. 校验接口描述符(客户端=服务端,通过);

  2. baseFuncs_.find(3) → 找到VibratePb函数;

  3. 调用this->VibratePb(data, reply);

    VibratePb:权限校验 → 解析参数 → 调用MiscdeviceService::Vibrate

    返回处理结果 → 写入reply → IPC框架返回给客户端

  4. JS测试用例:vibrator.vibrate(10, callback)

  5. interfaces层(NAPI):解析参数→调用VibrateTime→校验时长→调用StartVibratorOnce(10)

  6. frameworks层(客户端):

    • VibratorServiceClient::Vibrate→InitServiceClient(重试3次获取服务失败,返回-2)
    • (少数场景服务已启动)→MiscdeviceServiceProxy::Vibrate→SendRequest(VIBRATE, 10)
  7. services层(服务端):

    • Stub::OnRemoteRequest→路由到VibratePb→权限校验通过→调用MiscdeviceService::Vibrate(0,10)
    • MiscdeviceService::Vibrate→参数校验→状态管理→调用HdiConnection::StartOnce(10)
  8. hdi_connection层:

    • HdiConnection::StartOnce→调用vibratorInterface_->StartOnce(10)→驱动调用失败返回-5
  9. 错误码回流:

    • -5→MiscdeviceService::Vibrate→VibratePb→IPC框架→客户端→interfaces层→封装为JS Error(code=-1)
  10. JS回调:触发失败回调,收到error.code=-1,测试用例断言失败

http://www.jsqmd.com/news/409808/

相关文章:

  • 2026年比较好的激光切管机可靠供应商参考推荐几家 - 品牌宣传支持者
  • 2026年热门的油管内衬设备封口机/油管内衬设备选哪家直销厂家推荐 - 品牌宣传支持者
  • 避坑:stm32L431生成代码缺少HAL_RTCEx_SetWakeUpTimer_IT ()
  • 个人博客网站搭建day5--MyBatis-Plus核心配置与自动填充机制详解(漫画解析)
  • PDF压缩工具:纯前端、开源、高效智能的本地压缩方案(在线demo+实现思路)
  • 2026年驻马店复合肥厂家综合实力深度评估 - 2026年企业推荐榜
  • 2026年初激光笔定制厂家综合评测与选型指南 - 2026年企业推荐榜
  • 2026年热门的油管内衬设备拔管机/油管内衬设备装管机制造厂家实力参考哪家专业 - 品牌宣传支持者
  • 2026年驻马店复合肥商家综合评测与选购指南 - 2026年企业推荐榜
  • 驻马店有机肥服务商盘点:五家实力企业深度解析 - 2026年企业推荐榜
  • 驻马店有机肥服务商盘点:五家实力企业深度解析 - 2026年企业推荐榜
  • Java Web 在线考试系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 2026年浙江导向标识实力厂家评测与选型指南 - 2026年企业推荐榜
  • 企业级开发精简博客系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 【CVPR26-李学龙-中国电信】MARIS:具有几何增强和语义对齐的海洋开放词汇实例分割
  • 2026年质量好的热风式油管清洗设备哪家强品牌厂家推荐 - 品牌宣传支持者
  • 2026武汉东湖高新区英语启蒙平台权威评估指南 - 2026年企业推荐榜
  • 2026年猫玩具激光笔核心供应商综合实力评测与选型指南 - 2026年企业推荐榜
  • 救命!100篇文献读不完?我用 Gemini 3 小时搞定了综述初稿
  • 2026年评价高的油管清洗设备/直热式水洗油管清洗设备高评价品牌厂家推荐哪家权威 - 品牌宣传支持者
  • 景观标识实力厂家专业评测:2026年如何选择可靠合作伙伴? - 2026年企业推荐榜
  • 国产AI CRM如何破解B2B企业客户关系管理难题
  • 2026控油蓬松去屑洗发水TOP榜:油头细软塌人群必入爆款洗发好物
  • 浙江金属流水景墙厂商综合评测与2026年选型建议 - 2026年企业推荐榜
  • “源启”深度解析:国家级数实融合轻创业孵化平台的核心逻辑与发展路径
  • AI驱动元宇宙应用的性能优化:架构师的5个核心技巧(百万用户并发测试)
  • 掌握大数据领域Hadoop的数据备份与恢复技术
  • 【毕业设计】SpringBoot+Vue+MySQL 物流管理系统平台源码+数据库+论文+部署文档
  • 【毕业设计】SpringBoot+Vue+MySQL Spring Boot在线远程考试系统平台源码+数据库+论文+部署文档
  • 海外社媒营销怎么做?平台选择与内容策略全解析