From ac5fcc1e3a873e61dba138e5b632479141433614 Mon Sep 17 00:00:00 2001 From: kutayboz Date: Tue, 1 Aug 2023 04:59:34 +0300 Subject: Primitive config file implementation --- src/bg96.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/bg96.c') diff --git a/src/bg96.c b/src/bg96.c index 620c960..21cd848 100644 --- a/src/bg96.c +++ b/src/bg96.c @@ -1,6 +1,7 @@ #include "bg96.h" -#include "gpio.h" #include "serial.h" +#include "utils.h" +#include #include #include #include @@ -9,6 +10,47 @@ #include #include +int modemPowerToggle(char *pathToChip, int pinNum) { + struct gpiod_chip *chip; + struct gpiod_line *line; + + chip = gpiod_chip_open(pathToChip); + if (!chip) { + perror("Error opening GPIO chip"); + return 1; + } + + line = gpiod_chip_get_line(chip, pinNum); + if (!line) { + perror("Error getting GPIO line"); + gpiod_chip_close(chip); + return 1; + } + + if (gpiod_line_request_output(line, "cellular modem power toggle", 0) < 0) { + perror("Error setting GPIO line as output"); + gpiod_chip_close(chip); + return 1; + } + + if (gpiod_line_set_value(line, 1) < 0) { + perror("Error setting GPIO line high"); + gpiod_chip_close(chip); + return 1; + } + + sleep(1); + + if (gpiod_line_set_value(line, 0) < 0) { + perror("Error setting GPIO line low"); + gpiod_chip_close(chip); + return 1; + } + + gpiod_chip_close(chip); + return 0; +} + int initNetworkData(networkData *nD) { nD->operatorName = calloc(1, sizeof(char)); nD->networkName = calloc(1, sizeof(char)); -- cgit v1.3