req_ctx: Fix allocation (allocate 1 block, not all) and call _init()
diff --git a/firmware/src_simtrace/main.c b/firmware/src_simtrace/main.c
index 95adb7e..faba147 100644
--- a/firmware/src_simtrace/main.c
+++ b/firmware/src_simtrace/main.c
@@ -4,6 +4,8 @@
*------------------------------------------------------------------------------*/
#include "board.h"
+#include "utils.h"
+#include "req_ctx.h"
/*------------------------------------------------------------------------------
* Internal variables
@@ -95,6 +97,8 @@
/* Disable watchdog*/
WDT_Disable( WDT ) ;
+ req_ctx_init();
+
PIO_InitializeInterrupts(0);
SIMtrace_USB_Initialize();
diff --git a/firmware/src_simtrace/req_ctx.c b/firmware/src_simtrace/req_ctx.c
index 40774fe..7e9cffd 100644
--- a/firmware/src_simtrace/req_ctx.c
+++ b/firmware/src_simtrace/req_ctx.c
@@ -52,6 +52,7 @@
if (req_ctx[i].state == old_state) {
toReturn = &req_ctx[i];
toReturn->state = new_state;
+ break;
}
}
local_irq_restore(flags);
diff --git a/firmware/src_simtrace/req_ctx.h b/firmware/src_simtrace/req_ctx.h
index be964ca..67090a1 100644
--- a/firmware/src_simtrace/req_ctx.h
+++ b/firmware/src_simtrace/req_ctx.h
@@ -52,6 +52,7 @@
uint8_t *data;
};
+extern void req_ctx_init(void);
extern struct req_ctx __ramfunc *req_ctx_find_get(int large, uint32_t old_state, uint32_t new_state);
extern struct req_ctx *req_ctx_find_busy(void);
extern void req_ctx_set_state(struct req_ctx *ctx, uint32_t new_state);