I’m new to smartphone development, so forgive me if this is a dumb question. Is there an android SDK coming, is it in the dropbox already? It all looked to be IOS based to me.
getting this error when trying to build/run, got the latest version of xcode
Undefined symbols for architecture i386:
“OBJC_CLASS$_BleGattServices”, referenced from:
objc-class-ref in DeviceScan.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
@bdietz Are you trying to build for an emulator (i386)? If you connect your iOS device and build for it, it would work (there are still some warnings, but it build and runs).
If you’re going to ship libBleGattServices.a as a static library you’ll need to provide another version that targets i386 for the simulator in addition to the arm one.
Alternatively, you could open source that library as well which is a lot easier for clients to integrate into Xcode via something like cocoapods. Most ios libraries don’t ship as precompiled binaries since it’s such a pain to integrate with the existing apple dev tools.
@"Stephen Svajian" - Think I figured out the error you’re referencing
If you’re using Xcode 5.1 or newer and targeting an iPhone 5s device you’ll still get this build error
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s).
The problem is Xcode defaults to building for arm64 if the device supports it but the static lib only supports 32-bit armv7. To workaround this you need to update the project’s build settings. Set ‘Architectures’ to $(ARCHS_STANDARD_32_BIT) and remove arm64 from ‘Valid Architectures’. Also make sure that ‘Build active architecture only’ is set to Yes.
@npankey That was far simpler than my horrible workarounds. This answer is MUCH appreciated. Let me also second the desire to open the source for libBleGattServices.a. This object file caused me two week’s delay because I only fiddle on weekends. The ability to simply recompile would have helped tremendously. I think the idea was related to exclusivity which is also now being lifted.
@"Stephen Svajian" it seems that all the workarounds for libBleGattServices.a stopped working with the update to iOS 8 and Xcode 6.0.1 ( @npankey let us know if this is working for you). Can you provide sources or build the correct library for all architectures ASAP?
@npankey Yep, it worked for me on Xcode 5 and iOS 7. I just upgraded to iOS 8 today and decided it was time to move to XCode 6. I definitely can move back to XCode 5 for time being - but I’d rather have it solved and cleaned up on Anova’s side rather sooner than later… It’s great to know they are working on it (and I perfectly understand they have quite a few things cooking at the same time, including Android and the production app).
@vtemkin Given the problems with the existing lib I’ve decided to hack together an alternative based on what I’ve figured out from my experiments so far.
This is still very much a proof of concept but at least shows how the actual BT communication works. I plan to flush this out more in the next couple of days. Ideally, I’d like to turn this into a block-based API that also queues requests.
@npankey Thanks. I got it working The dropbox link from the first post seems to have expired.
A few general questions:
Are there really no dedicated GATT characteristic for current temp and set temp? It seems counter intuitive to send a command every time and wait for the response instead of just reading the values. How can the app/client know when the user changes the temperature manually on the device?
Whenever I send a command, the device beeps 6 times at quite high volume. Even for reading temperatures. Is there a way to disable this. Users will be annoyed when their anova peeps every time the app reads the current or set temperature.
Android related questions:
When I send a command to read the temperature, I’m reading the response from “onCharacteristicWrite” in UINT8 format. However, the values don’t make any sense. Is this the wrong approach?