Add commands to access PHY registers

This commit is contained in:
Jan Hoffmann
2026-04-06 18:25:40 +02:00
parent e210f31f0e
commit f6a5163f33
+107
View File
@@ -803,6 +803,109 @@ err:
} }
void parse_phyget(void)
{
__xdata uint8_t phy_id, dev_id, hex_size;
__xdata uint16_t reg;
if (cmd_words_b[1] < 0 || cmd_words_b[2] < 0 || cmd_words_b[3] < 0) {
goto err;
}
if (atoi_byte(&phy_id, cmd_words_b[1])) {
goto err;
}
if (atoi_byte(&dev_id, cmd_words_b[2])) {
goto err;
}
hex_size = atoi_hex(cmd_words_b[3]);
if (hex_size == 0 || hex_size > 2) {
goto err;
}
reg = hexvalue[0];
if (hex_size == 2) {
reg <<= 8;
reg |= hexvalue[1];
}
print_string("PHYGET: ");
itoa(phy_id);
print_string(":");
itoa(dev_id);
print_string(".");
print_short(reg);
print_string(": VAL: ");
phy_read(phy_id, dev_id, reg);
print_phy_data();
write_char('\n');
return;
err:
print_string("usage: phyget <phy-id> <dev-id> <hex:reg>\n");
return;
}
void parse_physet(void)
{
__xdata uint8_t phy_id, dev_id, hex_size;
__xdata uint16_t reg, val;
if (cmd_words_b[1] < 0 || cmd_words_b[2] < 0 || cmd_words_b[3] < 0 || cmd_words_b[4] < 0) {
goto err;
}
if (atoi_byte(&phy_id, cmd_words_b[1])) {
goto err;
}
if (atoi_byte(&dev_id, cmd_words_b[2])) {
goto err;
}
hex_size = atoi_hex(cmd_words_b[3]);
if (hex_size == 0 || hex_size > 2) {
goto err;
}
reg = hexvalue[0];
if (hex_size == 2) {
reg <<= 8;
reg |= hexvalue[1];
}
hex_size = atoi_hex(cmd_words_b[4]);
if (hex_size == 0 || hex_size > 2) {
goto err;
}
val = hexvalue[0];
if (hex_size == 2) {
val <<= 8;
val |= hexvalue[1];
}
print_string("PHYSET: ");
itoa(phy_id);
print_string(":");
itoa(dev_id);
print_string(".");
print_short(reg);
print_string(": VAL: ");
phy_write(phy_id, dev_id, reg, val);
print_short(val);
write_char('\n');
return;
err:
print_string("usage: physet <phy-id> <dev-id> <hex:reg> <hex:val>\n");
return;
}
void parse_rnd(void) void parse_rnd(void)
{ {
// In order to get a new random numner, this bit has to be set each time! // In order to get a new random numner, this bit has to be set each time!
@@ -1205,6 +1308,10 @@ void cmd_parser(void) __banked
parse_sdsget(); parse_sdsget();
} else if (cmd_compare(0, "sdsset")) { } else if (cmd_compare(0, "sdsset")) {
parse_sdsset(); parse_sdsset();
} else if (cmd_compare(0, "phyget")) {
parse_phyget();
} else if (cmd_compare(0, "physet")) {
parse_physet();
} else if (cmd_compare(0, "rnd")) { } else if (cmd_compare(0, "rnd")) {
parse_rnd(); parse_rnd();
} else if (cmd_compare(0, "passwd")) { } else if (cmd_compare(0, "passwd")) {