#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <wiringPi.h>
#include <lirc/lirc_client.h>
void flipLED (int led);
#define LED1 4 // Rasp pin 16
#define LED2 5 // Rasp pin 18
#define LED3 6 // Rasp pin 22
#define ON 1
#define OFF 0
#define DEBUG 0
int main(int argc, char *argv[]){
struct lirc_config *config;
char *code;
char *string;
int ret;
int quitFlag=0;
if(wiringPiSetup() == -1) {
printf("Setup
Fail\n");
exit(-1);
}
pinMode (LED1, OUTPUT);
pinMode (LED2, OUTPUT);
pinMode (LED3, OUTPUT);
digitalWrite(LED1, OFF);
digitalWrite(LED2, OFF);
digitalWrite(LED3, OFF);
if(lirc_init("irexec",1) == -1) {
printf("lirc_init Fail\n");
exit(-1);
}
if(lirc_readconfig(argc==2 ?
argv[1]:NULL,&config,NULL)==0) {
while(lirc_nextcode(&code)==0) {
if(DEBUG) printf("lirc_nextcode(): code=[%s]\n",code);
if(code==NULL) continue;
while((ret=lirc_code2char(config,code,&string))==0
&& string!=NULL) {
if(DEBUG) printf("lirc_code2char():
ret=%d,string=[%s]\n",ret,string);
if(strcmp (string,"LED1") == 0){
flipLED(LED1);
} else if(strcmp (string,"LED2") == 0){
flipLED(LED2);
} else if(strcmp (string,"LED3") == 0){
flipLED(LED3);
} else if(strcmp (string,"QUIT") == 0){
quitFlag=1;
}
}
free(code);
if(quitFlag == 1) break;
}
lirc_freeconfig(config);
}
lirc_deinit();
digitalWrite(LED1, OFF);
digitalWrite(LED2, OFF);
digitalWrite(LED3, OFF);
exit(0);
}
void flipLED (int led){
if(digitalRead(led)==ON)
digitalWrite(led, OFF);
else
digitalWrite(led, ON);
}
|