Change jtag_add_pathmove to set jtag_error rather than call exit():
- Add new error codes to encode the possible failure conditions. - Add documentation to describe the routine's possible error codes. git-svn-id: svn://svn.berlios.de/openocd/trunk@2138 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
731d2d0cb6
commit
ff85ad7c12
|
@ -613,7 +613,8 @@ void jtag_add_pathmove(int num_states, const tap_state_t *path)
|
||||||
if (!tap_is_state_stable(path[num_states - 1]))
|
if (!tap_is_state_stable(path[num_states - 1]))
|
||||||
{
|
{
|
||||||
LOG_ERROR("BUG: TAP path doesn't finish in a stable state");
|
LOG_ERROR("BUG: TAP path doesn't finish in a stable state");
|
||||||
exit(-1);
|
jtag_set_error(ERROR_JTAG_NOT_STABLE_STATE);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < num_states; i++)
|
for (int i = 0; i < num_states; i++)
|
||||||
|
@ -621,7 +622,8 @@ void jtag_add_pathmove(int num_states, const tap_state_t *path)
|
||||||
if (path[i] == TAP_RESET)
|
if (path[i] == TAP_RESET)
|
||||||
{
|
{
|
||||||
LOG_ERROR("BUG: TAP_RESET is not a valid state for pathmove sequences");
|
LOG_ERROR("BUG: TAP_RESET is not a valid state for pathmove sequences");
|
||||||
exit(-1);
|
jtag_set_error(ERROR_JTAG_STATE_INVALID);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( tap_state_transition(cur_state, true) != path[i]
|
if ( tap_state_transition(cur_state, true) != path[i]
|
||||||
|
@ -629,7 +631,8 @@ void jtag_add_pathmove(int num_states, const tap_state_t *path)
|
||||||
{
|
{
|
||||||
LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition",
|
LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition",
|
||||||
tap_state_name(cur_state), tap_state_name(path[i]));
|
tap_state_name(cur_state), tap_state_name(path[i]));
|
||||||
exit(-1);
|
jtag_set_error(ERROR_JTAG_TRANSITION_INVALID);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
cur_state = path[i];
|
cur_state = path[i];
|
||||||
}
|
}
|
||||||
|
|
|
@ -447,6 +447,12 @@ extern void jtag_add_tlr(void);
|
||||||
* can only implement a few transitions and therefore
|
* can only implement a few transitions and therefore
|
||||||
* a partial implementation of pathmove would have little practical
|
* a partial implementation of pathmove would have little practical
|
||||||
* application.
|
* application.
|
||||||
|
*
|
||||||
|
* If an error occurs, jtag_error will contain one of these error codes:
|
||||||
|
* - ERROR_JTAG_NOT_STABLE_STATE -- The final state was not stable.
|
||||||
|
* - ERROR_JTAG_STATE_INVALID -- The path passed through TAP_RESET.
|
||||||
|
* - ERROR_JTAG_TRANSITION_INVALID -- The path includes invalid
|
||||||
|
* state transitions.
|
||||||
*/
|
*/
|
||||||
extern void jtag_add_pathmove(int num_states, const tap_state_t* path);
|
extern void jtag_add_pathmove(int num_states, const tap_state_t* path);
|
||||||
|
|
||||||
|
@ -606,6 +612,8 @@ void jtag_tap_handle_event(jtag_tap_t* tap, enum jtag_tap_event e);
|
||||||
#define ERROR_JTAG_QUEUE_FAILED (-104)
|
#define ERROR_JTAG_QUEUE_FAILED (-104)
|
||||||
#define ERROR_JTAG_NOT_STABLE_STATE (-105)
|
#define ERROR_JTAG_NOT_STABLE_STATE (-105)
|
||||||
#define ERROR_JTAG_DEVICE_ERROR (-107)
|
#define ERROR_JTAG_DEVICE_ERROR (-107)
|
||||||
|
#define ERROR_JTAG_STATE_INVALID (-108)
|
||||||
|
#define ERROR_JTAG_TRANSITION_INVALID (-109)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jtag_add_dr_out() is a version of jtag_add_dr_scan() which
|
* jtag_add_dr_out() is a version of jtag_add_dr_scan() which
|
||||||
|
|
Loading…
Reference in New Issue