| b.liu | d440f9f | 2025-04-18 10:44:31 +0800 | [diff] [blame] | 1 | 
 | 
 | 2 | #include <stdio.h>
 | 
 | 3 | #include <string.h>
 | 
 | 4 | #include <stdlib.h>
 | 
 | 5 | #include <unistd.h>
 | 
 | 6 | #include <ctype.h>
 | 
 | 7 | #include <stdio.h>
 | 
 | 8 | #include <sys/time.h>
 | 
 | 9 | 
 | 
 | 10 | #include "ql_v2/ql_type.h"
 | 
 | 11 | #include "ql_dm.h"
 | 
 | 12 | 
 | 
 | 13 | 
 | 
 | 14 |  | 
 | 15 | #define T_ARRAY_SIZE(items) (sizeof(items)/sizeof(items[0]))
 | 
 | 16 | 
 | 
 | 17 | typedef void (*item_handler_f)(void); | 
 | 18 | typedef int (*init_handler_f)(void); | 
 | 19 | typedef int (*deinit_handler_f)(void); | 
 | 20 |  | 
 | 21 | 
 | 
 | 22 |  | 
 | 23 | typedef struct | 
 | 24 | { | 
 | 25 |     const char *name; | 
 | 26 |     item_handler_f handle; | 
 | 27 | } t_item_t; | 
 | 28 |  | 
 | 29 | typedef struct | 
 | 30 | { | 
 | 31 |     const char *name; | 
 | 32 |     int item_len; | 
 | 33 |     t_item_t *item_list; | 
 | 34 | } t_module_t; | 
 | 35 | 
 | 
 | 36 | typedef struct | 
 | 37 | { | 
 | 38 |     const char *name; | 
 | 39 |     init_handler_f init_handle; | 
 | 40 |     deinit_handler_f deinit_handle; | 
 | 41 | } t_init_t;
 | 
 | 42 | 
 | 
 | 43 | int t_get_int(int *val)
 | 
 | 44 | {
 | 
 | 45 |     int dat;
 | 
 | 46 |     char *ptr_end = NULL;
 | 
 | 47 |     char buf[256] = {0};
 | 
 | 48 | 
 | 
 | 49 |     if(NULL == fgets(buf, sizeof(buf)-1, stdin))
 | 
 | 50 |     {
 | 
 | 51 |         return -1;
 | 
 | 52 |     }
 | 
 | 53 | 
 | 
 | 54 |     if(0 == buf[0])
 | 
 | 55 |     {
 | 
 | 56 |         return -1;
 | 
 | 57 |     }
 | 
 | 58 | 
 | 
 | 59 |     if(buf[0] == '\n')
 | 
 | 60 |     {
 | 
 | 61 |         return 1;
 | 
 | 62 |     }
 | 
 | 63 | 
 | 
 | 64 |     dat = strtol(buf, &ptr_end, 10);
 | 
 | 65 |     if(ptr_end!=NULL && ptr_end[0]!='\n')
 | 
 | 66 |     {
 | 
 | 67 |         return -1;
 | 
 | 68 |     }
 | 
 | 69 | 
 | 
 | 70 |     if(val)
 | 
 | 71 |     {
 | 
 | 72 |         val[0] = dat;
 | 
 | 73 |     }
 | 
 | 74 | 
 | 
 | 75 |     return 0;
 | 
 | 76 | }
 | 
 | 77 | 
 | 
 | 78 | 
 | 
 | 79 | static int internal_dm_get_air_plane_mode(QL_DM_AIR_PLANE_MODE_TYPE_E mode, char* buf, int buf_len);
 | 
 | 80 | 
 | 
 | 81 | 
 | 
 | 82 | void dm_air_plane_mode_event_ind_cb(QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode)
 | 
 | 83 | {
 | 
 | 84 |     char mode_info[16] = {0};
 | 
 | 85 | 
 | 
 | 86 |     printf("Recv event indication : air plane mode changed event\n");
 | 
 | 87 | 
 | 
 | 88 |     if(internal_dm_get_air_plane_mode(air_plane_mode, mode_info, sizeof(mode_info)) == 0)
 | 
 | 89 |     {
 | 
 | 90 |         printf("unrecognized air plane mode:%d\n", air_plane_mode);
 | 
 | 91 |     }
 | 
 | 92 |     else
 | 
 | 93 |     {
 | 
 | 94 |         printf("current air plane mode is %s\n", mode_info);
 | 
 | 95 |     }
 | 
 | 96 | }
 | 
 | 97 | 
 | 
 | 98 | void dm_modem_state_change_ind_cb(int modem_state)
 | 
 | 99 | {
 | 
 | 100 |     printf("Recv event indication : modem status changed event\n");
 | 
 | 101 |     if(QL_DM_MODEM_STATE_ONLINE == modem_state)
 | 
 | 102 |     {
 | 
 | 103 |         printf("current modem status is ONLINE\n");
 | 
 | 104 |     }
 | 
 | 105 |     else if(QL_DM_MODEM_STATE_OFFLINE == modem_state)
 | 
 | 106 |     {
 | 
 | 107 |         printf("current modem status is OFFLINE\n");
 | 
 | 108 |     }
 | 
 | 109 |     else
 | 
 | 110 |     {
 | 
 | 111 |         printf("current modem status is UNKNOWN\n");
 | 
 | 112 |     }
 | 
 | 113 | }
 | 
 | 114 | 
 | 
 | 115 | void dm_service_error_cb(int error)
 | 
 | 116 | {
 | 
 | 117 |     printf("===== DM Service Abort =====\n");
 | 
 | 118 | }
 | 
 | 119 | 
 | 
 | 120 | void item_ql_dm_init(void)
 | 
 | 121 | {
 | 
 | 122 |     int ret = 0;
 | 
 | 123 | 
 | 
 | 124 |     printf("Start to ql_dm_init: ");
 | 
 | 125 |     ret = ql_dm_init();
 | 
 | 126 |     if(ret == QL_ERR_OK)
 | 
 | 127 |     {
 | 
 | 128 |         printf("dm init ok\n");
 | 
 | 129 |     }
 | 
 | 130 |     else
 | 
 | 131 |     {
 | 
 | 132 |         printf("failed, ret=%d\n", ret);
 | 
 | 133 |     }
 | 
 | 134 | }
 | 
 | 135 | 
 | 
 | 136 | void item_ql_dm_set_service_error_cb(void)
 | 
 | 137 | {
 | 
 | 138 |     int ret = 0;
 | 
 | 139 | 
 | 
 | 140 |     printf("Start to item_ql_dm_set_service_error_cb : ");
 | 
 | 141 |     ret = ql_dm_set_service_error_cb(dm_service_error_cb);
 | 
 | 142 |     if(ret != QL_ERR_OK)
 | 
 | 143 |     {
 | 
 | 144 |         printf("failed, ret=%d\n", ret);
 | 
 | 145 |     }
 | 
 | 146 |     else
 | 
 | 147 |     {
 | 
 | 148 |         printf("successful\n");
 | 
 | 149 |     }
 | 
 | 150 | }
 | 
 | 151 | 
 | 
 | 152 | void item_ql_dm_deinit(void)
 | 
 | 153 | {
 | 
 | 154 |     int ret = 0;
 | 
 | 155 | 
 | 
 | 156 |     printf("Start to ql_dm_deinit: ");
 | 
 | 157 |     ret = ql_dm_deinit();
 | 
 | 158 |     if(ret == QL_ERR_OK)
 | 
 | 159 |     {
 | 
 | 160 |         printf("dm deinit ok\n");
 | 
 | 161 |     }
 | 
 | 162 |     else
 | 
 | 163 |     {
 | 
 | 164 |         printf("failed, ret=%d\n", ret);
 | 
 | 165 |     }
 | 
 | 166 | }
 | 
 | 167 | 
 | 
 | 168 | void item_ql_dm_set_air_plane_mode_ind_cb(void)
 | 
 | 169 | {
 | 
 | 170 |     int ret = 0;
 | 
 | 171 |     int reg_flag = 0;
 | 
 | 172 | 
 | 
 | 173 |     printf("please input air plane mode reg option: (0: unreg, other: reg): ");
 | 
 | 174 |     ret = t_get_int(®_flag);
 | 
 | 175 |     if(ret != 0)
 | 
 | 176 |     {
 | 
 | 177 |         printf("Invalid input\n");
 | 
 | 178 |         return;
 | 
 | 179 |     }
 | 
 | 180 | 
 | 
 | 181 |     if(reg_flag)
 | 
 | 182 |     {
 | 
 | 183 |         ret = ql_dm_set_air_plane_mode_ind_cb(dm_air_plane_mode_event_ind_cb);
 | 
 | 184 |     }
 | 
 | 185 |     else
 | 
 | 186 |     {
 | 
 | 187 |         ret = ql_dm_set_air_plane_mode_ind_cb(NULL);
 | 
 | 188 |     }
 | 
 | 189 |     printf("ql_dm_set_air_plane_mode_ind_cb ret = %d\n", ret);
 | 
 | 190 | }
 | 
 | 191 | 
 | 
 | 192 | void item_ql_dm_get_software_version(void)
 | 
 | 193 | {
 | 
 | 194 |     int ret;
 | 
 | 195 |     char soft_ver[128] = {0};
 | 
 | 196 | 
 | 
 | 197 |     ret = ql_dm_get_software_version(soft_ver, sizeof(soft_ver));
 | 
 | 198 | 
 | 
 | 199 |     printf("ql_dm_get_software_version ret = %d, software version is %s\n", ret, soft_ver);
 | 
 | 200 | }
 | 
 | 201 | 
 | 
 | 202 | void item_ql_dm_set_modem_state_change_ind_cb(void)
 | 
 | 203 | {
 | 
 | 204 |     int ret = 0;
 | 
 | 205 |     int reg_flag = 0;
 | 
 | 206 | 
 | 
 | 207 |     printf("please input modem state reg option: (0: unreg, other: reg): ");
 | 
 | 208 |     ret = t_get_int(®_flag);
 | 
 | 209 |     if(ret != 0)
 | 
 | 210 |     {
 | 
 | 211 |         printf("Invalid input\n");
 | 
 | 212 |         return;
 | 
 | 213 |     }
 | 
 | 214 | 
 | 
 | 215 |     if(reg_flag)
 | 
 | 216 |     {
 | 
 | 217 |         ret = ql_dm_set_modem_state_change_ind_cb(dm_modem_state_change_ind_cb);
 | 
 | 218 |     }
 | 
 | 219 |     else
 | 
 | 220 |     {
 | 
 | 221 |         ret = ql_dm_set_modem_state_change_ind_cb(NULL);
 | 
 | 222 |     }
 | 
 | 223 |     printf("ql_dm_set_modem_state_change_ind_cb ret = %d\n", ret);
 | 
 | 224 | }
 | 
 | 225 | 
 | 
 | 226 | void item_ql_dm_get_device_serial_numbers(void)
 | 
 | 227 | {
 | 
 | 228 |     int ret;
 | 
 | 229 |     ql_dm_device_serial_numbers_info_t t_info;
 | 
 | 230 |     memset(&t_info, 0, sizeof(ql_dm_device_serial_numbers_info_t));
 | 
 | 231 | 
 | 
 | 232 |     ret = ql_dm_get_device_serial_numbers(&t_info);
 | 
 | 233 |     printf("ql_dm_get_device_serial_number ret = %d", ret);
 | 
 | 234 |     if(t_info.imei_valid)
 | 
 | 235 |     {
 | 
 | 236 |         printf(", imei is %s", t_info.imei);
 | 
 | 237 |     }
 | 
 | 238 |     if(t_info.imei2_valid)
 | 
 | 239 |     {
 | 
 | 240 |         printf(", imei2 is %s", t_info.imei2);
 | 
 | 241 |     }
 | 
 | 242 |     if(t_info.meid_valid)
 | 
 | 243 |     {
 | 
 | 244 |         printf(", meid is %s ", t_info.meid);
 | 
 | 245 |     }
 | 
 | 246 |     printf("\n");
 | 
 | 247 | }
 | 
 | 248 | 
 | 
 | 249 | void item_ql_dm_get_device_firmware_rev_id(void)
 | 
 | 250 | {
 | 
 | 251 |     int ret;
 | 
 | 252 |     char firmware_rev_id[QL_DM_FIRMWARE_REV_MAX_LEN + 1] = {0};
 | 
 | 253 | 
 | 
 | 254 |     ret = ql_dm_get_device_firmware_rev_id(firmware_rev_id, sizeof(firmware_rev_id));
 | 
 | 255 |     printf("ql_dm_get_device_firmware_rev_id ret = %d, device revision id is %s\n",
 | 
 | 256 |             ret, firmware_rev_id);
 | 
 | 257 | }
 | 
 | 258 | 
 | 
 | 259 | void item_ql_dm_get_air_plane_mode(void)
 | 
 | 260 | {
 | 
 | 261 |     int ret;
 | 
 | 262 |     char mode_info[16] = {0};
 | 
 | 263 |     QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode;
 | 
 | 264 | 
 | 
 | 265 |     ret = ql_dm_get_air_plane_mode(&air_plane_mode);
 | 
 | 266 | 
 | 
 | 267 |     printf("ql_dm_get_air_plane_mode ret = %d, ", ret);
 | 
 | 268 |     if(internal_dm_get_air_plane_mode(air_plane_mode, mode_info, sizeof(mode_info)) == 0)
 | 
 | 269 |     {
 | 
 | 270 |         printf("unrecognized air plane mode:%d\n", air_plane_mode);
 | 
 | 271 |     }
 | 
 | 272 |     else
 | 
 | 273 |     {
 | 
 | 274 |         printf("current air plane mode is %s\n", mode_info);
 | 
 | 275 |     }
 | 
 | 276 | }
 | 
 | 277 | 
 | 
 | 278 | void item_ql_dm_set_air_plane_mode(void)
 | 
 | 279 | {
 | 
 | 280 |     int ret;
 | 
 | 281 |     int mode;
 | 
 | 282 |     QL_DM_AIR_PLANE_MODE_TYPE_E air_plane_mode;
 | 
 | 283 | 
 | 
| l.yang | 860a8e7 | 2025-05-13 01:55:38 -0700 | [diff] [blame] | 284 |     printf("please input air plane mode(1: ON, 2: OFF): \n");
 | 
| b.liu | d440f9f | 2025-04-18 10:44:31 +0800 | [diff] [blame] | 285 |     ret = t_get_int(&mode);
 | 
 | 286 |     if(ret != 0)
 | 
 | 287 |     {
 | 
 | 288 |         printf("Invalid input\n");
 | 
 | 289 |         return;
 | 
 | 290 |     }
 | 
 | 291 |     air_plane_mode = mode;
 | 
 | 292 |     if(air_plane_mode != QL_DM_AIR_PLANE_MODE_ON && air_plane_mode != QL_DM_AIR_PLANE_MODE_OFF)
 | 
 | 293 |     {
 | 
 | 294 |         printf("please input 1 or 2\n");
 | 
 | 295 |         return;
 | 
 | 296 |     }
 | 
 | 297 | 
 | 
 | 298 |     ret = ql_dm_set_air_plane_mode(air_plane_mode);
 | 
 | 299 |     printf("ql_dm_set_air_plane_mode ret = %d\n", ret);
 | 
 | 300 | }
 | 
 | 301 | 
 | 
 | 302 | static int internal_dm_get_air_plane_mode(QL_DM_AIR_PLANE_MODE_TYPE_E mode, char* buf, int buf_len)
 | 
 | 303 | {
 | 
 | 304 |     int ret_val = 1;
 | 
 | 305 | 
 | 
 | 306 |     if(buf == NULL || buf_len < 2)
 | 
 | 307 |     {
 | 
 | 308 |         printf("param is valid\n");
 | 
 | 309 |         return 0;
 | 
 | 310 |     }
 | 
 | 311 | 
 | 
 | 312 |     memset(buf, 0, buf_len);
 | 
 | 313 | 
 | 
 | 314 |     switch(mode)
 | 
 | 315 |     {
 | 
 | 316 |         case QL_DM_AIR_PLANE_MODE_UNKNOWN:
 | 
 | 317 |             strncpy(buf, "UNKNOWN", buf_len - 1);
 | 
 | 318 |             buf[buf_len - 1] = '\0';
 | 
 | 319 |             break;
 | 
 | 320 |         case QL_DM_AIR_PLANE_MODE_ON:
 | 
 | 321 |             strncpy(buf, "ON", buf_len - 1);
 | 
 | 322 |             buf[buf_len - 1] = '\0';
 | 
 | 323 |             break;
 | 
 | 324 |         case QL_DM_AIR_PLANE_MODE_OFF:
 | 
 | 325 |             strncpy(buf, "OFF", buf_len - 1);
 | 
 | 326 |             buf[buf_len - 1] = '\0';
 | 
 | 327 |             break;
 | 
 | 328 |         case QL_DM_AIR_PLANE_MODE_NA:
 | 
 | 329 |             strncpy(buf, "UNAVAILABLE", buf_len - 1);
 | 
 | 330 |             buf[buf_len - 1] = '\0';
 | 
 | 331 |             break;
 | 
 | 332 |         default:
 | 
 | 333 |             ret_val = 0;
 | 
 | 334 |             break;
 | 
 | 335 |     }
 | 
 | 336 |     return ret_val;
 | 
 | 337 | }
 | 
 | 338 | 
 | 
 | 339 | 
 | 
| l.yang | 860a8e7 | 2025-05-13 01:55:38 -0700 | [diff] [blame] | 340 | void item_ql_dm_get_modem_state(void)
 | 
 | 341 | {
 | 
 | 342 |     int ret;
 | 
 | 343 |     QL_DM_MODEM_STATE_TYPE_E modem_state = QL_DM_MODEM_STATE_UNKNOWN;
 | 
 | 344 |     
 | 
 | 345 |     ret = ql_dm_get_modem_state(&modem_state);
 | 
 | 346 |     if(QL_DM_MODEM_STATE_ONLINE == modem_state)
 | 
 | 347 |     {
 | 
 | 348 |         printf("ql_dm_get_modem_state ret = %d, modem state is ONLINE\n", ret);
 | 
 | 349 |     }
 | 
 | 350 |     else if(QL_DM_MODEM_STATE_OFFLINE == modem_state)
 | 
 | 351 |     {
 | 
 | 352 |         printf("ql_dm_get_modem_state ret = %d, modem state is OFFLINE\n", ret);
 | 
 | 353 |     }
 | 
 | 354 |     else
 | 
 | 355 |     {
 | 
 | 356 |         printf("ql_dm_get_modem_state ret = %d, modem state UNKNOWN\n", ret);
 | 
 | 357 |     }
 | 
 | 358 | }
 | 
 | 359 | 
 | 
 | 360 | 
 | 
| b.liu | d440f9f | 2025-04-18 10:44:31 +0800 | [diff] [blame] | 361 | static t_item_t ql_dm_items[] =
 | 
 | 362 | {
 | 
 | 363 |     {"ql_dm_init", item_ql_dm_init},
 | 
 | 364 |     {"ql_dm_set_air_plane_mode_ind_cb", item_ql_dm_set_air_plane_mode_ind_cb},
 | 
 | 365 |     {"ql_dm_get_software_version", item_ql_dm_get_software_version},
 | 
 | 366 |     {"ql_dm_set_modem_state_change_ind_cb", item_ql_dm_set_modem_state_change_ind_cb},
 | 
 | 367 |     {"ql_dm_get_device_serial_numbers", item_ql_dm_get_device_serial_numbers},
 | 
 | 368 |     {"ql_dm_get_device_firmware_rev_id", item_ql_dm_get_device_firmware_rev_id},
 | 
 | 369 |     {"ql_dm_get_air_plane_mode", item_ql_dm_get_air_plane_mode},
 | 
 | 370 |     {"ql_dm_set_air_plane_mode", item_ql_dm_set_air_plane_mode},
 | 
| l.yang | 860a8e7 | 2025-05-13 01:55:38 -0700 | [diff] [blame] | 371 |     {"ql_dm_get_modem_state", item_ql_dm_get_modem_state},
 | 
| b.liu | d440f9f | 2025-04-18 10:44:31 +0800 | [diff] [blame] | 372 |     {"ql_dm_set_service_error_cb", item_ql_dm_set_service_error_cb},
 | 
 | 373 |     {"ql_dm_deinit",         item_ql_dm_deinit}
 | 
 | 374 | };
 | 
 | 375 | 
 | 
 | 376 | t_module_t ql_dm_module =
 | 
 | 377 | {
 | 
 | 378 |     "dm",
 | 
 | 379 |     T_ARRAY_SIZE(ql_dm_items),
 | 
 | 380 |     ql_dm_items
 | 
 | 381 | };
 | 
 | 382 | 
 | 
 | 383 | 
 | 
 | 384 | t_module_t *test_modules[] =
 | 
 | 385 | {
 | 
 | 386 |     &ql_dm_module,
 | 
 | 387 | 
 | 
 | 388 | };
 | 
 | 389 | 
 | 
 | 390 | void dump_modules(void)
 | 
 | 391 | {
 | 
 | 392 |     int i;
 | 
 | 393 | 
 | 
 | 394 |     printf("\n");
 | 
 | 395 |     for(i=0; i<T_ARRAY_SIZE(test_modules); i++)
 | 
 | 396 |     {
 | 
 | 397 |         printf("%d\t%s\n", i, test_modules[i]->name);
 | 
 | 398 |     }
 | 
 | 399 |     printf("-1\texit\n");
 | 
 | 400 | }
 | 
 | 401 | 
 | 
 | 402 | void dump_items(t_module_t *m)
 | 
 | 403 | {
 | 
 | 404 |     int i;
 | 
 | 405 | 
 | 
 | 406 |     printf("\n");
 | 
 | 407 |     printf("The current module is: \n");
 | 
 | 408 | 
 | 
 | 409 |     for(i=0; i<m->item_len; i++)
 | 
 | 410 |     {
 | 
 | 411 |         printf("%d\t%s\n", i, m->item_list[i].name);
 | 
 | 412 |     }
 | 
 | 413 |     printf("-1\texit\n");
 | 
 | 414 | }
 | 
 | 415 | 
 | 
 | 416 | void enter_modules(t_module_t *m)
 | 
 | 417 | {
 | 
 | 418 |     int ret;
 | 
 | 419 |     int idx;
 | 
 | 420 | 
 | 
 | 421 |     dump_items(m);
 | 
 | 422 | 
 | 
 | 423 |     while(1)
 | 
 | 424 |     {
 | 
 | 425 |         printf("Please enter your choice: ");
 | 
 | 426 |         ret = t_get_int(&idx);
 | 
 | 427 |         printf("\n");
 | 
 | 428 |         if(ret < 0)
 | 
 | 429 |         {
 | 
 | 430 |             printf("Invalid input\n");
 | 
 | 431 |             continue;
 | 
 | 432 |         }
 | 
 | 433 |         else if(ret == 1)
 | 
 | 434 |         {
 | 
 | 435 |             dump_items(m);
 | 
 | 436 |             continue;
 | 
 | 437 |         }
 | 
 | 438 | 
 | 
 | 439 |         if(idx == -1)
 | 
 | 440 |         {
 | 
 | 441 |             break;
 | 
 | 442 |         }
 | 
 | 443 | 
 | 
 | 444 |         if(idx<0 || idx>=m->item_len)
 | 
 | 445 |         {
 | 
 | 446 |             printf("Not support idx: %d\n", idx);
 | 
 | 447 |             continue;
 | 
 | 448 |         }
 | 
 | 449 | 
 | 
 | 450 |         printf("->Item : %s\n", m->item_list[idx].name);
 | 
 | 451 |         m->item_list[idx].handle();
 | 
 | 452 |     }
 | 
 | 453 | }
 | 
 | 454 | 
 | 
 | 455 |  static t_init_t init_func[] = {
 | 
 | 456 |      {"ql_dm_init",ql_dm_init,ql_dm_deinit},
 | 
 | 457 | 
 | 
 | 458 | 
 | 
 | 459 | };
 | 
 | 460 | 
 | 
 | 461 | 
 | 
 | 462 | void test_init(int retry)
 | 
 | 463 | {
 | 
 | 464 | 
 | 
 | 465 |     int i = 0,j = 0;
 | 
 | 466 |     for(i=0; i<T_ARRAY_SIZE(init_func); i++)
 | 
 | 467 |     {
 | 
 | 468 |         printf("Exec %s time = \n", init_func[i].name);
 | 
 | 469 |         //clock_t start,end;
 | 
 | 470 |         struct timeval start,end;
 | 
 | 471 | 
 | 
 | 472 |         double cost_time = 0;
 | 
 | 473 |         int ret = QL_ERR_OK;
 | 
 | 474 |         for(j = 0;j < retry; j++)
 | 
 | 475 |         {
 | 
 | 476 |             if(QL_ERR_OK == ret )
 | 
 | 477 |             {
 | 
 | 478 |                 //start = clock();
 | 
 | 479 |                 gettimeofday(&start, NULL);
 | 
 | 480 |             }
 | 
 | 481 | 
 | 
 | 482 |             ret = -1;
 | 
 | 483 |             ret = init_func[i].init_handle();
 | 
 | 484 |             if(QL_ERR_OK == ret)
 | 
 | 485 |             {
 | 
 | 486 |                 //end = clock();
 | 
 | 487 |                 gettimeofday(&end, NULL);
 | 
 | 488 |                 long timeuse = 1000000*(end.tv_sec - start.tv_sec) + end.tv_usec-start.tv_usec;
 | 
 | 489 |                 //printf("%6.0f ",(double)(end-start));
 | 
 | 490 |                 printf("%ld ",timeuse/1000);
 | 
 | 491 |                 //cost_time = cost_time > (end-start) ?cost_time:(end-start);
 | 
 | 492 |                 cost_time = cost_time > (timeuse/1000) ?cost_time:(timeuse/1000);
 | 
 | 493 | 
 | 
 | 494 |                 init_func[i].deinit_handle();
 | 
 | 495 |             }
 | 
 | 496 | 
 | 
 | 497 | 
 | 
 | 498 |         }
 | 
 | 499 |         printf("\n");
 | 
 | 500 |         printf("Finish test. %s  max cost time = %6.0f ms\n",init_func[i].name, cost_time);
 | 
 | 501 | 
 | 
 | 502 |     }
 | 
 | 503 | 
 | 
 | 504 | 
 | 
 | 505 | }
 | 
 | 506 | 
 | 
 | 507 | 
 | 
 | 508 | int main(int argc, char *argv[])
 | 
 | 509 | {
 | 
 | 510 |     int ret;
 | 
 | 511 |     int idx;
 | 
 | 512 | 
 | 
 | 513 |     if(argc > 1)
 | 
 | 514 |     {
 | 
 | 515 |       int c = -1;
 | 
 | 516 |       int retry = -1;
 | 
 | 517 | 
 | 
 | 518 |       while((c = getopt(argc, argv, "i:")) != -1)
 | 
 | 519 |       {
 | 
 | 520 |           if(-1 == c)
 | 
 | 521 |           {
 | 
 | 522 |               break;
 | 
 | 523 |           }
 | 
 | 524 | 
 | 
 | 525 |           switch(c)
 | 
 | 526 |           {
 | 
 | 527 |               case 'i':
 | 
 | 528 |                   retry = atoi(optarg);
 | 
 | 529 |                   test_init(retry);
 | 
 | 530 |                   return 0;
 | 
 | 531 | 
 | 
 | 532 |               default:
 | 
 | 533 |                   printf("usage: ql_sdk_api_test -i  <retry count> to test init func\n");
 | 
 | 534 |                   printf("       ql_sdk_api_test  to test sdk api\n");
 | 
 | 535 |                   return -1;
 | 
 | 536 |           }
 | 
 | 537 |       }
 | 
 | 538 |     }
 | 
 | 539 | 
 | 
 | 540 | 
 | 
 | 541 |     dump_modules();
 | 
 | 542 | 
 | 
 | 543 |     while(1)
 | 
 | 544 |     {
 | 
 | 545 |         printf("Please enter your choice: ");
 | 
 | 546 |         ret = t_get_int(&idx);
 | 
 | 547 |         printf("\n");
 | 
 | 548 |         if(ret < 0)
 | 
 | 549 |         {
 | 
 | 550 |             printf("Invalid input\n");
 | 
 | 551 |             continue;
 | 
 | 552 |         }
 | 
 | 553 |         else if(ret == 1)
 | 
 | 554 |         {
 | 
 | 555 |             dump_modules();
 | 
 | 556 |             continue;
 | 
 | 557 |         }
 | 
 | 558 | 
 | 
 | 559 |         if(idx == -1)
 | 
 | 560 |         {
 | 
 | 561 |             break;
 | 
 | 562 |         }
 | 
 | 563 | 
 | 
 | 564 |         if(idx<0 || idx>=T_ARRAY_SIZE(test_modules))
 | 
 | 565 |         {
 | 
 | 566 |             printf("Not support idx: %d\n", idx);
 | 
 | 567 |             continue;
 | 
 | 568 |         }
 | 
 | 569 | 
 | 
 | 570 |         enter_modules(test_modules[idx]);
 | 
 | 571 |     }
 | 
 | 572 | 
 | 
 | 573 |     return 0;
 | 
 | 574 | }
 | 
 | 575 | 
 |