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