功能抑制管理器(Function Inhibition Manager)負責為軟件組件(software component)及其功能(functionality)提供控制機制,通過FIM可以抑制(取消應用程序功能的激活)這些功能,甚至可以在運行時(構建后配置)期間進行配置和修改。
functionality:一個功能可以由具有相同權限/抑制條件集的一個、幾個或部分可運行實體(runnable entity)的內容構建。
FID:功能被分配到一個標識符(FID-功能標識符),以及該特定標識符的抑制條件。這些功能在執行之前輪詢各自FID的權限狀態。如果特定標識符的抑制條件成立,則相應的功能將不再執行。
FIM Core Variables
● Diagnostic Event:“診斷事件”是DEM向特定診斷監視器功能提供的標識符,用于報告錯誤
● Monitor
Status:“監測狀態”是DEM根據監測功能的報告值計算出的狀態。可能的值由Dem_MonitorStatusType定義
● Monitored
Component:“被監控組件”是由DEM提供給特定被監控組件(硬件組件或信號)的標識符?!氨槐O控組件”的FAILED狀態表示所有分配的監控功能的結果和從其他DEMComponent繼承的故障信息
● Summarized
Event:FIM配置應該支持匯總事件。匯總事件由多個單個診斷事件組成;因此,特定的總結事件只是多個診斷事件的代表。Summarized Event可以用作SWC的抑制條件
● Function Identifier:
a. 應保證FIM中的每個functionid是唯一的
b. FIM模塊應使用FunctionId直接指向相關的功能信息(權限狀態等)
FIM實現了功能權限的計算。這些被計算的對象是SWC或Logic
Unit,每個FID的權限狀態是根據分配給特定FID的EventIds計算的。計算出每個EventIds的權限狀態,并進行“與”以確定最終的權限狀態
● Function Identifier permission
state:FID權限狀態包含由其FID表示的功能是否可以執行的信息(True執行/False禁止)。SWC組件通過FIM_GetFunctionPermission訪問狀態
4.2
FIM Core Functionalities
FIM Data Structure
FIM的配置過程應該在FIM模塊中創建數據結構來存儲抑制關系(EventID - FID -applicable mask)。
可配置的EventIds數量和抑制掩碼被分配給一個FID。每個FID的EventIds和抑制掩碼數量必須匹配,以便對于每個配置的事件,都存在相應的抑制掩碼。抑制掩碼包含FID的抑制條件,前提是相關的EventIds具有特定的狀態(Dem_EventStatusExtendedType)。這些掩碼定義了FID對事件的哪些狀態敏感。
每個FID都有一個抑制掩碼,兩者都分配給一個特定的FID EventId。如果該事件具有一定的狀態,并且如果事件狀態與配置的掩碼匹配,則對FID的抑制將激活。
Interaction with DEM
FIM模塊的功能是基于DEM事件為控制SWC(允許/抑制)提供服務功能當所報告事件的監控狀態發生變化時,如果DemTriggerFiMReports是啟用的,DEM通過API函數FIM_DemTriggerOnMonitorStatus通知FIM監控狀態的變化。在收到監視器狀態變化的通知時,FIM使用Dem_GetMonitorStatus來重新計算函數抑制。
每個FID都有一個Inhibition Counter抑制計數器。抑制計數器包含當前抑制的EventIds的數量。如果狀態與掩碼匹配,則抑制計數器增加;否則,抑制計數器不會更新。這適用 FIM_GetFunctionPermission(如果權限狀態必須在查詢時計算)和FIM_MainFunction。
若FIM_DemTriggerOnMonitorStatus報告了監視器狀態變化,則執行以下操作:
● 如果EventId的狀態改變導致釋放狀態(掩碼與監視器狀態不匹配),則抑制計數器必須減小
● 如果EventId的狀態變化導致抑制狀態(掩碼與監視器狀態匹配),則抑制計數器必須增加
● 如果抑制計數器為》 0,則FID權限狀態設置為FALSE,否則FID權限狀態設置為TRUE
Interaction with SWC:
對于每個FID,SWC應提供導致FID抑制的events列表和mask掩碼FIM模塊應同步響應傳入的查詢來確保對功能的即時控制。FIM模塊通過將權限狀態存儲為狀態變量或在權限查詢時計算事件狀態來實現這一行為如果使用接口FIM_SetFunctionAvailable將一個函數(FID)設置為不可用,它的權限狀態FIM_GetFunctionPermission總是返回FALSE。
-
汽車電子
+關注
關注
3027文章
7985瀏覽量
167325 -
計數器
+關注
關注
32文章
2256瀏覽量
94719 -
AUTOSAR
+關注
關注
10文章
363瀏覽量
21627 -
管理器
+關注
關注
0文章
246瀏覽量
18549 -
系統
+關注
關注
1文章
1017瀏覽量
21377
發布評論請先 登錄
相關推薦
評論