Enlightenment CVS committal Author : handyande Project : e17 Module : apps/e_modules
Dir : e17/apps/e_modules/src/modules/monitor Modified Files: e_mod_main.c e_mod_main.h linux_2.6.c linux_2.6.h monitor.edc Added Files: wireless.png Log Message: Wireless patch from - heck sorry, I forget his nick - lestat I think... =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/e_mod_main.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_mod_main.c 31 Jul 2005 19:45:04 -0000 1.6 +++ e_mod_main.c 24 Aug 2005 22:17:16 -0000 1.7 @@ -58,6 +58,20 @@ static void _monitor_net_interface_cb(void *data, E_Menu *m, E_Menu_Item *mi); +static void _monitor_wlan_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_wlan_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_wlan_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_wlan_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_wlan_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_wlan_interface_cb(void *data, E_Menu *m, + E_Menu_Item *mi); + + static void _monitor_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -81,6 +95,7 @@ static void _monitor_mem_swap_text_update_callback(Flow_Chart *chart, void *data); static void _monitor_net_in_text_update_callcack(Flow_Chart *chart, void *data); static void _monitor_net_out_text_update_callcack(Flow_Chart *chart, void *data); +static void _monitor_wlan_link_text_update_callcack(Flow_Chart *chart, void *data); static int _monitor_count; @@ -92,6 +107,7 @@ static Flow_Chart *flow_chart_net_out; static Flow_Chart *flow_chart_mem_real; static Flow_Chart *flow_chart_mem_swap; +static Flow_Chart *flow_chart_wlan_link; /* public module routines. all modules must have these */ void * @@ -179,6 +195,8 @@ conf->mem_interval = 1.0; conf->net_interval = 1.0; conf->net_interface = strdup("eth0"); + conf->wlan_interval = 1.0; + conf->wlan_interface = strdup("wlan0"); conf->mem_real_ignore_cached = 0; conf->mem_real_ignore_buffers = 0; @@ -208,6 +226,8 @@ E_CONFIG_VAL(D, T, mem_interval, DOUBLE); E_CONFIG_VAL(D, T, net_interval, DOUBLE); E_CONFIG_VAL(D, T, net_interface, STR); + E_CONFIG_VAL(D, T, wlan_interval, DOUBLE); + E_CONFIG_VAL(D, T, wlan_interface, STR); E_CONFIG_VAL(D, T, mem_real_ignore_cached, INT); E_CONFIG_VAL(D, T, mem_real_ignore_buffers, INT); @@ -295,6 +315,9 @@ net_interface_set( face->conf->net_interface); + wlan_interface_set( + face->conf->wlan_interface); + flow_chart_update_rate_set(flow_chart_cpu, face->conf->cpu_interval); flow_chart_update_rate_set(flow_chart_mem_real, @@ -305,6 +328,8 @@ face->conf->net_interval); flow_chart_update_rate_set(flow_chart_net_out, face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_wlan_link, + face->conf->wlan_interval); } } @@ -351,6 +376,7 @@ double tmp_cpu_interval = 1.0; double tmp_mem_interval = 1.0; double tmp_net_interval = 1.0; + double tmp_wlan_interval = 1.0; Chart_Container *chart_con; @@ -480,6 +506,34 @@ _monitor_face_cb_mouse_down, face); evas_object_show(o); + /* setup wlan */ + o = edje_object_add(con->bg_evas); + face->wlan = o; + edje_object_file_set(o, PACKAGE_LIB_DIR + "/e_modules/monitor/monitor.edj", + "monitor/wlan"); + e_table_pack(face->table_object, o, 3, 0, 1, 1); + e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1); + evas_object_layer_set(o, evas_object_layer_get(face->monitor_object)+1); + evas_object_show(o); + /* add wlan charts */ + chart_con = chart_container_new(con->bg_evas,0,0,0,0); + flow_chart_wlan_link = flow_chart_new(); + flow_chart_color_set(flow_chart_wlan_link, 33, 100, 220, 255); + flow_chart_get_value_function_set(flow_chart_wlan_link, wlan_link_get); + flow_chart_update_rate_set(flow_chart_wlan_link, tmp_wlan_interval); + chart_container_chart_add(chart_con, flow_chart_wlan_link); + face->chart_wlan = chart_con; + flow_chart_callback_set(flow_chart_wlan_link, + _monitor_wlan_link_text_update_callcack, face); + + o = evas_object_rectangle_add(con->bg_evas); + face->wlan_ev_obj = o; + evas_object_color_set(o, 255,255,255,0); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, + _monitor_face_cb_mouse_down, face); + evas_object_show(o); + /* setup gadman */ face->gmc = e_gadman_client_new(con->gadman); e_gadman_client_domain_set(face->gmc, "module.monitor", _monitor_count++); @@ -593,6 +647,17 @@ edje_object_part_text_set(face->net, "net-out-text", buf); } +static void +_monitor_wlan_link_text_update_callcack(Flow_Chart *chart, void *data) +{ + Monitor_Face *face; + char buf[64]; + long link = wlan_link_get(); + face = data; + snprintf(buf, 64, "LNK: %ld", link); + edje_object_part_text_set(face->wlan, "wlan-link-text", buf); +} + static void _monitor_face_free(Monitor_Face *face) { @@ -605,14 +670,20 @@ evas_object_del(face->mem_ev_obj); evas_object_del(face->net); evas_object_del(face->net_ev_obj); + evas_object_del(face->wlan); + evas_object_del(face->wlan_ev_obj); chart_container_del(face->chart_cpu); chart_container_del(face->chart_mem); chart_container_del(face->chart_net); + chart_container_del(face->chart_wlan); if (face->monitor_object) evas_object_del(face->monitor_object); if (face->table_object) evas_object_del(face->table_object); + e_object_del(E_OBJECT(face->menu_wireless_interface)); + e_object_del(E_OBJECT(face->menu_wireless_interval)); + e_object_del(E_OBJECT(face->menu_wireless)); e_object_del(E_OBJECT(face->menu_network_interface)); e_object_del(E_OBJECT(face->menu_network_interval)); e_object_del(E_OBJECT(face->menu_network)); @@ -622,6 +693,7 @@ e_object_del(E_OBJECT(face->menu_cpu)); e_object_del(E_OBJECT(face->menu)); + free(face->conf->wlan_interface); free(face->conf->net_interface); free(face->conf); free(face); @@ -653,14 +725,17 @@ char* interface_name = NULL; /* Setup Menus */ - face->menu = e_menu_new(); - face->menu_cpu = e_menu_new(); - face->menu_cpu_interval = e_menu_new(); - face->menu_memory = e_menu_new(); - face->menu_memory_interval = e_menu_new(); - face->menu_network = e_menu_new(); - face->menu_network_interval = e_menu_new(); - face->menu_network_interface = e_menu_new(); + face->menu = e_menu_new(); + face->menu_cpu = e_menu_new(); + face->menu_cpu_interval = e_menu_new(); + face->menu_memory = e_menu_new(); + face->menu_memory_interval = e_menu_new(); + face->menu_network = e_menu_new(); + face->menu_network_interval = e_menu_new(); + face->menu_network_interface = e_menu_new(); + face->menu_wireless = e_menu_new(); + face->menu_wireless_interval = e_menu_new(); + face->menu_wireless_interface = e_menu_new(); /* Main Menu Items */ mi = e_menu_item_new(face->menu); @@ -776,6 +851,81 @@ if (face->conf->mem_real_ignore_buffers) e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, _monitor_mem_real_ignore_buffers_set_cb, face); + /* Wireless Menu */ + mi = e_menu_item_new(face->menu); + e_menu_item_label_set(mi, _("Wireless")); + e_menu_item_icon_edje_set(mi, PACKAGE_LIB_DIR + "/e_modules/monitor/monitor.edj", + "monitor/menu/wlan"); + e_menu_item_submenu_set(mi, face->menu_wireless); + + mi = e_menu_item_new(face->menu_wireless); + e_menu_item_label_set(mi, _("Set Interval")); + e_menu_item_submenu_set(mi, face->menu_wireless_interval); + + mi = e_menu_item_new(face->menu_wireless); + e_menu_item_label_set(mi, _("Select Interface")); + e_menu_item_submenu_set(mi, face->menu_wireless_interface); + + interfaces = ecore_list_new (); + interface_count = wlan_interfaces_get (interfaces); + + ecore_list_goto_first(interfaces); + + while ((interface_name = ecore_list_current(interfaces))) + { + + mi = e_menu_item_new(face->menu_wireless_interface); + e_menu_item_label_set(mi, _(interface_name)); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->wlan_interface) + if (!strcmp(face->conf->wlan_interface, interface_name)) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_wlan_interface_cb, face); + + free(interface_name); + ecore_list_remove(interfaces); + } + + ecore_list_destroy(interfaces); + + /* Wireless Menu Items */ + mi = e_menu_item_new(face->menu_wireless_interval); + e_menu_item_label_set(mi, _("Check Fast (1 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->wlan_interval == 1.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_wlan_interval_cb_fast, face); + + mi = e_menu_item_new(face->menu_wireless_interval); + e_menu_item_label_set(mi, _("Check Medium (5 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->wlan_interval == 5.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_wlan_interval_cb_medium, face); + + mi = e_menu_item_new(face->menu_wireless_interval); + e_menu_item_label_set(mi, _("Check Normal (10 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->wlan_interval == 10.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_wlan_interval_cb_normal, face); + + mi = e_menu_item_new(face->menu_wireless_interval); + e_menu_item_label_set(mi, _("Check Slow (30 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->wlan_interval == 30.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_wlan_interval_cb_slow, face); + + mi = e_menu_item_new(face->menu_wireless_interval); + e_menu_item_label_set(mi, _("Check Very Slow (60 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->wlan_interval == 60.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_wlan_interval_cb_very_slow, face); + /* Network Menu */ mi = e_menu_item_new(face->menu); e_menu_item_label_set(mi, _("Network")); @@ -889,6 +1039,12 @@ chart_container_move(face->chart_net, x+2,y+2); chart_container_resize(face->chart_net, w-4,h-4); + evas_object_geometry_get(face->wlan, &x, &y, &w, &h); + evas_object_move(face->wlan_ev_obj, x, y); + evas_object_resize(face->wlan_ev_obj, w, h); + chart_container_move(face->chart_wlan, x+2,y+2); + chart_container_resize(face->chart_wlan, w-4,h-4); + break; case E_GADMAN_CHANGE_RAISE: @@ -1226,3 +1382,76 @@ net_interface_set(face->conf->net_interface); e_config_save_queue(); } + +static void +_monitor_wlan_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->wlan_interval = 1.0; + flow_chart_update_rate_set(flow_chart_wlan_link, face->conf->wlan_interval); + e_config_save_queue(); +} + +static void +_monitor_wlan_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->wlan_interval = 5.0; + flow_chart_update_rate_set(flow_chart_wlan_link, face->conf->wlan_interval); + e_config_save_queue(); +} + +static void +_monitor_wlan_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->wlan_interval = 10.0; + flow_chart_update_rate_set(flow_chart_wlan_link, face->conf->wlan_interval); + e_config_save_queue(); +} + +static void +_monitor_wlan_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->wlan_interval = 30.0; + flow_chart_update_rate_set(flow_chart_wlan_link, face->conf->wlan_interval); + e_config_save_queue(); +} + +static void +_monitor_wlan_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->wlan_interval = 60.0; + flow_chart_update_rate_set(flow_chart_wlan_link, face->conf->wlan_interval); + e_config_save_queue(); +} + +static void +_monitor_wlan_interface_cb(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->wlan_interface = strdup(mi->label); + wlan_interface_set(face->conf->wlan_interface); + e_config_save_queue(); +} + =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/e_mod_main.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_mod_main.h 31 Jul 2005 19:45:04 -0000 1.3 +++ e_mod_main.h 24 Aug 2005 22:17:16 -0000 1.4 @@ -29,8 +29,10 @@ double cpu_interval; double mem_interval; double net_interval; + double wlan_interval; char *net_interface; + char *wlan_interface; int mem_real_ignore_cached; int mem_real_ignore_buffers; @@ -55,13 +57,16 @@ E_Menu *menu_network; E_Menu *menu_network_interval; E_Menu *menu_network_interface; - Config_Face *conf; + E_Menu *menu_wireless; + E_Menu *menu_wireless_interval; + E_Menu *menu_wireless_interface; + Config_Face *conf; - Evas_Object *cpu, *net, *mem; - Evas_Object *cpu_ev_obj, *net_ev_obj, *mem_ev_obj; + Evas_Object *cpu, *net, *mem, *wlan; + Evas_Object *cpu_ev_obj, *net_ev_obj, *mem_ev_obj, *wlan_ev_obj; Evas_Object *table_object, *monitor_object; - Chart_Container *chart_cpu, *chart_net, *chart_mem; + Chart_Container *chart_cpu, *chart_net, *chart_mem, *chart_wlan; E_Gadman_Client *gmc; }; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/linux_2.6.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- linux_2.6.c 31 Jul 2005 19:45:04 -0000 1.4 +++ linux_2.6.c 24 Aug 2005 22:17:16 -0000 1.5 @@ -275,6 +275,126 @@ } +/* Wireless code */ +char *wlan_dev = "wlan0"; +int wlan_status = 0; +int wlan_link = 0; +int wlan_level = 0; +int wlan_noise = 0; + +void +wlan_update(void) +{ + int new_status, new_link, new_level, new_noise; + unsigned int dummy; + char iface[64]; + char buf[256]; + FILE *stat; + int found_dev = 0; + + stat = fopen ("/proc/net/wireless", "r"); + if (!stat) return; + + while (fgets (buf, 256, stat)) { + int i = 0; + /* remove : */ + for(; buf[i] != 0; i++) + if(buf[i] == ':' || buf[i] == '.')buf[i] = ' '; + + if (sscanf (buf, "%s %u %u %u %u %u %u %u %u %u %u", + iface, &wlan_status, &wlan_link, &wlan_level, + &wlan_noise, &dummy, &dummy, &dummy, &dummy, + &dummy, &dummy) < 11) + continue; + + if (!strcmp(iface, wlan_dev)) + { + found_dev = 1; + break; + } + else + found_dev = 0; + } + fclose (stat); + + if (!found_dev) { + wlan_status = 0; + wlan_link = 0; + wlan_level = 0; + wlan_noise = 0; + return; + } + return; +} + +int wlan_status_get(void) +{ + return wlan_status; +} + +int wlan_link_get(void) +{ + wlan_update(); + return wlan_link; +} + +int wlan_level_get(void) +{ + return wlan_level; +} + +int wlan_noise_get(void) +{ + return wlan_noise; +} + +void wlan_interface_set(char* interface_name) +{ + /* Change Network Interface */ + wlan_dev = interface_name; +} + +int +wlan_interfaces_get(Ecore_List * ifaces) +{ + unsigned long int dummy; + + char *iface; + char buf[256]; + FILE *stat; + int iface_count = 0; + int x = 0; + + stat = fopen ("/proc/net/wireless", "r"); + if (!stat) { + fprintf(stderr,"Error: can't open /proc/net/wireless\n"); + return -1; + } + + while (fgets (buf, 256, stat)) + { + int i = 0; + + /* remove : and . */ + for(; buf[i] != 0; i++) + if(buf[i] == ':' || buf[i] == '.')buf[i] = ' '; + + iface = (char *)malloc(sizeof(char) * 64); + x = sscanf (buf, + "%s %*u %lu %lu %lu %lu %lu %lu %lu %lu %lu\n", + iface, &dummy, &dummy, &dummy, &dummy, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy); + if (x >= 10) + { + ecore_list_append(ifaces, iface); + iface_count++; + } + } + fclose (stat); + + return iface_count; +} + long mem_real = 0; long mem_swap = 0; int mem_real_usage = 0; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/linux_2.6.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- linux_2.6.h 31 Jul 2005 19:45:04 -0000 1.3 +++ linux_2.6.h 24 Aug 2005 22:17:16 -0000 1.4 @@ -25,4 +25,12 @@ int net_interfaces_get(Ecore_List * ifaces); void net_interface_set(char* interface_name); +void wlan_update(void); +int wlan_status_get(void); +int wlan_link_get(void); +int wlan_level_get(void); +int wlan_noise_get(void); +int wlan_interfaces_get(Ecore_List * ifaces); +void wlan_interface_set(char* interface_name); + #endif /* LINUX_2_6 */ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/monitor.edc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- monitor.edc 31 Jul 2005 19:45:04 -0000 1.3 +++ monitor.edc 24 Aug 2005 22:17:16 -0000 1.4 @@ -7,6 +7,7 @@ image, "cpu.png" COMP; image, "eth_dev.png" COMP; image, "memory.png" COMP; + image, "wireless.png" COMP; } fonts @@ -59,7 +60,22 @@ } } }//close group net - + + group { + name, "monitor/menu/wlan"; + parts { + part { + name, "background"; + mouse_events, 0; + description { + state, "default" 0.0; + image { normal, "wireless.png"; border, 0 0 0 0; } + fill { smooth, 0; } + } + } + } + }//close group wlan + group { name, "monitor/main"; parts { @@ -356,5 +372,65 @@ }//close group net +group { + name, "monitor/wlan"; + parts { + part { + name, "overlay"; + mouse_events, 0; + description { + state, "default" 0.0; + rel1 { offset, 1 1; } + rel2 { offset, -2 -2; } + image { + normal, "over_res.png"; + border, 2 2 2 2; + middle, 0; + } + fill { smooth, 0; } + color, 255 255 255 64; + } + description { + state, "active" 0.0; + inherit, "default" 0.0; + color, 255 255 255 255; + } + } + part { + name, "wlan"; + mouse_events, 0; + description { + state, "default" 0.0; + color, 255 255 255 128; + aspect: 1.0 1.0; + rel1 { offset, 4 4; } + rel2 { offset, -5 -5; } + image { normal, "wireless.png"; } + fill { smooth, 0; } + } + } + part { + name, "wlan-link-text"; + type, TEXT; + effect, SOFT_SHADOW; + mouse_events, 0; + description { + state, "default" 0.0; + align, 1.0 0.0; + rel1 { relative, 1.0 0.0; to_x, "overlay"; offset, -2 1; } + rel2 { relative, 1.0 0.0; } + color, 255 255 255 255; + color3, 0 0 0 100; + text { + text, "test"; font, "VeraMono"; + size, 8; + min, 1 1; + align, 1.0 0.0; + } + } + } + } +}//close group wlan + } ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs