From b93708ed1da6edaa48abc1977bb9942aa5e13990 Mon Sep 17 00:00:00 2001 From: Christian Daniel Date: Tue, 5 Jun 2012 20:48:09 +0200 Subject: [PATCH] add lots of debugging stuff --- firmware/include/fast_source.h | 1 + firmware/include/req_ctx.h | 2 ++ firmware/include/tuner_e4k.h | 2 ++ firmware/osmosdr-project/main.c | 8 ++++++++ firmware/src/fast_source.c | 10 ++++++++++ firmware/src/osdr_ssc.c | 9 +++++++++ firmware/src/req_ctx.c | 12 ++++++++++++ firmware/src/tuner_e4k.c | 13 +++++++++++++ firmware/usb-fast-audio-source/fast_source.c | 9 ++++++++- firmware/usb-fast-audio-source/fast_source.h | 1 + 10 files changed, 66 insertions(+), 1 deletion(-) diff --git a/firmware/include/fast_source.h b/firmware/include/fast_source.h index 0e2e43b..e36d114 100644 --- a/firmware/include/fast_source.h +++ b/firmware/include/fast_source.h @@ -30,5 +30,6 @@ extern unsigned char fastsource_interfaces[3]; void fastsource_init(void); void fastsource_start(void); +void fastsource_dump(void); void usb_submit_req_ctx(struct req_ctx *rctx); diff --git a/firmware/include/req_ctx.h b/firmware/include/req_ctx.h index 4d9826c..ebfa925 100644 --- a/firmware/include/req_ctx.h +++ b/firmware/include/req_ctx.h @@ -50,4 +50,6 @@ extern uint8_t req_ctx_num(struct req_ctx *ctx); void req_ctx_enqueue(struct llist_head *list, struct req_ctx *rctx); struct req_ctx *req_ctx_dequeue(struct llist_head *list); +void req_ctx_dump(); + #endif /* _REQ_CTX_H */ diff --git a/firmware/include/tuner_e4k.h b/firmware/include/tuner_e4k.h index 662cbd8..fde6bf1 100644 --- a/firmware/include/tuner_e4k.h +++ b/firmware/include/tuner_e4k.h @@ -215,4 +215,6 @@ int e4k_set_lna_gain(struct e4k_state *e4k, int32_t gain); int e4k_enable_manual_gain(struct e4k_state *e4k, uint8_t manual); int e4k_set_enh_gain(struct e4k_state *e4k, int32_t gain); +int e4k_dump(struct e4k_state *e4k); + #endif /* _E4K_TUNER_H */ diff --git a/firmware/osmosdr-project/main.c b/firmware/osmosdr-project/main.c index cdb91a9..cff51b9 100644 --- a/firmware/osmosdr-project/main.c +++ b/firmware/osmosdr-project/main.c @@ -335,6 +335,12 @@ static int cmd_tuner_iqofs(struct cmd_state *cs, enum cmd_op op, return e4k_manual_dc_offset(&e4k, iofs, irange, qofs, qrange); } +static int cmd_tuner_dump(struct cmd_state *cs, enum cmd_op op, + const char *cmd, int argc, char ** argv) +{ + return e4k_dump(&e4k); +} + static int cmd_dfu(struct cmd_state *cs, enum cmd_op op, const char *cmd, int argc, char ** argv) { @@ -345,6 +351,8 @@ static int cmd_dfu(struct cmd_state *cs, enum cmd_op op, static struct cmd cmds[] = { { "tuner.init", CMD_OP_EXEC, cmd_tuner_init, "Initialize the tuner" }, + { "tuner.dump", CMD_OP_EXEC, cmd_tuner_dump, + "Dump E4k registers" }, { "tuner.freq", CMD_OP_SET|CMD_OP_GET, cmd_rf_freq, "Tune to the specified frequency" }, { "tuner.gain", CMD_OP_SET, cmd_tuner_gain, diff --git a/firmware/src/fast_source.c b/firmware/src/fast_source.c index 8e61ba3..dfd0c39 100644 --- a/firmware/src/fast_source.c +++ b/firmware/src/fast_source.c @@ -588,3 +588,13 @@ void USBDDriverCallbacks_InterfaceSettingChanged(unsigned char interface, else LED_Set(USBD_LEDOTHER); } + +void fastsource_dump(void) +{ + struct req_ctx *rctx, *rctx2; + + printf("usb pending:"); + llist_for_each_entry_safe(rctx, rctx2, &usb_state.queue, list) + printf(" %02d", req_ctx_num(rctx)); + printf("\n\r"); +} diff --git a/firmware/src/osdr_ssc.c b/firmware/src/osdr_ssc.c index 13ac23e..3e41d53 100644 --- a/firmware/src/osdr_ssc.c +++ b/firmware/src/osdr_ssc.c @@ -277,7 +277,16 @@ static int cmd_ssc_stats(struct cmd_state *cs, enum cmd_op op, static int cmd_ssc_dump(struct cmd_state *cs, enum cmd_op op, const char *cmd, int argc, char **argv) { + struct req_ctx *rctx, *rctx2; + dma_dump_regs(); + req_ctx_dump(); + + printf("ssc pending:"); + llist_for_each_entry_safe(rctx, rctx2, &ssc_state.pending_rctx, list) + printf(" %02d", req_ctx_num(rctx)); + printf("\n\r"); + fastsource_dump(); } static struct cmd cmds[] = { diff --git a/firmware/src/req_ctx.c b/firmware/src/req_ctx.c index 495d262..9f22edc 100644 --- a/firmware/src/req_ctx.c +++ b/firmware/src/req_ctx.c @@ -129,3 +129,15 @@ void req_ctx_enqueue(struct llist_head *list, struct req_ctx *rctx) llist_add_tail(&rctx->list, list); local_irq_restore(flags); } + +void req_ctx_dump() +{ + int i; + + local_irq_save(flags); + printf("ctx status: "); + for(i = 0; i < NUM_REQ_CTX; i++) + printf(" %02x", req_ctx[i].state); + local_irq_restore(flags); + printf("\n\r"); +} diff --git a/firmware/src/tuner_e4k.c b/firmware/src/tuner_e4k.c index d4d9113..3a7de46 100644 --- a/firmware/src/tuner_e4k.c +++ b/firmware/src/tuner_e4k.c @@ -969,3 +969,16 @@ int e4k_init(struct e4k_state *e4k) return 0; } + +int e4k_dump(struct e4k_state *e4k) +{ + int i; + + for(i = 0; i < 64; i++) + printf("0x%02x: 0x%02x 0x%02x: 0x%02x 0x%02x: 0x%02x 0x%02x: 0x%02x\n\r", + i, e4k_reg_read(e4k, i), + i + 64, e4k_reg_read(e4k, i + 64), + i + 128, e4k_reg_read(e4k, i + 128), + i + 192, e4k_reg_read(e4k, i + 192) + ); +} diff --git a/firmware/usb-fast-audio-source/fast_source.c b/firmware/usb-fast-audio-source/fast_source.c index d9633fe..2db4b7c 100644 --- a/firmware/usb-fast-audio-source/fast_source.c +++ b/firmware/usb-fast-audio-source/fast_source.c @@ -145,4 +145,11 @@ void fastsource_start(void) USBD_Write(EP_NR, test_data, sizeof(test_data), wr_compl_cb, NULL); } - +void fastsource_dump(void) +{ + printf("usb pending: "); + printf("ssc pending:"); + llist_for_each_entry_safe(rctx, rctx2, &ssc_state.pending_rctx, list) + printf(" %d", req_ctx_num(rctx)); + printf("\r\n"); +} diff --git a/firmware/usb-fast-audio-source/fast_source.h b/firmware/usb-fast-audio-source/fast_source.h index 2d71b3a..fdd76d7 100644 --- a/firmware/usb-fast-audio-source/fast_source.h +++ b/firmware/usb-fast-audio-source/fast_source.h @@ -16,3 +16,4 @@ void fastsource_init(void); void fastsource_start(void); void fastsource_req_hdlr(const USBGenericRequest *request); +void fastsource_dump(void);