MQTT sample using the Paho's MQTT Packet.

Requirements
------------

* An Ethernet LAN for testing purposes.

* A MQTT 3.1.1 Gateway running in the LAN.

* A Galileo Dev Board connected to the LAN.

* A FTDI 6-pin cable to see debugging information from Galileo.

The Mosquitto MQTT implementation is used in this document.
However, any MQTT 3.1.1 compliant gateway must work. See
http://mosquitto.org/ for more details.


Building instructions
---------------------

* Change src/config.h according to your network configuration.

* Download the Paho's MQTT Embedded C Library.
  See http://www.eclipse.org/paho/clients/c/embedded/ for more
  information about Paho's MQTT Packet Library.

* Modify the src/Makefile to reflect the location of your Paho
  repository. In this example, it is assumed that src/paho_mqtt_pkt
  is the directory that contains the MQTTPacket source code.

Usage
-----

* From a terminal, run the gateway:

  mosquitto -v

* Connect the FTDI cable to the Galileo. Open a terminal and run:

  screen /dev/ttyUSB0 115200

* Turn on the Galileo.

* Galileo's MQTT Client will publish to the topic "zephyr" the
  following message: "Hello World from Zephyr!"

* A subscriber is needed in order to receive the messages sent by the
  Galileo. For example, the following command must be executed from a
  terminal to create a MQTT subscriber:

    mosquitto_sub -t zephyr

  If this command is executed from a computer other than the gateway,
  the host must be specified.

* To publish a message, the following command can be used:

    mosquitto_pub -t zephyr -m "Hello World"

  The "Hello World" message must be displayed in the Galileo's debugging
  console.


Final Remakrs
-------------

The provided source code perhaps does not exemplify the best way to use
Paho's MQTT in Zephyr. For example, PINGREQ must be sent periodically,
but not too often as in this use-case. Furthermore, DISCONNECT is never
used here.
