Suportul de accesorii Android™ de la Google

by donpedro

Suportul de accesorii Android de la Google (Android Accessory Framework) scoate în evidenţă câteva opţiuni diferite pentru dezvoltare de accesorii. Pentru proiectanţii ce iau în considerare dezvoltarea de accesorii bazate pe Android, acest articol atinge aspect legate de consideraţii de proiectare pentru determinarea căilor de urmat. Fiecare aplicaţie este diferită, iar aceste criterii pot să nu convingă un proiectant, însă cunoaşterea opţiunilor este cheia ajungerii la cel mai bun rezultat.

Dispozitiv gazdă şi periferice USB

USB este în mod logic un sistem de comunicaţie punct-la-punct între un periferic ataşat şi un controler gazdă. Perifericele nu pot vorbi niciodată prin USB. Există numai o gazdă pe magistrală.
În mod tipic, gazda USB este cea mai puternică maşină (multă memorie, putere CPU, conectivitatea cea mai bună, şi va fi în mod tipic punctul de concentrare al utilizatorului), în vreme ce perifericul este adesea un dispozitiv mai simplu cu funcţio­nalitate de bază pe magistrală ca serviciu pentru gazdă.

Figura 1a: Pentru crearea unui accesoriu Android, în care accesoriul este un periferic USB dar nu utilizează o clasă standard USB.

Gazda are de asemenea două responsabilităţi cheie pe magistrală; prima este de a furniza energie peri­fericelor ataşate, iar a doua este de a gestiona dispozitivele de pe ma­gistrală. Din cauza acestor diferenţe, dispozitivul USB activat de gazdă şi dispozitivul periferic USB au adesea un design diferit.

Accesorii Android ca periferice USB

La prima vedere, alegerea între aceste două opţiuni USB poate părea clară. Un accesoriu pentru un smartphone/tabletă pare mai normal să fie tratat ca periferic USB. Telefonul sau tableta este normal să fie punctul central de concentrare al utilizatorului, iar accesoriul este normal să ofere un serviciu telefonului/tabletei. Furnizarea de ener­gie de la telefon/tabletă către accesoriu

Figura 1b: Pentru crearea unui accesoriu care suportă un dispozitiv Android ce nu are capabilitate de dispozitiv gazdă USB sau rulează pe o versiune de sistem de operare ce nu suportă modul de dispozitiv gazdă USB, accesoriul trebuie să fie dispozitivul gazdă USB şi utilizează cadrul de bază Open Accessory pentru a comunica cu dispozitivul Android.

este de asemenea o opţiune atractivă. Opţiunea de utilizare a telefonului sau tabletei Android ca gazdă USB a fost activată în dispozitivele Android 3.1+. Această opţiune nu este disponibilă în alte versiuni de sisteme de operare.

Accesorii Android ca dispozitive gazdă USB

Atunci când Google a lansat Open Accessory Framework au observat că pe piaţă erau foarte multe dispozitive Android proiectate numai cu capabi­litate de periferice USB, astfel încât asemenea telefoane şi tablete nu aveau dotarea hardware necesară pentru a putea opera ca dispozitiv gazdă USB. Pentru a permite acestor produse să ataşeze un accesoriu, Google a creat o opţiune cadru pentru accesorii, astfel încât accesoriile să fie dispozitivele gazdă USB, iar telefoanele/tabletele Android să fie dispozitivele periferice USB. Această opţiune OpenAccessory-framework este activată atât în versiunea de sistem de operare Android 2.3.4, cât şi în versiunile Android 3.1+.

Accesorii Android pentru accesorii standard USB

O a treia opţiune disponibilă este suportul nativ al sistemului de ope­rare; prin adăugarea capabilităţii de gazdă USB în sistemul de operare a fost adăugat şi

Figura 1c: Accesorii Android ce utilizează o clasă de dispozitive USB standard.

suport pentru mouse-uri şi tastaturi. Producătorii de periferice USB ce fac aceste tipuri de produse standard nu trebuie să-şi facă griji cu crearea de noi dispo­zitive sau software pentru a lucra cu telefoane/tablete Android, deoarece accesoriile lor vor lucra în orice sistem de operare care suportă driverul standard specific. Toate cele trei opţiuni de suport sunt ilustrate în figurile 1a, 1b şi 1c.

Ce opţiune ar trebui să aleg?

Fiecare dintre cele trei opţiuni de mai sus au implicaţii în crearea unui accesoriu. Prima problemă este setul ţintă de dispozitive Android pentru accesorii – pentru a crea un accesoriu care este un dispozitiv USB, el necesită ca telefonul/tableta Android să aibă capabilitate hardware inte­grată de a fi dispozitiv gazdă USB. Chiar dacă hardware-ul este capabil de a funcţiona ca gazdă USB, până când pe dispozitiv rulează Android 3.1+, el nu va putea utiliza opţiunile

Figura 2: Nivele de utilizare a versiunilor Android la 2 iulie 2012. (Sursă: http://developer.android.com/resources/dashboard/platform-versions.html)

de dispozitiv gazdă. Astfel, un proiectant de accesorii trebuie să cântărească raportul cost / caracte­ristici faţă de versiunea Android.
La lansarea pe piaţă a noilor dispo­zitive Android, majoritatea includ cele mai noi versiuni de Android. Figura 2 prezintă nivelul de utilizare a diferitelor versiuni ale sistemelor de operare Android..

Dispozitivul gazdă USB trebuie să furnizeze tensiunea de alimentare

Decizia de a selecta modul de accesoriu acolo unde accesoriu este dispozitiv gazdă USB nu este aşa de clară precum informaţia cu privire la versiuni. Într-un sistem USB, gazda trebuie să furnizeze tensiune de alimentare perifericului ataşat. Perifericele pot necesita un curent de până la 500mA. Majoritatea pe­rifericelor USB solicită de la gazdă cel puţin 100mA. În vreme ce acest lucru poate fi o cerinţă potrivită pentru un frigider rulând un diagnostic sau o actualizare de firm­ware, pentru un dispozitiv precum pulsoximetru, care este de aşteptat să fie portabil, mobil, mic şi să aibă o durată mare de viaţă a bateriilor, este o limitare puternică. A putea furniza un minim de 100mA este o cerinţă energetică foarte ridicată pentru multe aplicaţii mobile.
Figurile 1a, 1b şi 1c prezintă cum este furnizată puterea în cele trei posibile configuraţii de accesorii.

Aplicaţie standard sau particularizată?

Suplimentar cerinţelor de alimen­tare, un proiectant trebuie de asemenea să ia în considerare modul în care accesoriu va fi utilizat şi când este acceptabilă o aplicaţie particularizată. Orice proiectant ce utilizează modul de accesoriu, cu accesoriu ca gazdă USB, are nevoie adesea să creeze un protocol parti­cularizat pentru aplicaţia sa.
Utilizând aceleaşi două exemple de mai înainte cu frigiderul şi pulsoximetru, ar fi rezonabil, sau măcar de aşteptat ca frigiderul să dispună de un protocol particula­rizat, prin care clientul foloseşte o aplicaţie specifică pentru a comunica cu dispozitivul.
Pentru pulsoximetru este probabil să se dorească utilizarea PHDC (Personal Healthcare Device Class) disponibilă în protocolul USB. Utilizarea acestui protocol permite dispozitivului să fie utilizat pe orice maşină gazdă USB şi permite hardware-ului să interfaţeze cu o gamă largă de software.
De aceea, limitarea acestui hardware la o aplicaţie specifică produ­cătorului poate ducă la constrângeri prea mari pentru a fi acceptată de utilizatori.
Dacă un accesoriu trebuie să fie compatibil cu dispozitive Android care nu au funcţionalitate de dispozitiv gazdă USB, fie datorită limitărilor hardware, fie pentru că nu au un sistem de operare actuali­zat la peste 3.1+, atunci accesoriul trebuie să utilizeze un protocol particularizat, precum în figura 1b.
Pentru dispozitive accesorii care se pot limita la utilizarea cu dispozitive Android activate prin gazda USB, alegerea între o clasă USB standard şi o clasă particula­rizată este în întregime a proiectantului. Chiar dacă sistemul de operare poate să nu aibă un suport nativ pentru un dispozitiv, o aplicaţie particularizată trebuie să poată accesa dispozitivul. Acest lucru permite telefoanelor/ tabletelor Android să lucreze pe alte gazde USB care pot să nu suporte nativ aceste dispozitive.

Conectori fizici USB

Chiar dacă nu este un factor determinant, conectorii fizici pot juca un rol în deciderea modului utilizat. Pentru un accesoriu care acţio­nează ca gazdă USB, specificaţiile USB indică faptul că acesta trebuie să aibă un conector mamă tip A, precum cel din computer.

Figura 3: Accesoriile care suportă dispozitive Android ce au numai capabilitate de periferic USB pot utiliza cadrul OpenAccessory pentru interfaţarea la dispozitiv; similar conectării dispozitivului la un PC.

Figura 3 prezintă cum un accesoriu care suportă numai dispozitive Android periferice USB se va conecta la acest dispozitiv.
Dacă un accesoriu este desemnat ca periferic USB, proiectanţii au opţi­unea de utilizare a unor conectori mamă full-size-B, mini-B, sau micro-B. Cealaltă parte a cablului trebuie de asemenea luată în considerare. Pentru accesorii care rulează ca peri­ferice USB, dispozitivul Android va fi gazda USB şi majoritatea dispozitivelor Android nu au un conector mamă full-size-A, la care să conecteze cablul USB.
Din acest motiv, multe dintre dispozitivele Android prezente astăzi pe piaţă, care permit mod gazdă USB, necesită un adaptor pentru a putea avea această funcţionalitate. Într-o situaţie ideală, dispozitivul Android ar trebui să aibă un conector mamă micro-A/B, iar utilizatorul ar trebui să poată utiliza un cablu OTG de la micro-A la micro-B pentru a conecta accesoriul la dispozitivul Android şi apoi să utilizeze un cablu de la micro-B la full-size-A pentru a conecta dispozitivul Android la o gazdă USB precum un PC standard. Figura 4 prezintă modul de conec­tare la diverse echipamente al unui dispozitiv Android USB cu capabilitate OTG.

USB OTG pentru periferice şi gazdă

Dacă alegerea între accesoriu USB în mod gazdă şi accesoriu USB în mod periferic nu este evidentă, sau dacă se doresc amândouă modurile — gazdă USB pentru a suporta dispozi­tivele fără capabilitate de gazdă şi periferic USB pentru acelea care au această capabilitate, cu scopul de a utiliza un software standard – atunci există disponibilă o altă opţiune. Accesoriile Android pot fi proiectate ca dispozitive

Figura 4: Dispozitivele Android având capacitatea de operare atât ca gazdă, cât şi ca periferic printr-un conector OTG standard micro-A/B, se pot conecta la o ţintă gazdă (fie PC, fie accesorii) sau la un periferic USB (de exemplu mouse standard sau tastatură).

USB OTG. Specificaţiile USB OTG permit unui accesoriu să fie gazdă USB sau pe­riferic USB în funcţie de cablul cu care este conectat.
Utilizând USB OTG, un accesoriu poate fi gazdă USB pentru telefoane/tablete Android fără capabi­litate de gazdă şi periferic USB pentru acele telefoane/tablete Android cu funcţionalitate USB gazdă.
Există însă câteva complicaţii la utilizarea USB OTG. Cablul care este furnizat cu dispozitivul Android nu se va conecta la accesoriu deoarece acela este probabil să fie full-size-A, ce nu se va potrivi în conectorul receptor micro-A/B al accesoriului OTG, astfel că va fi necesar un cablu suplimentar micro-A. Datorită dife­riţilor conectori hardware ce pot fi găsiţi pe dispozitivele Android, această problemă de cablare este o provocare semnificativă, deoarece poate fi utilizat numai un cablu standard USB micro-A – micro-B, dar multe dispozitive Android au fie conectori receptori mini-B, fie conectori mamă particularizaţi. Pentru a complica şi mai mult această problemă, există pe piaţă tablete şi telefoane care au capabi­litate OTG, dar nu utilizează conectori micro-A/B. În loc de aceştia ele utilizează un conector receptor micro-B cu un cablu particularizat neconform USB, pentru a activa operarea în mod gazdă. Figura 5 prezintă cum un accesoriu capabil OTG poate interfaţa cu aceste tipuri de dispozitive; acelea numai cu capabilitate de periferic USB, precum şi acelea cu capabilitate de gazdă USB sau funcţionalitate OTG.

Figura 5: Accesoriile capabile OTG sunt capabile de conectare la ambele tipuri de dispozitive Android. Ele utilizează interfaţa OpenAccessory pentru dispozitive Android care suportă numai periferic USB, şi utilizează drivere standard periferice USB la conectarea dispozitivelor Android gazdă USB/capabile OTG.

Dacă este selectat modul de accesoriu, cu dispozitivul funcţionând ca gazdă USB, mai este o singură decizie ce trebuie luată — ce set API să fie utilizat. Când la Android 2.3.4 a fost adăugat Accessory framework, el a fost adăugat ca bibliotecă suplimentară Google API add-on.
Modulul utilizat în Android 2.3.4 (com.android.future.usb) este uşor diferit de cel utilizat în Android 3.1 (android.hardware.usb). Interfaţa dintre aceste două biblioteci variază de asemenea, dar funcţionalitatea este în principiu aceeaşi.
Consideraţia principală aici este aceea că biblioteca android.hardware.usb este disponibilă numai în Android 3.1+, în vreme ce biblioteca com.android.future.usb este dispo­nibilă în dispozitivele Android 2.3.4 şi Android 3.1+.
Este de asemenea important de observat că biblioteca com.android.future.usb nu este o bibliotecă impusă pentru Android 2.3.4, astfel că este posibil ca un dispozitiv care rulează Android 2.3.4 să nu aibă suport pentru aceste caracteristici. Depinde de producătorul dispozitivului dacă va include caracteristicile discutate în sistemul de operare.

Utilizarea IOIO – interfaţa de depanare Android

În acest topic al accesoriilor Android ar trebui analizată o opţiune finală. Soluţia IOIO permite dezvoltarea de aplicaţii bazate pe Android prin interfaţa de depanare Android ADB. Această soluţie oferă o metodă de activare a accesoriilor pentru telefoane/tablete Android, rulând Android 1.5 sau mai recent, eliminând problema aşteptării ca producătorii hardware să utilizeze Android 2.3.4 sau Android 3.1+ în echipamentele lor înainte de a lucra cu accesoriile.

Figura 6: Kit de start pentru dezvoltare de accesorii Android™ PIC24F (număr producător DM240415) de la Microchip conectându-se la un telefon Nexus S, utilizând Open Accessory Framework.

Există şi părţi inferioare ale acestei soluţii,precum următorul exemplu din clasa dezvoltării de accesorii prezentat la Google I/O 2011.
În vreme ce interfaţa ADB nu s-a schimbat mult în istoria recentă, prezentatorii indică faptul că Google îşi rezervă dreptul de a schimba această interfaţă după nevoi pentru dispozitive viitoare, pentru a permite noi caracteristici de depanare şi dezvoltare pentru dezvoltatorii de hardware şi software.
Informaţii suplimentare cu privire la comparaţie dintre Accessory framework şi soluţia IOIO sunt disponibile pe blogul dezvoltatorilor IOIO:
http://ytai-mer.blogspot.com/2011/06/ioio-over-openaccessory-adk-available.html
Cei ce doresc informaţii suplimentare despre accesoriile bazate pe Android, pot accesa http://developer.android.com/guide/topics/usb/index.html sau www.microchip.com/android

Acest articol a prezentat câteva consideraţii de proiectare cu privire la determinarea căilor posibile de urmat atunci când se urmăreşte dezvoltarea de accesorii bazate pe Android.

Mai multe întrebări pot fi trimise la Microchip la adresa de email: androidsupport@microchip.com

Autor: David Flowers
Inginer principal de aplicaţii
Departamentul de arhitecturi pentru microcontrolere avansate
Microchip Technology Inc.

www.microchip.com

S-ar putea să vă placă și