/* led.cpp */
|
|
#include"led.h"
|
|
#include<iostream>
|
|
#include<fstream>
|
|
#include<string>
|
|
#include<sstream>
|
|
|
|
#define LED_PATH "/sys/class/leds/beaglebone:green:usr"
|
|
|
|
CLED::CLED(int ledNumber){
|
|
this->ledNumber = ledNumber; //Solo para argumentos que sean numeros
|
|
std::ostringstream s;
|
|
s << LED_PATH << ledNumber;
|
|
path =std::string(s.str()); //convert to string
|
|
}
|
|
|
|
void CLED::WriteLED(std::string filename, std::string value){
|
|
std::ofstream fs;
|
|
fs.open((path+filename).c_str());
|
|
fs << value;
|
|
fs.close();
|
|
}
|
|
|
|
void CLED::RemoveTrigger(){
|
|
WriteLED("/trigger", "none");
|
|
}
|
|
|
|
void CLED::TurnOn(){
|
|
std::cout << "LED" << ledNumber << "on" << std::endl;
|
|
RemoveTrigger();
|
|
WriteLED("/brightness", "1");
|
|
}
|
|
|
|
void CLED::TurnOff(){
|
|
std::cout << "LED" << ledNumber << "off" << std::endl;
|
|
RemoveTrigger();
|
|
WriteLED("/brightness","0");
|
|
|
|
}
|
|
|
|
|
|
void CLED::blink(){
|
|
std::cout << "LED" << ledNumber << "blinking" << std::endl;
|
|
WriteLED("/trigger", "timer");
|
|
WriteLED("/delay_on", "50");
|
|
WriteLED("/delay_off", "50");
|
|
|
|
}
|
|
|
|
CLED::~CLED(){
|
|
std::cout << "destroying LED " << path << std::endl;
|
|
}
|
|
|
|
|
|
int main(int argc, char* argv[]){
|
|
if(argc!=2){
|
|
std::cout << "Para usarse es: makeLEDS <comand>" << std::endl;
|
|
std::cout << "los comandos son on, off y blink" << std::endl;
|
|
}
|
|
std::cout << "Starting app" << std::endl;
|
|
std::string cmd(argv[1]);
|
|
|
|
// se crean 4 objetos de LED y se ponen en el array para controlar todos los LEDS.
|
|
CLED leds[4]= {CLED(0), CLED(1), CLED(2), CLED(3) };
|
|
|
|
for(int i=0; i<=3; i++){
|
|
if(cmd=="on")leds[i].TurnOn();
|
|
else if(cmd=="off")leds[i].TurnOff();
|
|
else if(cmd=="blink")leds[i].blink();
|
|
else{std::cout << "comando invalido" << std::endl;}
|
|
}
|
|
std::cout << "programa terminado" << std::endl;
|
|
return 0;
|
|
|
|
}
|