<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>NFCTotem</title><revhistory><revision><revnumber>2</revnumber><date>2012-09-13 00:11:04</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-09-13 00:03:19</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision></revhistory></articleinfo><section><title>Come creare un totem NFC</title><para>L'obiettivo è creare una macchina in grado di far scrivere agli utenti i propri dati all'interno delle tessere NFC del Fusolab. </para><para> L'utente quindi deve compilare un form, fare click su &quot;Submit&quot; ed avvicinare una carta Mifare bianca ad uno scrittore di card. </para><section><title>Requisiti</title><section><title>Hardware</title><itemizedlist><listitem><para>Computer con linux  </para></listitem><listitem><para>lettore/scrittore NFC tipo <ulink url="http://www.robot-italy.com/it/pn532-nfc-rfid-controller-breakout-board-v1-3.html">PN532 NFC/RFID controller breakout board</ulink> che si attacca via interfaccia USB/FTDI </para></listitem></itemizedlist><para>=== Software ===  </para><itemizedlist><listitem><para><ulink url="http://wiki.ninux.org/NFCTotem/libNFC#">http://www.libnfc.org/documentation/introduction</ulink>  </para></listitem><listitem><para><ulink url="http://wiki.ninux.org/NFCTotem/nfc-tools#">http://code.google.com/p/nfc-tools/</ulink>  </para></listitem><listitem><para><ulink url="http://wiki.ninux.org/NFCTotem/libNDEF#">http://code.google.com/p/libndef/</ulink>  </para></listitem></itemizedlist><para>Le prime sono librerie per NFC (ma va'?) ed utility grezze. NFC-tools sono utility più evolute (tipo fai delle azioni quando ti si avvicina una carta) e sfruttano le libNFC. LibNDEF sono delle librerie per scrivere messaggi NDEF, leggibili ad esempio con i cellulari e tablet. </para><itemizedlist><listitem><para>apache2 </para></listitem></itemizedlist></section></section><section><title>Il programma</title><para>Questo è il CGI che viene chiamato quando si fa il submit </para><screen><![CDATA[!#/bin/bash
nfc-events con questo file di configurazione]]></screen><para><emphasis role="strong">nfc-eventd.conf<screen><![CDATA[# Sample nfc-eventd configuration file
#
nfc-eventd {
        daemon = false;
        debug = true;
        polling_time = 1;
        expire_time = 30;
        
        device my_touchatag {
                driver = "ACR122";
                name = "ACS ACR 38U-CCID 01 00";
        }
]]><![CDATA[
        device my_pn532_uart {
                driver = "PN532_UART";
                port = "/dev/ttyS0";
                speed = 115200;
        }
]]><![CDATA[
        # which device to use ? note: if this part is commented out, nfc-eventd will try to pick up device automagically...
        #nfc_device = "my_touchatag";
]]><![CDATA[
        # list of events and actions
        module nem_execute {
                # Tag inserted
                event tag_insert {
                        # what to do if an action fail?
                        # ignore  : continue to next action
                        # return  : end action sequence
                        # quit    : end program
                        on_error = ignore ;
        
                        # You can enter several, comma-separated action entries
                        # they will be executed in turn
                        action = "(echo -n 'Tag (uid=$TAG_UID), inserted at: ' && date) >> /tmp/nfc-eventd.log";
                }
        
                # Tag has been removed
                event tag_remove { 
                        on_error = ignore;
                        action = "(echo -n 'Tag (uid=$TAG_UID) removed at: ' && date) >> /tmp/nfc-eventd.log";
                }
        
                # Too much time card removed
                event expire_time { 
                        on_error = ignore;
                        action = "exit";
                }
        }
]]><![CDATA[
}]]></screen></emphasis></para></section></section></article>