Cleaning up drivers/Cpp, Cpp/Lifxtest, virtuals, and iotrmi/C++ (revisiting the C...
[iot2.git] / benchmarks / Cpp / Lifxtest / Lifxtest.cpp
index 07ae82f5d24ebb07b6a207f1b1b08797a6cd34f8..6823b71065d114b2b9804fc727d300e7ef3021a7 100644 (file)
@@ -5,13 +5,10 @@
 #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]);
+       // Arguments: IoTSet<void*>* lifx_light_bulb, IoTSet<void*>* lab_room, IoTRelation<void*,void*> roomLightRelation
        return new Lifxtest((IoTSet<void*>*) params[0], (IoTSet<void*>*) params[1], (IoTRelation<void*,void*>*) params[2]);
 }
 
@@ -30,170 +27,81 @@ extern "C" void initLifxtest(void* t) {
 
 // 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");
-       lifx_light_bulb = _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");
-       lifx_light_bulb = (IoTSet<void*>*) args[0];
-       log << "lifx_light_bulb initialized!" << endl;
+        log.open("/home/iotuser/iot2/bin/iotruntime/log/Lifxtest_object_cpp.log");
+        lifx_light_bulb = _lifx_light_bulb;
+        lab_room = _lab_room;
+        roomLightRelation = _roomLightRelation;
+        log << "lifx_light_bulb initialized!" << endl;
 }
 
-
 Lifxtest::~Lifxtest() {
 }
 
-
-/*void Lifxtest::init() {
-
-       unordered_set<void*>* bulbSet = lifx_light_bulb->values();
-       //for (unordered_set<void*>::const_iterator itr = bulbSet->begin(); itr != bulbSet->end(); ++itr) {
-       log << "Get into Lifxtest init()!" << endl;
-       for (auto itr = bulbSet->begin(); itr != bulbSet->end(); ++itr) {
-               log << "Iteration init()!" << endl;
-               //LightBulb* lifx = (LightBulb*) *itr;
-               LightBulbTest* lifx = (LightBulbTest*) *itr;
-               log << "Getting object!" << endl;
-               lifx->init();
-               log << "Executing init!" << endl;
-               this_thread::sleep_for (chrono::milliseconds(1000));
-
-               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();
-                       //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));
-               }
-
-               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));
-               }
-               lifx->turnOff();
-       }
-
-       log << "End of iteration.. closing!" << endl;
-       log.close();
-       //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);
+               log << "Now turning on lights in room with ID: " << rs->getRoomID() << endl;
+               auto itrLight = roomLightRel->find(rs);
 
-               /*if (itrLight == roomLightRel->end())
-                       log << "No match!" << endl;
-               //while (itrLight != roomLightRel->end()) {
+               if (itrLight == roomLightRel->end())
+                       log << "No matching light! - should not get here at all!" << endl;
                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));
                        }
+                       /*      Note: The bottom part has not yet been heavily tested and
+                       this might get the execution stuck at some point.
+                       We are suspecting that this is due to the complex interaction
+                       of the multiple threads that we have.
                        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));
                        }
+                       
+                       double hue = lifx->getHue();
+                       double saturation = lifx->getSaturation();
 
                        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);
+                               lifx->setColor(hue, saturation, 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);
+                               lifx->setColor(hue, saturation, i);
                                this_thread::sleep_for (chrono::milliseconds(500));
-                       }
-                       //++itrLight;
-               }*/
+                       }*/
+                       //lifx->turnOff();
+               }
                log << "End of one LightBulb!" << endl << endl;
        }
                
@@ -201,73 +109,3 @@ void Lifxtest::init() {
        log.close();
        //while(true) { }       // Testing infinite loop - will need to do "pkill IoTSlave"
 }
-
-/*
-int main(int argc, char *argv[])
-{
-       // LightBulb #1
-       string macAddress1 = "D073D5128E300000";
-       string devIPAddress1 = "192.168.2.126";
-       IoTDeviceAddress* devAddress1 = new IoTDeviceAddress(devIPAddress1, 12345, 56700, false, false);
-       unordered_set<void*>* myset1 = new unordered_set<void*>();
-       myset1->insert(devAddress1);
-       IoTSet<void*>* setDevAddress1 = new IoTSet<void*>(myset1);
-       LifxLightBulb *llb1 = new LifxLightBulb(setDevAddress1, macAddress1);
-       //cout << "Generated LifxLightBulb object!" << endl;
-
-       // LightBulb #2
-       string macAddress2 = "D073D50241DA0000";
-       string devIPAddress2 = "192.168.2.232";
-       IoTDeviceAddress* devAddress2 = new IoTDeviceAddress(devIPAddress2, 12346, 56700, false, false);
-       unordered_set<void*>* myset2 = new unordered_set<void*>();
-       myset2->insert(devAddress2);
-       IoTSet<void*>* setDevAddress2 = new IoTSet<void*>(myset2);
-       LifxLightBulb *llb2 = new LifxLightBulb(setDevAddress2, macAddress2);
-
-       // Set of lightbulbs
-       unordered_set<void*>* setLb = new unordered_set<void*>();
-       setLb->insert(llb1);
-       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, lrSet, rlRel);
-       lt->init();
-
-       //delete llb1;
-       //delete llb2;
-       delete devAddress1;
-       delete devAddress2;
-       delete myset1;
-       delete myset2;
-       delete setDevAddress1;
-       delete setDevAddress2;
-       delete setLb;
-       delete lbSet;
-       delete lr1;
-       delete lr2;
-       delete lrSet;
-       delete pair1;
-       delete pair2;
-
-       return 0;
-}*/
-
-