CHƯƠNG 2 : BỘ THƯ VIỆN TMOTE SKY TRÊN HỆ ĐIỀU HÀNH CONTIKI
2.2 Bộ thư viện Tmote Sky trên Contiki
2.2.1 Thư viện LED
Khối led hiển thị trên nút mạng cảm biến không dây Tmote Sky bao gồm 3 led ( trừ led báo USB): RED,GREEN,BLUE. Các LED này được sử dụng để test hoạt động của node mạng ví dụ như chương trình nhấp nháy LED
Thư viện LED (khai báo các hàm LED sáng, LED tắt, nhấp nháy…) Contiki- 2.7/core/dev/led.h và khai triển các hàm, trong file:contiki-2.7/core/dev/led.c
2.2.1.1 File Contiki-2.7/core/dev/led.h
API của LED xác định một bộ các chức năng để truy cập các LEDs cho nền tảng Contiki với đèn LED. Trong file led.h có các hàm khởi tạo và cấu hình các led nhấp nháy, trong đó chứa các lệnh cấu hình các giá trị của các led xanh (lá cây), vàng, đỏ, và các led và giá trị của các led khi tất cả các led cùng sáng.
32
Hình 2.2 Cấu hình và định nghĩa các LED
Trong file này còn thực hiện việc trả về các trạng thái hiện tại của led. Truy xuất các hàm của led như: bật led (leds_on),tắt led (leds_off), lật trạng thái của leds (leds_toggle), và đảo trạng thái (leds_invert).
33
2.2.1.2 File Contiki-2.7/core/dev/led.c
Triển khai viết các chương trình điều khiển led theo các hàm đã có sẵn trong file
Contiki-2.7/core/dev/led.h như bật, tắt, nhấp nháy LED.
Đầu tiên chương trình sẽ khai báo các thư viện cần có để thực thi các chức năng bật, tắt, nhấp nháy LED. Bao gồm các thư viện dev/led.h, sys/clock.h, và sys/energest. thư viện
led.h nằm trong thư mục Contiki-2.7/core/dev/, thư viện sys/clock.h, và sys/energest nằm
trong thư mục Contiki-2.7/core/sys.
Khai báo biến tồn cục của chương trình, biến của chương trình được khai báo theo kiểu biến tĩnh (static) kiểu ký tự không dấu unsigned char bao gồm hai biến là leds và
invert. Chương trình chính hiển thị các LED theo biến của 2 chương trình bật và tắt các
LED
34
Khởi chạy trình điều khiển LED sử dụng câu lệnh leds_init(void) bao gồm các lệnh thực thi đối với LED và gán giá trị của 2 biến đã khai báo ở phần đầu chương trình.
Hình 2.5 Khối lệnh thực hiện khởi chạy trình điều khiển LED
Hàm nhấp nháy LED, biến inv được khai báo kiểu ký tự không dấu unsigned char ,
inv được gán bẳng phép đảo của (leds ^ invert), khởi chạy giá trị trả về đối số inv vừa
được gán, trễ xung đồng hồ 400s rồi khởi chạy lại
Hình 2.6 Chương trình nhấp nháy led
Hàm gọi các led đang bật được thực thi bằng câu lệnh unsigned char let_get(void) và trả về giá trị đã gọi ban đầu.
35
Chương trình bật led được gọi bằng hàm leds_on (unsigned char ledv), khai báo biến kiểu ký tự không dấu với tên biến là changed, biến này được gán với (~leds) & ledv,
leds sẽ được OR bit rồi gán bằng ledv, cuối cùng hiển thị giá trị của biến changed bằng
câu lệnh show_led(changed).
Hình 2.8 Chương trình bật led
Chương trình bật led được gọi bằng hàm leds_on (unsigned char ledv), khai báo biến kiểu ký tự không dấu với tên biến là changed, biến này được gán với leds & ledv, leds sẽ được AND bit rồi gán bằng đảo của led (~ledv), cuối cùng hiển thị giá trị của biến changed bằng câu lệnh show_led(changed).
Hình 2.9 Chương trình tắt led
Chương trình lật trạng thái các led được gọi đến bằng lệnh leds_toggle (unsigned
char ledv). Đảo ngược trạng thái hiện tại của đèn LED được đặt trong tham số ledv được
36
Hình 2.10 Chương trình led_toggle
Chương trình đảo ngược thanh ghi đảo ngược sử dụng tham số leds, gọi hàm
leds_invert. Biến invert được gán bằng phép XOR giữa invert và ledv. Hiển thị tham số
ledv bằng câu lệnh show_leds(ledv).
Hình 2.11 Chương trình led_invert