<?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=Mimi012</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=Mimi012"/>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php/Special:Contributions/Mimi012"/>
		<updated>2026-04-28T19:17:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://wiki.openlighting.org/index.php?title=Using_OLA_with_Xcode&amp;diff=4065</id>
		<title>Using OLA with Xcode</title>
		<link rel="alternate" type="text/html" href="https://wiki.openlighting.org/index.php?title=Using_OLA_with_Xcode&amp;diff=4065"/>
				<updated>2012-02-04T19:29:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mimi012: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You can use OLA to implement your application in Objective-C++, a bridge between Objective-C and C++. This page explains how to integrate OLA client into your program. The content of this page is based on [http://linux-lighting.googlecode.com/files/OLA%200.6.0.dmg OLA 0.6.0 Universal Mac Binaries]&lt;br /&gt;
&lt;br /&gt;
==What you'll need==&lt;br /&gt;
* Xcode&lt;br /&gt;
* [http://code.google.com/p/linux-lighting/downloads/list Newest Mac OS X Universal Mac Binaries] installed&lt;br /&gt;
&lt;br /&gt;
== Create a new Project ==&lt;br /&gt;
# File -&amp;gt; New Project, from the right under Mac OS X, select 'Application', then in the left panel choose 'Cocoa Application' &lt;br /&gt;
# Once the main window pops up, right click the 'main.m' file and select rename. Change the name to 'main.mm' (required for Objective-C++ extensions)&lt;br /&gt;
&lt;br /&gt;
==Configure your project==&lt;br /&gt;
# Select menu: &amp;quot;Project&amp;quot; -&amp;gt; &amp;quot;Edit Project Settings&amp;quot;. All settings below are referred in a &amp;quot;Build&amp;quot; tab&lt;br /&gt;
# Under 'Search Paths', set &amp;quot;Header Search Paths&amp;quot; to /usr/local/include.&lt;br /&gt;
&lt;br /&gt;
==Add the required libraries==&lt;br /&gt;
# In your project tree, right-click on a group that contain frameworks (e.g. &amp;quot;External Frameworks and Libraries&amp;quot;, &amp;quot;Fromeworks/Linked Frameworks&amp;quot;), select &amp;quot;Add&amp;quot; -&amp;gt; &amp;quot;Existing Frameworks&amp;quot;&lt;br /&gt;
# Select following frameworks:&lt;br /&gt;
#* libprotobuf.dylib&lt;br /&gt;
#* libola.dylib&lt;br /&gt;
#* libolacommon.dylib&lt;br /&gt;
&lt;br /&gt;
==Example code==&lt;br /&gt;
The following code sends value 255 to channel 0 in universe 0. First, it creates a client from a SimpleClient object. Then, it creates a DMX buffer and sets channel 0 to 255. Finally it sends the buffer to a server. &lt;br /&gt;
&lt;br /&gt;
 #import &amp;lt;Cocoa/Cocoa.h&amp;gt; &lt;br /&gt;
 #import &amp;lt;ola/DmxBuffer.h&amp;gt;&lt;br /&gt;
 #import &amp;lt;ola/SimpleClient.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
 int main(int argc, char *argv[]) {&lt;br /&gt;
  ola::SimpleClient simpleClient;&lt;br /&gt;
  if (!simpleClient.Setup()) {&lt;br /&gt;
    NSLog(@&amp;quot;Client setup failed&amp;quot;);&lt;br /&gt;
    return -1;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  ola::OlaClient *client = simpleClient.GetClient();&lt;br /&gt;
  &lt;br /&gt;
  ola::DmxBuffer buffer;&lt;br /&gt;
  buffer.Blackout();&lt;br /&gt;
  buffer.SetChannel(0, 255);&lt;br /&gt;
  &lt;br /&gt;
  unsigned int universe = 0;&lt;br /&gt;
  if (!client-&amp;gt;SendDmx(universe, buffer)) {&lt;br /&gt;
    NSLog(@&amp;quot;Sending DMX failed&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
  // you could also run the main app here&lt;br /&gt;
  return NSApplicationMain(argc,  (const char **) argv);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
You can find more information by browsing the source file of [http://linux-lighting.googlecode.com/files/ola-examples-0.6.0.tar.gz DMX example]. For me, the src/ola-client.cpp is quite useful.&lt;br /&gt;
&lt;br /&gt;
Here is another example that create OlaServer and communicate with a pipe socket.&lt;br /&gt;
&lt;br /&gt;
 #import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #import &amp;lt;ola/DmxBuffer.h&amp;gt;&lt;br /&gt;
 #import &amp;lt;ola/OlaClient.h&amp;gt;&lt;br /&gt;
 #import &amp;lt;ola/network/SelectServer.h&amp;gt;&lt;br /&gt;
 #import &amp;lt;ola/network/Socket.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 using ola::network::PipeSocket;&lt;br /&gt;
 &lt;br /&gt;
 // define type for DMX message&lt;br /&gt;
 typedef unsigned char dmx_t ;&lt;br /&gt;
 &lt;br /&gt;
 // maximum number of channels&lt;br /&gt;
 int MAXCHANNELS=512;&lt;br /&gt;
 &lt;br /&gt;
 int main (int argc, const char * argv[]) {&lt;br /&gt;
     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt;
 &lt;br /&gt;
 	// create a server &lt;br /&gt;
 	ola::network::SelectServer server;&lt;br /&gt;
 	&lt;br /&gt;
 	// create a select server &lt;br /&gt;
 	ola::network::SelectServer server;&lt;br /&gt;
 	&lt;br /&gt;
 	// create pipe socket&lt;br /&gt;
 	PipeSocket *socket = new PipeSocket();&lt;br /&gt;
 	if (!socket-&amp;gt;Init())&lt;br /&gt;
 	{&lt;br /&gt;
 		NSLog(@&amp;quot;Cannot create pipe socket&amp;quot;);&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// add socket to select server&lt;br /&gt;
 	server.AddSocket(socket, true);&lt;br /&gt;
 	&lt;br /&gt;
 	// create server daemon&lt;br /&gt;
        // *** see: olad/Olad.cpp for more detail ***&lt;br /&gt;
 &lt;br /&gt;
     // get a client&lt;br /&gt;
 	ola::OlaClient client(socket);&lt;br /&gt;
 	if (!client.Setup()) {&lt;br /&gt;
 		NSLog(@&amp;quot;Client setup failed %s&amp;quot;, strerror(errno));&lt;br /&gt;
 		return -1;&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// prepare data&lt;br /&gt;
 	int channel = 0;&lt;br /&gt;
 	dmx_t *dmx = (dmx_t *)calloc(MAXCHANNELS + 10, sizeof(dmx_t));&lt;br /&gt;
 	dmx[channel] = 255;&lt;br /&gt;
 	ola::DmxBuffer buffer(dmx, MAXCHANNELS);&lt;br /&gt;
 &lt;br /&gt;
 	&lt;br /&gt;
 	// send DMX message&lt;br /&gt;
 	int universe = 0;&lt;br /&gt;
 	if (!client.SendDmx(universe, buffer)) {&lt;br /&gt;
 		NSLog(@&amp;quot;Sending DMX failed %s&amp;quot;, strerror(errno));&lt;br /&gt;
 	}&lt;br /&gt;
 	&lt;br /&gt;
 	// cleanup&lt;br /&gt;
 	free(dmx);&lt;br /&gt;
 	&lt;br /&gt;
     [pool drain];&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Mimi012</name></author>	</entry>

	</feed>