I. Giao Thức Mac
3. Các giao thức MAC trong mạng cảm nhận không dây
3.4.3. Khai báo các module đơn giản
Các module đơn giản là các khối chƣơng trình đƣợc xây dựng sẵn cho các module khác (có thể là các module kết hợp). Các module đƣợc khai báo bằng tên và theo quy ƣớc tên của các module này đƣợc đặt tên bắt đầu bằng chữ cái in hoa.
Các module đơn giản đƣợc khai báo thông qua các cổng và các tham số. Cú pháp: simple SimpleModuleName parameters: //... gates: //... endsimple
3.4.3.1. Các tham số của module đơn giản
Các tham số là các biến phụ thuộc vào từng mô hình. Tham số của các module đơn giản đƣợc sử dụng bởi các hàm (hay còn đƣợc gọi là các thuật toán của module) khai báo trong chính module. Theo quy ƣớc các tham số sẽ đƣợc đặt tên bắt đầu bằng chữ cái thƣờng.
Các tham số đƣợc khai báo bằng cách liệt kê tên sau từ khoá parameters. Kiểu của các tham số có thể là kiểu số (numeric), hằng số (numeric const hay viết gọn là const), giá trị logic (bool), kiểu chuỗi (string) hoặc xml. Khi tham số không khai báo rõ kiểu thì mặc định kiểu của tham số đó là numeric.
Ví dụ: simple TrafficGen parameters: interarrivalTime, numOfMessages : const, address : string; gates: //... endsimple
Các tham số có thể đƣợc gán giá trị từ NED (khi các module đƣợc sử dụng nhƣ các khối dựng sẵn của một khối kết hợp lớn hơn) hoặc từ file cấu hình omnetpp.ini.
3.4.3.2. Các cổng của module đơn giản
Cổng là các điểm kết nối của module. Điểm bắt đầu và kết thúc một kết nối giữa hai module chính là các cổng. OMNeT++ hỗ trợ kiểu kết nối một chiều (đơn công) do đó có hai loại cổng là cổng vào và cổng ra. Các message đƣợc gửi đi từ cổng ra và đƣợc nhận vào từ cổng vào. Theo quy ƣớc, các cổng đƣợc đặt tên bắt đầu bằng chữ cái thƣờng.
Cổng đƣợc khai báo bằng cách khai báo tên sau từ khoá gates. Cặp dấu [] thể hiện một vector cổng. Các thành phần của một vector cổng đƣợc đánh số bắt đầu từ 0.
Ví dụ:
simple NetworkInterface parameters: //...
gates:
in: fromPort, fromHigherLayer; out: toPort, toHigherLayer; endsimple simple RoutingUnit parameters: //... gates: in: output[]; out: input[]; endsimple
Kích thƣớc của một vector cổng có thể đƣợc xác định sau do đó mỗi đối tƣợng cụ thể của một mô hình có thể có các vector cổng có kích thƣớc khác nhau.