00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00023 #include <stdio.h>
00024 #include <stddef.h>
00025 #include <stdlib.h>
00026 #include <string.h>
00027 #include <ctype.h>
00028 #include <sys/types.h>
00029 #include <sys/socket.h>
00030 #include <netinet/in.h>
00031 #include <arpa/inet.h>
00032 #include <unistd.h>
00033
00034 #include "eripc.h"
00035 #include "eripcclient.h"
00036 #include "eripctoolbar.h"
00037 #include "eripcparser.h"
00038
00039 typedef struct
00040 {
00041 e_iconID_t iconID;
00042 char* iconName;
00043 }iconMap_t;
00044
00045 static const iconMap_t g_icon_map_table[] = {
00046 {iconID_battery, "battery"},
00047 {iconID_bookmark, "bookmark"},
00048 {iconID_collapse, "collapse"},
00049 {iconID_connectivity, "connectivity"},
00050 {iconID_copy, "copy"},
00051 {iconID_cut, "cut"},
00052 {iconID_empty, "empty"},
00053 {iconID_erase, "erase"},
00054 {iconID_error, "error"},
00055 {iconID_expand, "expand"},
00056 {iconID_filemanager, "filemanager"},
00057 {iconID_fontlarger, "fontlarger"},
00058 {iconID_fontsmaller, "fontsmaller"},
00059 {iconID_keyboard, "keyboard"},
00060 {iconID_orientation, "orientation"},
00061 {iconID_paste, "paste"},
00062 {iconID_pen, "pen"},
00063 {iconID_pen1pixel, "pen1pixel"},
00064 {iconID_pen3pixel, "pen3pixel"},
00065 {iconID_pen5pixel, "pen5pixel"},
00066 {iconID_pen7pixel, "pen7pixel"},
00067 {iconID_penheavier, "penheavier"},
00068 {iconID_penlighter, "penlighter"},
00069 {iconID_penpressure, "penpressure"},
00070 {iconID_selecttext, "selecttext"},
00071 {iconID_share, "share"},
00072 {iconID_summarize, "summarize"},
00073 {iconID_trashcan, "trashcan"},
00074 {iconID_zoomin, "zoomin"},
00075 {iconID_zoomout, "zoomout"},
00076 {iconID_eraseline, "eraseline"},
00077 {iconID_npage, "npage"},
00078 {iconID_penblack, "penblack"},
00079 {iconID_pendarkgrey, "pendarkgrey"},
00080 {iconID_penlightgrey, "penlightgrey"},
00081 {iconID_penwhite, "penwhite"},
00082 {iconID_pan, "pan"},
00083 {iconID_index, "index"},
00084 {iconID_pen1pixelLow, "pen1pixelLow"},
00085 {iconID_pen3pixelLow, "pen3pixelLow"},
00086 {iconID_pen5pixelLow, "pen5pixelLow"},
00087 {iconID_pen7pixelLow, "pen7pixelLow"},
00088 {iconID_penblackLow, "penblackLow"},
00089 {iconID_pendarkgreyLow, "pendarkgreyLow"},
00090 {iconID_penlightgreyLow, "penlightgreyLow"},
00091 {iconID_penwhiteLow, "penwhiteLow"},
00092 {iconID_locked, "locked"},
00093 {iconID_tagging, "tagging"},
00094 {iconID_search, "search"},
00095 {iconID_zoomfit, "zoomfit"},
00096 {iconID_landscape_portrait, "landscape_portrait"},
00097 {iconID_portrait_landscape, "portrait_landscape"},
00098 {iconID_zoomwidth, "zoomwidth"},
00099 {iconID_zoomback, "zoomback"},
00100 {iconID_find, "find"},
00101 {iconID_lock_screen, "lock_screen"},
00102 {iconID_not_used01, ""},
00103 {iconID_not_user02, ""},
00104 {iconID_continuous_mode, "continuous_mode"},
00105 {iconID_page_mode, "page_mode"},
00106 {iconID_sort, "sort"},
00107 {iconID_connect, "connect"},
00108 {iconID_start_reading, "start_reading"},
00109 {iconID_back, "back"},
00110 {iconID_lookup, "lookup"},
00111 {iconID_dictionary_search, "dictionary_search"},
00112 {iconID_forward, "forward"}
00113 };
00114
00115 int tbGetIconNumber(void)
00116 {
00117 int nIcons;
00118 nIcons = sizeof(g_icon_map_table) / sizeof(g_icon_map_table[0]);
00119 return nIcons;
00120 }
00121
00122 const char* tbGetIconName(int iconID)
00123 {
00124 int i, nIcons;
00125 const char* iconName = NULL;
00126
00127 nIcons = tbGetIconNumber();
00128 if ((iconID >= 0) && (iconID <= nIcons))
00129 {
00130 for (i = 0; i < nIcons; i++)
00131 {
00132 if (g_icon_map_table[i].iconID == iconID)
00133 {
00134 iconName = g_icon_map_table[i].iconName;
00135 break;
00136 }
00137 }
00138 }
00139
00140 return iconName;
00141 }
00142
00143 int tbAppendPlatformIcon(erClientChannel_t channel, int uaID, int iconID, int signal)
00144 {
00145 erIpcCmd_t cmd;
00146
00147 strcpy(cmd.name, "tbAppendPlatformIcon");
00148 cmd.cc = (int) ccTbAppendPlatformIcon;
00149 cmd.nArg = 3;
00150 sprintf(cmd.arg[0], "%d", uaID);
00151 sprintf(cmd.arg[1], "%d", iconID);
00152 sprintf(cmd.arg[2], "%d", signal);
00153
00154 return erIpcSndCommand(channel, &cmd);
00155 }
00156
00157 int tbSynchronise(erClientChannel_t channel, int uaID, int signal)
00158 {
00159 erIpcCmd_t cmd;
00160
00161 strcpy(cmd.name, "tbSynchronise");
00162 cmd.cc = (int) ccTbSynchronise;
00163 cmd.nArg = 2;
00164 sprintf(cmd.arg[0], "%d", uaID);
00165 sprintf(cmd.arg[1], "%d", signal);
00166
00167 return erIpcSndCommand(channel, &cmd);
00168 }
00169
00170 int tbRemovePlatformIcon(erClientChannel_t channel, int uaID, int iconID)
00171 {
00172 erIpcCmd_t cmd;
00173
00174 strcpy(cmd.name, "tbRemovePlatformIcon");
00175 cmd.cc = (int) ccTbRemovePlatformIcon;
00176 cmd.nArg = 2;
00177 sprintf(cmd.arg[0], "%d", uaID);
00178 sprintf(cmd.arg[1], "%d", iconID);
00179
00180 return erIpcSndCommand(channel, &cmd);
00181 }
00182
00183
00184 int tbSetStatePlatformIcon(erClientChannel_t channel, int uaID, int iconID, int iconState)
00185 {
00186 erIpcCmd_t cmd;
00187
00188 strcpy(cmd.name, "tbSetStatePlatformIcon");
00189 cmd.cc = (int) ccTbSetStatePlatformIcon;
00190 cmd.nArg = 3;
00191 sprintf(cmd.arg[0], "%d", uaID);
00192 sprintf(cmd.arg[1], "%d", iconID);
00193 sprintf(cmd.arg[2], "%d", iconState);
00194
00195 return erIpcSndCommand(channel, &cmd);
00196 }
00197
00198 int tbDisableUpdate(erClientChannel_t channel, int uaID)
00199 {
00200 erIpcCmd_t cmd;
00201
00202 strcpy(cmd.name, "tbDisableUpdate");
00203 cmd.cc = (int) ccTbDisableUpdate;
00204 cmd.nArg = 1;
00205 sprintf(cmd.arg[0], "%d", uaID);
00206
00207 return erIpcSndCommand(channel, &cmd);
00208 }
00209
00210 int tbEnableUpdate(erClientChannel_t channel, int uaID)
00211 {
00212 erIpcCmd_t cmd;
00213
00214 strcpy(cmd.name, "tbEnableUpdate");
00215 cmd.cc = (int) ccTbEnableUpdate;
00216 cmd.nArg = 1;
00217 sprintf(cmd.arg[0], "%d", uaID);
00218
00219 return erIpcSndCommand(channel, &cmd);
00220 }
00221
00222 int tbSelectIconSet(erClientChannel_t channel, int uaID)
00223 {
00224 erIpcCmd_t cmd;
00225
00226 strcpy(cmd.name, "tbSelectIconSet");
00227 cmd.cc = (int) ccTbSelectIconSet;
00228 cmd.nArg = 1;
00229 sprintf(cmd.arg[0], "%d", uaID);
00230
00231 return erIpcSndCommand(channel, &cmd);
00232 }
00233
00234 int tbClearIconSet(erClientChannel_t channel, int uaID)
00235 {
00236 erIpcCmd_t cmd;
00237
00238 strcpy(cmd.name, "tbClearIconSet");
00239 cmd.cc = (int) ccTbClearIconSet;
00240 cmd.nArg = 1;
00241 sprintf(cmd.arg[0], "%d", uaID);
00242
00243 return erIpcSndCommand(channel, &cmd);
00244 }
00245
00246
00247
00248
00249
00250
00251
00252 int tbParseCommand(char *szCommand, erIpcCmd_t * pCmd)
00253 {
00254 int i;
00255 char *pChar;
00256 int cmdcode;
00257 char szToken[TB_MAXCHARONLINE];
00258 int nReqArgs = 0;
00259
00260 pCmd->cc = (int) ccUndefined;
00261 for (i = 0; i < TB_N_ARG; i++)
00262 {
00263 strcpy(pCmd->arg[i], "");
00264 }
00265
00266
00267 pChar = szCommand;
00268 i = 0;
00269 while (*pChar != '\0')
00270 {
00271 szToken[i] = '\0';
00272 if (*pChar == ',')
00273 {
00274 pChar++;
00275 break;
00276 }
00277 szToken[i] = *pChar++;
00278 i++;
00279 szToken[i] = '\0';
00280 }
00281
00282
00283
00284
00285 if (isdigit(szToken[0]))
00286 {
00287 cmdcode = atoi(szToken);
00288 }
00289 else
00290 {
00291 cmdcode = -1;
00292 }
00293 if (strcmp(szToken, "tbAppendPlatformIcon") == 0 || cmdcode == ccTbAppendPlatformIcon)
00294 {
00295 strcpy(pCmd->name, szToken);
00296 pCmd->cc = (int) ccTbAppendPlatformIcon;
00297 nReqArgs = 3;
00298 pCmd->nArg = 3;
00299 }
00300 else if (strcmp(szToken, "tbRemovePlatformIcon") == 0 || cmdcode == ccTbRemovePlatformIcon)
00301 {
00302 strcpy(pCmd->name, szToken);
00303 pCmd->cc = (int) ccTbRemovePlatformIcon;
00304 nReqArgs = 2;
00305 pCmd->nArg = 2;
00306 }
00307 else if (strcmp(szToken, "tbSetStatePlatformIcon") == 0 || cmdcode == ccTbSetStatePlatformIcon)
00308 {
00309 strcpy(pCmd->name, szToken);
00310 pCmd->cc = (int) ccTbSetStatePlatformIcon;
00311 nReqArgs = 3;
00312 pCmd->nArg = 3;
00313 }
00314 else if (strcmp(szToken, "tbDisableUpdate") == 0 || cmdcode == ccTbDisableUpdate)
00315 {
00316 strcpy(pCmd->name, szToken);
00317 pCmd->cc = (int) ccTbDisableUpdate;
00318 nReqArgs = 1;
00319 pCmd->nArg = 1;
00320 }
00321 else if (strcmp(szToken, "tbEnableUpdate") == 0 || cmdcode == ccTbEnableUpdate)
00322 {
00323 strcpy(pCmd->name, szToken);
00324 pCmd->cc = (int) ccTbEnableUpdate;
00325 nReqArgs = 1;
00326 pCmd->nArg = 1;
00327 }
00328 else if (strcmp(szToken, "tbSelectIconSet") == 0 || cmdcode == ccTbSelectIconSet)
00329 {
00330 strcpy(pCmd->name, szToken);
00331 pCmd->cc = (int) ccTbSelectIconSet;
00332 nReqArgs = 1;
00333 pCmd->nArg = 1;
00334 }
00335 else if (strcmp(szToken, "tbClearIconSet") == 0 || cmdcode == ccTbClearIconSet)
00336 {
00337 strcpy(pCmd->name, szToken);
00338 pCmd->cc = (int) ccTbClearIconSet;
00339 nReqArgs = 1;
00340 pCmd->nArg = 1;
00341 }
00342 else if (strcmp(szToken, "tbSynchronise") == 0 || cmdcode == ccTbSynchronise)
00343 {
00344 strcpy(pCmd->name, szToken);
00345 pCmd->cc = (int) ccTbSynchronise;
00346 nReqArgs = 2;
00347 pCmd->nArg = 2;
00348 }
00349 else
00350 {
00351 strcpy(pCmd->name, "Undefined");
00352 pCmd->cc = (int) ccUndefined;
00353 fprintf(stderr, "%s: Command %s \n", __FUNCTION__, szToken);
00354 fprintf(stderr, "Error parsing (%s). Command undefined\n", szCommand);
00355 pCmd->nArg = -1;
00356 return -1;
00357 }
00358
00359 if (nReqArgs > 0)
00360 {
00361 erIpcGetArgs(pChar, pCmd, nReqArgs);
00362 }
00363 return 0;
00364 }
00365
00366
00367
00368 int tbReportIconClicked(erClientChannel_t channel, int signal, int iconID, int iconState)
00369 {
00370 erIpcCmd_t cmd;
00371
00372 strcpy(cmd.name, "tbIconClicked");
00373 cmd.cc = signal;
00374 cmd.nArg = 2;
00375 sprintf(cmd.arg[0], "%d", iconID);
00376 sprintf(cmd.arg[1], "%d", iconState);
00377
00378 return erIpcSndCommand(channel, &cmd);
00379 }
00380
00381
00382 int tbReportSynchronised(erClientChannel_t channel, int signal)
00383 {
00384 erIpcCmd_t cmd;
00385
00386 strcpy(cmd.name, "tbSynchronise");
00387 cmd.cc = signal;
00388 cmd.nArg = 0;
00389
00390 return erIpcSndCommand(channel, &cmd);
00391 }
00392