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:
slecna 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 -s
Jaké objekty poskytuje konkrétní služba zjistíme příkazem:
mdbus -s org.freesmartphone.odeviced
A 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 100
Blikání pak vypneme:
mdbus -s org.freesmartphone.odeviced   \
  /org/freesmartphone/Device/LED/gta02_aux_red   \
  org.freesmartphone.Device.LED.SetBrightness 0


V 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

Další jednoduché programy, které mohou sloužit jako vzor:
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.





logo multi web

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

simson


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

nosorozik

Pařby-oslavy

mlátička

Bicí

Spisovatel

Ověřit CSS!