5 A Linux/Unix GUI for Nokia mobile phones.
6 Copyright (C) 1999 Pavel Janík ml., Hugh Blemings
7 & Ján Derfiòák <ja@mail.upjs.sk>.
9 Released under the terms of the GNU GPL, see file COPYING for more details.
11 Last modification: Sun Apr 30 2000
12 Modified by Jan Derfinak
20 #include <stdlib.h> /* for atoi */
24 #include "xgnokii_common.h"
26 #include "xgnokii_lowlevel.h"
27 #include "xgnokii_netmon.h"
28 #include "xpm/Display.xpm"
30 static GtkWidget *GUI_NetmonWindow;
31 static DisplayData displayData = {NULL, 0};
32 static GtkWidget *tableLabels[4][7];
33 static GtkWidget *tableProgress[7];
36 static inline void Help1 (GtkWidget *w, gpointer data)
38 gchar *indx = g_strdup_printf ("/help/%s/windows/netmon/index.html", xgnokiiConfig.locale);
44 static inline void CloseNetmon (GtkWidget *w, gpointer data)
48 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
49 e->event = Event_NetMonitor;
50 e->data = (gpointer) 0;
52 gtk_widget_hide (GUI_NetmonWindow);
56 static inline void NetmonOnOff (GtkWidget *w, gpointer data)
60 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
61 e->event = Event_NetMonitorOnOff;
67 static inline void RefreshDisplay ()
69 static gchar number[3];
71 if (!GTK_WIDGET_VISIBLE(GUI_NetmonWindow))
74 g_snprintf (number, 3, "%.2d", displayData.curDisp);
75 if (displayData.number)
76 gtk_label_set_text (GTK_LABEL (displayData.number), number);
78 pthread_mutex_lock (&netMonMutex);
79 if (phoneMonitor.netmonitor.screen && displayData.label)
80 gtk_label_set_text (GTK_LABEL (displayData.label),
81 g_strchomp (phoneMonitor.netmonitor.screen));
82 pthread_mutex_unlock (&netMonMutex);
86 static void SetDisplay (GtkWidget *widget, gpointer data)
90 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
91 e->event = Event_NetMonitor;
94 displayData.curDisp = GPOINTER_TO_INT (data);
99 static void ChangedSpinner (GtkWidget *widget, GtkSpinButton *spin)
103 displayData.curDisp = gtk_spin_button_get_value_as_int (spin);
104 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
105 e->event = Event_NetMonitor;
106 e->data = (gpointer) displayData.curDisp;
113 static void ParseScreen (gchar *screen, gint i)
118 if (ptr == NULL || *ptr == '\0')
121 strncpy (buf, ptr, 3);
123 gtk_label_set_text (GTK_LABEL (tableLabels[0][i]), buf);
125 strncpy (buf, ptr, 3);
127 gtk_label_set_text (GTK_LABEL (tableLabels[2][i]), buf);
132 strncpy (buf + 1, ptr, 3);
137 strncpy (buf, ptr, 3);
140 gtk_label_set_text (GTK_LABEL (tableLabels[1][i]), buf);
142 gtk_progress_set_value (GTK_PROGRESS (tableProgress[i]), atoi (buf));
143 strncpy (buf, ptr, 3);
145 gtk_label_set_text (GTK_LABEL (tableLabels[3][i]), buf);
152 strncpy (buf, ptr, 3);
154 gtk_label_set_text (GTK_LABEL (tableLabels[0][i]), buf);
156 strncpy (buf, ptr, 3);
158 gtk_label_set_text (GTK_LABEL (tableLabels[2][i]), buf);
163 strncpy (buf + 1, ptr, 3);
168 strncpy (buf, ptr, 3);
171 gtk_label_set_text (GTK_LABEL (tableLabels[1][i]), buf);
173 gtk_progress_set_value (GTK_PROGRESS (tableProgress[i]), atoi (buf));
174 strncpy (buf, ptr, 3);
176 gtk_label_set_text (GTK_LABEL (tableLabels[3][i]), buf);
180 strncpy (buf, ptr, 3);
182 gtk_label_set_text (GTK_LABEL (tableLabels[0][i]), buf);
184 strncpy (buf, ptr, 3);
186 gtk_label_set_text (GTK_LABEL (tableLabels[2][i]), buf);
191 strncpy (buf + 1, ptr, 3);
196 strncpy (buf, ptr, 3);
199 gtk_label_set_text (GTK_LABEL (tableLabels[1][i]), buf);
201 gtk_progress_set_value (GTK_PROGRESS (tableProgress[i]), atoi (buf));
202 strncpy (buf, ptr, 3);
204 gtk_label_set_text (GTK_LABEL (tableLabels[3][i]), buf);
208 void GUI_RefreshNetmon ()
210 if (!GTK_WIDGET_VISIBLE (GUI_NetmonWindow))
213 pthread_mutex_lock (&netMonMutex);
214 ParseScreen (phoneMonitor.netmonitor.screen3, 0);
215 ParseScreen (phoneMonitor.netmonitor.screen4, 3);
216 ParseScreen (phoneMonitor.netmonitor.screen5, 6);
217 pthread_mutex_unlock (&netMonMutex);
223 void AddToBorder (GtkWidget* table, gchar *text, gint i, gint j, gint k, gint l)
225 GtkWidget *label = gtk_label_new (text);
226 GtkWidget *frame = gtk_frame_new (NULL);
228 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
229 gtk_container_add (GTK_CONTAINER (frame), label);
230 gtk_table_attach_defaults (GTK_TABLE (table), frame, i, j, k, l);
234 inline void GUI_ShowNetmon ()
238 e = (PhoneEvent *) g_malloc (sizeof (PhoneEvent));
239 e->event = Event_NetMonitor;
240 e->data = (gpointer) displayData.curDisp;;
242 gtk_widget_show (GUI_NetmonWindow);
245 static GtkItemFactoryEntry menu_items[] = {
246 { NULL, NULL, NULL, 0, "<Branch>"},
247 { NULL, "<control>W", CloseNetmon, 0, NULL},
248 { NULL, NULL, NULL, 0, "<Branch>"},
249 { NULL, NULL, NetmonOnOff, 1, NULL},
250 { NULL, NULL, NetmonOnOff, 0, NULL},
251 { NULL, NULL, NULL, 0, "<LastBranch>"},
252 { NULL, NULL, Help1, 0, NULL},
253 { NULL, NULL, GUI_ShowAbout, 0, NULL},
257 static void InitMainMenu (void)
259 menu_items[0].path = g_strdup (_("/_File"));
260 menu_items[1].path = g_strdup (_("/File/_Close"));
261 menu_items[2].path = g_strdup (_("/_Tools"));
262 menu_items[3].path = g_strdup (_("/Tools/Net monitor o_n"));
263 menu_items[4].path = g_strdup (_("/Tools/Net monitor o_ff"));
264 menu_items[5].path = g_strdup (_("/_Help"));
265 menu_items[6].path = g_strdup (_("/Help/_Help"));
266 menu_items[7].path = g_strdup (_("/Help/_About"));
273 static inline gint ExposeDisplay (GtkWidget *widget, GdkEventExpose *event)
278 gtk_widget_size_request (displayData.number, &r);
282 rec.height = r.height;
283 gtk_widget_draw (displayData.number, &rec);
285 gtk_widget_size_request (displayData.label, &r);
289 rec.height = r.height;
290 gtk_widget_draw (displayData.label, &rec);
296 void GUI_CreateNetmonWindow ()
298 int nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]);
299 GtkItemFactory *item_factory;
300 GtkAccelGroup *accel_group;
302 GtkWidget *main_vbox;
303 GtkWidget *hbox, *vbox;
316 GUI_NetmonWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
317 gtk_window_set_wmclass (GTK_WINDOW (GUI_NetmonWindow), "NetmonWindow", "Xgnokii");
318 gtk_window_set_title (GTK_WINDOW (GUI_NetmonWindow), _("Net Monitor"));
319 //gtk_widget_set_usize (GTK_WIDGET (GUI_NetmonWindow), 436, 220);
320 gtk_signal_connect (GTK_OBJECT (GUI_NetmonWindow), "delete_event",
321 GTK_SIGNAL_FUNC (DeleteEvent), NULL);
322 gtk_widget_realize (GUI_NetmonWindow);
324 accel_group = gtk_accel_group_new ();
325 item_factory = gtk_item_factory_new (GTK_TYPE_MENU_BAR, "<main>",
328 gtk_item_factory_create_items (item_factory, nmenu_items, menu_items, NULL);
330 gtk_accel_group_attach (accel_group, GTK_OBJECT (GUI_NetmonWindow));
332 /* Finally, return the actual menu bar created by the item factory. */
333 menubar = gtk_item_factory_get_widget (item_factory, "<main>");
335 main_vbox = gtk_vbox_new (FALSE, 1);
336 gtk_container_border_width (GTK_CONTAINER (main_vbox), 1);
337 gtk_container_add (GTK_CONTAINER (GUI_NetmonWindow), main_vbox);
338 gtk_widget_show (main_vbox);
340 gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, FALSE, 0);
341 gtk_widget_show (menubar);
343 frame = gtk_frame_new (NULL);
344 gtk_container_border_width (GTK_CONTAINER (frame), 10);
345 gtk_widget_show (frame);
347 hbox = gtk_hbox_new (FALSE, 0);
348 gtk_container_border_width (GTK_CONTAINER (hbox), 3);
349 gtk_container_add (GTK_CONTAINER (frame), hbox);
351 gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
352 gtk_widget_show (hbox);
354 display = gtk_fixed_new ();
355 gtk_box_pack_start (GTK_BOX (hbox), display, FALSE, FALSE, 10);
356 gtk_widget_show (display);
358 pixmap = NewPixmap (Display_xpm, GUI_NetmonWindow->window,
359 &GUI_NetmonWindow->style->bg[GTK_STATE_NORMAL]);
361 gtk_signal_connect_after (GTK_OBJECT (pixmap), "expose_event",
362 (GtkSignalFunc) ExposeDisplay, NULL);
364 gtk_fixed_put (GTK_FIXED (display), pixmap, 0 , 0);
365 gtk_widget_show (pixmap);
367 displayData.number = gtk_label_new ("");
368 gtk_fixed_put (GTK_FIXED (display), displayData.number, DISPLAY_X, DISPLAY_Y);
369 gtk_widget_show (displayData.number);
370 displayData.label = gtk_label_new ("");
371 gtk_fixed_put (GTK_FIXED (display), displayData.label, DISPLAY_X + 3, DISPLAY_Y + 12);
372 gtk_widget_show (displayData.label);
373 displayData.curDisp = 0x01;
375 vbox = gtk_vbox_new (TRUE, 0);
378 toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_TEXT);
379 gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NORMAL);
381 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "1", _("Active cell"),
382 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 1);
384 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "2", _("Active cell"),
385 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 2);
387 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "3", _("NCELL list I"),
388 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 3);
390 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "4", _("NCELL list II"),
391 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 4);
393 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "5", _("NCELL list III"),
394 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 5);
396 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "6", _("Prefered/Denied networks"),
397 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 6);
399 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "7", _("System information bits"),
400 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 7);
402 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "10", _("TMSI, Paging, PLU"),
403 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 10);
405 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "11", _("Cells info"),
406 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 11);
408 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "12", _("DTX, Cipher, Hopping"),
409 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 12);
411 gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
412 gtk_widget_show (toolbar);
415 toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_TEXT);
416 gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NORMAL);
418 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "13", _("Uplink DTX"),
419 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 13);
421 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "17", _("BTS TEST"),
422 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 17);
424 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "19", _("CELL BARR-Flag"),
425 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 19);
427 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "20", _("Accumulator, Charge status"),
428 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 20);
430 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "21", _("?Constant voltage charging display"),
431 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 21);
433 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "22", _("?Battery full detection"),
434 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 22);
436 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "23", _("Accumulator"),
437 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 23);
439 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "35", _("SW-Resets"),
440 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 35);
442 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "36", _("Reset-Counter"),
443 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 36);
445 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "39", _("Cause codes for last connection abortion"),
446 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 39);
448 gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
449 gtk_widget_show (toolbar);
452 toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_TEXT);
453 gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NORMAL);
455 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "40", _("Reset handover counters"),
456 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 40);
458 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "41", _("Handover Counter"),
459 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 41);
461 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "42", _("Handover Counter (Dual)"),
462 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 42);
464 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "43", _("L2-Timeouts"),
465 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 43);
467 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "51", _("SIM"),
468 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 51);
470 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "54", _("?Block display 1"),
471 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 54);
473 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "56", NULL,
474 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 56);
476 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "57", _("Memory status before reset"),
477 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 57);
479 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "60", _("Reset Counters"),
480 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 60);
482 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "61", _("Counter for PLMN Search and Cell reselection (Singleband)"),
483 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 61);
485 gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
486 gtk_widget_show (toolbar);
489 toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_TEXT);
490 gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NORMAL);
492 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "62", _("Neighbourhood measurement"),
493 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 62);
495 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "63", _("Calls"),
496 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 63);
498 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "70", _("Temporary counters of DSP"),
499 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 70);
501 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "83", _("Control of task information displays"),
502 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 83);
504 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "84", _("Information about task numbers 0-7"),
505 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 84);
507 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "85", _("Information about task numbers 8-15"),
508 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 85);
510 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "86", _("Information about task numbers 16-23"),
511 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 86);
513 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "87", _("Information about OS_SYSTEM_STACK"),
514 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 87);
516 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "88", _("Information about current MCU and DSP software versions"),
517 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 88);
519 gtk_toolbar_append_item (GTK_TOOLBAR (toolbar), "89", _("Hardware version"),
520 NULL, NULL, (GtkSignalFunc) SetDisplay, (gpointer) 89);
522 gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
523 gtk_widget_show (toolbar);
525 gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 10);
526 gtk_widget_show (vbox);
528 table = gtk_table_new (6, 8, FALSE);
530 frame = gtk_frame_new (NULL);
531 gtk_container_add (GTK_CONTAINER (frame), table);
532 gtk_container_border_width (GTK_CONTAINER (frame), 10);
533 gtk_container_border_width (GTK_CONTAINER (table), 3);
534 gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
535 gtk_widget_show (frame);
537 AddToBorder (table, "", 0, 1, 0, 1);
538 AddToBorder (table, _("Chan"), 1, 2, 0, 1);
539 AddToBorder (table, _("RxLv"), 2, 3, 0, 1);
540 AddToBorder (table, _("C1"), 3, 4, 0, 1);
541 AddToBorder (table, _("C2"), 4, 5, 0, 1);
542 AddToBorder (table, _("ACT"), 0, 1, 1, 2);
543 AddToBorder (table, _("NC2"), 0, 1, 2, 3);
544 AddToBorder (table, _("NC3"), 0, 1, 3, 4);
545 AddToBorder (table, _("NC4"), 0, 1, 4, 5);
546 AddToBorder (table, _("NC5"), 0, 1, 5, 6);
547 AddToBorder (table, _("NC6"), 0, 1, 6, 7);
548 AddToBorder (table, _("NC7"), 0, 1, 7, 8);
550 for (i = 0; i < 4; i++)
551 for (j = 0; j < 7; j++)
553 tableLabels[i][j] = gtk_label_new ("");
554 frame = gtk_frame_new (NULL);
555 gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
556 gtk_container_add (GTK_CONTAINER (frame), tableLabels[i][j]);
557 gtk_table_attach_defaults (GTK_TABLE (table), frame, i + 1, i + 2, j + 1, j + 2);
560 for (i = 0; i < 7; i++)
562 adj = (GtkAdjustment *) gtk_adjustment_new (-114, -114, -40, 0, 0, 0);
563 tableProgress[i] = gtk_progress_bar_new_with_adjustment (adj);
564 gtk_table_attach_defaults (GTK_TABLE (table), tableProgress[i], 5, 6, i + 1, i + 2);
567 hbox = gtk_hbox_new (FALSE, 0);
568 gtk_table_attach_defaults (GTK_TABLE (table), hbox, 5, 6, 0, 1);
570 adj = (GtkAdjustment *) gtk_adjustment_new (1, 1, 89, 1, 10, 0);
571 button = gtk_spin_button_new (adj, 0, 0);
572 gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (button), TRUE);
573 gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (button), TRUE);
574 gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (button), GTK_SHADOW_OUT);
575 gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
576 GTK_SIGNAL_FUNC (ChangedSpinner), (gpointer) button);
577 gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0);
579 label = gtk_label_new (_("Page:"));
580 gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 5);
582 gtk_table_set_col_spacing (GTK_TABLE (table), 4, 10);
583 gtk_widget_show_all (table);
584 GUIEventAdd (GUI_EVENT_NETMON_CHANGED, GUI_RefreshNetmon);