<?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>How to differentiate versions of modem lib for dect nr+?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/118229/how-to-differentiate-versions-of-modem-lib-for-dect-nr</link><description>Nordic has changed the API of nrfx nrf_modem_dect_phy from SDK 2.7 to SDK v2.9. 
 In struct nrf_modem_dect_phy_callbacks there is an additional callback member stf_cover_seq_control . 
 
 I found nrf_modem_build_version(); with that I can check the version</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 23 Jan 2025 11:34:33 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/118229/how-to-differentiate-versions-of-modem-lib-for-dect-nr" /><item><title>RE: How to differentiate versions of modem lib for dect nr+?</title><link>https://devzone.nordicsemi.com/thread/519733?ContentTypeID=1</link><pubDate>Thu, 23 Jan 2025 11:34:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a287adb4-6881-45c9-a3a6-fa6e43270dab</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;That sounds like a good way to do it.&lt;br /&gt;Good job finding the solution yourself!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to differentiate versions of modem lib for dect nr+?</title><link>https://devzone.nordicsemi.com/thread/519686?ContentTypeID=1</link><pubDate>Thu, 23 Jan 2025 07:58:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a894d4ab-9128-437d-b060-5b52ed86b868</guid><dc:creator>Herr Schubert</dc:creator><description>&lt;p&gt;I found a solution that works when I differentiate the API of the modem lib via its related SDK version.&lt;br /&gt;&lt;br /&gt;Indeed there is a #define for the SDK version my code gets compiled against&lt;br /&gt;in the generated code under &lt;em&gt;build/firmware/zephyr/include/generated/ncs_version.h&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Now I can implement it like this:&lt;/p&gt;
&lt;p&gt;static const struct nrf_modem_dect_phy_callbacks callbacks = {&lt;br /&gt; .init = radio_init_cb,&lt;br /&gt; .op_complete = op_complete_cb,&lt;br /&gt; .rssi = rssi_cb,&lt;br /&gt; .rx_stop = rx_stop_cb,&lt;br /&gt; .pcc = pcc_cb,&lt;br /&gt; .pcc_crc_err = pcc_crc_err_cb,&lt;br /&gt; .pdc = pdc_cb,&lt;br /&gt; .pdc_crc_err = pdc_crc_err_cb,&lt;br /&gt; .link_config = link_config_cb,&lt;br /&gt; .time_get = time_get_cb,&lt;br /&gt; .capability_get = capability_get_cb,&lt;br /&gt; &lt;strong&gt;#if NCS_VERSION_NUMBER &amp;gt;= 0x20900&lt;/strong&gt;&lt;br /&gt; .stf_cover_seq_control = stf_cover_seq_control_cb,&lt;br /&gt; &lt;strong&gt;#endif&lt;/strong&gt;&lt;br /&gt; .deinit = deinit_cb&lt;br /&gt; };&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to differentiate versions of modem lib for dect nr+?</title><link>https://devzone.nordicsemi.com/thread/519612?ContentTypeID=1</link><pubDate>Wed, 22 Jan 2025 15:33:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6480c534-a1a7-43ef-9f65-a697aab46456</guid><dc:creator>Herr Schubert</dc:creator><description>&lt;p&gt;It should select the correct initializer for the needed callbacks depending on &lt;strong&gt;modem lib version it is build against&lt;/strong&gt;.&lt;br /&gt; Something like:&lt;/p&gt;
&lt;div style="background-color:#ffffff;color:#3b3b3b;font-family:&amp;#39;Droid Sans Mono&amp;#39;, &amp;#39;monospace&amp;#39;, monospace;font-size:18px;font-weight:normal;line-height:24px;white-space:pre;"&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;const&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#267f99;"&gt;nrf_modem_dect_phy_callbacks&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#001080;"&gt;callbacks&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;init&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;radio_init_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;op_complete&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;op_complete_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;rssi&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;rssi_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;rx_stop&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;rx_stop_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;pcc&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;pcc_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;pcc_crc_err&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;pcc_crc_err_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;pdc&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;pdc_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;pdc_crc_err&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;pdc_crc_err_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;link_config&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;link_config_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;time_get&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;time_get_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;capability_get&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;capability_get_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt;#if defined NRF_MODEM_VERSION == &amp;quot;2.9&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;stf_cover_seq_control&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;stf_cover_seq_control_cb&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt;#endif&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="font-size:75%;"&gt;&lt;span style="color:#3b3b3b;"&gt; .&lt;/span&gt;&lt;span style="color:#001080;"&gt;deinit&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#3b3b3b;"&gt; &lt;/span&gt;&lt;span style="color:#795e26;"&gt;deinit_cb&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="padding-left:60px;"&gt;&lt;span style="color:#3b3b3b;font-size:75%;"&gt; };&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to differentiate versions of modem lib for dect nr+?</title><link>https://devzone.nordicsemi.com/thread/519512?ContentTypeID=1</link><pubDate>Wed, 22 Jan 2025 11:45:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cdf6fc0b-1961-4945-93b8-b7f0ec5cb0c1</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user=""]But how can I differentiate at compile time which version of the struct I have to use (I want to support both).[/quote]
&lt;p&gt;To make sure I understand correctly:&lt;/p&gt;
&lt;p&gt;You want to build with either the new or the old struct depending on which modem fw version the app is built for?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Sigurd Hellesvik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>