rusEFI
The most advanced open source ECU
hw_layer
drivers
serial
serial_hw.cpp
Go to the documentation of this file.
1
/**
2
* @file serial_hw.cpp
3
* @brief SERIAL bus low level code
4
*
5
* @date Apr 17, 2020
6
* @author Konstantin Smola, (c) 2020
7
*/
8
9
#include "
pch.h
"
10
11
#if EFI_AUX_SERIAL
12
13
#include "
serial.h
"
14
#include "
serial_hw.h
"
15
#include "string.h"
16
#include "
mpu_util.h
"
17
18
static
bool
isSerialEnabled
=
false
;
19
static
bool
isSerialTXEnabled
=
false
;
20
static
bool
isSerialRXEnabled
=
false
;
21
22
static
SerialConfig
uartCfg
;
23
static
SerialRead
serialRead
;
24
25
static
void
auxInfo
() {
26
if
(!
isSerialEnabled
) {
27
efiPrintf(
"AUX Serial is not enabled, please enable & restart"
);
28
return
;
29
}
30
31
efiPrintf(
"AUX Serial TX %s"
,
hwPortname
(
engineConfiguration
->
auxSerialTxPin
));
32
efiPrintf(
"AUX Serial RX %s"
,
hwPortname
(
engineConfiguration
->
auxSerialRxPin
));
33
}
34
35
void
enableAuxSerial
() {
36
uartCfg
.speed =
engineConfiguration
->
auxSerialSpeed
;
37
sdStart(AUX_SERIAL_DEVICE, &
uartCfg
);
38
39
efiPrintf(
"AUX Serial started"
);
40
}
41
42
void
stopAuxSerialPins
() {
43
efiSetPadUnused
(
activeConfiguration
.
auxSerialTxPin
);
44
efiSetPadUnused
(
activeConfiguration
.
auxSerialRxPin
);
45
}
46
47
void
startAuxSerialPins
() {
48
if
(
isBrainPinValid
(
engineConfiguration
->
auxSerialTxPin
))
49
efiSetPadMode
(
"AuxSerial TX"
,
engineConfiguration
->
auxSerialTxPin
, PAL_MODE_ALTERNATE(8));
50
if
(
isBrainPinValid
(
engineConfiguration
->
auxSerialRxPin
))
51
efiSetPadMode
(
"AuxSerial RX"
,
engineConfiguration
->
auxSerialRxPin
, PAL_MODE_ALTERNATE(8));
52
53
enableAuxSerial
();
54
}
55
56
void
initAuxSerial
(
void
) {
57
addConsoleAction
(
"auxinfo"
,
auxInfo
);
58
59
isSerialRXEnabled
=
isBrainPinValid
(
engineConfiguration
->
auxSerialRxPin
);
60
isSerialTXEnabled
=
isBrainPinValid
(
engineConfiguration
->
auxSerialTxPin
);
61
62
isSerialEnabled
=
63
isSerialRXEnabled
||
// we need at least one pin set
64
isSerialTXEnabled
;
65
66
// exit if no pin is configured
67
if
(!
isSerialEnabled
)
68
return
;
69
70
// Validate pins
71
if
(
isSerialTXEnabled
&& !
isValidSerialTxPin
(
engineConfiguration
->
auxSerialTxPin
)) {
72
criticalError(
"unexpected aux TX pin"
);
73
return
;
74
}
75
76
if
(
isSerialRXEnabled
&& !
isValidSerialRxPin
(
engineConfiguration
->
auxSerialRxPin
)) {
77
criticalError(
"unexpected aux RX pin"
);
78
return
;
79
}
80
81
startAuxSerialPins
();
82
83
if
(
isSerialRXEnabled
)
84
serialRead
.
start
();
85
}
86
87
#endif
// EFI_AUX_SERIAL
efiSetPadMode
void efiSetPadMode(const char *msg, brain_pin_e brainPin, iomode_t mode)
Definition:
bootloader_main.cpp:131
SerialRead
Definition:
serial.h:29
ThreadController::start
void start()
Start the thread.
Definition:
thread_controller.h:48
addConsoleAction
void addConsoleAction(const char *token, Void callback)
Register console action without parameters.
Definition:
cli_registry.cpp:89
activeConfiguration
engine_configuration_s & activeConfiguration
Definition:
engine_configuration.cpp:130
efiSetPadUnused
void efiSetPadUnused(brain_pin_e brainPin)
Definition:
io_pins.cpp:20
mpu_util.h
isValidSerialRxPin
bool isValidSerialRxPin(brain_pin_e pin)
Definition:
stm32_serial.cpp:25
isValidSerialTxPin
bool isValidSerialTxPin(brain_pin_e pin)
Definition:
stm32_serial.cpp:21
pch.h
engineConfiguration
engine_configuration_s * engineConfiguration
Definition:
persistent_store.cpp:48
hwPortname
const char * hwPortname(brain_pin_e brainPin)
Definition:
pin_repository.cpp:241
isBrainPinValid
bool isBrainPinValid(brain_pin_e brainPin)
Definition:
pin_repository.cpp:25
serial.h
auxInfo
static void auxInfo()
Definition:
serial_hw.cpp:25
serialRead
static SerialRead serialRead
Definition:
serial_hw.cpp:23
isSerialEnabled
static bool isSerialEnabled
Definition:
serial_hw.cpp:18
isSerialTXEnabled
static bool isSerialTXEnabled
Definition:
serial_hw.cpp:19
uartCfg
static SerialConfig uartCfg
Definition:
serial_hw.cpp:22
enableAuxSerial
void enableAuxSerial()
Definition:
serial_hw.cpp:35
isSerialRXEnabled
static bool isSerialRXEnabled
Definition:
serial_hw.cpp:20
initAuxSerial
void initAuxSerial(void)
Definition:
serial_hw.cpp:56
stopAuxSerialPins
void stopAuxSerialPins()
Definition:
serial_hw.cpp:42
startAuxSerialPins
void startAuxSerialPins()
Definition:
serial_hw.cpp:47
serial_hw.h
SERIAL bus low level code.
engine_configuration_s::auxSerialRxPin
Gpio auxSerialRxPin
Definition:
engine_configuration_generated_structures_alphax-2chan.h:2896
engine_configuration_s::auxSerialSpeed
uint32_t auxSerialSpeed
Definition:
engine_configuration_generated_structures_alphax-2chan.h:2965
engine_configuration_s::auxSerialTxPin
Gpio auxSerialTxPin
Definition:
engine_configuration_generated_structures_alphax-2chan.h:2891
Generated on Fri Sep 20 2024 00:07:31 for rusEFI by
1.9.1