rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
hw_layer
ports
stm32
serial_over_usb
usbconsole.cpp
Go to the documentation of this file.
1
/**
2
* @file usbconsole.cpp
3
* @brief USB-over-serial configuration
4
*
5
* @date Oct 14, 2013
6
* @author Andrey Belomutskiy, (c) 2012-2020
7
*/
8
9
#include "
pch.h
"
10
11
12
#if EFI_USB_SERIAL
13
14
#include "usbconsole.h"
15
#include "
usbcfg.h
"
16
#include "
mpu_util.h
"
17
18
static
bool
isUsbSerialInitialized
=
false
;
19
20
/**
21
* start USB serial using hard-coded communications pins (see comments inside the code)
22
*/
23
void
usb_serial_start
() {
24
usbPopulateSerialNumber
(MCU_SERIAL_NUMBER_LOCATION, MCU_SERIAL_NUMBER_BYTES);
25
26
efiSetPadMode
(
"USB DM"
, EFI_USB_SERIAL_DM, PAL_MODE_ALTERNATE(EFI_USB_AF));
27
efiSetPadMode
(
"USB DP"
, EFI_USB_SERIAL_DP, PAL_MODE_ALTERNATE(EFI_USB_AF));
28
29
/*
30
* Initializes a serial-over-USB CDC driver.
31
*/
32
sduObjectInit(&
SDU1
);
33
sduStart(&
SDU1
, &
serusbcfg
);
34
35
/*
36
* Activates the USB driver and then the USB bus pull-up on D+.
37
* Note, a delay is inserted in order to not have to disconnect the cable
38
* after a reset.
39
*/
40
// See also https://github.com/rusefi/rusefi/issues/705
41
#ifndef EFI_SKIP_USB_DISCONNECT
42
usbDisconnectBus(
serusbcfg
.usbp);
43
chThdSleepMilliseconds(250);
44
#endif
/* EFI_SKIP_USB_DISCONNECT */
45
usbStart(
serusbcfg
.usbp, &
usbcfg
);
46
usbConnectBus(
serusbcfg
.usbp);
47
48
isUsbSerialInitialized
=
true
;
49
}
50
51
bool
is_usb_serial_ready
() {
52
return
isUsbSerialInitialized
&&
SDU1
.config->usbp->state == USB_ACTIVE;
53
}
54
55
#else
56
bool
is_usb_serial_ready
() {
57
return
false
;
58
}
59
60
#endif
/* EFI_USB_SERIAL */
efiSetPadMode
void efiSetPadMode(const char *msg, brain_pin_e brainPin, iomode_t mode)
Definition
bootloader_main.cpp:207
SDU1
BaseChannel SDU1
Definition
usbconsole.cpp:113
isUsbSerialInitialized
static bool isUsbSerialInitialized
Definition
usbconsole.cpp:25
is_usb_serial_ready
bool is_usb_serial_ready()
Definition
usbconsole.cpp:152
usb_serial_start
void usb_serial_start(void)
Main function of PDL.
Definition
usbconsole.cpp:128
mpu_util.h
pch.h
usbcfg
const USBConfig usbcfg
Definition
usbcfg.cpp:452
serusbcfg
const SerialUSBConfig serusbcfg
Definition
usbcfg.cpp:462
usbPopulateSerialNumber
void usbPopulateSerialNumber(const uint8_t *serialNumber, size_t bytes)
Definition
usbcfg.cpp:263
usbcfg.h
Generated on Sat Sep 27 2025 00:10:07 for rusEFI by
1.9.8