VxWorks下的異步通用定時器設計
3.2 接口設計
提供類似于Windows的接口函數(shù),定時器的唯一索引是id號,操作定時器均通過id完成。分為2種類型定時器:周期性定時器和一次性定時器。周期性定時器可以周期性地觸發(fā)。一次性定時器則只觸發(fā)一次,類似于倒計時定時器,觸發(fā)后看門狗自動刪除,相應的任務自動退出。在用戶對定時器模塊進行初始化后,用戶可以在程序的任何地方調(diào)用定時器提供的接口。本文引用地址:http://m.butianyuan.cn/article/163412.htm
3.3 具體實現(xiàn)
3.3.1 對看門狗的封裝
基于程序設計上的考慮,將定時器的管理控制和看門狗的具體操作分開,對看門狗進行封裝,CClkGenerator類封裝了看門狗的所有操作,包括看門狗的創(chuàng)建、刪除、取消和啟動,保存定時器id、類型、定時周期等。值得注意的是:看門狗的回調(diào)函數(shù)并不是用戶的回調(diào)函數(shù),而是看門狗管理控制中提供的統(tǒng)一回調(diào)函數(shù),回調(diào)函數(shù)中的參數(shù)為定時器的索引號。封裝代碼如下:
從類定義可以看出,用戶并不能直接使用CClkGen-erator。也就是說,該類對用戶而言是不可見的,屏蔽了對看門狗的直接操作,只有定時器管理控制模塊才可以對其進行操作。
3.3.2 定時器管理與控制
定時器管理與控制模塊負責模塊初始化、多個定時器相關參數(shù)的存儲管理、定時器任務的安全退出,以及用戶接口的實現(xiàn)。
定時器的主要數(shù)據(jù)結構:定時器控制結構和存儲結構。
評論