Files
badgemagic-firmware/src/usb/debug.c
Dien-Nhung Nguyen 4e556ab11f Add next gen profile and configurations (#67)
* fix: crash in picture animation

* ble: add next gen profile

* force read header from flash anyway

* fix: bmlist: mem leak

* feat: add reset option after legacy transfers
2025-02-17 10:05:23 +01:00

82 lines
2.2 KiB
C

#include "debug.h"
void print_setuppk(USB_SETUP_REQ *request)
{
PRINT("Setup request:\n");
char *dir[] = {"OUT", "IN"};
char *type[] = {"Standard", "Class", "Vendor", "Reserved Type"};
char *recipient[] = {
"Device", "Interface", "Endpoint", "Other","Reserved Recipient"
};
char *bRequest[] = {
"GET_STATUS",
"CLEAR_FEATURE",
"Reserved",
"SET_FEATURE",
"Reserved",
"SET_ADDRESS",
"GET_DESCRIPTOR",
"SET_DESCRIPTOR",
"GET_CONFIGURATION",
"SET_CONFIGURATION",
"GET_INTERFACE",
"SET_INTERFACE",
"SYNCH_FRAME",
};
uint8_t t = request->bRequestType;
uint8_t req = request->bRequest;
uint8_t type_val = (t & USB_REQ_TYP_MASK) >> 5;
uint8_t recip_val = t & USB_REQ_RECIP_MASK;
if (recip_val > 4)
recip_val = 4;
PRINT("\t- bRequestType: 0x%02x (%s|%s|%s)\n", t, dir[t>>7],
type[type_val],
recipient[recip_val]);
PRINT("\t- bRequest: 0x%02x (%s)\n", req, req > 12 ?
"N/A" : bRequest[req]);
PRINT("\t- wValue: 0x%04x\n", request->wValue);
PRINT("\t- wIndex%s: 0x%04x\n",
recip_val == USB_REQ_RECIP_INTERF ? " (wInterfaceNumber)" : "",
request->wIndex);
PRINT("\t- wLength: 0x%04x\n", request->wLength);
}
void print_status_reg()
{
char *token_type[] = {
"OUT", "SOF","IN", "SETUP",
};
uint8_t reg = R8_USB_INT_ST;
uint8_t is_setup = reg & RB_UIS_SETUP_ACT;
uint8_t toggle = reg & RB_UIS_TOG_OK;
uint8_t token = (reg & MASK_UIS_TOKEN) >> 4;
uint8_t ep_num = reg & MASK_UIS_ENDP;
PRINT("usb: Status reg: 0x%02x (%s|%s|%s|EP:%d)\n", reg,
is_setup ? "SETUP??" : "0",
toggle ? "TOGGLE OK" : "0", token_type[token], ep_num);
}
void print_intflag_reg()
{
uint8_t reg = R8_USB_INT_FG;
uint8_t is_nak = reg & RB_U_IS_NAK;
uint8_t tog_ok = reg & RB_U_TOG_OK;
uint8_t sie = reg & RB_U_SIE_FREE;
uint8_t overflow = reg & RB_UIF_FIFO_OV;
uint8_t suspend = reg & RB_UIF_SUSPEND;
uint8_t xfer_complete = reg & RB_UIF_TRANSFER;
uint8_t bus_reset = reg & RB_UIF_BUS_RST;
PRINT("usb: Interrupt reg: 0x%02x (%s|%s|%s|%s|%s|%s)\n", reg,
is_nak ? "NAK received" : "0",
tog_ok ? "Toggle ok" : "0",
sie ? "SIE" : "0",
overflow ? "FIFO overflow" : "0",
suspend ? "Suspend" : "0",
xfer_complete ? "Xfer completed" : "0");
}