Actual write to pin

This commit is contained in:
Chris Josten 2020-12-08 07:49:48 +01:00
parent 619a0e8b9a
commit f74d791a7b

View file

@ -13,11 +13,15 @@
#include <linux/seccomp.h> #include <linux/seccomp.h>
#include <bcm2835.h>
#define LOGF(x, ...) do { logf_impl(x, __FILE__, __LINE__, __func__, __VA_ARGS__); } while(0); #define LOGF(x, ...) do { logf_impl(x, __FILE__, __LINE__, __func__, __VA_ARGS__); } while(0);
#define LOG(x) do { log_impl(x, __FILE__, __LINE__, __func__); } while(0); #define LOG(x) do { log_impl(x, __FILE__, __LINE__, __func__); } while(0);
#define DEFAULT_PORT 9305 #define DEFAULT_PORT 9305
#define MBUF_SIZE 2048 #define MBUF_SIZE 2048
#define TROMMEL_PIN 17
const char *SOCKET_ERROR = "Socket-fout"; const char *SOCKET_ERROR = "Socket-fout";
typedef struct mbuf { typedef struct mbuf {
@ -147,6 +151,9 @@ int do_command_loop(mbuf_t *mbuf) {
if (len == 0) return 0; if (len == 0) return 0;
LOGF("COMMANDO: %s", buf); LOGF("COMMANDO: %s", buf);
if (strcmp(buf, "trommel") == 0) { if (strcmp(buf, "trommel") == 0) {
bcm2835_gpio_write(TROMMEL_PIN, HIGH);
bcm2835_delay(250);
bcm2835_gpio_write(TROMMEL_PIN, LOW);
const char *ok = "oké\n"; const char *ok = "oké\n";
write(mbuf->sock, ok, strlen(ok) * sizeof(char)); write(mbuf->sock, ok, strlen(ok) * sizeof(char));
} else if (strcmp(buf, "ping") == 0) { } else if (strcmp(buf, "ping") == 0) {
@ -192,6 +199,10 @@ int main(int argc, char *argv[]) {
close(STDIN_FILENO); close(STDIN_FILENO);
close(STDOUT_FILENO); close(STDOUT_FILENO);
close(STDERR_FILENO); close(STDERR_FILENO);
bcm2835_init();
bcm2835_gpio_fsel(TROMMEL_PIN, BCM2835_GPIO_FSEL_OUTP);
if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT) < 0) { if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT) < 0) {
LOGF("Kon seccomp niet aanroepen: %s", strerror(errno)); LOGF("Kon seccomp niet aanroepen: %s", strerror(errno));
} }
@ -242,5 +253,6 @@ int main(int argc, char *argv[]) {
(void) quit_if_fail(do_command_loop(buf), "Fout"); (void) quit_if_fail(do_command_loop(buf), "Fout");
LOG("De andere kant heeft de verbinding verbroken"); LOG("De andere kant heeft de verbinding verbroken");
free(buf); free(buf);
bcm2835_close();
return 0; return 0;
} }