Fix mbtk from v1265 GSW

Change-Id: I5d8d395616f284bc74c8b9448cfa347164b5a668
diff --git a/mbtk/test/libgsw_lib/gsw_ecall_test.c b/mbtk/test/libgsw_lib/gsw_ecall_test.c
new file mode 100755
index 0000000..682d9e2
--- /dev/null
+++ b/mbtk/test/libgsw_lib/gsw_ecall_test.c
@@ -0,0 +1,566 @@
+#include <stdlib.h>

+#include <stdio.h>

+#include <string.h>

+#include <stdint.h>

+#include <signal.h>

+#include <pthread.h>

+#include <stdbool.h>

+#include <dlfcn.h>

+

+

+static void *ecall_handle = NULL;

+typedef struct

+{

+    int cmdIdx;

+    char *funcName;

+}st_api_test_case;

+

+#define GSW_EU_ECALL_MAX_MSD          140

+#define GSW_EU_ECALL_MAX_PHONE_NUMBER 82

+

+typedef enum

+{

+    GSW_EU_ECALL_TYPE_TEST      = 1,

+    GSW_EU_ECALL_TYPE_EMERGENCY = 2,

+    GSW_EU_ECALL_TYPE_RECONFIG  = 3,

+} gsw_eu_ecall_type_e;

+

+typedef struct

+{

+    uint32_t            msd_len;

+    uint8_t             msd[GSW_EU_ECALL_MAX_MSD];

+    gsw_eu_ecall_type_e type;

+    int32_t             auto_trigger;

+    char        ecall_number[GSW_EU_ECALL_MAX_PHONE_NUMBER];

+} gsw_eu_ecall_info_t;

+

+

+

+typedef enum {

+    GSW_EU_ECALL_STATE_NONE                 = -1,

+    GSW_EU_ECALL_STATE_INACTIVE             =  0,

+    GSW_EU_ECALL_STATE_ORIGINATING_CALL     =  1,

+    GSW_EU_ECALL_STATE_IN_CALL_TRANSMITTING =  2,

+    GSW_EU_ECALL_STATE_WAITING_FOR_AL_ACK   =  3,

+    GSW_EU_ECALL_STATE_IN_CALL              =  4,

+    GSW_EU_ECALL_STATE_IDLE_ALLOW_MT_ECALL  =  5,

+} gsw_eu_ecall_state_e;

+

+typedef enum {

+    GSW_EU_ECALL_MODE_NORMAL  = 0,

+    GSW_EU_ECALL_MODE_ONLY    = 1,

+    GSW_EU_ECALL_MODE_DEFAULT = 2,

+} gsw_eu_ecall_mode_e;

+

+

+typedef struct

+{

+    uint8_t  enable;

+    uint8_t  voice_mute;

+    gsw_eu_ecall_mode_e mode;

+    uint8_t  report_event;

+    uint16_t start_timer;

+    uint16_t hack_timer;

+    uint16_t trans_timer;

+    uint8_t  fail_redial;

+    uint8_t  drop_redial;

+    uint16_t cleardown_timer;

+    uint16_t init_timer;

+    uint16_t nad_reg_timer;

+    uint16_t nad_dereg_timer;

+    uint8_t  standard;

+    uint16_t era_glonass_redial;

+    uint16_t auto_answer; //auto_answer

+} gsw_eu_ecall_config_t;

+

+typedef enum {

+    GSW_EU_ECALL_CONFIG_ENABLE             = (1 << 0),

+    GSW_EU_ECALL_CONFIG_VOICE_MUTE         = (1 << 1),

+    GSW_EU_ECALL_CONFIG_MODE               = (1 << 2),

+    GSW_EU_ECALL_CONFIG_REPORT_EVENT       = (1 << 3),

+    GSW_EU_ECALL_CONFIG_START_TIMER        = (1 << 4),

+    GSW_EU_ECALL_CONFIG_HACK_TIMER         = (1 << 5),

+    GSW_EU_ECALL_CONFIG_TRANS_TIMER        = (1 << 6),

+    GSW_EU_ECALL_CONFIG_FAIL_REDIAL        = (1 << 7),

+    GSW_EU_ECALL_CONFIG_DROP_REDIAL        = (1 << 8),

+    GSW_EU_ECALL_CONFIG_CLEARDOWN_TIMER    = (1 << 9),

+    GSW_EU_ECALL_CONFIG_INIT_TIMER         = (1 << 10),

+    GSW_EU_ECALL_CONFIG_NAD_REG_TIMER      = (1 << 11),

+    GSW_EU_ECALL_CONFIG_NAD_DEREG_TIMER    = (1 << 12),

+    GSW_EU_ECALL_CONFIG_STANDARD           = (1 << 13),

+    GSW_EU_ECALL_CONFIG_ERA_GLONASS_REDIAL = (1 << 14),

+    GSW_EU_ECALL_CONFIG_AUTO_ANSWER        = (1 << 15),

+} gsw_eu_ecall_config_e;

+

+typedef enum {

+    GSW_EU_ECALL_EVENT_FAIL_NONE                        = 0,

+    GSW_EU_ECALL_EVENT_FAIL_TIMEOUT                     = 1,

+    GSW_EU_ECALL_EVENT_FAIL_HACK_TIMEOUT                = 2,

+    GSW_EU_ECALL_EVENT_FAIL_MSD_TRANS_TIMEOUT           = 3,

+    GSW_EU_ECALL_EVENT_FAIL_IVS_RESET_TIMEOUT           = 4,

+    GSW_EU_ECALL_EVENT_FAIL_CLEAR_DOWN_FALLBACK_TIMEOUT = 5,

+    GSW_EU_ECALL_EVENT_FAIL_IVS_INITIATION_TIMEOUT      = 6,

+} gsw_eu_ecall_event_fail_e;

+

+typedef enum {

+    GSW_EU_ECALL_EVENT_PROCESS_IVS_NONE               = 0,

+    GSW_EU_ECALL_EVENT_PROCESS_IVS_START_RECEIVED_MSD = 1,

+    GSW_EU_ECALL_EVENT_PROCESS_IVS_NACK_RECEIVED      = 2,

+    GSW_EU_ECALL_EVENT_PROCESS_IVS_ACK_RECEIVED       = 3,

+    GSW_EU_ECALL_EVENT_PROCESS_IVS_TX_COMPLETED       = 4,

+    GSW_EU_ECALL_EVENT_PROCESS_IVS_HLACK_RECEIVED     = 5,

+} gsw_eu_ecall_event_process_e;

+

+typedef enum {

+    GSW_EU_ECALL_EVENT_MSDUPADTE_NONE                   = -1,

+    GSW_EU_ECALL_EVENT_MSDUPDATE_IVS_UPDATING_MSD       =  0,

+    GSW_EU_ECALL_EVENT_MSDUPDATE_PSAP_REQURE_UPDATE_MSD =  1,

+    GSW_EU_ECALL_EVENT_MSDUPDATE_IVS_UPDATE_MSD_TIMEOUT =  2,

+} gsw_eu_ecall_event_msdupdate_e;

+

+typedef enum {

+    GSW_EU_ECALL_EVENT_ESTABLISH_NONE     = -1,

+    GSW_EU_ECALL_EVENT_ESTABLISH_SUCCESS  =  0,

+    GSW_EU_ECALL_EVENT_ESTABLISH_FAIL     =  1,

+} gsw_eu_ecall_event_establish_e;

+

+typedef enum {

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_NONE                          = -1,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_START_RECV_SYN                =  0,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_T9_TIMEOUT                    =  1,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_T10_TIMEOUT                   =  2,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_IVS_ALACK_RECEIVED            =  3,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_IVS_LLACK_RECEIVED            =  4,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_STOPPED                       =  5,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_ANSWERING_INCOMING_PSAP_ECALL =  6,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_CLEARDOWN_RECEIVED            =  7,

+    GSW_EU_ECALL_EVENT_EXTEND_STATE_CALLBACK_TIMEOUT              =  8,

+    GSW_EU_ECALL_EVENT_IVS_NORMAL_CLEARING                        =  9,

+    GSW_EU_ECALL_EVENT_IVS_ABNORMAL_CLEARING                      =  10,

+} gsw_eu_ecall_event_extend_state_e;

+

+typedef struct

+{

+    uint8_t  ori_remainder_times;

+    uint16_t time;

+} gsw_eu_ecall_event_originate_fail_redial_t;

+

+typedef struct

+{

+    uint8_t  drop_remainder_times;

+    uint16_t time; /* The minimum time duration between the previous call attempt */

+} gsw_eu_ecall_event_drop_redial_t;

+

+

+typedef struct

+{

+    gsw_eu_ecall_event_fail_e                  fail;

+    gsw_eu_ecall_event_process_e               process;

+    gsw_eu_ecall_event_msdupdate_e             msdupdate;

+    gsw_eu_ecall_event_establish_e             establish;

+    uint16_t                                   hack_code;

+    gsw_eu_ecall_event_originate_fail_redial_t ori_redial;

+    gsw_eu_ecall_event_drop_redial_t           drop_redial;

+    gsw_eu_ecall_event_extend_state_e          extend_state;

+} gsw_eu_ecall_event_t;

+

+typedef void (*gsw_eu_ecall_event_cb_f)(gsw_eu_ecall_event_t *p_event);

+

+

+typedef enum {

+    GSW_EU_ECALL_MSD_TRANS_STATUS_NONE     = -1,

+    GSW_EU_ECALL_MSD_TRANS_STATUS_SUCCESS  =  0,

+    GSW_EU_ECALL_MSD_TRANS_STATUS_FAILURE  =  1,

+} gsw_eu_ecall_msd_trans_status_e;

+

+typedef void (*gsw_eu_ecall_status_cb_f)(uint32_t id, gsw_eu_ecall_msd_trans_status_e status);

+

+

+

+typedef int32_t (*gsw_eu_ecall_voice_init)(void);

+

+

+typedef int32_t (*gsw_eu_ecall_voice_deinit)(void);

+typedef int32_t (*gsw_eu_ecall_start)(gsw_eu_ecall_info_t *p_info);  

+typedef int32_t (*gsw_eu_ecall_hangup)(void);   

+typedef int32_t (*gsw_eu_ecall_updateMsd)(const uint8_t *msd, uint32_t msd_len);    

+typedef int32_t (*gsw_eu_ecall_pushMsd)(gsw_eu_ecall_state_e state);    

+typedef int32_t (*gsw_eu_ecall_getConfig)(gsw_eu_ecall_config_t *p_config);    

+typedef int32_t (*gsw_eu_ecall_setConfig)(int32_t item, gsw_eu_ecall_config_t *p_config);    

+typedef int32_t (*gsw_eu_ecall_setEventCB)(gsw_eu_ecall_event_cb_f cb);    

+typedef int32_t (*gsw_eu_ecall_setStatusCB)(gsw_eu_ecall_status_cb_f cb);

+

+st_api_test_case api_testcases[] = 

+{

+    {0,    "print_help"},

+    {1,    "gsw_eu_ecall_voice_init"},

+    {2,    "gsw_eu_ecall_voice_deinit"},

+    {3,    "gsw_eu_ecall_start"},

+    {4,    "gsw_eu_ecall_hangup"},

+    {5,    "gsw_eu_ecall_updateMsd"},

+    {6,    "gsw_eu_ecall_pushMsd"},

+    {7,    "gsw_eu_ecall_getConfig"},

+    {8,    "gsw_eu_ecall_setConfig"},

+    {9,    "gsw_eu_ecall_setEventCB"},

+    {10,   "gsw_eu_ecall_setStatusCB"},

+    {-1,   NULL}

+    

+};

+void sigint_handler(int sig)

+{

+    printf("sigint_handler\n");

+    dlclose(ecall_handle);

+    ecall_handle = NULL;

+

+    exit(0);

+}

+static void gsw_eu_ecall_status_cb(uint32_t id, gsw_eu_ecall_msd_trans_status_e status)

+{

+    printf("id is %u\n",id);

+    printf("status is %d\n",status);

+

+}

+

+

+static void gsw_eu_ecall_event_cb(gsw_eu_ecall_event_t *p_event)

+{

+    printf("p_event->fail: %ud\n",p_event->fail);

+    printf("p_event->process: %d\n",p_event->process);

+    printf("p_event->msdupdate:  %d\n",p_event->msdupdate);

+    printf("p_event->establish: %d\n",p_event->establish);

+    printf("p_event->hack_code: %d\n",p_event->hack_code);

+    printf("p_event->ori_redial.ori_remainder_times: %d\n",p_event->ori_redial.ori_remainder_times);

+    printf("p_event->ori_redial.time: %d\n",p_event->ori_redial.time);

+    printf("p_event->drop_redial.drop_remainder_times: %d\n",p_event->drop_redial.drop_remainder_times);

+    printf("p_event->drop_redial.time: %d\n",p_event->drop_redial.time);

+    printf("p_event->extend_state: %d\n",p_event->extend_state);

+

+}

+

+

+static void set_config(gsw_eu_ecall_config_t *p_config)

+{   

+ 

+    int ret = -1;   

+    p_config->enable = 0;

+    p_config->voice_mute = 0;

+    p_config->mode = 0;

+    p_config->report_event = 0;

+    p_config->start_timer = 0;

+    p_config->hack_timer = 0;

+    p_config->trans_timer = 0;

+    p_config->cleardown_timer = 0;

+    p_config->drop_redial = 0;

+    p_config->init_timer = 0;

+    p_config->nad_reg_timer = 0;

+    p_config->nad_dereg_timer = 0;

+    p_config->standard = 0;

+    p_config->era_glonass_redial = 0;

+    p_config->auto_answer = 0;

+    

+    printf("input p_config->fail_redial\n");

+    ret = scanf("%hhu", &p_config->fail_redial);

+    if(ret)

+    {

+        printf("input ret is %d\n",ret);

+    }

+    

+

+}

+

+static void print_get_config(gsw_eu_ecall_config_t p_config)

+{   

+    

+    printf("input p_config.enable: %d\n",p_config.enable);

+    printf("input p_config.voice_mute:%d\n",p_config.voice_mute);

+    printf("input p_config.mode:%d\n",p_config.mode);

+    printf("input p_config.report_event:%d\n",p_config.report_event);

+    printf("input p_config.start_timer:%d\n",p_config.start_timer);

+    printf("input p_config.hack_timer:%d\n",p_config.hack_timer);

+    printf("input p_config.trans_timer:%d\n",p_config.start_timer);

+    printf("input p_config.fail_redial:%d\n",p_config.fail_redial);

+    printf("input p_config.drop_redial:%d\n",p_config.drop_redial);

+    printf("input p_config.cleardown_timer:%d\n",p_config.cleardown_timer);

+    printf("input p_config.init_timer:%d\n",p_config.init_timer);

+    printf("input p_config.nad_reg_timer:%d\n",p_config.nad_reg_timer);

+    printf("input p_config.nad_dereg_timer:%d\n",p_config.nad_dereg_timer);

+    printf("input p_config.standard:%d\n",p_config.standard);

+    printf("input p_config.era_glonass_redial:%d\n",p_config.era_glonass_redial);

+    printf("input p_config.auto_answer:%d\n",p_config.auto_answer);

+    

+

+}

+void print_help(void)

+{

+    int i;

+

+    printf("Supported test cases:\n");

+    for(i = 0; ; i++)

+    {

+        if(api_testcases[i].cmdIdx == -1)

+        {

+            break;

+        }

+        printf("%d:\t%s\n", api_testcases[i].cmdIdx, api_testcases[i].funcName);

+    }

+}

+

+

+

+//static ecall_init_flag = 0;

+int main(int argc,char *argv[])

+{

+    gsw_eu_ecall_voice_init gsw_eu_ecall_voice_init_ptr = NULL;

+    gsw_eu_ecall_voice_deinit gsw_eu_ecall_voice_deinit_ptr = NULL;

+    gsw_eu_ecall_start gsw_eu_ecall_start_ptr = NULL;

+    gsw_eu_ecall_hangup gsw_eu_ecall_hangup_ptr = NULL;

+    gsw_eu_ecall_updateMsd gsw_eu_ecall_updateMsd_ptr = NULL;

+    gsw_eu_ecall_pushMsd gsw_eu_ecall_pushMsd_ptr = NULL;

+    gsw_eu_ecall_getConfig gsw_eu_ecall_getConfig_ptr = NULL;

+    gsw_eu_ecall_setConfig gsw_eu_ecall_setConfig_ptr = NULL;

+    gsw_eu_ecall_setEventCB gsw_eu_ecall_setEventCB_ptr = NULL;

+    gsw_eu_ecall_setStatusCB gsw_eu_ecall_setStatusCB_ptr = NULL;

+

+    void *ota_handle = dlopen("/lib/libgsw_lib.so", RTLD_NOW );

+    if(ota_handle == NULL)

+    {

+            printf("open lib failed\n");

+            return -1;

+    }

+

+

+    signal(SIGINT, sigint_handler);

+    

+    ecall_handle = dlopen("/lib/libgsw_lib.so", RTLD_NOW );

+    if(ecall_handle == NULL)

+    {

+            printf("open lib failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_voice_init_ptr = (gsw_eu_ecall_voice_init)dlsym(ecall_handle, "gsw_eu_ecall_voice_init");

+    if(gsw_eu_ecall_voice_init_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_voice_init failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_voice_deinit_ptr = (gsw_eu_ecall_voice_deinit)dlsym(ecall_handle, "gsw_eu_ecall_voice_deinit");

+    if(gsw_eu_ecall_voice_deinit_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_voice_deinit failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_start_ptr = (gsw_eu_ecall_start)dlsym(ecall_handle, "gsw_eu_ecall_start");

+    if(gsw_eu_ecall_start_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_start failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_hangup_ptr = (gsw_eu_ecall_hangup)dlsym(ecall_handle, "gsw_eu_ecall_hangup");

+    if(gsw_eu_ecall_hangup_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_hangup failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_updateMsd_ptr = (gsw_eu_ecall_updateMsd)dlsym(ecall_handle, "gsw_eu_ecall_updateMsd");

+    if(gsw_eu_ecall_updateMsd_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_updateMsd failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_pushMsd_ptr = (gsw_eu_ecall_pushMsd)dlsym(ecall_handle, "gsw_eu_ecall_pushMsd");

+    if(gsw_eu_ecall_pushMsd_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_pushMsd failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_getConfig_ptr = (gsw_eu_ecall_getConfig)dlsym(ecall_handle, "gsw_eu_ecall_getConfig");

+    if(gsw_eu_ecall_getConfig_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_getConfig failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_setConfig_ptr = (gsw_eu_ecall_setConfig)dlsym(ecall_handle, "gsw_eu_ecall_setConfig");

+    if(gsw_eu_ecall_setConfig_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_setConfig failed\n");

+            return -1;

+    }

+    gsw_eu_ecall_setEventCB_ptr = (gsw_eu_ecall_setEventCB)dlsym(ecall_handle, "gsw_eu_ecall_setEventCB");

+    if(gsw_eu_ecall_setEventCB_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_setEventCB failed\n");

+            return -1;

+    }   

+    gsw_eu_ecall_setStatusCB_ptr = (gsw_eu_ecall_setStatusCB)dlsym(ecall_handle, "gsw_eu_ecall_setStatusCB");

+    if(gsw_eu_ecall_setStatusCB_ptr == NULL)

+    {

+            printf("dlsym gsw_eu_ecall_setStatusCB failed\n");

+            return -1;

+    }   

+

+

+

+    printf("Enter ecall api test \n");

+    int opt = -1;

+    

+    while (1)

+    {

+        

+        print_help();

+        int ret = scanf("%d",&opt);

+        if (ret == 1)

+        {

+            printf("输入的整数是:%d\n", opt);

+        }

+        

+        switch(opt)

+        {

+            case 0 :

+            {

+                print_help();

+                break;

+            } 

+            case 1 :

+            {

+                int32_t ret = -1;

+                printf("enter gsw_eu_ecall_voice_init");

+                ret = gsw_eu_ecall_voice_init_ptr();

+                printf("gsw_eu_ecall_voice_init ret = %d\n", ret);

+                

+                

+                break;

+            }

+            case 2 :

+            {

+                int32_t ret = -1;

+                printf("enter gsw_eu_ecall_voice_deinit\n");

+                ret = gsw_eu_ecall_voice_deinit_ptr();

+                printf("gsw_eu_ecall_voice_deinit ret = %d\n", ret);

+                break;

+            }

+            case 3 :

+            {

+                printf("enter gsw_eu_ecall_start\n");

+                gsw_eu_ecall_info_t info;

+                memset(&info,0,sizeof(info));

+                

+                int type;

+                printf("Enter MSD data (hex values, space-separated): ");

+ 

+                ret = scanf("%140s",info.msd); 

+                if(ret)

+                {

+                    printf("input ret is %d\n",ret);

+                }

+                info.msd_len = (uint32_t)strlen((char*)info.msd);

+                

+                

+                printf("Enter eCall type (1: Test, 2: Emergency, 3: Reconfig):\n ");

+                ret = scanf("%d", &type);

+                 if(ret)

+                {

+                    printf("input ret is %d\n",ret);

+                }

+                info.type = (gsw_eu_ecall_type_e)type;

+                

+                printf("Enter auto trigger (0: No, 1: Yes): \n");

+                ret=scanf("%d", &info.auto_trigger);

+                if(ret)

+                {

+                    printf("input ret is %d\n",ret);

+                }

+

+                if(type == 1 || type == 3)

+                {

+                    // 输入 eCall 号码

+                    printf("Enter eCall number: \n");

+                    ret = scanf("%82s", info.ecall_number);

+                    if(ret)

+                    {

+                        printf("input ret is %d\n",ret);

+                    }

+                }

+                ret = gsw_eu_ecall_start_ptr(&info);

+                printf("gsw_eu_ecall_start ret = %d\n", ret);

+                break;

+            }

+            case 4 :

+            {

+                int32_t ret = -1;

+                printf("enter gsw_eu_ecall_hangup\n");

+                ret = gsw_eu_ecall_hangup_ptr();

+                printf("gsw_eu_ecall_hangup ret = %d\n", ret);

+                break;

+            }

+            case 5 :

+            {

+                uint8_t msd[100] = "235646023026565";

+                int32_t ret = -1;

+                printf("enter gsw_eu_ecall_updateMsd\n");

+                ret = gsw_eu_ecall_updateMsd_ptr(msd, 100);

+                printf("gsw_eu_ecall_updateMsd ret = %d\n", ret);

+                break;

+            }

+            case 6 :

+            {

+                printf("enter gsw_eu_ecall_pushMsd\n");

+                gsw_eu_ecall_state_e state = -1;

+                int32_t ret = -1;

+                ret = gsw_eu_ecall_pushMsd_ptr(state);

+                printf("gsw_eu_ecall_pushMsd ret = %d\n", ret);

+                break;

+            }

+            case 7 :

+            {

+                printf("enter gsw_eu_ecall_getConfig\n");   

+                gsw_eu_ecall_config_t config;

+                int32_t ret = -1;

+                memset(&config,0,sizeof(config));

+                ret = gsw_eu_ecall_getConfig_ptr(&config);

+                printf("gsw_eu_ecall_getConfig ret = %d\n", ret);

+                print_get_config(config);

+                break;

+            }

+            case 8 :

+            {

+                printf("enter gsw_eu_ecall_setConfig\n");

+                gsw_eu_ecall_config_t config;

+                //config.ori_timeout = 10;

+                int32_t ret = -1;

+                int32_t item = 128;

+                printf("item value %d\n",item);

+                set_config(&config);

+                ret = gsw_eu_ecall_setConfig_ptr(item, &config);

+                printf("gsw_eu_ecall_setConfig ret = %d\n", ret);

+                break;

+            }

+            case 9 :

+            {

+                printf("enter gsw_eu_ecall_setEventCB\n");

+                //gsw_eu_ecall_event_cb_f cb = NULL;

+                int32_t ret = -1;

+                ret = gsw_eu_ecall_setEventCB_ptr(gsw_eu_ecall_event_cb);

+                printf("gsw_eu_ecall_setEventCB ret = %d\n", ret);

+                break;      

+            }

+            case 10 :

+            {

+                printf("""enter gsw_eu_ecall_setStatusCB\n");

+                int32_t ret = -1;

+                ret = gsw_eu_ecall_setStatusCB_ptr(gsw_eu_ecall_status_cb);   

+                printf("gsw_eu_ecall_setStatusCB ret = %d\n", ret);     

+                break;

+

+            }        

+            default:

+            {

+                printf("default");

+                print_help();

+                break;

+            }

+        }

+    }

+    

+    return 0;

+}

+