IC卡設(shè)備驅(qū)動模塊的代碼
面以我們采用的公用電話機通用的IC卡為例,通過已實現(xiàn)代碼來說明整個IC卡設(shè)備驅(qū)動模塊。
(1)數(shù)據(jù)結(jié)構(gòu)的確定
編輯頭文件ICDATA.H,確定在驅(qū)動模塊程序中應(yīng)用的公用數(shù)據(jù)結(jié)構(gòu)。驅(qū)動模塊的最終目的是讀取和寫入卡數(shù)據(jù)處理,所以規(guī)范整齊的數(shù)據(jù)結(jié)構(gòu)是必須的??梢远x一個數(shù)據(jù)結(jié)構(gòu)體來實現(xiàn)卡數(shù)據(jù)的存儲區(qū)域、數(shù)據(jù)地址索引、控制標(biāo)志位等,如:
這樣在驅(qū)動模塊中,只需要struct ICDATA iccdata;一條語句便可定義全部的卡處理數(shù)據(jù)結(jié)構(gòu)定義;而ic_fops則定義了設(shè)備操作映射函數(shù)結(jié)構(gòu)。從這個數(shù)據(jù)結(jié)構(gòu)看,我們實現(xiàn)了IC卡設(shè)備的打開、讀、寫和監(jiān)控函數(shù)。
(2)硬件接口控制線控制子函數(shù)
這些函數(shù)用作進行卡復(fù)位、時鐘等信號的控制。
以上是以我們開發(fā)的硬件系統(tǒng)平臺為例的硬件控制接口操作函數(shù)之一,用于控制IC卡的復(fù)位信號置1。針對不同硬件平臺,函數(shù)內(nèi)部操作方法不盡相同。類似的其它操作函數(shù)還有:
(3)模塊初始化函數(shù)的實現(xiàn)
模塊初始化函數(shù)是模塊開發(fā)過程中必不可少的處理函數(shù),用于實現(xiàn)設(shè)備的初始化、中斷初始化及處理、設(shè)備注冊等。在上面函數(shù)中,首先應(yīng)用initicdata(&icdata)實現(xiàn)了卡數(shù)據(jù)的初始化,然后定義了隊列數(shù)據(jù)。再進行了中斷處理函數(shù)的綁定、中斷申請以及中斷初始化。最后實現(xiàn)了IC卡字符設(shè)備的申請。設(shè)備名為IC。