5 years ago.

URGENT: can't compile after updating ble_api library

Just updated the ble_api library and now program doesn't compile, with a whole bunch of errors

Warning: Argument of type "const uint32_t *" is incompatible with parameter of type "void *" in "nRF51822/TARGET_MCU_NRF51822/sdk/source/libraries/fstorage/fstorage.c", Line: 469, Col: 27 Error: Identifier "MBED_WEAK" is undefined in "BLE_API/source/BLE.cpp", Line: 98, Col: 2 Error: Expected a ";" in "BLE_API/source/BLE.cpp", Line: 98, Col: 27 Warning: Parsing restarts here after previous syntax error in "BLE_API/source/BLE.cpp", Line: 108, Col: 57 Error: Identifier "InstanceConstructor_t" is undefined in "BLE_API/source/BLE.cpp", Line: 109, Col: 15 Error: Variable "BLEInstanceBase" is not a type name in "BLE_API/source/BLE.cpp", Line: 146, Col: 13

Do I need to make some changes in my project to support updated library?

my platform is the nRF51DK with BOOTLOADER option I also updated the nRF51822 library

just updated mbed also, but getting the ole' "can't find device.h" error again

posted by Andrew Fox 15 Sep 2016

2 Answers

5 years ago.

There are issues with latest nRF51822 / BLE / mbed combination. This is tracked in this bug. Workaround: use the 'Revisions' panel to revert back to an earlier version of the library.

Accepted Answer

I've reverted nRF51822 and BLE to previous and mbed to rev 122, and now compiler is not recognizing input types AnalogIn and InterruptIn.

posted by Andrew Fox 15 Sep 2016

Have had to go back to 121 to get it compiling. Hope nothing else is broken that I don't know about. I've got a production release due and now I can't be confident that any issues are my code or libraries. This is really frustrating and makes me re-consider open source path for production code. Really appreciate all the effort from the mbed team, and know you're doing your best, but maybe it's a problem with the system.

posted by Andrew Fox 15 Sep 2016

Hi Andrew, yeah, the modular approach that we have in mbed 2.0 where nRF51822, BLE and mbed are separate modules is something that can lead to issues like these. For mbed OS 5 we choose a different route where we package everything up in one release (e.g. mbed OS 5.1.2) against which we can run integration tests for every target (on real devices). Going the monolithic route there will hopefully not leave us with issues like this in the future.

Other than that, when developing code for production systems I'd stick to one set of library versions during development, and not upgrade unless there are severe issues that are fixed upstream. There's plenty of assumptions made when writing the code which upstream libraries might change. You'd have to re-do current consumption tests, sleep modes, etc.

posted by Jan Jongboom 16 Sep 2016
5 years ago.

You have to update your MBED library within your project. Right click on MBED -> Update

Wow, you saved my life, thanks.

posted by Johnny Sung 07 Oct 2016