rusEFI
The most advanced open source ECU
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;
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 
37  sdStart(AUX_SERIAL_DEVICE, &uartCfg);
38 
39  efiPrintf("AUX Serial started");
40 }
41 
45 }
46 
49  efiSetPadMode("AuxSerial TX", engineConfiguration->auxSerialTxPin, PAL_MODE_ALTERNATE(8));
51  efiSetPadMode("AuxSerial RX", engineConfiguration->auxSerialRxPin, PAL_MODE_ALTERNATE(8));
52 
54 }
55 
56 void initAuxSerial(void) {
57  addConsoleAction("auxinfo", auxInfo);
58 
61 
63  isSerialRXEnabled || // we need at least one pin set
65 
66  // exit if no pin is configured
67  if (!isSerialEnabled)
68  return;
69 
70  // Validate pins
72  criticalError("unexpected aux TX pin");
73  return;
74  }
75 
77  criticalError("unexpected aux RX pin");
78  return;
79  }
80 
82 
84  serialRead.start();
85 }
86 
87 #endif // EFI_AUX_SERIAL
void efiSetPadMode(const char *msg, brain_pin_e brainPin, iomode_t mode)
void start()
Start the thread.
void addConsoleAction(const char *token, Void callback)
Register console action without parameters.
engine_configuration_s & activeConfiguration
void efiSetPadUnused(brain_pin_e brainPin)
Definition: io_pins.cpp:20
bool isValidSerialRxPin(brain_pin_e pin)
bool isValidSerialTxPin(brain_pin_e pin)
engine_configuration_s * engineConfiguration
const char * hwPortname(brain_pin_e brainPin)
bool isBrainPinValid(brain_pin_e brainPin)
static void auxInfo()
Definition: serial_hw.cpp:25
static SerialRead serialRead
Definition: serial_hw.cpp:23
static bool isSerialEnabled
Definition: serial_hw.cpp:18
static bool isSerialTXEnabled
Definition: serial_hw.cpp:19
static SerialConfig uartCfg
Definition: serial_hw.cpp:22
void enableAuxSerial()
Definition: serial_hw.cpp:35
static bool isSerialRXEnabled
Definition: serial_hw.cpp:20
void initAuxSerial(void)
Definition: serial_hw.cpp:56
void stopAuxSerialPins()
Definition: serial_hw.cpp:42
void startAuxSerialPins()
Definition: serial_hw.cpp:47
SERIAL bus low level code.