Virtual-Cam sloj apstrakcije hardvera#
Virtual-cam hal je alternativni sloj apstrakcije hardvera lpc2106-cmucam3 hal-u koji omogućuje izradu prototipa cc3 softvera na PC-u. Ovo je vrlo slično CMUcam3 simulatoru. Virtual-cam hal učitavat će okvire pohranjene u direktoriju na isti način na koji CMUcam3 normalno učitava okvire iz kamere. Sve normalne cc3 funkcije zatim se izvode na virtualnom fifo-u. Dodatni tekst za ispravljanje pogrešaka bit će prikazan tijekom izvođenja koji se normalno ne pojavljuje kada se koristi lpc2106-cmucam3 hal. Ovo obavještava korisnika o stanjima LED-a i niskorazinskim cc3 naredbama koje se pozivaju. Serijski ulaz i izlaz zamijenjeni su standardnim ulazom i izlazom aplikacije.
Kompajliranje
Za kompajliranje koda za virtual-cam, jednostavno upišite hal=virtual-cam kada pokrenete make. Na primjer:
projects/hello_world :> make hal=virtual-cam
Ovo će generirati izvršnu datoteku hello_world_virtual-cam.
Za make clean, i dalje ćete morati navesti hal. Na primjer, za čišćenje hello_world:
projects/hello_world :> make hal=virtual-cam clean
Pokretanje virtual-cam projekta
Virtual-cam će čitati slike iz direktorija određenog varijablom okruženja CC3_VCAM_PATH. Putanja bi trebala biti relativna u odnosu na direktorij u kojem se poziva virtual-cam izvršna datoteka. Na primjer, u bash terminalu mogli biste pokrenuti virtual-cam datoteku ovako:
projects/hello_world :> ls
hello_world_virtual-cam.exe Makefile main.c my_img_dir
projects/hello_world :> export CC3_VCAM_PATH=my_img_dir
projects/hello_world :> ./hello_world_virtual-cam.exe
Direktorij virtual-cam sadrži uzorke slika koje će se dovoditi u međuspremnik okvira virtualne kamere. Slike moraju biti u PPM formatu i numerirane „IMGxxxxx.PPM” gdje x-ovi predstavljaju broj okvira. Virtual-cam hal učitavat će slike svaki put kad se pozove cc3_load_frame() u rastućem redoslijedu počevši od „IMG00000.PPM”. Kada više nema dostupnih slika, virtual-hal će panično stati. Ove slike mogu se stvoriti pomoću projekta ppm-grab. Prema zadanim postavkama, ppm-grab projekt pohranjuje sirove, visoke razlučivosti, nekomprimirane slike u ispravnom formatu za korištenje s virtual-cam hal-om.
Problemi sa simulacijom
Jedan glavni problem simulacije je taj što tajming i vanjski ulaz s GPIO-a ili gumba trenutno nisu podržani. U mnogim slučajevima, virtual-cam hal će jednostavno uvijek vraćati true ili false kako bi vašoj aplikaciji omogućio nastavak. Prilikom kompajliranja s virtual-cam hal-om, VIRTUAL_CAM će biti definiran tako da vaša aplikacija može mijenjati određena područja izvršavanja na temelju trenutnog hal-a. Na primjer, za onemogućavanje čekanja gumba pri korištenju virtual-cama mogli biste koristiti:
#ifndef VIRTUAL_CAM
while(!cc3_read_button());
#endif
ili ako želite omogućiti više ispravljanja pogrešaka, mogli biste napisati nešto poput:
#ifdef VIRTUAL_CAM
write_debugging_data_to_file();
#endif