作者Arton0306 (Ar藤)
看板C_and_CPP
標題[問題] 寫driver 各指令的回傳
時間Fri Jun 10 01:06:47 2011
小弟最近用c (不是c++) 在寫driver 遇到一個問題
該device的指令有數十個
我把常用到的指令包成一個個function
正常狀態下每個指令送出後會得到一個device的回傳值
但也有可能有錯誤的回傳值 錯誤的情況固定分3種 如ErrA ErrB ErrC
目前我這些function包裝成
cmd_err_type func( result_type* a1, para1_type a2, para2_type a3, ... )
也就是回傳值是 錯誤的情況 或是 成功
如果成功的話 會改變a1
而該指令所需的參數就放在a1的後面
各function固定回傳 cmd_err_type 但參數就有變化
而依各指令回傳的cmd_err_type 又有固定3種處理方式
一種是錯誤的話ErrA就不斷重送
ErrB就重送10次再錯印出字串
ErrC送一event給另一個thread
一種是錯誤的話就 不理會 繼續下去
一種是錯誤的話就 3秒內重送 3秒以後還錯就印出某字串
問題就在這裡了
這三種情況應該可以寫成三個函數
dealErr1( cmd_err_type, ???
dealErr2( cmd_err_type, ???
dealErr3( cmd_err_type, ???
但後面???的部份不知道要怎麼樣寫
由於要重送指令 所以應該要吃一個function pointer和參數
如果各function的參數一樣 我想就可以用function pointer
但各function參數又不一樣
請問架構上是否有什麼好的改良方式呢或什麼好的寫法?
感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.221.195
→ loveme00835:Refactoring: Preserve Whole Object 06/10 01:16
推 alongalone:把他寫成跟呼叫 pthread的方式看看,參數包成 struct.. 06/10 09:18
→ Arton0306:感謝 我再研究看看 06/11 18:20