| /* |
| * 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 <string> |
| #include <vector> |
| |
| /***************************************************************************** |
| ** |
| ** 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_t* buffer() { return mBuffer; }; |
| int length() { return mBufferLen; }; |
| |
| private: |
| uint8_t* mBuffer; |
| uint32_t 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); |
| }; |