标签:RTE AUTOSAR Communication SWC 接口 Server Client OperationInvokedEvent Event
Client-Server 接口和Sender-Receiver接口是AUTOSAR中最经常被使用的两类基础接口,在基于Sender-Receiver接口通信的上下文中使用的四种RTE Event已经在上一篇介绍,本篇介绍基于Client-Server接口通信的上下文中涉及到的两种RTE Event,OperationInvokedEvent 和AsynchronousServerCallReturnsEvent 。
Client-Server Interface
Server是提供服务的一方,Client是请求服务的一方,Client-Server接口中的元素是操作(Operation),为了方便理解我们可以认为是函数调用的关系,AUTOSAR中给出了一个简单的同步请求的例子,作为客户端的无线密钥处理模块(WirelessKeyHandling)通过通信系统向加密模块请求解码加密的无线密钥数据,具体如下图所示
OperationInvokedEvent
在Client-Server接口定义时,会设置Operation函数的参数和返回值,这个过程只是在声明一个接口类,Operation的实现需要依赖SWC内部的Runnable Entity,OperationInvokedEvent就是用来触发Operation关联的这个Runnable Entity。一个特定OperationInvokedEvent只能和一个CS的Operation关联。OperationInvokedEvent关联的Client端如果采用的是同步请求的方式,OperationInvokedEvent不需要映射到具体的TASK,只需要在调用的上下文执行即可。
AsynchronousServerCallReturnsEvent
在CS接口异步通信的方式中会使用该事件,异步通信的方式客户端只是发起请求,不管Server端是否马上响应,程序不会阻塞在调用的地方而是继续运行。Server端处理完客户端的异步请求后,通过AsynchronousServerCallReturnsEvent通知客户端其已经处理结束。采用异步通信的SWC,Server SWC内部的Runnable需要映射到特定的Task。
在异步通信的过程中,AsynchronousServerCallReturnsEvent具体实现可以直接触发一个Runnable运行也可以触发一个RTE Event, Client SWC的内部等待这个RTE Event的到来。
Example
/* Client SWC */
void RE_Client_func (void)
{
...
/* Trigger AsynchronousServerCall */
Rte_Call_XXX ();
/* wait event from the server*/
WaitEvent(Event_Asy_Call);
...
}
/* Server SWC*/
void RE_Server_func(void)
{
...
/* do something*/
/*trigger the event to client swc*/
SetEvent(Event_Asy_Call);
...
}
标签:RTE,AUTOSAR,Communication,SWC,接口,Server,Client,OperationInvokedEvent,Event 来源: https://blog.csdn.net/m0_50230964/article/details/117471687
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。