<?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>multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/8058/multiple-services-error-code-0xf</link><description>We are currently using SoftDevice 5.2.1 and was given the task to migrate to 6.2.1. I doing so, I placed 6.2.1 hex onto our device and turned it on. Yikes, many errors. Most notably are the 0xf errors coming from sd_ble_uuid_vs_add(). We have 3 custom</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 08 Jul 2015 11:50:30 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/8058/multiple-services-error-code-0xf" /><item><title>RE: multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/thread/28888?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2015 11:50:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6d8c41ac-91cb-414b-a4d1-a90619caad91</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;Great - thanks for that - I&amp;#39;ll go take the global out of my code and just call the registration function as-needed, much better.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/thread/28887?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2015 11:47:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c16c36d5-e95b-460d-af9d-32da9062749d</guid><dc:creator>Ulrich Myhre</dc:creator><description>&lt;p&gt;Yeah, some information got lost there I think. I will raise this internally so the documentation is fixed. Someone reported this annoyance late 2013, and we agreed and fixed it back then. Looking at the source now, it should populate the handle and return success now.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/thread/28886?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2015 11:21:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ae59dbdd-b1c9-40fa-a2ee-fe990d1f6053</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;Oh - that&amp;#39;s not what the documentation says either, it still says it will return NRF_ERROR_FORBIDDEN if the UUID has already been added to the table. (That&amp;#39;s the sdk 8 docs I just checked)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/thread/28885?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2015 10:42:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8e00f4bc-4ac5-438a-b01e-709384865cc5</guid><dc:creator>Ulrich Myhre</dc:creator><description>&lt;p&gt;The uuid_vs_add() call will return success and populate the type from s110 7.0 and beyond (and already be in s120 2.x.x and s130 1.x.x). Seems this was not put in the release notes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/thread/28884?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2015 09:59:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b7d61d4f-31c1-4e2f-80c3-90b545cde271</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;If you&amp;#39;re using the same &amp;#39;base&amp;#39; UUID for all your services (which is what I do because it makes life a whole lot easier) than you have a couple of options. I keep a global handle to the registered UUID which starts at zero at runtime, and have a function to return the registered handle. When I call the function, if the handle is still zero, I do the registration cache and return it, else I just return the one I cached.&lt;/p&gt;
&lt;p&gt;That means you can do your service instantiation in any order, instead of each one doing the uuid_vs_add(), you just call your one-true function and get the handle, whichever is the first will do the registration, the rest will just get the cached value.&lt;/p&gt;
&lt;p&gt;That API call is slightly annoying, since it knows the custom UUID was already registered, it must know which handle it was registered under and it could just return it thus meaning you don&amp;#39;t really have to care if you register the same one multiple times, you get the same handle. I could live with it returning the &amp;#39;already registered&amp;#39; return code, but it would be nice if it also put the handle into the variable anyway so I could check for that condition and keep going instead of having to write that one global function.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: multiple services error code 0xf</title><link>https://devzone.nordicsemi.com/thread/28883?ContentTypeID=1</link><pubDate>Wed, 08 Jul 2015 09:05:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:04dda7e9-11e2-4f3b-8a76-e56562e25316</guid><dc:creator>Ulrich Myhre</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;When you switch between major versions of the SoftDevice, you must at the very least recompile against the new headers in the new release. The migration document included in the release should outline the necessary changes needed for the upgrade.&lt;/p&gt;
&lt;p&gt;Without doing this, your SVC number mappings might be wrong, and you end up calling different APIs than you think you are (with very wrong variables).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>