The current Windows Mobile Bluetooth Broadcom stack SDK comes with two libs that can be used:
BtSdkCE50.lib and BtSdkCE30.lib
The BtSdkCE50 is compiled for THUMB while BtSdkCE30 is for ARM.
You'll need BtSdkCE50 if you're planning to use:
GetBTWCEVersionInfo, AddServiceName, SetSecurityLevel and other APIs.
So because of the need to use these functions it is almost compulsory to link your Bluetooth application with parameter machine:THUMB . Unless you can go with what BtSdkCE30 has to offer, only.
An even bigger issue is with a set of functions, out of which I've identified: IsDeviceConnectable and IsStackServerUp. Simply calling any of these , results in "Not a valid Pocket PC application" critical error message, before the application has any chance to start:
It makes no difference if only BtSdkCE30 or BtSdkCE50 or both are included. For some reason the resulting linked code is invalid. This behavior has been tested on several Windows Mobile devices, ranging from WM4.0 to WM6.5.
Not sure how to fix this, and unfortunately despite the high popularity of the Broadcom stack among newer devices, there is little documentation available to developers.