/*OOP in C++ example for LEDs */ #include #include #include #include using namespace std; #define LED_PATH "/sys/class/leds/beaglebone:green:usr" class LED{ private: string path; int number; virtual void writeLED(string filename, string value); virtual void removeTrigger(); public: LED(int number); virtual void turnOn(); virtual void turnOff(); virtual void flash(string delayms); virtual void outputState(); virtual ~LED(); }; LED::LED(int number){ this->number = number; ostringstream s; s << LED_PATH << number; // LED number to the Path path = string(s.str()); // convert to string } void LED::writeLED(string filename, string value){ ofstream fs; fs.open((path + filename).c_str()); fs << value; fs.close(); } void LED::removeTrigger(){ writeLED("/trigger", "none"); } void LED::turnOn(){ cout << "Turning LED" << number << "on" << endl; removeTrigger(); writeLED("/brightness", "1"); } void LED::turnOff(){ cout << "Turning LED" << number << "off" << endl; removeTrigger(); writeLED("/brightness", "0"); } void LED::flash(string delayms ="50"){ cout << "Making LED" << number << "flash" << endl; writeLED("/trigger", "timer"); writeLED("/delay_on", delayms); writeLED("/delay_off", delayms); } void LED::outputState(){ ifstream fs; fs.open((path + "/trigger").c_str()); string line; while(getline(fs,line)) cout << line <" << endl; cout << " is on, off flash or status" << endl; cout << "e.g. main on" << endl; } cout << "Starting program ..." << endl; string cmd(argv[1]); LED leds[4] = {LED(0), LED(1), LED(2), LED(3)}; for(int i=0; i<=3; i++){ if(cmd=="on") leds[i].turnOn(); else if(cmd=="off") leds[i].turnOff(); else if(cmd=="flash") leds[i].flash("100"); else if(cmd=="status") leds[i].outputState(); else cout << "invalid command, please type main" << endl; } cout << "Program done, Thanks." << endl; return 0; }