SNIP_CLASSIC_STD_SECTION_9_6_Trigger_Transmit_Request
Wortlaut
9.6 Trigger Transmit Request
«peripheral» CanController
«module» CanIf
«module» Can alt Controller HW Status [Controller HW object free] [Controller HW object busy]
«module» LSduR
Copy L-Pdu into CAN hardware CanIf_Transmit(Std_ReturnType, PduIdType, const PduInfoType*) Can_Write(Std_ReturnType, Can_HwHandleType, const Can_PduType*) CanIf_TriggerTransmit()
CanIf_Transmit() CanIf_TriggerTransmit(Std_ReturnType, PduIdType, PduInfoType*) LSduR_CanIfTriggerTransmit (Std_ReturnType, PduIdType, PduInfoType*) Can_Write()
Can_Write() Copy L-PDU into CAN hardware Figure 9.6: Trigger Transmit Request Activity Description Transmission request The upper layer initiates a transmit request via the service CanIf_Transmit(). The parameter CanTxPduId identifies the requested L-SDU. The service performs following steps:
• validation of the input parameter
• definition of the CAN Controller to be used The second parameter *PduInfoPtr is a pointer to the structure with the size (SduLength) of the L-SDU to be transmitted. The actual SDU data has not been passed by the upper layer. Hence, the pointer *SduDataPtr points to NULL. Start transmission CanIf_Transmit() requests a transmission and calls the CanDrv service Can_Write() with corresponding processing of the HTH. Trigger transmission If the CAN hardware is free Can_Write() requests the SDU data from CanIf by its service CanIf_TriggerTransmit() passing the L-SDUs corresponding ID and a pointer to the CAN hardware’s buffer. CanIf forwards the trigger transmit request to the corresponding upper layer (CanIfUser). CanIf passes the buffer pointer received by CanDrv. The CanIfUser finally copies the SDU data to the buffer provided by CanIf (the CAN hardware buffer) and returns status and number of bytes effectively written. E_OK from Can_Write() service Can_Write() returns E_OK to CanIf_Transmit(). CAN_BUSY from Can_Write() service If CanDrv detects, there are no free hardware objects available, it returns CAN_BUSY to CanIf. Queuing of transmission request The Transmit Request for the L-PDU, which has been rejected by CanDrv, is queued by CanIf until the next transmit confirmation. E_OK from CanIf CanIf_Transmit() returns E_OK to the upper layer.
Versionen & Provenienz · Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.
Begründung & Zuweisungs-Evidenz
Cited verbatim in the snippet (deterministic citation).
Dokumenten-Herkunft & Rückverfolgbarkeit
| Spezifikations-Dokument | SWS_CANInterface.pdf |
|---|---|
| Dokumentseite | Seite 158 |
| Ziel-Modul | std (classic) |
| Ziel-Anforderung | SWS_Std_00005 |
| Semantische Rolle | constitutive |
| Automatisierungs-Konfidenz | 0.95 |