| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* |
| * Import and export general routing data using a XML file. |
| */ |
| #pragma once |
| #include "NfcJniUtil.h" |
| #include "nfa_api.h" |
| #include <libxml/parser.h> |
| #include <vector> |
| #include <string> |
| |
| |
| /***************************************************************************** |
| ** |
| ** Name: RouteData |
| ** |
| ** Description: Base class for every kind of route data. |
| ** |
| *****************************************************************************/ |
| class RouteData |
| { |
| public: |
| enum RouteType {ProtocolRoute, TechnologyRoute}; |
| RouteType mRouteType; |
| |
| protected: |
| RouteData (RouteType routeType) : mRouteType (routeType) |
| {} |
| }; |
| |
| |
| |
| |
| /***************************************************************************** |
| ** |
| ** Name: RouteDataForProtocol |
| ** |
| ** Description: Data for protocol routes. |
| ** |
| *****************************************************************************/ |
| class RouteDataForProtocol : public RouteData |
| { |
| public: |
| int mNfaEeHandle; //for example 0x4f3, 0x4f4 |
| bool mSwitchOn; |
| bool mSwitchOff; |
| bool mBatteryOff; |
| tNFA_PROTOCOL_MASK mProtocol; |
| |
| RouteDataForProtocol () : RouteData (ProtocolRoute), mNfaEeHandle (NFA_HANDLE_INVALID), |
| mSwitchOn (false), mSwitchOff (false), mBatteryOff (false), |
| mProtocol (0) |
| {} |
| }; |
| |
| |
| /***************************************************************************** |
| ** |
| ** Name: RouteDataForTechnology |
| ** |
| ** Description: Data for technology routes. |
| ** |
| *****************************************************************************/ |
| class RouteDataForTechnology : public RouteData |
| { |
| public: |
| int mNfaEeHandle; //for example 0x4f3, 0x4f4 |
| bool mSwitchOn; |
| bool mSwitchOff; |
| bool mBatteryOff; |
| tNFA_TECHNOLOGY_MASK mTechnology; |
| |
| RouteDataForTechnology () : RouteData (TechnologyRoute), mNfaEeHandle (NFA_HANDLE_INVALID), |
| mSwitchOn (false), mSwitchOff (false), mBatteryOff (false), |
| mTechnology (0) |
| {} |
| }; |
| |
| |
| /*****************************************************************************/ |
| /*****************************************************************************/ |
| |
| |
| /***************************************************************************** |
| ** |
| ** Name: AidBuffer |
| ** |
| ** Description: Buffer to store AID after converting a string of hex |
| ** values to bytes. |
| ** |
| *****************************************************************************/ |
| class AidBuffer |
| { |
| public: |
| |
| /******************************************************************************* |
| ** |
| ** Function: AidBuffer |
| ** |
| ** Description: Parse a string of hex numbers. Store result in an array of |
| ** bytes. |
| ** aid: string of hex numbers. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| AidBuffer (std::string& aid); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: ~AidBuffer |
| ** |
| ** Description: Release all resources. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| ~AidBuffer (); |
| |
| |
| UINT8* buffer () {return mBuffer;}; |
| int length () {return mBufferLen;}; |
| |
| private: |
| UINT8* mBuffer; |
| UINT32 mBufferLen; |
| }; |
| |
| |
| /*****************************************************************************/ |
| /*****************************************************************************/ |
| |
| |
| /***************************************************************************** |
| ** |
| ** Name: RouteDataSet |
| ** |
| ** Description: Import and export general routing data using a XML file. |
| ** See /data/bcm/param/route.xml |
| ** |
| *****************************************************************************/ |
| class RouteDataSet |
| { |
| public: |
| typedef std::vector<RouteData*> Database; |
| enum DatabaseSelection {DefaultRouteDatabase, SecElemRouteDatabase}; |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: ~RouteDataSet |
| ** |
| ** Description: Release all resources. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| ~RouteDataSet (); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: initialize |
| ** |
| ** Description: Initialize resources. |
| ** |
| ** Returns: True if ok. |
| ** |
| *******************************************************************************/ |
| bool initialize (); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: import |
| ** |
| ** Description: Import data from an XML file. Fill the database. |
| ** |
| ** Returns: True if ok. |
| ** |
| *******************************************************************************/ |
| bool import (); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: getDatabase |
| ** |
| ** Description: Obtain a database of routing data. |
| ** selection: which database. |
| ** |
| ** Returns: Pointer to database. |
| ** |
| *******************************************************************************/ |
| Database* getDatabase (DatabaseSelection selection); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: saveToFile |
| ** |
| ** Description: Save XML data from a string into a file. |
| ** routesXml: XML that represents routes. |
| ** |
| ** Returns: True if ok. |
| ** |
| *******************************************************************************/ |
| static bool saveToFile (const char* routesXml); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: loadFromFile |
| ** |
| ** Description: Load XML data from file into a string. |
| ** routesXml: string to receive XML data. |
| ** |
| ** Returns: True if ok. |
| ** |
| *******************************************************************************/ |
| static bool loadFromFile (std::string& routesXml); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: deleteFile |
| ** |
| ** Description: Delete route data XML file. |
| ** |
| ** Returns: True if ok. |
| ** |
| *******************************************************************************/ |
| static bool deleteFile (); |
| |
| /******************************************************************************* |
| ** |
| ** Function: printDiagnostic |
| ** |
| ** Description: Print some diagnostic output. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| void printDiagnostic (); |
| |
| private: |
| Database mSecElemRouteDatabase; //routes when NFC service selects sec elem |
| Database mDefaultRouteDatabase; //routes when NFC service deselects sec elem |
| static const char* sConfigFile; |
| static const bool sDebug = false; |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: deleteDatabase |
| ** |
| ** Description: Delete all routes stored in all databases. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| void deleteDatabase (); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: importProtocolRoute |
| ** |
| ** Description: Parse data for protocol routes. |
| ** element: XML node for one protocol route. |
| ** database: store data in this database. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| void importProtocolRoute (xmlNodePtr& element, Database& database); |
| |
| |
| /******************************************************************************* |
| ** |
| ** Function: importTechnologyRoute |
| ** |
| ** Description: Parse data for technology routes. |
| ** element: XML node for one technology route. |
| ** database: store data in this database. |
| ** |
| ** Returns: None. |
| ** |
| *******************************************************************************/ |
| void importTechnologyRoute (xmlNodePtr& element, Database& database); |
| }; |
| |