#ifndef JTAG_H
#define JTAG_H
-#include "binarybuffer.h"
-#include "log.h"
+#include <helper/binarybuffer.h>
+#include <helper/log.h>
#ifdef _DEBUG_JTAG_IO_
#define DEBUG_JTAG_IO(expr ...) \
#define DEBUG_JTAG_IOZ 64
#endif
-/*-----<Macros>--------------------------------------------------*/
-
-/**
- * When given an array, compute its DIMension; in other words, the
- * number of elements in the array
- */
-#define DIM(x) (sizeof(x)/sizeof((x)[0]))
-
-/** Calculate the number of bytes required to hold @a n TAP scan bits */
-#define TAP_SCAN_BYTES(n) CEIL(n, 8)
-
/*-----</Macros>-------------------------------------------------*/
/**
struct jtag_tap_event_action
{
- enum jtag_event event;
- Jim_Obj* body;
- struct jtag_tap_event_action* next;
+ /// The event for which this action will be triggered.
+ enum jtag_event event;
+ /// The interpreter to use for evaluating the @c body.
+ Jim_Interp *interp;
+ /// Contains a script to 'eval' when the @c event is triggered.
+ Jim_Obj *body;
+ // next action in linked list
+ struct jtag_tap_event_action *next;
};
/**
* Initialize interface upon startup. Return a successful no-op upon
* subsequent invocations.
*/
-int jtag_interface_init(struct command_context_s* cmd_ctx);
+int jtag_interface_init(struct command_context* cmd_ctx);
/// Shutdown the JTAG interface upon program exit.
int jtag_interface_quit(void);
* Initialize JTAG chain using only a RESET reset. If init fails,
* try reset + init.
*/
-int jtag_init(struct command_context_s* cmd_ctx);
+int jtag_init(struct command_context* cmd_ctx);
/// reset, then initialize JTAG chain
-int jtag_init_reset(struct command_context_s* cmd_ctx);
-int jtag_register_commands(struct command_context_s* cmd_ctx);
-int jtag_init_inner(struct command_context_s *cmd_ctx);
+int jtag_init_reset(struct command_context* cmd_ctx);
+int jtag_register_commands(struct command_context* cmd_ctx);
+int jtag_init_inner(struct command_context *cmd_ctx);
/**
* @file
* @param data3 An integer big enough to use as an @c int or a pointer.
*
*/
-void jtag_add_callback4(jtag_callback_t f, jtag_callback_data_t data0,
- jtag_callback_data_t data1, jtag_callback_data_t data2,
- jtag_callback_data_t data3);
-
/**
* Run a TAP_RESET reset where the end state is TAP_RESET,
* There is no jtag_add_dr_outin() version of this fn that also allows
* clocking data back in. Patches gladly accepted!
*/
-void jtag_add_dr_out(struct jtag_tap* tap,
- int num_fields, const int* num_bits, const uint32_t* value,
- tap_state_t end_state);
/**
*/
void jtag_poll_set_enabled(bool value);
+
+/* The minidriver may have inline versions of some of the low
+ * level APIs that are used in inner loops. */
+#include <jtag/minidriver.h>
+
#endif /* JTAG_H */