not running

Dependencies:   TextLCD MQTT

Revision:
2:16b3bd337db2
Parent:
0:3b4906b8a747
--- a/Communication.h	Tue Dec 10 23:40:25 2019 +0000
+++ b/Communication.h	Wed Dec 11 20:20:12 2019 +0000
@@ -2,15 +2,19 @@
 #define _COMMUNICATION_H_
 
 #include "mbed.h"
+#include "rtos.h"
 #include "MQTTNetwork.h"
 #include "MQTTClient.h"
 #include "MQTTmbed.h"
+#include <string.h>
+#include <queue>
+#include <mutex>
 
 
 typedef struct {
-    int    speed; // speed for AccCar, -1 for Road
-    int    position; // position for AccCar, update number for Road
-    char*  topic;
+    char id;
+    char speed; // speed for AccCar, -1 for Road
+    char position; // position for AccCar, update number for Road
 } message_t;
 
 class Communication {
@@ -22,35 +26,40 @@
     static int flags[5];
     
     // Singleton
-    static Communication *getInstance();
+    static Communication *getInstance(char* t1, char* t2, char* t3, char* t4);
     
     // MQTT Setup
     void setup_wifi();
-    void setup_mqtt(MQTTNetwork &network);
+    void setup_mqtt(MQTTNetwork* network);
     static void message_arrived(MQTT::MessageData& md);
     static void control_arrived(MQTT::MessageData& md);
     static void sync_arrived(MQTT::MessageData& md);
     int send_message(char* topic);
-    int subscribe_to_topic_position(char* topic);
     int subscribe_to_topic_control(char* topic);
     int subscribe_to_topic_sync(char* topic);
-    void publish_car(char* topic, int speed, int position);
-    void publish_road(char* topic, int num);
+    void publish_car(int id, int speed, int position);
+    void publish_road(int num);
     void start(); // function for serving requests (single thread)
     void reset(); // function to create and start the singleton thread
     void stop();
     
-private:
+//private:
     static Communication *singleton;
     
     WiFiInterface *wifi;
+    MQTTNetwork* network;
     MQTT::Client<MQTTNetwork, Countdown> *client;
-    Thread* thread;
+    static Thread* thread;
+    
+    Mutex* mutex;
+    std::queue<message_t>* q;
     
-    MemoryPool<message_t, 10> mpool;
-    Queue<message_t, 10> q_car;
+    char* topic_pub_position;
+    char* topic_sub_control;
+    char* topic_pub_receive;
+    char* topic_sub_send;
     
-    Communication();
+    Communication(char* t1, char* t2, char* t3, char* t4);
     
 };