Midnight Sun Firmware
Loading...
Searching...
No Matches
network.h
1#pragma once
2
3/************************************************************************************************
4 * @file network.h
5 *
6 * @brief Header file for network layer Tx Rx UART implementation for firmware over the air (FOTA) updates
7 *
8 * @date 2025-03-12
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17#include "stm32l4xx_hal_gpio.h"
18
19/* Intra-component Headers */
20#include "fota_error.h"
21#include "network_buffer.h"
22
30typedef enum { UART_PORT_1 = 0, UART_PORT_2, NUM_UART_PORTS } UartPort;
31
33#define UART_MAX_BUFFER_LEN 256U
35#define UART_TIMEOUT_MS 1U
36
42typedef enum {
48
56typedef enum {
61
62typedef struct {
64 uint32_t pin;
66
67typedef struct {
70 uint32_t baudrate;
73
84FotaError network_init(UartPort uart, UartSettings *settings, NetworkBuffer *network_buffer);
85
98FotaError network_read(UartPort uart, uint8_t *data, size_t len);
99
113FotaError network_tx(UartPort uart, uint8_t *data, size_t len);
114
116#define FOTA_UART_TIMEOUT_MS 10U
117
125bool isTimeout(bool is_tx);
126
UartPort
UART Port selection.
Definition: network.h:30
bool isTimeout(bool is_tx)
Checks if tx or rx command has timed out.
Definition: network.c:93
FotaError network_tx(UartPort uart, uint8_t *data, size_t len)
Transmit data from the UART port.
Definition: network.c:132
UartFlowControl
UART Flow control selection.
Definition: network.h:42
FotaError network_read(UartPort uart, uint8_t *data, size_t len)
Read data from the network buffer.
Definition: network.c:107
FotaError network_init(UartPort uart, UartSettings *settings, NetworkBuffer *network_buffer)
Initialize UART instance, assuming standard 8 bits 1 stop bit.
Definition: network.c:152
GpioPort
UART Settings.
Definition: network.h:56
FotaError
FOTA Error code definitions.
Definition: fota_error.h:27
GpioPort
Available GPIO ports.
Definition: gpio.h:97
@ GPIO_PORT_A
Definition: network.h:57
@ NUM_GPIO_PORTS
Definition: network.h:59
@ GPIO_PORT_B
Definition: network.h:58
UartFlowControl
UART Flow control selection.
Definition: uart.h:39
@ UART_FLOW_CONTROL_RTS_CTS
Definition: network.h:46
@ UART_FLOW_CONTROL_CTS
Definition: network.h:45
@ UART_FLOW_CONTROL_RTS
Definition: network.h:44
@ UART_FLOW_CONTROL_NONE
Definition: network.h:43
Port and pin data.
Definition: network.h:62
GpioPort port
Definition: network.h:63
struct containing details of circular buffer
Definition: network_buffer.h:36
UART Settings.
Definition: network.h:67
GpioAddress rx
Definition: network.h:69
UartFlowControl flow_control
Definition: network.h:71
uint32_t baudrate
Definition: network.h:70
GpioAddress tx
Definition: network.h:68