Adjusting C++ files to compile with gcc 4.9.3
[iot2.git] / benchmarks / Cpp / Lifxtest / Lifxtest.cpp
index 53cb425..07ae82f 100644 (file)
@@ -4,13 +4,15 @@
 
 #include "Lifxtest.hpp"
 #include "LifxLightBulb.cpp"
+#include "LabRoom.cpp"
 #include "Iterator.hpp"
 
 
 // External create, destroy, and init functions
 extern "C" void* createLifxtest(void** params) {
        // Arguments: IoTSet<void*>* lifx_light_bulb
-       return new Lifxtest((IoTSet<void*>*) params[0]);
+       //return new Lifxtest((IoTSet<void*>*) params[0]);
+       return new Lifxtest((IoTSet<void*>*) params[0], (IoTSet<void*>*) params[1], (IoTRelation<void*,void*>*) params[2]);
 }
 
 
@@ -25,11 +27,15 @@ extern "C" void initLifxtest(void* t) {
        lt->init();
 }
 
+
+// Empty constructor (for testing)
 Lifxtest::Lifxtest() {
        log.open("Lifxtest_object_cpp.log");
        log << "lifx_light_bulb initialized!" << endl;
 }
 
+
+// Constructor with only 1 IoTSet object (lifx_light_bulb)
 Lifxtest::Lifxtest(IoTSet<void*>* _lifx_light_bulb) {
 
        log.open("Lifxtest_object_cpp.log");
@@ -37,6 +43,19 @@ Lifxtest::Lifxtest(IoTSet<void*>* _lifx_light_bulb) {
        log << "lifx_light_bulb initialized!" << endl;
 }
 
+
+// Constructor with 2 IoTSet and 1 IoTRelation objects
+Lifxtest::Lifxtest(IoTSet<void*>* _lifx_light_bulb, IoTSet<void*>* _lab_room, IoTRelation<void*,void*>* _roomLightRelation) {
+
+       log.open("Lifxtest_object_cpp.log");
+       lifx_light_bulb = _lifx_light_bulb;
+       lab_room = _lab_room;
+       roomLightRelation = _roomLightRelation;
+       log << "lifx_light_bulb initialized!" << endl;
+}
+
+
+// Constructor with void** argument
 Lifxtest::Lifxtest(void** args) {
 
        log.open("Lifxtest_object_cpp.log");
@@ -49,7 +68,7 @@ Lifxtest::~Lifxtest() {
 }
 
 
-void Lifxtest::init() {
+/*void Lifxtest::init() {
 
        unordered_set<void*>* bulbSet = lifx_light_bulb->values();
        //for (unordered_set<void*>::const_iterator itr = bulbSet->begin(); itr != bulbSet->end(); ++itr) {
@@ -63,19 +82,21 @@ void Lifxtest::init() {
                log << "Executing init!" << endl;
                this_thread::sleep_for (chrono::milliseconds(1000));
 
-               for (int i = 0; i < 5; i++) {
-                       lifx->turnOff();
+               for (int i = 0; i < 10; i++) {
+
+                       lifx->init();
+//                     lifx->turnOff();
                        //cout << "Turning off!" << endl;
                        log << "Turning off!" << endl;
                        this_thread::sleep_for (chrono::milliseconds(1000));
-                       lifx->turnOn();
+//                     lifx->turnOn();
                        //cout << "Turning on!" << endl;
                        log << "Turning on!" << i << endl;
                        this_thread::sleep_for (chrono::milliseconds(1000));
                }
                
-
-               for (int i = 2500; i < 9000; i += 100) {
+*/
+/*             for (int i = 2500; i < 9000; i += 100) {
                        //cout << "Adjusting Temp: " << i << endl;
                        log << "Adjusting Temp: " << i << endl;
                        lifx->setTemperature(i);
@@ -107,11 +128,82 @@ void Lifxtest::init() {
 
        log << "End of iteration.. closing!" << endl;
        log.close();
-       while(true) { } // Testing infinite loop - will need to do "pkill IoTSlave"
-}
+       //while(true) { }       // Testing infinite loop - will need to do "pkill IoTSlave"
+}*/
+
+
+void Lifxtest::init() {
+
+       unordered_set<void*>* bulbSet = lifx_light_bulb->values();
+       unordered_set<void*>* roomSet = lab_room->values();
+       unordered_multimap<void*,void*>* roomLightRel = roomLightRelation->values();
+       log << "Size of map: " << roomLightRel->size() << endl;
+       //for (unordered_set<void*>::const_iterator itr = bulbSet->begin(); itr != bulbSet->end(); ++itr) {
+       for (auto itr = roomSet->begin(); itr != roomSet->end(); ++itr) {
+               log << "Getting Room!" << endl;
+               //Room* rs = (Room*) *itr;
+               RoomSmart* rs = (RoomSmart*) *itr;
+               log << "Getting Room! ID: " << rs->getRoomID() << endl;
+               //auto itrLight = roomLightRel->find(rs);
+
+               /*if (itrLight == roomLightRel->end())
+                       log << "No match!" << endl;
+               //while (itrLight != roomLightRel->end()) {
+               else {
+                       //LightBulb* lifx = (LightBulb*) itrLight->second;
+                       log << "Getting LightBulb!" << endl;
+                       LightBulbTest* lifx = (LightBulbTest*) itrLight->second;
+                       log << "Executing init!" << endl;
+                       lifx->init();
+                       for (int i = 0; i < 10; i++) {
+                               lifx->turnOff();
+                               //cout << "Turning off!" << endl;
+                               log << "Turning off!" << endl;
+                               this_thread::sleep_for (chrono::milliseconds(1000));
+                               lifx->turnOn();
+                               //cout << "Turning on!" << endl;
+                               log << "Turning on!" << i << endl;
+                               this_thread::sleep_for (chrono::milliseconds(1000));
+                       }
+                       for (int i = 2500; i < 9000; i += 100) {
+                               //cout << "Adjusting Temp: " << i << endl;
+                               log << "Adjusting Temp: " << i << endl;
+                               lifx->setTemperature(i);
+                               this_thread::sleep_for (chrono::milliseconds(100));
+                       }
 
+                       for (int i = 9000; i > 2500; i -= 100) {
+                               //cout << "Adjusting Temp: " << i << endl;
+                               log << "Adjusting Temp: " << i << endl;
+                               lifx->setTemperature(i);
+                               this_thread::sleep_for (chrono::milliseconds(100));
+                       }
 
-/*int main(int argc, char *argv[])
+                       for (int i = 100; i > 0; i -= 10) {
+                               //cout << "Adjusting Brightness: " << i << endl;
+                               log << "Adjusting Brightness: " << i << endl;
+                               lifx->setColor(lifx->getHue(), lifx->getSaturation(), i);
+                               this_thread::sleep_for (chrono::milliseconds(500));
+                       }
+
+                       for (int i = 0; i < 100; i += 10) {
+                               //cout << "Adjusting Brightness: " << i << endl;
+                               log << "Adjusting Brightness: " << i << endl;
+                               lifx->setColor(lifx->getHue(), lifx->getSaturation(), i);
+                               this_thread::sleep_for (chrono::milliseconds(500));
+                       }
+                       //++itrLight;
+               }*/
+               log << "End of one LightBulb!" << endl << endl;
+       }
+               
+       log << "End of iteration.. closing!" << endl;
+       log.close();
+       //while(true) { }       // Testing infinite loop - will need to do "pkill IoTSlave"
+}
+
+/*
+int main(int argc, char *argv[])
 {
        // LightBulb #1
        string macAddress1 = "D073D5128E300000";
@@ -138,10 +230,25 @@ void Lifxtest::init() {
        setLb->insert(llb2);
        IoTSet<void*>* lbSet = new IoTSet<void*>(setLb);
 
+       // Set of rooms
+       LabRoom *lr1 = new LabRoom();
+       LabRoom *lr2 = new LabRoom();
+       unordered_set<void*>* setLR = new unordered_set<void*>();
+       setLR->insert(lr1);
+       setLR->insert(lr2);
+       IoTSet<void*>* lrSet = new IoTSet<void*>(setLR);
+
+       pair<void*,void*>* pair1 = new pair<void*,void*>(lr1, llb1);
+       pair<void*,void*>* pair2 = new pair<void*,void*>(lr2, llb2);
+       unordered_multimap<void*,void*>* mmap = new unordered_multimap<void*,void*>();
+       mmap->insert(*pair1);
+       mmap->insert(*pair2);
+       IoTRelation<void*,void*>* rlRel = new IoTRelation<void*,void*>(mmap);
+
        //void* args[1];
        //args[0] = (void*) lbSet;
        //Lifxtest *lt = new Lifxtest(args);
-       Lifxtest *lt = new Lifxtest(lbSet);
+       Lifxtest *lt = new Lifxtest(lbSet, lrSet, rlRel);
        lt->init();
 
        //delete llb1;
@@ -154,8 +261,13 @@ void Lifxtest::init() {
        delete setDevAddress2;
        delete setLb;
        delete lbSet;
+       delete lr1;
+       delete lr2;
+       delete lrSet;
+       delete pair1;
+       delete pair2;
 
        return 0;
-}
-*/
+}*/
+