#include <stdio.h>
#include <unistd.h>
#include <wait.h>
#include <sys/socket.h>
#include <sys/errno.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <ctype.h>
#include <glib/gutils.h>
#include <gtk/gtk.h>
#include <libergtk/ergtk.h>
#include <liberipc/eripcconnect.h>
#include <liberipc/eripctoolbar.h>
#include <liberregxml/erregapi.h>
#include "connectionMgrLog.h"
#include "displayStatus.h"
#include <liberdm/connectionMgrConstants.h>
#include "erbusy.h"
#include "pagebar.h"
#include "toolbar.h"
#include "connectScreenData.h"
#include "connectionMgr.h"
#include "connectScreen.h"
#include "connectScreenOptions.h"
#include "editScreen.h"
#include "background.h"
#include "modemUtils.h"
Go to the source code of this file.
Defines | |
#define | SERVER_BUFFER_SIZE 1024 |
Functions | |
static void | on_toolbar_synchronised (void) |
static void | on_goto_page (gint new_page) |
static gboolean | hook_screen_refresh_typing (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer user_data) |
static gboolean | on_idle_show_keyboard (gpointer data) |
static gboolean | on_idle_hide_keyboard (gpointer data) |
static void | connectMessageReceived (gpointer data, gint source_fd, GdkInputCondition condition) |
GtkWidget * | cmgr_screens_create (void) |
void | cmgr_set_screen_mode (cmgrScreen_t mode) |
cmgrScreen_t | cmgr_get_screen_mode (void) |
void | cmgr_set_toolbar (void) |
void | cmgr_set_pagebar (void) |
guint | on_cmgr_keypress (GtkWidget *widget, GdkEventKey *event, gpointer data) |
static void | on_cmgr_icon_clicked (int iconID, int iconState) |
static void | on_cmgr_toolbar_synchronised (void) |
void | cmgr_add_on_toolbar_sync_action (on_tbsync_action_t action) |
static void | keyboard_remove_idle_handler_ids (void) |
static gboolean | keyboard_is_running (void) |
static void | do_show_keyboard () |
static void | do_hide_keyboard (int iconState) |
void | show_keyboard (gboolean show) |
gboolean | cmgrInstallIpcServer () |
gboolean | connectStartIpcClientSetup () |
void | cmgr_scan_ctxt_init (void) |
void | cmgr_scan_ctxt_destory (void) |
scanContext_t * | cmgr_get_scan_ctxt (void) |
void | cmgr_ping_ctxt_init (void) |
void | cmgr_ping_ctxt_destory (void) |
pingContext_t * | cmgr_get_ping_ctxt (void) |
void | connect_disable_network () |
void | connect_enable_network_abort () |
static gboolean | is_hex_key (const char *key) |
static void | add_key_prefix (const char *pkey, char **ppkey) |
ecd_err_t | connect_enable_network (const regNetworkProfile_t *regNetworkProfile) |
static void | cmgr_get_up_page (const screenPage_t *curPage, screenPage_t *upPage) |
void | cmgr_get_back_page (const screenPage_t *curPage, screenPage_t *backPage) |
static void | cmgr_get_cur_screen_page (screenPage_t *page) |
static void | cmgr_goto_screen_page (const screenPage_t *page) |
void | cmgr_up_page (void) |
static gboolean | on_delayed_cmgr_back_page (gpointer data) |
void | cmgr_back_page (void) |
Variables | |
static GtkWidget * | g_connectScreens = NULL |
static GtkWidget * | g_editScreens = NULL |
static cmgrScreen_t | g_screen_mode = cmgrScreenUndef_e |
static scanContext_t * | g_scan_ctxt = NULL |
static pingContext_t * | g_ping_ctxt = NULL |
static volatile int | enable_pid = 0 |
static on_tbsync_action_t | on_toolbar_sync_actions [] = { NULL, NULL } |
static guint | g_show_idle_handler_id = 0 |
static guint | g_hide_idle_handler_id = 0 |
static erServerChannel_t | theServerChannel |
static erClientChannel_t | g_ipc_channel_setup |
connectionMgr - Main routines to create an environment for the Network-connection application and to handle key strokes
Copyright (C) 2007 iRex Technologies BV.
Definition in file connectionMgr.c.
#define SERVER_BUFFER_SIZE 1024 |
Definition at line 89 of file connectionMgr.c.
static void add_key_prefix | ( | const char * | pkey, | |
char ** | ppkey | |||
) | [static] |
Definition at line 719 of file connectionMgr.c.
00720 { 00721 if (is_hex_key(pkey)) 00722 { 00723 *ppkey = g_strdup(pkey); 00724 } 00725 else 00726 { 00727 *ppkey = g_strdup_printf("s:%s", pkey); 00728 } 00729 00730 CN_LOGPRINTF("output[%s]", *ppkey); 00731 }
void cmgr_add_on_toolbar_sync_action | ( | on_tbsync_action_t | action | ) |
Definition at line 295 of file connectionMgr.c.
00296 { 00297 int elementSize, arraySize; 00298 int i, sz; 00299 00300 CN_LOGPRINTF("entry"); 00301 00302 g_assert(action != NULL); 00303 00304 elementSize = sizeof(on_toolbar_sync_actions[0]); 00305 arraySize = sizeof(on_toolbar_sync_actions); 00306 sz = arraySize / elementSize; 00307 00308 for (i = 0; i < sz; i++) 00309 { 00310 if (on_toolbar_sync_actions[i] == NULL) 00311 { 00312 on_toolbar_sync_actions[i] = action; 00313 return; 00314 } 00315 } 00316 00317 g_assert_not_reached(); 00318 }
void cmgr_back_page | ( | void | ) |
Definition at line 1257 of file connectionMgr.c.
01258 { 01259 // wait for a while to show back icon active state 01260 g_timeout_add(500, on_delayed_cmgr_back_page, NULL); 01261 }
void cmgr_get_back_page | ( | const screenPage_t * | curPage, | |
screenPage_t * | backPage | |||
) |
Definition at line 1030 of file connectionMgr.c.
01032 { 01033 CN_LOGPRINTF("entry [%p][%p]", curPage, backPage); 01034 01035 g_return_if_fail(curPage != NULL); 01036 g_return_if_fail(backPage != NULL); 01037 01038 if ((curPage->screen == cmgrScreenConnect_e) 01039 && (curPage->page == connectScreenOptions_e)) 01040 { 01041 backPage->screen = cmgrScreenUndef_e; 01042 backPage->page = -1; 01043 } 01044 else if ((curPage->screen == cmgrScreenConnect_e) 01045 && (curPage->page == connectScreenProfiles_e)) 01046 { 01047 backPage->screen = cmgrScreenConnect_e; 01048 backPage->page = connectScreenOptions_e; 01049 } 01050 else if ((curPage->screen == cmgrScreenEdit_e) 01051 && (curPage->page == editScreenProfiles_e)) 01052 { 01053 backPage->screen = cmgrScreenUndef_e; 01054 backPage->page = -1; 01055 } 01056 else if ((curPage->screen == cmgrScreenEdit_e) 01057 && (curPage->page == editScreenSearch_e)) 01058 { 01059 backPage->screen = cmgrScreenUndef_e; 01060 backPage->page = -1; 01061 } 01062 else if ((curPage->screen == cmgrScreenEdit_e) 01063 && (curPage->page == editScreenWireless_e)) 01064 { 01065 if (edit_get_back_overview()) 01066 { 01067 backPage->screen = cmgrScreenEdit_e; 01068 backPage->page = editScreenOverview_e; 01069 } 01070 else 01071 { 01072 if (edit_get_wizard_mode()) 01073 { 01074 backPage->screen = cmgrScreenEdit_e; 01075 backPage->page = editScreenSearch_e; 01076 } 01077 else 01078 { 01079 backPage->screen = cmgrScreenUndef_e; 01080 backPage->page = -1; 01081 } 01082 } 01083 } 01084 else if ((curPage->screen == cmgrScreenEdit_e) 01085 && (curPage->page == editScreenOverview_e)) 01086 { 01087 backPage->screen = cmgrScreenUndef_e; 01088 backPage->page = -1; 01089 } 01090 else if ((curPage->screen == cmgrScreenEdit_e) 01091 && (curPage->page == editScreenDialup_e)) 01092 { 01093 if (edit_get_back_overview()) 01094 { 01095 backPage->screen = cmgrScreenEdit_e; 01096 backPage->page = editScreenOverview_e; 01097 } 01098 else 01099 { 01100 backPage->screen = cmgrScreenUndef_e; 01101 backPage->page = -1; 01102 } 01103 } 01104 else if ((curPage->screen == cmgrScreenEdit_e) 01105 && (curPage->page == editScreenProxy_e)) 01106 { 01107 backPage->screen = cmgrScreenEdit_e; 01108 backPage->page = editScreenOverview_e; 01109 } 01110 else if ((curPage->screen == cmgrScreenEdit_e) 01111 && (curPage->page == editScreenStatic_e)) 01112 { 01113 backPage->screen = cmgrScreenEdit_e; 01114 backPage->page = editScreenOverview_e; 01115 } 01116 else if ((curPage->screen == cmgrScreenEdit_e) 01117 && (curPage->page == editScreenWirelessExt_e)) 01118 { 01119 if (edit_get_back_overview()) 01120 { 01121 backPage->screen = cmgrScreenEdit_e; 01122 backPage->page = editScreenOverview_e; 01123 } 01124 else 01125 { 01126 backPage->screen = cmgrScreenUndef_e; 01127 backPage->page = -1; 01128 } 01129 } 01130 else 01131 { 01132 backPage->screen = cmgrScreenUndef_e; 01133 backPage->page = -1; 01134 } 01135 CN_LOGPRINTF("backPage[%d,%d]", backPage->screen, backPage->page); 01136 }
static void cmgr_get_cur_screen_page | ( | screenPage_t * | page | ) | [static] |
Definition at line 1139 of file connectionMgr.c.
01140 { 01141 g_return_if_fail(page != NULL); 01142 01143 page->screen = cmgr_get_screen_mode(); 01144 switch (page->screen) 01145 { 01146 case cmgrScreenConnect_e: 01147 page->page = connect_get_current_page(NULL); 01148 break; 01149 case cmgrScreenEdit_e: 01150 page->page = edit_get_current_page(NULL); 01151 break; 01152 default: 01153 page->page = -1; 01154 break; 01155 } 01156 }
pingContext_t* cmgr_get_ping_ctxt | ( | void | ) |
Definition at line 673 of file connectionMgr.c.
00674 { 00675 CN_LOGPRINTF("return %p", g_ping_ctxt); 00676 return g_ping_ctxt; 00677 }
scanContext_t* cmgr_get_scan_ctxt | ( | void | ) |
Definition at line 651 of file connectionMgr.c.
00652 { 00653 CN_LOGPRINTF("return %p", g_scan_ctxt); 00654 return g_scan_ctxt; 00655 }
cmgrScreen_t cmgr_get_screen_mode | ( | void | ) |
Definition at line 197 of file connectionMgr.c.
00198 { 00199 CN_LOGPRINTF("entry: g_screen_mode [%d]", g_screen_mode); 00200 return g_screen_mode; 00201 }
static void cmgr_get_up_page | ( | const screenPage_t * | curPage, | |
screenPage_t * | upPage | |||
) | [static] |
Definition at line 944 of file connectionMgr.c.
00946 { 00947 CN_LOGPRINTF("entry [%p][%p]", curPage, upPage); 00948 00949 g_return_if_fail(curPage != NULL); 00950 g_return_if_fail(upPage != NULL); 00951 00952 if ((curPage->screen == cmgrScreenConnect_e) 00953 && (curPage->page == connectScreenOptions_e)) 00954 { 00955 upPage->screen = cmgrScreenUndef_e; 00956 upPage->page = -1; 00957 } 00958 else if ((curPage->screen == cmgrScreenConnect_e) 00959 && (curPage->page == connectScreenProfiles_e)) 00960 { 00961 upPage->screen = cmgrScreenUndef_e; 00962 upPage->page = -1; 00963 } 00964 else if ((curPage->screen == cmgrScreenEdit_e) 00965 && (curPage->page == editScreenProfiles_e)) 00966 { 00967 if (main_get_edit_only()) 00968 { 00969 upPage->screen = cmgrScreenUndef_e; 00970 upPage->page = -1; 00971 } 00972 else 00973 { 00974 upPage->screen = cmgrScreenConnect_e; 00975 upPage->page = connectScreenOptions_e; 00976 } 00977 } 00978 else if ((curPage->screen == cmgrScreenEdit_e) 00979 && (curPage->screen == editScreenSearch_e)) 00980 { 00981 upPage->screen = cmgrScreenEdit_e; 00982 upPage->page = editScreenProfiles_e; 00983 } 00984 else if ((curPage->screen == cmgrScreenEdit_e) 00985 && (curPage->page == editScreenWireless_e)) 00986 { 00987 upPage->screen = cmgrScreenEdit_e; 00988 upPage->page = editScreenProfiles_e; 00989 } 00990 else if ((curPage->screen == cmgrScreenEdit_e) 00991 && (curPage->page == editScreenOverview_e)) 00992 { 00993 upPage->screen = cmgrScreenEdit_e; 00994 upPage->page = editScreenProfiles_e; 00995 } 00996 else if ((curPage->screen == cmgrScreenEdit_e) 00997 && (curPage->page == editScreenDialup_e)) 00998 { 00999 upPage->screen = cmgrScreenEdit_e; 01000 upPage->page = editScreenProfiles_e; 01001 } 01002 else if ((curPage->screen == cmgrScreenEdit_e) 01003 && (curPage->page == editScreenProxy_e)) 01004 { 01005 upPage->screen = cmgrScreenEdit_e; 01006 upPage->page = editScreenProfiles_e; 01007 } 01008 else if ((curPage->screen == cmgrScreenEdit_e) 01009 && (curPage->page == editScreenStatic_e)) 01010 { 01011 upPage->screen = cmgrScreenEdit_e; 01012 upPage->page = editScreenProfiles_e; 01013 } 01014 else if ((curPage->screen == cmgrScreenEdit_e) 01015 && (curPage->page == editScreenWirelessExt_e)) 01016 { 01017 upPage->screen = cmgrScreenEdit_e; 01018 upPage->page = editScreenProfiles_e; 01019 } 01020 else 01021 { 01022 upPage->screen = cmgrScreenUndef_e; 01023 upPage->page = -1; 01024 } 01025 CN_LOGPRINTF("upPage[%d,%d]", upPage->screen, upPage->page); 01026 }
static void cmgr_goto_screen_page | ( | const screenPage_t * | page | ) | [static] |
Definition at line 1159 of file connectionMgr.c.
01160 { 01161 scanContext_t* ctxt; 01162 01163 CN_LOGPRINTF("entry [%p]", page); 01164 01165 cmgr_set_screen_mode(page->screen); 01166 switch (page->screen) 01167 { 01168 case cmgrScreenConnect_e: 01169 connect_goto_page(page->page); 01170 01171 // for connectScreenOptions, scan automatically 01172 if (page->page == connectScreenOptions_e) 01173 { 01174 connect_options_display(); 01175 01176 connect_options_restore_scan_ctxt(); 01177 ctxt = cmgr_get_scan_ctxt(); 01178 connect_scan(ctxt, TRUE); 01179 } 01180 break; 01181 case cmgrScreenEdit_e: 01182 edit_goto_page(page->page); 01183 break; 01184 default: 01185 break; 01186 } 01187 }
void cmgr_ping_ctxt_destory | ( | void | ) |
Definition at line 665 of file connectionMgr.c.
00666 { 00667 CN_LOGPRINTF("entry"); 00668 00669 connect_ping_ctxt_destory(g_ping_ctxt); 00670 g_ping_ctxt = NULL; 00671 }
void cmgr_ping_ctxt_init | ( | void | ) |
Definition at line 657 of file connectionMgr.c.
00658 { 00659 CN_LOGPRINTF("entry"); 00660 00661 cmgr_ping_ctxt_destory(); 00662 g_ping_ctxt = connect_ping_ctxt_new(); 00663 }
void cmgr_scan_ctxt_destory | ( | void | ) |
Definition at line 643 of file connectionMgr.c.
00644 { 00645 CN_LOGPRINTF("entry"); 00646 00647 connect_scan_ctxt_destory(g_scan_ctxt); 00648 g_scan_ctxt = NULL; 00649 }
void cmgr_scan_ctxt_init | ( | void | ) |
Definition at line 635 of file connectionMgr.c.
00636 { 00637 CN_LOGPRINTF("entry"); 00638 00639 cmgr_scan_ctxt_destory(); 00640 g_scan_ctxt = connect_scan_ctxt_new(); 00641 }
GtkWidget* cmgr_screens_create | ( | void | ) |
Definition at line 108 of file connectionMgr.c.
00109 { 00110 GtkWidget* screens; 00111 guint signal_id; 00112 00113 CN_LOGPRINTF("entry"); 00114 00115 // screens 00116 screens = gtk_vbox_new(FALSE, 0); 00117 00118 // g_connectScreens 00119 g_connectScreens = connect_screen_create(); 00120 connect_screen_set_text(); 00121 gtk_box_pack_start(GTK_BOX(screens), g_connectScreens, 00122 FALSE, FALSE, 0); 00123 gtk_widget_hide(g_connectScreens); 00124 00125 // g_editScreens 00126 g_editScreens = edit_screen_create(); 00127 edit_screen_set_text(); 00128 gtk_box_pack_start(GTK_BOX(screens), g_editScreens, FALSE, FALSE, 0); 00129 gtk_widget_hide(g_editScreens); 00130 00131 // install class-specific screen update handlers 00132 // erGtkEntry 00133 signal_id = g_signal_lookup("screen-refresh", ERGTK_ENTRY_TYPE); 00134 g_assert(signal_id > 0); 00135 g_signal_add_emission_hook(signal_id, 00136 0, 00137 hook_screen_refresh_typing, 00138 (gpointer)TEXT_ENTRY_CHANGED_LEVEL, 00139 NULL); 00140 // erGtkToggleButton 00141 signal_id = g_signal_lookup("toggled", ERGTK_TOGGLE_BUTTON_TYPE); 00142 g_assert(signal_id > 0); 00143 g_signal_add_emission_hook(signal_id, 00144 0, 00145 hook_screen_refresh_typing, 00146 (gpointer)SETTING_ITEM_CHANGE, 00147 NULL); 00148 00149 gtk_widget_show(screens); 00150 return screens; 00151 }
void cmgr_set_pagebar | ( | void | ) |
Definition at line 224 of file connectionMgr.c.
00225 { 00226 CN_LOGPRINTF("entry: g_screen_mode [%d]", g_screen_mode); 00227 00228 switch (g_screen_mode) 00229 { 00230 case cmgrScreenConnect_e: 00231 connect_set_pagebar(); 00232 break; 00233 00234 case cmgrScreenEdit_e: 00235 edit_set_pagebar(); 00236 break; 00237 00238 default: 00239 CN_LOGPRINTF("Illegal screen g_screen_mode [%d]", 00240 g_screen_mode); 00241 } 00242 }
void cmgr_set_screen_mode | ( | cmgrScreen_t | mode | ) |
Definition at line 153 of file connectionMgr.c.
00154 { 00155 CN_LOGPRINTF("entry: mode [%d] g_screen_mode [%d]", 00156 mode, g_screen_mode); 00157 00158 if (mode != g_screen_mode) 00159 { 00160 switch (mode) 00161 { 00162 case cmgrScreenConnect_e: 00163 g_screen_mode = cmgrScreenConnect_e; 00164 00165 bg_display_title(); 00166 00167 gtk_widget_hide(g_editScreens); 00168 gtk_widget_show(g_connectScreens); 00169 00170 connect_set_pagebar(); 00171 connect_set_toolbar(); 00172 00173 connect_screen_display(); 00174 break; 00175 00176 case cmgrScreenEdit_e: 00177 g_screen_mode = cmgrScreenEdit_e; 00178 00179 bg_display_title(); 00180 00181 gtk_widget_hide(g_connectScreens); 00182 gtk_widget_show(g_editScreens); 00183 00184 edit_set_toolbar(); 00185 edit_set_pagebar(); 00186 00187 edit_screen_display(); 00188 break; 00189 00190 default: 00191 CN_LOGPRINTF("Illegal screen mode [%d]", mode); 00192 } 00193 } 00194 }
void cmgr_set_toolbar | ( | void | ) |
Definition at line 203 of file connectionMgr.c.
00204 { 00205 CN_LOGPRINTF("entry: g_screen_mode [%d]", g_screen_mode); 00206 00207 switch (g_screen_mode) 00208 { 00209 case cmgrScreenConnect_e: 00210 connect_set_toolbar(); 00211 break; 00212 00213 case cmgrScreenEdit_e: 00214 edit_set_toolbar(); 00215 break; 00216 00217 default: 00218 CN_LOGPRINTF("Illegal screen g_screen_mode [%d]", 00219 g_screen_mode); 00220 } 00221 00222 }
void cmgr_up_page | ( | void | ) |
Definition at line 1190 of file connectionMgr.c.
01191 { 01192 screenPage_t curPage, upPage; 01193 editMode_t mode; 01194 01195 CN_LOGPRINTF("entry"); 01196 01197 cmgr_get_cur_screen_page(&curPage); 01198 cmgr_get_up_page(&curPage, &upPage); 01199 01200 if ((upPage.screen == cmgrScreenUndef_e) 01201 || (upPage.page == -1)) 01202 { 01203 main_quit(); 01204 } 01205 else 01206 { 01207 cmgr_goto_screen_page(&upPage); 01208 01209 // The behaviour of up page to editScreenProfiles_e 01210 // will lead to the profile editor is not only 01211 // for filling in encryption key for access point. 01212 // So here, need to change the edit mode 01213 // to be editModeConnectNormal_e 01214 if (upPage.screen == cmgrScreenEdit_e 01215 && upPage.page == editScreenProfiles_e) 01216 { 01217 mode = edit_get_mode(); 01218 if ((mode == editModeConnectFillIn_e) 01219 || (mode == editModeConnectCreate_e)) 01220 { 01221 edit_set_mode(editModeConnectNormal_e); 01222 } 01223 } 01224 } 01225 }
gboolean cmgrInstallIpcServer | ( | void | ) |
Definition at line 530 of file connectionMgr.c.
00531 { 00532 int ret; 00533 int fd = -1; 00534 int returnValue; 00535 00536 CN_IPCPRINTF("entry"); 00537 00538 ret = erIpcOpenServerChannel(ER_CONNECT_CHANNEL, &theServerChannel); 00539 00540 if (ret != (-1)) 00541 { 00542 fd = erIpcGetServerFd(theServerChannel); 00543 00544 CN_IPCPRINTF("erIpcGetServerFd returned %d\n", fd); 00545 00546 // gtk specific mechanism to monitor input file descriptor. 00547 returnValue = gdk_input_add(fd, 00548 GDK_INPUT_READ, 00549 connectMessageReceived, 00550 (gpointer) theServerChannel); 00551 00552 CN_IPCPRINTF("gdk_input_add returned %d", returnValue); 00553 return TRUE; 00554 } 00555 else 00556 { 00557 CN_ERRORPRINTF("Could not open server channel"); 00558 return FALSE; 00559 } 00560 }
void connect_disable_network | ( | void | ) |
Definition at line 679 of file connectionMgr.c.
00680 { 00681 // disable all interfaces 00682 system(COMMAND_IFDOWN_ALL); 00683 }
ecd_err_t connect_enable_network | ( | const regNetworkProfile_t * | regNetworkProfile | ) |
Definition at line 733 of file connectionMgr.c.
00734 { 00735 ecd_err_t err = ECD_FAILURE; 00736 char *command[128]; 00737 int arg = 0; 00738 char *freelist[128]; 00739 int free_arg = 0; 00740 int rc; 00741 struct in_addr address; 00742 struct in_addr netmask; 00743 struct in_addr broadcast; 00744 char *encrkey; 00745 00746 CN_LOGPRINTF("entry"); 00747 g_return_val_if_fail((regNetworkProfile != NULL), err); 00748 00749 if (regNetworkProfile->connection != dialup_t) 00750 { 00751 FILE* fd_iface = NULL; 00752 FILE* fd_resolv = NULL; 00753 FILE* fd_proxy = NULL; 00754 00755 // Create temporary files 00756 fd_iface = fopen(INTERFACES_FILE_TMP, "w"); 00757 fd_resolv = fopen(RESOLVE_CONF_FILE_TMP, "w"); 00758 fd_proxy = fopen(HTTP_PROXY_FILE_TMP, "w"); 00759 g_return_val_if_fail(( fd_iface != NULL 00760 && fd_resolv != NULL 00761 && fd_proxy != NULL), err); 00762 00763 // interface name 00764 fputs("iface ", fd_iface); 00765 00766 switch (regNetworkProfile->connection) 00767 { 00768 case wired_t: 00769 fputs(INTERFACE_WIRED, fd_iface); 00770 break; 00771 case wireless_t: 00772 fputs(INTERFACE_WIRELESS, fd_iface); 00773 break; 00774 default: 00775 CN_ERRORPRINTF("Illegal setting->connection [%d]", 00776 (int)regNetworkProfile->connection); 00777 return err; 00778 } 00779 00780 fputs(" inet ", fd_iface); //type TCP/IP 00781 00782 // static or dynamic IP address 00783 switch (regNetworkProfile->addressMode) 00784 { 00785 case dhcp_t: 00786 fputs("dhcp ", fd_iface); 00787 break; 00788 00789 case static_t: 00790 // static IP address etc. 00791 fputs( "static ", fd_iface); 00792 fputs("\n address ", fd_iface); 00793 fputs(regNetworkProfile->ipSettings->address, fd_iface); 00794 fputs("\n netmask ", fd_iface); 00795 fputs(regNetworkProfile->ipSettings->netmask, fd_iface); 00796 fputs("\n gateway ", fd_iface); 00797 fputs(regNetworkProfile->ipSettings->gateway, fd_iface); 00798 00799 // static DNS server address 00800 fputs("nameserver ", fd_resolv); 00801 fputs(regNetworkProfile->ipSettings->dns, fd_resolv); 00802 break; 00803 00804 default: 00805 CN_ERRORPRINTF("Illegal setting->addresMode [%d]", 00806 (int)regNetworkProfile->addressMode); 00807 return err; 00808 } 00809 00810 // Put proxy setting in environment 00811 if (regNetworkProfile->proxySettings == NULL) 00812 { 00813 CN_WARNPRINTF("No proxy needs to be specified"); 00814 g_unsetenv("http_proxy"); 00815 g_unsetenv("https_proxy"); 00816 } 00817 else 00818 { 00819 char proxyString[256]; 00820 00821 snprintf(proxyString, sizeof(proxyString), 00822 "http://%s:%s", 00823 regNetworkProfile->proxySettings->address, 00824 regNetworkProfile->proxySettings->port); 00825 fputs(proxyString, fd_proxy); 00826 CN_WARNPRINTF("Setting proxy to %s", proxyString); 00827 00828 g_setenv("http_proxy", proxyString, 1); 00829 g_setenv("https_proxy", proxyString, 1); 00830 } 00831 00832 // close temporary files 00833 fputc('\n', fd_iface); fclose(fd_iface); 00834 fputc('\n', fd_resolv); fclose(fd_resolv); 00835 fputc('\n', fd_proxy); fclose(fd_proxy); 00836 } 00837 00838 // command-line to start network interface 00839 switch (regNetworkProfile->connection) 00840 { 00841 case wired_t: 00842 err = ECD_WIRED_ERROR; 00843 arg = 0; 00844 command[arg++] = COMMAND_WIRED; 00845 command[arg++] = "start"; 00846 if (regNetworkProfile->addressMode == static_t) 00847 { 00848 //inet_aton(regNetworkProfile->ipSettings->address, &address); 00849 //inet_aton(regNetworkProfile->ipSettings->netmask, &netmask); 00850 address.s_addr = inet_addr(regNetworkProfile->ipSettings->address); 00851 netmask.s_addr = inet_addr(regNetworkProfile->ipSettings->netmask); 00852 broadcast.s_addr = address.s_addr | ~netmask.s_addr; 00853 00854 command[arg++] = "static"; 00855 command[arg++] = regNetworkProfile->ipSettings->address; 00856 command[arg++] = regNetworkProfile->ipSettings->netmask; 00857 command[arg++] = freelist[free_arg++] = strdup(inet_ntoa(broadcast)); 00858 command[arg++] = regNetworkProfile->ipSettings->gateway; 00859 command[arg++] = regNetworkProfile->ipSettings->dns; 00860 } 00861 else 00862 { 00863 command[arg++] = "dhcp"; 00864 } 00865 break; 00866 00867 case wireless_t: 00868 err = ECD_WIRELESS_ERROR; 00869 arg = 0; 00870 command[arg++] = COMMAND_WIRELESS; 00871 command[arg++] = "start"; 00872 command[arg++] = regNetworkProfile->wirelessSettings->SSID; 00873 00874 switch (regNetworkProfile->wirelessSettings->encrType) 00875 { 00876 case encr_none_t: 00877 /* ignore */ ; 00878 break; 00879 case encr_wep_t: 00880 command[arg++] = "enc"; 00881 encrkey = regNetworkProfile->wirelessSettings->encrKey; 00882 add_key_prefix(encrkey, &freelist[free_arg]); 00883 command[arg++] = freelist[free_arg]; 00884 free_arg++; 00885 break; 00886 case encr_wpa_t: 00887 command[arg++] = "wpa"; 00888 encrkey = regNetworkProfile->wirelessSettings->encrKey; 00889 command[arg++] = encrkey; 00890 break; 00891 default: 00892 // TODO: support these settings 00893 CN_ERRORPRINTF("Support the ascii settings"); 00894 break; 00895 } 00896 break; // end wireless_t 00897 00898 case dialup_t: 00899 err = ECD_DIALUP_ERROR; 00900 arg = 0; 00901 command[arg++] = COMMAND_DIALUP; 00902 command[arg++] = "start"; 00903 command[arg++] = regNetworkProfile->dialupSettings->phone; 00904 command[arg++] = regNetworkProfile->dialupSettings->user; 00905 command[arg++] = regNetworkProfile->dialupSettings->password; 00906 break; // end dialup_t 00907 00908 default: 00909 /* ignore, has been tested before */ ; 00910 } 00911 00912 // now execute the command, at last 00913 command[arg] = NULL; 00914 if ((enable_pid = fork()) == 0) 00915 { 00916 printf("Execvp returned %d\n", execvp(command[0], command)); 00917 printf("execvp error: %d %s", errno, strerror(errno)); 00918 exit(1); 00919 } 00920 waitpid(enable_pid, &rc, 0); 00921 if (WIFEXITED(rc) && WEXITSTATUS(rc) == 0) 00922 { 00923 err = ECD_NO_ERROR; 00924 } 00925 enable_pid = 0; 00926 00927 for (free_arg--; free_arg >= 0; free(freelist[free_arg--])); 00928 00929 FILE *fd = fopen("/tmp/profile_name.tmp", "w"); 00930 fputs(regNetworkProfile->name, fd); 00931 fputs("\n", fd); 00932 fclose(fd); 00933 00934 CN_LOGPRINTF("done: err [%d]", err); 00935 return err; 00936 }
void connect_enable_network_abort | ( | void | ) |
Definition at line 685 of file connectionMgr.c.
00686 { 00687 // stop network enable, when needed 00688 if (enable_pid > 0) 00689 { 00690 CN_WARNPRINTF("Sending SIGTERM to enable_pid [%d]", enable_pid); 00691 kill(enable_pid, SIGTERM); 00692 } 00693 }
static void connectMessageReceived | ( | gpointer | data, | |
gint | source_fd, | |||
GdkInputCondition | condition | |||
) | [static] |
Definition at line 579 of file connectionMgr.c.
00582 { 00583 char szBuffer[SERVER_BUFFER_SIZE]; 00584 int nBuf = SERVER_BUFFER_SIZE; 00585 int page; 00586 00587 erIpcCmd_t command; 00588 //st_ContentType_e contentType; 00589 00590 erIpcGetMessage((erServerChannel_t) data, szBuffer, &nBuf); 00591 00592 CN_IPCPRINTF("Received %s\n", szBuffer); 00593 00594 if (cnParseCommand(szBuffer, &command) >= 0) 00595 { 00596 switch (command.cc) 00597 { 00598 case ccCnGotoPage: 00599 page = atoi(command.arg[0]); 00600 CN_IPCPRINTF("Connect Goto Page: %d\n", page); 00601 gdk_threads_enter(); 00602 on_goto_page(page); 00603 gdk_threads_leave(); 00604 break; 00605 00606 case ccCnToolbar: 00607 { 00608 int iconID = atoi(command.arg[0]); 00609 int iconState = atoi(command.arg[1]); 00610 CN_LOGPRINTF("ccCnToolbarIcon: iconID [%d] iconState [%d]", 00611 iconID, iconState); 00612 gdk_threads_enter(); 00613 on_cmgr_icon_clicked(iconID, iconState); 00614 gdk_threads_leave(); 00615 } 00616 break; 00617 00618 case ccCnToolbarSync: 00619 gdk_threads_enter(); 00620 CN_LOGPRINTF("ccCnToolbarSync"); 00621 on_cmgr_toolbar_synchronised(); 00622 gdk_threads_leave(); 00623 break; 00624 00625 default: 00626 CN_IPCPRINTF("UNKNOWN COMMAND %d", command.cc); 00627 break; 00628 } 00629 } 00630 }
gboolean connectStartIpcClientSetup | ( | ) |
Definition at line 562 of file connectionMgr.c.
00563 { 00564 int ret; 00565 00566 CN_LOGPRINTF("entry\n"); 00567 00568 ret = erIpcStartClient(ER_SETUP_CHANNEL, &g_ipc_channel_setup); 00569 CN_IPCPRINTF("erIpcStartClient returned %d\n", ret); 00570 00571 return (ret == 0) ? TRUE : FALSE; 00572 }
static void do_hide_keyboard | ( | int | iconState | ) | [static] |
Definition at line 464 of file connectionMgr.c.
00465 { 00466 g_assert((iconState == iconState_grey) 00467 || (iconState == iconState_normal)); 00468 00469 // remove the old display update 00470 // keyboard will refresh the screen later 00471 keyboard_remove_idle_handler_ids(); 00472 00473 // block screen updates until keyboard hides 00474 display_update_increase_level(KEYBOARD_SHOW_HIDE_LEVEL); 00475 00476 // update GTK objects then hide keyboard, 00477 // rely on display update by keyboard 00478 g_hide_idle_handler_id = g_idle_add(on_idle_hide_keyboard, 00479 (gpointer) iconState); 00480 }
static void do_show_keyboard | ( | ) | [static] |
Definition at line 418 of file connectionMgr.c.
00419 { 00420 00421 // remove the old display update, 00422 // keyboard will refresh the screen later 00423 keyboard_remove_idle_handler_ids(); 00424 00425 // block screen updates until keyboard shows 00426 display_update_increase_level(KEYBOARD_SHOW_HIDE_LEVEL); 00427 00428 // update GTK objects then show keyboard, 00429 // rely on display update by keyboard 00430 g_show_idle_handler_id = g_idle_add(on_idle_show_keyboard, NULL); 00431 }
static gboolean hook_screen_refresh_typing | ( | GSignalInvocationHint * | ihint, | |
guint | n_param_values, | |||
const GValue * | param_values, | |||
gpointer | user_data | |||
) | [static] |
Definition at line 362 of file connectionMgr.c.
00366 { 00367 int level = (int)user_data; 00368 00369 CN_LOGPRINTF("entry: level [%d]", level); 00370 00371 display_update_request_screen_refresh(level, WAVEFORM_TYPING); 00372 00373 return TRUE; // TRUE = continue gtk signal handling 00374 }
static gboolean is_hex_key | ( | const char * | key | ) | [static] |
Definition at line 695 of file connectionMgr.c.
00696 { 00697 int i, len; 00698 gboolean ret = TRUE; 00699 00700 if ((key == NULL) 00701 || ((len = strlen(key)) == 0)) 00702 { 00703 return TRUE; 00704 } 00705 00706 for (i = 0; i < len; i++) 00707 { 00708 if (!isxdigit(key[i])) 00709 { 00710 ret = FALSE; 00711 break; 00712 } 00713 } 00714 00715 CN_LOGPRINTF("return %d", ret); 00716 return ret; 00717 }
static gboolean keyboard_is_running | ( | void | ) | [static] |
Definition at line 400 of file connectionMgr.c.
00401 { 00402 const char *cmd = "ps -ef | grep matchbox-keyboard | grep -v grep"; 00403 gboolean running = FALSE; 00404 00405 if (system(cmd) == 0) 00406 { 00407 running = TRUE; 00408 } 00409 00410 CN_LOGPRINTF("return %d", running); 00411 return running; 00412 }
static void keyboard_remove_idle_handler_ids | ( | void | ) | [static] |
Definition at line 379 of file connectionMgr.c.
00380 { 00381 if (g_show_idle_handler_id) 00382 { 00383 CN_DMPRINTF("\nRemoving the old show keyboard idle handler.\n"); 00384 00385 g_source_remove(g_show_idle_handler_id); 00386 g_show_idle_handler_id = 0; 00387 } 00388 00389 if (g_hide_idle_handler_id) 00390 { 00391 CN_DMPRINTF("\nRemoving the old hide keyboard idle handler.\n"); 00392 00393 g_source_remove(g_hide_idle_handler_id); 00394 g_hide_idle_handler_id = 0; 00395 } 00396 00397 display_update_remove_idle_handler_id(); 00398 }
static void on_cmgr_icon_clicked | ( | int | iconID, | |
int | iconState | |||
) | [static] |
Definition at line 268 of file connectionMgr.c.
00269 { 00270 cmgrScreen_t mode; 00271 00272 CN_LOGPRINTF("entry iconID[%d] iconState[%d]", iconID, iconState); 00273 00274 mode = cmgr_get_screen_mode(); 00275 switch (mode) 00276 { 00277 case cmgrScreenEdit_e: 00278 on_edit_icon_clicked(iconID, iconState); 00279 break; 00280 case cmgrScreenConnect_e: 00281 on_connect_icon_clicked(iconID, iconState); 00282 break; 00283 default: 00284 break; 00285 } 00286 }
guint on_cmgr_keypress | ( | GtkWidget * | widget, | |
GdkEventKey * | event, | |||
gpointer | data | |||
) |
Definition at line 245 of file connectionMgr.c.
00248 { 00249 guint returnValue = 0; // return FALSE => default gtk handling 00250 00251 CN_LOGPRINTF("entry"); 00252 00253 switch (cmgr_get_screen_mode()) 00254 { 00255 case cmgrScreenConnect_e: 00256 returnValue = on_connect_keypress(event); 00257 break; 00258 case cmgrScreenEdit_e: 00259 returnValue = on_edit_keypress(event); 00260 break; 00261 default: 00262 /* ignore */ ; 00263 } 00264 00265 return returnValue; 00266 }
static void on_cmgr_toolbar_synchronised | ( | void | ) | [static] |
Definition at line 288 of file connectionMgr.c.
00289 { 00290 CN_LOGPRINTF("entry"); 00291 00292 on_toolbar_synchronised(); 00293 }
static gboolean on_delayed_cmgr_back_page | ( | gpointer | data | ) | [static] |
Definition at line 1228 of file connectionMgr.c.
01229 { 01230 screenPage_t curPage, backPage; 01231 01232 CN_LOGPRINTF("entry"); 01233 01234 erbusy_blink(); 01235 01236 cmgr_get_cur_screen_page(&curPage); 01237 cmgr_get_back_page(&curPage, &backPage); 01238 01239 // before back, restore the previous settings 01240 switch (curPage.screen) 01241 { 01242 case cmgrScreenEdit_e: 01243 edit_restore_network_settings(curPage.page); 01244 break; 01245 case cmgrScreenConnect_e: 01246 // nothing need to do 01247 break; 01248 default: 01249 break; 01250 } 01251 01252 cmgr_goto_screen_page(&backPage); 01253 01254 return FALSE; 01255 }
static void on_goto_page | ( | gint | new_page | ) | [static] |
Definition at line 345 of file connectionMgr.c.
00346 { 00347 CN_LOGPRINTF("entry"); 00348 00349 switch (cmgr_get_screen_mode()) 00350 { 00351 case cmgrScreenConnect_e: 00352 on_connect_goto_page(new_page); 00353 break; 00354 case cmgrScreenEdit_e: 00355 on_edit_goto_page(new_page); 00356 break; 00357 default: 00358 /* ignore */ ; 00359 } 00360 }
static gboolean on_idle_hide_keyboard | ( | gpointer | data | ) | [static] |
Definition at line 482 of file connectionMgr.c.
00483 { 00484 gboolean running = keyboard_is_running(); 00485 int iconState = (int)data; 00486 00487 toolbar_setIconState(iconID_keyboard, iconState); 00488 00489 if (!running) 00490 { 00491 // from hide to hide, keyboard doesn't do refresh the screen, 00492 // do it on connectionMgr side 00493 CN_DMPRINTF("\nfrom hide to hide, " 00494 "rely on cmgr refresh the screen\n"); 00495 display_update_request_screen_refresh(KEYBOARD_SHOW_HIDE_LEVEL, 00496 WAVEFORM_FULLSCREEN); 00497 } 00498 else 00499 { 00500 CN_DMPRINTF("\nfrom show to hide, " 00501 "rely on keyboard refresh the screen\n"); 00502 // allow display updates again 00503 display_update_decrease_level(LOWEST_LEVEL); 00504 } 00505 00506 g_hide_idle_handler_id = 0; 00507 return FALSE; // don't call me again 00508 }
static gboolean on_idle_show_keyboard | ( | gpointer | data | ) | [static] |
Definition at line 433 of file connectionMgr.c.
00434 { 00435 gboolean running = keyboard_is_running(); 00436 00437 toolbar_setIconState(iconID_keyboard, iconState_selected); 00438 00439 if (running) 00440 { 00441 // from show to show, keyboard doesn't refresh the screen, 00442 // do it on connectionMgr side 00443 CN_DMPRINTF("\nfrom show to show, " 00444 "rely on cmgr refresh the screen\n"); 00445 display_update_request_screen_refresh(KEYBOARD_SHOW_HIDE_LEVEL, 00446 WAVEFORM_FULLSCREEN); 00447 } 00448 else 00449 { 00450 CN_DMPRINTF("\nfrom hide to show, " 00451 "rely on keyboard refresh the screen\n"); 00452 // allow display updates again 00453 display_update_decrease_level(LOWEST_LEVEL); 00454 } 00455 00456 g_show_idle_handler_id = 0; 00457 return FALSE; // don't call me again 00458 }
static void on_toolbar_synchronised | ( | void | ) | [static] |
Definition at line 320 of file connectionMgr.c.
00321 { 00322 int elementSize, arraySize; 00323 int i, sz; 00324 00325 CN_LOGPRINTF("entry"); 00326 00327 display_update_request_screen_refresh(TEXT_ENTRY_CHANGED_LEVEL, 00328 WAVEFORM_TYPING); 00329 00330 elementSize = sizeof(on_toolbar_sync_actions[0]); 00331 arraySize = sizeof(on_toolbar_sync_actions); 00332 sz = arraySize / elementSize; 00333 00334 // call functions for registered on_toolbar_sync_actions 00335 for (i = 0; i < sz; i++) 00336 { 00337 if (on_toolbar_sync_actions[i] != NULL) 00338 { 00339 on_toolbar_sync_actions[i] (); 00340 on_toolbar_sync_actions[i] = NULL; 00341 } 00342 } 00343 }
void show_keyboard | ( | gboolean | show | ) |
Definition at line 511 of file connectionMgr.c.
00512 { 00513 CN_LOGPRINTF("entry: show [%d]", show); 00514 00515 if (show) 00516 { 00517 // keyboard requested 00518 do_show_keyboard(); 00519 } 00520 else 00521 { 00522 // keyboard not requested 00523 do_hide_keyboard(iconState_grey); 00524 } 00525 }
volatile int enable_pid = 0 [static] |
Definition at line 68 of file connectionMgr.c.
GtkWidget* g_connectScreens = NULL [static] |
Definition at line 60 of file connectionMgr.c.
GtkWidget* g_editScreens = NULL [static] |
Definition at line 61 of file connectionMgr.c.
guint g_hide_idle_handler_id = 0 [static] |
Definition at line 74 of file connectionMgr.c.
erClientChannel_t g_ipc_channel_setup [static] |
Definition at line 91 of file connectionMgr.c.
pingContext_t* g_ping_ctxt = NULL [static] |
Definition at line 66 of file connectionMgr.c.
scanContext_t* g_scan_ctxt = NULL [static] |
Definition at line 65 of file connectionMgr.c.
cmgrScreen_t g_screen_mode = cmgrScreenUndef_e [static] |
Definition at line 62 of file connectionMgr.c.
guint g_show_idle_handler_id = 0 [static] |
Definition at line 73 of file connectionMgr.c.
on_tbsync_action_t on_toolbar_sync_actions[] = { NULL, NULL } [static] |
Definition at line 71 of file connectionMgr.c.
erServerChannel_t theServerChannel [static] |
Definition at line 90 of file connectionMgr.c.