Sample Client Code that showcases how to use IBMIoTF client library to connect the mbed FRDM-K64F device to the IBM Internet of Things Cloud service in registered mode.

Dependencies:   IBMIoTF

Here are the instructions to use this Client Sample:

- Get the program either in online compiler / local to the system

- Edit main.cpp to update the below pasted lines to contain correct Watson IoT Platform configuration:

char *orgId = "OrganizationID";

char *deviceType = "DeviceType";

char *deviceId = "DeviceID";

char *method = "token";

char *token = "DeviceToken";

- Save the changes and compile to get binary

- Deploy obtained binary onto FRDM K64F board and press reset button to start execution of the program

- Use any of the suitable terminal utility (screen in MAC OS) to see the log statements printed onto console by the Client Sample

- By default, the client sample after establishing secure connection to Watson IoT Platform, publishes 10 device events at the interval of 3 seconds and terminates

- Client sample subscribes to receive the device commands as well, one can try sending device commands using application, we should see a statement being dumped from processCommand callback on the console before termination of sample

Revision:
0:3caca8fc3cd2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 31 06:13:55 2017 +0000
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corp.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and Eclipse Distribution License v1.0 which accompany this distribution.
+ *
+ * The Eclipse Public License is available at
+ *    http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ *   http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *    Lokesh K Haralakatta  Initial implementation 
+ *******************************************************************************/
+#include "DeviceClient.h"
+#include "Command.h"
+using namespace IoTF;
+
+// Callback Method to process the received command by the device
+void processCommand(IoTF::Command &cmd)
+{
+    printf("Command received name: %s, payload: %s\r\n", cmd.getCommand(), cmd.getPayload());
+}
+
+int main() {
+
+    // Set Watson IoT Platform connection parameters
+    // Update the below parameters with actual values before build and execution of sample
+    char *orgId = "OrganizationID"; // Replace with correct organization ID
+    char *deviceType = "DeviceType"; // Replace with correct device type as registered on WIoTP
+    char *deviceId = "DeviceID"; // Replace with correct device ID as registered on WIoTP
+    char *method = "token"; // Retain this as token for authentication method
+    char *token = "DeviceToken"; // Replace with device token as obtained from WIoTP
+    int port = 8883; // Secure port can be either 8883 or 443
+    
+    // Create DeviceClient Instance using above connection parameters
+    DeviceClient *client = new DeviceClient(orgId,deviceType,deviceId,method,token,port);
+    
+    // Call Device Client connect method to establish secure connection to Watson IoT Platform
+    if(client->connect()){
+        //Device Client Connected to Watson IoT Platform
+        printf("Client Connected to WIoTP\r\n");
+        
+        //Subscribe to device commands with CMD Callback to process the received command
+        client->setCommandCallback(processCommand);
+        
+        // Create buffer to hold the event
+        char buf[50];
+        int count = 0;
+        sprintf(buf,"{\"d\":{\"temp\":\"35\"}}");
+        
+        // Keep publishing the 10 device events for every 3 seconds
+        while(1){
+           client->publishEvent("evt", buf);
+           wait(3);
+           count++;
+           if(count == 10)
+             break;
+        }
+        
+        // Disconnect Device Client from WIoTP if still in connected state
+        if(client->isConnected()){
+           printf("Disconnecting the client from server...\r\n");
+           client->disconnect();
+        }
+        else
+           printf("Client already disconnected from server...\r\n");
+    }
+    else
+        printf("Client Not Connected to WIoTP\r\n");
+
+    //Release resources allocated to Device Client
+    delete client;
+    
+    printf("!!! Done !!!\r\n");
+    return 0;
+}
\ No newline at end of file