fix silly bugs
This commit is contained in:
parent
8eb1995361
commit
2e85d85de3
|
@ -56,8 +56,12 @@ void mehfet_hw_disconnect(void) {
|
||||||
sbw_deinit();
|
sbw_deinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void mehfet_hw_reset_target(void) {
|
void mehfet_hw_set_clkspeed(bool fast) {
|
||||||
|
if (fast) {
|
||||||
|
sbw_set_freq(true, 350e3);
|
||||||
|
} else {
|
||||||
|
sbw_set_freq(false, 50e3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
uint8_t mehfet_hw_get_old_lines(void) {
|
uint8_t mehfet_hw_get_old_lines(void) {
|
||||||
return (sbw_get_last_tclk() ? 1 : 0)
|
return (sbw_get_last_tclk() ? 1 : 0)
|
||||||
|
@ -111,12 +115,6 @@ enum mehfet_resettap_status mehfet_hw_reset_tap(enum mehfet_resettap_flags flags
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & mehfet_rsttap_highspeed) {
|
|
||||||
sbw_set_freq(true, 350e3);
|
|
||||||
} else {
|
|
||||||
sbw_set_freq(false, 50e3);
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,19 +47,19 @@ static uint8_t read_byte(void) {
|
||||||
rxpos = 0;
|
rxpos = 0;
|
||||||
|
|
||||||
// empty tinyusb internal buffer
|
// empty tinyusb internal buffer
|
||||||
if (tud_vendor_n_mounted(VND_N_CFG)) {
|
if (tud_vendor_n_mounted(VND_N_MEHFET)) {
|
||||||
while (tud_vendor_n_available(VND_N_CFG)) {
|
while (tud_vendor_n_available(VND_N_MEHFET)) {
|
||||||
tud_vendor_n_read(VND_N_CFG, rx_buf, sizeof rx_buf);
|
tud_vendor_n_read(VND_N_MEHFET, rx_buf, sizeof rx_buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
static void write_flush(void) {
|
static void write_flush(void) {
|
||||||
// TODO: is this needed?
|
// TODO: is this needed?
|
||||||
while (tud_vendor_n_write_available(VND_N_CFG) < txpos) {
|
while (tud_vendor_n_write_available(VND_N_MEHFET) < txpos) {
|
||||||
thread_yield();
|
thread_yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
tud_vendor_n_write(VND_N_CFG, tx_buf, txpos);
|
tud_vendor_n_write(VND_N_MEHFET, tx_buf, txpos);
|
||||||
txpos = 0;
|
txpos = 0;
|
||||||
}
|
}
|
||||||
static void write_byte(uint8_t v) {
|
static void write_byte(uint8_t v) {
|
||||||
|
@ -79,15 +79,19 @@ static struct cmdlen read_cmd_len(void) {
|
||||||
lastbyte = cmd;
|
lastbyte = cmd;
|
||||||
uint32_t l = 0;
|
uint32_t l = 0;
|
||||||
|
|
||||||
|
//printf("cmd=%02x\n", cmd);
|
||||||
|
|
||||||
for (size_t i = 0; (i < 4) && (lastbyte & 0x80); ++i) {
|
for (size_t i = 0; (i < 4) && (lastbyte & 0x80); ++i) {
|
||||||
lastbyte = read_byte();
|
lastbyte = read_byte();
|
||||||
|
//printf("lenbyte=%02x\n");
|
||||||
|
|
||||||
uint8_t mask = (i == 3) ? 0xff : 0x7f;
|
uint8_t mask = (i == 3) ? 0xff : 0x7f;
|
||||||
l |= (lastbyte & mask) << (i * 7);
|
l |= (lastbyte & mask) << (i * 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//printf("len=0x%x\n");
|
||||||
plpos = 0;
|
plpos = 0;
|
||||||
return (struct cmdlen){ .len = l, .cmd = cmd };
|
return (struct cmdlen){ .len = l, .cmd = cmd & 0x7f };
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint8_t read_pl(void) {
|
static inline uint8_t read_pl(void) {
|
||||||
|
@ -153,6 +157,7 @@ void mehfet_task(void) {
|
||||||
|
|
||||||
switch (cmdhdr.cmd) {
|
switch (cmdhdr.cmd) {
|
||||||
case mehfet_info:
|
case mehfet_info:
|
||||||
|
//printf("in info cmd\n");
|
||||||
if (cmdhdr.len != 0) write_resp_str(mehfet_badargs, "Info takes no parameters");
|
if (cmdhdr.len != 0) write_resp_str(mehfet_badargs, "Info takes no parameters");
|
||||||
else {
|
else {
|
||||||
// TODO: add flag once Loop has been implemented
|
// TODO: add flag once Loop has been implemented
|
||||||
|
@ -179,6 +184,7 @@ void mehfet_task(void) {
|
||||||
|
|
||||||
memcpy(&buf[8], name, bufsize - 8);
|
memcpy(&buf[8], name, bufsize - 8);
|
||||||
|
|
||||||
|
//printf("infocmd done\n");
|
||||||
write_resp(mehfet_ok, bufsize, buf);
|
write_resp(mehfet_ok, bufsize, buf);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -270,11 +276,11 @@ void mehfet_task(void) {
|
||||||
write_resp(mehfet_ok, 0, NULL);
|
write_resp(mehfet_ok, 0, NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case mehfet_reset_target:
|
case mehfet_set_clkspeed:
|
||||||
if (cmdhdr.len != 0) write_resp_str(mehfet_badargs, "ResetTarget takes no parameters");
|
if (cmdhdr.len != 1) write_resp_str(mehfet_badargs, "SetClkSpeed takes one parameter byte");
|
||||||
else if (connstat == mehfet_conn_none) write_resp(mehfet_badstate, 0, NULL);
|
else if (connstat == mehfet_conn_none) write_resp(mehfet_badstate, 0, NULL);
|
||||||
else {
|
else {
|
||||||
mehfet_hw_reset_target();
|
mehfet_hw_set_clkspeed(read_pl() != 0);
|
||||||
write_resp(mehfet_ok, 0, NULL);
|
write_resp(mehfet_ok, 0, NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -18,7 +18,7 @@ enum mehfet_cmd {
|
||||||
mehfet_connect = 0x03,
|
mehfet_connect = 0x03,
|
||||||
mehfet_disconnect = 0x04,
|
mehfet_disconnect = 0x04,
|
||||||
mehfet_delay = 0x05,
|
mehfet_delay = 0x05,
|
||||||
mehfet_reset_target = 0x06,
|
mehfet_set_clkspeed = 0x06,
|
||||||
mehfet_get_old_lines = 0x07,
|
mehfet_get_old_lines = 0x07,
|
||||||
mehfet_tdio_seq = 0x08,
|
mehfet_tdio_seq = 0x08,
|
||||||
mehfet_tms_seq = 0x09,
|
mehfet_tms_seq = 0x09,
|
||||||
|
@ -90,7 +90,7 @@ void mehfet_hw_delay_us(uint32_t t);
|
||||||
void mehfet_hw_timer_start(bool us, uint32_t to_reach);
|
void mehfet_hw_timer_start(bool us, uint32_t to_reach);
|
||||||
bool mehfet_hw_timer_reached(void);
|
bool mehfet_hw_timer_reached(void);
|
||||||
|
|
||||||
void mehfet_hw_reset_target(void);
|
void mehfet_hw_set_clkspeed(bool fast);
|
||||||
uint8_t mehfet_hw_get_old_lines(void);
|
uint8_t mehfet_hw_get_old_lines(void);
|
||||||
|
|
||||||
void mehfet_hw_tdio_seq(uint32_t ncyc, bool tmslvl, const uint8_t* tdi, uint8_t* tdo);
|
void mehfet_hw_tdio_seq(uint32_t ncyc, bool tmslvl, const uint8_t* tdi, uint8_t* tdo);
|
||||||
|
|
Loading…
Reference in New Issue