summaryrefslogtreecommitdiffstats
path: root/nci/jni/RouteDataSet.h
diff options
context:
space:
mode:
Diffstat (limited to 'nci/jni/RouteDataSet.h')
-rw-r--r--nci/jni/RouteDataSet.h308
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);
+};
+