fix silly bugs

This commit is contained in:
Triss 2021-10-05 23:23:37 +02:00
parent 8eb1995361
commit 2e85d85de3
3 changed files with 23 additions and 19 deletions

View File

@ -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;
} }

View File

@ -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;

View File

@ -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);