|
|
|
|
@ -255,7 +255,7 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
y = 485; |
|
|
|
|
CreateWindowExA(0, "BUTTON", "ETCP Metrics", |
|
|
|
|
WS_CHILD | WS_VISIBLE | BS_GROUPBOX, |
|
|
|
|
x, y, 430, 180, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
x, y, 430, 210, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
|
|
|
|
|
int mx = x + 10, my = y + 20; |
|
|
|
|
|
|
|
|
|
@ -328,7 +328,7 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
x = 460; y = 485; |
|
|
|
|
CreateWindowExA(0, "BUTTON", "TUN/Routing Metrics", |
|
|
|
|
WS_CHILD | WS_VISIBLE | BS_GROUPBOX, |
|
|
|
|
x, y, 430, 180, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
x, y, 430, 210, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
|
|
|
|
|
mx = x + 10; my = y + 20; |
|
|
|
|
|
|
|
|
|
@ -423,7 +423,7 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
mx + 260, my - 2, 50, 18, hWnd, (HMENU)IDC_EDIT_RT_LEARNED, hInst, NULL); |
|
|
|
|
|
|
|
|
|
/* Links list */ |
|
|
|
|
y = 715; |
|
|
|
|
y = 725; |
|
|
|
|
CreateWindowExA(0, "STATIC", "Links:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, |
|
|
|
|
10, y, 100, 20, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
@ -433,7 +433,7 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
10, y + 20, 880, 160, hWnd, (HMENU)IDC_LIST_LINKS, hInst, NULL); |
|
|
|
|
|
|
|
|
|
/* Queues & Errors group - below Links */ |
|
|
|
|
y = 905; |
|
|
|
|
y = 915; |
|
|
|
|
CreateWindowExA(0, "BUTTON", "Queues & Errors", |
|
|
|
|
WS_CHILD | WS_VISIBLE | BS_GROUPBOX, |
|
|
|
|
10, y, 880, 165, hWnd, (HMENU)IDC_STATIC_QUEUES, hInst, NULL); |
|
|
|
|
@ -524,22 +524,36 @@ static void CreateControls(struct etcpmon_app* app) {
|
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col2 + 110, qy - 2, 50, 18, hWnd, (HMENU)IDC_EDIT_TIMER_ACK_RESP, hInst, NULL); |
|
|
|
|
|
|
|
|
|
/* ID metrics - row 4 */ |
|
|
|
|
/* WaitAck queue state */ |
|
|
|
|
qy += 30; |
|
|
|
|
CreateWindowExA(0, "STATIC", "WaitAck:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col1, qy, 60, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
app->hEditWaitAckSuspend = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 65, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_WAITACK_SUSP, hInst, NULL); |
|
|
|
|
app->hEditWaitAckCb = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 130, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_WAITACK_CB, hInst, NULL); |
|
|
|
|
app->hEditWaitAckTimer = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 195, qy - 2, 60, 18, hWnd, (HMENU)IDC_EDIT_WAITACK_TIMER, hInst, NULL); |
|
|
|
|
|
|
|
|
|
/* ID metrics - row 4 */ |
|
|
|
|
// qy += 30;
|
|
|
|
|
CreateWindowExA(0, "STATIC", "IDs:", |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col1, qy, 30, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
WS_CHILD | WS_VISIBLE, q_col2, qy, 30, 16, hWnd, (HMENU)IDC_STATIC, hInst, NULL); |
|
|
|
|
app->hEditIdNextTx = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 35, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_NEXT_TX, hInst, NULL); |
|
|
|
|
q_col2 + 35, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_NEXT_TX, hInst, NULL); |
|
|
|
|
app->hEditIdLastRx = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 105, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_LAST_RX, hInst, NULL); |
|
|
|
|
q_col2 + 105, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_LAST_RX, hInst, NULL); |
|
|
|
|
app->hEditIdLastDel = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 175, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_LAST_DEL, hInst, NULL); |
|
|
|
|
q_col2 + 175, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_LAST_DEL, hInst, NULL); |
|
|
|
|
app->hEditIdRxAckTill = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", |
|
|
|
|
WS_CHILD | WS_VISIBLE | ES_READONLY | ES_CENTER, |
|
|
|
|
q_col1 + 245, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_RX_ACK_TILL, hInst, NULL); |
|
|
|
|
q_col2 + 245, qy - 2, 65, 18, hWnd, (HMENU)IDC_EDIT_ID_RX_ACK_TILL, hInst, NULL); |
|
|
|
|
} |
|
|
|
|
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { |
|
|
|
|
struct etcpmon_app* app = NULL; |
|
|
|
|
@ -851,6 +865,11 @@ void etcpmon_gui_update_metrics(struct etcpmon_app* app,
|
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_TIMER_RETRANS, "%s", metrics->etcp.retrans_timer_active ? "ON" : "OFF"); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_TIMER_ACK_RESP, "%s", metrics->etcp.ack_resp_timer_active ? "ON" : "OFF"); |
|
|
|
|
|
|
|
|
|
/* WaitAck queue state */ |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_SUSP, "%s", metrics->etcp.wait_ack_cb_suspended ? "ON" : "OFF"); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_CB, "%s", metrics->etcp.wait_ack_cb_set ? "ON" : "OFF"); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_WAITACK_TIMER, "%s", metrics->etcp.wait_ack_resume_timeout ? "ON" : "OFF"); |
|
|
|
|
|
|
|
|
|
/* ID Metrics */ |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_ID_NEXT_TX, "%u", metrics->etcp.next_tx_id); |
|
|
|
|
UpdateEditIfChanged(hMain, IDC_EDIT_ID_LAST_RX, "%u", metrics->etcp.last_rx_id); |
|
|
|
|
@ -950,6 +969,10 @@ void etcpmon_gui_clear_metrics(struct etcpmon_app* app) {
|
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_TIMER_RETRANS, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_TIMER_ACK_RESP, ""); |
|
|
|
|
|
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_WAITACK_SUSP, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_WAITACK_CB, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_WAITACK_TIMER, ""); |
|
|
|
|
|
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ID_NEXT_TX, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ID_LAST_RX, ""); |
|
|
|
|
SetDlgItemTextA(app->hWndMain, IDC_EDIT_ID_LAST_DEL, ""); |
|
|
|
|
|