Perfecting IoTSlave for C++; Found one issue with SSH/Java process execution in which...
[iot2.git] / benchmarks / Cpp / Lifxtest / Lifxtest.cpp
index dbdfc824bfb0fca9bf36463444daef7e1adcffcd..53cb4257337430c7f0bc6dd2a96b3fab3fb891c9 100644 (file)
 #include "LifxLightBulb.cpp"
 #include "Iterator.hpp"
 
-Lifxtest::Lifxtest() {
 
+// 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]);
+}
+
+
+extern "C" void destroyLifxtest(void* t) {
+       Lifxtest* lt = (Lifxtest*) t;
+       delete lt;
+}
+
+
+extern "C" void initLifxtest(void* t) {
+       Lifxtest* lt = (Lifxtest*) t;
+       lt->init();
 }
 
-/*Lifxtest::Lifxtest(IoTSet<LightBulbTest*> _lifx_light_bulb) {
+Lifxtest::Lifxtest() {
+       log.open("Lifxtest_object_cpp.log");
+       log << "lifx_light_bulb initialized!" << endl;
+}
 
+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;
+}
 
 Lifxtest::Lifxtest(void** args) {
 
-       //lifx_light_bulb = *(IoTSet<LightBulbTest*>*) args[0];
-       lifx_light_bulb = *(IoTSet<LightBulb*>*) args[0];
+       log.open("Lifxtest_object_cpp.log");
+       lifx_light_bulb = (IoTSet<void*>*) args[0];
+       log << "lifx_light_bulb initialized!" << endl;
 }
 
+
 Lifxtest::~Lifxtest() {
 }
 
 
 void Lifxtest::init() {
 
-       //unordered_set<LightBulbTest*>* bulbSet = lifx_light_bulb.values();
-       unordered_set<LightBulb*>* bulbSet = lifx_light_bulb.values();
-       //for(LightBulbTest* lifx : *bulbSet) {
-       for(LightBulb* lifx : *bulbSet) {
-
+       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 < 1; i++) {
+               for (int i = 0; i < 5; i++) {
                        lifx->turnOff();
-                       cout << "Turning off!" << endl;
+                       //cout << "Turning off!" << endl;
+                       log << "Turning off!" << endl;
                        this_thread::sleep_for (chrono::milliseconds(1000));
                        lifx->turnOn();
-                       cout << "Turning on!" << endl;
+                       //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;
+               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;
+                       //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;
+                       //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;
+                       //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"
 }
 
 
-int main(int argc, char *argv[])
+/*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<IoTDeviceAddress*>* myset1 = new unordered_set<IoTDeviceAddress*>();
+       unordered_set<void*>* myset1 = new unordered_set<void*>();
        myset1->insert(devAddress1);
-       IoTSet<IoTDeviceAddress*>* setDevAddress1 = new IoTSet<IoTDeviceAddress*>(*myset1);
+       IoTSet<void*>* setDevAddress1 = new IoTSet<void*>(myset1);
        LifxLightBulb *llb1 = new LifxLightBulb(setDevAddress1, macAddress1);
        //cout << "Generated LifxLightBulb object!" << endl;
 
@@ -87,20 +127,21 @@ int main(int argc, char *argv[])
        string macAddress2 = "D073D50241DA0000";
        string devIPAddress2 = "192.168.2.232";
        IoTDeviceAddress* devAddress2 = new IoTDeviceAddress(devIPAddress2, 12346, 56700, false, false);
-       unordered_set<IoTDeviceAddress*>* myset2 = new unordered_set<IoTDeviceAddress*>();
+       unordered_set<void*>* myset2 = new unordered_set<void*>();
        myset2->insert(devAddress2);
-       IoTSet<IoTDeviceAddress*>* setDevAddress2 = new IoTSet<IoTDeviceAddress*>(*myset2);
+       IoTSet<void*>* setDevAddress2 = new IoTSet<void*>(myset2);
        LifxLightBulb *llb2 = new LifxLightBulb(setDevAddress2, macAddress2);
 
        // Set of lightbulbs
-       unordered_set<LightBulb*>* setLb = new unordered_set<LightBulb*>();
+       unordered_set<void*>* setLb = new unordered_set<void*>();
        setLb->insert(llb1);
        setLb->insert(llb2);
-       IoTSet<LightBulb*>* lbSet = new IoTSet<LightBulb*>(*setLb);
+       IoTSet<void*>* lbSet = new IoTSet<void*>(setLb);
 
-       void* args[1];
-       args[0] = (void*) lbSet;
-       Lifxtest *lt = new Lifxtest(args);
+       //void* args[1];
+       //args[0] = (void*) lbSet;
+       //Lifxtest *lt = new Lifxtest(args);
+       Lifxtest *lt = new Lifxtest(lbSet);
        lt->init();
 
        //delete llb1;
@@ -113,10 +154,8 @@ int main(int argc, char *argv[])
        delete setDevAddress2;
        delete setLb;
        delete lbSet;
-       //delete llb1;
-       //delete llb2;
 
        return 0;
 }
-
+*/