diff options
Diffstat (limited to 'nci/jni/RouteDataSet.h')
-rw-r--r-- | nci/jni/RouteDataSet.h | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/nci/jni/RouteDataSet.h b/nci/jni/RouteDataSet.h new file mode 100644 index 0000000..d2a09b8 --- /dev/null +++ b/nci/jni/RouteDataSet.h @@ -0,0 +1,308 @@ +/* + * 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); +}; + |