How to connect hardware device to an Iphone application over Bluetooth - c++

I have a hardware device which would communicate with a third party application on Android and IOS over Bluetooth to send to and fro data.
With Android I am able to achieve this, however in case of IOS I don't have any information.
Till now the information gathered to work with IOS devices is:
1. Application runs on Iphone 5
2. Hardware is MFI enabled
3. IAP2 is supported
Please guide how to connect the hardware to an application and what other information is essential?
Is AppName, BundleID, BundleSeedID and ProtocolName required to connect? If yes how we can get these details?
I tried unzipping the application but the Info.plist file looks garbled and not able to get much info from that.
Currently I am able to connect the hardware with IPhone over Bluetooth, but my real concern is how to communicate with a specific application on it.
Also if you can provide some link or pseudo code to initiate a session between hardware and IOS application.

I assume you've already connected the SPP profile on Android. However for iOS the SPP(BLE is another story and do not need MFi) was hidden but need MFi authentication for raw data links.
Since you want to establish the raw data link between your hardware device and your iPhone, you need:
Make sure your hardware has MFi chip, generally this chip is connected with your hardware by I2C.
After step 1 make sure you can communicate with this chip at your hardware, fortunately the hardware vendor or MFi vendor will support this kind of code or binary.
The MFi channel have a specific UUID(which may defined by Apple?) to replace the SPP official(which defined by Bluetooth SIG) UUID, hence if you want to make connection between your hardware and your iPhone, you need register the iOS defined UUID and make them as same as the normal SPP profile.
After the RFCOMM channel created, iOS would first authenticate the link, just like 3-way handshaking or something, so your hardware just communicate with the MFi chip and transfer the token to iOS.
After that iOS would set this RFCOMM channel(same as SPP actually) for your hardware, then you can send/recv data between them.

Related

Windows Biometric Framework for fingerprint device

We have our fingerprint device which is working properly as USB device.
Data capturing works fine with our proprietary application.
Currently we are using custom vendor USB class for driver development.
When we plug this device, this device is listed in "Universial Serial Bus Controller" catagories in Windows Device Manager.
We want to use Windows Biometric Framework for the same device to achieve Windows Biometric login.
I understand that, we need to write WBDI compitible driver but I have query related to fingerprint device hardware.
We are targeting Windows 7 and later operating systems.
Will there be any changes required in hardware to work with WBDI driver ?

Suggestions for security of hardware and software for an image processing application

We have a fluid monitoring physical device(hardware with camera, PCB board, LED lights etc). This hardware is connected to computer via USB cable. It captures images and these images are processed in C++ software on PC. As a security feature, we have already implemented node authentication using cryptoauthentication chips like ATECC608A. More information below.
I wanted to know if there were some other methods which I can use to improve the security further.
I want to make sure that the device will only work with the laptop/PC which we provide.
Already implemented: The PCB board has ATECCX608a cryptoauthentication chip. we store our ssl certificate and verify the certificate chain
and also do random nonce challenge for device authentication. More on this please refer to the link below
https://www.digikey.com/eewiki/display/Motley/ATECC508A+Node+Authentication+Example+Walk-through
This sounds to me like you want mutual authentication. You want the PC to authenticate the USB device, but you want the USB device to authenticate the PC as well. So construct the SSL handshake you are already using to perform a mutual (client) authentication and make sure everyone has certs from the same CA (likely you)

hardware specification of Sony SmartEyeglass

Can anyone out there provide further information on CPU, RAM, flash storage and battery type of the SmartEyeglass? I need this to compare the hardware specification with other smartglasses for my bachelor thesis.
In addition, it would be nice to know if the firmware running on the SmartEyeglass is based on Android.
Those hardware specifications are not publicly shared. SmartEyeglass is not Android based, but SmartEyeglass apps are Android apps that run on the smart phone.
SmartEyeglass acts as an accessory for the phone. SDK let's you display the user interface on the SmartEyeglass, take photos using camera of SmartEyeglass, get sensor data from SmartEyeglass.
To learn more about it, please consult to SDK pages.
https://developer.sony.com/develop/wearables/smarteyeglass-sdk/api-overview/

Windows form application for USB port

Previously I have work with Windows Form application to establish some RS232 connection. I used the already provided serial port component (SerialPort), and I was able to establish RS232 communication relatively easy.
Now, I was wondering if there will be something similar in Winodows Form application to establish a USB communication ?
It seems there is this WinUSB API that provides a very low level interfacing with the device.
However, I am not sure how easy will that be? Also, not sure how easy will it be to integrate into Windows Form application ?!
Will there be a simpler version of such USB interface API?
I don't have to stick to Visual Studio. Is there other c++ USB API, besides WinUSB, that is more standard that people use? I would like to develop a GUI API that does some communication over USB. If need be, I can use Python or some other tools if it facilitates the process?
Thanks in advance.
Although USB is a serial protocol, you can't treat USB like a serial port:
It's dependant on what the actual device is. For example a mobile phone, may provide several "endpoints" for USB, one being a serial port to use the phone as a modem, one as a storage device allowing you to transfer photos and music files to/from the phones storage, and as a camera device that you can take photos with. All of these have different behaviour and need a USB driver-plugin to make it behave correctly - these are typically shipped with Windows, and your phone will appear as COM5:, the E: or "Samsung Galaxy S3 Mini" drives and as a camera under the "cameras and scanners".
Of course, you can programmatically open all these devices, but it is done as the device-type that they present as on the inside of windows (so you use serial port functions or file functions or camera functions).
You CAN also write a device driver for a device, if you have sufficient details of how it works.
But there's no real way to "open the port". The USB API is a driver API, not a user-mode API. Here's a page to start from to understand USB drivers:
http://msdn.microsoft.com/en-gb/library/windows/hardware/ff540215%28v=vs.85%29.aspx
There is a WinUSB driver, which allows a single application to access a single device, assuming you know how to operate that device.

How to send stream data via Bluetooth from an iPhone/iPod Touch to a Windows C++ application?

I need to develop an iPhone/iPod Touch application that creates a server to send some data stream (characters or bytes) to a Windows C++ application via Bluetooth. I'm thinking of creating a TCP connection, but don't know where to start.
What iPhone API should I use do to something like this? Does anyone knows some code examples that i can use to do this?
And in Windows, what should I use to support this kind of communication?
Thanks
Yes. From what it looks like you can use the PAN bluetooth profile (the same profile used for tethering) with everything except the original iPhone.
Here's an article doing bluetooth over iPhone/iPad using GameKit. The article notes that you would need at least 2 iPhone/iPad devices running iPhone OS 3.0, but I wouldn't take that as an impossibility to talk to any other bluetooth capable device.
Update
This forum indicates that the iPhone is only capable of headset pairing. It could be that the iPhone is "picky" about what you can pair it with.
"The iPhone only recognizes the "headset" profile. Another well thought out idea from Apple. No A2DP profiles, no OBEX."
-sapporobaby
Update 2
As jamone as indicated iPhone 3.0 supports A2DP. How nice is that?
Here's a table listing of iPhone/iPad bluetooth supported profiles
I'm pretty sure third-party developers don't have sufficient access to the Bluetooth stack to do this via published APIs (i.e. via an app you publish to the App Store).
Is using WiFi an option? That's what most developers seem to be using for client/server communications. If that's the case, see if you can distribute Apple's Bonjour runtime with your app. If you search the developer site for Bonjour, they have code samples (though probably no Windows examples).