A bit of background first: the distinction between incoming and outgoing RFCOMM (Bluetooth stack protocol for virtual COMs) ports is necessary because it's always one of the communicating devices that initiates the connection (a bit similar to TCP sockets - where you have server and client).
- The outgoing COM port is used when the PC initiates the connection to the
remote device (opening the port initiates RFCOMM connection to the remote device).
- The incoming COM port is used when the remote device initiates the
connection.
Once the connection is opened it is bidirectional, regardless of the type.
That said, this Bluetooth module supports both master and slave mode (see manual chapter 2), that's why it advertises 2 RFCOMM/SPP ports, I guess. If you want PC to initiate the connection, use COM6, otherwise use COM7.
Why you see no echo in PuTTY? By default there's no local echo, and you actually shouldn't see any characters you type (unless you short UART_RX to UART_TX, or have some real device attached there to communicate with). The module itself is transparent (in the data mode, that is).
Also, baud rate etc. shouldn't really matter for Blueooth connection - note, that chapter 3.2 refers to configuring the device via physical serial port (UART_RX/TX pins, i.e. from the device side), while 3.3 describes configuring over virtual port (i.e. from the PC side). I somehow feel you're confusing the module sides ;)
This excerpt from the manual is quite important:
To connect to FireFly, browse for
services, you should see: “SPP”
profile with a virtual COM port. Open
this virtual COM port to create a
Bluetooth connection. Once connected,
the device will be in data mode
allowing data to flow in both
directions as if the serial port were
locally attached to the PC. The device
must be in command mode for
configuration and programming. To
enter command mode type “$$$” (three
dollar signs) from either the remote
Bluetooth connection or the local
serial port connection. You must enter
command mode within 60 seconds
(configurable by setting the config
timer).
Cool module, btw!
As you probably know the BLE112 is a Bluetooth 4.0 single mode module, meaning it doesn't support/interoperate with Bluetooth devices older than version 4.0. The iPhone 4s and iPhone 5 are pretty much the most popular phones that have Bluetooth 4.0 support and provide APIs to use Bluetooth 4.0. Some android vendors have their own APIs such as Motrola for its Razr phone, but there is no Android API for Bluetooth 4.0. Currently any solution you make is not going to work with just any smartphone with Bluetooth.
Bluetooth 4.0 is also very different to older Bluetooths in the way it transmits and handles data. All data packets are only 20 bytes long. As you have read, at the heart of it is the slave device's (typically a sensor) GATT database which can be through of as a table with keys and values. Compared to the serial port profile (SPP) this is a very different way of thinking of data.
You can read and write the values (attributes) of the keys (attribute handles) locally (sensor / slave) or remotely (mobile phone). The idea with gatt is that instead of you writing your data like name,measurement,timestamp in one long data stream, you update the name attribute ("value"), measurement attribute and timestamp attribute in the sensor's local gatt. These changes then gets indicated to the mobile phone over the air. In short: Bluetooth 4.0 is not intended to be used for creating a data stream.
However, it is always possible to simulate or emulate streaming even when everything is packetized. Bluegiga provides a "Bluetooth Smart: Cable replacement application note" (registration required) which discusses exactly how to replace a UART cable with Bluetooth 4.0 and they give detailed explanations of how to accomplish that with the BLE112.
Update: Any device with Bluetooth and an Android version 4.3 or newer supports Bluetooth 4.0 natively. All the old vendor specific stacks have been deprecated in favor of the official support.
Best Answer
There are two ways, due to the limited HC-06 AT command set and lack of hardware support (This varies by revision or carrier board, your milage may vary). I got my limited information from http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/
The first is by connecting to the high end of the led on the carrier board (or to pin 24). If it is blinking/switching on and off, it is not paired. If it is a steady high/solid light, you are paired to the pc.
The second is to send an AT command. For example, if you send
AT
when not paired, you will get backOK
. If you sendAT
while paired, you will not get a response. You can use this to know what is happening.