af004ed18a549094e7fa763f3f476bbfd3e4e603
[platform/core/uifw/edje-multisense-plugin.git] / sound_haptic.c
1 #include <sys/stat.h>\r
2 #include <Edje_Multisense_Ui_Module.h>\r
3 #include <mmf/mm_sound.h>\r
4 #include <vconf.h>\r
5 #include <mmf/mm_sound_private.h>\r
6 #include <devman_haptic.h>\r
7 \r
8 int dev_handle = -1 ;\r
9 Eina_Bool aui_haptic_play(char* filename,int iteration)\r
10 {\r
11    int ret_val=0 ;\r
12    int mode=0;\r
13    if(dev_handle!=-1)device_haptic_close(dev_handle) ;\r
14    dev_handle= device_haptic_open(1,mode);\r
15    if(dev_handle < 0)return EINA_FALSE ;\r
16    ret_val = device_haptic_play_file(dev_handle,filename,iteration,3);\r
17    if(ret_val<0)\r
18      return EINA_FALSE ;\r
19    return EINA_TRUE ;\r
20 }       \r
21                                 \r
22 EAPI Eina_Bool ems_ui_sound_play(Edje_Sound_Info* sinfo, Edje_Sound_Data* sdata, unsigned int it)\r
23   {    \r
24      int volume_level = 0 ;\r
25      int sound_profile;\r
26      FILE *f ;\r
27      char buf[256] ;\r
28      struct stat st;      \r
29      /*Checking for silent profile */\r
30      if(vconf_get_int(VCONFKEY_SETAPPL_CUR_PROFILE_INT,&sound_profile ) ) ;\r
31      if( sound_profile==1 )return EINA_FALSE; \r
32      if( vconf_get_int(VCONFKEY_SETAPPL_PROFILE_NORMAL_CALL_VOLUME_INT,&volume_level)==-1)return EINA_FALSE ;\r
33      if( sinfo==NULL )return EINA_FALSE ;\r
34      snprintf(buf,sizeof(buf),"/tmp/%s",sinfo->name) ;\r
35      /* Sound File already present in the /tmp directory */\r
36      if (stat(buf,&st) == 0)\r
37        goto PLAY ;\r
38      f = fopen(buf,"wb") ;\r
39      if (f != NULL)\r
40        {  \r
41            if (fwrite(sdata->sound_data, sdata->sound_size, 1, f) != 1)\r
42              return EINA_FALSE ;\r
43            fclose(f);\r
44        }  \r
45      else \r
46        return EINA_FALSE ;\r
47     PLAY:\r
48        mm_sound_play_keysound(buf,volume_level)  ;\r
49      return EINA_TRUE ;\r
50    }\r
51 \r
52 int HexToDec(const char* strHex)\r
53 {       \r
54    int nFactor = 1;\r
55    int nRetVal = 0;\r
56    char* p;\r
57    for(p = (strHex + strlen(strHex)); p >= strHex; --p)\r
58      {\r
59         if( p[0] == ' ' || p[0] == 0) continue ;                \r
60         if(p[0] < 'A') nRetVal += nFactor * (p[0] - '0');\r
61         else if(p[0] < 'a') nRetVal += nFactor * (p[0] - 'A' + 10);                                                                                     \r
62         else nRetVal += nFactor * (p[0] - 'a' + 10);                                                                                            \r
63         nFactor *= 16;                  \r
64      }\r
65            \r
66    return nRetVal;\r
67 }\r
68 \r
69 EAPI Eina_Bool ems_ui_haptic_play(Edje_Haptic_Info *haptic, unsigned int iterations)\r
70    {\r
71         char *pattern =NULL ;\r
72         pattern=(char*)malloc(strlen(haptic->pattern)) ;\r
73         strcpy(pattern, haptic->pattern);\r
74         char *s =pattern ;\r
75         int a = 0;\r
76         char buf[256] ;\r
77         char test[3] ;\r
78         test[2]=0 ;\r
79         int i=0 ;\r
80 \r
81         int counter = 0;\r
82         char data ;\r
83         snprintf(buf,sizeof(buf),"/tmp/%s.ivt",haptic->name) ;\r
84         FILE *f=fopen(buf,"w") ;\r
85         \r
86          while (*s != '\0')\r
87         {\r
88            if (*s == ',')\r
89              counter++;\r
90            s++;\r
91         }\r
92         \r
93          while (a <= counter)\r
94               {\r
95                  test[0]= pattern[i] ;\r
96                  test[1]=pattern[i+1] ;\r
97                  i = i + 3 ;\r
98                  data=HexToDec(test) ;\r
99                  fputc(data,f) ;\r
100                  a++ ;\r
101               }\r
102              \r
103              fclose(f) ;\r
104              if(aui_haptic_play(buf,iterations)==EINA_TRUE) ;\r
105              return EINA_TRUE    ;\r
106    }\r