ether2ser 0.1.0
Ethernet <-> synchronous V.24 bridge firmware for RP2040 + W5500
Loading...
Searching...
No Matches
gpio_driver.c
Go to the documentation of this file.
1/*
2 * ether2ser - Ethernet <-> synchronous V.24 (RS-232/V.28) bridge
3 *
4 * File: src/drivers/gpio_driver.c
5 * Purpose: GPIO initialization and V.24 polarity defaults.
6 *
7 * SPDX-License-Identifier: Apache-2.0
8 *
9 * Copyright (c) 2026 Florian <f.leuze@outlook.de>
10 */
11
12// Related headers
13#include "gpio_driver.h"
14
15// Standard library headers
16#include <stdbool.h>
17#include <stdio.h>
18#include <stdlib.h>
19#include <string.h>
20
21// Library Headers
22#include "hardware/gpio.h"
23
24// Project Headers
25#include "drivers/v24_config.h"
26#include "platform/pinmap.h"
27#include "system/common.h"
28
29// Generated headers
30
32
34
36{
37 LOG_DEBUG("Initializing default polarities\r\n");
38 return (V24_POLARITIES_T){.tx_polarities =
39 {
40 .txd_inverted = false,
41 .txc_inverted = true,
42 .cts_inverted = true,
43 .rts_inverted = true,
44 .dtr_inverted = true,
45 },
46 .rx_polarities = {
47 .rxd_inverted = false,
48 .rxc_inverted = true,
49 .dcd_inverted = true,
50 }};
51}
52
53void init_pins(void)
54{
55 for (size_t i = 0; i < ARRAY_LEN(inputs); i++)
56 {
57 gpio_init(inputs[i]);
58 gpio_set_dir(inputs[i], GPIO_IN);
59 gpio_pull_down(inputs[i]);
60 }
61
62 for (size_t i = 0; i < ARRAY_LEN(outputs); i++)
63 {
64 gpio_init(outputs[i]);
65 gpio_set_dir(outputs[i], GPIO_OUT);
66 }
67}
#define LOG_DEBUG(...)
Definition common.h:165
#define ARRAY_LEN(a)
Return compile-time element count for an array object.
Definition common.h:32
V24_POLARITIES_T init_polarities(void)
Build default V.24 polarity configuration.
Definition gpio_driver.c:35
V24_PIN_T inputs[]
Definition gpio_driver.c:33
void init_pins(void)
Initialize all board GPIOs used by the application.
Definition gpio_driver.c:53
V24_PIN_T outputs[]
Definition gpio_driver.c:31
#define V24_RXC
Definition pinmap.h:28
#define V24_DCD
Definition pinmap.h:30
#define V24_DTR
Definition pinmap.h:37
#define V24_TXD
Definition pinmap.h:35
#define V24_RTS
Definition pinmap.h:34
#define V24_TXC_DTE
Definition pinmap.h:29
#define V24_RXD
Definition pinmap.h:33
#define V24_DSR
Definition pinmap.h:31
#define V24_CTS
Definition pinmap.h:32
#define V24_TXC_DCE
Definition pinmap.h:27
V24_PIN_T
Typed aliases for V.24 GPIO assignments.
Definition pinmap.h:46
Combined TX and RX polarity configuration.
Definition v24_config.h:78