int system_info_init(void);
int system_info_get_system_info_initialized(void);
void system_info_set_system_info_initialized(int value);
-system_info_mode_type_e system_info_get_system_info_model_type();
+system_info_mode_type_e system_info_get_system_info_model_type(void);
int system_info_vconf_get_value_int(const char *vconf_key, int *value);
int system_info_vconf_get_value_bool(const char *vconf_key, bool *value);
int system_info_get_build_string(system_info_key_e key, system_info_data_type_e data_type, void **value);
int system_info_get_build_date(system_info_key_e key, system_info_data_type_e data_type, void **value);
int system_info_get_build_time(system_info_key_e key, system_info_data_type_e data_type, void **value);
+int system_info_get_mms_supported(system_info_key_e key, system_info_data_type_e data_type, void **value);
+int system_info_get_sms_supported(system_info_key_e key, system_info_data_type_e data_type, void **value);
+int system_info_get_cbs_supported(system_info_key_e key, system_info_data_type_e data_type, void **value);
+int system_info_get_nfc_reserved_push_supported(system_info_key_e key, system_info_data_type_e data_type, void **value);
+int system_info_get_value_from_xml(char *xml_file_path, char *model, char *id_field, char **value);
#ifdef __cplusplus
}
#endif
},
{
+ /**< Indicates whether the device supports MMS */
+ SYSTEM_INFO_KEY_MMS_SUPPORTED,
+ SYSTEM_INFO_DATA_TYPE_BOOL,
+ system_info_get_mms_supported
+},
+
+{
+ /**< Indicates whether the device supports SMS */
+ SYSTEM_INFO_KEY_SMS_SUPPORTED,
+ SYSTEM_INFO_DATA_TYPE_BOOL,
+ system_info_get_sms_supported
+},
+
+{
+ /**< Indicates whether the device supports CBS */
+ SYSTEM_INFO_KEY_CBS_SUPPORTED,
+ SYSTEM_INFO_DATA_TYPE_BOOL,
+ system_info_get_cbs_supported
+},
+
+{
+ /**< Indicates whether the device supports nfc-reserved push */
+ SYSTEM_INFO_KEY_NFC_RESERVED_PUSH_SUPPORTED,
+ SYSTEM_INFO_DATA_TYPE_BOOL,
+ system_info_get_nfc_reserved_push_supported
+},
+
+
+{
SYSTEM_INFO_MAX, -1, NULL
}
static system_info_mode_type_e system_info_system_info_model_type;
static int system_info_initialized;
-int system_info_get_system_info_initialized()
+int system_info_get_system_info_initialized(void)
{
return system_info_initialized;
}
system_info_initialized = value;
}
-system_info_mode_type_e system_info_get_system_info_model_type()
+system_info_mode_type_e system_info_get_system_info_model_type(void)
{
return system_info_system_info_model_type;
}
#define CAM_VIDEO_PRI_FILE_PATH "/usr/etc/mmfw_camcorder_dev_video_pri.ini"
#define CAM_VIDEO_SEC_FILE_PATH "/usr/etc/mmfw_camcorder_dev_video_sec.ini"
+#define NFC_INFO_FILE_PATH "/etc/config/nfc/sysinfo-nfc-ug.xml"
+
static char *FRONT_CAM_PATH;
static char *BACK_CAM_PATH;
xmlFreeDoc(doc);
return SYSTEM_INFO_ERROR_NONE;
}
+
+int system_info_get_nfc_reserved_push_supported(system_info_key_e key, system_info_data_type_e data_type, void **value)
+{
+ bool *supported;
+ char *string = NULL;
+ char *model = "default";
+
+ supported = (bool *)value;
+
+ if (access(NFC_INFO_FILE_PATH, R_OK)) {
+ *supported = false;
+ return SYSTEM_INFO_ERROR_NONE;
+ }
+
+ if (system_info_get_value_from_xml(NFC_INFO_FILE_PATH, model, "reserved-push-support", &string)) {
+ LOGE("cannot get reserved-push-support info from %s!!!", NFC_INFO_FILE_PATH);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ if (!strcmp(string, "true") || !strcmp(string, "TRUE"))
+ *supported = true;
+ else
+ *supported = false;
+
+ free(string);
+
+ return SYSTEM_INFO_ERROR_NONE;
+}
#include <GLES/gl.h>
#include <GLES/glext.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define SIZE_OF_MODEL_NAME 8
+#define MESSAGE_INFO_FILE_PATH "/etc/config/sysinfo-message.xml"
+
+int system_info_get_value_from_xml(char *xml_file_path, char *model, char *id_field, char **value)
+{
+ xmlDocPtr doc = NULL;
+ xmlNodePtr cur = NULL;
+ xmlNodePtr default_node = NULL;
+ xmlNodePtr model_node = NULL;
+ xmlNode *cur_node = NULL;
+ char *id = NULL;
+ char *string = NULL;
+
+ doc = xmlParseFile(xml_file_path);
+
+ if (doc == NULL) {
+ LOGE("cannot file open %s file!!!", xml_file_path);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ cur = xmlDocGetRootElement(doc);
+ if (cur == NULL) {
+ LOGE("empty document %s file!!!", xml_file_path);
+ xmlFreeDoc(doc);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+ if (!xmlStrcmp(cur->name, (const xmlChar*)"sys-info"))
+ break;
+ }
+
+ if (cur == NULL) {
+ LOGE("cannot find %s root element file!!!", "sys-info");
+ xmlFreeDoc(doc);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ cur = cur->xmlChildrenNode;
+
+ for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+ if (!xmlStrcmp(cur_node->name, (const xmlChar*)"default"))
+ default_node = cur_node;
+ if (strcmp(model, "default") && !xmlStrcmp(cur_node->name, (const xmlChar*)model))
+ model_node = cur_node;
+ }
+
+ if (model_node) {
+ cur = model_node->xmlChildrenNode;
+
+ for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+ if (cur_node->type == XML_ELEMENT_NODE) {
+ id = (char *)xmlGetProp(cur_node, (const xmlChar*)"id");
+ string = (char *) xmlGetProp(cur_node, (const xmlChar*)"string");
+
+ if (!strncmp(id, id_field, strlen(id_field))) {
+ if (string) {
+ *value = strdup(string);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (*value == NULL) {
+ cur = default_node->xmlChildrenNode;
+
+ for (cur_node = cur; cur_node; cur_node = cur_node->next) {
+ if (cur_node->type == XML_ELEMENT_NODE) {
+ id = (char *)xmlGetProp(cur_node, (const xmlChar*)"id");
+ string = (char *) xmlGetProp(cur_node, (const xmlChar*)"string");
+
+ if (!strncmp(id, id_field, strlen(id_field))) {
+ if (string) {
+ *value = strdup(string);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (!cur_node) {
+ LOGE("cannot find %s field from %s file!!!", id_field, xml_file_path);
+ xmlFreeDoc(doc);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ if (*value == NULL) {
+ LOGE("OUT_OF_MEMORY(0x%08x)", SYSTEM_INFO_ERROR_OUT_OF_MEMORY);
+ xmlFreeDoc(doc);
+ return SYSTEM_INFO_ERROR_OUT_OF_MEMORY;
+ }
+
+ xmlFreeDoc(doc);
+ return SYSTEM_INFO_ERROR_NONE;
+}
+
int system_info_get_model(system_info_key_e key, system_info_data_type_e data_type, void **value)
{
char *MODEL = NULL;
fclose(info);
return SYSTEM_INFO_ERROR_NONE;
}
+
+int system_info_get_mms_supported(system_info_key_e key, system_info_data_type_e data_type, void **value)
+{
+ bool *supported;
+ char *string = NULL;
+ char *model = "default";
+
+ supported = (bool *)value;
+
+ if (access(MESSAGE_INFO_FILE_PATH, R_OK)) {
+ *supported = false;
+ return SYSTEM_INFO_ERROR_NONE;
+ }
+
+ if (system_info_get_value_from_xml(MESSAGE_INFO_FILE_PATH, model, "mms-support", &string)) {
+ LOGE("cannot get mms-support info from %s!!!", MESSAGE_INFO_FILE_PATH);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ if (!strcmp(string, "true") || !strcmp(string, "TRUE"))
+ *supported = true;
+ else
+ *supported = false;
+
+ free(string);
+
+ return SYSTEM_INFO_ERROR_NONE;
+}
+
+int system_info_get_sms_supported(system_info_key_e key, system_info_data_type_e data_type, void **value)
+{
+ bool *supported;
+ char *string = NULL;
+ char *model = "default";
+
+ supported = (bool *)value;
+
+ if (access(MESSAGE_INFO_FILE_PATH, R_OK)) {
+ *supported = false;
+ return SYSTEM_INFO_ERROR_NONE;
+ }
+
+ if (system_info_get_value_from_xml(MESSAGE_INFO_FILE_PATH, model, "sms-support", &string)) {
+ LOGE("cannot get sms-support info from %s!!!", MESSAGE_INFO_FILE_PATH);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ if (!strcmp(string, "true") || !strcmp(string, "TRUE"))
+ *supported = true;
+ else
+ *supported = false;
+
+ free(string);
+
+ return SYSTEM_INFO_ERROR_NONE;
+}
+
+int system_info_get_cbs_supported(system_info_key_e key, system_info_data_type_e data_type, void **value)
+{
+ bool *supported;
+ char *string = NULL;
+ char *model = "default";
+
+ supported = (bool *)value;
+
+ if (access(MESSAGE_INFO_FILE_PATH, R_OK)) {
+ *supported = false;
+ return SYSTEM_INFO_ERROR_NONE;
+ }
+
+ if (system_info_get_value_from_xml(MESSAGE_INFO_FILE_PATH, model, "cbs-support", &string)) {
+ LOGE("cannot get cbs-support info from %s!!!", MESSAGE_INFO_FILE_PATH);
+ return SYSTEM_INFO_ERROR_IO_ERROR;
+ }
+
+ if (!strcmp(string, "true") || !strcmp(string, "TRUE"))
+ *supported = true;
+ else
+ *supported = false;
+
+ free(string);
+
+ return SYSTEM_INFO_ERROR_NONE;
+}