update for beta universally
[framework/telephony/libslp-tapi.git] / src / test_apps / tapi_svc_test.c
1 /*
2  * libslp-tapi
3  *
4  * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Kyeongchul Kim <kyeongchul.kim@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20
21
22 #include <stdlib.h>
23 #include <signal.h>
24 #include <stdio.h>
25 #include <errno.h>
26 #include <pthread.h>
27 #include <assert.h>
28 #include <glib.h>
29 #include <unistd.h>
30 #include <string.h>
31
32 #include "ITapiProductivity.h"
33 #include "TapiCommon.h"
34 #include "TapiEvent.h"
35
36 #define TEST_DEBUG(frmt, args...) \
37 {do { fprintf(stderr, "[SVC Test][%s:%04d] "frmt "\n", __func__,__LINE__, ##args); } while (FALSE); }
38
39
40 #define SVC_TEST_KEY_END                                0x51
41 #define SVC_TEST_KEY_SOFT_RIGHT         0x5C
42 #define SVC_TEST_KEY_VALUE_0                    0x30
43 #define SVC_TEST_KEY_VALUE_1                    0x31
44 #define SVC_TEST_KEY_VALUE_2                    0x32
45 #define SVC_TEST_KEY_VALUE_3                    0x33
46 #define SVC_TEST_KEY_VALUE_4                    0x34
47 #define SVC_TEST_KEY_VALUE_5                    0x35
48 #define SVC_TEST_KEY_VALUE_6                    0x36
49 #define SVC_TEST_KEY_VALUE_7                    0x37
50 #define SVC_TEST_KEY_VALUE_8                    0x38
51 #define SVC_TEST_KEY_VALUE_9                    0x39
52
53 extern int EvtDeliveryHandle ;
54
55 typedef struct
56 {
57         int group;
58         int type;
59         int len;
60         void *dst;
61 }data_t;
62
63 static unsigned int *   SVC_subscription_id;
64
65 int error_code;
66
67 //static int  svc_async_event_callback  (tapi_svcmode_event_t event ,void * data)
68 static int  svc_async_event_callback(TelTapiEvent_t     *event)
69 {
70
71         switch(event->EventType)
72         {
73                 case TAPI_EVENT_SVCMODE_START_NOTI:
74                 {
75                         tapi_service_mode_t  svc_mode;
76                         memcpy(&svc_mode , event->pData , sizeof(tapi_service_mode_t));
77                         TEST_DEBUG("$$$$$$ TAPI_SVCMODE_EVENT_SVCMODE_START $$$$$$ ");
78                         TEST_DEBUG("svc_mode:[%d]", svc_mode);
79                 }
80                         break;
81
82                 case TAPI_EVENT_SVCMODE_END_NOTI:
83                 {
84                         tapi_service_mode_end_t reset_mode;
85                         memcpy(&reset_mode , event->pData , sizeof(tapi_service_mode_end_t));
86                         TEST_DEBUG("$$$$$$ TAPI_SVCMODE_EVENT_SVCMODE_END $$$$$$ ");
87                         TEST_DEBUG("svc_mode:[%d], reset:[%d]", reset_mode.service_mode, reset_mode.reset);
88                 }
89                         break;
90
91                 case TAPI_EVENT_SVCMODE_CHANGE_NOTI:
92                 {
93                         tapi_service_mode_t  svc_mode;
94                         memcpy(&svc_mode , event->pData , sizeof(tapi_service_mode_t));
95                         TEST_DEBUG("$$$$$$ TAPI_SVCMODE_EVENT_SVCMODE_CHANGE $$$$$$ ");
96                         TEST_DEBUG("svc_mode:[%d]", svc_mode);
97                 }
98                         break;
99
100                 case TAPI_EVENT_SVCMODE_SCREEN_CFG_NOTI:
101                 {
102                         tapi_screen_config_t screen_config;
103                         memcpy(&screen_config , event->pData , sizeof(tapi_screen_config_t));
104                         TEST_DEBUG("$$$$$$ TAPI_SVCMODE_EVENT_SVCMODE_SCREEN_CFG $$$$$$ ");
105                         TEST_DEBUG("line num:[%d], keypad:[%d]", screen_config.line_number, screen_config.keypad);
106                 }
107                         break;
108
109                 case TAPI_EVENT_SVCMODE_DISP_SCREEN_NOTI:
110                 {
111                         tapi_service_display_info_t display_screen;
112                         int num_of_lines, line_count;
113
114                         memcpy(&display_screen , event->pData , sizeof(tapi_service_display_info_t));
115
116                         num_of_lines = display_screen.num_of_lines;
117                         TEST_DEBUG("$$$$$$ TAPI_SVCMODE_EVENT_SVCMODE_DISP_SCREEN $$$$$$ ");
118                         TEST_DEBUG("num_of_lines :[%d]", display_screen.num_of_lines);
119
120                         line_count =0;
121
122                         TEST_DEBUG("===================================================");
123                         while(num_of_lines > 0)
124                         {
125                                 /* LINE COUNT - LINE NUMBER - LINE REVRES - DISPLAY STRING */
126                                 TEST_DEBUG("#[%d-%d-%d]:[%s]", line_count, display_screen.display[line_count].line, display_screen.display[line_count].reverse, display_screen.display[line_count].string);
127                                 num_of_lines--;
128                                 line_count++;
129                         }
130                         TEST_DEBUG("===================================================");
131
132                 }
133                         break;
134
135                 case    TAPI_EVENT_SVCMODE_DEVICE_TEST_NOTI:
136                 {
137                         tapi_device_info_t  device_info;
138                         memcpy(&device_info , event->pData , sizeof(tapi_device_info_t));
139                         TEST_DEBUG("$$$$$$ TAPI_SVCMODE_EVENT_SVCMODE_DEVICE_TEST $$$$$$ ");
140                         TEST_DEBUG("dev id:[%d], dev status:[%d]",device_info.device_id, device_info.device_status);
141                 }
142                         break;
143
144                 default:
145                    break;
146         }
147
148     return TRUE;
149 }
150
151 int svc_read_key_input(void)
152 {
153         int ret;
154         char buf[512];
155
156         static tapi_service_mode_t  svc_mode = -1; // staic. (for svc mode end)
157         tapi_test_mode_sub_t test_sub = -1;
158
159
160         memset(buf,0, sizeof(buf));
161
162         printf("\n########################################################\n");
163         printf("1. tel_start_svcmode (main)\n");
164         printf("2a. tel_send_svcmode_keycode (END)\n");
165         printf("2b. tel_send_svcmode_keycode (SOFT RIGHT)\n");
166         printf("2c. tel_send_svcmode_keycode (1~9)\n");
167         printf("3. tel_end_svcmode \n");
168         printf("4. tel_start_svcmode (monitor)\n");
169         printf("quit. QUIT\n");
170         printf("For escape : [2a] -> [3]\n");
171         printf("########################################################\n\n");
172
173         ret = read(0, buf, sizeof(buf));
174
175         if (ret < 0)
176         {
177                 if (errno == EINTR)
178                 perror("read(1)");
179                 return -1;
180         }
181         else if (ret == 0) return ret;
182
183
184         if( memcmp(buf,"1",sizeof("1")-1) == 0 )
185         {
186                 TEST_DEBUG("START SERVICE MODE (MAIN)");
187
188                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
189                 test_sub        =       TAPI_TESTMODE_ENTER;
190
191                 tel_start_svcmode(svc_mode, test_sub);
192         }
193
194         if( memcmp(buf,"2a",sizeof("2a")-1) == 0 )
195         {
196                 TEST_DEBUG("PROCESS KEY CODE (END)");
197
198                 tel_send_svcmode_keycode(SVC_TEST_KEY_END);
199         }
200
201         if( memcmp(buf,"2b",sizeof("2b")-1) == 0 )
202         {
203                 TEST_DEBUG("PROCESS KEY CODE (SOFT RIGHT)");
204
205                 tel_send_svcmode_keycode(SVC_TEST_KEY_SOFT_RIGHT);
206         }
207
208         if( memcmp(buf,"2c",sizeof("2c")-1) == 0 )
209         {
210                 int iKey = 0;
211                 TEST_DEBUG("INPUT KEY NUMBER:");
212                 scanf("%d", &iKey);
213                 tel_send_svcmode_keycode(iKey+SVC_TEST_KEY_VALUE_0);
214                 getchar();
215         }
216
217         if( memcmp(buf,"3",sizeof("3")-1) == 0 )
218         {
219                 TEST_DEBUG("END SERVICE MODE");
220
221                 tel_end_svcmode(svc_mode);
222         }
223
224         if( memcmp(buf,"4",sizeof("4")-1) == 0 )
225         {
226                 TEST_DEBUG("START SERVICE MODE : MONITOR");
227
228                 svc_mode        =       TAPI_SVC_MODE_MONITOR;
229                 test_sub        =       TAPI_TESTMODE_ENTER;
230
231                 tel_start_svcmode(svc_mode, test_sub);
232         }
233
234
235         if( memcmp(buf,"a",sizeof("a")-1) == 0 )
236         {
237                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
238                 test_sub        =       TAPI_TESTMODE_SW_VERSION_ENTER;
239
240                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_SW_VERSION_ENTER");
241
242                 tel_start_svcmode(svc_mode, test_sub);
243         }
244
245          if( memcmp(buf,"b",sizeof("b")-1) == 0 )
246          {
247                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
248                 test_sub        =       TAPI_TESTMODE_FTA_SW_VERSION_ENTER;
249
250                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FTA_SW_VERSION_ENTER");
251
252                 tel_start_svcmode(svc_mode, test_sub);
253          }
254
255          if( memcmp(buf,"c",sizeof("c")-1) == 0 )
256          {
257                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
258                 test_sub        =       TAPI_TESTMODE_FTA_HW_VERSION_ENTER;
259
260                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FTA_HW_VERSION_ENTER");
261
262                 tel_start_svcmode(svc_mode, test_sub);
263          }
264
265          if( memcmp(buf,"d",sizeof("d")-1) == 0 )
266          {
267                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
268                 test_sub        =       TAPI_TESTMODE_ALL_VERSION_ENTER;
269
270                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_ALL_VERSION_ENTER");
271
272                 tel_start_svcmode(svc_mode, test_sub);
273          }
274 #if 1
275          if( memcmp(buf,"e",sizeof("e")-1) == 0 )
276          {
277                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
278                 test_sub        =       TAPI_TESTMODE_BATTERY_INFO_ENTER;
279
280                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_BATTERY_INFO_ENTER");
281
282                 tel_start_svcmode(svc_mode, test_sub);
283          }
284
285          if( memcmp(buf,"f",sizeof("f")-1) == 0 )
286          {
287                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
288                 test_sub                =       TAPI_TESTMODE_CIPHERING_PROTECTION_ENTER;
289
290                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_CIPHERING_PROTECTION_ENTER");
291
292                 tel_start_svcmode(svc_mode, test_sub);
293          }
294
295          if( memcmp(buf,"g",sizeof("g")-1) == 0 )
296          {
297                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
298                 test_sub        =       TAPI_TESTMODE_INTEGRITY_PROTECTION_ENTER;
299
300                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_INTEGRITY_PROTECTION_ENTER");
301
302                 tel_start_svcmode(svc_mode, test_sub);
303          }
304
305          if( memcmp(buf,"h",sizeof("h")-1) == 0 )
306          {
307                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
308                 test_sub        =       TAPI_TESTMODE_IMEI_READ_ENTER;
309
310                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_IMEI_READ_ENTER");
311
312                 tel_start_svcmode(svc_mode, test_sub);
313          }
314
315          if( memcmp(buf,"i",sizeof("i")-1) == 0 )
316          {
317                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
318                 test_sub        =       TAPI_TESTMODE_BLUETOOTH_TEST_ENTER;
319
320                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_BLUETOOTH_TEST_ENTER");
321
322                 tel_start_svcmode(svc_mode, test_sub);
323          }
324
325          if( memcmp(buf,"j",sizeof("j")-1) == 0 )
326          {
327                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
328                 test_sub        =       TAPI_TESTMODE_VIBRATOR_TEST_ENTER;
329
330                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_VIBRATOR_TEST_ENTER");
331
332                 tel_start_svcmode(svc_mode, test_sub);
333          }
334
335          if( memcmp(buf,"k",sizeof("k")-1) == 0 )
336          {
337                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
338                 test_sub                =       TAPI_TESTMODE_MELODY_TEST_ENTER;
339
340                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_MELODY_TEST_ENTER");
341
342                 tel_start_svcmode(svc_mode, test_sub);
343          }
344
345          if( memcmp(buf,"l",sizeof("l")-1) == 0 )
346          {
347                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
348                 test_sub        =       TAPI_TESTMODE_MP3_TEST_ENTER;
349
350                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_MP3_TEST_ENTER");
351
352                 tel_start_svcmode(svc_mode, test_sub);
353          }
354
355          if( memcmp(buf,"m",sizeof("m")-1) == 0 )
356          {
357                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
358                 test_sub        =       TAPI_TESTMODE_FACTORY_RESET_ENTER;
359
360                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FACTORY_RESET_ENTER");
361
362                 tel_start_svcmode(svc_mode, test_sub);
363          }
364
365          if( memcmp(buf,"n",sizeof("n")-1) == 0 )
366          {
367                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
368                 test_sub        =       TAPI_TESTMODE_FACTORY_PRECONFIG_ENTER;
369
370                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FACTORY_PRECONFIG_ENTER");
371
372                 tel_start_svcmode(svc_mode, test_sub);
373          }
374
375          if( memcmp(buf,"o",sizeof("o")-1) == 0 )
376          {
377                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
378                 test_sub        =       TAPI_TESTMODE_TFS4_EXPLORE_ENTER;
379
380                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_TFS4_EXPLORE_ENTER");
381
382                 tel_start_svcmode(svc_mode, test_sub);
383          }
384          if( memcmp(buf,"p",sizeof("p")-1) == 0 )
385          {
386                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
387                 test_sub        =       TAPI_TESTMODE_RTC_TIME_DISPLAY_ENTER;
388
389                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_RTC_TIME_DISPLAY_ENTER");
390
391                 tel_start_svcmode(svc_mode, test_sub);
392          }
393
394          if( memcmp(buf,"q",sizeof("q")-1) == 0 )
395          {
396                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
397                 test_sub        =       TAPI_TESTMODE_RSC_FILE_VERSION_ENTER;
398
399                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_RSC_FILE_VERSION_ENTER");
400
401                 tel_start_svcmode(svc_mode, test_sub);
402         }
403
404          if( memcmp(buf,"r",sizeof("r")-1) == 0 )
405          {
406                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
407                 test_sub        =       TAPI_TESTMODE_USB_DRIVER_ENTER;
408
409                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_USB_DRIVER_ENTER");
410
411                 tel_start_svcmode(svc_mode, test_sub);
412          }
413
414          if( memcmp(buf,"s",sizeof("s")-1) == 0 )
415          {
416                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
417                 test_sub        =       TAPI_TESTMODE_USB_UART_DIAG_CONTROL_ENTER;
418
419                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_USB_UART_DIAG_CONTROL_ENTER");
420
421                 tel_start_svcmode(svc_mode, test_sub);
422          }
423
424          if( memcmp(buf,"t",sizeof("t")-1) == 0 )
425          {
426                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
427                 test_sub        =       TAPI_TESTMODE_RRC_VERSION_ENTER;
428
429                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_RRC_VERSION_ENTER");
430
431                 tel_start_svcmode(svc_mode, test_sub);
432          }
433          if( memcmp(buf,"u",sizeof("u")-1) == 0 )
434          {
435                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
436                 test_sub        =       TAPI_TESTMODE_GPSONE_SS_TEST_ENTER;
437
438                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_GPSONE_SS_TEST_ENTER");
439
440                 tel_start_svcmode(svc_mode, test_sub);
441          }
442          if( memcmp(buf,"v",sizeof("v")-1) == 0 )
443          {
444                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
445                 test_sub        =       TAPI_TESTMODE_BAND_SEL_ENTER;
446
447                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_BAND_SEL_ENTER");
448
449                 tel_start_svcmode(svc_mode, test_sub);
450          }
451          if( memcmp(buf,"w",sizeof("w")-1) == 0 )
452          {
453                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
454                 test_sub        =       TAPI_TESTMODE_GCF_TESTMODE_ENTER;
455
456                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_GCF_TESTMODE_ENTER");
457
458                 tel_start_svcmode(svc_mode, test_sub);
459          }
460          if( memcmp(buf,"x",sizeof("x")-1) == 0 )
461          {
462                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
463                 test_sub        =       TAPI_TESTMODE_GSM_FACTORY_AUDIO_LB_ENTER;
464
465                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_GSM_FACTORY_AUDIO_LB_ENTER");
466
467                 tel_start_svcmode(svc_mode, test_sub);
468          }
469          if( memcmp(buf,"y",sizeof("y")-1) == 0 )
470          {
471                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
472                 test_sub        =       TAPI_TESTMODE_FACTORY_VF_TEST_ENTER;
473
474                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FACTORY_VF_TEST_ENTER");
475
476                 tel_start_svcmode(svc_mode, test_sub);
477          }
478          if( memcmp(buf,"z",sizeof("z")-1) == 0 )
479          {
480                 svc_mode        =       TAPI_SVC_MODE_TEST_MANUAL;
481                 test_sub        =       TAPI_TESTMODE_TOTAL_CALL_TIME_INFO_ENTER;
482
483                 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_TOTAL_CALL_TIME_INFO_ENTER");
484
485                 tel_start_svcmode(svc_mode, test_sub);
486          }
487 #endif
488         if(strncmp(buf, "quit", 4) == 0)
489         {
490                 TEST_DEBUG("Finished Testing this module, Going back to Main Menu\n");
491                 return -1;
492         }
493
494     return 0;
495 }
496
497
498 void svc_select_loop(void)
499 {
500     int ret;
501     fd_set readfds;
502
503     while (1)
504         {
505                 FD_ZERO(&readfds);
506                 FD_SET(0, &readfds);
507
508                  ret = select(0 + 1, &readfds, NULL, NULL, NULL);
509                 if (ret)
510                  {
511                      if (FD_ISSET(0, &readfds))
512                          {
513                               if(svc_read_key_input()<0)
514                                         break;
515                         }
516                 }
517          }
518 }
519
520 int svc_test_subscribe_tapi_events(void)
521 {
522         int i = 0;
523         int ret_val = TRUE;
524         int iNumOfSVCEvt = 0;
525         TapiResult_t    api_err = TAPI_API_SUCCESS;
526
527
528         int SVCEvtList[] =
529         {
530         TAPI_EVENT_SVCMODE_START_NOTI,
531         TAPI_EVENT_SVCMODE_END_NOTI,
532         TAPI_EVENT_SVCMODE_CHANGE_NOTI,
533         TAPI_EVENT_SVCMODE_SCREEN_CFG_NOTI,
534         TAPI_EVENT_SVCMODE_DISP_SCREEN_NOTI,
535         TAPI_EVENT_SVCMODE_DEVICE_TEST_NOTI,
536
537         }; // TODO: event updated
538
539         iNumOfSVCEvt = sizeof(SVCEvtList)/sizeof(int);
540         SVC_subscription_id = (unsigned int *)calloc(iNumOfSVCEvt, sizeof(unsigned int));
541
542
543         for( i=0 ; i< iNumOfSVCEvt; i++ )
544         {
545                 api_err = tel_register_event(SVCEvtList[i], &SVC_subscription_id[i],(TelAppCallback)&svc_async_event_callback,NULL);
546                 if(api_err != TAPI_API_SUCCESS)
547                 {
548                         TEST_DEBUG("isn't subscribed. event id is %d, api_err is %d\n", SVCEvtList[i],api_err);
549                         ret_val = FALSE;
550                         break;
551                 }
552         }
553
554         return ret_val;
555 }