heating-control/sender/rf.c
2019-01-02 21:11:36 +00:00

52 lines
1.2 KiB
C

/*
* This code was taken from a forum post at "https://www.raspberrypi.org/forums/viewtopic.php?p=499538#p499538"
* Compile: gcc -Wall -o rf rf.c -lwiringPi
* Usage: sudo ./rf [binary] [delay in microseconds] [inverting bits]
* Example.. turning on Silvercrest outlet A
* sudo ./rf 11111111111111001001011001011011011011001011011011011011001001011001011011011011011011000000 500 1
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <wiringPi.h>
#define PIN 29
void parse_bin(char *string, char *d, int invert, int repeat) {
int len = strlen(string), delay = atoi(d);;
int i;
while(repeat) {
for(i=0; i < len; i ++) {
digitalWrite( PIN, ((int)string[i] - 48) ^ invert );
delayMicroseconds( delay );
}
repeat --;
}
}
void reset_pin(void) {
digitalWrite( PIN, LOW );
}
int main(int argc, char** argv) {
int invert = 0;
if(argc < 3) {
printf("[bin] [delay] [invert]\n");
return -1;
}
if(argv[3][0] == 49)
invert = 1;
wiringPiSetup ();
pinMode (PIN, OUTPUT);
reset_pin();
parse_bin(argv[1], argv[2], invert, 1);
reset_pin();
return 0;
}