framework框架负责固件的通用流程实现,包括系统初始化,module初始化,中断服务提供,event服务提供等。这样module就可以专注于自己功能和对外交互api的实现。SCP framework初始化流程图如下:
module对外接口
在scp代码中,所有的功能都由一个个模块提供。每个模块以api枚举及其结构体的方式对外提供该模块的功能,并在模块通用结构体fwk_module中提供。
event事件
模块可以给自己或者别的模块发送event事件,事件的参数是结构化消息structfwk_event。
motificaiont通知
notification涉及到两个模块的通信,跟event的区别是:
• •event是一个模块发给另外一个模块或者发给自己,比较确定
• •notification是发给订阅了这个模块的所有模块,算广播,需要先进行订阅
notification接口:
• •fwk_notification_subscribe//订阅指定模块指定通知
• •fwk_notification_unsubscribe//取消订阅通知
• •fwk_notification_notify//向订阅该通知的模块发送通知
在实现上notification使用event的消息传递机制,只在发消息和处理消息的时候做微小改动。
模块绑定
一个模块或元素可以绑定到另一个模块或模块内的元素。目标是相同的 - 获取指向可在后续阶段使用的 API的指针。当尝试绑定到模块内的元素(而不是模块本身)时,主要区别在于接收和处理绑定请求的模块能够根据目标元素更改其行为。例如,可以允许请求绑定的模块仅绑定到处理请求的模块内的元素子集。
思路:A模块要与B模块通信,A模块的全局变量要拿到B模块的回调函数。
A模块在初始化的时候,会调用自己的bind函数,
bind--》fwk_module_bind--》B模块的process_bind_request()函数,从而拿到api
全部0条评论
快来发表一下你的评论吧 !