blob: 43ca03f43ebb93a6e22dc6f38073d358a8d40b43 [file] [log] [blame]
/*------------------------------------------------------------
(C) Copyright [2006-2014] Marvell International Ltd.
All Rights Reserved
------------------------------------------------------------*/
#ifndef __VGC_XML_PARSER_H__
#define __VGC_XML_PARSER_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/sendfile.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <telephony/cm.h>
#include "cm_def.h"
#define CONFIG_LIBMXML (1)
#define CONFIG_LIBXML2 (0)
#if CONFIG_LIBXML2
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <libxml/xmlwriter.h>
#include <libxml/xmlreader.h>
#elif CONFIG_LIBMXML
#include <mxml.h>
#endif
#if CONFIG_LIBMXML
typedef unsigned char xmlChar;
#define xmlStrcmp strcmp
#endif
//////////////////////////////////////////////////////////////////////
// Structs
//////////////////////////////////////////////////////////////////////
enum apn_params{
APN_PARAM_CARRIER,
APN_PARAM_MCC,
APN_PARAM_MNC,
APN_PARAM_APN,
APN_PARAM_USER,
APN_PARAM_SERVER,
APN_PARAM_PROXY,
APN_PARAM_PORT,
APN_PARAM_PASSWORD,
APN_PARAM_MMSC,
APN_PARAM_MMSPROXY,
APN_PARAM_MMSPORT,
APN_PARAM_AUTHTYPE,
APN_PARAM_TYPE,
APN_PARAM_PROTOCOL,
APN_PARAM_PCO,
APN_PARAM_VENDORSPECIFIC,
APN_PARAM_ROAMINGPROTOCOL,
APN_PARAM_BEARER,
APN_PARAM_LAST
};
enum extra_apn_params{
EXTRA_APN_PARAM_AUTOCONNECT,
EXTRA_APN_PARAM_ALWAYSON,
EXTRA_APN_PARAM_LTEDEFAULT,
EXTRA_APN_PARAM_CONFIGONLY,
EXTRA_APN_PARAM_TETHERABLE,
EXTRA_APN_PARAM_ISHOST,
EXTRA_APN_PARAM_DATAONROAMING,
EXTRA_APN_PARAM_MTU,
EXTRA_APN_PARAM_LAST
};
typedef struct apn_data{
enum apn_params entry;
char *str;
}apn_data;
typedef struct extra_apn_data{
enum extra_apn_params entry;
char *str;
}extra_apn_data;
//////////////////////////////////////////////////////////////////////
// Global Variables
//////////////////////////////////////////////////////////////////////
#define EXTRA_XML_ROOT_COMPONENT "apns"
#define APNS_FULL_FILENAME "/etc/apn/apns-full-conf.xml"
#define APNS_OVERIDE_FILENAME "/etc/apn/apns-override.xml"
#define APNS_EXTRA_FILENAME "/etc/apn/apns-extra.xml"
#define APNS_DEFAULT_FILENAME "/etc/apn/apns-default.xml"
//////////////////////////////////////////////////////////////////////
// Prototypes
//////////////////////////////////////////////////////////////////////
int set_params(Apn_Info *ptr_apn,char *mcc ,char *mnc ,char *carrier );
int get_default_params(char *docname,Extra_Apn_Info *ex_apn,const char *type);
int fillApnInfo (char *mcc,char* mnc,Mnc_Apn *mnc_data);
void printApnInfo (Mnc_Apn *mnc_data);
void printApn(Apn_Info *apn_ptr);
int get_apn_info_byMccMnc(char *docname,Mnc_Apn *get_apn, int option);
enum apn_params apn_param_str_to_enum(char *str);
enum extra_apn_params ex_apn_param_str_to_enum(char *str);
void attachDefaultParams(Mnc_Apn* mnc_data);
#if CONFIG_LIBXML2
int set_params(Apn_Info *ptr_apn,char *mcc ,char *mnc ,char *carrier );
int remove_apn(char *mcc ,char *mnc ,char *carrier, int option);
void set_overide_props(xmlNodePtr node,Apn_Info *ptr_apn,char *mcc,char *mnc,char *type);
int is_file_existed(char *fname );
void set_extra_props(xmlNodePtr node,Extra_Apn_Info *ex_apn,char *mcc,char *mnc,char *type);
int set_additional_params(Apn_Info *ptr_apn,char *mcc ,char *mnc ,char *type,int option );
int get_mnc_length(char *docname,char *mcc);
#endif
#endif