Jak jednoduše a efektivně programovat pro Neo FreeRunner
Díky systému postavenému na Linuxu, GNU a dalších svobodných projektech,
se dá programovat v mnoha jazycích a použít mnoho knihoven pro výsledný program
a při využití moderních mobilních komponent je to hračka.
Programovat se dá samozřejmě v jazyce C/C++,
který je hojně rozšířený a pro zařízení jako je Neo FreeRunner je vhodný,
protože výsledný program bývá rychlejší.
Zajímavou možností je nový jazyk Vala,
který v mnohém usnadňuje práci oproti C++ a přitom výsledný program je skoro stejně rychlí jako v C++,
protože je také kompilován do nativního kódu procesoru.
Vzhledem k tomu, že chceme rychle a jednoduše začít programovat, bez získaní a nastavení nějakých vývojových prostředků, které jsou specifické pro naše zařízení, jakou jsou například knihovny a kompilátor, tak zvolíme programovací jazyk Python. Tento programovací jazyk je skriptovací a tudíž překládán až za běhu, tudíž je možné programovat i v tom nejobyčejnějším editoru a v libovolném OS (třeba i na Windows v Notepadu :-D) . Zároveň se v něm dá vyvíjet jednodušeji než třeba v C.
Ovládání periferií a dalšího HW se dá jednoduše pomocí DBUSu.Pro grafické programy je v SHR preferován toolkit Elementary (OpenMoko wiki Elementary) ,který je přizpůsobený pro mobilní zařízení s malým dotykovým displejem.
Program v Pythonu se dá bez úprav rovnou testovat na FreeRunneru. Jak jednoduše přesunout upravené soubory? Nakonec jsem dospět k řešení, kdy pomocí NFS přimountuji adresář z desktopu, který obsahuje vyvýjený projekt, tak vlastně není potřeba nic kopírovat ;-) . Uživatelka slečna Neo:

Ovládat FreeRunner se dá úplně jednoduše např i z konzole pomocí Bashe a za pomoci programu mdbus (nebo mdbus2)
Služby poskytované naším systémem můžeme zjistit příkazem:
mdbus -sJaké objekty poskytuje konkrétní služba zjistíme příkazem:
mdbus -s org.freesmartphone.odevicedA pak už můžeme volat metody jednotlivých objektů dané služby. Například rozblikat červené AUX tlačítko, můžeme úplně jednoduše tímto jedním příkazem:
mdbus -s org.freesmartphone.odeviced \ /org/freesmartphone/Device/LED/gta02_aux_red \ org.freesmartphone.Device.LED.SetBlinking 100 100Blikání pak vypneme:
mdbus -s org.freesmartphone.odeviced \ /org/freesmartphone/Device/LED/gta02_aux_red \ org.freesmartphone.Device.LED.SetBrightness 0V Pythonu se pak LEDky dají ovládat např takto:
#!/usr/bin/env python #! coding:utf8 ''' Created on 11.3.2010 @author: Josef 'multi' Jebavý mail: josef dot jebavy at gmail.com web: http://multi.xeres.cz ''' import dbus def getDbusObject (bus, busname , objectpath , interface): dbusObject = bus.get_object(busname, objectpath) return dbus.Interface(dbusObject, dbus_interface=interface) led = getDbusObject (dbus.SystemBus(), "org.freesmartphone.odeviced", "/org/freesmartphone/Device/LED/gta02_aux_red", "org.freesmartphone.Device.LED") #led.SetBrightness(200) led.SetBlinking(200,400) # * SetBrightness # * SetBlinking # * BlinkSeconds # * SetNetworking
Vzorový grafickéhý programu v Pythonu s použitím Elementary.
Program pro ovládání diod.
Program pro ovládání USB módu.
Program, který detekuje příchozí/odchozí/.. volání, verze jak pro Elementary tak pro GTK.
Více viz dokumentace k FSO frameworku, který sprostředkovává tuto komunikaci s HW, voláním, kontakty a provádí další věci.
O mně
Prodej
Výroba reprobeden
elektronky
zesilovač
výroba grilu
výroba dřevěného uhlí
Co jsem ugriloval
Co jsem uvařil
papírové modely
hangár
Keramika
Akvaristika
osvětlení
GNU/Linux
upgrade Mandrivy
unix poznámky
WINE
Programovaní
JavaCard
Spoje GUI
IQRF
UPSmonitor
Neo FreeRunner a programovaní
USB redukce+zdroje
Držák na FreeRunnera
Počítače
Compal FL90
Můj novej starej ThinkPad 600 a to s GNU/Linuxem
WIFI
Disk
Bedna
Výměna chladiče
cyklistika

hmyz
Sršně
přástevník medvědí

Pařby-oslavy
mlátička
Bicí
Spisovatel













