<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/10728/what-is-the-reason-of-making-nrf-apis-that-complicated</link><description>As an example, let&amp;#39;s see this function from app_hrm (heart rate monitor): 
 static void conn_params_init(void)
{
 uint32_t err_code;
 ble_conn_params_init_t cp_init;

 memset(&amp;amp;cp_init, 0, sizeof(cp_init));

 cp_init.p_conn_params = NULL;
 cp_init</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sun, 11 Dec 2016 11:35:17 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/10728/what-is-the-reason-of-making-nrf-apis-that-complicated" /><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40106?ContentTypeID=1</link><pubDate>Sun, 11 Dec 2016 11:35:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:69126fba-98b8-43ba-9f85-4795b211c712</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yes, that mbed example looks very much like a thing I was thinking about when complaining the complexity of Nordic&amp;#39;s APIs. A good API is just that intuitive to use – to drive a car you don&amp;#39;t need to know how the engine works, so to speak. The level of abstraction is really much higher here than with Nordic&amp;#39;s examples. So, I am wondering is that a strategic decision to stay in such a low level, or just lack of resources, or maybe even kind of inability to design good APIs?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40105?ContentTypeID=1</link><pubDate>Sat, 10 Dec 2016 22:22:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0776520d-8851-47df-b075-352aa7e6415d</guid><dc:creator>Jon Helge</dc:creator><description>&lt;p&gt;No idea. But it it seems to be at a different level of abstraction.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40104?ContentTypeID=1</link><pubDate>Sat, 10 Dec 2016 21:50:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7db38716-69a0-433c-845a-609feafa18dc</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;And are mBed stack and API more efficient and powerful then Nordic&amp;#39;s SoftDevice?;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40103?ContentTypeID=1</link><pubDate>Sat, 10 Dec 2016 21:01:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3e7ad51a-b3bc-44e4-a69c-a4b3bf862eeb</guid><dc:creator>Jon Helge</dc:creator><description>&lt;p&gt;Here&amp;#39;s a simple heart rate monitor example on mbed. It is quite simple to read and understand in my opinion.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_HeartRate/file/8b7c8c240540/main.cpp"&gt;developer.mbed.org/.../main.cpp&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40098?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 14:01:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6217d418-d927-4472-b72d-4e456828026f</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yes, thanks for discussion this far. Let&amp;#39;s see if I have time to find something suitable :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40097?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 13:52:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5d99e533-6a48-4c5f-911d-77f92fe98664</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;My comments were not suppose to be personal (although it might sound like that, sorry). I&amp;#39;m simply curious and opened to learn, I just really met only SDKs for ARM Cortex-M things which are very similar to nRF5x SDK. I don&amp;#39;t expect to have any further feedback from Nordics here but if you will find good example which you find better structured and more modern please link it here, I&amp;#39;d love to give a try;) Cheers Jan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40094?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 13:23:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6bb4681e-ff72-4133-bf47-41d3edaf4927</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Okay, there is a rationale in my opinion, and there is opposite rationale in your opinion. I think that the nRF APIs are kind of &amp;quot;old-fashioned&amp;quot;, or at least over-complicated, not cleanly designed, but it may be argued to be an opinion only. So I changed the title of my original question to become less aggressive. &amp;quot;What is the reason of making nRF APIs that complicated?&amp;quot;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40095?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 13:08:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:55c23eca-071f-401a-9323-3f4a97a47a25</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;It seems so (&amp;quot;question of taste&amp;quot;) but you&amp;#39;ve originally indicated that no one is using this approach any more (= the approach Nordic&amp;#39;s used for their nRF5x Seoft Device and SDK) and also that it&amp;#39;s well known that the other approach is much better for programmers (in general, proven). I was just expecting some good examples to learn something new. If we end up in quoting 16th century&amp;#39;s philosophers then I totally agree with you, it&amp;#39;s just question of taste.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40096?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 13:03:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4d5001a9-13d5-433a-9cb0-1b22aec761fb</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;A philosopher Francis Bacon (1561-1626) formulated that if a man once adopts an opinion, after that he bends everything to support his opinion. So I don&amp;#39;t believe this is a fruitful discussion anymore. You have an opion, and I have mine. It is not a question of rationale, but more like a question of taste.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40099?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 12:48:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5135e9e6-f49f-401a-89b8-767fbcba7eed</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;How do you work with default values in the scheme where you pass ALL the parameters to the function? How would it help filling default values into each call? Or you expect functions which basically cuts the variability and allow to set just half or quarter of parameters while they fill the rest by defaults? Isn&amp;#39;t it exactly what is done in my example above (= if you decide that your app is using just some configs you do your applicative layer)? Or you expect SDK offering dozens of such functions just to be able to cover all different scenarios in order to satisfy different &amp;quot;users&amp;quot;? Not convincing (at all).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40100?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 11:50:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:be8629a2-9d00-4178-b6c3-f22322d10be0</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yeah, you got the point perfectly :) I was eventually speaking both things you mention because they are a bit interleaved. Prefer many simple functions to a few complex ones. Prefer giving working default values to requiring setting all bits and pieces every time.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40088?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 07:55:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4a67a109-a957-4fd4-bea5-5baeb54d5a60</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yes, from the &amp;quot;machine perspective&amp;quot; the answer is what it is. However, after working decades in this profession, I have started to prefer &amp;quot;human perspective&amp;quot;, because we ourselves have so limited resources. Developer&amp;#39;s &amp;quot;cognitive load&amp;quot; shouldn&amp;#39;t be increased by purpose. I mean that it is mostly better to write code that is &amp;quot;easy-to-read&amp;quot; than code that is &amp;quot;easy-to-execute&amp;quot;, so to say. This paradigm produces less errors, and eventually better code.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40087?ContentTypeID=1</link><pubDate>Tue, 15 Dec 2015 04:48:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f69c691b-543a-4e6b-bdde-035882315de2</guid><dc:creator>Clem Taylor</dc:creator><description>&lt;p&gt;For the sd_*() calls, this style of data passing a side effect of the minimal number of arguments to via SVC calls.&lt;/p&gt;
&lt;p&gt;If it wasn&amp;#39;t for the memset, most of this would compile down to const references to flash memory which would use up way less code space then passing parameters on the stack. The use of memset() is to make the code compatible with future libraries that might add additional parameters.&lt;/p&gt;
&lt;p&gt;If everything is constant you can do something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const ble_blah_blah_init_t blah_init =
{
     .blah1 = blah
     ....
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and it will all happily compile away. The same is often (but not always) true for functions with a large number of const arguments that are only called once (-flto is your friend).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40102?ContentTypeID=1</link><pubDate>Sat, 12 Dec 2015 11:56:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e467ef3-32b2-42b5-b8e7-bf4eca162d2b</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yes, actually I was thinking that too, and kind of waiting for this answer :) On the other hand, it would still be possible to hide those complicated &amp;quot;init structures&amp;quot; behind a more comfortable function API. In my opinion, Bluetooth LE &amp;quot;Hello World&amp;quot; should fit into 10..20 lines, instead of almost a thousand.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40101?ContentTypeID=1</link><pubDate>Fri, 11 Dec 2015 09:51:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7f8a4e2d-4ea5-42fa-9ef8-55e78dc73e6a</guid><dc:creator>Frederik</dc:creator><description>&lt;p&gt;Another problem when making the API for the SoftDevice is that we are using SVC calls, which have restrictions on the number and types of parameters supported. Therefore we need to use pointers to pass complex structs to the SoftDevice.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40093?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 18:48:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a20b986b-3e7a-40d3-9f73-2906bf0d6690</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;The good thing in Nordic&amp;#39;s code is that it seems to be written using strict conventions, and the quality seems to be good, also. What I do not like is the underlying coding paradigm making the resulting code very difficult to read. An experienced programmer can read well-written code almost like a natural language, but that&amp;#39;s not the case with Nordic&amp;#39;s coding style.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40086?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 18:40:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e284e254-e5ec-416a-a45c-12da43f389c7</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;And really, there is never real need for &amp;quot;dozens of arguments&amp;quot;. In case a function seems to need more than four arguments, you can simply split it into two smaller functions making the code also more readable, and more self-documenting. Using a structure to pass &amp;quot;dozens of arguments&amp;quot; does not solve the issue.&lt;/p&gt;
&lt;p&gt;For example, instead of providing a single fuzzy &amp;quot;ble_conn_params_init()&amp;quot; you might provide ble_set_conn_delays() and ble_set_conn_handlers() and maybe a third one for something else (it is hard to say what is really needed, based on your approach). The result would be much more readable that way.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40085?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 17:30:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2eac517e-186a-40d3-8c90-1b4059fbc0f3</guid><dc:creator>Alex</dc:creator><description>&lt;p&gt;RK, I like Nordic style of code but I disagree with you about stack. In that particular implementation cp_init will be allocated dynamically in stack because it is defined inside the function. Benefit of structure will be only if it is defined as global var.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40091?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 12:38:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:67367dff-1d1e-4971-8b1b-2e952239d15c</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yes, actually I planned to have a look to the competitive systems. Don&amp;#39;t know if they are at all simpler than yours :) Thanks for comments!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40090?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 12:23:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fb29524d-d897-44b8-bdf1-b430735dcf0d</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;I hope your feedback will be taken into account by Nordic team. Would be even better if you could link some &amp;quot;good&amp;quot; examples of such SDK/API for ARM Cortex-M or similar system...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40092?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 11:22:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c751c078-8b09-4b54-87c4-0767efbc6e96</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Thanks for anwer. Still, 900 lines in your &amp;quot;BLE Hello world&amp;quot; makes no sense. I have made most of my career with embedded systems, since 1983. And by the wat, the newcomer is often the guy who points out the things that do not work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40082?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 11:09:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d0bee9b0-d1bb-410f-ac65-f32171342b93</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;Yeah, good conversation :) The history of coding styles is interesting and funny, full of opposite opinions. &amp;quot;Dozens of arguments&amp;quot; is by the way very misleading, because in most cases three or four would be more than enough. Those &amp;quot;init&amp;quot; structures are just overkill making a simple thing to look complicated. Again an opinion :D&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40081?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 10:28:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1c4f157f-69e8-4a21-8794-6c99acba12f0</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;Hard to argue without having time to rewrite it and measure;) However all SDKs for ARM Cortex-M chips I&amp;#39;ve seen are using rather structures then arguments so either these guys know what they are doing or they just stacked in 90s as you are saying with their fear that dozens of arguments in the call will kill the stack and code readability quickly. And to be honest looking into it this way I&amp;#39;m fain to stay in the 90s with my SDK and FW...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40089?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 10:23:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7edb427a-d3ac-4f10-8169-23583835af95</guid><dc:creator>endnode</dc:creator><description>&lt;p&gt;Well then you are probably referring to some example and depending on what exactly your app is doing you either use parts of that code or not. Bare in mind that your are using SDK which basically sits on &amp;quot;bare metal&amp;quot; so you are writing the OS not just the app sitting on top of it. If you demand another layer of abstraction then there is reason why no such &amp;quot;OS + API&amp;quot; exists on these systems: they are so restricted in terms of resources (single threaded not powerful CPU, power restrictions, NVM and RAM in the rang of few dozens of kB) that you never fit some &amp;quot;general&amp;quot; layer there which would serve perfectly to all apps. You actually need to be touching so many low level points if you want to make efficient production FW on this kind of chip that predict all use cases by any smarter API is impossible. And if you are dissatisfied with the examples then you can be sure that most of &amp;quot;high rolling&amp;quot; production FWs are not using that, just derived their better and more efficient templates from it. For the newcomer it might be quite a &amp;quot;hit&amp;quot; to work in such complicated SDK but embedded programming isn&amp;#39;t PC &amp;quot;Hello World&amp;quot; programming through win32 API, it&amp;#39;s actually quite hard;)&lt;/p&gt;
&lt;p&gt;Cheers Jan&lt;/p&gt;
&lt;h2&gt;Edit 2015-12-15&lt;/h2&gt;
&lt;p&gt;Sorry but I still don&amp;#39;t get the point. Are you mad at having some &amp;quot;standard&amp;quot; sequence of function calls in the main which you will copy from project to project? Something like&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int main(void) {
    // Initiate HW.
    board_configure();

    // Initiate application timer.
    rtc1_init();

    // Initiate your specific applicative configuration.
    config_init();

    // Initiate BT stack in Soft Device.
    ble_stack_init();

    // Do all application logic (inside the infinite loop).
    do_work();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or are you saying that there are studies that instead of initiating parameters into the structure like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Prepare Write parameters.
write_params.write_op = BLE_GATT_OP_WRITE_CMD;
write_params.handle = m_central_cccd_handle;
write_params.offset = 0;
write_params.len = sizeof(write_value);
write_params.p_value = (uint8_t *)&amp;amp;write_value;

// Central writes to CCCD of peripheral to receive indications.
err_code = sd_ble_gattc_write(m_central_conn_handle, &amp;amp;write_params);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;they should be passed in the parameters (e.g. like this):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Central writes to CCCD of peripheral to receive indications.
err_code = sd_ble_gattc_write(m_central_conn_handle, BLE_GATT_OP_WRITE_CMD, m_central_cccd_handle, 0, sizeof(write_value), (uint8_t *)&amp;amp;write_value);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to better trigger humans&amp;#39; (specifically programmers&amp;#39;) cognitive functions? Could you please give me some references? Because I start to doubt I&amp;#39;m OK...;)&lt;/p&gt;
&lt;p&gt;Thx Jan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: What is the reason of making nRF APIs that complicated?</title><link>https://devzone.nordicsemi.com/thread/40080?ContentTypeID=1</link><pubDate>Thu, 10 Dec 2015 10:17:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:602ce57e-fe67-4eb1-b983-1072099a871e</guid><dc:creator>Jarmo</dc:creator><description>&lt;p&gt;My mention of Symbian was not meant to be taken that way. After starting my career with 6502 processor, I do know what is a resource limited system. And I also do know the absolutely most resource limited system is our own brain. That&amp;#39;s too often forgotten, and strange arguments to save microprocessor power instead of our brain power start to fly. I would even bet there&amp;#39;s more final binary code in that structure-filling system than with argument passing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>