【Dcm】車両診断通信 その71【シミュレーション⑨】

【Dcm】車両診断通信 その71【シミュレーション⑨】 車両診断通信

バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/

はじめに

AUTOSAR-Dcmのコンフィグレーションの話。
Dsdのコンフィグレーションコードについて

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

AUTOSAR-Dcm Dsdのコンフィグレーションコード

フクさん
フクさん

よし、Dsdのコンフィグレーションコードだ!

太郎くん
太郎くん

うーん、今回はクラス図もシンプルだったからコードの方もシンプルだと期待したい!

//----------------------------------------------------------------
//			DSD									
//----------------------------------------------------------------

// SID table
#define SID_DIAGNOSTIC_SESSION_CONTROL			0x10
#define SID_ECU_RESET							0x11
#define SID_CLEAR_DIAGNOSTIC_INFORMATION		0x14
#define SID_READ_DTC_INFORMATION				0x19
#define SID_READ_DATA_BY_IDENTIFIER				0x22
#define SID_READ_MEMORY_BY_ADDRESS				0x23
#define SID_READ_SCALING_DATA_BY_IDENTIFIER		0x24
#define SID_SECURITY_ACCESS						0x27
#define SID_COMMUNICATION_CONTROL				0x28
#define SID_READ_DATA_BY_PERIODIC_IDENTIFIER	0x2A
#define SID_DYNAMICALLY_DEFINE_DATA_IDENTIFIER	0x2C
#define SID_WRITE_DATA_BY_IDENTIFIER			0x2E
#define SID_INPUT_OUTPUT_CONTROL_BY_IDENTIFIER	0x2F
#define SID_ROUTINE_CONTROL						0x31
#define SID_REQUEST_DOWNLOAD          			0x34
#define SID_REQUEST_UPLOAD            			0x35
#define SID_TRANSFER_DATA            			0x36
#define SID_REQUEST_TRANSFER_EXIT     			0x37
#define SID_WRITE_MEMORY_BY_ADDRESS				0x3D
#define SID_TESTER_PRESENT						0x3E
#define SID_NEGATIVE_RESPONSE					0x7F
#define SID_CONTROL_DTC_SETTING					0x85


static const Dcm_DsdServiceType DIAG_P2PorP2A_serviceList[] = {
	{
		 SID_DIAGNOSTIC_SESSION_CONTROL,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_SECURITY_ACCESS,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 SecurityAccess_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_READ_MEMORY_BY_ADDRESS,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_READ_DATA_BY_IDENTIFIER,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_WRITE_DATA_BY_IDENTIFIER,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 RWDID_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 RWDID_SessionList,		/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_ROUTINE_CONTROL,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 RC_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 RC_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_TESTER_PRESENT,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_ECU_RESET,	/* DsdSidTabServiceId */
		 TRUE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_REQUEST_DOWNLOAD,	/* DsdSidTabServiceId */
		 FALSE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_REQUEST_UPLOAD,	/* DsdSidTabServiceId */
		 FALSE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_REQUEST_TRANSFER_EXIT,	/* DsdSidTabServiceId */
		 FALSE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_TRANSFER_DATA,	/* DsdSidTabServiceId */
		 FALSE,	/* DsdSidTabSubfuncAvail */
		 UnProtected_SecurityList,	/* DsdSidTabSecurityLevelRef */
		 ALL_SessionList,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 FALSE	/* Arc_EOL */
	},
	{
		 SID_TRANSFER_DATA,	/* DsdSidTabServiceId */
		 FALSE,	/* DsdSidTabSubfuncAvail */
		 NULL_PTR,	/* DsdSidTabSecurityLevelRef */
		 NULL_PTR,	/* DsdSidTabSessionLevelRef */
		 NULL_PTR,	/* Dcm_DsdConditionGetFncType */
		 NULL_PTR,	/* Dcm_DsdResetPidsFncType */
		 TRUE,	/* Arc_EOL */
	}
};

static const Dcm_DsdServiceTableType DsdServiceTable[] = {
	{
		 0,	/* DsdSidTabId */
		 DIAG_P2PorP2A_serviceList,	/* DsdService */
		 FALSE	/* Arc_EOL */
	},
	{
		 0,	/* DsdSidTabId */
		 NULL_PTR,	/* DsdService */
		 TRUE	/* Arc_EOL */
	}
};

static const Dcm_DsdType Dsd = {
    DsdServiceTable	/* DsdServiceTable */
};

AUTOSAR-Dcm Dsdのコンフィグレーションコード解説

太郎くん
太郎くん

まぁまぁな行数あるけど、なんとなくわかる!

フクさん
フクさん

それは良かった。

太郎くん
太郎くん

ただ、UnProtected_SecurityListとかALL_SessionListってこの中で定義されてないね?

フクさん
フクさん

対応するセキュリティレベルとセッションのリストなんだけど、
実体はDslじゃなくてDspにいるんだよねー。
なので、今回は参照のみで実体はここには出てこない。

太郎くん
太郎くん

そこの部分はDspの時に覚悟しておくか・・・。

フクさん
フクさん

そうだねー。
(まぁ次回がそのDspなんだけどね。)

まとめ

フクさん
フクさん

まとめだよ。

  • Dsdのコンフィグレーションコードを書いた。
  • 対応するセキュリティレベルとセッションの実態はDspにあり、Dsdからは参照するのみ。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました