RTE API – RTE_Write/RTE_Read
Chúng ta sẽ tìm hiểu về các RTE API được tự động tạo, cụ thể là “RTE_Write” và “RTE_Read”.
Để “RTE_Write” và “RTE_Read” API được tự động tạo, cần phải đáp ứng cả 3 điều kiện thiết kế được tóm tắt như sau :
+ Trước hết, giao diện phải được thiết kế với loại SenderReceiver Interface
+ Thứ hai, cần thiết kế PPortPrototype và RPortPrototype trong các SW Component khác nhau. Mỗi PortPrototype này phải được thiết kế với ComSpec cùng loại (Non-Queued hoặc Default).
ComSpec (Communication Specification) là thông số chỉ định cách một port giao tiếp với các cổng khác, bao gồm loại giao tiếp, kích thước hàng đợi, và cách xử lý dữ liệu.
Comspec (Non-Queued & Queued). Provider Port và Requester Port phải sử dụng cùng Comspec, đông bộ với nhau. Việc kiểm tra tương thích dùng Tool để kiểm tra. Đồng thời, cần thiết kế liên kết (Link) để đảm bảo cả PPortPrototype và RPortPrototype sử dụng cùng một giao diện
+ Thứ ba, trong RunnableEntity của SW Component sở hữu PPortPrototype, cần thiết kế “DataSendPoint” VariableAccess. Tương tự, trong RunnableEntity của SW Component sở hữu RPortPrototype, cần thiết kế “DataReceivePointByArgument” VariableAccess.
Vai trò của “Rte_Write” và “Rte_Read” API
“Rte_Write” và “Rte_Read” là các API được sử dụng để trao đổi dữ liệu (biến) giữa hai hoặc nhiều SW Component khác nhau.
Trong AUTOSAR, việc trao đổi dữ liệu giữa các SW Component ASW bắt buộc phải được thực hiện thông qua RTE API (hàm do RTE cung cấp). Điều này đảm bảo rằng các SW Component chỉ thực hiện giao tiếp gián tiếp thông qua RTE.
(Lưu ý): Điều này có nghĩa là không thể tham chiếu trực tiếp dữ liệu giữa các SW Component.
Tìm hiểu về chữ ký (Signature) của API “Rte_Write”
Hãy bắt đầu với chữ ký của API “Rte_Write”.

Lần này, chúng ta hãy xem Chữ ký API ” RTE_Read “.

Để hỗ trợ bạn hiểu rõ hơn, chúng ta sẽ sử dụng công cụ “R.Auto”, một công cụ tạo nội dung AUTOSAR (Authoring Tool) giúp trực quan hóa mô hình meta của AUTOSAR thông qua việc mô hình hóa trực quan

Khi sử dụng VariableAccess cần lưu ý :
Consistency Check (kiểm tra tính đồng nhất giữa VariableAccess và các Ports liên quan)
Mapping Variable: Đảm bảo rằng các biến được ánh xạ chính xác trong cấu hình AUTOSAR.
Nếu thiết kế được thực hiện như trên, mã được tạo ra sẽ có dạng như sau:
(Lưu ý): Dựa theo các khái niệm của AUTOSAR như tránh xung đột tên API và API Mapping, mã được tạo trong các tệp header của mỗi SW Component sẽ có dạng macro định nghĩa (define macro function).

Một điểm quan trọng trong phần thân (Body) của API “Rte_Write”/”Rte_Read”
Trong AUTOSAR, đối với mỗi dataReceiverPort thuộc về một SW Component, “Rte” sẽ tự động tạo và quản lý một “Receive Buffer” riêng biệt dưới dạng biến toàn cục. Các SW Component sở hữu dataSenderPort sẽ sử dụng API “Rte_Write” để ghi giá trị vào từng Receive Buffer này.
Đồng thời, các SW Component sở hữu dataReceiverPort sẽ sử dụng API “Rte_Read” để chỉ đọc giá trị từ Receive Buffer thuộc về chính SW Component đó.
Ví dụ 1:2 – Một Sender SW Component và hai Receiver SW Component
Để giúp bạn hiểu rõ hơn, chúng ta sẽ xem xét trường hợp có:
1 SW Component đóng vai trò Sender (gửi dữ liệu).
2 SW Component đóng vai trò Receiver (nhận dữ liệu).
Hãy cùng xem sự thay đổi trong mã được tự động tạo từ thiết kế của mối quan hệ Sender
= 1:2. Mã được tạo sẽ thể hiện cách mỗi Receive Buffer riêng biệt được quản lý và sử dụng.


Khi xem xét phần thân (Body) của API “Rte_Write” được tạo ra:
SW Component đóng vai trò Sender có thể, thông qua một lần gọi API “Rte_Write”, ghi cùng một giá trị vào cả Receiver Buffer của SW Component “ReceiverApp” và Receiver Buffer của SW Component “RedundancyReceiverApp”.
Đồng thời, khi xem xét phần thân (Body) của API “Rte_Read” được tạo ra cho từng SW Component đóng vai trò Receiver:
SW Component “ReceiverApp” và “RedundancyReceiverApp” sẽ sử dụng các API “Rte_Read” riêng của mình để chỉ truy cập vào Receiver Buffer thuộc về chính SW Component đó và đọc giá trị từ Buffer của mình.
Qua bài viết này, hy vọng bạn đã hiểu được khái niệm “Receiver Buffer”, Signature của API “Rte_Write” và “Rte_Read”, và cách phần thân của các API này có thể thay đổi tùy thuộc vào thiết kế.
Xem Thêm chuyên mục :





