guowenxue
2023-07-10 5e9d03d507aad324a803eb8795e0eed6fb671761
modules/c/relay.c
@@ -14,11 +14,17 @@
#include <stdio.h>
#include <unistd.h>
#include <libgen.h>
#include <string.h>
#include <wiringPi.h>
#include "relay.h"
#include <gpiod.h>
#define ON              1
#define OFF             0
/* Relay    #Pin(29)    GPIO05(BCM 5)  */
#define relay_pin       5
int turn_relay(int cmd);
int main (int argc, char **argv)
{
@@ -27,9 +33,6 @@
        printf("Usage: %s [on/off]\n", basename(argv[0]));
        return -1;
    }
    wiringPiSetup();
    relay_init();
    if( !strstr(argv[1], "on") || !strstr(argv[1], "on") )
    {
@@ -43,21 +46,16 @@
    return 0;
}
void relay_init(void)
static void gpiod_ctxless_cb(void *data)
{
    pinMode(RELAY_PIN, OUTPUT);
        sleep(3);
}
void turn_relay(int cmd)
int turn_relay(int cmd)
{
    if( OFF == cmd )
    {
        digitalWrite ( RELAY_PIN, HIGH );
    }
                gpiod_ctxless_set_value("gpiochip0", relay_pin, 0, false, "relay", gpiod_ctxless_cb, NULL);
    else
    {
        digitalWrite ( RELAY_PIN, LOW );
    }
                gpiod_ctxless_set_value("gpiochip0", relay_pin, 1, false, "relay", gpiod_ctxless_cb, NULL);
}