This may be an unpopular question but the Nordic SDK seems to go to great length to perform what is effectively object-oriented programming while still avoiding c++. This leads to, among other things, an overly complex sdk rife with macro string concatenation and other evils. In our project we spent the first six months wrapping every part of the sdk into a coherent object model. The wrapping was painful but paid off dividends when we went to actually do the real work.
Hopefully I don’t need to extol the virtues of c++ in embedded systems. Others have already done that for years: https://www.embedded.com/design/programming-languages-and-tools/4438660/Modern-C--in-embedded-systems---Part-1--Myth-and-Reality
Has Nordic considered this? It would make your products much more attractive, at least to us.
You may want to have a look here for Object Oriented implementation
Interesting. Looks like a very c-styled c++ implementation. I was hoping for something a bit more oo, which is what we have now. But mostly it would be nice if Nordic maintained something vs a third party (or us) having to do that.
look closely to the DeviceIntrf and Device base classes and there real implementation objects you can't be more oo than that.
There are some counter arguments
Also, the SDK is intended as a reference implementation for all the peripherials - to teach developers how to use them. Thus it needs to be relatively simple and easy to understand - and some hw devs may simply not understand C++ properly. Look at some of the questions in this forum...
Much of the SDK is very closely tied to the hardware itsef. The C compiler is used as an "assembler with more macros" rather than a high level language.
I’m not sure to which parts of the API you’re referring. While there are a handful of bugs in the SDK that prevent direct consumption from C++, it is certainly possible as we are doing it in our project.
To be honest, some of what you’re saying seems to boil down to, learning new things is hard and people shouldn’t have to do hard stuff. But the reality is that the SDK is striving for an object oriented paradigm; it’s simply using an outdated language to do it.
Lastly, the idea that C++ compilers are not sufficiently standardized is completely untrue. Those sorts of myths are the reason many people refuse to make the switch and I don’t think perpetuating them is helpful.