blob: e1238a6e8862a4b1beb77ac1823868a661ff5222 [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001#include <stdio.h>
2#include <stdlib.h>
3#include <errno.h>
4#include <dlfcn.h>
5
6#include "mbtk/mbtk_type.h"
7#include "mbtk/mbtk_device.h"
8#include "utlAtParser.h"
9#include "utlTrace.h"
10
11
12#include "mbtk_device_info.h"
13
14#define MBTK_LIB_PATH "/lib/libmbtk_lib.so"
15
16typedef int (*mbtk_dev_info_read_func)(mbtk_device_info_item_enum, void *, int);
17
18//extern TelAtParserID mbtkCurAtHandle;
19/*
20ATI
21Manufacturer:"LYNQ"
22Model:"LYNQ_L501"
23Revision:L501C_USBv02.04b07.01
24IMEI: 868070040313763
25
26OK
27*/
28extern mbtk_dev_info *dev_infos_ptr;
29
30static bool dev_info_inited = FALSE;
31static char revision_out[48] = {0};
32static char revision_in[64] = {0};
33static mbtk_dev_info_read_func dev_info_read = NULL;
34
35static int dev_info_get()
36{
37 if(dev_info_inited) {
38 return 0;
39 }
40 void *handle = dlopen(MBTK_LIB_PATH , RTLD_LAZY);
41 if(handle == NULL)
42 {
43 DBGMSG(MBTK_AT, "dlopen() %s fail : %d", MBTK_LIB_PATH, errno);
44 return -1;
45 }
46
47 dev_info_read = (mbtk_dev_info_read_func)dlsym(handle, "mbtk_dev_info_read");
48 if(dev_info_read == NULL)
49 {
50 DBGMSG(MBTK_AT, "dlsym(mbtk_dev_info_read) fail : %d", errno);
51 return -1;
52 }
53
54 mbtk_device_info_basic_t info_basic;
55 memset(&info_basic, 0, sizeof(mbtk_device_info_basic_t));
56
57 // mbtk_dev_info_read()
58 int result = dev_info_read(MBTK_DEVICE_INFO_ITEM_BASIC, &info_basic, sizeof(mbtk_device_info_basic_t));
59 if(result) {
60 DBGMSG(MBTK_AT, "mbtk_dev_info_read(BASIC) fail.");
61 return -1;
62 }
63
hong.liu7443a472025-06-18 17:18:32 +080064 if(info_basic.version == DEV_INFO_VERSION_V1) {
65 if(strlen(info_basic.basic.v1.revision_out) > 0) {
66 memcpy(revision_out, info_basic.basic.v1.revision_out, strlen(info_basic.basic.v1.revision_out));
67 }
68 if(strlen(info_basic.basic.v1.revision_in) > 0) {
69 memcpy(revision_in, info_basic.basic.v1.revision_in, strlen(info_basic.basic.v1.revision_in));
70 }
71 } else {
72 if(strlen(info_basic.basic.v2.revision_out) > 0) {
73 memcpy(revision_out, info_basic.basic.v2.revision_out, strlen(info_basic.basic.v2.revision_out));
74 }
75 if(strlen(info_basic.basic.v2.revision_in) > 0) {
76 memcpy(revision_in, info_basic.basic.v2.revision_in, strlen(info_basic.basic.v2.revision_in));
77 }
b.liud440f9f2025-04-18 10:44:31 +080078 }
79 dev_info_inited = TRUE;
80 return 0;
81}
82
83void mbtk_ati_str_get(char *ati_str, int len_max)
84{
85 //char *imei = "868070040313763";
86
87 if(dev_infos_ptr) {
88 DBGMSG(MBTK_AT, "IMEI : %s[len - %d]", dev_infos_ptr->imei, strlen(dev_infos_ptr->imei));
89 } else {
90 DBGMSG(MBTK_AT, "IMEI error.");
91 }
92
93 char *revision_ptr = NULL;
94 if (InProduction_Mode() && !dev_info_get() && strlen(revision_out) > 0) {
95 revision_ptr = revision_out;
96 } else {
97 revision_ptr = MBTK_DEVICES_REVISION;
98 }
99
100 if(dev_infos_ptr && strlen(dev_infos_ptr->imei) > 0) {
101 snprintf(ati_str, len_max,
102 "Manufacturer:\"%s\"\r\n"
103 "Model:\"%s\"\r\n"
104 "Revision:%s\r\n"
105 "IMEI:%s\r\n",
106 MBTK_DEVICES_MANUFACTURER, MBTK_DEVICES_MODEL,
107 revision_ptr,
108 dev_infos_ptr->imei);
109 } else {
110 snprintf(ati_str, len_max,
111 "Manufacturer:\"%s\"\r\n"
112 "Model:\"%s\"\r\n"
113 "Revision:%s\r\n"
114 "IMEI:\r\n",
115 MBTK_DEVICES_MANUFACTURER, MBTK_DEVICES_MODEL,
116 revision_ptr);
117 }
118}
119