mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Merge pull request #326 from vDorst/SRAM-cmd-parse-port-helper
Add/refactor helpers to parse IP, numbers and port arguments
This commit is contained in:
+1
-1
@@ -193,7 +193,7 @@ void cmd_edit(void) __banked
|
|||||||
// Check whether return was pressed:
|
// Check whether return was pressed:
|
||||||
if (sbuf[l] == '\n' || sbuf[l] == '\r') {
|
if (sbuf[l] == '\n' || sbuf[l] == '\r') {
|
||||||
write_char('\n');
|
write_char('\n');
|
||||||
cmd_buffer[cmd_line_len] = '\0';
|
cmd_buffer[cmd_line_len] = NUL;
|
||||||
// write_char('>'); print_string_x(cmd_buffer); write_char('<');
|
// write_char('>'); print_string_x(cmd_buffer); write_char('<');
|
||||||
// If there is a command we print the prompt after execution
|
// If there is a command we print the prompt after execution
|
||||||
// otherwise immediately because there is nothing to execute
|
// otherwise immediately because there is nothing to execute
|
||||||
|
|||||||
+383
-284
File diff suppressed because it is too large
Load Diff
+21
-21
@@ -109,7 +109,7 @@ const mib_counters = [
|
|||||||
function getCounters(port) {
|
function getCounters(port) {
|
||||||
var xhttp = new XMLHttpRequest();
|
var xhttp = new XMLHttpRequest();
|
||||||
const popup = document.getElementById('popup');
|
const popup = document.getElementById('popup');
|
||||||
xhttp.onreadystatechange = function() {
|
xhttp.onreadystatechange = function () {
|
||||||
if (this.readyState == 4 && this.status == 200) {
|
if (this.readyState == 4 && this.status == 200) {
|
||||||
const s = JSON.parse(xhttp.responseText);
|
const s = JSON.parse(xhttp.responseText);
|
||||||
console.log("Counters: ", JSON.stringify(s));
|
console.log("Counters: ", JSON.stringify(s));
|
||||||
@@ -118,16 +118,16 @@ function getCounters(port) {
|
|||||||
console.log("Counter 0: ", BigInt(s[0]).toString(), " length: ", s.length);
|
console.log("Counter 0: ", BigInt(s[0]).toString(), " length: ", s.length);
|
||||||
var c = 0;
|
var c = 0;
|
||||||
for (i = 0; i < mib_counters.length; i += 4) {
|
for (i = 0; i < mib_counters.length; i += 4) {
|
||||||
console.log(i, " ", mib_counters[i], ": ", mib_counters[i+1]);
|
console.log(i, " ", mib_counters[i], ": ", mib_counters[i + 1]);
|
||||||
if (mib_counters[i] == "" && mib_counters[i + 1] == 8) {
|
if (mib_counters[i] == "" && mib_counters[i + 1] == 8) {
|
||||||
console.log("c " + i + ": continue");
|
console.log("c " + i + ": continue");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var count = BigInt(s[i/4]);
|
var count = BigInt(s[i / 4]);
|
||||||
if (mib_counters[i+1] == 8) {
|
if (mib_counters[i + 1] == 8) {
|
||||||
tableHtml += "<td>" + mib_counters[i] + "</td><td>" + count.toString() + "</td>";
|
tableHtml += "<td>" + mib_counters[i] + "</td><td>" + count.toString() + "</td>";
|
||||||
c += 1;
|
c += 1;
|
||||||
} else if (mib_counters[i+1] == 4) {
|
} else if (mib_counters[i + 1] == 4) {
|
||||||
if (mib_counters[i] != "") {
|
if (mib_counters[i] != "") {
|
||||||
tableHtml += "<td>" + mib_counters[i] + "</td><td>" + (count >> 32n).toString() + "</td>";
|
tableHtml += "<td>" + mib_counters[i] + "</td><td>" + (count >> 32n).toString() + "</td>";
|
||||||
c += 1;
|
c += 1;
|
||||||
@@ -136,8 +136,8 @@ function getCounters(port) {
|
|||||||
tableHtml += "</tr> <tr>";
|
tableHtml += "</tr> <tr>";
|
||||||
c = 0;
|
c = 0;
|
||||||
}
|
}
|
||||||
if (mib_counters[i+2] != "") {
|
if (mib_counters[i + 2] != "") {
|
||||||
tableHtml += "<td>" + mib_counters[i+2] + "</td><td>" + (count & 4294967295n).toString() + "</td>";
|
tableHtml += "<td>" + mib_counters[i + 2] + "</td><td>" + (count & 4294967295n).toString() + "</td>";
|
||||||
c += 1;
|
c += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,26 +161,26 @@ function fillStats() {
|
|||||||
return;
|
return;
|
||||||
if (tbl.rows.length > 1) {
|
if (tbl.rows.length > 1) {
|
||||||
for (let i = 0; i < numPorts; i++) {
|
for (let i = 0; i < numPorts; i++) {
|
||||||
console.log("Table Update row: " + i + " state " + pState[i] + " is " + linkS[pState[i] +1]);
|
console.log("Table Update row: " + i + " state " + pState[i] + " is " + linkS[pState[i] + 1]);
|
||||||
tbl.rows[i+1].cells[2].innerHTML = linkText(pState[i]+1);
|
tbl.rows[i + 1].cells[2].innerHTML = linkText(pState[i] + 1);
|
||||||
tbl.rows[i+1].cells[3].innerHTML = `${txG[i]}` + t('common_pkts');
|
tbl.rows[i + 1].cells[3].innerHTML = `${txG[i]}` + t('common_pkts');
|
||||||
tbl.rows[i+1].cells[4].innerHTML = `${txB[i]}` + t('common_pkts');
|
tbl.rows[i + 1].cells[4].innerHTML = `${txB[i]}` + t('common_pkts');
|
||||||
tbl.rows[i+1].cells[5].innerHTML = `${rxG[i]}` + t('common_pkts');
|
tbl.rows[i + 1].cells[5].innerHTML = `${rxG[i]}` + t('common_pkts');
|
||||||
tbl.rows[i+1].cells[6].innerHTML = `${rxB[i]}` + t('common_pkts');
|
tbl.rows[i + 1].cells[6].innerHTML = `${rxB[i]}` + t('common_pkts');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (let i = 0; i < numPorts; i++) {
|
for (let i = 0; i < numPorts; i++) {
|
||||||
console.log("Table row: " + i);
|
console.log("Table row: " + i);
|
||||||
const tr = tbl.insertRow();
|
const tr = tbl.insertRow();
|
||||||
let td = tr.insertCell(); td.appendChild(document.createTextNode(t('common_port') + (i+1)));
|
let td = tr.insertCell(); td.appendChild(document.createTextNode(t('common_port') + (i + 1)));
|
||||||
let portName = portNames[physToLogPort[i]] || '';
|
let portName = portNames[physToLogPort[i]] || '';
|
||||||
td = tr.insertCell(); td.appendChild(document.createTextNode(portName));
|
td = tr.insertCell(); td.appendChild(document.createTextNode(portName));
|
||||||
td = tr.insertCell(); td.appendChild(document.createTextNode(linkText(pState[i]+1)));
|
td = tr.insertCell(); td.appendChild(document.createTextNode(linkText(pState[i] + 1)));
|
||||||
td = tr.insertCell(); td.appendChild(document.createTextNode(`${txG[i]}` + t('common_pkts')));
|
td = tr.insertCell(); td.appendChild(document.createTextNode(`${txG[i]}` + t('common_pkts')));
|
||||||
td = tr.insertCell();td.appendChild(document.createTextNode(`${txB[i]}` + t('common_pkts')));
|
td = tr.insertCell(); td.appendChild(document.createTextNode(`${txB[i]}` + t('common_pkts')));
|
||||||
td = tr.insertCell();td.appendChild(document.createTextNode(`${rxG[i]}` + t('common_pkts')));
|
td = tr.insertCell(); td.appendChild(document.createTextNode(`${rxG[i]}` + t('common_pkts')));
|
||||||
td = tr.insertCell();td.appendChild(document.createTextNode(`${rxB[i]}` + t('common_pkts')));
|
td = tr.insertCell(); td.appendChild(document.createTextNode(`${rxB[i]}` + t('common_pkts')));
|
||||||
var button = '<button type="button" style="margin: 0 0 0 24px" onclick="getCounters(' + i + ');">' + t('stat_show') + '</button>';
|
var button = '<button type="button" style="margin: 0 0 0 24px" onclick="getCounters(' + (i + 1) + ');">' + t('stat_show') + '</button>';
|
||||||
td = tr.insertCell(); td.innerHTML = button;
|
td = tr.insertCell(); td.innerHTML = button;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,8 +197,8 @@ window.addEventListener('click', (event) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener("load", function() {
|
window.addEventListener("load", function () {
|
||||||
update( () => {
|
update(() => {
|
||||||
update();
|
update();
|
||||||
fillStats();
|
fillStats();
|
||||||
const stat = setInterval(fillStats, 1000);
|
const stat = setInterval(fillStats, 1000);
|
||||||
|
|||||||
+11
-18
@@ -119,8 +119,8 @@ bool is_word(__xdata uint8_t *xdata_str_p, __code uint8_t * __xdata code_str_p)
|
|||||||
u = *xdata_str_p++;
|
u = *xdata_str_p++;
|
||||||
c = *code_str_p++;
|
c = *code_str_p++;
|
||||||
|
|
||||||
if (c == '\0') {
|
if (c == NUL) {
|
||||||
if (u != '\0' && u != ' ' && u != '\t' && u != ':' && u != '?' && u != '=' && u != '\n' && u != '\r')
|
if (u != NUL && u != ' ' && u != '\t' && u != ':' && u != '?' && u != '=' && u != '\n' && u != '\r')
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -140,8 +140,8 @@ bool is_url_word_x(__xdata uint8_t *uri_str_p, __xdata uint8_t *src_str_p)
|
|||||||
u = *uri_str_p++;
|
u = *uri_str_p++;
|
||||||
s = *src_str_p++;
|
s = *src_str_p++;
|
||||||
|
|
||||||
if (s == '\0') {
|
if (s == NUL) {
|
||||||
if (u != '\0' && u != ' ' && u != '\t' && u != ':' && u != '?' && u != '=' && u != '\n' && u != '\r')
|
if (u != NUL && u != ' ' && u != '\t' && u != ':' && u != '?' && u != '=' && u != '\n' && u != '\r')
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -183,9 +183,9 @@ bool is_word_x(__xdata uint8_t *lhs_str_p, __xdata uint8_t *rhs_str_p)
|
|||||||
u = *lhs_str_p++;
|
u = *lhs_str_p++;
|
||||||
c = *rhs_str_p++;
|
c = *rhs_str_p++;
|
||||||
|
|
||||||
if (c == '\0') {
|
if (c == NUL) {
|
||||||
/* ';' separates cookies in a Cookie header, so it ends a value too. */
|
/* ';' separates cookies in a Cookie header, so it ends a value too. */
|
||||||
if (u != '\0' && u != ' ' && u != '\t' && u != ':' && u != '?' && u != '=' && u != '\n' && u != '\r' && u != ';')
|
if (u != NUL && u != ' ' && u != '\t' && u != ':' && u != '?' && u != '=' && u != '\n' && u != '\r' && u != ';')
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -487,10 +487,10 @@ void handle_post(void)
|
|||||||
// Find end of request path
|
// Find end of request path
|
||||||
while (*p && !is_separator(*p))
|
while (*p && !is_separator(*p))
|
||||||
p++;
|
p++;
|
||||||
*p++ = '\0';
|
*p++ = NUL;
|
||||||
|
|
||||||
// Find end of request header
|
// Find end of request header
|
||||||
boundary[0] ='\0';
|
boundary[0] =NUL;
|
||||||
p = scan_header(p);
|
p = scan_header(p);
|
||||||
dbg_string("Boundary: >"); dbg_string_x(boundary); dbg_string("<\n");
|
dbg_string("Boundary: >"); dbg_string_x(boundary); dbg_string("<\n");
|
||||||
if (!*p || !content_type) {
|
if (!*p || !content_type) {
|
||||||
@@ -550,7 +550,7 @@ void handle_post(void)
|
|||||||
dbg_string("Password accepted!\n");
|
dbg_string("Password accepted!\n");
|
||||||
read_reg_timer(&last_session_use);
|
read_reg_timer(&last_session_use);
|
||||||
gen_random_bytes(session_id, SESSION_ID_LENGTH);
|
gen_random_bytes(session_id, SESSION_ID_LENGTH);
|
||||||
session_id[SESSION_ID_LENGTH] = '\0';
|
session_id[SESSION_ID_LENGTH] = NUL;
|
||||||
slen = strtox(outbuf, "HTTP/1.1 302 Found\r\nConnection: close\r\nLocation: index.html\r\n" \
|
slen = strtox(outbuf, "HTTP/1.1 302 Found\r\nConnection: close\r\nLocation: index.html\r\n" \
|
||||||
"Set-Cookie: session=");
|
"Set-Cookie: session=");
|
||||||
for (register uint8_t i = 0; i < SESSION_ID_LENGTH; i++)
|
for (register uint8_t i = 0; i < SESSION_ID_LENGTH; i++)
|
||||||
@@ -736,7 +736,7 @@ void httpd_appcall(void)
|
|||||||
__xdata uint8_t *q = p;
|
__xdata uint8_t *q = p;
|
||||||
while (*p && !is_separator(*p))
|
while (*p && !is_separator(*p))
|
||||||
p++;
|
p++;
|
||||||
*p = '\0';
|
*p = NUL;
|
||||||
dbg_string_x(q);
|
dbg_string_x(q);
|
||||||
dbg_char('\n');
|
dbg_char('\n');
|
||||||
|
|
||||||
@@ -758,16 +758,9 @@ void httpd_appcall(void)
|
|||||||
parse_short(q + 15);
|
parse_short(q + 15);
|
||||||
send_vlan(short_parsed);
|
send_vlan(short_parsed);
|
||||||
} else if (is_word(q, "/counters.json")) {
|
} else if (is_word(q, "/counters.json")) {
|
||||||
/* The port is one raw character of the request line and
|
|
||||||
* indexes a nine entry table, so bound it here instead
|
|
||||||
* of trusting the client to have sent a digit. Anything
|
|
||||||
* below '0' wraps well past eight, so the one test
|
|
||||||
* covers both ends. */
|
|
||||||
uint8_t cport = q[20] - '0';
|
uint8_t cport = q[20] - '0';
|
||||||
if (cport > 8)
|
if (send_counters(cport))
|
||||||
send_bad_request();
|
send_bad_request();
|
||||||
else
|
|
||||||
send_counters(cport);
|
|
||||||
} else if (is_word(q, "/eee.json")) {
|
} else if (is_word(q, "/eee.json")) {
|
||||||
send_eee();
|
send_eee();
|
||||||
} else if (is_word(q, "/bandwidth.json")) {
|
} else if (is_word(q, "/bandwidth.json")) {
|
||||||
|
|||||||
+23
-8
@@ -289,17 +289,26 @@ void send_vlan(uint16_t vlan)
|
|||||||
slen += strtox(outbuf + slen, "\"}");
|
slen += strtox(outbuf + slen, "\"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Send counters
|
||||||
void send_counters(char port)
|
* Only accepts physical port 1..9.
|
||||||
|
* Returns an error if the port physical don't exists.
|
||||||
|
*/
|
||||||
|
bool send_counters(uint8_t phys_port)
|
||||||
{
|
{
|
||||||
dbg_string("send_counters called: "); dbg_byte(port); dbg_char('\n');
|
uint8_t phys_port_idx = phys_port - 1;
|
||||||
|
if (phys_port_idx > 8)
|
||||||
|
goto err;
|
||||||
|
uint8_t log_port = machine.phys_to_log_port[phys_port_idx];
|
||||||
|
if (log_port == 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
dbg_string("send_counters called: "); dbg_byte(phys_port_idx); dbg_char('\n');
|
||||||
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
slen = strtox(outbuf, HTTP_RESPONCE_JSON);
|
||||||
dbg_string("sending counters\n");
|
dbg_string("sending counters\n"); dbg_byte(phys_port_idx);
|
||||||
dbg_byte(port);
|
|
||||||
uint8_t i = machine.phys_to_log_port[port];
|
char_to_html('[');
|
||||||
slen += strtox(outbuf + slen, "[");
|
|
||||||
for (uint8_t counter = 0; counter < 0x37; counter++) {
|
for (uint8_t counter = 0; counter < 0x37; counter++) {
|
||||||
STAT_GET(counter, i);
|
STAT_GET(counter, log_port);
|
||||||
slen += strtox(outbuf + slen, "\"0x");
|
slen += strtox(outbuf + slen, "\"0x");
|
||||||
reg_to_html(RTL837X_STAT_V_HIGH);
|
reg_to_html(RTL837X_STAT_V_HIGH);
|
||||||
reg_to_html_long(RTL837X_STAT_V_LOW);
|
reg_to_html_long(RTL837X_STAT_V_LOW);
|
||||||
@@ -308,6 +317,12 @@ void send_counters(char port)
|
|||||||
char_to_html(',');
|
char_to_html(',');
|
||||||
}
|
}
|
||||||
char_to_html(']');
|
char_to_html(']');
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
err:
|
||||||
|
dbg_string("Error: counters: phy_port_idx don't exists\n");
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -1,7 +1,9 @@
|
|||||||
#ifndef __PAGE_IMPL_H__
|
#ifndef __PAGE_IMPL_H__
|
||||||
#define __PAGE_IMPL_H__
|
#define __PAGE_IMPL_H__
|
||||||
|
|
||||||
void send_counters(char port);
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
bool send_counters(uint8_t phys_port);
|
||||||
void send_status(void);
|
void send_status(void);
|
||||||
void send_vlan(uint16_t vlan);
|
void send_vlan(uint16_t vlan);
|
||||||
void send_basic_info(void);
|
void send_basic_info(void);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#define SYS_TICK_HZ 200
|
#define SYS_TICK_HZ 200
|
||||||
|
|
||||||
#define CPU_PORT 9
|
#define CPU_PORT 9
|
||||||
|
#define NUL '\0'
|
||||||
|
|
||||||
// Define Port-masks for 9-port devices and 6-port devices
|
// Define Port-masks for 9-port devices and 6-port devices
|
||||||
#define PMASK_9 0x1ff
|
#define PMASK_9 0x1ff
|
||||||
@@ -135,6 +136,7 @@ void itoa(uint8_t v);
|
|||||||
void print_sfr_data(void);
|
void print_sfr_data(void);
|
||||||
void print_phy_data(void);
|
void print_phy_data(void);
|
||||||
void print_cmd_prompt(void);
|
void print_cmd_prompt(void);
|
||||||
|
void print_phys_port(uint8_t port);
|
||||||
void phy_write_mask(uint16_t phy_mask, uint8_t dev_id, uint16_t reg, uint16_t v);
|
void phy_write_mask(uint16_t phy_mask, uint8_t dev_id, uint16_t reg, uint16_t v);
|
||||||
void phy_write(uint8_t phy_id, uint8_t dev_id, uint16_t reg, uint16_t v);
|
void phy_write(uint8_t phy_id, uint8_t dev_id, uint16_t reg, uint16_t v);
|
||||||
void phy_read(uint8_t phy_id, uint8_t dev_id, uint16_t reg);
|
void phy_read(uint8_t phy_id, uint8_t dev_id, uint16_t reg);
|
||||||
|
|||||||
+2
-2
@@ -262,7 +262,7 @@ void phy_set_speed(void) __banked
|
|||||||
{
|
{
|
||||||
uint16_t v;
|
uint16_t v;
|
||||||
|
|
||||||
print_string("Setting port "); write_char(machine.log_to_phys_port[phy_settings.port] + '0');
|
print_string("Setting port "); print_phys_port(phy_settings.port);
|
||||||
if (machine.n_10g && phy_settings.port == 3)
|
if (machine.n_10g && phy_settings.port == 3)
|
||||||
phy_settings.is10g_port = 1;
|
phy_settings.is10g_port = 1;
|
||||||
if (machine.n_10g == 2 && phy_settings.port == 8)
|
if (machine.n_10g == 2 && phy_settings.port == 8)
|
||||||
@@ -381,7 +381,7 @@ void phy_set_duplex(void) __banked
|
|||||||
{
|
{
|
||||||
uint16_t v;
|
uint16_t v;
|
||||||
|
|
||||||
print_string("Setting port "); write_char(machine.log_to_phys_port[phy_settings.port] + '0');
|
print_string("Setting port "); print_phys_port(phy_settings.port);
|
||||||
if (phy_settings.duplex)
|
if (phy_settings.duplex)
|
||||||
print_string(" to full duplex");
|
print_string(" to full duplex");
|
||||||
else
|
else
|
||||||
|
|||||||
+3
-16
@@ -390,10 +390,7 @@ void port_l2_learned(void) __banked
|
|||||||
print_string("\tlearned\t");
|
print_string("\tlearned\t");
|
||||||
|
|
||||||
port |= (sfr_data[3] & 0x3) << 2;
|
port |= (sfr_data[3] & 0x3) << 2;
|
||||||
if (port < 9)
|
print_phys_port(port);
|
||||||
write_char(machine.log_to_phys_port[port] + '0');
|
|
||||||
else
|
|
||||||
print_string("CPU");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
entry++;
|
entry++;
|
||||||
@@ -431,7 +428,7 @@ void port_stats_print(void) __banked
|
|||||||
{
|
{
|
||||||
print_string("\nPort\tState\tLink\tTxGood\t\tTxBad\t\tRxGood\t\tRxBad\n");
|
print_string("\nPort\tState\tLink\tTxGood\t\tTxBad\t\tRxGood\t\tRxBad\n");
|
||||||
for (uint8_t i = machine.min_port; i <= machine.max_port; i++) {
|
for (uint8_t i = machine.min_port; i <= machine.max_port; i++) {
|
||||||
write_char('0' + machine.log_to_phys_port[i]); write_char('\t');
|
print_phys_port(i); write_char('\t');
|
||||||
|
|
||||||
if (!machine.is_sfp[i]) {
|
if (!machine.is_sfp[i]) {
|
||||||
phy_read(i, PHY_MMD31, 0xa610);
|
phy_read(i, PHY_MMD31, 0xa610);
|
||||||
@@ -606,7 +603,7 @@ void port_eee_disable(uint8_t port) __banked
|
|||||||
|
|
||||||
void port_eee_status(uint8_t port) __banked
|
void port_eee_status(uint8_t port) __banked
|
||||||
{
|
{
|
||||||
print_string("Port: "); write_char('0' + machine.log_to_phys_port[port]);
|
print_string("Port: "); print_phys_port(port);
|
||||||
print_string(": ");
|
print_string(": ");
|
||||||
if (machine.is_sfp[port]) {
|
if (machine.is_sfp[port]) {
|
||||||
print_string("SFP\n");
|
print_string("SFP\n");
|
||||||
@@ -801,16 +798,6 @@ void print_port_ingress_filter_mode(vlan_ingress_mode_t mode) __banked
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_phys_port(uint8_t port) __banked
|
|
||||||
{
|
|
||||||
if (port >= machine.min_port && port <= machine.max_port)
|
|
||||||
write_char(machine.log_to_phys_port[port] + '0');
|
|
||||||
else if (port == 9)
|
|
||||||
write_char('9');
|
|
||||||
else
|
|
||||||
write_char('?');
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_vlan_ingress_port(uint8_t log_port) __banked
|
void print_vlan_ingress_port(uint8_t log_port) __banked
|
||||||
{
|
{
|
||||||
print_phys_port(log_port);write_char('\t');
|
print_phys_port(log_port);write_char('\t');
|
||||||
|
|||||||
+17
-4
@@ -813,6 +813,19 @@ void print_reg(uint16_t reg)
|
|||||||
print_sfr_data();
|
print_sfr_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Print the physical port of a logical port number.
|
||||||
|
void print_phys_port(uint8_t port)
|
||||||
|
{
|
||||||
|
if (port < CPU_PORT)
|
||||||
|
write_char(machine.log_to_phys_port[port] + '0');
|
||||||
|
else if (port == CPU_PORT)
|
||||||
|
print_string("CPU");
|
||||||
|
else {
|
||||||
|
print_string("UNKNOWN ");
|
||||||
|
write_char(port + '0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// TODO: This uses 2 DSEG bytes and is not used!
|
// TODO: This uses 2 DSEG bytes and is not used!
|
||||||
@@ -1244,11 +1257,11 @@ bool sfp_read_field(__xdata char *dst, uint8_t sfp, uint8_t start, uint8_t lengt
|
|||||||
if (!sfp_read_block(sfp, start, length))
|
if (!sfp_read_block(sfp, start, length))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
dst[length] = '\0';
|
dst[length] = NUL;
|
||||||
memcpy(dst, sfp_buf, length);
|
memcpy(dst, sfp_buf, length);
|
||||||
|
|
||||||
while (length > 0 && dst[--length] == ' ')
|
while (length > 0 && dst[--length] == ' ')
|
||||||
dst[length] = '\0';
|
dst[length] = NUL;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2056,7 +2069,7 @@ void check_and_flash_update_image(void)
|
|||||||
* because itohex() is inline and brings its own frame. */
|
* because itohex() is inline and brings its own frame. */
|
||||||
void set_hostname_default(void)
|
void set_hostname_default(void)
|
||||||
{
|
{
|
||||||
if (hostname[0] != '\0')
|
if (hostname[0] != NUL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
strcpy((__xdata uint8_t *)hostname, "RTLPlayground-");
|
strcpy((__xdata uint8_t *)hostname, "RTLPlayground-");
|
||||||
@@ -2066,7 +2079,7 @@ void set_hostname_default(void)
|
|||||||
hostname[17] = hex[uip_ethaddr.addr[4] & 0xf];
|
hostname[17] = hex[uip_ethaddr.addr[4] & 0xf];
|
||||||
hostname[18] = hex[uip_ethaddr.addr[5] >> 4];
|
hostname[18] = hex[uip_ethaddr.addr[5] >> 4];
|
||||||
hostname[19] = hex[uip_ethaddr.addr[5] & 0xf];
|
hostname[19] = hex[uip_ethaddr.addr[5] & 0xf];
|
||||||
hostname[20] = '\0';
|
hostname[20] = NUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user