mirror of https://github.com/ArduPilot/ardupilot
AP_Networking: add debug code for PPP
This commit is contained in:
parent
993d694fbb
commit
4909ad4e4f
|
@ -25,6 +25,9 @@ extern const AP_HAL::HAL& hal;
|
||||||
#define LWIP_TCPIP_UNLOCK()
|
#define LWIP_TCPIP_UNLOCK()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define PPP_DEBUG_TX 0
|
||||||
|
#define PPP_DEBUG_RX 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
output some data to the uart
|
output some data to the uart
|
||||||
*/
|
*/
|
||||||
|
@ -34,6 +37,27 @@ uint32_t AP_Networking_PPP::ppp_output_cb(ppp_pcb *pcb, const void *data, uint32
|
||||||
LWIP_UNUSED_ARG(pcb);
|
LWIP_UNUSED_ARG(pcb);
|
||||||
uint32_t remaining = len;
|
uint32_t remaining = len;
|
||||||
const uint8_t *ptr = (const uint8_t *)data;
|
const uint8_t *ptr = (const uint8_t *)data;
|
||||||
|
#if PPP_DEBUG_TX
|
||||||
|
bool flag_end = false;
|
||||||
|
if (ptr[len-1] == 0x7E) {
|
||||||
|
flag_end = true;
|
||||||
|
remaining--;
|
||||||
|
}
|
||||||
|
if (ptr[0] == 0x7E) {
|
||||||
|
// send byte size
|
||||||
|
if (pkt_size > 0) {
|
||||||
|
printf("PPP: tx[%lu] %u\n", tx_index++, pkt_size);
|
||||||
|
}
|
||||||
|
// dump the packet
|
||||||
|
if (!(tx_index % 10)) {
|
||||||
|
for (uint32_t i = 0; i < pkt_size; i++) {
|
||||||
|
printf(" %02X", tx_bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
pkt_size = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
while (remaining > 0) {
|
while (remaining > 0) {
|
||||||
const auto n = driver.uart->write(ptr, remaining);
|
const auto n = driver.uart->write(ptr, remaining);
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
|
@ -43,6 +67,22 @@ uint32_t AP_Networking_PPP::ppp_output_cb(ppp_pcb *pcb, const void *data, uint32
|
||||||
hal.scheduler->delay_microseconds(100);
|
hal.scheduler->delay_microseconds(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if PPP_DEBUG_TX
|
||||||
|
memcpy(&tx_bytes[pkt_size], data, len);
|
||||||
|
pkt_size += len;
|
||||||
|
if (flag_end) {
|
||||||
|
driver.uart->write(0x7E);
|
||||||
|
printf("PPP: tx[%lu] %u\n", tx_index++, pkt_size);
|
||||||
|
// dump the packet
|
||||||
|
if (!(tx_index % 10)) {
|
||||||
|
for (uint32_t i = 0; i < pkt_size; i++) {
|
||||||
|
printf(" %02X", tx_bytes[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
pkt_size = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,6 +264,25 @@ void AP_Networking_PPP::ppp_loop(void)
|
||||||
} else {
|
} else {
|
||||||
hal.scheduler->delay_microseconds(200);
|
hal.scheduler->delay_microseconds(200);
|
||||||
}
|
}
|
||||||
|
#if PPP_DEBUG_RX
|
||||||
|
auto pppos = (pppos_pcb *)ppp->link_ctx_cb;
|
||||||
|
for (uint32_t i = 0; i < n; i++) {
|
||||||
|
if (buf[i] == 0x7E && last_ppp_frame_size != 1) {
|
||||||
|
// dump the packet
|
||||||
|
if (pppos->bad_pkt) {
|
||||||
|
printf("PPP: rx[%lu] %u\n", rx_index, last_ppp_frame_size);
|
||||||
|
for (uint32_t j = 0; j < last_ppp_frame_size; j++) {
|
||||||
|
printf("0x%02X,", rx_bytes[j]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
hal.scheduler->delay(1);
|
||||||
|
}
|
||||||
|
rx_index++;
|
||||||
|
last_ppp_frame_size = 0;
|
||||||
|
}
|
||||||
|
rx_bytes[last_ppp_frame_size++] = buf[i];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue