| 
																	
																	
																	
																 | 
																@ -1,97 +0,0 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																/*OOP in C++ example for LEDs */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																#include<iostream>
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																#include<fstream>
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																#include<string>
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																#include<sstream>
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																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; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																  fs.close(); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																LED::~LED(){ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																  cout << "!!Destroying the LED with path: " << path << endl; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																int main(int argc, char* argv[]){ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																  if(argc!=2){ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    cout << "The usage is main <command>" << endl; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    cout << "<command> 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; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 |