Skip to content

Commit cc8d937

Browse files
committed
config: use chip number instead of chip path
1 parent 04bb9ab commit cc8d937

File tree

9 files changed

+45
-41
lines changed

9 files changed

+45
-41
lines changed

rnode.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
# Board RNS-Gate
33

44
spi: /dev/spidev1.0
5-
cs: { chip: /dev/gpiochip0, pin: 13 }
6-
rst: { chip: /dev/gpiochip0, pin: 6 }
7-
busy: { chip: /dev/gpiochip0, pin: 11 }
8-
dio1: { chip: /dev/gpiochip0, pin: 12 }
9-
rx_en: { chip: /dev/gpiochip0, pin: 2 }
10-
tx_en: { chip: /dev/gpiochip0, pin: 18 }
5+
cs: { port: 0, pin: 13 }
6+
rst: { port: 0, pin: 6 }
7+
busy: { port: 0, pin: 11 }
8+
dio1: { port: 0, pin: 12 }
9+
rx_en: { port: 0, pin: 2 }
10+
tx_en: { port: 0, pin: 18 }
1111
tcp_port: 7633

src/config.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include "config.h"
1212

1313
const cyaml_schema_field_t gpio_fields_schema[] = {
14-
CYAML_FIELD_STRING_PTR("chip", CYAML_FLAG_POINTER, config_gpio_t, chip, 0, CYAML_UNLIMITED),
14+
CYAML_FIELD_UINT("port", CYAML_FLAG_DEFAULT, config_gpio_t, port),
1515
CYAML_FIELD_UINT("pin", CYAML_FLAG_DEFAULT, config_gpio_t, pin),
1616
CYAML_FIELD_END
1717
};

src/config.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#include <stdbool.h>
1414

1515
typedef struct {
16-
const char *chip;
17-
uint8_t pin;
16+
uint8_t port;
17+
uint8_t pin;
1818
} config_gpio_t;
1919

2020
typedef struct {

src/main.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,32 +28,32 @@ int main(int argc, char *argv[]) {
2828
return 1;
2929
}
3030

31-
if (!sx126x_init_spi(config->spi, config->cs.chip, config->cs.pin)) {
31+
if (!sx126x_init_spi(config->spi, config->cs.port, config->cs.pin)) {
3232
syslog(LOG_ERR, "SPI init");
3333
return 1;
3434
}
3535

36-
if (!sx126x_init_rst(config->rst.chip, config->rst.pin)) {
36+
if (!sx126x_init_rst(config->rst.port, config->rst.pin)) {
3737
syslog(LOG_ERR, "RST pin");
3838
return 1;
3939
}
4040

41-
if (!sx126x_init_busy(config->busy.chip, config->busy.pin)) {
41+
if (!sx126x_init_busy(config->busy.port, config->busy.pin)) {
4242
syslog(LOG_ERR, "Busy pin");
4343
return 1;
4444
}
4545

46-
if (!sx126x_init_dio1(config->dio1.chip, config->dio1.pin)) {
46+
if (!sx126x_init_dio1(config->dio1.port, config->dio1.pin)) {
4747
syslog(LOG_ERR, "DIO1 pin");
4848
return 1;
4949
}
5050

51-
if (!sx126x_init_tx_en(config->tx_en.chip, config->tx_en.pin)) {
51+
if (!sx126x_init_tx_en(config->tx_en.port, config->tx_en.pin)) {
5252
syslog(LOG_ERR, "TX EN pin");
5353
return 1;
5454
}
5555

56-
if (!sx126x_init_rx_en(config->rx_en.chip, config->rx_en.pin)) {
56+
if (!sx126x_init_rx_en(config->rx_en.port, config->rx_en.pin)) {
5757
syslog(LOG_ERR, "RX EN pin");
5858
return 1;
5959
}

sx126x/gpio_hal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ typedef enum {
2020
} gpio_value_t;
2121

2222
/* Allocate and configure a GPIO line. Returns NULL on failure. */
23-
gpio_line_t *gpio_request(const char *chip,
23+
gpio_line_t *gpio_request(unsigned int chip,
2424
unsigned int pin,
2525
gpio_dir_t dir,
2626
gpio_value_t initial,

sx126x/gpio_hal_v1.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ struct gpio_line {
1414
struct gpiod_line *line;
1515
};
1616

17-
gpio_line_t *gpio_request(const char *chip_path,
17+
gpio_line_t *gpio_request(unsigned int chip,
1818
unsigned int pin,
1919
gpio_dir_t dir,
2020
gpio_value_t initial,
2121
const char *consumer)
2222
{
23-
struct gpiod_chip *chip = gpiod_chip_open(chip);
23+
struct gpiod_chip *chip_h = gpiod_chip_open_by_number(chip);
2424
if (!chip) return NULL;
2525

26-
struct gpiod_line *line = gpiod_chip_get_line(chip, pin);
26+
struct gpiod_line *line = gpiod_chip_get_line(chip_h, pin);
2727
if (!line) {
28-
gpiod_chip_close(chip);
28+
gpiod_chip_close(chip_h);
2929
return NULL;
3030
}
3131

@@ -53,7 +53,7 @@ gpio_line_t *gpio_request(const char *chip_path,
5353
break;
5454
}
5555

56-
gpiod_chip_close(chip);
56+
gpiod_chip_close(chip_h);
5757

5858
if (result < 0) return NULL;
5959

sx126x/gpio_hal_v2.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66

77
#include <stdlib.h>
8+
#include <stdio.h>
89
#include <errno.h>
910
#include <gpiod.h>
1011

@@ -16,13 +17,16 @@ struct gpio_line {
1617
struct gpiod_edge_event_buffer *event_buf;
1718
};
1819

19-
gpio_line_t *gpio_request(const char *chip,
20+
gpio_line_t *gpio_request(unsigned int chip,
2021
unsigned int pin,
2122
gpio_dir_t dir,
2223
gpio_value_t initial,
2324
const char *consumer)
2425
{
25-
struct gpiod_chip *chip_h = gpiod_chip_open(chip);
26+
char chip_path[32];
27+
snprintf(chip_path, sizeof(chip_path), "/dev/gpiochip%u", chip);
28+
29+
struct gpiod_chip *chip_h = gpiod_chip_open(chip_path);
2630
if (!chip_h) return NULL;
2731

2832
struct gpiod_line_settings *settings = gpiod_line_settings_new();

sx126x/sx126x.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -508,29 +508,29 @@ static void * irq_worker(void *p) {
508508

509509
/* * */
510510

511-
bool sx126x_init_spi(const char *spidev, const char *cs_chip, uint8_t cs_pin) {
511+
bool sx126x_init_spi(const char *spidev, uint8_t cs_chip, uint8_t cs_pin) {
512512
spi_fd = open(spidev, O_RDWR);
513513
if (spi_fd < 0) return false;
514514

515-
syslog(LOG_INFO, "SPI %s, CS GPIO %s:%i", spidev, cs_chip, (int) cs_pin);
515+
syslog(LOG_INFO, "SPI %s, CS GPIO chip%u:%u", spidev, (unsigned) cs_chip, (unsigned) cs_pin);
516516
cs = gpio_request(cs_chip, cs_pin, GPIO_DIR_OUTPUT, GPIO_VALUE_ACTIVE, "sx126x_cs");
517517
return cs != NULL;
518518
}
519519

520-
bool sx126x_init_rst(const char *chip, uint8_t pin) {
521-
syslog(LOG_INFO, "RST GPIO %s:%i", chip, (int) pin);
520+
bool sx126x_init_rst(uint8_t chip, uint8_t pin) {
521+
syslog(LOG_INFO, "RST GPIO chip%u:%u", (unsigned) chip, (unsigned) pin);
522522
rst = gpio_request(chip, pin, GPIO_DIR_OUTPUT, GPIO_VALUE_INACTIVE, "sx126x_rst");
523523
return rst != NULL;
524524
}
525525

526-
bool sx126x_init_busy(const char *chip, uint8_t pin) {
527-
syslog(LOG_INFO, "Busy GPIO %s:%i", chip, (int) pin);
526+
bool sx126x_init_busy(uint8_t chip, uint8_t pin) {
527+
syslog(LOG_INFO, "Busy GPIO chip%u:%u", (unsigned) chip, (unsigned) pin);
528528
busy = gpio_request(chip, pin, GPIO_DIR_INPUT, GPIO_VALUE_INACTIVE, "sx126x_busy");
529529
return busy != NULL;
530530
}
531531

532-
bool sx126x_init_dio1(const char *chip, uint8_t pin) {
533-
syslog(LOG_INFO, "DIO1 GPIO %s:%i", chip, (int) pin);
532+
bool sx126x_init_dio1(uint8_t chip, uint8_t pin) {
533+
syslog(LOG_INFO, "DIO1 GPIO chip%u:%u", (unsigned) chip, (unsigned) pin);
534534
dio1 = gpio_request(chip, pin, GPIO_DIR_INPUT_EDGE_RISING, GPIO_VALUE_INACTIVE, "sx126x_dio1");
535535
if (!dio1) return false;
536536

@@ -540,14 +540,14 @@ bool sx126x_init_dio1(const char *chip, uint8_t pin) {
540540
return true;
541541
}
542542

543-
bool sx126x_init_tx_en(const char *chip, uint8_t pin) {
544-
syslog(LOG_INFO, "TX EN GPIO %s:%i", chip, (int) pin);
543+
bool sx126x_init_tx_en(uint8_t chip, uint8_t pin) {
544+
syslog(LOG_INFO, "TX EN GPIO chip%u:%u", (unsigned) chip, (unsigned) pin);
545545
tx_en = gpio_request(chip, pin, GPIO_DIR_OUTPUT, GPIO_VALUE_INACTIVE, "sx126x_tx_en");
546546
return tx_en != NULL;
547547
}
548548

549-
bool sx126x_init_rx_en(const char *chip, uint8_t pin) {
550-
syslog(LOG_INFO, "RX EN GPIO %s:%i", chip, (int) pin);
549+
bool sx126x_init_rx_en(uint8_t chip, uint8_t pin) {
550+
syslog(LOG_INFO, "RX EN GPIO chip%u:%u", (unsigned) chip, (unsigned) pin);
551551
rx_en = gpio_request(chip, pin, GPIO_DIR_OUTPUT, GPIO_VALUE_INACTIVE, "sx126x_rx_en");
552552
return rx_en != NULL;
553553
}

sx126x/sx126x.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,12 @@ typedef void (*sx126x_tx_done_callback_t)(void);
9999
typedef void (*sx126x_medium_callback_t)(cause_medium_t cause);
100100
typedef void (*sx126x_timeout_callback_t)(void);
101101

102-
bool sx126x_init_spi(const char *spidev, const char *cs_chip, uint8_t cs_pin);
103-
bool sx126x_init_rst(const char *chip, uint8_t pin);
104-
bool sx126x_init_busy(const char *chip, uint8_t pin);
105-
bool sx126x_init_dio1(const char *chip, uint8_t pin);
106-
bool sx126x_init_tx_en(const char *chip, uint8_t pin);
107-
bool sx126x_init_rx_en(const char *chip, uint8_t pin);
102+
bool sx126x_init_spi(const char *spidev, uint8_t cs_chip, uint8_t cs_pin);
103+
bool sx126x_init_rst(uint8_t chip, uint8_t pin);
104+
bool sx126x_init_busy(uint8_t chip, uint8_t pin);
105+
bool sx126x_init_dio1(uint8_t chip, uint8_t pin);
106+
bool sx126x_init_tx_en(uint8_t chip, uint8_t pin);
107+
bool sx126x_init_rx_en(uint8_t chip, uint8_t pin);
108108

109109
void sx126x_set_rx_done_callback(sx126x_rx_done_callback_t callback);
110110
void sx126x_set_tx_done_callback(sx126x_tx_done_callback_t callback);

0 commit comments

Comments
 (0)