## Which API is right for me? ## Within our Developer Tools for PC/Mac, there are multiple methods to connect to our headsets. These methods differ based on the platform(s) you'd like to work with and the language(s) you'd like to code with: === 1. ThinkGear Connector (TGC) === Runs as a background program, allowing your program to get ThinkGear data from a standard TCP/IP socket * **easiest** (The TGC daemon app provides UI for setting up and maintaining the COM port connection to the headset for you) * Platforms: Any platform that can communicate through **sockets** (The TGC daemon program itself must run on a **Windows** or **Mac OSX** system though) * Languages: **Flash**, or any language that can communicate through **sockets** (which includes almost all popular programming languages) [[thinkgear_connector_tgc|Documentation Link]] === 2. ThinkGear Communications Driver (TGCD) for Various Languages === Link a shared library: .dll or .bundle * **moderate** (You have to call functions from the shared library) * Platforms: **Windows**, **Mac OSX**, **Windows Mobile**, or any platform that can use functions from a **.dll** or **.bundle** * Languages: **C/C++**, **C#**, **Java (through JNI)**, or any language that can call shared library functions A J2ME .jar library * **moderate** (You have to call functions from the .jar library, and only for J2ME platforms) * Platforms: **J2ME** * Languages: **Java** === 3. ThinkGear Communications Protocol === Specification Document {{ :tgam1_communication_protocol_-_copy.pdf |}} * **harder** (You have to open and read from the serial I/O port, and then parse the incoming data stream) * Platforms: **Any platform** that can open and read from a serial I/O (or UART) port * Languages: **Any language** that can open and read from a serial I/O port