update for beta universally
[framework/telephony/libslp-tapi.git] / src / test_apps / tapi_cdma_data_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 #include <stdlib.h>
22 #include <pthread.h>
23 #include <signal.h>
24 #include <stdio.h>
25 #include <errno.h>
26 #include <string.h>
27 #include <unistd.h>
28 #include <assert.h>
29 #include <glib.h>
30
31 #include "TelUtility.h"
32 #include "TapiEvent.h"
33 #include "TapiCommon.h"
34 #include "ITapiData.h"
35
36
37
38 #ifndef false
39 #define false 0
40 #endif
41 #ifndef true
42 #define true  !0
43 #endif
44 #ifndef bool
45 #define bool  char
46 #endif
47
48 typedef struct
49 {
50         int group;
51         int type;
52         int len;
53         void *dst;
54 }data_t;
55
56 #define TEST_DEBUG(frmt, args...)       \
57 {do { fprintf(stderr, "[CDMA-DATA Test][%s:%04d] "frmt "\n", __func__, __LINE__, ##args); } while (FALSE) ;}
58
59
60 #define TAPI_EVENT_CLASS_DATA_MAX_NUM 2
61 #define NUM_OF_CDMA_DATA_EVENT                  39
62
63 // Global Variable
64 int error_code;
65 unsigned int cdma_data_subscription_id[NUM_OF_CDMA_DATA_EVENT] = {0, };
66
67 void PrintNaiIndexType(TelDataNAIIndex_t NaiIndex)
68 {
69         if(NaiIndex == TAPI_DATA_FACTORY_NAI)
70                 printf(" NAI type : FACTORY \n");
71         else if(NaiIndex == TAPI_DATA_CUSTOM_NAI)
72                 printf(" NAI type : Custom \n");
73         else
74                 printf(" NAI type : Unknown [%d]\n", NaiIndex);
75
76         return;
77 }
78
79 void PrintPinControlInfo(TelDataPinControlInfo_t *pDsPin)
80 {
81         printf(" Signal Type : ");
82         switch(pDsPin->signaltype)
83         {
84                 case TAPI_DATA_SIGNAL_DCD:
85                         printf("DCD \n");
86                         break;
87
88                 case TAPI_DATA_SIGNAL_DTR:
89                         printf("DTR \n");
90                         break;
91
92                 case TAPI_DATA_SIGNAL_DSR:
93                         printf("DSR \n");
94                         break;
95
96                 case TAPI_DATA_SIGNAL_RTS:
97                         printf("RTS \n");
98                         break;
99
100                 case TAPI_DATA_SIGNAL_CTS:
101                         printf("CTS \n");
102                         break;
103
104                 case TAPI_DATA_SIGNAL_RI:
105                         printf("RI \n");
106                         break;
107                 default:
108                         printf("Unknown \n");
109                         break;
110         }
111
112         printf(" Signal Status : ");
113         switch(pDsPin->signalstatus)
114         {
115                 case TAPI_DATA_SIGNAL_STATUS_OFF:
116                         printf("OFF \n");
117                         break;
118
119                 case TAPI_DATA_SIGNAL_STATUS_ON:
120                         printf("ON \n");
121                         break;
122
123                 default:
124                         printf("Unknown \n");
125                         break;
126         }
127
128         return;
129 }
130
131 void ComposeMobileIPNaiParametr(TelDataMipNaiParam_t *MipNaiParam)
132 {
133         MipNaiParam->naiIndex = TAPI_DATA_FACTORY_NAI;
134         MipNaiParam->paramMask =        TAPI_DATA_NAI_MIP_MASK_REVERSE_TUNNEL + TAPI_DATA_NAI_MIP_MASK_HOME_ADDRESS + \
135                                         TAPI_DATA_NAI_MIP_MASK_PRIMARY_HOME_AGENT_IP;
136
137         MipNaiParam->genericInfo.revTunPreference = 0x3;
138         MipNaiParam->genericInfo.homeAddress = 0xA5D5E3E9;
139         MipNaiParam->genericInfo.primaryHaAddress = 0x5A5D3E9E;
140
141         return;
142 }
143
144 void EvtCurrentNaiIndexGetCnfCB(void *pData)
145 {
146         TelDataNAIIndex_t *pNaiIndex;
147         pNaiIndex = (TelDataNAIIndex_t *)pData;
148
149         PrintNaiIndexType(*pNaiIndex);
150
151         return;
152 }
153
154 void EvtMipNaiGetCnfCB(void *pData)
155 {
156         TelDataMipNaiParam_t *pMipNaiParam;
157         int i = 0;
158         pMipNaiParam = (TelDataMipNaiParam_t *)pData;
159
160         PrintNaiIndexType(pMipNaiParam->naiIndex);
161
162         printf(" Mask Value = %x\n", pMipNaiParam->paramMask);
163
164         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_USER_NAI){
165                 printf(" : User NAI Value");
166                 for(i=0; i< pMipNaiParam->genericInfo.usrNaiLength; i++)
167                         printf("[0x%x] ", pMipNaiParam->genericInfo.usrNai[i]);
168                 printf("\n");
169         }
170
171         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_SPI_MN_HA)
172                 printf(" Mobile Node Home Agent Secure Parameter Index = [0x%x]\n", pMipNaiParam->genericInfo.mnHaSpi);
173
174         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_SPI_MN_AAA)
175                 printf(" Mobile Node AAA Secure Parameter Index = [0x%x]\n", pMipNaiParam->genericInfo.mnAaaSpi);
176
177         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_REVERSE_TUNNEL)
178                 printf(" Reverse Tunneling Preference = [0x%x]\n", pMipNaiParam->genericInfo.revTunPreference);
179
180         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_HOME_ADDRESS)
181                 printf(" Home Address = [0x%x]\n", pMipNaiParam->genericInfo.homeAddress);
182
183         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_PRIMARY_HOME_AGENT_IP)
184                 printf(" Primary Home Agent IP Address = [0x%x]\n", pMipNaiParam->genericInfo.primaryHaAddress);
185
186         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_SECONDARY_HOME_AGENT_IP)
187                 printf(" Secondary Home Agent IP Address = [0x%x]\n", pMipNaiParam->genericInfo.secondaryHaAddr);
188
189         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_MN_AAA_SS){
190                 printf(" Mobile Node to AAA Shared Secret\n");
191                 for(i=0; i< pMipNaiParam->ssInfo.mnHaSharedSecretLength; i++)
192                         printf("[0x%x] ", pMipNaiParam->ssInfo.mnHaSharedSecret[i]);
193                 printf("\n");
194         }
195
196         if(pMipNaiParam->paramMask & TAPI_DATA_NAI_MIP_MASK_MN_HA_SS){
197                 printf(" Mobile Node to Home Agent Shared Secret\n");
198                 for(i=0; i< pMipNaiParam->ssInfo.mnAaaSharedSecretLength; i++)
199                         printf("[0x%x] ", pMipNaiParam->ssInfo.mnAaaSharedSecret[i]);
200                 printf("\n");
201         }
202
203         return;
204 }
205
206 void EvtMipNaiChangedNotiCB(void *pData)
207 {
208         TelDataNaiChangedItem_t *pChangedItem;
209         pChangedItem = (TelDataNaiChangedItem_t *)pData;
210
211         if(*pChangedItem == TAPI_DATA_NAI_GENERIC_INFO_CHANGED)
212                 printf("[NAI Information]\n");
213         else if(*pChangedItem == TAPI_DATA_SHARED_SECRET_CHANGED)
214                 printf("[Shared Screte]\n");
215
216         return;
217 }
218
219 void EvtTe2StatusDisplay(void *pData)
220 {
221         TelDataTE2Status_t *pTe2Status;
222         pTe2Status= (TelDataTE2Status_t *)pData;
223
224         printf("Type[");
225         if(pTe2Status->type == TAPI_DATA_TE2_TYPE_UART)
226                 printf("UART]\t");
227         else if(pTe2Status->type == TAPI_DATA_TE2_TYPE_USB)
228                 printf("USB]\t");
229         else if(pTe2Status->type == TAPI_DATA_TE2_TYPE_BLUETOOTH)
230                 printf("Bluetooth]\t");
231         else
232                 printf("Unknown]\t");
233
234         printf("Status[");
235
236         if(pTe2Status->cable_status == TAPI_DATA_TE2_DETACHED)
237                 printf("Detached]\n");
238         else if(pTe2Status->cable_status == TAPI_DATA_TE2_ATTACHED)
239                 printf("Atached]\n");
240         else
241                 printf("Unknown]\n");
242
243         return;
244 }
245
246 void EvtBytesCountDisplay(void *pData)
247 {
248         TelDataPacketByteCounter_t *pByteCnt = NULL;
249         pByteCnt= (TelDataPacketByteCounter_t *)pData;
250
251         printf("Received Current Packet Bytes[%u]", pByteCnt->rx_curr_packet_bytes);
252         printf("Transmitted Current Packet Bytes[%u]", pByteCnt->tx_curr_packet_bytes);
253         printf("Received Total Packet Bytes[%llu]", pByteCnt->rx_total_packet_bytes);
254         printf("Transmitted Total Packet Bytes[%llu]", pByteCnt->tx_total_packet_bytes);
255
256         return;
257 }
258
259 void EvtIncomingCallTypeDisplay(void *pData)
260 {
261         TelDataCallType_t *pCallType = NULL;
262         pCallType= (TelDataCallType_t *)pData;
263
264         printf("Incoming Call Type :[");
265         switch(*pCallType){
266                 case TAPI_DATA_CALL_TYPE_DEFAULT:
267                         printf("Default]");
268                         break;
269                 case TAPI_DATA_CALL_TYPE_FAX_FOR_NEXT_CALL:
270                         printf("FAX For Next Call]");
271                         break;
272                 case TAPI_DATA_CALL_TYPE_FAX_FOR_ALL_CALLS:
273                         printf("FAX For All Calls]");
274                         break;
275                 case TAPI_DATA_CALL_TYPE_ASYNC_FOR_NEXT_CALL:
276                         printf("Async For Next Call]");
277                         break;
278                 case TAPI_DATA_CALL_TYPE_ASYNC_FOR_ALL_CALLS:
279                         printf("Async For All Call]");
280                         break;
281                 default:
282                         printf("Unknown Incoming Call Type\n");
283                         break;
284         }
285         return;
286 }
287
288 void EvtDataRateInfoDisplay(void*pData)
289 {
290         TelDataTE2DataRateInfo_t *pDataRate = NULL;
291         pDataRate= (TelDataTE2DataRateInfo_t *)pData;
292
293         printf("Transmitted Bytes[%u]", pDataRate->tx_bytes);
294         printf("Received Bytes[%u]", pDataRate->rx_bytes);
295         printf("Report Period [%d]", pDataRate->report_period);
296         printf("Channel Number [%d]", pDataRate->channel_num);
297         printf("Tx Number of Bar Level during the reporting period[%d]", pDataRate->tx_bar_level);
298         printf("Rx Number of Bar Level during the reporting period[%d]", pDataRate->rx_bar_level);
299
300         return;
301
302 }
303
304 void EvtBaudRateDisplay(void*pData)
305 {
306         TelDataBaudRate_t *pBaudRate = NULL;
307         pBaudRate= (TelDataBaudRate_t *)pData;
308
309         printf("Baud Rate :[");
310         switch(*pBaudRate){
311                 case TAPI_DATA_BAUDRATE_19200_BPS:
312                         printf("19200]");
313                         break;
314                 case TAPI_DATA_BAUDRATE_38400_BPS:
315                         printf("38400]");
316                         break;
317                 case TAPI_DATA_BAUDRATE_57600_BPS:
318                         printf("57600]");
319                         break;
320                 case TAPI_DATA_BAUDRATE_115200_BPS:
321                         printf("115200]");
322                         break;
323                 case TAPI_DATA_BAUDRATE_230400_BPS:
324                         printf("230400]");
325                         break;
326                 default:
327                         printf("Unknown Baud Rate\n");
328                         break;
329         }
330         return;
331 }
332
333 void EvtRoamGuardDisplay(void *pData)
334 {
335         TelDataRoamGuardMode_t *pMode = NULL;
336         pMode= (TelDataRoamGuardMode_t *)pData;
337
338         printf("Roam Guard Mode:[");
339         switch(*pMode){
340                 case TAPI_DATA_ROAM_GUARD_DEFAULT:
341                         printf("Default]");
342                         break;
343                 case TAPI_DATA_ROAM_GUARD_ALWAYS_ASK:
344                         printf("Always ASK]");
345                         break;
346                 case TAPI_DATA_ROAM_ROAM_GUARD_NEVER_ASK:
347                         printf("Never ASK]");
348                         break;
349                 case TAPI_DATA_ROAM_ROAM_GUARD_OFF:
350                         printf("OFF]");
351                         break;
352                 case TAPI_DATA_ROAM_ROAM_GUARD_ON:
353                         printf("ON]");
354                         break;
355                 default:
356                         printf("Unknown Roam Guard\n");
357                         break;
358         }
359         return;
360
361 }
362
363 void EvtModemNaiDisplay(void *pData)
364 {
365         TelDataModemNAIMode_t *pMode = NULL;
366         pMode= (TelDataModemNAIMode_t *)pData;
367
368         printf("Modem NAI Mode:[");
369         switch(*pMode){
370                 case TAPI_DATA_MODEM_NAI_OFF:
371                         printf("OFF]");
372                         break;
373                 case TAPI_DATA_MODEM_NAI_ON:
374                         printf("ON]");
375                         break;
376                 default:
377                         printf("Unknown Modem NAI Mode\n");
378                         break;
379         }
380         return;
381
382 }
383
384 void EvtModemBtModeDisplay(void *pData)
385 {
386         TelDataDSType_t *pType = NULL;
387         pType= (TelDataDSType_t *)pData;
388
389         printf("Data Service Type :");
390         switch(*pType){
391                 case TAPI_DATA_DS_TYPE_NORMAL:
392                         printf("DS TYPE : NORMAL");
393                         break;
394                 case TAPI_DATA_DS_TYPE_DUN:
395                         printf("DS TYPE : DUN");
396                         break;
397                 case TAPI_DATA_DS_TYPE_BTDUN:
398                         printf("DS TYPE : BTDUN");
399                         break;
400                 case TAPI_DATA_DS_TYPE_IS:
401                         printf("DS TYPE : IS");
402                         break;
403                 case TAPI_DATA_DS_TYPE_MMS:
404                         printf("DS TYPE : MMS");
405                         break;
406                 default:
407                         printf("Unknown DS Type\n");
408                         break;
409         }
410         return;
411 }
412
413 void EvtForceRevAModeDisplay(void *pData)
414 {
415         TelDataRevConfig_t *pMode = NULL;
416         pMode= (TelDataRevConfig_t *)pData;
417
418         printf("Forced RevA Mode :[");
419         switch(*pMode){
420                 case TAPI_DATA_REVA:
421                         printf("REV-A]");
422                         break;
423                 case TAPI_DATA_REV0:
424                         printf("REV-0]");
425                         break;
426                 default:
427                         printf("Unknown Forced Rev Mode\n");
428                         break;
429         }
430         return;
431 }
432
433 void EvtPacketDataCallConfigDisplay(void *pData)
434 {
435         TelDataPacketDataCallConfig_t *pPacketData = NULL;
436         TelDataPacketConfigType_t type;
437         TelDataPacketParam_t param;
438         pPacketData= (TelDataPacketDataCallConfig_t *)pData;
439
440         type = pPacketData->type;
441         memcpy(&param, &pPacketData->param, sizeof(TelDataPacketParam_t));
442
443         printf("Packet Data Call Type :");
444         switch(type){
445                 case TAPI_DATA_PACKET_DATA_TYPE_QNC:
446                         printf("QNC");
447                         break;
448                 case TAPI_DATA_PACKET_DATA_TYPE_MIP:
449                         printf("MIP");
450                         break;
451                 case TAPI_DATA_PACKET_DATA_TYPE_CALL_TYPE:
452                         printf("Call Type");
453                         break;
454                 case TAPI_DATA_PACKET_DATA_TYPE_PKT_ORIGIN_STRING:
455                         printf("ORG STRING");
456                         break;
457                 case TAPI_DATA_PACKET_DATA_TYPE_PAP_USER_ID:
458                         printf("USER ID");
459                         break;
460                 case TAPI_DATA_PACKET_DATA_TYPE_PAP_USER_PASSWORD:
461                         printf("USER PASSWORD");
462                         break;
463                 default:
464                         printf("\nUnknown Type\n");
465                         break;
466         }
467
468         return;
469 }
470
471 void  cdma_data_async_event_callback(TelTapiEvent_t* event)
472 {
473         printf("\n data_async_event_callback enter\n");
474
475         printf("Request ID : [0x%x]\n", event->RequestId);
476
477         printf("Status : [");
478         switch(event->Status)
479         {
480                 case TAPI_DATA_NO_ERR:
481                         printf("No Err]\n");
482                         break;
483
484                 case TAPI_DATA_PARAMETER_ERR:
485                         printf("Parameter Err]\n");
486                         break;
487
488                 case TAPI_DATA_OFFLINE_ERR:
489                         printf("Phone Off]\n");
490                         break;
491
492                 case TAPI_DATA_OTHER_ERR:
493                 default:
494                         printf("Unknown Err]\n");
495                         break;
496         }
497
498         printf("event->EventType : %d\n", event->EventType);
499         printf("event->EventType : %d\n", TAPI_EVENT_DATA_PACKET_DATA_CALL_CONFIGURATION_GET_CNF);
500
501         switch(event->EventType)
502         {
503                 case    TAPI_EVENT_DATA_MIP_NAI_GET_CNF:
504                         {
505                                 printf("Event Type:  [TAPI_EVENT_DATA_MIP_NAI_GET_CNF]\n");
506                                 if(event->Status ==TAPI_DATA_NO_ERR)
507                                         EvtMipNaiGetCnfCB(event->pData);
508                         }
509                         break;
510
511                 case    TAPI_EVENT_DATA_CURRENT_NAI_INDEX_GET_CNF:
512                         {
513                                 printf("Event Type:  [TAPI_EVENT_DATA_CURRENT_NAI_INDEX_GET_CNF]\n");
514                                 if(event->Status ==TAPI_DATA_NO_ERR)
515                                         EvtCurrentNaiIndexGetCnfCB(event->pData);
516                         }
517                         break;
518
519                 case    TAPI_EVENT_DATA_TE2_STATUS_GET_CNF:
520                         {
521                                 printf("Event Type:  [TAPI_EVENT_DATA_TE2_STATUS_GET_CNF]\n");
522                                 if(event->Status ==TAPI_DATA_NO_ERR)
523                                         EvtTe2StatusDisplay(event->pData);
524                         }
525                         break;
526
527                 case    TAPI_EVENT_DATA_TE2_STATUS_NOTI:
528                         {
529                                 printf("Event Type:  [TAPI_EVENT_DATA_TE2_STATUS_NOTI]\n");
530                                 EvtTe2StatusDisplay(event->pData);
531                         }
532                         break;
533
534                 case    TAPI_EVENT_DATA_BYTES_COUNTER_GET_CNF:
535                         {
536                                 printf("Event Type:  [TAPI_EVENT_DATA_BYTES_COUNTER_GET_CNF]\n");
537                                 if(event->Status ==TAPI_DATA_NO_ERR)
538                                         EvtBytesCountDisplay(event->pData);
539                         }
540                         break;
541
542                 case    TAPI_EVENT_DATA_DS_TE2_DATA_RATE_INFO_NOTI:
543                         {
544                                 printf("Event Type:  [TAPI_EVENT_DATA_DS_TE2_DATA_RATE_INFO_NOTI]\n");
545                                 EvtDataRateInfoDisplay(event->pData);
546                         }
547                         break;
548
549                 case    TAPI_EVENT_DATA_ROAM_GUARD_GET_CNF:
550                         {
551                                 printf("Event Type:  [TAPI_EVENT_DATA_ROAM_GUARD_GET_CNF]\n");
552                                 if(event->Status ==TAPI_DATA_NO_ERR)
553                                         EvtRoamGuardDisplay(event->pData);
554                         }
555                         break;
556                 case    TAPI_EVENT_DATA_MODEM_NAI_GET_CNF:
557                         {
558                                 printf("Event Type:  [TAPI_EVENT_DATA_MODEM_NAI_GET_CNF]\n");
559                                 if(event->Status ==TAPI_DATA_NO_ERR)
560                                         EvtModemNaiDisplay(event->pData);
561                         }
562                         break;
563
564                 case    TAPI_EVENT_DATA_EVDO_REV_CONFIG_GET_CNF:
565                         {
566                                 printf("Event Type:  [TAPI_EVENT_DATA_EVDO_REV_CONFIG_GET_CNF]\n");
567                                 if(event->Status ==TAPI_DATA_NO_ERR)
568                                         EvtForceRevAModeDisplay(event->pData);
569                         }
570                         break;
571                 case    TAPI_EVENT_DATA_DDTM_CONFIGURATION_GET_CNF:
572                         {
573                                 printf("Event Type:  [TAPI_EVENT_DATA_DDTM_CONFIGURATION_GET_CNF]\n");
574                         }
575                         break;
576                 case    TAPI_EVENT_DATA_MIP_NAI_SET_CNF:
577                         {
578                                 printf("Event Type:  [TAPI_EVENT_DATA_MIP_NAI_SET_CNF]\n");
579                         }
580                         break;
581                 case    TAPI_EVENT_DATA_BYTES_COUNTER_RESET_CNF:
582                         {
583                                 printf("Event Type:  [TAPI_EVENT_DATA_BYTES_COUNTER_RESET_CNF]\n");
584                         }
585                         break;
586
587                 case    TAPI_EVENT_DATA_HDR_SESSION_CLEAR_SET_CNF:
588                         {
589                                 printf("Event Type:  [TAPI_EVENT_DATA_HDR_SESSION_CLEAR_SET_CNF]\n");
590                         }
591                         break;
592                 case    TAPI_EVENT_DATA_ROAM_GUARD_SET_CNF:
593                         {
594                                 printf("Event Type:  [TAPI_EVENT_DATA_ROAM_GUARD_SET_CNF]\n");
595                         }
596                         break;
597
598                 case    TAPI_EVENT_DATA_EVDO_REV_CONFIG_SET_CNF:
599                         {
600                                 printf("Event Type:  [TAPI_EVENT_DATA_FORCE_REVA_MODE_SET_CNF]\n");
601                         }
602                         break;
603                 case    TAPI_EVENT_DATA_DDTM_CONFIGURATION_SET_CNF:
604                         {
605                                 printf("Event Type:  [TAPI_EVENT_DATA_DDTM_CONFIGURATION_SET_CNF]\n");
606                         }
607                         break;
608                 case    TAPI_EVENT_DATA_RESTORE_NAI_SET_CNF:
609                         {
610                                 printf("Event Type:  [TAPI_EVENT_DATA_RESTORE_NAI_SET_CNF]\n");
611                         }
612                         break;
613                 case TAPI_EVENT_DATA_PACKET_DATA_CALL_CONFIGURATION_GET_CNF:
614                         {
615                                 printf("Event Type: [TAPI_EVENT_DATA_PACKET_DATA_CALL_CONFIGURATION_GET_CNF]");
616                                 EvtPacketDataCallConfigDisplay(event->pData);
617                         }
618                         break;
619
620                 default:
621                         printf("Event Type: unknown event:[%d]\n", event->EventType);
622
623                         break;
624         }
625
626 }
627
628
629 int cdma_data_read_key_input(void)
630 {
631         int ret;
632         char buf[512] = {0, };
633         char msg[512];
634         TapiResult_t ret_val = TAPI_API_SUCCESS;
635         int RequestID;
636
637         memset(buf,0, sizeof(buf));
638         memset(msg,0,sizeof(msg));
639
640         printf("*************** CDMA DATA TEST MENU ******************\n");
641         printf("0.  DSPin Control \n");
642         printf("3.  Get Mobile IP NAI \n");
643         printf("4.  Set Mobile IP NAI \n");
644         printf("5.  Get Current NAI Index \n");
645         printf("6.  Get TE2 Status \n");
646         //printf("7.  Reset Data bytes counter \n");
647         //printf("8.  Get Data bytes counter \n");
648         //printf("9.  Get Incoming Call Type \n");
649         //printf("10. Set Incoming Call Type \n");
650         printf("11. Get Data Service Baud Rate\n");
651         printf("12. Set Data Service Baud Rate\n");
652         //printf("13. Set HDR Session Clear\n");
653         printf("14. Get Roam Guard Mode\n");
654         printf("15. Set Roam Guard Mode\n");
655         printf("16. Get Modem NAI\n");
656         printf("17. Set Modem NAI\n");
657         printf("18. Get DS Type\n");
658         printf("19. Set DS Type\n");
659         printf("20. Get EVDO Rev Config\n");
660         printf("21. Set EVDO Rev Config(Rev-A or Rev-0)\n");
661         printf("22. Get Singed In State Mode\n");
662         printf("23. Set Singed In State Mode\n");
663         printf("24. Set the NAI value to factory setting\n");
664         printf("25. Get Dedicated Data Transmission Mode\n");
665         printf("26. Set Dedicated Data Transmission Mode\n");
666         printf("27. Get DSWorking Mode\n");
667         printf("28. Set DSWorking Mode\n");
668         printf("\n  BONUS!! ^^;;\n");
669         printf("29. Get Packet Data Call Configuration\n");
670         printf("29. Set Packet Data Call Configuration\n");
671         printf("q. quit\n");
672
673         ret = read(0, buf, sizeof(buf));
674         if (ret < 0)
675         {
676                 if (errno == EINTR)
677                         perror("read(1)");
678                 return -1;
679         }
680         else if (ret == 0)
681                 return ret;
682
683
684         // Get Mobile IP NAI
685         if( memcmp(buf,"3",sizeof("3")-1) == 0 )
686         {
687                 TelDataNAIIndex_t MipNaiIdx = TAPI_DATA_FACTORY_NAI;
688                 unsigned short ParamMask = TAPI_DATA_NAI_MIP_MASK_REVERSE_TUNNEL + TAPI_DATA_NAI_MIP_MASK_HOME_ADDRESS + \
689                                            TAPI_DATA_NAI_MIP_MASK_PRIMARY_HOME_AGENT_IP;//TAPI_DATA_NAI_MIP_MASK_USER_NAI + TAPI_DATA_NAI_MIP_MASK_SPI_MN_HA + TAPI_DATA_NAI_MIP_MASK_SPI_MN_AAA;
690                 ret_val = tel_get_data_mobile_ipnai (&MipNaiIdx, &ParamMask, &RequestID);
691                 printf(" \n tel_get_data_mobile_ipnai Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
692         }
693
694         // Set Mobile IP NAI
695         if( memcmp(buf,"4",sizeof("4")-1) == 0 )
696         {
697                 TelDataMipNaiParam_t MipNaiParam;
698                 ComposeMobileIPNaiParametr(&MipNaiParam);
699                 ret_val = tel_set_data_mobile_ipnai (&MipNaiParam, &RequestID);
700                 printf(" \n tel_set_data_mobile_ipnai Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
701         }
702
703         // Get Current NAI Index
704         if( memcmp(buf,"5",sizeof("5")-1) == 0 )
705         {
706                 ret_val = tel_get_data_current_nai_index(&RequestID);
707                 printf(" \n tel_get_data_current_nai_index Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
708         }
709
710         // Get TE2 Status
711         if( memcmp(buf,"6",sizeof("6")-1) == 0 )
712         {
713                 ret_val = tel_get_data_te2_status(&RequestID);
714                 printf(" \n tel_get_data_te2_status Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
715         }
716
717         // Get Roam Guard Mode
718         if( memcmp(buf,"14",sizeof("14")-1) == 0 )
719         {
720                 ret_val = tel_get_data_roam_guard(&RequestID);
721                 printf(" \n tel_get_data_roam_guard Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
722         }
723
724         // Set Roam Guard Mode
725         if( memcmp(buf,"15",sizeof("15")-1) == 0 )
726         {
727                 TelDataRoamGuardMode_t RoamGuard = TAPI_DATA_ROAM_GUARD_DEFAULT;
728                 ret_val = tel_set_data_roam_guard(&RoamGuard, &RequestID);
729                 printf(" \n tel_set_data_roam_guard Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
730         }
731
732         // Get Modem NAI
733         if( memcmp(buf,"16",sizeof("16")-1) == 0 )
734         {
735                 ret_val = tel_get_data_nai(&RequestID);
736                 printf(" \n tel_get_data_nai Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
737         }
738
739         // Set Modem NAI
740         if( memcmp(buf,"17",sizeof("17")-1) == 0 )
741         {
742                 TelDataModemNAIMode_t ModemNai = TAPI_DATA_MODEM_NAI_OFF;
743                 ret_val = tel_set_data_nai(&ModemNai, &RequestID);
744                 printf(" \n tel_set_data_nai Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
745         }
746
747         // 20. Get EVDO Rev Config
748         if( memcmp(buf,"20",sizeof("20")-1) == 0 )
749         {
750                 ret_val = tel_get_data_evdo_rev_config(&RequestID);
751                 printf(" \n tel_get_data_evdo_rev_config Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
752         }
753
754         // Set EVDO Rev Config(Rev-A or Rev-0)
755         if( memcmp(buf,"21",sizeof("21")-1) == 0 )
756         {
757                 //TelDataRevConfig_t RevConfig = TAPI_DATA_REVA;
758                 //ret_val = TelTapiDataSetEVDORevConfig (&RevConfig, &RequestID);
759                 //printf(" \n TelTapiDataSetForceRevAMode Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
760         }
761
762         // Get Singed In State Mode
763         if( memcmp(buf,"22",sizeof("22")-1) == 0 )
764         {
765                 //ret_val = tel_get_data_signed_in_sate (&RequestID);
766                 printf(" \n tel_get_data_signed_in_sate Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
767         }
768
769         // Set Singed In State Mode
770         if( memcmp(buf,"23",sizeof("23")-1) == 0 )
771         {
772                 //TelDataSignStatus_t SignStatus = TAPI_DATA_PACKET_NAI_SIGNIN_OUT;
773                 //ret_val = tel_set_data_signed_in_sate (&SignStatus, &RequestID);
774                 //printf(" \n tel_set_data_signed_in_sate Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
775         }
776
777         // Set the NAI value to factory setting
778         if( memcmp(buf,"24",sizeof("24")-1) == 0 )
779         {
780                 ret_val = tel_restore_data_nai(&RequestID);
781                 printf(" \n tel_restore_data_nai Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
782         }
783
784         // Get Dedicated Data Transmission Mode
785         if( memcmp(buf,"25",sizeof("25")-1) == 0 )
786         {
787                 ret_val = tel_get_data_ddtm_config(&RequestID);
788                 printf(" \n tel_get_data_ddtm_cofig Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
789         }
790
791         // Set Dedicated Data Transmission Mode
792         if( memcmp(buf,"26",sizeof("26")-1) == 0 )
793         {
794                 TelDataDDTMStatus_t DDTMStatus= TAPI_DATA_DDTM_MODE_OFF;
795                 ret_val = tel_set_data_ddtm_config (&DDTMStatus, &RequestID);
796                 printf(" \n tel_set_data_ddtm_cofig Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
797         }
798
799         // Set DSWorking Mode
800         if( memcmp(buf,"28",sizeof("28")-1) == 0 )
801         {
802                 //TelDataDSWorkingMode_t DSWorkingMode = TAPI_DATA_DSWORKING_MODE_OFF;
803                 //ret_val = tel_set_data_ds_working_mode (&DSWorkingMode, &RequestID);
804                 //printf(" \n tel_set_data_ds_working_mode Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
805         }
806
807         // Get Packet Data Call Config
808         if( memcmp(buf,"29",sizeof("29")-1) == 0 )
809         {
810                 TelDataPacketConfigType_t Type;
811                 int num;
812
813                 printf("Select Config Type\n");
814                 printf("0. QNC\n");
815                 printf("1. Mobile IP\n");
816                 printf("2. Packet Data Call Type\n");
817                 printf("3. Packet Orig Str\n");
818                 printf("4. Pap User ID\n");
819                 printf("5. Pap Password\n");
820                 printf(">> ");
821                 scanf("%d", &num);
822
823                 Type = num;
824
825                 //ret_val = TelTapiDataGetPacketDataCallConfiguration(&Type, &RequestID);
826                 printf(" \n TelTapiDataGetPacketDataCallConfiguration Tapi return returnStatus value is [%x]  RequestID : [%d] \n ", ret_val, RequestID);
827         }
828
829         // Set Packet Data Call Config
830         if( memcmp(buf,"30",sizeof("28")-1) == 0 )
831         {
832                 printf("NOT YET\n");
833         }
834         // Exit
835         if( memcmp(buf,"q",sizeof("q")-1) == 0)
836         {
837                 return -1;
838         }
839
840         return 0;
841 }
842
843
844 void cdma_data_select_loop(void)
845 {
846         int ret;
847         fd_set readfds;
848
849         while (1)
850         {
851                 FD_ZERO(&readfds);
852                 FD_SET(0, &readfds);
853
854                 ret = select(0 + 1, &readfds, NULL, NULL, NULL);
855                 if (ret)
856                 {
857                         if (FD_ISSET(0, &readfds))
858                         {
859                                 if(cdma_data_read_key_input() < 0)
860                                         break;
861                         }
862                 }
863         }
864 }
865
866 void cdma_data_test_unsubscribe_tapi_event(void)
867 {
868         int i = 0;
869         TapiResult_t    api_err = TAPI_API_SUCCESS;
870
871         for(i=0;i<NUM_OF_CDMA_DATA_EVENT; i++){
872                 api_err = tel_deregister_event(cdma_data_subscription_id[i]);
873                 if(api_err != TAPI_API_SUCCESS){
874                         TEST_DEBUG("tel_deregister_event isn't unsubscribed. sub id is %d api_err is %d\n",cdma_data_subscription_id[i],api_err);
875                         break;
876                 }
877
878         }
879
880         tel_deinit();
881 }
882
883 void cdma_data_test_subscribe_tapi_events (void)
884 {
885         int i = 0;
886         TapiResult_t    api_err = TAPI_API_SUCCESS;
887
888         int CdmaDataEvt[NUM_OF_CDMA_DATA_EVENT] = {     TAPI_EVENT_DATA_MIP_NAI_GET_CNF,
889                 TAPI_EVENT_DATA_MIP_NAI_SET_CNF,
890                 TAPI_EVENT_DATA_CURRENT_NAI_INDEX_GET_CNF,
891                 TAPI_EVENT_DATA_TE2_STATUS_GET_CNF,
892                 TAPI_EVENT_DATA_TE2_STATUS_NOTI,
893                 TAPI_EVENT_DATA_BYTES_COUNTER_RESET_CNF,
894                 TAPI_EVENT_DATA_BYTES_COUNTER_GET_CNF,
895                 TAPI_EVENT_DATA_DS_TE2_DATA_RATE_INFO_NOTI,
896                 TAPI_EVENT_DATA_HDR_SESSION_CLEAR_SET_CNF,
897                 TAPI_EVENT_DATA_ROAM_GUARD_GET_CNF,
898                 TAPI_EVENT_DATA_ROAM_GUARD_SET_CNF,
899                 TAPI_EVENT_DATA_MODEM_NAI_GET_CNF,
900                 TAPI_EVENT_DATA_EVDO_REV_CONFIG_GET_CNF,
901                 TAPI_EVENT_DATA_EVDO_REV_CONFIG_SET_CNF,
902                 TAPI_EVENT_DATA_RESTORE_NAI_SET_CNF,
903                 TAPI_EVENT_DATA_DDTM_CONFIGURATION_GET_CNF,
904                 TAPI_EVENT_DATA_DDTM_CONFIGURATION_SET_CNF,
905                 TAPI_EVENT_DATA_PACKET_DATA_CALL_CONFIGURATION_GET_CNF,
906
907         };
908
909         //TEST_DEBUG("########### CDMA DATA TEST #############\n");
910         if(tel_init() == TAPI_API_SUCCESS)
911         {
912                 for(i=0;i<NUM_OF_CDMA_DATA_EVENT; i++){
913                         api_err = tel_register_event(CdmaDataEvt[i], &cdma_data_subscription_id[i],(TelAppCallback)&cdma_data_async_event_callback, NULL);
914
915                         if(api_err != TAPI_API_SUCCESS){
916                                 TEST_DEBUG("tel_register_event isn't subscribed. sub id is %d api_err is %d\n",cdma_data_subscription_id[i],api_err);
917                                 break;
918                         }
919                 }
920         }
921         else {
922
923                 TEST_DEBUG("tel_init() failed");
924         }
925
926 }