Kiểm tra trong nhà

Một phần của tài liệu Nghiên cứu mã điều khiển lỗi trong mạng cảm biến không dây để nâng cao hiệu quả việc sử dụng năng lượng (Trang 82)

Khi thực hiện truyền dữ liệu ở 3 vị trí khác nhau trong nhà không sử dụng FEC thì tỷ lệ mất gói tin cũng khá lớn.[12]

Chương 4. ĐIỀU KHIỂN LỖI ỨNG DỤNG CHIPCON CC1010 4.1 Giới thiệu

Trong khi 1 mã sửa lỗi ECC có thể được chỉ định trong bất kỳ lớp nào trong network stack, thì thực tế ECC được sử dụng trong lớp MAC [4] như hình minh hoạ :

Hình 4.1 Interfacing ECC module with network stack

Bởi vì với vị trí này sẽ không làm thay đổi sự chuyển giao với lớp ứng dụng. Do đó, bất kỳ ứng dụng nào được viết mà không dùng ECC trong MAC cũng có thể thực hiện mà không cần điểu chỉnh mã nguồn.

Quá trình thực hiện mã sửa lỗi ECC tương tác với network stack qua giao diện RadioEncoding – Giao diện là 1 file được sử dụng ngôn ngữ TinyOS-nesC chỉ rõ toàn bộ các phương pháp và những bộ điều khiển sự việc cái mà 1 module sử dụng từ các module khác hay 1 module hiện hữu :

interface RadioEncoding {

command result_t encode_flush(); command result_t encode(char data);

command result_t decode(char data);

event result_t decodeDone(char data, char error); event result_t encodeDone(char data);

}

Mã hoá được thực hiện ở lớp MAC (ChannelMonC module) cho mỗi byte dữ liệu trong gói tin. Dữ liệu vào được thông qua như một thông số được lưu trữ trong cấu trúc dữ liệu của mô-đun ECC. Sau khi một số lượng đủ của các byte dữ liệu vào – input được nhận, các byte dữ liệu đầu vào được mã hoá bởi hàm

radio_encode_thread (mạch mã hoá radio) và từ mã được chuyển tới ChannelMonC qua hàm encodeDone.

Tương tự như trên, ChannelMonC đưa ra quá trình giải mã cho từng byte của các gói tin nhận được. Sau khi đủ số lượng các byte dữ liệu vào được nhận, các byte dữ liệu được nhận sẽ được giải mã nhờ hàm radio_decode_thread ( mạch giả mã radio ) và các byte dữ liệu gốc được gửi tới ChannelMonC qua DecodeDone.

Quá trình thực thi của radio_encode_thread radio_decode_thread phụ thuộc vào loại mã sửa lỗi. radio_encode_thread tính toán các bit chẵn lẻ nhờ vào việc so sánh từng bit trong các byte dữ liệu đầu vào. Quá trình này tương đương với

uG. Trong đó u là thông tin cần truyền và G là ma trận sinh. Trong quá trình

radio_decode_thread , syndrome – s được tính nhờ vào các bit dữ liệu nhận được. Việc này cũng tương đương với thực hiện vHT

, với v là dữ liệu nhận được và HT là ma trận chuyển vị của ma trận H. Nếu syndrome – s khác không (s # 0) có nghĩa là tồn tại lỗi và vị trí của các bit lỗi có thể được tìm thấy bằng việc so sánh syndrome – s với các vec-tơ cột trong ma trận H . Và quá trình tìm kiếm này có thể được thực hiện một cách nhanh chóng với việc sử dụng các biểu đồ tương ứng giữa các giá trị syndrome – s với các vị trí bit lỗi tương ứng.

Một phần của tài liệu Nghiên cứu mã điều khiển lỗi trong mạng cảm biến không dây để nâng cao hiệu quả việc sử dụng năng lượng (Trang 82)