Archive for the ‘Google Summer of Code’ Category

La nuova versione dell’OLSR mDNS plugin inizia a prendere forma

Thursday, June 28th, 2012

Dopo ormai un mese di lavoro si incominciano a vedere i primi risultati interessanti, grazie al supporto di ZioProto e della comunity di sviluppatori di olsr ho potuto espandere le mie conoscenze per sviluppare al meglio il nuovo plugin.

Dopo la semplice implementazione del filtro di pacchetti usando il Time To Live ora mi sto concentrando sullo sviluppo di una funzione che gestisca totalmente l’invio dei pacchetti mDns all’interno di una subnet.

Utilizzando un meccanismo di Elezione per i router che utilizzano olsr in una subnet, sarà possibile fare in modo che solo un router si occupi di inviare e ricevere pacchetti mDns, infatti al momento dell’avvio del plugin il sistema si mette in ascolto di speciali pacchetti “Hello” i quali servono ad annunciare la presenza di router con l’mdns attivi in una sottorete. Contemporaneamente viene inviato ad intervalli di tempo regolari un Hello dal router.

In questo modo sarà solo un router a inviare e ricevere pacchetti, evitando che la rete si sovraccarichi inutilmente.

Devo ammettere che con sorpresa la comunity di sviluppatori è stata molto disponibile ad aiutare.

Halino (Alessandro Gnagni)

Aggiornamento NodeShotMobile Android

Thursday, June 14th, 2012

Siamo quasi alla metà di Giugno e volevo rendervi partecipi riguardo a tutte le funzionalità finora introdotte all’interno dell’ app per Android di cui mi sto occupando, alla quale per ora ci riferiremo come NSM, che sta per NodeShotMobile.
Vi ricordo che è ancora un work-in-progress tuttavia si tratta di un prototipo funzionante.
Viste Presenti:

  1. Vista Lista dei Nodi
  2. Vista Mappa di Google
  3. Plugin di Mixare per AR, realtà aumentata.


Entriamo nel dettaglio

home app
  • La lista visualizza tutti i nodi della rete di Ninux parsando un file json prelevato dal MapServer. Per evitare che ad ogni avvio dell’app si debba ripetere questa operazione onerosa ho introdotto una funzionalità di caching: i nodi vengono salvati in un database. Tale operazione viene effettuata al primo avvio e ogni n giorni definiti dall’utente.
    • Al click del nodo viene visualizzata la scheda con le info del nodo.
    • In cima alla lista è presente un campo di ricerca per NOME del nodo. Se riempito scatena una ricerca automatica, simile a quella della ricerca per nome all’interno della rubrica.
    • La mappa visualizza tutti i nodi prelevati dal database e ora presenti in lista tramite speciali markers. Al click del nodo viene visualizzata la scheda con relative info. Al click del tasto menù è possibile:
      • attivare gps ( non controlla ancora se è presente sul dispositivo ) e localizzatore per stampare una bandierina nella tua attuale posizione
      • effettuare una ricerca per nome o per coordinate
      • Aumentare o diminuire il raggio di ricerca.
mappa nodi
esempio plugin mixare
  •  La realtà aumentata ( augmented reality AR ) è introdotta tramite plugin Mixare completamente integrato in essa. Vengono visualizzati tutti i nodi presenti in lista, creando dei markers e incollandoli a video come oggetti tridimensionali. Ruotando la telecamera i nodi cambiano disposizione in base alla loro reale posizione geografica. In figura è presente un esempio tratto dal sito di Mixare.

Improve remote monitoring and managing of OpenWrt

Monday, June 4th, 2012

After the good news of being accepted for the Google Summer of Code 2012, I have started to work hard on my project; first of all I have learned a lot of things about git, the version control system used by the community around eigenNet firmware to collaborate on the development of the OpenWRT based firmware suitable for community mesh networks, then I have created my own clone of the master repository, I started editing the code and then requested to merge into master when a set of feature was complete and tested enough.

What is done:

  • Selectable custom community CRDA
  • Pointing GUI
  • Bandwidth test server and GUI
  • Conditional  IPv4 gateway announcing
  • ATH5K driver support
  • 5GHz device support

What is not done yet:

  • Node Shot integration schema/classes
  • Community broad testing
  • Final adjustment

More news and updates soon!

Olsr e l’mdns plugin al Gsoc 2012

Friday, May 11th, 2012

Dopo la felicità e l’eccitazione per l’accettazione al Google Summer of Code mi sono rimboccato le maniche e ho incominciato a prepararmi sul lavoro da fare.

Dietro consigli di Saverio ho studiato diversi documenti e libri sulla struttura di socket e la gestione della rete in ambiente unix, all’inizio tutti quei socket(), connect() e send() mi hanno lasciato spiazzato, ma con calma è pazienza ho assimilato i concetti di base.

Dovendo lavorare su un progetto in complesso e continuo mutamento come olsr si è presentata la necessità di utilizzare uno strumento per la gestione del codice scritto e organizzazione delle modifiche. L’utilizzo di git era quindi d’obbligo, ed essendo uno strumento potente anche qui bisognava cercarne di capire il funzionamento basilare prima di poterlo usare.

Dopo qualche ultima breve guida sull’utilizzo di vim e cscope ho potuto dare ufficialmente il via alle danze, ho fatto un fork della branch stable di olsr e da li si è potuto incominciare a lavorare direttamente sul plugin di mdns. Il problema attuale del plugin è che non distingueva se un pacchetto mdns presente nella rete locale era stato ricevuto dalla rete olsr oppure era stato generato localmente, per ovviare al problema ho dovuto modificare il Time to Live (o Hop Limit per l’ipv6) dei pacchetti mdns provenienti dalla rete olsr impostandolo ad 1, poi ho anche fatto in modo che il plugin scartasse i pacchetti mdns presenti nella rete locale con time to live uguale a 1. In questo modo i pacchetti generati da dispositivi presenti nella rete interna sarebbero tranquillamente passati nella rete olsr mentre quelli provenienti dalla rete olsr sarebbero stati comunque fruibili ai device sulla rete interna.

Dopo qualche piccolo problema per la gestione delle struct dei pacchetti ipv6 una prima versione del codice è ora pronta per il testing, utilizzando netkit ora mi aspettano le prove e se necessario il relativo debug.

Aggiornamento per l’app Android Mobile

Sunday, May 6th, 2012

Vi porto notizie relative a quello che sto implementando per quanto riguarda il progetto di Android Mobile Application orientato alla rete di Ninux .

Per chi non conoscesse la natura della mia APP si tratta in sostanza di visualizzazione dei nodi di una rete(nel nostro caso Ninux) e connessione ai medesimi.

L’obbiettivo è di arrivare al 21 maggio (la data di inizio del Coding) con qualcosa in mano. Le idee ci sono, la voglia di fare idem, per questo non ho perso tempo e dopo due incontri di Fusolab già c’è un prototipo funzionante.

Sono state implementate fino ad adesso le seguenti funzionalità:

– parser xml
– parser Json
– se il database dell’app contiene nodi e se non è scaduto il termine massimo per l’auto-refresh dei nodi (settabile in linea teorica dall’utente) allora (1), altrimenti (2)

  • (1) recupero i nodi dal database
  • (2) mi connetto al MapServer

tramite JAVA faccio richiesta HTTP di tipo GET verso http://map.ninux.org/nodes.json e recupero la struttura JSON ( sfruttando archittettura REST ).
tramite parser JSON recupero i nodi con relative info.
salvo nodi nel database interno all’APP ( se vuoto ) o sovrascrivo i precedenti.

  • visualizzo una cartina di google centrata su centro desiderato.
  • creo un marker per ogni nodo aggiunto in lista e lo sovrappongo alla mappa.
  • al click del marker visualizzo tutte le info del nodo.

Ovviamente tutto OO oriented in linguaggio nativo Java.

Matteo