這幾天才把iAP (iPhone跟其accessory間的protoco)大致地搞定。也寫了個簡單的app在iPhone上,利用這個app可以控制跟iPhone連接的accessory的硬體。
這些動作在做demo的時候的確是滿簡單的。大概只花個一分鐘就可以demo完。不過卻花了我大概兩個月的時間去搞定iAP還有iPhone SDK的使用。但主要的時間是花在iAP這邊,因為手上沒有apple release的debug tool,所以中間封包傳遞時,每交換一次封包,我就得用人工的方式去確認寫的值及回傳的值是不是正確的。尤其中間iPhone在認證accessory時,accessory需要跟apple的認證晶片透過I2C溝通,取回認證碼,而這個認證碼的長度在幾百個byte甚至上千個byte時,這人工檢查實在是快搞死我 (哈 雖然這話是講給外行聽的 :p)。
在這開發的過程中,我已經儘量把iAP相關的code儘量寫得independent一點,希望在開發其它project時,可以直接拉過來做為library使用。但因為大部份時都花在驗證封包,所以有些地方還是很取巧沒考慮很週到,因此跟其它程式的關聯度個人是覺得還可以再低些。
再來是code size的問題,有幾個地方是有比較值得討論的地方。I2C的部份是用software完成的,所以這部份比較會增加到code size的大小。其它的部份是覺得對code size大小的幫助並不大。還有一個跟code size有關係的部份是,目前interrupt產生後,大部份的task都在interrupt中執行,如此不是一個很好的做法,但主要也是為了節省時間來賺取驗證封包的時間,也是不得不的法子。之後還是得改回loop execute的法子,雖然這會稍增加code size,但對系統來說仍是比較好的做法。可以目前8kb的code size快爆了,得先省一下。
接下來是iPhone app的部份。目前只用了很簡單的component來做demo之用。對於view及其controller還是覺得很霧裡看花。這裡是還可以改進的部份。這部份寫完真希望還有時間可以自已來寫個app。
二月 03, 2010
訂閱:
張貼意見 (Atom)
16 Comments:
老實說看的霧煞煞,這是你的個人修業嗎?
不算吧 沒遇到困難的時候還滿好玩的 :p
我男朋友也寫這些東西耶~~他是寫android的,你有空可不可以陪他討論一下阿 我覺得你一定很厲害
都可以啦 不過我都是亂摸的 :p
請問你用的iPhone是要jailbreak的嗎? 我以為要使用External Accessory framework來連接自己做的accessory需要註冊made for iPhone耶? 最近也在搞這個東西...
Hi Justin,
accessory那邊的程式的確是需要加入made for iPod才能看到相關的文件。而iPhone那邊的app我是也有加入ADC才能測試這app跟accessory的溝通是否正確,主要是因為要拿到bundleID。用jb的方式好像也行,不過我有用adc所以這邊就沒特別去研究了哩 :)
Hi,我也正在开发基于iPhone 3.0 UART的配件,可以交流一下除了需要iPhone SDK那些命令么?感激万分!
您好,最近在研究external accessory framework。必须加入到MFI吗?
可是没有找到什么好的例子,能否给点意见呢?
Hi Eric,
在iPhone SDK中主要是使用external accessory framework這個framework做開發的 記得在ADC中也有份文件(不過我有點忘了)在講解如何以external accessory framework進行開發。
Hi Takujin,
如果只是單純使用external accessory framework,並不需要加入MFi。但是external accessory framework通常不能單獨使用,因為沒有對應利用iAP開發的accessory接在iPhone/iPod 30pins connector上的話,也看不出external accessory framework是否能夠順利運作。
你好
請問有能增測從30pin line in的audio的api嗎
找好久都找不到
Hi Shinren,
在iPhone SDK這塊,我不是很熟悉。歹勢,可能比較沒辨幫到你。
請問你有加入MFi program?加入需要具備什麼資格?加入能取得那些資料?
Hi Mark,
如果是要implement iAP的話,一定得加入MFi,如此才能夠拿到相關的文件去實做。加入MFi,主要是為了取得iAP的specificaiton,如此才能實做iAP。至於要如何加入這點我不是很清楚,因為主要是我前公司的人去負責這部份的接洽。基本上你可以看一下這個鏈結,裡頭有相關的資訊。http://developer.apple.com/programs/mfi/
希望有幫到你 :)
感謝你的回答,再問幾個觀念問題,若PC僅透過USB cable連接iPhone, pc可以模擬成Accessory嗎?iAP over USB 和iAP over Bluetooth都需要authentication CP ?
Hi Mark,
其實應該是說看你要用到那個command,不過似乎都要做到authentification,才能做到一些比較基本的動作。所以簡單的來說不管是透過那個interface,應該都需要用到apple的那個CP。另外,你提出來的這個idea,我之前是沒這樣想過,不過iPhone/iPod要認到accessory,是靠著30 pin connector上的一隻腳接的電阻來判斷accessory是啥裝置,而且也同時需要其它腳位的電位高低來讓iPhone/iPod做一些相關的判斷,如此才能故identification跟authentification。所以要用USB接電腦來模擬的話,是可行的,不過30pin connector其它一些腳位也要用相對應的電路做同步的控制才行,這點比較麻煩。
張貼意見