MQTT sample using the Paho's MQTT Packet Library.


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

* Ethernet LAN for testing purposes.

* MQTT 3.1.1 Gateway.

  NOTE for Debian/Ubuntu users: it seems that the mosquitto server
       included with these distros does not support MQTT 3.1.1.
       Uninstall the mosquitto server and follow the instructions
       provided at the mosquitto website:

                    http://mosquitto.org/download/

       to update the application.

* Galileo Gen 2 Development Board.

* USB-UART cable: CH340, FTDI 6-pin or equivalent for debugging.

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
---------------------

* 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.

  Inside samples/net/paho_mqtt_clients/publisher, run the following
  commands:

  git clone https://git.eclipse.org/r/paho/org.eclipse.paho.mqtt.embedded-c paho

  Now "paho" contains the MQTT Packet Library.

* Read src/main.c, change the IP addresses according to the LAN
  environment.

* make pristine && make are enough to build this sample.

* Follow the steps indicated here:

  https://www.zephyrproject.org/doc/board/galileo.html

  to load the binary into the Galileo Dev Board.


Usage
-----

* From a terminal, run the gateway:

  mosquitto -v

* A subscriber is required to receive the messages sent by this
  publisher. For example, the following command must be executed from a
  terminal to create a MQTT subscriber:

    mosquitto_sub -t sensors

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

* Connect the USB-UART cable to the Galileo. Open a terminal and run:

  screen /dev/ttyUSB0 115200

* Connect Galileo to the LAN, Turn on the board.

  Once Galileo is connected to the MQTT Gateway, the following text
  will appear in the screen terminal:

    WARNING: no console will be available to OS
    error: no suitable video mode found.

    --------------------------------
    Pingreg, rc: 0
    Publish QoS0, rc: OK
    Publish QoS1, rc: OK
    Publish QoS2, rc: OK


  The subscriber application will receive the following messages:

    OK QoS0
    OK QoS1
    OK QoS2

  The mosquitto application will show something like this:

    1469221705: mosquitto version 1.4.9 (build date 2016-07-01 15:07:21+0000) starting
    1469221705: Using default config.
    1469221705: Opening ipv4 listen socket on port 1883.
    1469221705: Opening ipv6 listen socket on port 1883.
    1469221712: New connection from 192.168.1.110 on port 1883.
    1469221712: New client connected from 192.168.1.110 as zephyr (c1, k0).
    1469221712: Sending CONNACK to zephyr (0, 0)
    1469221712: Received PINGREQ from zephyr
    1469221712: Sending PINGRESP to zephyr
    1469221712: Received PUBLISH from zephyr (d0, q0, r0, m0, 'sensors', ... (8 bytes))
    1469221712: Received PUBLISH from zephyr (d0, q1, r0, m1, 'sensors', ... (8 bytes))
    1469221712: Sending PUBACK to zephyr (Mid: 1)
    1469221713: Received PUBLISH from zephyr (d0, q2, r0, m2, 'sensors', ... (8 bytes))
    1469221713: Sending PUBREC to zephyr (Mid: 2)
    1469221713: Received PUBREL from zephyr (Mid: 2)
    1469221713: Sending PUBCOMP to zephyr (Mid: 2)


Final Remarks
-------------

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.


Compiler Warnings
-----------------

The network layer used in this sample code will be replaced once the
new IP stack is ready. So, "netz" is tagged as "deprecated" and the
following warnings will be displayed by the compiler:

warning: 'netz_tx' is deprecated [-Wdeprecated-declarations]
