
	TOPPERS/A-CANIF 外部仕様書

本ドキュメントは，AUTOSAR仕様をベースとしたA-CANIFの外部仕様を説明する
ものである．

----------------------------------------------------------------------
TOPPERS/A-CANIF
    Automotive CANIF

Copyright (C) 2013-2016 by Center for Embedded Computing Systems
                           Graduate School of Information Science, Nagoya Univ., JAPAN
Copyright (C) 2014-2016 by AISIN COMCRUISE Co., Ltd., JAPAN
Copyright (C) 2015-2016 by eSOL Co.,Ltd., JAPAN
Copyright (C) 2013-2016 by FUJI SOFT INCORPORATED, JAPAN
Copyright (C) 2014-2016 by NEC Communication Systems, Ltd., JAPAN
Copyright (C) 2013-2016 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
Copyright (C) 2013-2014 by Renesas Electronics Corporation, JAPAN
Copyright (C) 2014-2016 by SCSK Corporation, JAPAN
Copyright (C) 2013-2016 by Sunny Giken Inc., JAPAN
Copyright (C) 2015-2016 by SUZUKI MOTOR CORPORATION
Copyright (C) 2013-2016 by TOSHIBA CORPORATION, JAPAN
Copyright (C) 2013-2016 by Witz Corporation

上記著作権者は，以下の (1)～(3)の条件を満たす場合に限り，本ドキュメ
ント（本ドキュメントを改変したものを含む．以下同じ）を使用・複製・改
変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
(1) 本ドキュメントを利用する場合には，上記の著作権表示，この利用条件
    および下記の無保証規定が，そのままの形でドキュメント中に含まれて
    いること．
(2) 本ドキュメントを改変する場合には，ドキュメントを改変した旨の記述
    を，改変後のドキュメント中に含めること．ただし，改変後のドキュメ
    ントが，TOPPERSプロジェクト指定の開発成果物である場合には，この限
    りではない．
(3) 本ドキュメントの利用により直接的または間接的に生じるいかなる損害
    からも，上記著作権者およびTOPPERSプロジェクトを免責すること．また，
    本ドキュメントのユーザまたはエンドユーザからのいかなる理由に基づ
    く請求からも，上記著作権者およびTOPPERSプロジェクトを免責すること．

本ドキュメントは，AUTOSAR（AUTomotive Open System ARchitecture）仕様
に基づいている．上記の許諾は，AUTOSARの知的財産権を許諾するものではな
い．AUTOSARは，AUTOSAR仕様に基づいたソフトウェアを商用目的で利用する
者に対して，AUTOSARパートナーになることを求めている．

本ドキュメントは，無保証で提供されているものである．上記著作権者およ
びTOPPERSプロジェクトは，本ドキュメントに関して，特定の使用目的に対す
る適合性も含めて，いかなる保証も行わない．また，本ドキュメントの利用
により直接的または間接的に生じたいかなる損害に関しても，その責任を負
わない．

$Id: canif_spec.txt 2995 2016-03-02 02:05:09Z fsi-kaitori $
----------------------------------------------------------------------

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(1) 概要
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

A-CANIFは，AUTOSARの以下の仕様に準拠して開発する．
Specification of CAN Interface V5.0.0 R4.0 Rev 3

しかし，要求仕様が膨大であるので，対応する要求仕様を限定して開発を行う．
本ドキュメントでは，AUTOSAR仕様の中で，A-CANIFがサポートする仕様，サポ
ートしない仕様，曖昧な仕様の解釈を説明する．また，システムサービスとパ
ラメータコンテナに関する詳細な仕様は，canif_system_service.txt，および
canif_container.txtに，それぞれ規定する．

これらのドキュメントで言及のない要求仕様に関しては，上記仕様に準拠して
開発されているものとする．

★★★ 発行済み仕様番号 ★★★
NCANIF017
CANIFa001

★★★ 空き仕様番号 ★★★
NCANIF007
NCANIF008

―――――――――――――――――――――――――――――――――――
(1.1) 略語一覧
―――――――――――――――――――――――――――――――――――
CCMSM : CAN interface Controller Mode State Machine 
HOH   : Hardware Object Handle
HTH   : Hardware Receive Handle
HRH   : Hardware Transmit Handle
DLC   : Data Length Code
PDU   : Protocol Data Unit
IPDU  : Interaction layer Protocol Data Unit
LPDU  : Data Link Layer Protocol Data Unit

[*] ：ボディ系サブセット対象

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(2) サポートする機能
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
―――――――――――――――――――――――――――――――――――
(2.1) 機能
―――――――――――――――――――――――――――――――――――
＜機能一覧＞
■初期化 [*]
■送信
  ・送信要求 [*]
  ・送信コンファメーション [*]
  ・送信キャンセル [*]
■受信
  ・受信インディケーション [*]
  ・受信LPDUデータ読込み [*]
  ・受信DLCチェック [*]
■通知状態取得
  ・送信コンファメーション状態取得 [*]
  ・送信通知状態読込み [*]
  ・受信通知状態読込み [*]
■コントローラモード制御
  ・コントローラモード設定 [*]
  ・コントローラモード取得 [*]
  ・コントローラモード通知 [*]
  ・コントローラバスOFF [*]
■PDUモード制御
  ・PDUモード設定 [*]
  ・PDUモード取得 [*]
■CANドライバ制御
  ・CANドライバ起動検出 [*]
■ボーレート制御
  ・ボーレート確認 [*]
  ・ボーレート変更 [*]
■妥当性確認 [*]
■メッセージボックス種別
  ・FullCAN [*]
  ・ハードウェアオブジェクトハンドル [*]
■バージョン情報取得 [*]
■DETエラー通知 [*]

―――――――――――――――――――――――――――――――――――
(2.2) パラメータコンテナ
―――――――――――――――――――――――――――――――――――
■CanIfCtrlDrvCfg
  ・CanIfCtrlDrvTxCancellation
  ・CanIfCtrlDrvInitHohConfigRef [*]
  ・CanIfCtrlDrvNameRef [*]
  ▼CanIfCtrlCfg
    ・CanIfCtrlId [*]
    ・CanIfCtrlWakeupSupport [*]
    ・CanIfCtrlCanCtrlRef [*]
■CanIfDispatchCfg
  ・CanIfDispatchUserCtrlBusOffName [*]
  ・CanIfDispatchUserCtrlBusOffUL [*]
  ・CanIfDispatchUserCtrlModeIndicationName [*]
  ・CanIfDispatchUserCtrlModeIndicationUL [*]
  ・CanIfDispatchUserValidateWakeupEventName [*]
  ・CanIfDispatchUserValidateWakeupEventUL [*]
■CanIfInitCfg
  ・CanIfInitCfgSet
  ▼CanIfInitHohCfg
    ・CanIfInitRefCfgSet
    ▼CanIfHrhCfg
      ・CanIfHrhSoftwareFilter
      ・CanIfHrhCanCtrlIdRef [*]
      ・CanIfHrhIdSymRef [*]
      ▼CanIfHrhRangeCfg
        ・CanIfHrhRangeRxPduRangeCanIdType
    ▼CanIfHthCfg
      ・CanIfHthCanCtrlIdRef [*]
      ・CanIfHthIdSymRef [*]
  ▼CanIfTxPduCfg
    ・CanIfTxPduCanId [*]
    ・CanIfTxPduCanIdType [*]
    ・CanIfTxPduDlc [*]
    ・CanIfTxPduId [*]
    ・CanIfTxPduReadNotifyStatus [*]
    ・CanIfTxPduType [*]
    ・CanIfTxPduUserTxConfirmationName [*]
    ・CanIfTxPduUserTxConfirmationUL [*]
    ・CanIfTxPduBufferRef [*]
    ・CanIfTxPduRef [*]
  ▼CanIfRxPduCfg
    ・CanIfRxPduCanId [*]
    ・CanIfRxPduCanIdType [*]
    ・CanIfRxPduDlc [*]
    ・CanIfRxPduId [*]
    ・CanIfRxPduReadData [*]
    ・CanIfRxPduReadNotifyStatus [*]
    ・CanIfRxPduUserRxIndicationName [*]
    ・CanIfRxPduUserRxIndicationUL [*]
    ・CanIfRxPduHrhIdRef [*]
    ・CanIfRxPduRef [*]
  ▼CanIfBufferCfg
    ・CanIfBufferSize [*]
    ・CanIfBufferHthRef [*]
■CanIfPrivateCfg
  ・CanIfPrivateDlcCheck
  ・CanIfSupportTTCAN
■CanIfPublicCfg
  ・CanIfPublicCancelTransmitSupport [*]
  ・CanIfPublicCddHeaderFile [*]
  ・CanIfPublicChangeBaudrateSupport [*]
  ・CanIfPublicDevErrorDetect [*]
  ・CanIfPublicHandleTypeEnum [*]
  ・CanIfPublicMultipleDrvSupport
  ・CanIfPublicNumberOfCanHwUnits [*]
  ・CanIfPublicPnSupport
  ・CanIfPublicReadRxPduDataApi [*]
  ・CanIfPublicReadRxPduNotifyStatusApi [*]
  ・CanIfPublicReadTxPduNotifyStatusApi [*]
  ・CanIfPublicSetDynamicTxIdApi
  ・CanIfPublicTxBuffering
  ・CanIfPublicTxConfirmPollingSupport [*]
  ・CanIfPublicVersionInfoApi
  ・CanIfPublicWakeupCheckValidSupport [*]

―――――――――――――――――――――――――――――――――――
(2.3) システムサービス
―――――――――――――――――――――――――――――――――――
・CanIf_Init [*]
・CanIf_SetControllerMode [*]
・CanIf_GetControllerMode [*]
・CanIf_Transmit [*]
・CanIf_CancelTransmit [*]
・CanIf_ReadRxPduData [*]
・CanIf_ReadTxNotifStatus [*]
・CanIf_ReadRxNotifStatus [*]
・CanIf_SetPduMode [*]
・CanIf_GetPduMode [*]
・CanIf_GetVersionInfo
・CanIf_CheckWakeup [*]
・CanIf_CheckValidation [*]
・CanIf_GetTxConfirmationState [*]
・CanIf_CheckBaudrate [*]
・CanIf_ChangeBaudrate [*]
・CanIf_TxConfirmation [*]
・CanIf_RxIndication [*]
・CanIf_ControllerBusOff [*]
・CanIf_ControllerModeIndication [*]

―――――――――――――――――――――――――――――――――――
(2.4) コールバック
―――――――――――――――――――――――――――――――――――
・<User_TxConfirmation>(PduIdType TxPduId) [*]
・<User_RxIndication>(PduIdType RxPduId, PduInfoType* PduInfoPtr) [*]
・<User_ValidateWakeupEvent>(EcuM_WakeupSourceType sources) [*]
・<User_ControllerBusOff>(uint8 ControllerId) [*]
・<User_ControllerModeIndication>(uint8 ControllerId, CanIf_ControllerModeType ControllerMode) [*]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(3) サポートしない機能
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
＜機能一覧＞
■送信
  ・送信キャンセルコンファメーション
  ・送信バッファリング
  ・動的送信ID設定
■受信
  ・受信フィルタリング
■マルチCANドライバサポート
■CANトランシーバ制御
  ・トランシーバモード設定
  ・トランシーバモード取得
  ・トランシーバモード通知
  ・トランシーバ起動理由取得
  ・トランシーバ起動モード設定
  ・トランシーバ起動確認
  ・トランシーバWUFフラグクリア
  ・トランシーバWUFフラグクリア通知
  ・トランシーバWAKEフラグ確認
  ・トランシーバWAKEフラグ通知
■パーシャルネットワーキング
■メッセージボックス種別
  ・BasicCAN

―――――――――――――――――――――――――――――――――――
(3.1) パラメータコンテナ
―――――――――――――――――――――――――――――――――――
■CanIfDispatchCfg
    ・CanIfDispatchUserCheckTrcvWakeFlagIndicationName [*]
    ・CanIfDispatchUserCheckTrcvWakeFlagIndicationUL [*]
    ・CanIfDispatchUserClearTrcvWufFlagIndicationName [*]
    ・CanIfDispatchUserClearTrcvWufFlagIndicationUL [*]
    ・CanIfDispatchUserConfirmPnAvailabilityName
    ・CanIfDispatchUserConfirmPnAvailabilityUL
    ・CanIfDispatchUserTrcvModeIndicationName [*]
    ・CanIfDispatchUserTrcvModeIndicationUL [*]
■CanIfInitCfg
  ▼CanIfInitHohCfg
    ▼CanIfHrhCfg
      ・CanIfHrhCanHandleTypeRef
      ▼CanIfHrhRangeCfg
        ・CanIfHrhRangeRxPduLowerCanId
        ・CanIfHrhRangeRxPduUpperCanId
    ▼CanIfHthCfg
      ・CanIfHthCanHandleTypeRef
  ▼CanIfTxPduCfg
    ・CanIfTxPduPnFilterPdu
    ・CanIfTxPduBswSchExclAreaIdRef
    ▼CanIfTTTxFrameTriggering
  ▼CanIfRxPduCfg
    ・CanIfRxPduBswSchExclAreaIdRef
    ▼CanIfRxPduCanIdRange
      ・CanIfRxPduCanIdRangeLowerCanId
      ・CanIfRxPduCanIdRangeUpperCanId
    ▼CanIfTTRxFrameTriggering
■CanIfPrivateCfg
    ・CanIfPrivateSoftwareFilterType
  ▼CanIfTTGeneral
■CanIfPublicCfg
    ・CanIfPublicWakeupCheckValidByNM
■CanIfTrcvDrvCfg
  ▼CanIfTrcvCfg
    ・CanIfTrcvId [*]
    ・CanIfTrcvWakeupSupport [*]
    ・CanIfTrcvCanTrcvRef [*]

―――――――――――――――――――――――――――――――――――
(3.2) システムサービス
―――――――――――――――――――――――――――――――――――
・CanIf_SetDynamicTxId
・CanIf_SetTrcvMode [*]
・CanIf_GetTrcvMode [*]
・CanIf_GetTrcvWakeupReason [*]
・CanIf_SetTrcvWakeupMode [*]
・CanIf_ClearTrcvWufFlag [*]
・CanIf_CheckTrcvWakeFlag [*]
・CanIf_CancelTxConfirmation
・CanIf_ConfirmPnAvailability
・CanIf_ClearTrcvWufFlagIndication [*]
・CanIf_CheckTrcvWakeFlagIndication [*]
・CanIf_TrcvModeIndication [*]

―――――――――――――――――――――――――――――――――――
(3.3) コールバック
―――――――――――――――――――――――――――――――――――
・<User_ConfirmPnAvailability>(uint8 TransceiverId)
・<User_ClearTrcvWufFlagIndication>(uint8 TransceiverId) [*]
・<User_CheckTrcvWakeFlagIndication>(uint8 TransceiverId) [*]
・<User_TrcvModeIndication>(uint8 TransceiverId, CanTrcv_TrcvModeType TransceiverMode) [*]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(4) 追加，改変仕様
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(5) AUTOSAR仕様の補足説明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

―――――――――――――――――――――――――――――――――――
(5.1) CanIf_ReadRxPduDataの実施条件
―――――――――――――――――――――――――――――――――――
CanIf_ReadRxPduDataは引数で指定されたCanRxPduIdの受信データを呼び出し元
上位レイヤに提供するものであるが，対象のCanRxPduIdの受信データを一度も
受信してない場合(CanIf_RxIndicationによって対象のCanRxPduIdの受信データ
を一度も受信してない)は，不定値を上位レイヤに提供してしまう．これを避け
るため，対象のCanRxPduIdの受信データを一度も受信してない場合は，処理を
実施せずに，E_NOT_OKを返す[CANIFa001]


以上
