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