Trước khi đi tìm hiểu về phương thức và cơ chế chuyền nhận thông tin hiển thị RDS, ta sẽ tìm hiểu chi tiết cấu trúc định dạng các bản tin RDS.
Đầu tiên là cấu trúc khung dữ liệu.
Thành phần lớn nhất gọi là một ‘Group‘. Kích thước của nó gồm 104 bit. Mỗi group chia ra thành 4 block với kích thước thành phần là 26 bit.
Định dạng bản tin gồm các trường cơ bản sau:
Hình 3.14 Định dạng bản tin [1]
Pi code: programme Identification code 16 bit
Group type code: 4 bit group type code cho mỗi group
Group 0A B: / Turning và switching AF, PS infomation
Hình 3.16 Cấu trúc trường PS [1] Group 1A/B: Progamme item number
Froup 2A/B: Radio text
TP: Traffic programme identificatin code 1 bit TPY: Programme type Code 5 bit
Checkword – Offset N: 10 bits
Các bản tin RDS được tách ra từ sóng FM giải mã và gửi lên tầng trên theo cơ chế handler data Call
Hình 3.18 Sơ đồ cơ chế truyền nhận bản tin RDS
Hình 3.19 Luồng gửi nhận bản tin RDS ở tầng kernel
Phươg thức handle_rt_event() được chạy trên một thread độc lập có nhiệm vụ cập nhật liên tục bản bản tin radio text. Dữ liệu rt nhận được sẽ được lưu vào trong bộ đệm raw_rds [ST_BUF_SIZE]. Dữ liệu rds thu được thông qua hàm RDSDataReceived() gửi lên tầng trên.
Hình 3.20 Luồng gửi nhận bản tin RDS tại tầng native Framework
Dữ liệu rds được gửi lên tầng application thông qua JNI.
Method CallbaclToJava () sẽ nhận dữ liệu đươc truyền hàm RDSReceive (). Tầng native app sẽ nhận được dữ liệu thông qua cơ chế Notify event.
Từ trên tầng Application sẽ ghi đè hàm onRDSReceive () để có thể thể nhận được bản tin RDS