ROVER - Status library is created to retrieve hono, wlan, ethernet, internet, bluetooth status

Signed-off-by: Mustafa Ozcelikors <mozcelikors@gmail.com>
diff --git a/rover/src/status_library/status_library.cpp b/rover/src/status_library/status_library.cpp
new file mode 100644
index 0000000..9e5acd9
--- /dev/null
+++ b/rover/src/status_library/status_library.cpp
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2017 FH Dortmund and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Description:
+ *    Status library for getting WiFi, Ethernet Interface, Internet, Bluetooth, Hono Cloud status
+ *
+ * Contributors:
+ *    M.Ozcelikors <mozcelikors@gmail.com>, created 04.10.2017
+ *
+ */
+
+#include <stdint.h>
+#include <stdio.h>
+
+#include "status_library.h"
+#include "../hono_interaction/hono_interaction.h"
+
+/* Returns 1 for ON, 0 for OFF
+   Assuming the connection is named by default as 'wlan0' */
+int retrieveWLANStatus (void)
+{
+	FILE *fp;
+	char buffer[2];
+
+	/* Execute the command */
+	fp = popen("ifconfig wlan0 2>&1 | grep 'RUNNING' | wc -l","r");
+
+	/* Read from pipe */
+	fgets(buffer, 2, fp);
+
+	/* Test the output char */
+	//printf("buf=%c\n",buffer[0]);
+
+	/* Return */
+	if (buffer[0] == '0')
+	{
+		return 0;
+	}
+	else
+	{
+		return 1;
+	}
+}
+
+/* Returns 1 for ON, 0 for OFF
+   Assuming the connection is named by default as 'eth0' */
+int retrieveETHStatus (void)
+{
+	FILE *fp;
+	char buffer[2];
+
+	/* Execute the command */
+	fp = popen("ifconfig eth0 2>&1 | grep 'RUNNING' | wc -l","r");
+
+	/* Read from pipe */
+	fgets(buffer, 2, fp);
+
+	/* Test the output char */
+	//printf("buf=%c\n",buffer[0]);
+
+	/* Return */
+	if (buffer[0] == '0')
+	{
+		return 0;
+	}
+	else
+	{
+		return 1;
+	}
+}
+
+/* Returns 1 for ON, 0 for OFF */
+int retrieveINTERNETStatus (void)
+{
+	FILE *fp;
+	char buffer[2];
+
+	/* Execute the command */
+	fp = popen("ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` 1>/dev/null 2>/dev/null && echo 1 || echo 0","r");
+
+	/* Read from pipe */
+	fgets(buffer, 2, fp);
+
+	/* Test the output char */
+	//printf("buf=%c\n",buffer[0]);
+
+	/* Return */
+	if (buffer[0] == '0')
+	{
+		return 0;
+	}
+	else
+	{
+		return 1;
+	}
+}
+
+// Returns 1 for ON, 0 for OFF
+int retrieveBLUETOOTHStatus (void)
+{
+	FILE *fp;
+	char buffer[2];
+
+	// Execute the command
+	fp = popen("service bluetooth status | grep inactive | wc -l","r");
+
+	/* Read from pipe */
+	fgets(buffer, 2, fp);
+
+	/* Test the output char */
+	//printf("buf=%c\n",buffer[0]);
+
+	/* Return */
+	if (buffer[0] == '1')
+	{
+		return 0;
+	}
+	else
+	{
+		return 1;
+	}
+}
+
+// Returns 1 for ON, 0 for OFF
+// hono_interaction.cpp -> registerEntriesToHonoInstance() should be called first. It is called in main()
+int retrieveHONOStatus (void)
+{
+	/* Dumb way to do it :) TODO: Make this more generic */
+	FILE *fp;
+	char buffer[20];
+	int code;
+	int status = 0;
+
+	/* Execute the command */
+	fp = popen("curl -X PUT -i -H 'Content-Type: application/json' --data-binary '{\"check\": 1.0}' http://idial.institute:8080/telemetry/DEFAULT_TENANT/connectionCheck 2>/dev/null","r");
+
+	/* Read from pipe */
+	fgets(buffer, 13, fp); //Get the string HTTP/1.1 XXX
+
+	/* Prepare the response code XXX */
+	sscanf(buffer, "HTTP/1.1 %d", &code);
+
+	/* Debug */
+	//printf("Response=%s\n",buffer);
+
+	/* Get status */
+	status = handleCode(code);
+
+	/* Return */
+	if (status == 1)
+	{
+		return 1;
+	}
+	else
+	{
+		return 0;
+	}
+}
+
+
diff --git a/rover/src/status_library/status_library.h b/rover/src/status_library/status_library.h
new file mode 100644
index 0000000..9549c31
--- /dev/null
+++ b/rover/src/status_library/status_library.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2017 FH Dortmund and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Description:
+ *    Status library for getting WiFi, Ethernet Interface, Internet, Bluetooth, Hono Cloud status
+ *    header file
+ *
+ * Contributors:
+ *    M.Ozcelikors <mozcelikors@gmail.com>, created 04.10.2017
+ *
+ */
+
+#ifndef STATUS_LIBRARY_STATUS_LIBRARY_H_
+#define STATUS_LIBRARY_STATUS_LIBRARY_H_
+
+/* Interfaces */
+int retrieveWLANStatus (void);
+int retrieveETHStatus (void);
+int retrieveINTERNETStatus (void);
+int retrieveBLUETOOTHStatus (void);
+int retrieveHONOStatus (void);
+
+#endif /* STATUS_LIBRARY_STATUS_LIBRARY_H_ */