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