So this past month, I’ve been continuing work on the Android Wine Agent. Specifically, I’ve been working on Bluetooth communication between Android devices as part of the reasoner and translating the CommDelegate classes from the IOS version.
From the Android standpoint, Bluetooth is separated into two main parts, device detection and connection management. The Android application must handle device discovery/detection because the Android Bluetooth API is closely linked to the application activity. However, connection management is not so restrictive, so I’m working on incorporating this into the reasoning library we’re building.
I was able to create a quick test application that was capable finding devices, connecting to a device, and sending the bytes of “Hello!” from one device to another. This was a great start for a proof of concept but did not fit into the framework for building the reasoner library, because connection management was not separated enough from the application activity. So I’ve been working on abstracting the Bluetooth connection management to fit into the framework of the reasoner. In the process of adapting it to fit into this framework, I seem to have broken something. Currently, device discovery, pairing devices, and creation of an RFCOMM channel are working, but when I go to read or write from the communication channel, the socket is always closed.
All the Wine Agent projects have started utilizing trac, which I feel is a huge step forward. Our goal is to do ~1 trac item per week, which is a manageable goal that ensures that progress continues to be made in all aspects of the Wine Agent.
Recently, I’ve been asked to translate the IOS classes that deal with server communication. I have a previous blog post about my first experience with Objective C, but to reiterate, Objective C syntax was needlessly complicated and confusing (especially for method invocation), but after a couple of days and countless Google searches, I was able to translate almost all of the completely uncommented Comm Delegate classes.
As for next (this?) month, I plan to keep working on the trac items to continue moving the Android Wine Agent closer to a release. I’m also going to work on making the Bluetooth communications work within the reasoner.