1525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*
2525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Copyright (C) 2012 The Android Open Source Project
3525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
4525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * you may not use this file except in compliance with the License.
6525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * You may obtain a copy of the License at
7525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
8525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *
10525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * See the License for the specific language governing permissions and
14525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project * limitations under the License.
15525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */
16525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
17525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*
18525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project *  Import and export general routing data using a XML file.
19525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project */
20525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include "OverrideLog.h"
21525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include "RouteDataSet.h"
22525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include "libxml/xmlmemory.h"
23525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include <errno.h>
24525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project#include <sys/stat.h>
25525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
26525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectextern char bcm_nfc_location[];
27525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
28525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
29525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
30525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
31525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        AidBuffer
32525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
33525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Parse a string of hex numbers.  Store result in an array of
34525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  bytes.
35525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  aid: string of hex numbers.
36525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
37525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
38525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
39525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
40525c260303268a83da4c3413b953d13c9084e834The Android Open Source ProjectAidBuffer::AidBuffer (std::string& aid)
41525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project:   mBuffer (NULL),
42525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    mBufferLen (0)
43525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
44525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    unsigned int num = 0;
45525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const char delimiter = ':';
46525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string::size_type pos1 = 0;
47525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string::size_type pos2 = aid.find_first_of (delimiter);
48525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
49525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    //parse the AID string; each hex number is separated by a colon;
50525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    mBuffer = new UINT8 [aid.length()];
51525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    while (true)
52525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
53525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        num = 0;
54525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        if (pos2 == std::string::npos)
55525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        {
56525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            sscanf (aid.substr(pos1).c_str(), "%x", &num);
57525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            mBuffer [mBufferLen] = (UINT8) num;
58525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            mBufferLen++;
59525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            break;
60525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        }
61525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        else
62525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        {
63525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            sscanf (aid.substr(pos1, pos2-pos1+1).c_str(), "%x", &num);
64525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            mBuffer [mBufferLen] = (UINT8) num;
65525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            mBufferLen++;
66525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            pos1 = pos2 + 1;
67525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            pos2 = aid.find_first_of (delimiter, pos1);
68525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        }
69525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
70525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
71525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
72525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
73525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
74525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
75525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        ~AidBuffer
76525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
77525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Release all resources.
78525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
79525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
80525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
81525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
82525c260303268a83da4c3413b953d13c9084e834The Android Open Source ProjectAidBuffer::~AidBuffer ()
83525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
84525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    delete [] mBuffer;
85525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
86525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
87525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
88525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************/
89525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************/
90525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
91525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
92525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectconst char* RouteDataSet::sConfigFile = "/param/route.xml";
93525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
94525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
95525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
96525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
97525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        ~RouteDataSet
98525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
99525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Release all resources.
100525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
101525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
102525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
103525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
104525c260303268a83da4c3413b953d13c9084e834The Android Open Source ProjectRouteDataSet::~RouteDataSet ()
105525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
106525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    deleteDatabase ();
107525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
108525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
109525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
110525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
111525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
112525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        initialize
113525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
114525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Initialize resources.
115525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
116525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         True if ok.
117525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
118525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
119525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectbool RouteDataSet::initialize ()
120525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
121525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::initialize";
122525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: enter", fn);
123525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    //check that the libxml2 version in use is compatible
124525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    //with the version the software has been compiled with
125525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    LIBXML_TEST_VERSION
126525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: exit; return=true", fn);
127525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    return true;
128525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
129525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
130525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
131525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
132525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
133525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        deleteDatabase
134525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
135525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Delete all routes stored in all databases.
136525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
137525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
138525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
139525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
140525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectvoid RouteDataSet::deleteDatabase ()
141525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
142525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::deleteDatabase";
143525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: default db size=%u; sec elem db size=%u", fn, mDefaultRouteDatabase.size(), mSecElemRouteDatabase.size());
144525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    Database::iterator it;
145525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
146525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    for (it = mDefaultRouteDatabase.begin(); it != mDefaultRouteDatabase.end(); it++)
147525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        delete (*it);
148525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    mDefaultRouteDatabase.clear ();
149525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
150525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    for (it = mSecElemRouteDatabase.begin(); it != mSecElemRouteDatabase.end(); it++)
151525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        delete (*it);
152525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    mSecElemRouteDatabase.clear ();
153525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
154525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
155525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
156525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
157525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
158525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        import
159525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
160525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Import data from an XML file.  Fill the databases.
161525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
162525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         True if ok.
163525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
164525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
165525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectbool RouteDataSet::import ()
166525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
167525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::import";
168525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: enter", fn);
169525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool retval = false;
170525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    xmlDocPtr doc;
171525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    xmlNodePtr node1;
172525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string strFilename(bcm_nfc_location);
173525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    strFilename += sConfigFile;
174525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
175525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    deleteDatabase ();
176525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
177525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    doc = xmlParseFile (strFilename.c_str());
178525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (doc == NULL)
179525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
180525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGD ("%s: fail parse", fn);
181525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        goto TheEnd;
182525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
183525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
184525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    node1 = xmlDocGetRootElement (doc);
185525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (node1 == NULL)
186525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
187525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGE ("%s: fail root element", fn);
188525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        goto TheEnd;
189525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
190525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: root=%s", fn, node1->name);
191525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
192525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    node1 = node1->xmlChildrenNode;
193525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    while (node1) //loop through all elements in <Routes ...
194525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
195525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        if (xmlStrcmp(node1->name, (const xmlChar*) "Route")==0)
196525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        {
197525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            xmlChar* value = xmlGetProp (node1, (const xmlChar*) "Type");
198525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            if (value && (xmlStrcmp (value, (const xmlChar*) "SecElemSelectedRoutes") == 0))
199525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            {
200525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                ALOGD ("%s: found SecElemSelectedRoutes", fn);
201525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                xmlNodePtr node2 = node1->xmlChildrenNode;
202525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                while (node2) //loop all elements in <Route Type="SecElemSelectedRoutes" ...
203525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                {
204525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                    if (xmlStrcmp(node2->name, (const xmlChar*) "Proto")==0)
205525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                        importProtocolRoute (node2, mSecElemRouteDatabase);
206525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                    else if (xmlStrcmp(node2->name, (const xmlChar*) "Tech")==0)
207525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                        importTechnologyRoute (node2, mSecElemRouteDatabase);
208525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                    node2 = node2->next;
209525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                } //loop all elements in <Route Type="SecElemSelectedRoutes" ...
210525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            }
211525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            else if (value && (xmlStrcmp (value, (const xmlChar*) "DefaultRoutes") == 0))
212525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            {
213525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                ALOGD ("%s: found DefaultRoutes", fn);
214525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                xmlNodePtr node2 = node1->xmlChildrenNode;
215525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                while (node2) //loop all elements in <Route Type="DefaultRoutes" ...
216525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                {
217525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                    if (xmlStrcmp(node2->name, (const xmlChar*) "Proto")==0)
218525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                        importProtocolRoute (node2, mDefaultRouteDatabase);
219525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                    else if (xmlStrcmp(node2->name, (const xmlChar*) "Tech")==0)
220525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                        importTechnologyRoute (node2, mDefaultRouteDatabase);
221525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                    node2 = node2->next;
222525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                } //loop all elements in <Route Type="DefaultRoutes" ...
223525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            }
224525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            if (value)
225525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                xmlFree (value);
226525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        } //check <Route ...
227525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        node1 = node1->next;
228525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    } //loop through all elements in <Routes ...
229525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    retval = true;
230525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
231525c260303268a83da4c3413b953d13c9084e834The Android Open Source ProjectTheEnd:
232525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    xmlFreeDoc (doc);
233525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    xmlCleanupParser ();
234525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: exit; return=%u", fn, retval);
235525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    return retval;
236525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
237525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
238525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
239525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
240525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
241525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        saveToFile
242525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
243525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Save XML data from a string into a file.
244525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  routesXml: XML that represents routes.
245525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
246525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         True if ok.
247525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
248525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
249525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectbool RouteDataSet::saveToFile (const char* routesXml)
250525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
251525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::saveToFile";
252525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    FILE* fh = NULL;
253525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    size_t actualWritten = 0;
254525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    bool retval = false;
255525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string filename (bcm_nfc_location);
256525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
257525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    filename.append (sConfigFile);
258525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    fh = fopen (filename.c_str (), "w");
259525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (fh == NULL)
260525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
261525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGE ("%s: fail to open file", fn);
262525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return false;
263525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
264525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
265525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    actualWritten = fwrite (routesXml, sizeof(char), strlen(routesXml), fh);
266525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    retval = actualWritten == strlen(routesXml);
267525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    fclose (fh);
268525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: wrote %u bytes", fn, actualWritten);
269525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (retval == false)
270525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGE ("%s: error during write", fn);
271525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
272525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    //set file permission to
273525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    //owner read, write; group read; other read
274525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    chmod (filename.c_str (), S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
275525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    return retval;
276525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
277525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
278525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
279525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
280525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
281525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        loadFromFile
282525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
283525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Load XML data from file into a string.
284525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  routesXml: string to receive XML data.
285525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
286525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         True if ok.
287525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
288525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
289525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectbool RouteDataSet::loadFromFile (std::string& routesXml)
290525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
291525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::loadFromFile";
292525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    FILE* fh = NULL;
293525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    size_t actual = 0;
294525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    char buffer [1024];
295525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string filename (bcm_nfc_location);
296525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
297525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    filename.append (sConfigFile);
298525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    fh = fopen (filename.c_str (), "r");
299525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (fh == NULL)
300525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
301525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGD ("%s: fail to open file", fn);
302525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return false;
303525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
304525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
305525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    while (true)
306525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
307525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        actual = fread (buffer, sizeof(char), sizeof(buffer), fh);
308525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        if (actual == 0)
309525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            break;
310525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        routesXml.append (buffer, actual);
311525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
312525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    fclose (fh);
313525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: read %u bytes", fn, routesXml.length());
314525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    return true;
315525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
316525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
317525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
318525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
319525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
320525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
321525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
322525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        importProtocolRoute
323525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
324525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Parse data for protocol routes.
325525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  element: XML node for one protocol route.
326525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  database: store data in this database.
327525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
328525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
329525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
330525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
331525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectvoid RouteDataSet::importProtocolRoute (xmlNodePtr& element, Database& database)
332525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
333525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::importProtocolRoute";
334525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* id = (const xmlChar*) "Id";
335525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* secElem = (const xmlChar*) "SecElem";
336525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* trueString = (const xmlChar*) "true";
337525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* switchOn = (const xmlChar*) "SwitchOn";
338525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* switchOff = (const xmlChar*) "SwitchOff";
339525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* batteryOff = (const xmlChar*) "BatteryOff";
340525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    RouteDataForProtocol* data = new RouteDataForProtocol;
341525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    xmlChar* value = NULL;
342525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
343525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD_IF (sDebug, "%s: element=%s", fn, element->name);
344525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, id);
345525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
346525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
347525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        if (xmlStrcmp (value, (const xmlChar*) "T1T") == 0)
348525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mProtocol = NFA_PROTOCOL_MASK_T1T;
349525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        else if (xmlStrcmp (value, (const xmlChar*) "T2T") == 0)
350525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mProtocol = NFA_PROTOCOL_MASK_T2T;
351525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        else if (xmlStrcmp (value, (const xmlChar*) "T3T") == 0)
352525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mProtocol = NFA_PROTOCOL_MASK_T3T;
353525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        else if (xmlStrcmp (value, (const xmlChar*) "IsoDep") == 0)
354525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mProtocol = NFA_PROTOCOL_MASK_ISO_DEP;
355525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
356525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, id, data->mProtocol);
357525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
358525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
359525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, secElem);
360525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
361525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
362525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mNfaEeHandle = strtol ((char*) value, NULL, 16);
363525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
364525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mNfaEeHandle = data->mNfaEeHandle | NFA_HANDLE_GROUP_EE;
365525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, secElem, data->mNfaEeHandle);
366525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
367525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
368525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, switchOn);
369525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
370525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
371525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mSwitchOn = (xmlStrcmp (value, trueString) == 0);
372525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
373525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
374525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
375525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, switchOff);
376525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
377525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
378525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mSwitchOff = (xmlStrcmp (value, trueString) == 0);
379525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
380525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
381525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
382525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, batteryOff);
383525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
384525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
385525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mBatteryOff = (xmlStrcmp (value, trueString) == 0);
386525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
387525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
388525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    database.push_back (data);
389525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
390525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
391525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
392525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
393525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
394525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        importTechnologyRoute
395525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
396525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Parse data for technology routes.
397525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  element: XML node for one technology route.
398525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  database: store data in this database.
399525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
400525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
401525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
402525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
403525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectvoid RouteDataSet::importTechnologyRoute (xmlNodePtr& element, Database& database)
404525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
405525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::importTechnologyRoute";
406525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* id = (const xmlChar*) "Id";
407525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* secElem = (const xmlChar*) "SecElem";
408525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* trueString = (const xmlChar*) "true";
409525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* switchOn = (const xmlChar*) "SwitchOn";
410525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* switchOff = (const xmlChar*) "SwitchOff";
411525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    const xmlChar* batteryOff = (const xmlChar*) "BatteryOff";
412525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    RouteDataForTechnology* data = new RouteDataForTechnology;
413525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    xmlChar* value = NULL;
414525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
415525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD_IF (sDebug, "%s: element=%s", fn, element->name);
416525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, id);
417525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
418525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
419525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        if (xmlStrcmp (value, (const xmlChar*) "NfcA") == 0)
420525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mTechnology = NFA_TECHNOLOGY_MASK_A;
421525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        else if (xmlStrcmp (value, (const xmlChar*) "NfcB") == 0)
422525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mTechnology = NFA_TECHNOLOGY_MASK_B;
423525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        else if (xmlStrcmp (value, (const xmlChar*) "NfcF") == 0)
424525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            data->mTechnology = NFA_TECHNOLOGY_MASK_F;
425525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
426525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, id, data->mTechnology);
427525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
428525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
429525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, secElem);
430525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
431525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
432525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mNfaEeHandle = strtol ((char*) value, NULL, 16);
433525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
434525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mNfaEeHandle = data->mNfaEeHandle | NFA_HANDLE_GROUP_EE;
435525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        ALOGD_IF (sDebug, "%s: %s=0x%X", fn, secElem, data->mNfaEeHandle);
436525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
437525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
438525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, switchOn);
439525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
440525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
441525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mSwitchOn = (xmlStrcmp (value, trueString) == 0);
442525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
443525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
444525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
445525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, switchOff);
446525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
447525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
448525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mSwitchOff = (xmlStrcmp (value, trueString) == 0);
449525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
450525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
451525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
452525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    value = xmlGetProp (element, batteryOff);
453525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    if (value)
454525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
455525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        data->mBatteryOff = (xmlStrcmp (value, trueString) == 0);
456525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        xmlFree (value);
457525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
458525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    database.push_back (data);
459525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
460525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
461525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
462525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
463525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
464525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        deleteFile
465525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
466525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Delete route data XML file.
467525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
468525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         True if ok.
469525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
470525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
471525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectbool RouteDataSet::deleteFile ()
472525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
473525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::deleteFile";
474525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    std::string filename (bcm_nfc_location);
475525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    filename.append (sConfigFile);
476525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    int stat = remove (filename.c_str());
477525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: exit %u", fn, stat==0);
478525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    return stat == 0;
479525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
480525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
481525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
482525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
483525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
484525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        getDatabase
485525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
486525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Obtain a database of routing data.
487525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**                  selection: which database.
488525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
489525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         Pointer to database.
490525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
491525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
492525c260303268a83da4c3413b953d13c9084e834The Android Open Source ProjectRouteDataSet::Database* RouteDataSet::getDatabase (DatabaseSelection selection)
493525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
494525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    switch (selection)
495525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
496525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    case DefaultRouteDatabase:
497525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return &mDefaultRouteDatabase;
498525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    case SecElemRouteDatabase:
499525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        return &mSecElemRouteDatabase;
500525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
501525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    return NULL;
502525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
503525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
504525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
505525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project/*******************************************************************************
506525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
507525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Function:        printDiagnostic
508525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
509525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Description:     Print some diagnostic output.
510525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
511525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project** Returns:         None.
512525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project**
513525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project*******************************************************************************/
514525c260303268a83da4c3413b953d13c9084e834The Android Open Source Projectvoid RouteDataSet::printDiagnostic ()
515525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project{
516525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    static const char fn [] = "RouteDataSet::printDiagnostic";
517525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    Database* db = getDatabase (DefaultRouteDatabase);
518525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
519525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: default route database", fn);
520525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    for (Database::iterator iter = db->begin(); iter != db->end(); iter++)
521525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
522525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        RouteData* routeData = *iter;
523525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        switch (routeData->mRouteType)
524525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        {
525525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        case RouteData::ProtocolRoute:
526525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            {
527525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                RouteDataForProtocol* proto = (RouteDataForProtocol*) routeData;
528525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                ALOGD ("%s: ee h=0x%X; protocol=0x%X", fn, proto->mNfaEeHandle, proto->mProtocol);
529525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            }
530525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            break;
5312534d9a546f24435d9dab8168f9ea5bf8ca1eb9bElliott Hughes        // TODO: RouteData::TechnologyRoute isn't handled --- bug?
532525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        }
533525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
534525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project
535525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    ALOGD ("%s: sec elem route database", fn);
536525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    db = getDatabase (SecElemRouteDatabase);
537525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    for (Database::iterator iter2 = db->begin(); iter2 != db->end(); iter2++)
538525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    {
539525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        RouteData* routeData = *iter2;
540525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        switch (routeData->mRouteType)
541525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        {
542525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        case RouteData::ProtocolRoute:
543525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            {
544525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                RouteDataForProtocol* proto = (RouteDataForProtocol*) routeData;
545525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                ALOGD ("%s: ee h=0x%X; protocol=0x%X", fn, proto->mNfaEeHandle, proto->mProtocol);
546525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            }
547525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            break;
548525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        case RouteData::TechnologyRoute:
549525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            {
550525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                RouteDataForTechnology* tech = (RouteDataForTechnology*) routeData;
551525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project                ALOGD ("%s: ee h=0x%X; technology=0x%X", fn, tech->mNfaEeHandle, tech->mTechnology);
552525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            }
553525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project            break;
554525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project        }
555525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project    }
556525c260303268a83da4c3413b953d13c9084e834The Android Open Source Project}
557