Như đã được biết các SWC sẽ giao tiếp, thực hiện chức năng cần kết hợp việc sử dụng tập hợp các API được cung cấp bởi RTE layer. Trong bài viết này sẽ đề cập hai api mang chức năng truyền thông tin là RTE_Write và RTE_Send.
1. RTE_Write
- Mục đích: Hàm Rte_Write được sử dụng để khởi tạo việc truyền dữ liệu kiểu "sender-receiver" một cách tường minh, tức là quá trình truyền sẽ diễn ra ngay tại thời điểm gọi API. Hàm này được áp dụng cho các phần tử dữ liệu có chính sách swImplPolicy khác với "queued" (tức không sử dụng hàng đợi).
- Có 2 dạng cho Rte_Write: (Phụ thuộc vào returnValueProvision được set hay không)
Std_ReturnType Rte_Write_<port>_<dataPrototype>(IN <data>, [các tham số khác])
void Rte_Write_<port>_<dataPrototype>(IN <data>, [các tham số khác])
- <port>: Tên cổng cung cấp dữ liệu.
- <dataPrototype>: Kiểu dữ liệu cụ thể được truyền qua cổng này.
- IN <data>: Dữ liệu cần truyền, có thể truyền theo giá trị hoặc tham chiếu (pointer).
- IN uint8* metaDataPtr: Con trỏ đến mảng chứa dữ liệu meta (không bắt buộc), được gửi đến COM hoặc LdCom.
- IN Std_TransformerForward forwardedStatus: Trạng thái của transformer được truyền qua chuỗi transformer (không bắt buộc).
- OUT Std_TransformerError transformerError: Lỗi xảy ra trong quá trình thực hiện chuỗi transformer (không bắt buộc).
- RTE_E_OK: Dữ liệu đã được truyền thành công đến dịch vụ giao tiếp.
- RTE_E_COM_STOPPED: Giao tiếp bị dừng, không thể thực hiện truyền.
- RTE_E_SEG_FAULT: Lỗi phân đoạn trong các tham số truyền vào.
- RTE_E_COM_BUSY: Giao tiếp đang bận, yêu cầu không được thực hiện.
- RTE_E_HARD_TRANSFORMER_ERROR: Lỗi nghiêm trọng trong chuỗi transformer.
- RTE_E_SOFT_TRANSFORMER_ERROR: Lỗi nhẹ trong chuỗi transformer.
- Trong truyền dữ liệu giữa các ECU (inter-ECU), việc gọi Rte_Write sẽ khởi tạo ngay yêu cầu truyền, nhưng có thể không dẫn đến truyền thực tế ngay do các yếu tố khác như giới hạn tốc độ.
- Trong truyền dữ liệu nội bộ ECU (intra-ECU), hàm sẽ trả về sau khi sao chép dữ liệu vào bộ nhớ nội bộ RTE hoặc sử dụng IOC buffer. Khi một cổng gửi (provide port) được kết nối với nhiều cổng nhận (require port), việc gửi đến từng cổng nhận là độc lập, và lỗi xảy ra ở một cổng nhận sẽ không ảnh hưởng đến việc truyền đến các cổng nhận khác.
2. RTE_Send
1 Comments
anh Thản viết hay thế :v
ReplyDelete