support switching usb modes
@@ -158,23 +158,6 @@ uart_ring *get_ring_by_number(int a) {
}
}
-void debug_ring_callback(uart_ring *ring) {
- char rcv;
- while (getc(ring, &rcv)) {
- putc(ring, rcv);
-
- // jump to DFU flash
- if (rcv == 'z') {
- enter_bootloader_mode = ENTER_BOOTLOADER_MAGIC;
- NVIC_SystemReset();
- }
- if (rcv == 'x') {
- // normal reset
- NVIC_SystemReset();
- }
- }
-}
-
// ***************************** serial port *****************************
void uart_ring_process(uart_ring *q) {
@@ -282,6 +265,41 @@ int putc(uart_ring *q, char elem) {
#include "spi.h"
#include "safety.h"
+// ********************* debugging *********************
+
+void debug_ring_callback(uart_ring *ring) {
+ char rcv;
+ while (getc(ring, &rcv)) {
+ putc(ring, rcv);
+
+ // jump to DFU flash
+ if (rcv == 'z') {
+ enter_bootloader_mode = ENTER_BOOTLOADER_MAGIC;
+ NVIC_SystemReset();
+ }
+
+ // normal reset
+ if (rcv == 'x') {
+ NVIC_SystemReset();
+ }
+
+ // enable CDP mode
+ if (rcv == 'C') {
+ puts("switching USB to CDP mode\n");
+ set_usb_power_mode(USB_POWER_CDP);
+ }
+ if (rcv == 'c') {
+ puts("switching USB to client mode\n");
+ set_usb_power_mode(USB_POWER_CLIENT);
+ }
+ if (rcv == 'D') {
+ puts("switching USB to DCP mode\n");
+ set_usb_power_mode(USB_POWER_DCP);
+ }
+ }
+}
+
+
// ***************************** CAN *****************************
void process_can(uint8_t can_number) {
@@ -851,9 +869,10 @@ int main() {
uart_init(USART3, 10400);
USART3->CR2 |= USART_CR2_LINEN;
- /*puts("EXTERNAL");
+ // print if we have a hardware serial port
+ puts("EXTERNAL ");
puth(has_external_debug_serial);
- puts("\n");*/
+ puts("\n");
// enable USB
usb_init();
@@ -934,12 +953,12 @@ int main() {
// reset this every 16th pass
if ((cnt&0xF) == 0) pending_can_live = 0;
- /*#ifdef DEBUG
+ #ifdef DEBUG
puts("** blink ");
puth(can_rx_q.r_ptr); puts(" "); puth(can_rx_q.w_ptr); puts(" ");
puth(can_tx1_q.r_ptr); puts(" "); puth(can_tx1_q.w_ptr); puts(" ");
puth(can_tx2_q.r_ptr); puts(" "); puth(can_tx2_q.w_ptr); puts("\n");
- #endif*/
+ #endif
/*puts("voltage: "); puth(adc_get(ADCCHAN_VOLTAGE)); puts(" ");
puts("current: "); puth(adc_get(ADCCHAN_CURRENT)); puts("\n");*/
