<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Polisoft Design</title>
	<atom:link href="http://polisoftdesign.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://polisoftdesign.com</link>
	<description>Embedded Systems for Energy Efficient Lighting</description>
	<lastBuildDate>Fri, 10 Sep 2010 18:07:21 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comment on CoOS Real Time Kernel (CooCox.org) – Part 3 by admin</title>
		<link>http://polisoftdesign.com/2010/08/28/coos-real-time-kernel-coocox-org-%e2%80%93-part-3/comment-page-1/#comment-1349</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Fri, 10 Sep 2010 18:07:21 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=380#comment-1349</guid>
		<description>You are right (fixed). It is 87 us and not 8.7 us. Unfortunately, the processor I&#039;ve been using in my projects does not have a UART with hardware FIFO. So, the interrupt rate was the same as the byte rate (87 us). In fact, in the stress test I activated three UARTs simultaneously - this was the moment I noticed missing events from time to time (intervals varying between few minutes to tens of minutes). 

The system requests servicing implemented in CoOS is a bit more complex: most of the time the requests are serviced immediately at the exit of the ISR. However, if the kernel is in the middle of scheduling tasks then the request servicing is delayed until the next SysTick. This delay may vary between almost 0 and the system timer time interval. This delay can be a problem in situations like you suggested - very fast peripherals. This is one of the reasons I suggested that you should try to reduce the interrupt rate significantly by using what the hardware provides: FIFO or DMA. Or avoid using system services completely in your ISRs.

Otherwise, CoOS is responsive and reliable. Other RTOS kernels are subject of similar issues despite of different implementations and different internal architecture.</description>
		<content:encoded><![CDATA[<p>You are right (fixed). It is 87 us and not 8.7 us. Unfortunately, the processor I&#8217;ve been using in my projects does not have a UART with hardware FIFO. So, the interrupt rate was the same as the byte rate (87 us). In fact, in the stress test I activated three UARTs simultaneously &#8211; this was the moment I noticed missing events from time to time (intervals varying between few minutes to tens of minutes). </p>
<p>The system requests servicing implemented in CoOS is a bit more complex: most of the time the requests are serviced immediately at the exit of the ISR. However, if the kernel is in the middle of scheduling tasks then the request servicing is delayed until the next SysTick. This delay may vary between almost 0 and the system timer time interval. This delay can be a problem in situations like you suggested &#8211; very fast peripherals. This is one of the reasons I suggested that you should try to reduce the interrupt rate significantly by using what the hardware provides: FIFO or DMA. Or avoid using system services completely in your ISRs.</p>
<p>Otherwise, CoOS is responsive and reliable. Other RTOS kernels are subject of similar issues despite of different implementations and different internal architecture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CoOS Real Time Kernel (CooCox.org) – Part 3 by Alex</title>
		<link>http://polisoftdesign.com/2010/08/28/coos-real-time-kernel-coocox-org-%e2%80%93-part-3/comment-page-1/#comment-1339</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Fri, 10 Sep 2010 09:22:18 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=380#comment-1339</guid>
		<description>Just small correction.
With 115200 bps UART time between interrupts will be 87 us, not 8.7 us. And with FIFO it will be 1.4 ms. I&#039;d say, very light load for Cortex.

Personally, I don&#039;t think that servicing system requests in the SysTick handler is good idea.
With high-speed peripherals like Ethernet/CAN/SPI you can&#039;t be sure that queue will not become full.

Regards.</description>
		<content:encoded><![CDATA[<p>Just small correction.<br />
With 115200 bps UART time between interrupts will be 87 us, not 8.7 us. And with FIFO it will be 1.4 ms. I&#8217;d say, very light load for Cortex.</p>
<p>Personally, I don&#8217;t think that servicing system requests in the SysTick handler is good idea.<br />
With high-speed peripherals like Ethernet/CAN/SPI you can&#8217;t be sure that queue will not become full.</p>
<p>Regards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CoOS Real Time Kernel (CooCox.org) – Part 2 by admin</title>
		<link>http://polisoftdesign.com/2010/04/23/coos-real-time-kernel-coocox-org-%e2%80%93-part-2/comment-page-1/#comment-105</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 26 May 2010 19:50:32 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=292#comment-105</guid>
		<description>I&#039;m really busy building a serious application around CoOS. This is the main reason I stopped writing articles and began to write a lot of code. I intend to share some of that code (the parts that are independent of my project) in about few weeks from now together with a series of postings about CoOS. As for the naming conventions and portable data types I agree -- is would be beneficial to adhere to some standard and write code that is portable. Unfortunately, the lack of standards until recently, the lax nature of the ANSI C standard, the &quot;community standards and styles&quot; created this mess that we are in. I&#039;m guilty as any other developer of not following ISO-C / UNIX / MISRA-C:2004 guidelines for years and many serious software houses are even guiltier for not promoting the standards themselves when providing the tools. This is the reason we keep reinventing the wheel trying to bring a bit of order. 

However, I&#039;ve noticed that  became more mainstream today, many tool chains providing portable data types as you mentioned. It would be nice for the compilers to adhere to C99 standard as well with all the benefits but, unfortunately, it may take a bit more for some... Look how inconsistent the 64-bit integer type is defined: is it long long or __int64? Silly, isn&#039;t it?

I will also dedicate postings on style and standards one day. What I need is time... just time :-)</description>
		<content:encoded><![CDATA[<p>I&#8217;m really busy building a serious application around CoOS. This is the main reason I stopped writing articles and began to write a lot of code. I intend to share some of that code (the parts that are independent of my project) in about few weeks from now together with a series of postings about CoOS. As for the naming conventions and portable data types I agree &#8212; is would be beneficial to adhere to some standard and write code that is portable. Unfortunately, the lack of standards until recently, the lax nature of the ANSI C standard, the &#8220;community standards and styles&#8221; created this mess that we are in. I&#8217;m guilty as any other developer of not following ISO-C / UNIX / MISRA-C:2004 guidelines for years and many serious software houses are even guiltier for not promoting the standards themselves when providing the tools. This is the reason we keep reinventing the wheel trying to bring a bit of order. </p>
<p>However, I&#8217;ve noticed that  became more mainstream today, many tool chains providing portable data types as you mentioned. It would be nice for the compilers to adhere to C99 standard as well with all the benefits but, unfortunately, it may take a bit more for some&#8230; Look how inconsistent the 64-bit integer type is defined: is it long long or __int64? Silly, isn&#8217;t it?</p>
<p>I will also dedicate postings on style and standards one day. What I need is time&#8230; just time <img src='http://polisoftdesign.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CoOS Real Time Kernel (CooCox.org) – Part 2 by LeQ</title>
		<link>http://polisoftdesign.com/2010/04/23/coos-real-time-kernel-coocox-org-%e2%80%93-part-2/comment-page-1/#comment-99</link>
		<dc:creator>LeQ</dc:creator>
		<pubDate>Wed, 26 May 2010 07:07:59 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=292#comment-99</guid>
		<description>At first, I&#039;m really looking forward to read your next article about this OS. I checked out the Webpage of CooCox, and it seems to be interesting. I&#039;m using FreeRTOS and µC/OS at most. This seems to be a nice alternative. I just wonder &quot;What&#039;s the catch?&quot;. With the BSD License of the OS you avoid this silly FreeRTOS thing, where you need to print the FreeRTOS logo in your product documentation. But whatever I will check out the OS myself within the next month.

One thing to the data type naming conventions. I personally don&#039;t understand why people always use go on there own... I personally like to use the ISO-C / UNIX / MISRA-C:2004 Data type conventions like uint32_t. Yap It is long and maybe unhandy, but it&#039;s regarding to a common standard and especially with gcc and a good toolchain you have the stdint.h anyways, with correct data types for you anyways.

Well thanks for this articles, looking for more! :)</description>
		<content:encoded><![CDATA[<p>At first, I&#8217;m really looking forward to read your next article about this OS. I checked out the Webpage of CooCox, and it seems to be interesting. I&#8217;m using FreeRTOS and µC/OS at most. This seems to be a nice alternative. I just wonder &#8220;What&#8217;s the catch?&#8221;. With the BSD License of the OS you avoid this silly FreeRTOS thing, where you need to print the FreeRTOS logo in your product documentation. But whatever I will check out the OS myself within the next month.</p>
<p>One thing to the data type naming conventions. I personally don&#8217;t understand why people always use go on there own&#8230; I personally like to use the ISO-C / UNIX / MISRA-C:2004 Data type conventions like uint32_t. Yap It is long and maybe unhandy, but it&#8217;s regarding to a common standard and especially with gcc and a good toolchain you have the stdint.h anyways, with correct data types for you anyways.</p>
<p>Well thanks for this articles, looking for more! <img src='http://polisoftdesign.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CoOS Real Time Kernel (CooCox.org) – Part 2 by admin</title>
		<link>http://polisoftdesign.com/2010/04/23/coos-real-time-kernel-coocox-org-%e2%80%93-part-2/comment-page-1/#comment-15</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Thu, 06 May 2010 05:00:51 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=292#comment-15</guid>
		<description>Here is the reality: if you need all the available features, then the size can be ~10 KB. If you keep everything minimal the size reduces to ~2.5 KB but you will be limited to multitasking without inter-task communication and synchronization. If you add semaphores (more realistic) the code size will be ~4 KB and ~500 B of data (depending of number of tasks, semaphores, etc.) Expect about 20...30% code size reduction if you enable full optimization in the compiler. Still not 1 KB!
But I agree that FreeRTOS may require a bit more code space without so many features that CoOS offers. There are other options for really small RTOS preemptive kernels but don&#039;t expect miracles. 

In the list below you will find each module and its size (IAR EWARM 5.30, no optimization, CPU is Cortex M3):

&lt;code&gt;
&lt;strong&gt;Module..........Code........Data........Const&lt;/strong&gt;
arch............222.........12..........0
core............418.........3...........0
event...........718.........164.........0
flag............1538........20..........0
hook............4...........0...........0
kernelHeap......716.........212.........0
mbox............480.........0...........0
mm..............548.........36..........0
mutex...........674.........81..........0
portForM3.......120.........0...........0
queue...........762.........36..........0
sem.............452.........0...........0
serviceReq......308.........71..........0
task............1640........520.........0
time............676.........4...........0
timer...........1220........56..........0
utility.........158.........0...........0
&lt;strong&gt;Total...........10654.......1215........0&lt;/strong&gt;
&lt;/code&gt;

It is possible that the code can be ported on ARM7 but this requires a bit of work and my time is limited for the moment. However, CoOS authors may have this in plan anyway. Keep an eye on this site or coocox.org for news.

Good luck!</description>
		<content:encoded><![CDATA[<p>Here is the reality: if you need all the available features, then the size can be ~10 KB. If you keep everything minimal the size reduces to ~2.5 KB but you will be limited to multitasking without inter-task communication and synchronization. If you add semaphores (more realistic) the code size will be ~4 KB and ~500 B of data (depending of number of tasks, semaphores, etc.) Expect about 20&#8230;30% code size reduction if you enable full optimization in the compiler. Still not 1 KB!<br />
But I agree that FreeRTOS may require a bit more code space without so many features that CoOS offers. There are other options for really small RTOS preemptive kernels but don&#8217;t expect miracles. </p>
<p>In the list below you will find each module and its size (IAR EWARM 5.30, no optimization, CPU is Cortex M3):</p>
<p><code><br />
<strong>Module..........Code........Data........Const</strong><br />
arch............222.........12..........0<br />
core............418.........3...........0<br />
event...........718.........164.........0<br />
flag............1538........20..........0<br />
hook............4...........0...........0<br />
kernelHeap......716.........212.........0<br />
mbox............480.........0...........0<br />
mm..............548.........36..........0<br />
mutex...........674.........81..........0<br />
portForM3.......120.........0...........0<br />
queue...........762.........36..........0<br />
sem.............452.........0...........0<br />
serviceReq......308.........71..........0<br />
task............1640........520.........0<br />
time............676.........4...........0<br />
timer...........1220........56..........0<br />
utility.........158.........0...........0<br />
<strong>Total...........10654.......1215........0</strong><br />
</code></p>
<p>It is possible that the code can be ported on ARM7 but this requires a bit of work and my time is limited for the moment. However, CoOS authors may have this in plan anyway. Keep an eye on this site or coocox.org for news.</p>
<p>Good luck!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CoOS Real Time Kernel (CooCox.org) – Part 2 by Adriano Prado</title>
		<link>http://polisoftdesign.com/2010/04/23/coos-real-time-kernel-coocox-org-%e2%80%93-part-2/comment-page-1/#comment-14</link>
		<dc:creator>Adriano Prado</dc:creator>
		<pubDate>Tue, 04 May 2010 16:36:54 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=292#comment-14</guid>
		<description>According to the CooCox CoOS page, it will take less than 1K for the Kernel code, and about 200K of RAM!
With such small footprint I think it beats FreeRTOS for devices with low memory space, like the LPC210x.
Now I&#039;m just wondering if the support will be as good as in FreeRTOS, but I think it&#039;s worth to check. I hope you post your findings about it soon (specially if you port it to ARM7).

Regards.</description>
		<content:encoded><![CDATA[<p>According to the CooCox CoOS page, it will take less than 1K for the Kernel code, and about 200K of RAM!<br />
With such small footprint I think it beats FreeRTOS for devices with low memory space, like the LPC210x.<br />
Now I&#8217;m just wondering if the support will be as good as in FreeRTOS, but I think it&#8217;s worth to check. I hope you post your findings about it soon (specially if you port it to ARM7).</p>
<p>Regards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Matter of Interrupts and Mutual Exclusion – Part 1 by dhanraj</title>
		<link>http://polisoftdesign.com/2010/04/25/a-matter-of-interrupts-and-mutual-exclusion-part-1/comment-page-1/#comment-13</link>
		<dc:creator>dhanraj</dc:creator>
		<pubDate>Thu, 29 Apr 2010 05:55:26 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=297#comment-13</guid>
		<description>Simple to understand. nice work.

&quot;Aside form programming skills the embedded developer has to think of solving problems in a different mindset than the average PC programmer.&quot;

Good point..</description>
		<content:encoded><![CDATA[<p>Simple to understand. nice work.</p>
<p>&#8220;Aside form programming skills the embedded developer has to think of solving problems in a different mindset than the average PC programmer.&#8221;</p>
<p>Good point..</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Matter of Interrupts and Mutual Exclusion – Part 2 by admin</title>
		<link>http://polisoftdesign.com/2010/04/26/a-matter-of-interrupts-and-mutual-exclusion-part-2/comment-page-1/#comment-12</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Tue, 27 Apr 2010 20:24:53 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=305#comment-12</guid>
		<description>Reading your message, I noticed one typo in my post: it is not &lt;b&gt;Com_BufReadRxByte&lt;/b&gt;() but &lt;b&gt;Com_ReadRxByte&lt;/b&gt;(). I fixed it.

You are right: there is no check if the FIFO is empty (in &lt;b&gt;ComGetChar&lt;/b&gt;) or full (in &lt;b&gt;Com_ISR&lt;/b&gt;). This was one of the answers. 

You are right again: the &lt;b&gt;rx_count&lt;/b&gt; is also a shared variable and needs protection (or atomic access) but this won’t lead to a disaster as &lt;b&gt;rx_count&lt;/b&gt; is not used directly to access the FIFO (it was intended for only checking the amount of data in the FIFO). However, its value may be inconsistent as you mentioned. 

The major problem (as I can see it) is the access to the buffer itself -- here is where the mutual exclusion problem really occurs. And this is what I will try to cover in my next post(s). 

Your assumption that there is no other concurrency than the main thread vs. interrupt is valid in many cases where there is no RTOS involved. However, even in this simple situation the mutual exclusion problem exists and you need protection. I suggest you analyze the code generated by the compiler for &lt;b&gt;Com_ReadRxByte&lt;/b&gt;() and see what an interrupt occurring randomly between machine instructions could do when the function executes. The exercise is always recommended when you have doubts regarding the effects of interrupt preemption.</description>
		<content:encoded><![CDATA[<p>Reading your message, I noticed one typo in my post: it is not <b>Com_BufReadRxByte</b>() but <b>Com_ReadRxByte</b>(). I fixed it.</p>
<p>You are right: there is no check if the FIFO is empty (in <b>ComGetChar</b>) or full (in <b>Com_ISR</b>). This was one of the answers. </p>
<p>You are right again: the <b>rx_count</b> is also a shared variable and needs protection (or atomic access) but this won’t lead to a disaster as <b>rx_count</b> is not used directly to access the FIFO (it was intended for only checking the amount of data in the FIFO). However, its value may be inconsistent as you mentioned. </p>
<p>The major problem (as I can see it) is the access to the buffer itself &#8212; here is where the mutual exclusion problem really occurs. And this is what I will try to cover in my next post(s). </p>
<p>Your assumption that there is no other concurrency than the main thread vs. interrupt is valid in many cases where there is no RTOS involved. However, even in this simple situation the mutual exclusion problem exists and you need protection. I suggest you analyze the code generated by the compiler for <b>Com_ReadRxByte</b>() and see what an interrupt occurring randomly between machine instructions could do when the function executes. The exercise is always recommended when you have doubts regarding the effects of interrupt preemption.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A Matter of Interrupts and Mutual Exclusion – Part 2 by Jan Vanek</title>
		<link>http://polisoftdesign.com/2010/04/26/a-matter-of-interrupts-and-mutual-exclusion-part-2/comment-page-1/#comment-9</link>
		<dc:creator>Jan Vanek</dc:creator>
		<pubDate>Tue, 27 Apr 2010 07:47:40 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=305#comment-9</guid>
		<description>Nice page, a lot of work...

Regarding the flaws you ask: One minor problem with the Com_BufReadRxByte() is that it doesn&#039;t check whether the FIFO is empty so you can call it only when the FIFO is non-empty and thus you make the programmer responsible for checking that. The major problem though is the rx_count variable. This variable is modified in both functions Com_ReadRxByte() and  Com_WriteRxBuf(), and due to the fact that Com_WriteRxBuf() is called from an ISR which can interrupt the Com_ReadRxByte(), the rx_count can become inconsistent.

My view is following, in case you have 2 threads and one thread modifies only one half of the FIFO (one part of members of the FIFO, e.g. the write part), and potentially only reads the other half, and the other thread modifies only the other half of the FIFO (e.g. the read part), then you don&#039;t need any mutual exclusion (of those threads) at all. This is very often the case, you have the main thread and the interrupt thread, one of which is (only) producer, the other one is (only) consumer or vice-versa. I think we should take a benefit of it and construct queues which don&#039;t need mutual exclusion (for this scenario).

With regards,
Jan</description>
		<content:encoded><![CDATA[<p>Nice page, a lot of work&#8230;</p>
<p>Regarding the flaws you ask: One minor problem with the Com_BufReadRxByte() is that it doesn&#8217;t check whether the FIFO is empty so you can call it only when the FIFO is non-empty and thus you make the programmer responsible for checking that. The major problem though is the rx_count variable. This variable is modified in both functions Com_ReadRxByte() and  Com_WriteRxBuf(), and due to the fact that Com_WriteRxBuf() is called from an ISR which can interrupt the Com_ReadRxByte(), the rx_count can become inconsistent.</p>
<p>My view is following, in case you have 2 threads and one thread modifies only one half of the FIFO (one part of members of the FIFO, e.g. the write part), and potentially only reads the other half, and the other thread modifies only the other half of the FIFO (e.g. the read part), then you don&#8217;t need any mutual exclusion (of those threads) at all. This is very often the case, you have the main thread and the interrupt thread, one of which is (only) producer, the other one is (only) consumer or vice-versa. I think we should take a benefit of it and construct queues which don&#8217;t need mutual exclusion (for this scenario).</p>
<p>With regards,<br />
Jan</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Lighting Infrastructure by admin</title>
		<link>http://polisoftdesign.com/2010/02/15/lighting-infrastructure/comment-page-1/#comment-4</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Mon, 22 Feb 2010 10:35:47 +0000</pubDate>
		<guid isPermaLink="false">http://polisoftdesign.com/?p=136#comment-4</guid>
		<description>I&#039;m afraid that I created a bit of confusion by saying &quot;the development of a better lighting infrastructure&quot;: I&#039;m not suggesting replacing the current infrastructure (absurd) but enhancing it by adding (smartly) the communication ability and the software required to achieve the final goal: enabling controllability. Currently, there are attempts to do it but without a clear overall idea.

There are different lighting communication standards that compete with each other or are incomplete or confusing, difficult to implement consistently, or trying to address only certain devices while ignoring others (especially the new ones). Some of them attempt to satisfy the requirements of the entertainment industry, other to satisfy building lighting and others do not have a clear target. They all target just the pieces of the puzzle and not the whole system. That’s why the interoperability is almost a nightmare.

It seems that lamp manufacturers lack the vision when it comes to building a lighting system rather than lighting components. There is no unity; most companies hope making money with a proprietary system (if they have one); the lighting community does not have a clear picture of how the lighting industry will evolve in the next decade.

One thing is clear: without the ability of controlling light easily in all aspects (intensity, color, timing) the future of the new lighting technologies will depend primarily on cost: this means slow adoption because people think with their wallets. From this point of view, the retrofit lamps that come mainly from China will satisfy the market needs in short term. Unfortunately, quality and lack of features will remain the main issues in order to keep the cost down.

Adding controllability (and, subsequently, new features) on top of the long life, the efficiency and being environmentally friendly but hiding the complexity of the technology in the software embedded in these devices will accelerate the adoption.

Changing or enhancing the technology doesn’t have to become “the obstacle” but the facilitator in this process. In fact, the novelty factor will act as a catalyst in educating the market. Just think of two recent examples: digital cameras and smart phones. It won’t happen over night but, eventually, it will happen: controllability without complexity for the end user is the next big thing in lighting. And, yes, we need a plan (not only vision). That’s why I asked your opinions.

Have I made my self clear this time? I really appreciate the feedback.</description>
		<content:encoded><![CDATA[<p>I&#8217;m afraid that I created a bit of confusion by saying &#8220;the development of a better lighting infrastructure&#8221;: I&#8217;m not suggesting replacing the current infrastructure (absurd) but enhancing it by adding (smartly) the communication ability and the software required to achieve the final goal: enabling controllability. Currently, there are attempts to do it but without a clear overall idea.</p>
<p>There are different lighting communication standards that compete with each other or are incomplete or confusing, difficult to implement consistently, or trying to address only certain devices while ignoring others (especially the new ones). Some of them attempt to satisfy the requirements of the entertainment industry, other to satisfy building lighting and others do not have a clear target. They all target just the pieces of the puzzle and not the whole system. That’s why the interoperability is almost a nightmare.</p>
<p>It seems that lamp manufacturers lack the vision when it comes to building a lighting system rather than lighting components. There is no unity; most companies hope making money with a proprietary system (if they have one); the lighting community does not have a clear picture of how the lighting industry will evolve in the next decade.</p>
<p>One thing is clear: without the ability of controlling light easily in all aspects (intensity, color, timing) the future of the new lighting technologies will depend primarily on cost: this means slow adoption because people think with their wallets. From this point of view, the retrofit lamps that come mainly from China will satisfy the market needs in short term. Unfortunately, quality and lack of features will remain the main issues in order to keep the cost down.</p>
<p>Adding controllability (and, subsequently, new features) on top of the long life, the efficiency and being environmentally friendly but hiding the complexity of the technology in the software embedded in these devices will accelerate the adoption.</p>
<p>Changing or enhancing the technology doesn’t have to become “the obstacle” but the facilitator in this process. In fact, the novelty factor will act as a catalyst in educating the market. Just think of two recent examples: digital cameras and smart phones. It won’t happen over night but, eventually, it will happen: controllability without complexity for the end user is the next big thing in lighting. And, yes, we need a plan (not only vision). That’s why I asked your opinions.</p>
<p>Have I made my self clear this time? I really appreciate the feedback.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

