<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.openlighting.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tobi</id>
		<title>wiki.openlighting.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.openlighting.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tobi"/>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php/Special:Contributions/Tobi"/>
		<updated>2026-05-20T04:11:25Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3884</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3884"/>
				<updated>2011-07-01T20:24:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Reduced section hierarchy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
Updated by Tobi Schäfer, July 2011.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libartnet 1.1.0, Mac OS X 10.6.8, Xcode 4.0.2, iPad w/ iOS 4.3&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in Xcode ==&lt;br /&gt;
&lt;br /&gt;
This is documentation of my first steps using libartnet and Xcode. I am still a complete newbie with all these things. However, I suceeded in running a simple program on the iPad sending and receiving Art-Net data – not without help from the excellent people of the open-ligthing ML&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/browse_thread/thread/e3f322613b710d9d/661d7e4babba4bf1&amp;lt;/ref&amp;gt;. I tried to sum up here my experiences so far, although I am sure there are better ways to achieve the same result.&lt;br /&gt;
&lt;br /&gt;
First, we download the libartnet sources and prepare them for inclusion in Xcode. We need to generate a file called &amp;lt;code&amp;gt;config.h&amp;lt;/code&amp;gt; to make things work. This can be done either by downloading a tarball or checking out the sources with Git.&lt;br /&gt;
&lt;br /&gt;
=== Preparing libartnet from Tarball ===&lt;br /&gt;
&lt;br /&gt;
 $ curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ tar -xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ cd libartnet-1.1.0/&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
=== Preparing libartnet from Git ===&lt;br /&gt;
&lt;br /&gt;
 $ git clone http://git.opendmx.net/libartnet&lt;br /&gt;
 $ cd libartnet/&lt;br /&gt;
 $ autoreconf -i&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet to Xcode ===&lt;br /&gt;
&lt;br /&gt;
Create a directory called &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; in the Xcode project directory – in the file system or Finder, not in the Xcode application; the latter will be done in the next step – and copy the source files from the &amp;lt;code&amp;gt;artnet&amp;lt;/code&amp;gt; directory of the previous step into the new &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/test/Vendor/artnet&lt;br /&gt;
 $ cp artnet/*.[ch] ~/test/Vendor/artnet&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test&lt;br /&gt;
 total 0&lt;br /&gt;
 drwxr-xr-x  10 tobi  tobi  340 Jul  1 17:20 ArtNetTest&lt;br /&gt;
 drwxr-xr-x   5 tobi  tobi  170 Jul  1 21:17 ArtNetTest.xcodeproj&lt;br /&gt;
 drwxr-xr-x   7 tobi  tobi  238 Jul  1 15:05 ArtNetTestTests&lt;br /&gt;
 drwxr-xr-x   4 tobi  tobi  136 Jul  1 21:08 Vendor&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test/Vendor/artnet&lt;br /&gt;
 total 352&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  44082 Jul  1 20:52 artnet.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  11580 Jul  1 20:52 artnet.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1987 Jul  1 20:52 common.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   4831 Jul  1 20:52 config.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1754 Jul  1 20:52 misc.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1610 Jul  1 20:52 misc.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  18941 Jul  1 20:52 network.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   8495 Jul  1 20:52 packets.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  13397 Jul  1 20:52 private.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  27731 Jul  1 20:52 receive.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   2806 Jul  1 20:52 tod.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1307 Jul  1 20:52 tod.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  12364 Jul  1 20:52 transmit.c&lt;br /&gt;
&lt;br /&gt;
Now drag&amp;amp;drop the Vendor folder to the top level of the Xcode project and choose the following options for adding files.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.45.17.png‎]]&lt;br /&gt;
&lt;br /&gt;
The structure of your project should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.57.03.png‎]]&lt;br /&gt;
&lt;br /&gt;
Add the path to the &amp;lt;code&amp;gt;Vendor&amp;lt;/code&amp;gt; directory to the Header Search Paths in the Search Paths section of your build target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.10.22.png‎]]&lt;br /&gt;
&lt;br /&gt;
Finally. add the &amp;lt;code&amp;gt;HAVE_CONFIG_H&amp;lt;/code&amp;gt; macro to the Preprocessor Macros section of your project’s build settings.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.17.40.png]]&lt;br /&gt;
&lt;br /&gt;
At this point your project should build and run without error – the libartnet source code will be compiled and linked automatically.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production – actually it is pretty bad because it abuses the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; method instead of creating its own controller. However, it reduces complexity and simply shows the basic approach to using libartnet from within Objective-C code.&lt;br /&gt;
&lt;br /&gt;
The code creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine with GNU/Linux (Ubuntu 10.04) as operating system.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on the same machine you are running Xcode on.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA on Mac OS X ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA on Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
=== Patching an Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then patch the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3883</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3883"/>
				<updated>2011-07-01T20:20:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Moved description of known issues when compiling OLA on Linux to corresponding page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
Updated by Tobi Schäfer, July 2011.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libartnet 1.1.0, Mac OS X 10.6.8, Xcode 4.0.2, iPad w/ iOS 4.3&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in Xcode ==&lt;br /&gt;
&lt;br /&gt;
This is documentation of my first steps using libartnet and Xcode. I am still a complete newbie with all these things. However, I suceeded in running a simple program on the iPad sending and receiving Art-Net data – not without help from the excellent people of the open-ligthing ML&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/browse_thread/thread/e3f322613b710d9d/661d7e4babba4bf1&amp;lt;/ref&amp;gt;. I tried to sum up here my experiences so far, although I am sure there are better ways to achieve the same result.&lt;br /&gt;
&lt;br /&gt;
=== Preparing libartnet ===&lt;br /&gt;
&lt;br /&gt;
First, we download the libartnet sources and prepare them for inclusion in Xcode. We need to generate a file called &amp;lt;code&amp;gt;config.h&amp;lt;/code&amp;gt; to make things work.&lt;br /&gt;
&lt;br /&gt;
==== Using Tarball ====&lt;br /&gt;
&lt;br /&gt;
 $ curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ tar -xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ cd libartnet-1.1.0/&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
==== Using Git ====&lt;br /&gt;
&lt;br /&gt;
 $ git clone http://git.opendmx.net/libartnet&lt;br /&gt;
 $ cd libartnet/&lt;br /&gt;
 $ autoreconf -i&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet to Xcode ===&lt;br /&gt;
&lt;br /&gt;
Create a directory called &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; in the Xcode project directory – in the file system or Finder, not in the Xcode application; the latter will be done in the next step – and copy the source files from the &amp;lt;code&amp;gt;artnet&amp;lt;/code&amp;gt; directory of the previous step into the new &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/test/Vendor/artnet&lt;br /&gt;
 $ cp artnet/*.[ch] ~/test/Vendor/artnet&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test&lt;br /&gt;
 total 0&lt;br /&gt;
 drwxr-xr-x  10 tobi  tobi  340 Jul  1 17:20 ArtNetTest&lt;br /&gt;
 drwxr-xr-x   5 tobi  tobi  170 Jul  1 21:17 ArtNetTest.xcodeproj&lt;br /&gt;
 drwxr-xr-x   7 tobi  tobi  238 Jul  1 15:05 ArtNetTestTests&lt;br /&gt;
 drwxr-xr-x   4 tobi  tobi  136 Jul  1 21:08 Vendor&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test/Vendor/artnet&lt;br /&gt;
 total 352&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  44082 Jul  1 20:52 artnet.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  11580 Jul  1 20:52 artnet.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1987 Jul  1 20:52 common.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   4831 Jul  1 20:52 config.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1754 Jul  1 20:52 misc.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1610 Jul  1 20:52 misc.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  18941 Jul  1 20:52 network.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   8495 Jul  1 20:52 packets.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  13397 Jul  1 20:52 private.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  27731 Jul  1 20:52 receive.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   2806 Jul  1 20:52 tod.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1307 Jul  1 20:52 tod.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  12364 Jul  1 20:52 transmit.c&lt;br /&gt;
&lt;br /&gt;
Now drag&amp;amp;drop the Vendor folder to the top level of the Xcode project and choose the following options for adding files.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.45.17.png‎]]&lt;br /&gt;
&lt;br /&gt;
The structure of your project should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.57.03.png‎]]&lt;br /&gt;
&lt;br /&gt;
Add the path to the &amp;lt;code&amp;gt;Vendor&amp;lt;/code&amp;gt; directory to the Header Search Paths in the Search Paths section of your build target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.10.22.png‎]]&lt;br /&gt;
&lt;br /&gt;
Finally. add the &amp;lt;code&amp;gt;HAVE_CONFIG_H&amp;lt;/code&amp;gt; macro to the Preprocessor Macros section of your project’s build settings.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.17.40.png]]&lt;br /&gt;
&lt;br /&gt;
At this point your project should build and run without error – the libartnet source code will be compiled and linked automatically.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production – actually it is pretty bad because it abuses the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; method instead of creating its own controller. However, it reduces complexity and simply shows the basic approach to using libartnet from within Objective-C code.&lt;br /&gt;
&lt;br /&gt;
The code creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine with GNU/Linux (Ubuntu 10.04) as operating system.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on the same machine you are running Xcode on.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA on Mac OS X ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA on Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
=== Patching an Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then patch the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=OLA_on_Linux&amp;diff=3882</id>
		<title>OLA on Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=OLA_on_Linux&amp;diff=3882"/>
				<updated>2011-07-01T20:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added new section about known issues&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This describes how to get [[OLA]] working on a Linux system either from the git repo or by using a [http://code.google.com/p/linux-lighting/downloads/list released tarball].&lt;br /&gt;
&lt;br /&gt;
=Checkout or Download an Archive=&lt;br /&gt;
&lt;br /&gt;
Either download a tarball from the releases page, or check out the git repo with the following command:&lt;br /&gt;
&lt;br /&gt;
  git clone http://git.opendmx.net/ola&lt;br /&gt;
&lt;br /&gt;
If you don't have '''git''' yet, you'll need to install it with your distro's package manager.&lt;br /&gt;
&lt;br /&gt;
=Install libraries=&lt;br /&gt;
&lt;br /&gt;
You need a couple of libraries installed for everything to work correctly. Some of these are available as packages in distros but others need to be downloaded and built manually.&lt;br /&gt;
&lt;br /&gt;
First up you'll need the following:&lt;br /&gt;
* cppunit&lt;br /&gt;
* uuid or ossp uuid&lt;br /&gt;
* pkg-config&lt;br /&gt;
* curses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Debian/Ubuntu users can install them with apt:&lt;br /&gt;
&lt;br /&gt;
  apt-get install libcppunit-dev libcppunit-1.12-1 uuid-dev pkg-config libncurses5-dev  zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
If you're building from git you'll also need the following:&lt;br /&gt;
&lt;br /&gt;
* libtool&lt;br /&gt;
* automake&lt;br /&gt;
* autoconf&lt;br /&gt;
&lt;br /&gt;
  apt-get install libtool autoconf automake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next, you need '''Protocol Buffers'''  [http://code.google.com/p/protobuf/ http://code.google.com/p/protobuf/] version 2.3.0 from Google (BSD license). Most likely, you'll need to download and build them yourself. Note that 2.4.0 won't work yet as some of the functionality has changed.&lt;br /&gt;
&lt;br /&gt;
Debian (and Ubuntu) users can, in some cases, use the following packages (not yet in stable):&lt;br /&gt;
libprotobuf2 (libprotobuf3), libprotobuf-dev, protobuf-compiler&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, if you want to use the built in webserver, you'll need '''microhttpd'''. Note: you'll need version &amp;gt;= 0.4.0 of microhttpd else you will get errors:&lt;br /&gt;
  &lt;br /&gt;
* [ftp://ftp.gnu.org/gnu/libmicrohttpd/ ftp://ftp.gnu.org/gnu/libmicrohttpd/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, run ldconfig as root to pick up the new libraries&lt;br /&gt;
&lt;br /&gt;
  sudo  ldconfig&lt;br /&gt;
&lt;br /&gt;
=Configure=&lt;br /&gt;
&lt;br /&gt;
If you checked out the sources from git, you'll need to run&lt;br /&gt;
&lt;br /&gt;
  autoreconf -i&lt;br /&gt;
&lt;br /&gt;
After that run&lt;br /&gt;
&lt;br /&gt;
  ./configure&lt;br /&gt;
&lt;br /&gt;
=Building &amp;amp; Testing=&lt;br /&gt;
&lt;br /&gt;
Build&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Run the tests&lt;br /&gt;
  make check&lt;br /&gt;
&lt;br /&gt;
And install OLA&lt;br /&gt;
  sudo make install&lt;br /&gt;
  sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
=Install ola-examples=&lt;br /&gt;
&lt;br /&gt;
The [[OLA Command Line Tools]] come separately. Again either download a tarball or checkout from the git repo:&lt;br /&gt;
&lt;br /&gt;
  git clone http://www.nomis52.net/git/lla-examples&lt;br /&gt;
&lt;br /&gt;
The steps are similar to building the main package.&lt;br /&gt;
&lt;br /&gt;
   autoreconf -i   # if you used the git repo&lt;br /&gt;
   ./configure&lt;br /&gt;
   make&lt;br /&gt;
   sudo make install&lt;br /&gt;
&lt;br /&gt;
Note in order for ola_dmxmonitor and ola_dmxconsole to build you *must* have curses installed.&lt;br /&gt;
&lt;br /&gt;
=Known Issues=&lt;br /&gt;
&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&lt;br /&gt;
 /bin/sh ./libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   -I/opt/local/var/macports/software/protobuf-cpp/2.0.3_0/opt/local/include/  -g -O2 -c -o ltdl.lo ltdl.c&lt;br /&gt;
 ./libtool: line 464: CDPATH: command not found&lt;br /&gt;
 /Users/simonn/lighting/lla/libltdl/libtool: line 464: CDPATH: command not found&lt;br /&gt;
 /Users/simonn/lighting/lla/libltdl/libtool: line 1142: func_opt_split: command not found&lt;br /&gt;
 libtool: Version mismatch error.  This is libtool 2.2.6, but the&lt;br /&gt;
 libtool: definition of this LT_INIT comes from an older release.&lt;br /&gt;
 libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6&lt;br /&gt;
 libtool: and run autoconf again.&lt;br /&gt;
&lt;br /&gt;
Your system uses a different version of libtool. Run:&lt;br /&gt;
&lt;br /&gt;
  libtoolize --ltdl -c -f&lt;br /&gt;
&lt;br /&gt;
and then start from the autoreconf step again.&lt;br /&gt;
&lt;br /&gt;
If you should get the following error try to fix it with one of [http://groups.google.com/group/open-lighting/msg/72060f6327d30df6 two available solutions]:&lt;br /&gt;
&lt;br /&gt;
 Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&amp;amp;)': &lt;br /&gt;
 Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor &lt;br /&gt;
&lt;br /&gt;
A similar error can occur when building the ola-examples package:&lt;br /&gt;
&lt;br /&gt;
 g++ -DHAVE_CONFIG_H -I. -I..    -Wall -Werror -I/usr/local/include/ &lt;br /&gt;
 libola   -g -O2 -MT ola-dmxconsole.o -MD -MP -MF .deps/ola- &lt;br /&gt;
 dmxconsole.Tpo -c -o ola-dmxconsole.o ola-dmxconsole.cpp &lt;br /&gt;
 cc1plus: warnings being treated as errors &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void mask()’: &lt;br /&gt;
 ola-dmxconsole.cpp:150: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:156: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void values()’: &lt;br /&gt;
 ola-dmxconsole.cpp:184: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:188: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:190: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:194: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:197: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:202: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:205: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:208: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:215: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:225: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:226: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:227: error: value computed is not used &lt;br /&gt;
 make[2]: *** [ola-dmxconsole.o] Error 1 &lt;br /&gt;
&lt;br /&gt;
You should be able to prevent this by [http://groups.google.com/group/open-lighting/msg/c6d86d03dd74ed5b editing &amp;lt;code&amp;gt;./src/Makefile.am&amp;lt;/code&amp;gt;], removing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; and then start from the autoreconfig step again.&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Libartnet&amp;diff=3881</id>
		<title>Libartnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Libartnet&amp;diff=3881"/>
				<updated>2011-07-01T20:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added link to iPad ArtNet Node page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Link: http://code.google.com/p/linux-lighting/&amp;lt;br&amp;gt;&lt;br /&gt;
{{Features|linux=yes|osx=yes|win=yes|rdm=yes|free=yes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
libartnet is a implementation of the [[ArtNet]] protocol for Linux,Mac &amp;amp; Windows and is part of the [[OLA|Open Lighting Architecture]]. The artnet-examples package provides sample programs demonstrating the use of the library. Of particular interest is artnet_usb which allows ArtNet to DMX conversion by using the Enttec [[Open DMX USB]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Related Tutorials:&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[Linux ArtNet Node]]&lt;br /&gt;
* [[Libartnet on Windows]]&lt;br /&gt;
* [[iPad ArtNet Node]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Related Products:&amp;lt;/b&amp;gt;&lt;br /&gt;
* [[OLA]]&lt;br /&gt;
* [[Open DMX USB]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers / Libraries]]&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3880</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3880"/>
				<updated>2011-07-01T19:59:50Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
Updated by Tobi Schäfer, July 2011.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libartnet 1.1.0, Mac OS X 10.6.8, Xcode 4.0.2, iPad w/ iOS 4.3&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in Xcode ==&lt;br /&gt;
&lt;br /&gt;
This is documentation of my first steps using libartnet and Xcode. I am still a complete newbie with all these things. However, I suceeded in running a simple program on the iPad sending and receiving Art-Net data – not without help from the excellent people of the open-ligthing ML&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/browse_thread/thread/e3f322613b710d9d/661d7e4babba4bf1&amp;lt;/ref&amp;gt;. I tried to sum up here my experiences so far, although I am sure there are better ways to achieve the same result.&lt;br /&gt;
&lt;br /&gt;
=== Preparing libartnet ===&lt;br /&gt;
&lt;br /&gt;
First, we download the libartnet sources and prepare them for inclusion in Xcode. We need to generate a file called &amp;lt;code&amp;gt;config.h&amp;lt;/code&amp;gt; to make things work.&lt;br /&gt;
&lt;br /&gt;
==== Using Tarball ====&lt;br /&gt;
&lt;br /&gt;
 $ curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ tar -xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ cd libartnet-1.1.0/&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
==== Using Git ====&lt;br /&gt;
&lt;br /&gt;
 $ git clone http://git.opendmx.net/libartnet&lt;br /&gt;
 $ cd libartnet/&lt;br /&gt;
 $ autoreconf -i&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet to Xcode ===&lt;br /&gt;
&lt;br /&gt;
Create a directory called &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; in the Xcode project directory – in the file system or Finder, not in the Xcode application; the latter will be done in the next step – and copy the source files from the &amp;lt;code&amp;gt;artnet&amp;lt;/code&amp;gt; directory of the previous step into the new &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/test/Vendor/artnet&lt;br /&gt;
 $ cp artnet/*.[ch] ~/test/Vendor/artnet&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test&lt;br /&gt;
 total 0&lt;br /&gt;
 drwxr-xr-x  10 tobi  tobi  340 Jul  1 17:20 ArtNetTest&lt;br /&gt;
 drwxr-xr-x   5 tobi  tobi  170 Jul  1 21:17 ArtNetTest.xcodeproj&lt;br /&gt;
 drwxr-xr-x   7 tobi  tobi  238 Jul  1 15:05 ArtNetTestTests&lt;br /&gt;
 drwxr-xr-x   4 tobi  tobi  136 Jul  1 21:08 Vendor&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test/Vendor/artnet&lt;br /&gt;
 total 352&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  44082 Jul  1 20:52 artnet.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  11580 Jul  1 20:52 artnet.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1987 Jul  1 20:52 common.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   4831 Jul  1 20:52 config.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1754 Jul  1 20:52 misc.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1610 Jul  1 20:52 misc.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  18941 Jul  1 20:52 network.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   8495 Jul  1 20:52 packets.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  13397 Jul  1 20:52 private.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  27731 Jul  1 20:52 receive.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   2806 Jul  1 20:52 tod.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1307 Jul  1 20:52 tod.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  12364 Jul  1 20:52 transmit.c&lt;br /&gt;
&lt;br /&gt;
Now drag&amp;amp;drop the Vendor folder to the top level of the Xcode project and choose the following options for adding files.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.45.17.png‎]]&lt;br /&gt;
&lt;br /&gt;
The structure of your project should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.57.03.png‎]]&lt;br /&gt;
&lt;br /&gt;
Add the path to the &amp;lt;code&amp;gt;Vendor&amp;lt;/code&amp;gt; directory to the Header Search Paths in the Search Paths section of your build target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.10.22.png‎]]&lt;br /&gt;
&lt;br /&gt;
Finally. add the &amp;lt;code&amp;gt;HAVE_CONFIG_H&amp;lt;/code&amp;gt; macro to the Preprocessor Macros section of your project’s build settings.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.17.40.png]]&lt;br /&gt;
&lt;br /&gt;
At this point your project should build and run without error – the libartnet source code will be compiled and linked automatically.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production – actually it is pretty bad because it abuses the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; method instead of creating its own controller. However, it reduces complexity and simply shows the basic approach to using libartnet from within Objective-C code.&lt;br /&gt;
&lt;br /&gt;
The code creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine with GNU/Linux (Ubuntu 10.04) as operating system.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on another Mac or even the same machine you are running XCode on, using the [https://trac.macports.org/browser/trunk/dports/net/ola/Portfile OLA MacPorts port] and/or following the steps of the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA On Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
If you should get the following error try to fix it with one of [http://groups.google.com/group/open-lighting/msg/72060f6327d30df6 two available solutions]:&lt;br /&gt;
&lt;br /&gt;
 Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&amp;amp;)': &lt;br /&gt;
 Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor &lt;br /&gt;
&lt;br /&gt;
A similar error can occur when building the ola-examples package:&lt;br /&gt;
&lt;br /&gt;
 g++ -DHAVE_CONFIG_H -I. -I..    -Wall -Werror -I/usr/local/include/ &lt;br /&gt;
 libola   -g -O2 -MT ola-dmxconsole.o -MD -MP -MF .deps/ola- &lt;br /&gt;
 dmxconsole.Tpo -c -o ola-dmxconsole.o ola-dmxconsole.cpp &lt;br /&gt;
 cc1plus: warnings being treated as errors &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void mask()’: &lt;br /&gt;
 ola-dmxconsole.cpp:150: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:156: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void values()’: &lt;br /&gt;
 ola-dmxconsole.cpp:184: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:188: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:190: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:194: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:197: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:202: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:205: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:208: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:215: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:225: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:226: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:227: error: value computed is not used &lt;br /&gt;
 make[2]: *** [ola-dmxconsole.o] Error 1 &lt;br /&gt;
&lt;br /&gt;
You should be able to prevent this by editing &amp;lt;code&amp;gt;./src/Makefile.am&amp;lt;/code&amp;gt;, removing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; and then running &amp;lt;code&amp;gt;autoreconfig &amp;amp;&amp;amp; ./configure&amp;lt;/code&amp;gt; again.&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/c6d86d03dd74ed5b&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patching An Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then patch the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3879</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3879"/>
				<updated>2011-07-01T19:56:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added listing of the project’s top-level directory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
Updated by Tobi Schäfer, July 2011.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libartnet 1.1.0, Mac OS X 10.6.8, Xcode 4.0.2, iPad w/ iOS 4.3&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in the Xcode Simulator ==&lt;br /&gt;
&lt;br /&gt;
This is documentation of my first steps using libartnet and Xcode. I am still a complete newbie with all these things. However, I suceeded in running a simple program on the iPad sending and receiving Art-Net data – not without help from the excellent people of the open-ligthing ML&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/browse_thread/thread/e3f322613b710d9d/661d7e4babba4bf1&amp;lt;/ref&amp;gt;. I tried to sum up here my experiences so far, although I am sure there are better ways to achieve the same result.&lt;br /&gt;
&lt;br /&gt;
=== Preparing libartnet ===&lt;br /&gt;
&lt;br /&gt;
First, we download the libartnet sources and prepare them for inclusion in Xcode. We need to generate a file called &amp;lt;code&amp;gt;config.h&amp;lt;/code&amp;gt; to make things work.&lt;br /&gt;
&lt;br /&gt;
==== Using Tarball ====&lt;br /&gt;
&lt;br /&gt;
 $ curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ tar -xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ cd libartnet-1.1.0/&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
==== Using Git ====&lt;br /&gt;
&lt;br /&gt;
 $ git clone http://git.opendmx.net/libartnet&lt;br /&gt;
 $ cd libartnet/&lt;br /&gt;
 $ autoreconf -i&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet to Xcode ===&lt;br /&gt;
&lt;br /&gt;
Create a directory called &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; in the Xcode project directory – in the file system or Finder, not in the Xcode application; the latter will be done in the next step – and copy the source files from the &amp;lt;code&amp;gt;artnet&amp;lt;/code&amp;gt; directory of the previous step into the new &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/test/Vendor/artnet&lt;br /&gt;
 $ cp artnet/*.[ch] ~/test/Vendor/artnet&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test&lt;br /&gt;
 total 0&lt;br /&gt;
 drwxr-xr-x  10 tobi  tobi  340 Jul  1 17:20 ArtNetTest&lt;br /&gt;
 drwxr-xr-x   5 tobi  tobi  170 Jul  1 21:17 ArtNetTest.xcodeproj&lt;br /&gt;
 drwxr-xr-x   7 tobi  tobi  238 Jul  1 15:05 ArtNetTestTests&lt;br /&gt;
 drwxr-xr-x   4 tobi  tobi  136 Jul  1 21:08 Vendor&lt;br /&gt;
&lt;br /&gt;
 $ ls -l ~/test/Vendor/artnet&lt;br /&gt;
 total 352&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  44082 Jul  1 20:52 artnet.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  11580 Jul  1 20:52 artnet.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1987 Jul  1 20:52 common.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   4831 Jul  1 20:52 config.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1754 Jul  1 20:52 misc.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1610 Jul  1 20:52 misc.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  18941 Jul  1 20:52 network.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   8495 Jul  1 20:52 packets.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  13397 Jul  1 20:52 private.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  27731 Jul  1 20:52 receive.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   2806 Jul  1 20:52 tod.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1307 Jul  1 20:52 tod.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  12364 Jul  1 20:52 transmit.c&lt;br /&gt;
&lt;br /&gt;
Now drag&amp;amp;drop the Vendor folder to the top level of the Xcode project and choose the following options for adding files.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.45.17.png‎]]&lt;br /&gt;
&lt;br /&gt;
The structure of your project should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.57.03.png‎]]&lt;br /&gt;
&lt;br /&gt;
Add the path to the &amp;lt;code&amp;gt;Vendor&amp;lt;/code&amp;gt; directory to the Header Search Paths in the Search Paths section of your build target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.10.22.png‎]]&lt;br /&gt;
&lt;br /&gt;
Finally. add the &amp;lt;code&amp;gt;HAVE_CONFIG_H&amp;lt;/code&amp;gt; macro to the Preprocessor Macros section of your project’s build settings.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.17.40.png]]&lt;br /&gt;
&lt;br /&gt;
At this point your project should build and run without error – the libartnet source code will be compiled and linked automatically.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production – actually it is pretty bad because it abuses the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; method instead of creating its own controller. However, it reduces complexity and simply shows the basic approach to using libartnet from within Objective-C code.&lt;br /&gt;
&lt;br /&gt;
The code creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine with GNU/Linux (Ubuntu 10.04) as operating system.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on another Mac or even the same machine you are running XCode on, using the [https://trac.macports.org/browser/trunk/dports/net/ola/Portfile OLA MacPorts port] and/or following the steps of the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA On Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
If you should get the following error try to fix it with one of [http://groups.google.com/group/open-lighting/msg/72060f6327d30df6 two available solutions]:&lt;br /&gt;
&lt;br /&gt;
 Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&amp;amp;)': &lt;br /&gt;
 Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor &lt;br /&gt;
&lt;br /&gt;
A similar error can occur when building the ola-examples package:&lt;br /&gt;
&lt;br /&gt;
 g++ -DHAVE_CONFIG_H -I. -I..    -Wall -Werror -I/usr/local/include/ &lt;br /&gt;
 libola   -g -O2 -MT ola-dmxconsole.o -MD -MP -MF .deps/ola- &lt;br /&gt;
 dmxconsole.Tpo -c -o ola-dmxconsole.o ola-dmxconsole.cpp &lt;br /&gt;
 cc1plus: warnings being treated as errors &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void mask()’: &lt;br /&gt;
 ola-dmxconsole.cpp:150: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:156: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void values()’: &lt;br /&gt;
 ola-dmxconsole.cpp:184: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:188: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:190: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:194: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:197: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:202: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:205: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:208: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:215: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:225: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:226: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:227: error: value computed is not used &lt;br /&gt;
 make[2]: *** [ola-dmxconsole.o] Error 1 &lt;br /&gt;
&lt;br /&gt;
You should be able to prevent this by editing &amp;lt;code&amp;gt;./src/Makefile.am&amp;lt;/code&amp;gt;, removing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; and then running &amp;lt;code&amp;gt;autoreconfig &amp;amp;&amp;amp; ./configure&amp;lt;/code&amp;gt; again.&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/c6d86d03dd74ed5b&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patching An Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then patch the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3878</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3878"/>
				<updated>2011-07-01T19:38:01Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Completely rewrote sections about configuring and adding libartnet to Xcode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
Updated by Tobi Schäfer, July 2011.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libartnet 1.1.0, Mac OS X 10.6.8, Xcode 4.0.2, iPad w/ iOS 4.3&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in the Xcode Simulator ==&lt;br /&gt;
&lt;br /&gt;
This is documentation of my first steps using libartnet and Xcode. I am still a complete newbie with all these things. However, I suceeded in running a simple program on the iPad sending and receiving Art-Net data – not without help from the excellent people of the open-ligthing ML&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/browse_thread/thread/e3f322613b710d9d/661d7e4babba4bf1&amp;lt;/ref&amp;gt;. I tried to sum up here my experiences so far, although I am sure there are better ways to achieve the same result.&lt;br /&gt;
&lt;br /&gt;
=== Preparing libartnet ===&lt;br /&gt;
&lt;br /&gt;
First, we download the libartnet sources and prepare them for inclusion in Xcode. We need to generate a file called &amp;lt;code&amp;gt;config.h&amp;lt;/code&amp;gt; to make things work.&lt;br /&gt;
&lt;br /&gt;
==== Using Tarball ====&lt;br /&gt;
&lt;br /&gt;
 $ curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ tar -xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 $ cd libartnet-1.1.0/&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
==== Using Git ====&lt;br /&gt;
&lt;br /&gt;
 $ git clone http://git.opendmx.net/libartnet&lt;br /&gt;
 $ cd libartnet/&lt;br /&gt;
 $ autoreconf -i&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ cp config.h artnet/&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet to Xcode ===&lt;br /&gt;
&lt;br /&gt;
Create a directory called &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; in the Xcode project directory – in the file system or Finder, not in the Xcode application; the latter will be done in the next step – and copy the source files from the &amp;lt;code&amp;gt;artnet&amp;lt;/code&amp;gt; directory of the previous step into the new &amp;lt;code&amp;gt;Vendor/artnet&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/test/Vendor/artnet&lt;br /&gt;
 $ cp artnet/*.[ch] ~/test/Vendor/artnet&lt;br /&gt;
 $ ls -l ~/test/Vendor/artnet&lt;br /&gt;
 total 352&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  44082 Jul  1 20:52 artnet.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  11580 Jul  1 20:52 artnet.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1987 Jul  1 20:52 common.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   4831 Jul  1 20:52 config.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1754 Jul  1 20:52 misc.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1610 Jul  1 20:52 misc.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  18941 Jul  1 20:52 network.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   8495 Jul  1 20:52 packets.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  13397 Jul  1 20:52 private.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  27731 Jul  1 20:52 receive.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   2806 Jul  1 20:52 tod.c&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi   1307 Jul  1 20:52 tod.h&lt;br /&gt;
 -rw-r--r--  1 tobi  tobi  12364 Jul  1 20:52 transmit.c&lt;br /&gt;
&lt;br /&gt;
Now drag&amp;amp;drop the Vendor folder to the top level of the Xcode project and choose the following options for adding files.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.45.17.png‎]]&lt;br /&gt;
&lt;br /&gt;
The structure of your project should look similar to this:&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_20.57.03.png‎]]&lt;br /&gt;
&lt;br /&gt;
Add the path to the &amp;lt;code&amp;gt;Vendor&amp;lt;/code&amp;gt; directory to the Header Search Paths in the Search Paths section of your build target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.10.22.png‎]]&lt;br /&gt;
&lt;br /&gt;
Finally. add the &amp;lt;code&amp;gt;HAVE_CONFIG_H&amp;lt;/code&amp;gt; macro to the Preprocessor Macros section of your project’s build settings.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen_shot_2011-07-01_at_21.17.40.png]]&lt;br /&gt;
&lt;br /&gt;
At this point your project should build and run without error – the libartnet source code will be compiled and linked automatically.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production – actually it is pretty bad because it abuses the &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; method instead of creating its own controller. However, it reduces complexity and simply shows the basic approach to using libartnet from within Objective-C code.&lt;br /&gt;
&lt;br /&gt;
The code creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine with GNU/Linux (Ubuntu 10.04) as operating system.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on another Mac or even the same machine you are running XCode on, using the [https://trac.macports.org/browser/trunk/dports/net/ola/Portfile OLA MacPorts port] and/or following the steps of the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA On Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
If you should get the following error try to fix it with one of [http://groups.google.com/group/open-lighting/msg/72060f6327d30df6 two available solutions]:&lt;br /&gt;
&lt;br /&gt;
 Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&amp;amp;)': &lt;br /&gt;
 Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor &lt;br /&gt;
&lt;br /&gt;
A similar error can occur when building the ola-examples package:&lt;br /&gt;
&lt;br /&gt;
 g++ -DHAVE_CONFIG_H -I. -I..    -Wall -Werror -I/usr/local/include/ &lt;br /&gt;
 libola   -g -O2 -MT ola-dmxconsole.o -MD -MP -MF .deps/ola- &lt;br /&gt;
 dmxconsole.Tpo -c -o ola-dmxconsole.o ola-dmxconsole.cpp &lt;br /&gt;
 cc1plus: warnings being treated as errors &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void mask()’: &lt;br /&gt;
 ola-dmxconsole.cpp:150: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:156: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void values()’: &lt;br /&gt;
 ola-dmxconsole.cpp:184: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:188: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:190: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:194: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:197: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:202: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:205: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:208: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:215: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:225: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:226: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:227: error: value computed is not used &lt;br /&gt;
 make[2]: *** [ola-dmxconsole.o] Error 1 &lt;br /&gt;
&lt;br /&gt;
You should be able to prevent this by editing &amp;lt;code&amp;gt;./src/Makefile.am&amp;lt;/code&amp;gt;, removing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; and then running &amp;lt;code&amp;gt;autoreconfig &amp;amp;&amp;amp; ./configure&amp;lt;/code&amp;gt; again.&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/c6d86d03dd74ed5b&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patching An Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then patch the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2010-09-16_at_12.12.59.png&amp;diff=3877</id>
		<title>File:Screen shot 2010-09-16 at 12.12.59.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2010-09-16_at_12.12.59.png&amp;diff=3877"/>
				<updated>2011-07-01T19:34:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: uploaded a new version of &amp;quot;File:Screen shot 2010-09-16 at 12.12.59.png&amp;quot;:&amp;amp;#32;The device selector drop down menu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Xcode Overview drop-down menu&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_21.17.40.png&amp;diff=3876</id>
		<title>File:Screen shot 2011-07-01 at 21.17.40.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_21.17.40.png&amp;diff=3876"/>
				<updated>2011-07-01T19:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Adding the HAVE_CONFIG_H macro to the Preprocessor Macros&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adding the HAVE_CONFIG_H macro to the Preprocessor Macros&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_21.10.22.png&amp;diff=3875</id>
		<title>File:Screen shot 2011-07-01 at 21.10.22.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_21.10.22.png&amp;diff=3875"/>
				<updated>2011-07-01T19:12:41Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Adding the Vendor directory to the Header Search Path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Adding the Vendor directory to the Header Search Path&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_20.57.03.png&amp;diff=3874</id>
		<title>File:Screen shot 2011-07-01 at 20.57.03.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_20.57.03.png&amp;diff=3874"/>
				<updated>2011-07-01T19:00:53Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: The project structure after adding the Artnet source files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The project structure after adding the Artnet source files&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_20.45.17.png&amp;diff=3873</id>
		<title>File:Screen shot 2011-07-01 at 20.45.17.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2011-07-01_at_20.45.17.png&amp;diff=3873"/>
				<updated>2011-07-01T18:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: The dialog for choosing options for adding files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The dialog for choosing options for adding files&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Vendor-directory.png&amp;diff=3872</id>
		<title>File:Vendor-directory.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Vendor-directory.png&amp;diff=3872"/>
				<updated>2011-07-01T18:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Screenshot of the Finder window showing the Vendor directory and the artnet sources.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of the Finder window showing the Vendor directory and the artnet sources.&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3853</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3853"/>
				<updated>2011-06-23T11:26:34Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added note about Porfile being committed to MacPorts collection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
''Update: [https://trac.macports.org/browser/trunk/dports/net/ola/Portfile Portfile was committed to MacPorts collection] on 21 June 2011. The following information is outdated and should only remain for historical reason.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and &lt;br /&gt;
## the compiler runs into a problem with multiple architectures.&lt;br /&gt;
## Error message: g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-delete  &amp;quot;-arch x86_64&amp;quot;&lt;br /&gt;
#   configure.ldflags-delete   &amp;quot;-arch x86_64&amp;quot;&lt;br /&gt;
#   configure.cppflags-append  &amp;quot;-arch i386&amp;quot;&lt;br /&gt;
#   configure.ldflags-append   &amp;quot;-arch i386&amp;quot;&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
variant http description {Build with embedded web server} {&lt;br /&gt;
   depends_lib-append port:libmicrohttpd&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default_variants  +http&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   use_autoreconf          yes&lt;br /&gt;
   autoreconf.args         -i&lt;br /&gt;
   configure.args-append   --disable-http&lt;br /&gt;
   if {[variant_isset http]} {&lt;br /&gt;
      configure.args-delete   --disable-http&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3852</id>
		<title>Portfile for OLA Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3852"/>
				<updated>2011-06-23T11:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Oops, this is OLA Examples, corrected update note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
''Update: [https://trac.macports.org/browser/trunk/dports/net/ola-examples/Portfile Portfile was committed] to MacPorts collection on 21 June 2011. The following information is outdated and should remain only for historical reason.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola-examples&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       Tools for OLA, the open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      733ed8d7ecd7950e834839f2bfb5dab7 \&lt;br /&gt;
                  sha1     3da39be1f407ffc9c3a740967b53dd419d243473 \&lt;br /&gt;
                  rmd160   ae40c16a1e441c2e718be5d37a7045c886d1b57e&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:ola&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3851</id>
		<title>Portfile for OLA Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3851"/>
				<updated>2011-06-23T11:23:48Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added note about Porfile being committed to MacPorts collection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
''Update: [https://trac.macports.org/browser/trunk/dports/net/ola/Portfile Portfile was committed] to MacPorts collection on 21 June 2011. The following information is outdated and should remain only for historical reason.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola-examples&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       Tools for OLA, the open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      733ed8d7ecd7950e834839f2bfb5dab7 \&lt;br /&gt;
                  sha1     3da39be1f407ffc9c3a740967b53dd419d243473 \&lt;br /&gt;
                  rmd160   ae40c16a1e441c2e718be5d37a7045c886d1b57e&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:ola&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3843</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3843"/>
				<updated>2011-06-21T12:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Removed dysfunctional variant_isset checks and settings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and &lt;br /&gt;
## the compiler runs into a problem with multiple architectures.&lt;br /&gt;
## Error message: g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-delete  &amp;quot;-arch x86_64&amp;quot;&lt;br /&gt;
#   configure.ldflags-delete   &amp;quot;-arch x86_64&amp;quot;&lt;br /&gt;
#   configure.cppflags-append  &amp;quot;-arch i386&amp;quot;&lt;br /&gt;
#   configure.ldflags-append   &amp;quot;-arch i386&amp;quot;&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
variant http description {Build with embedded web server} {&lt;br /&gt;
   depends_lib-append port:libmicrohttpd&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default_variants  +http&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   use_autoreconf          yes&lt;br /&gt;
   autoreconf.args         -i&lt;br /&gt;
   configure.args-append   --disable-http&lt;br /&gt;
   if {[variant_isset http]} {&lt;br /&gt;
      configure.args-delete   --disable-http&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3842</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3842"/>
				<updated>2011-06-21T12:36:52Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Removed obsolete configure settings in comments; added checks to really disable http if desired (variant)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and the compiler runs into a problem with &lt;br /&gt;
## multiple architectures (tried also with preceding -delete).&lt;br /&gt;
## Error message: g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-append  -arch i386&lt;br /&gt;
#   configure.ldflags-append   -arch i386&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
variant http description {Build with embedded web server} {&lt;br /&gt;
   depends_lib-append port:libmicrohttpd&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default_variants  +http&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   use_autoreconf          yes&lt;br /&gt;
   autoreconf.args         -i&lt;br /&gt;
   configure.args-append   --disable-http&lt;br /&gt;
   if {[variant_isset http]} {&lt;br /&gt;
      configure.args-delete   --disable-http&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build {&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
      configure.cppflags-append  -arch i386&lt;br /&gt;
      configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
      configure.cppflags-append  -arch i386&lt;br /&gt;
      configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3841</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3841"/>
				<updated>2011-06-21T11:53:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added http variant for compiling with libmicrohttpd support and made it the default variant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and the compiler runs into a problem with &lt;br /&gt;
## multiple architectures (tried also with preceding -delete).&lt;br /&gt;
## Error message: g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-append  -arch i386&lt;br /&gt;
#   configure.ldflags-append   -arch i386&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
variant http description {Build with embedded web server} {&lt;br /&gt;
   depends_lib-append port:libmicrohttpd&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default_variants +http&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   ## Are these correct (/usr/local?) and necessary?&lt;br /&gt;
   #configure.pkg_config_path    /usr/local/lib/pkgconfig&lt;br /&gt;
   #configure.cppflags           &amp;quot;-I/opt/local/include/&amp;quot;&lt;br /&gt;
   #configure.ldflags            &amp;quot;-L/opt/local/lib/&amp;quot;&lt;br /&gt;
   use_autoreconf    yes&lt;br /&gt;
   autoreconf.args   -i&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build {&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
   configure.cppflags-append  -arch i386&lt;br /&gt;
   configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
   configure.cppflags-append  -arch i386&lt;br /&gt;
   configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Open_Lighting_Projects_List&amp;diff=3840</id>
		<title>Open Lighting Projects List</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Open_Lighting_Projects_List&amp;diff=3840"/>
				<updated>2011-06-21T11:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of projects where software from the Open Lighting project has been used. If you know of any more please add them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[libartnet]]&lt;br /&gt;
&lt;br /&gt;
* http://www.mediaarchitecture.org/boxleds/&lt;br /&gt;
* D::Light http://www.nicole-banana.com&lt;br /&gt;
&lt;br /&gt;
[[OLA]]&lt;br /&gt;
&lt;br /&gt;
* Minoru Yasui Building, Denver, http://adamfrank.com/sunlight/sunlight.htm&lt;br /&gt;
* San Jose International Airport, http://01sj.org/2010/venues/sjc-airport/&lt;br /&gt;
* iJam from Boris Petrovsky, http://www.petrovsky.de/URBANES%20UNTERHOLZ%20MEETS%20YOU&amp;amp;ME-ISMS-41&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3839</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3839"/>
				<updated>2011-06-21T09:23:01Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Removed my reference from maintainers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and the compiler runs into a problem with &lt;br /&gt;
## multiple architectures (tried also with preceding -delete).&lt;br /&gt;
## Error message: g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-append  -arch i386&lt;br /&gt;
#   configure.ldflags-append   -arch i386&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
## Still missing: variants for the microhttpd dependency, with and without support for SSL&lt;br /&gt;
#variant http description {Build with embedded web server} {&lt;br /&gt;
#   ...?&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
#variant ssl description {Build with embedded web server and SSL support} {&lt;br /&gt;
#   depends_lib-append port:libgcrypt&lt;br /&gt;
#   ...?&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   ## Are these correct (/usr/local?) and necessary?&lt;br /&gt;
   #configure.pkg_config_path    /usr/local/lib/pkgconfig&lt;br /&gt;
   #configure.cppflags           &amp;quot;-I/opt/local/include/&amp;quot;&lt;br /&gt;
   #configure.ldflags            &amp;quot;-L/opt/local/lib/&amp;quot;&lt;br /&gt;
   use_autoreconf    yes&lt;br /&gt;
   autoreconf.args   -i&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build {&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
   configure.cppflags-append  -arch i386&lt;br /&gt;
   configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
   configure.cppflags-append  -arch i386&lt;br /&gt;
   configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3838</id>
		<title>Portfile for OLA Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3838"/>
				<updated>2011-06-21T09:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Removed my reference from maintainers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola-examples&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52&lt;br /&gt;
&lt;br /&gt;
description       Tools for OLA, the open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      733ed8d7ecd7950e834839f2bfb5dab7 \&lt;br /&gt;
                  sha1     3da39be1f407ffc9c3a740967b53dd419d243473 \&lt;br /&gt;
                  rmd160   ae40c16a1e441c2e718be5d37a7045c886d1b57e&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:ola&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3837</id>
		<title>Portfile for OLA Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA_Examples&amp;diff=3837"/>
				<updated>2011-06-21T09:19:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Created page with &amp;quot;Written by Tobi Schäfer, June 2011.  &amp;lt;pre&amp;gt;# $Id$  PortSystem        1.0  name              ola-examples version           0.8.9 categories        net comms platforms         dar…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola-examples&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52 \&lt;br /&gt;
                  p3k.org:interface&lt;br /&gt;
&lt;br /&gt;
description       Tools for OLA, the open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      733ed8d7ecd7950e834839f2bfb5dab7 \&lt;br /&gt;
                  sha1     3da39be1f407ffc9c3a740967b53dd419d243473 \&lt;br /&gt;
                  rmd160   ae40c16a1e441c2e718be5d37a7045c886d1b57e&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:ola&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3836</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3836"/>
				<updated>2011-06-21T08:58:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Fixed flags for -arch i386 and added compiler error message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52 \&lt;br /&gt;
                  p3k.org:interface&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and the compiler runs into a problem with &lt;br /&gt;
## multiple architectures (tried also with preceding -delete).&lt;br /&gt;
## Error message: g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-append  -arch i386&lt;br /&gt;
#   configure.ldflags-append   -arch i386&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
## Still missing: variants for the microhttpd dependency, with and without support for SSL&lt;br /&gt;
#variant http description {Build with embedded web server} {&lt;br /&gt;
#   ...?&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
#variant ssl description {Build with embedded web server and SSL support} {&lt;br /&gt;
#   depends_lib-append port:libgcrypt&lt;br /&gt;
#   ...?&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   ## Are these correct (/usr/local?) and necessary?&lt;br /&gt;
   #configure.pkg_config_path    /usr/local/lib/pkgconfig&lt;br /&gt;
   #configure.cppflags           &amp;quot;-I/opt/local/include/&amp;quot;&lt;br /&gt;
   #configure.ldflags            &amp;quot;-L/opt/local/lib/&amp;quot;&lt;br /&gt;
   use_autoreconf    yes&lt;br /&gt;
   autoreconf.args   -i&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build {&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
   configure.cppflags-append  -arch i386&lt;br /&gt;
   configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
   configure.cppflags-append  -arch i386&lt;br /&gt;
   configure.ldflags-append   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3835</id>
		<title>Portfile for OLA</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Portfile_for_OLA&amp;diff=3835"/>
				<updated>2011-06-21T08:49:39Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Created page with &amp;quot;Written by Tobi Schäfer, June 2011.  &amp;lt;pre&amp;gt;# $Id$  PortSystem        1.0  name              ola                   ## Latest version (0.8.9-1) currently not usable because of inco…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, June 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# $Id$&lt;br /&gt;
&lt;br /&gt;
PortSystem        1.0&lt;br /&gt;
&lt;br /&gt;
name              ola&lt;br /&gt;
                  ## Latest version (0.8.9-1) currently not usable because of inconsistency in package/folder naming&lt;br /&gt;
version           0.8.9&lt;br /&gt;
categories        net comms&lt;br /&gt;
platforms         darwin&lt;br /&gt;
license           LGPL&lt;br /&gt;
maintainers       gmail.com:nomis52 \&lt;br /&gt;
                  p3k.org:interface&lt;br /&gt;
&lt;br /&gt;
description       An open framework for DMX lighting control&lt;br /&gt;
long_description  The Open Lighting Architecture (OLA) provides a plugin framework for distributing DMX512 control signals on Mac and Linux. It provides C++ and Python libraries which abstract away the underlying DMX over IP protocol or DMX interface.&lt;br /&gt;
homepage          http://opendmx.net/index.php/OLA&lt;br /&gt;
&lt;br /&gt;
master_sites      http://linux-lighting.googlecode.com/files/&lt;br /&gt;
&lt;br /&gt;
checksums         md5      b67beea9e39bee4a33bf6f0eafabf17d \&lt;br /&gt;
                  sha1     abe2e876261f272223ee1eab902319615acac744 \&lt;br /&gt;
                  rmd160   95e926cbd376b0dfd625289f6af37455dd103f99&lt;br /&gt;
&lt;br /&gt;
depends_lib       port:pkgconfig \&lt;br /&gt;
                  port:cppunit \&lt;br /&gt;
                  port:unittest-cpp \&lt;br /&gt;
                  port:protobuf-cpp&lt;br /&gt;
&lt;br /&gt;
## This currently does not work because the -arch flag is set twice and the compiler runs into a problem with multiple architectures&lt;br /&gt;
#variant i386 description {Build for 32 bit Intel architecture} {&lt;br /&gt;
#   configure.cppflags-replace  -arch i386&lt;br /&gt;
#   configure.ldflags-repalce   -arch i386&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
## Still missing: variants for the microhttpd dependency, with and without support for SSL&lt;br /&gt;
#variant http description {Build with embedded web server} {&lt;br /&gt;
#   ...?&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
#variant ssl description {Build with embedded web server and SSL support} {&lt;br /&gt;
#   depends_lib-append port:libgcrypt&lt;br /&gt;
#   ...?&lt;br /&gt;
#}&lt;br /&gt;
&lt;br /&gt;
pre-configure {&lt;br /&gt;
   ## Are these correct (/usr/local?) and necessary?&lt;br /&gt;
   #configure.pkg_config_path    /usr/local/lib/pkgconfig&lt;br /&gt;
   #configure.cppflags           &amp;quot;-I/opt/local/include/&amp;quot;&lt;br /&gt;
   #configure.ldflags            &amp;quot;-L/opt/local/lib/&amp;quot;&lt;br /&gt;
   use_autoreconf    yes&lt;br /&gt;
   autoreconf.args   -i&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
build {&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
      configure.cppflags-replace  -arch i386&lt;br /&gt;
      configure.ldflags-repalce   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
test {&lt;br /&gt;
   test.run       yes&lt;br /&gt;
   test.target    check&lt;br /&gt;
   if {[variant_isset i386]} {&lt;br /&gt;
      configure.cppflags-replace  -arch i386&lt;br /&gt;
      configure.ldflags-repalce   -arch i386&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3463</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3463"/>
				<updated>2010-09-16T12:41:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Added short introduction, fixed some typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libartnet 1.1.0, Mac OS X 10.6.4, Xcode 3.2.3, iPad w/ iOS 3.2&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in the Xcode Simulator ==&lt;br /&gt;
&lt;br /&gt;
This is documentation of my first steps using Art-Net, libartnet and Xcode. I am still a complete newbie with all these things. However, I suceeded in running a simple program on the iPad sending and receiving Art-Net data – not without help from the excellent people of the open-ligthing ML&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/browse_thread/thread/e3f322613b710d9d/661d7e4babba4bf1&amp;lt;/ref&amp;gt;. I tried to sum up here my experiences so far, although I am sure there are better ways to achieve the same result.&lt;br /&gt;
&lt;br /&gt;
=== Installing libartnet ===&lt;br /&gt;
&lt;br /&gt;
 curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 tar xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 cd libartnet-1.1.0&lt;br /&gt;
 ./configure CC=&amp;quot;gcc -arch i386&amp;quot;&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet.dylib to XCode ===&lt;br /&gt;
&lt;br /&gt;
Simply drag&amp;amp;drop the file &amp;lt;code&amp;gt;libartnet.1.dylib&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;/usr/local/lib&amp;lt;/code&amp;gt; directory to the Frameworks group in Xcode.&lt;br /&gt;
&lt;br /&gt;
''Hint:'' you can easily open hidden directories in a new window from within Terminal.app:&lt;br /&gt;
&lt;br /&gt;
 open /usr/local/lib&lt;br /&gt;
&lt;br /&gt;
Add the path &amp;lt;code&amp;gt;/usr/local/include&amp;lt;/code&amp;gt; to the Header Search Paths in the Search Paths section of your project or target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 11.59.40.png]]&lt;br /&gt;
&lt;br /&gt;
== Using libartnet On The iPad ==&lt;br /&gt;
&lt;br /&gt;
Getting libartnet to work on the iPad is a little bit trickier and involves cross-compiling the library for the iPad’s processor architecture.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is help on the Intertubes.&lt;br /&gt;
&lt;br /&gt;
=== Cross-compiling libartnet For The iPad ===&lt;br /&gt;
&lt;br /&gt;
First of all, it is safer to remove already installed libartnet files if you should have built the dynamic library in a previous step. Otherwise you could follow the steps in [http://developer.apple.com/library/mac/#qa/qa2006/qa1393.html Apple’s Technical QA1393 document].&lt;br /&gt;
&lt;br /&gt;
 rm -rf /usr/local/lib/libartnet.*&lt;br /&gt;
&lt;br /&gt;
Then clean your libartnet build directory:&lt;br /&gt;
&lt;br /&gt;
 make distclean&lt;br /&gt;
&lt;br /&gt;
I found a [http://stackoverflow.com/questions/1602182/cross-compile-autotools-based-libraries-for-official-iphone-sdk helper script] which sets all necessary cross-compiling flag&lt;br /&gt;
&lt;br /&gt;
Copy it to your Mac as &amp;lt;code&amp;gt;build.sh&amp;lt;/code&amp;gt;. You probably need to modify the SDK version to your needs:&lt;br /&gt;
&lt;br /&gt;
 export SDKVER=&amp;quot;3.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you should add the following line before the &amp;lt;code&amp;gt;./configure ...&amp;lt;/code&amp;gt; command to prevent another error from happening:&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/28e002886ba95ced&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 export ac_cv_func_malloc_0_nonnull=yes&lt;br /&gt;
&lt;br /&gt;
Make the file executable and then run the script:&lt;br /&gt;
&lt;br /&gt;
 chmod a+x build.sh&lt;br /&gt;
 ./build.sh&lt;br /&gt;
&lt;br /&gt;
If it compiles it should install the file &amp;lt;code&amp;gt;libartnet.a&amp;lt;/code&amp;gt; into the directory &amp;lt;code&amp;gt;/opt/iphone-3.2/lib&amp;lt;/code&amp;gt; as well as the header files into &amp;lt;/code&amp;gt;/opt/iphone/include&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet.a To Xcode ===&lt;br /&gt;
&lt;br /&gt;
As with &amp;lt;code&amp;gt;libartnet.dylib&amp;lt;/code&amp;gt; drag&amp;amp;drop the &amp;lt;code&amp;gt;libartnet.a&amp;lt;/code&amp;gt; file to the Frameworks group in Xcode.&lt;br /&gt;
&lt;br /&gt;
Similarly, add the path &amp;lt;code&amp;gt;/usr/iphone-3.2/include&amp;lt;/code&amp;gt; to the Header Search Paths in the Search Paths section of your project or target and tick the recursive checkbox.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production. It creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_set_dmx_handler(artnetNode, dmxHandler, NULL) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return retVal;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine with GNU/Linux (Ubuntu 10.04) as operating system.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on another Mac or even the same machine you are running XCode on, using the available [http://code.google.com/p/linux-lighting/downloads/detail?name=OLA%200.8.1.dmg Installer Disk Image] and/or following the steps of the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA On Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
If you should get the following error try to fix it with one of [http://groups.google.com/group/open-lighting/msg/72060f6327d30df6 two available solutions]:&lt;br /&gt;
&lt;br /&gt;
 Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&amp;amp;)': &lt;br /&gt;
 Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor &lt;br /&gt;
&lt;br /&gt;
A similar error can occur when building the ola-examples package:&lt;br /&gt;
&lt;br /&gt;
 g++ -DHAVE_CONFIG_H -I. -I..    -Wall -Werror -I/usr/local/include/ &lt;br /&gt;
 libola   -g -O2 -MT ola-dmxconsole.o -MD -MP -MF .deps/ola- &lt;br /&gt;
 dmxconsole.Tpo -c -o ola-dmxconsole.o ola-dmxconsole.cpp &lt;br /&gt;
 cc1plus: warnings being treated as errors &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void mask()’: &lt;br /&gt;
 ola-dmxconsole.cpp:150: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:156: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void values()’: &lt;br /&gt;
 ola-dmxconsole.cpp:184: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:188: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:190: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:194: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:197: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:202: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:205: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:208: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:215: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:225: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:226: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:227: error: value computed is not used &lt;br /&gt;
 make[2]: *** [ola-dmxconsole.o] Error 1 &lt;br /&gt;
&lt;br /&gt;
You should be able to prevent this by editing &amp;lt;code&amp;gt;./src/Makefile.am&amp;lt;/code&amp;gt;, removing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; and then running &amp;lt;code&amp;gt;autoreconfig &amp;amp;&amp;amp; ./configure&amp;lt;/code&amp;gt; again.&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/c6d86d03dd74ed5b&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patching An Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then patch the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3462</id>
		<title>IPad ArtNet Node</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=IPad_ArtNet_Node&amp;diff=3462"/>
				<updated>2010-09-16T11:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Initial draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Written by Tobi Schäfer, September 2010.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: libarnet 1.1.0, Mac OS X 10.6.4, Xcode 3.2.3, iPad w/ iOS 3.2&lt;br /&gt;
&lt;br /&gt;
== Using libartnet in the Xcode Simulator ==&lt;br /&gt;
&lt;br /&gt;
=== Installing libartnet ===&lt;br /&gt;
&lt;br /&gt;
 curl -O http://code.google.com/p/linux-lighting/downloads/detail?name=libartnet-1.1.0.tar.gz&lt;br /&gt;
 tar xzf libartnet-1.1.0.tar.gz&lt;br /&gt;
 cd libartnet-1.1.0&lt;br /&gt;
 ./configure CC=&amp;quot;gcc -arch i386&amp;quot;&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet.dylib to XCode ===&lt;br /&gt;
&lt;br /&gt;
Simply drag&amp;amp;drop the file &amp;lt;code&amp;gt;libartnet.1.dylib&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;/usr/local/lib&amp;lt;/code&amp;gt; directory to the Frameworks group in Xcode.&lt;br /&gt;
&lt;br /&gt;
''Hint:'' you can easily open hidden directories in a new window from within Terminal.app:&lt;br /&gt;
&lt;br /&gt;
 open /usr/local/lib&lt;br /&gt;
&lt;br /&gt;
Add the path &amp;lt;code&amp;gt;/usr/local/include&amp;lt;/code&amp;gt; to the Header Search Paths in the Search Paths section of your project or target and tick the recursive checkbox.&amp;lt;ref&amp;gt;http://iphone.olipion.com/cross-compilation/include-library-in-xcode-project&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 11.59.40.png]]&lt;br /&gt;
&lt;br /&gt;
== Using libartnet On The iPad ==&lt;br /&gt;
&lt;br /&gt;
Getting libartnet to work on the iPad is a little bit trickier and involves cross-compiling the library for the iPad’s processor architecture.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is help on the Intertubes.&lt;br /&gt;
&lt;br /&gt;
=== Cross-compiling libartnet For The iPad ===&lt;br /&gt;
&lt;br /&gt;
First of all, it is safer to remove already installed libartnet files if you should have built the dynamic library in a previous step. Otherwise you could follow the steps in [http://developer.apple.com/library/mac/#qa/qa2006/qa1393.html Apple’s Technical QA1393 document].&lt;br /&gt;
&lt;br /&gt;
 rm -rf /usr/local/lib/libartnet.*&lt;br /&gt;
&lt;br /&gt;
Then clean your libartnet build directory:&lt;br /&gt;
&lt;br /&gt;
 make distclean&lt;br /&gt;
&lt;br /&gt;
I found a [http://stackoverflow.com/questions/1602182/cross-compile-autotools-based-libraries-for-official-iphone-sdk helper script] which sets all necessary cross-compiling flag&lt;br /&gt;
&lt;br /&gt;
Copy it to your Mac as &amp;lt;code&amp;gt;build.sh&amp;lt;/code&amp;gt;. You probably need to modify the SDK version to your needs:&lt;br /&gt;
&lt;br /&gt;
 export SDKVER=&amp;quot;3.2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you should add the following line before the &amp;lt;code&amp;gt;./configure ...&amp;lt;/code&amp;gt; command to prevent another error from happening:&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/28e002886ba95ced&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 export ac_cv_func_malloc_0_nonnull=yes&lt;br /&gt;
&lt;br /&gt;
Make the file executable and then run the script:&lt;br /&gt;
&lt;br /&gt;
 chmod a+x build.sh&lt;br /&gt;
 ./build.sh&lt;br /&gt;
&lt;br /&gt;
If it compiles it should install the file &amp;lt;code&amp;gt;libartnet.a&amp;lt;/code&amp;gt; into the directory &amp;lt;code&amp;gt;/opt/iphone-3.2/lib&amp;lt;/code&amp;gt; as well as the header files into &amp;lt;/code&amp;gt;/opt/iphone/include&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Adding libartnet.a To Xcode ===&lt;br /&gt;
&lt;br /&gt;
As with &amp;lt;code&amp;gt;libartnet.dylib&amp;lt;/code&amp;gt; drag&amp;amp;drop the &amp;lt;code&amp;gt;libartnet.a&amp;lt;/code&amp;gt; file to the Frameworks group in Xcode.&lt;br /&gt;
&lt;br /&gt;
Similarly, add the path &amp;lt;code&amp;gt;/usr/iphone-3.2/include&amp;lt;/code&amp;gt; to the Header Search Paths in the Search Paths section of your project or target and tick the recursive checkbox.&lt;br /&gt;
&lt;br /&gt;
== Example Code ==&lt;br /&gt;
&lt;br /&gt;
You now should be ready to build and run the following code in the Simulator as well as on the iPad. Thus, do not forget to select the corresponding setting from the Overview drop-down menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Screen shot 2010-09-16 at 12.12.59.png]]&lt;br /&gt;
&lt;br /&gt;
The code is just a proof of concept and not ready for production. It creates and sets up an Art-Net node, defines a handler method for incoming data and then creates an infinite loop sending Art-Net polls and checking for Art-Net input. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;artnet.h&amp;quot;&lt;br /&gt;
 #import &amp;quot;packets.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int artnetReceiver(artnet_node node, void *pp, void *d) {&lt;br /&gt;
        NSLog(@&amp;quot;Receiving Art-Net data!&amp;quot;);&lt;br /&gt;
        artnet_packet pack = (artnet_packet) pp;&lt;br /&gt;
        printf(&amp;quot;Received packet sequence %d\n&amp;quot;, pack-&amp;gt;data.admx.sequence);&lt;br /&gt;
        printf(&amp;quot;Received packet type %d\n&amp;quot;, pack-&amp;gt;type);&lt;br /&gt;
        printf(&amp;quot;Received packet data %s\n&amp;quot;, pack-&amp;gt;data.admx.data);&lt;br /&gt;
        return 0;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
        &lt;br /&gt;
        char *ip_addr = NULL;&lt;br /&gt;
        &lt;br /&gt;
        uint8_t subnet_addr = 0; &lt;br /&gt;
        uint8_t port_addr = 1;&lt;br /&gt;
        &lt;br /&gt;
        artnet_node *artnetNode = artnet_new(ip_addr, 1);&lt;br /&gt;
        &lt;br /&gt;
        if (!artnetNode) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        artnet_set_long_name(artnetNode, &amp;quot;Art-Net Test&amp;quot;);&lt;br /&gt;
        artnet_set_short_name(artnetNode, &amp;quot;ANT&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // set the upper 4 bits of the universe address &lt;br /&gt;
        artnet_set_subnet_addr(artnetNode, subnet_addr) ;&lt;br /&gt;
        &lt;br /&gt;
        // enable port 0        &lt;br /&gt;
        artnet_set_port_type(artnetNode, 0, ARTNET_ENABLE_OUTPUT, ARTNET_PORT_DMX) ; &lt;br /&gt;
 &lt;br /&gt;
        // bind port 0 to universe 1 &lt;br /&gt;
        artnet_set_port_addr(artnetNode, 0, ARTNET_OUTPUT_PORT, port_addr); &lt;br /&gt;
        &lt;br /&gt;
        artnet_dump_config(artnetNode);&lt;br /&gt;
 &lt;br /&gt;
        artnet_set_handler(artnetNode, ARTNET_RECV_HANDLER, artnetReceiver, NULL); &lt;br /&gt;
 &lt;br /&gt;
        if (artnet_set_dmx_handler(artnetNode, dmxHandler, NULL) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        if (artnet_start(artnetNode) != 0) {&lt;br /&gt;
                printf(&amp;quot;Error: %s\n&amp;quot;, artnet_strerror());&lt;br /&gt;
                exit(-1);&lt;br /&gt;
        }       &lt;br /&gt;
        &lt;br /&gt;
        while (YES) {&lt;br /&gt;
                artnet_send_poll(artnetNode, NULL, ARTNET_TTM_DEFAULT);&lt;br /&gt;
                //printf(&amp;quot;arnet_get_sd() =&amp;gt; %i\n&amp;quot;, artnet_get_sd(artnetNode));&lt;br /&gt;
                printf(&amp;quot;artnet_read() =&amp;gt; %i\n&amp;quot;, artnet_read(artnetNode, 1));&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        // Use this to deallocate memory&lt;br /&gt;
        //artnet_stop(artnetNode);&lt;br /&gt;
        //artnet_destroy(artnetNode);&lt;br /&gt;
    &lt;br /&gt;
    return retVal;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Testing Data Transmission ==&lt;br /&gt;
&lt;br /&gt;
If your program builds and runs without errors you now can test whether Art-Net data is sent and received. Wireshark&amp;lt;ref&amp;gt;http://www.wireshark.org&amp;lt;/ref&amp;gt; is a handy tool for monitoring your network.&lt;br /&gt;
&lt;br /&gt;
However, for sending Art-Net data you will need a more appropriate tool. I am using the [[OLA_Command_Line_Tools|OLA Command Line Tools]], running them from another machine running GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
Although I did not test it, you probably can also install OLA on another Mac or even the same machine you are running XCode on, using the available [http://code.google.com/p/linux-lighting/downloads/detail?name=OLA%200.8.1.dmg Installer Disk Image] and/or following the steps of the [[OLA_on_OS_X|OLA On Mac OS X]] page.&lt;br /&gt;
&lt;br /&gt;
=== Installing OLA On Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[OLA_on_Linux|OLA On Linux]] page.&lt;br /&gt;
&lt;br /&gt;
If you should get the following error try to fix it with one of [http://groups.google.com/group/open-lighting/msg/72060f6327d30df6 two available solutions]:&lt;br /&gt;
&lt;br /&gt;
 Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&amp;amp;)': &lt;br /&gt;
 Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor &lt;br /&gt;
&lt;br /&gt;
A similar error can occur when building the ola-examples package:&lt;br /&gt;
&lt;br /&gt;
 g++ -DHAVE_CONFIG_H -I. -I..    -Wall -Werror -I/usr/local/include/ &lt;br /&gt;
 libola   -g -O2 -MT ola-dmxconsole.o -MD -MP -MF .deps/ola- &lt;br /&gt;
 dmxconsole.Tpo -c -o ola-dmxconsole.o ola-dmxconsole.cpp &lt;br /&gt;
 cc1plus: warnings being treated as errors &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void mask()’: &lt;br /&gt;
 ola-dmxconsole.cpp:150: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:156: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp: In function ‘void values()’: &lt;br /&gt;
 ola-dmxconsole.cpp:184: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:188: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:190: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:194: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:197: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:202: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:205: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:208: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:215: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:225: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:226: error: value computed is not used &lt;br /&gt;
 ola-dmxconsole.cpp:227: error: value computed is not used &lt;br /&gt;
 make[2]: *** [ola-dmxconsole.o] Error 1 &lt;br /&gt;
&lt;br /&gt;
You should be able to prevent this by editing &amp;lt;code&amp;gt;./src/Makefile.am&amp;lt;/code&amp;gt;, removing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; and then running &amp;lt;code&amp;gt;autoreconfig &amp;amp;&amp;amp; ./configure&amp;lt;/code&amp;gt; again.&amp;lt;ref&amp;gt;http://groups.google.com/group/open-lighting/msg/c6d86d03dd74ed5b&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Patching An Art-Net Node ===&lt;br /&gt;
&lt;br /&gt;
To make the Ubuntu machine act as an Art-Net node first start the OLA daemon with a debug level of 3:&lt;br /&gt;
&lt;br /&gt;
 olad -l 3&lt;br /&gt;
&lt;br /&gt;
Then we are patching the machine for Art-Net output in universe 1 on port 0:&lt;br /&gt;
&lt;br /&gt;
 ola_patch -d 1 -p 0 -u 1&lt;br /&gt;
&lt;br /&gt;
Now start &amp;lt;code&amp;gt;ola_dmxconsole&amp;lt;/code&amp;gt; for sending some Art-Net data in universe 1:&lt;br /&gt;
&lt;br /&gt;
 ola_dmxconsole -u 1&lt;br /&gt;
&lt;br /&gt;
If you run the Art-Net project in Xcode (either with the Simulator or on the iPad) and open the Xcode console window you should see log messages according to your actions in the DMX console.&lt;br /&gt;
&lt;br /&gt;
E.g. try to navigate to a channel with the left and right cursor keys and then increase or decrease the value with the scroll up/down keys.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot-tobi@acker- ~.png]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screenshot-tobi@acker-_~.png&amp;diff=3461</id>
		<title>File:Screenshot-tobi@acker- ~.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screenshot-tobi@acker-_~.png&amp;diff=3461"/>
				<updated>2010-09-16T11:23:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: The OLA DMX Console in action&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OLA DMX Console in action&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2010-09-16_at_12.12.59.png&amp;diff=3460</id>
		<title>File:Screen shot 2010-09-16 at 12.12.59.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2010-09-16_at_12.12.59.png&amp;diff=3460"/>
				<updated>2010-09-16T11:14:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Xcode Overview drop-down menu&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Xcode Overview drop-down menu&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=File:Screen_shot_2010-09-16_at_11.59.40.png&amp;diff=3459</id>
		<title>File:Screen shot 2010-09-16 at 11.59.40.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=File:Screen_shot_2010-09-16_at_11.59.40.png&amp;diff=3459"/>
				<updated>2010-09-16T10:02:43Z</updated>
		
		<summary type="html">&lt;p&gt;Tobi: Xcode Project Info window for setting the search path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Xcode Project Info window for setting the search path&lt;/div&gt;</summary>
		<author><name>Tobi</name></author>	</entry>

	</feed>