4 * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Kyeongchul Kim <kyeongchul.kim@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
32 #include "ITapiProductivity.h"
33 #include "TapiCommon.h"
34 #include "TapiEvent.h"
36 #define TEST_DEBUG(frmt, args...) \
37 {do { fprintf(stderr, "[SVC Test][%s:%04d] "frmt "\n", __func__,__LINE__, ##args); } while (FALSE); }
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
53 extern int EvtDeliveryHandle ;
63 static unsigned int * SVC_subscription_id;
67 //static int svc_async_event_callback (tapi_svcmode_event_t event ,void * data)
68 static int svc_async_event_callback(TelTapiEvent_t *event)
71 switch(event->EventType)
73 case TAPI_EVENT_SVCMODE_START_NOTI:
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);
82 case TAPI_EVENT_SVCMODE_END_NOTI:
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);
91 case TAPI_EVENT_SVCMODE_CHANGE_NOTI:
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);
100 case TAPI_EVENT_SVCMODE_SCREEN_CFG_NOTI:
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);
109 case TAPI_EVENT_SVCMODE_DISP_SCREEN_NOTI:
111 tapi_service_display_info_t display_screen;
112 int num_of_lines, line_count;
114 memcpy(&display_screen , event->pData , sizeof(tapi_service_display_info_t));
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);
122 TEST_DEBUG("===================================================");
123 while(num_of_lines > 0)
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);
130 TEST_DEBUG("===================================================");
135 case TAPI_EVENT_SVCMODE_DEVICE_TEST_NOTI:
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);
151 int svc_read_key_input(void)
156 static tapi_service_mode_t svc_mode = -1; // staic. (for svc mode end)
157 tapi_test_mode_sub_t test_sub = -1;
160 memset(buf,0, sizeof(buf));
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");
173 ret = read(0, buf, sizeof(buf));
181 else if (ret == 0) return ret;
184 if( memcmp(buf,"1",sizeof("1")-1) == 0 )
186 TEST_DEBUG("START SERVICE MODE (MAIN)");
188 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
189 test_sub = TAPI_TESTMODE_ENTER;
191 tel_start_svcmode(svc_mode, test_sub);
194 if( memcmp(buf,"2a",sizeof("2a")-1) == 0 )
196 TEST_DEBUG("PROCESS KEY CODE (END)");
198 tel_send_svcmode_keycode(SVC_TEST_KEY_END);
201 if( memcmp(buf,"2b",sizeof("2b")-1) == 0 )
203 TEST_DEBUG("PROCESS KEY CODE (SOFT RIGHT)");
205 tel_send_svcmode_keycode(SVC_TEST_KEY_SOFT_RIGHT);
208 if( memcmp(buf,"2c",sizeof("2c")-1) == 0 )
211 TEST_DEBUG("INPUT KEY NUMBER:");
213 tel_send_svcmode_keycode(iKey+SVC_TEST_KEY_VALUE_0);
217 if( memcmp(buf,"3",sizeof("3")-1) == 0 )
219 TEST_DEBUG("END SERVICE MODE");
221 tel_end_svcmode(svc_mode);
224 if( memcmp(buf,"4",sizeof("4")-1) == 0 )
226 TEST_DEBUG("START SERVICE MODE : MONITOR");
228 svc_mode = TAPI_SVC_MODE_MONITOR;
229 test_sub = TAPI_TESTMODE_ENTER;
231 tel_start_svcmode(svc_mode, test_sub);
235 if( memcmp(buf,"a",sizeof("a")-1) == 0 )
237 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
238 test_sub = TAPI_TESTMODE_SW_VERSION_ENTER;
240 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_SW_VERSION_ENTER");
242 tel_start_svcmode(svc_mode, test_sub);
245 if( memcmp(buf,"b",sizeof("b")-1) == 0 )
247 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
248 test_sub = TAPI_TESTMODE_FTA_SW_VERSION_ENTER;
250 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FTA_SW_VERSION_ENTER");
252 tel_start_svcmode(svc_mode, test_sub);
255 if( memcmp(buf,"c",sizeof("c")-1) == 0 )
257 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
258 test_sub = TAPI_TESTMODE_FTA_HW_VERSION_ENTER;
260 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FTA_HW_VERSION_ENTER");
262 tel_start_svcmode(svc_mode, test_sub);
265 if( memcmp(buf,"d",sizeof("d")-1) == 0 )
267 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
268 test_sub = TAPI_TESTMODE_ALL_VERSION_ENTER;
270 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_ALL_VERSION_ENTER");
272 tel_start_svcmode(svc_mode, test_sub);
275 if( memcmp(buf,"e",sizeof("e")-1) == 0 )
277 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
278 test_sub = TAPI_TESTMODE_BATTERY_INFO_ENTER;
280 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_BATTERY_INFO_ENTER");
282 tel_start_svcmode(svc_mode, test_sub);
285 if( memcmp(buf,"f",sizeof("f")-1) == 0 )
287 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
288 test_sub = TAPI_TESTMODE_CIPHERING_PROTECTION_ENTER;
290 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_CIPHERING_PROTECTION_ENTER");
292 tel_start_svcmode(svc_mode, test_sub);
295 if( memcmp(buf,"g",sizeof("g")-1) == 0 )
297 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
298 test_sub = TAPI_TESTMODE_INTEGRITY_PROTECTION_ENTER;
300 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_INTEGRITY_PROTECTION_ENTER");
302 tel_start_svcmode(svc_mode, test_sub);
305 if( memcmp(buf,"h",sizeof("h")-1) == 0 )
307 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
308 test_sub = TAPI_TESTMODE_IMEI_READ_ENTER;
310 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_IMEI_READ_ENTER");
312 tel_start_svcmode(svc_mode, test_sub);
315 if( memcmp(buf,"i",sizeof("i")-1) == 0 )
317 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
318 test_sub = TAPI_TESTMODE_BLUETOOTH_TEST_ENTER;
320 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_BLUETOOTH_TEST_ENTER");
322 tel_start_svcmode(svc_mode, test_sub);
325 if( memcmp(buf,"j",sizeof("j")-1) == 0 )
327 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
328 test_sub = TAPI_TESTMODE_VIBRATOR_TEST_ENTER;
330 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_VIBRATOR_TEST_ENTER");
332 tel_start_svcmode(svc_mode, test_sub);
335 if( memcmp(buf,"k",sizeof("k")-1) == 0 )
337 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
338 test_sub = TAPI_TESTMODE_MELODY_TEST_ENTER;
340 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_MELODY_TEST_ENTER");
342 tel_start_svcmode(svc_mode, test_sub);
345 if( memcmp(buf,"l",sizeof("l")-1) == 0 )
347 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
348 test_sub = TAPI_TESTMODE_MP3_TEST_ENTER;
350 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_MP3_TEST_ENTER");
352 tel_start_svcmode(svc_mode, test_sub);
355 if( memcmp(buf,"m",sizeof("m")-1) == 0 )
357 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
358 test_sub = TAPI_TESTMODE_FACTORY_RESET_ENTER;
360 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FACTORY_RESET_ENTER");
362 tel_start_svcmode(svc_mode, test_sub);
365 if( memcmp(buf,"n",sizeof("n")-1) == 0 )
367 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
368 test_sub = TAPI_TESTMODE_FACTORY_PRECONFIG_ENTER;
370 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FACTORY_PRECONFIG_ENTER");
372 tel_start_svcmode(svc_mode, test_sub);
375 if( memcmp(buf,"o",sizeof("o")-1) == 0 )
377 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
378 test_sub = TAPI_TESTMODE_TFS4_EXPLORE_ENTER;
380 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_TFS4_EXPLORE_ENTER");
382 tel_start_svcmode(svc_mode, test_sub);
384 if( memcmp(buf,"p",sizeof("p")-1) == 0 )
386 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
387 test_sub = TAPI_TESTMODE_RTC_TIME_DISPLAY_ENTER;
389 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_RTC_TIME_DISPLAY_ENTER");
391 tel_start_svcmode(svc_mode, test_sub);
394 if( memcmp(buf,"q",sizeof("q")-1) == 0 )
396 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
397 test_sub = TAPI_TESTMODE_RSC_FILE_VERSION_ENTER;
399 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_RSC_FILE_VERSION_ENTER");
401 tel_start_svcmode(svc_mode, test_sub);
404 if( memcmp(buf,"r",sizeof("r")-1) == 0 )
406 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
407 test_sub = TAPI_TESTMODE_USB_DRIVER_ENTER;
409 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_USB_DRIVER_ENTER");
411 tel_start_svcmode(svc_mode, test_sub);
414 if( memcmp(buf,"s",sizeof("s")-1) == 0 )
416 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
417 test_sub = TAPI_TESTMODE_USB_UART_DIAG_CONTROL_ENTER;
419 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_USB_UART_DIAG_CONTROL_ENTER");
421 tel_start_svcmode(svc_mode, test_sub);
424 if( memcmp(buf,"t",sizeof("t")-1) == 0 )
426 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
427 test_sub = TAPI_TESTMODE_RRC_VERSION_ENTER;
429 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_RRC_VERSION_ENTER");
431 tel_start_svcmode(svc_mode, test_sub);
433 if( memcmp(buf,"u",sizeof("u")-1) == 0 )
435 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
436 test_sub = TAPI_TESTMODE_GPSONE_SS_TEST_ENTER;
438 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_GPSONE_SS_TEST_ENTER");
440 tel_start_svcmode(svc_mode, test_sub);
442 if( memcmp(buf,"v",sizeof("v")-1) == 0 )
444 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
445 test_sub = TAPI_TESTMODE_BAND_SEL_ENTER;
447 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_BAND_SEL_ENTER");
449 tel_start_svcmode(svc_mode, test_sub);
451 if( memcmp(buf,"w",sizeof("w")-1) == 0 )
453 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
454 test_sub = TAPI_TESTMODE_GCF_TESTMODE_ENTER;
456 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_GCF_TESTMODE_ENTER");
458 tel_start_svcmode(svc_mode, test_sub);
460 if( memcmp(buf,"x",sizeof("x")-1) == 0 )
462 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
463 test_sub = TAPI_TESTMODE_GSM_FACTORY_AUDIO_LB_ENTER;
465 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_GSM_FACTORY_AUDIO_LB_ENTER");
467 tel_start_svcmode(svc_mode, test_sub);
469 if( memcmp(buf,"y",sizeof("y")-1) == 0 )
471 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
472 test_sub = TAPI_TESTMODE_FACTORY_VF_TEST_ENTER;
474 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_FACTORY_VF_TEST_ENTER");
476 tel_start_svcmode(svc_mode, test_sub);
478 if( memcmp(buf,"z",sizeof("z")-1) == 0 )
480 svc_mode = TAPI_SVC_MODE_TEST_MANUAL;
481 test_sub = TAPI_TESTMODE_TOTAL_CALL_TIME_INFO_ENTER;
483 TEST_DEBUG("START SERVICE MODE: TAPI_TESTMODE_TOTAL_CALL_TIME_INFO_ENTER");
485 tel_start_svcmode(svc_mode, test_sub);
488 if(strncmp(buf, "quit", 4) == 0)
490 TEST_DEBUG("Finished Testing this module, Going back to Main Menu\n");
498 void svc_select_loop(void)
508 ret = select(0 + 1, &readfds, NULL, NULL, NULL);
511 if (FD_ISSET(0, &readfds))
513 if(svc_read_key_input()<0)
520 int svc_test_subscribe_tapi_events(void)
524 int iNumOfSVCEvt = 0;
525 TapiResult_t api_err = TAPI_API_SUCCESS;
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,
537 }; // TODO: event updated
539 iNumOfSVCEvt = sizeof(SVCEvtList)/sizeof(int);
540 SVC_subscription_id = (unsigned int *)calloc(iNumOfSVCEvt, sizeof(unsigned int));
543 for( i=0 ; i< iNumOfSVCEvt; i++ )
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)
548 TEST_DEBUG("isn't subscribed. event id is %d, api_err is %d\n", SVCEvtList[i],api_err);