原帖 | Jack | 2025-02-28 00:07 | 👍0 | 阅读约1
inst函数在整个模块中的地位:
inst函数不仅仅是将获取到的接口挂载到自身那么简单,观察handler和driver的inst函数,它们传入的参数都是本层对应的对象、本层获取到的接口
每一层都是拿到上层给到的接口之后,通过操作这些接口实现本层的业务逻辑,这些业务逻辑本质上是为上层提供接口(对于driver来说)或者是实现自身和其他模块的联动(handler和user的联动)。而inst介于拿到上层接口之后、操作接口实现本层业务逻辑之前,因为要完成和架构上层的解耦,所以每一层都不是是直接操作上层提供的接口,而是将上层传来的充满接口的“包裹”解包,将接口挂载到自身,直接操作自身的接口实现本层业务逻辑。inst的职责所在就是解包,自挂载,但不止是这些,到目前为止本层想要实现自身的业务逻辑还需要一些前提(对于handler来说,需要用刚拿到的接口创建队列,用刚拿到的接口让driver得以实现、aht21得以运行;对driver来说需要刚拿到的iic接口和aht21交互、让aht21初始化,ready to measure),这些实现本层业务逻辑的前提被放在了init函数中去执行,init之后才能去实现本层的业务逻辑,如果有需要自检的话,还需要在init函数中执行一些确保操作,例如driver层会调用__read_id函数去和芯片去交互。经过inst之后,模块才能放心的去实现自己的业务逻辑。
相关笔记