基于UDS的DoIp实现(三) -- UDS服务实现

发布时间 2023-04-18 15:41:41作者: 一条名叫西西的狗

一、UDS Task处理

void UDSPeriodicTask(void) {
  //其它功能处理
    if (mRequest_Received) {
        mRequest_Received = FALSE;
        UDS_CAN_Service_Manager();
    }
}

UDSPeriodicTask,是属于轮训功能的处理,当接收到数据时,就会对数据进行解析。

数据解析:

void UDS_CAN_Service_Manager(void) {
  //对数据的解析操作,判断数据是否有效
switch (mFunctionType) { case PHYSICAL: SelectionSID(mBuffer_Ptr, mReceive_Len); break; case FUNCTIONAL: break; default: break; }  
  //其它功能操作
}

 

二、UDS接收数据

void UDS_Request_Received(u_uint16_t len, Sever_Function_Type_T type) {
  //其它数据的设置,以及条件检查 mRequest_Received
= TRUE; mReceive_Len = len; mFunctionType = type; }

  其中,进行控制的就是mRequest_Received,UDS服务按照这个变量,判断是否进行数据处理操作。