III.Cấu trúc Bluetooth API

Mục đích của bản đặc tả đã được xác đinh là một chuẩn API có tính mở, không độc quyền và có thể được sử dụng bởi tất cả các thiết bị hỗ trợ JavaME. Vì vậy, nó sử dụng chuẩn API và Java ME CLDC / MIDP ‘s Generic Connection Framework(GCF). Các đặc điểm quan trọng:

  • Đặc tả này cung cấp hỗ trợ cơ bản cho các giao thức và profile Bluetooth. Nó không bao gồm các API cụ thể cho tất cả các cấu hình Bluetooth đơn giản chỉ vì số lượng profile là ngày càng tăng.
  • Đặc tả này kết hợp các các giao thức truyền thông(communication)OBEX, L2CAP, và RFCOMM trong JSR 82 API, chủ yếu bởi vì tất cả các profile Bluetooth hiện tại được thiết kế để sử dụng các giao thức truyền thông.
  • Đặc tả JSR 82 địa chỉ hóa  Generic Access Profile, Service Discovery Application Profile, Serial Port Profile, và Generic Object Exchange Profile.
  • Giao thức Service Discovery cũng được hỗ trợ. JSR 82 định nghĩa đăng ký dịch vụ một cách chi tiết để chuẩn hóa quy trình đăng ký cho các lập trình ứng dụng.

JSR 82 đòi hỏi stack Bluetooth nằm bên dưới thực thi JSR 82 đủ tiêu chuẩn cho Generic Access Profile, Service Discovery Application Profile, và Serial Port Profile. Stack phải cũng cung cấp quyền truy cập vào Service Discovery Protocol; các tầng(layer) RFCOMM và L2CAP.

Các API được thiết kế theo cách sao cho các nhà phát triển có thể sử dụng ngôn ngữ lập trình Java để xây dựng profile Bluetooth mới trên đỉnh của API này miễn là các đặc tả lớp lõi(core layer) không thay đổi. Để thúc đẩy sự linh hoạt và mở rộng này, bản đặc tả không bị giới hạn bởi các API cài đặt các profile Bluetooth. JSR 82 bao gồm các API cho OBEX và L2CAP để trong tương lai các profile Bluetooth có thể được cài đặt trong Java. Hình 1 cho thấy các API được định nghĩa trong đặc tả phù hợp với kiến trúc của CLDC/MIDP.

IV.API Description

Các API Java cho Bluetooth định nghĩa 2 package và nó phụ thuộc vào package javax.microedition.io.*, đó 2 là package:

  • javax.bluetooth: core Bluetooth API
  • javax.obex: APIs cho giao thức Object Exchange (OBEX).

OBEX API được định nghĩa một cách độc lập của tầng(layer) transport Bluetooth và được đóng gói riêng. Mỗi gói ở trên đại diện cho một gói tùy chọn riêng biệt, có nghĩa là một implement CLDC có thể bao gồm 1 gói hoặc cả hai. Các thiết bị enable MIDP dự kiến sẽ là các loại thiết bị để kết hợp các đặc tả này. Bài viết này tập trung vào core Bluetooth API (javax.bluetooth).

Các API của package javax.bluetooth gồm có các đặc điểm sau:

  • Đăng ký dịch vụ
  • Khám phá các thiết bị và dịch vụ
  • Thiết lập kết nối RFCOMM, L2CAP giữa các thiết bị
  • Sử dụng những kết nối, gửi và nhận dữ liệu
  • Quản lý và điều khiển các kết nối truyền thông
  • Cung cấp bảo mật cho các hoạt động này

V.Bluetooth Protocol

Gói javax.bluetooth định nghĩa các giao thức sau cho giao tiếp:

  • L2CAP
  • RFCOMM

1.Logical Link Control and Adaptation Protocol (L2CAP)

JSR 82 định nghĩa các giao diện L2CAPConnectionNotifier và L2CAPConnection cho việc gửi và nhận các packet thông qua kênh L2CAP. Chúng được dẫn xuất từ giao diện Connection của CLDC Generic Connection FrameWork.

Một server L2CAP được tạo bằng cách gọi phương thức Connector.open() với một chuỗi String kết hợp. Định dạng của chuỗi này được định nghĩa bởi JSR-82. Chuỗi này bắt đầu với tiền tố “btl2cap://” và sau dấu “//” có thể là các tham số liên quan đến master/slave, hay tham số bảo mật(xác thực, mã hóa, ủy quyền). Nó cũng có thể chứa các thông số liên quan đến tham chiếu của ứng dụng cho một kích thước Maximum Transmit Unit(MTU) trong các chỉ thị gửi/nhận.

Một đối tượng L2CAPConnectionNotifier được trả về khi mở một kết nối server. Phương thức acceptAndOpen() có thể được sử dụng để chấp nhận các kết nối các client từ xa(remote). Các gói L2CAP được gửi hoặc nhận được bằng cách sử dụng phương thức gửi và nhận của lớp L2CAPConnection. Một ứng dụng sử dụng các kết nối L2CAP phải cung cấp điều khiển flow riêng mình nếu cần thiết. Các client L2CAP được tạo ra cũng sử dụng phương thức Connector.open() với một tham số kết nối kiểu string.

2.Radio Frequency Communication (RFCOMM)

Các kết nối RFCOMM cung cấp các giao tiếp đáng tin cậy, hai chiều, hướng stream(stream-oriented). Trong JSR-82, API dựa trên các giao diện StreamConnectionNotifier và StreamConnection của GCF của CLDC.

Một server RFCOMM được tạo ra bằng cách gọi phương thức Connector.open() với tham số là một chuỗi string kết nối máy chủ. Định dạng của chuỗi được xác định bởi JSR-82. Chuỗi kết nối bắt đầu với tiền tố “btspp://” và có thể chứa các thông số liên quan đến master/slave, hoặc các thông số bảo mật (xác thực, mã hóa, và ủy quyền).

Một đối tượng StreamConnectionNotifier được trả về khi mở một kết nối máy chủ và có thể sử dụng phương thức acceptAndOpen() để chấp nhận các kết nối với client ở xa(remote). Các stream input/output được sử dụng để đọc hay ghi dữ liệu trên một kết nối. Các client RFCOMM được tạo ra bằng cách gọi phương thức Connector.open() kết hợp với một tham số kết nối kiểu string.

Bạn thấy bài viết này thế nào?

Các bài liên quan
Bluetooth API – JSR 82 – Phần 1
Bluetooth API – JSR 82 – Phần 3