mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-17 21:58:33 +03:00
Compare commits
6 Commits
0.9.0
...
laforge/20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
050b9dde68 | ||
|
|
f1a0ed905b | ||
|
|
874a1a2d64 | ||
|
|
b07131f2a5 | ||
|
|
7783cd7a28 | ||
|
|
09c279874e |
@@ -137,6 +137,12 @@ static void check_exec_dbg_cmd(void)
|
|||||||
board_exec_dbg_cmd(ch);
|
board_exec_dbg_cmd(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <osmocom/core/panic.h>
|
||||||
|
void WDT_IrqHandler(void)
|
||||||
|
{
|
||||||
|
osmo_panic("WDT");
|
||||||
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* Main
|
* Main
|
||||||
*------------------------------------------------------------------------------*/
|
*------------------------------------------------------------------------------*/
|
||||||
@@ -152,8 +158,9 @@ extern int main(void)
|
|||||||
led_blink(LED_GREEN, BLINK_ALWAYS_ON);
|
led_blink(LED_GREEN, BLINK_ALWAYS_ON);
|
||||||
|
|
||||||
/* Enable watchdog for 2000ms, with no window */
|
/* Enable watchdog for 2000ms, with no window */
|
||||||
WDT_Enable(WDT, WDT_MR_WDRSTEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT |
|
WDT_Enable(WDT, WDT_MR_WDFIEN | WDT_MR_WDDBGHLT | WDT_MR_WDIDLEHLT |
|
||||||
(WDT_GetPeriod(2000) << 16) | WDT_GetPeriod(2000));
|
(WDT_GetPeriod(1000) << 16) | WDT_GetPeriod(1000));
|
||||||
|
NVIC_EnableIRQ(WDT_IRQn);
|
||||||
|
|
||||||
PIO_InitializeInterrupts(10);
|
PIO_InitializeInterrupts(10);
|
||||||
|
|
||||||
|
|||||||
@@ -1672,6 +1672,10 @@ uint8_t USBD_HAL_Halt(uint8_t bEndpoint, uint8_t ctl)
|
|||||||
UDP->UDP_RST_EP |= 1 << bEndpoint;
|
UDP->UDP_RST_EP |= 1 << bEndpoint;
|
||||||
UDP->UDP_RST_EP &= ~(1 << bEndpoint);
|
UDP->UDP_RST_EP &= ~(1 << bEndpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This fixes a weird bug with regard to ping-pong OUT endpoints */
|
||||||
|
UDP->UDP_RST_EP |= 1 << bEndpoint;
|
||||||
|
UDP->UDP_RST_EP &= ~(1 << bEndpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return Halt status */
|
/* Return Halt status */
|
||||||
|
|||||||
@@ -89,8 +89,8 @@
|
|||||||
#define PINS_WWAN_IN { PIN_WWAN1, PIN_WWAN2 }
|
#define PINS_WWAN_IN { PIN_WWAN1, PIN_WWAN2 }
|
||||||
|
|
||||||
/* outputs controlling RESET input of modems */
|
/* outputs controlling RESET input of modems */
|
||||||
#define PIN_PERST1 {PIO_PA25, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_PULLUP}
|
#define PIN_PERST1 {PIO_PA25, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_PULLUP}
|
||||||
#define PIN_PERST2 {PIO_PA26, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_PULLUP}
|
#define PIN_PERST2 {PIO_PA26, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_PULLUP}
|
||||||
#define PINS_PERST { PIN_PERST1, PIN_PERST2 }
|
#define PINS_PERST { PIN_PERST1, PIN_PERST2 }
|
||||||
|
|
||||||
#define PIN_VERSION_DET {PIO_PA19, PIOA, ID_PIOA, PIO_PERIPH_D, PIO_DEFAULT}
|
#define PIN_VERSION_DET {PIO_PA19, PIOA, ID_PIOA, PIO_PERIPH_D, PIO_DEFAULT}
|
||||||
|
|||||||
@@ -155,3 +155,7 @@
|
|||||||
#endif
|
#endif
|
||||||
/* SIMtrace board supports man-in-the-middle mode */
|
/* SIMtrace board supports man-in-the-middle mode */
|
||||||
//#define HAVE_MITM
|
//#define HAVE_MITM
|
||||||
|
|
||||||
|
#define DETECT_VCC_BY_ADC
|
||||||
|
#define VCC_UV_THRESH_1V8 (1500000/2) /* 10k/10k resistive divider halves voltage */
|
||||||
|
#define VCC_UV_THRESH_3V (2500000/2) /* 10k/10k resistive divider halves voltage */
|
||||||
|
|||||||
@@ -567,6 +567,35 @@ void mode_cardemu_configure(void)
|
|||||||
TRACE_ENTRY();
|
TRACE_ENTRY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct relevant_irq {
|
||||||
|
uint32_t irq;
|
||||||
|
uint32_t prio;
|
||||||
|
const char *name;
|
||||||
|
};
|
||||||
|
static const struct relevant_irq relevant_irqs[] = {
|
||||||
|
{ UDP_IRQn, 14, "USB" },
|
||||||
|
{ CONSOLE_IRQ, 15, "CONSOLE" },
|
||||||
|
{ FIRST_USART_IRQ, 0, "7816_0" },
|
||||||
|
#ifdef CARDEMU_SECOND_UART
|
||||||
|
{ USART0_IRQn, 0, "7816_1" },
|
||||||
|
#endif
|
||||||
|
#ifdef DETECT_VCC_BY_ADC
|
||||||
|
{ ADC_IRQn, 13, "ADC" },
|
||||||
|
#endif
|
||||||
|
{ PIOA_IRQn, 10, "PIOA" },
|
||||||
|
{ PIOB_IRQn, 10, "PIOB" },
|
||||||
|
{ PIOC_IRQn, 10, "PIOC" },
|
||||||
|
};
|
||||||
|
void dump_irq_prios(void)
|
||||||
|
{
|
||||||
|
printf("Interrupt Enable Mask (ISER): %08x%08x\n\r", NVIC->ISER[1], NVIC->ISER[0]);
|
||||||
|
for (unsigned int i = 0; i < ARRAY_SIZE(relevant_irqs); i++) {
|
||||||
|
const struct relevant_irq *ri = &relevant_irqs[i];
|
||||||
|
printf("IRQ prio %02u (%s): current=%u, expected=%u\r\n", ri->irq, ri->name,
|
||||||
|
NVIC_GetPriority(ri->irq), ri->prio);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* called if config is activated */
|
/* called if config is activated */
|
||||||
void mode_cardemu_init(void)
|
void mode_cardemu_init(void)
|
||||||
{
|
{
|
||||||
@@ -636,6 +665,9 @@ void mode_cardemu_init(void)
|
|||||||
sim_switch_use_physical(1, 1);
|
sim_switch_use_physical(1, 1);
|
||||||
/* TODO check RST and VCC */
|
/* TODO check RST and VCC */
|
||||||
#endif /* CARDEMU_SECOND_UART */
|
#endif /* CARDEMU_SECOND_UART */
|
||||||
|
|
||||||
|
dump_irq_prios();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* called if config is deactivated */
|
/* called if config is deactivated */
|
||||||
|
|||||||
@@ -279,6 +279,7 @@ static void usb_in_xfer_cb(struct libusb_transfer *xfer)
|
|||||||
process_usb_msg(ci, xfer->buffer, xfer->actual_length);
|
process_usb_msg(ci, xfer->buffer, xfer->actual_length);
|
||||||
break;
|
break;
|
||||||
case LIBUSB_TRANSFER_ERROR:
|
case LIBUSB_TRANSFER_ERROR:
|
||||||
|
case LIBUSB_TRANSFER_STALL:
|
||||||
LOGCI(ci, LOGL_FATAL, "USB IN transfer error, trying resubmit\n");
|
LOGCI(ci, LOGL_FATAL, "USB IN transfer error, trying resubmit\n");
|
||||||
break;
|
break;
|
||||||
case LIBUSB_TRANSFER_NO_DEVICE:
|
case LIBUSB_TRANSFER_NO_DEVICE:
|
||||||
@@ -333,6 +334,7 @@ static void usb_irq_xfer_cb(struct libusb_transfer *xfer)
|
|||||||
process_usb_msg_irq(ci, xfer->buffer, xfer->actual_length);
|
process_usb_msg_irq(ci, xfer->buffer, xfer->actual_length);
|
||||||
break;
|
break;
|
||||||
case LIBUSB_TRANSFER_ERROR:
|
case LIBUSB_TRANSFER_ERROR:
|
||||||
|
case LIBUSB_TRANSFER_STALL:
|
||||||
LOGCI(ci, LOGL_FATAL, "USB INT transfer error, trying resubmit\n");
|
LOGCI(ci, LOGL_FATAL, "USB INT transfer error, trying resubmit\n");
|
||||||
break;
|
break;
|
||||||
case LIBUSB_TRANSFER_NO_DEVICE:
|
case LIBUSB_TRANSFER_NO_DEVICE:
|
||||||
|
|||||||
Reference in New Issue
Block a user