summaryrefslogtreecommitdiffstats
path: root/reference-cne
diff options
context:
space:
mode:
authorSusheel Yadagiri <syadagir@quicinc.com>2010-01-25 10:42:28 -0800
committerSusheel Yadagiri <syadagir@quicinc.com>2010-01-26 18:52:43 -0800
commit7b3afc04f3ad11c10d964762684caef66f3f5b4d (patch)
treec7d7400d25f5cfe715afe7dc1e557a6890dcac38 /reference-cne
parent71c3655cc81e8898526ab8d26d79bab26dd3a049 (diff)
downloadandroid_external_connectivity-7b3afc04f3ad11c10d964762684caef66f3f5b4d.tar.gz
android_external_connectivity-7b3afc04f3ad11c10d964762684caef66f3f5b4d.tar.bz2
android_external_connectivity-7b3afc04f3ad11c10d964762684caef66f3f5b4d.zip
Pushing changes from development branch.
Major changes include: Fixed file permissions and line endings Logging to diag instead of Logcat Add support to iproute2 Bug fix that allows cnd to make the correct call to iproute2 Fixed bug caused by using variable length arguments. Made changes to account for the kernel automatically setting the default interface. Added more debug statements in CneSvc, CRefCne & CRefCneRadio classess Changes made to handle timer expiration call backs in cne thread Add Ip Address to Rat status event Add IpAddress and TimeStamp to wwan and wlan info. Added ip address and estimated bandwidth info to be sent to apps.
Diffstat (limited to 'reference-cne')
-rw-r--r--[-rwxr-xr-x]reference-cne/inc/CRefCne.h256
-rw-r--r--[-rwxr-xr-x]reference-cne/inc/CRefCneRadio.h240
-rw-r--r--[-rwxr-xr-x]reference-cne/inc/RefCneDefs.h268
-rw-r--r--[-rwxr-xr-x]reference-cne/src/Android.mk67
-rw-r--r--[-rwxr-xr-x]reference-cne/src/CRefCne.cpp830
-rw-r--r--[-rwxr-xr-x]reference-cne/src/CRefCneRadio.cpp565
-rw-r--r--[-rwxr-xr-x]reference-cne/src/CneSvc.cpp321
7 files changed, 1304 insertions, 1243 deletions
diff --git a/reference-cne/inc/CRefCne.h b/reference-cne/inc/CRefCne.h
index bd04790..e93f113 100755..100644
--- a/reference-cne/inc/CRefCne.h
+++ b/reference-cne/inc/CRefCne.h
@@ -1,128 +1,128 @@
-#ifndef REF_CNE_H
-#define REF_CNE_H
-
-/**----------------------------------------------------------------------------
- @file REF_CNE.h
-
-
------------------------------------------------------------------------------*/
-
-/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Code Aurora nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
-
-#include "cne_svc.h"
-#include "RefCneDefs.h"
-#include "CRefCneRadio.h"
-
-
-/*----------------------------------------------------------------------------
- * Preprocessor Definitions and Constants
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Type Declarations
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Class Definitions
- * -------------------------------------------------------------------------*/
-class CRefCne
-{
-public:
- /**
- @brief Returns an instance of the CneSpm class.
-
- The user of this class will call this function to get an
- instance of the class. All other public functions will be
- called on this instance
-
- @param None
- @see None
- @return An instance of the CneSpm class is returned.
- */
- static CRefCne* getInstance ();
- static void RefCneCmdHdlr
- (
- int ,
- int ,
- void*
- );
-
-private:
- /* Wlan notification command format */
- typedef struct _Wlan {
- int status;
- int rssi;
- char ssid[32];
- } refCneWlanInfoCmdFmt;
-
- /* Wwan notification command format */
- typedef struct _Wwan {
- int type;
- int status;
- int rssi;
- int roaming;
- } refCneWwanInfoCmdFmt;
-
- CRefCne();
- ~CRefCne();
- static CRefCne* m_sInstancePtr;
- int m_iNumActiveNetworks;
- static cne_rat_type m_siPrefNetwork;
- CRefCneRadio* RefCneWifi;
- CRefCneRadio* RefCneWwan;
-
-
- ref_cne_ret_enum_type UpdateWlanInfoCmd
- (
- void*
- );
-
- ref_cne_ret_enum_type UpdateWwanInfoCmd
- (
- void*
- );
-
- ref_cne_ret_enum_type SetPrefNetCmd
- (
- void *
- );
- void SetPreferredNetwork
- (
- cne_rat_type *
- );
- cne_rat_type GetPreferredNetwork();
- void ProcessStateChange();
-};
-
-#endif /* REF_CNE_H */ \ No newline at end of file
+#ifndef REF_CNE_H
+#define REF_CNE_H
+
+/**----------------------------------------------------------------------------
+ @file REF_CNE.h
+
+
+-----------------------------------------------------------------------------*/
+
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Code Aurora nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+
+#include "cne.h"
+#include "RefCneDefs.h"
+#include "CRefCneRadio.h"
+
+
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Class Definitions
+ * -------------------------------------------------------------------------*/
+class CRefCne
+{
+public:
+ /**
+ @brief Returns an instance of the CneSpm class.
+
+ The user of this class will call this function to get an
+ instance of the class. All other public functions will be
+ called on this instance
+
+ @param None
+ @see None
+ @return An instance of the CneSpm class is returned.
+ */
+ static CRefCne* getInstance ();
+ static void RefCneCmdHdlr
+ (
+ int ,
+ int ,
+ void*
+ );
+
+private:
+ /* Wlan notification command format */
+ typedef struct _Wlan {
+ int status;
+ int rssi;
+ char ssid[32];
+ } refCneWlanInfoCmdFmt;
+
+ /* Wwan notification command format */
+ typedef struct _Wwan {
+ int type;
+ int status;
+ int rssi;
+ int roaming;
+ } refCneWwanInfoCmdFmt;
+
+ CRefCne();
+ ~CRefCne();
+ static CRefCne* m_sInstancePtr;
+ int m_iNumActiveNetworks;
+ static cne_rat_type m_siPrefNetwork;
+ CRefCneRadio* RefCneWifi;
+ CRefCneRadio* RefCneWwan;
+
+
+ ref_cne_ret_enum_type UpdateWlanInfoCmd
+ (
+ void*
+ );
+
+ ref_cne_ret_enum_type UpdateWwanInfoCmd
+ (
+ void*
+ );
+
+ ref_cne_ret_enum_type SetPrefNetCmd
+ (
+ void *
+ );
+ void SetPreferredNetwork
+ (
+ cne_rat_type *
+ );
+ cne_rat_type GetPreferredNetwork();
+ void ProcessStateChange();
+};
+
+#endif /* REF_CNE_H */
diff --git a/reference-cne/inc/CRefCneRadio.h b/reference-cne/inc/CRefCneRadio.h
index e173c8e..81d244d 100755..100644
--- a/reference-cne/inc/CRefCneRadio.h
+++ b/reference-cne/inc/CRefCneRadio.h
@@ -1,120 +1,120 @@
-#ifndef REF_CNE_RADIO_H
- #define REF_CNE_RADIO_H
-
-/**----------------------------------------------------------------------------
- @file REF_CNE_RADIO.h
-
-
------------------------------------------------------------------------------*/
-
-/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Code Aurora nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
- #include "cne_svc.h"
- #include "RefCneDefs.h"
-
-/*----------------------------------------------------------------------------
- * Preprocessor Definitions and Constants
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Type Declarations
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Class Definitions
- * -------------------------------------------------------------------------*/
-class CRefCneRadio
-{
-public:
- /**
- * @brief Returns an instance of the RefCneRadio class.
-
- The user of this class will call this function to get an
- instance of the class. All other public functions will be
- called on this instance
-
- @param None
- @see None
- *@return An instance of the RCneRadio class is returned.
- **/
-
- //Constructor
- CRefCneRadio
- (
- cne_rat_type
- );
-
- //Destructor
- ~CRefCneRadio(){};
-
- // returns if True if status is connected, else false
- bool bIsDataConnected ();
-
- int iIsConActionPending ();
-
- void ClearPending ();
-
- bool bIsConStateChanged ();
-
- void UpdateStatus
- (
- int
- );
-
- //Turn ON Radio
- void TurnOn ();
-
- //Turn OFF Radio
- void TurnOff ();
-
- void SetPending
- (
- ref_cne_net_con_req_enum_type
- );
-
-private:
-
- //private member variables
- cne_network_state_enum_type m_iNetState;
- cne_rat_type m_iMyRatType;
- ref_cne_net_con_req_enum_type m_iRequestState;
- ref_cne_net_con_status_enum_type m_iPrevNetConState;
- ref_cne_net_con_status_enum_type m_iNetConState;
-
- /* Impicit Contructor which cannot be explicitly called */
- CRefCneRadio();
- CRefCneRadio(const CRefCneRadio& radio);
-};
-#endif /* REF_CNE_RADIO_H */
-
-
+#ifndef REF_CNE_RADIO_H
+ #define REF_CNE_RADIO_H
+
+/**----------------------------------------------------------------------------
+ @file REF_CNE_RADIO.h
+
+
+-----------------------------------------------------------------------------*/
+
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Code Aurora nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+ #include "cne.h"
+ #include "RefCneDefs.h"
+
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Class Definitions
+ * -------------------------------------------------------------------------*/
+class CRefCneRadio
+{
+public:
+ /**
+ * @brief Returns an instance of the RefCneRadio class.
+
+ The user of this class will call this function to get an
+ instance of the class. All other public functions will be
+ called on this instance
+
+ @param None
+ @see None
+ *@return An instance of the RCneRadio class is returned.
+ **/
+
+ //Constructor
+ CRefCneRadio
+ (
+ cne_rat_type
+ );
+
+ //Destructor
+ ~CRefCneRadio(){};
+
+ // returns if True if status is connected, else false
+ bool bIsDataConnected ();
+
+ int iIsConActionPending ();
+
+ void ClearPending ();
+
+ bool bIsConStateChanged ();
+
+ void UpdateStatus
+ (
+ int
+ );
+
+ //Turn ON Radio
+ void TurnOn ();
+
+ //Turn OFF Radio
+ void TurnOff ();
+
+ void SetPending
+ (
+ ref_cne_net_con_req_enum_type
+ );
+
+private:
+
+ //private member variables
+ cne_network_state_enum_type m_iNetState;
+ cne_rat_type m_iMyRatType;
+ ref_cne_net_con_req_enum_type m_iRequestState;
+ ref_cne_net_con_status_enum_type m_iNetConState;
+ ref_cne_net_con_status_enum_type m_iPrevNetConState;
+
+ /* Impicit Contructor which cannot be explicitly called */
+ CRefCneRadio();
+ CRefCneRadio(const CRefCneRadio& radio);
+};
+#endif /* REF_CNE_RADIO_H */
+
+
diff --git a/reference-cne/inc/RefCneDefs.h b/reference-cne/inc/RefCneDefs.h
index b189ddd..8421d92 100755..100644
--- a/reference-cne/inc/RefCneDefs.h
+++ b/reference-cne/inc/RefCneDefs.h
@@ -1,134 +1,134 @@
-#ifndef REF_CNE_DEFS_H
-#define REF_CNE_DEFS_H
-
-/**----------------------------------------------------------------------------
- @file REFCNE_Defs.h
-
- This file holds various definations that get used across, different CNE
- modules.
------------------------------------------------------------------------------*/
-
-
-/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Code Aurora nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
- #include <utils/Log.h>
-
-/*----------------------------------------------------------------------------
- * Preprocessor Definitions and Constants
- * -------------------------------------------------------------------------*/
-
- #define RCNE_LOG_TAG "RefCnE"
-
- #define RCNE_MSG_WARN(...) LOG(LOG_WARN,RCNE_LOG_TAG,__VA_ARGS__)
- #define RCNE_MSG_WARN1 RCNE_MSG_WARN
- #define RCNE_MSG_WARN2 RCNE_MSG_WARN
- #define RCNE_MSG_WARN3 RCNE_MSG_WARN
- #define RCNE_MSG_WARN4 RCNE_MSG_WARN
- #define RCNE_MSG_WARN5 RCNE_MSG_WARN
-
- #define RCNE_MSG_DEBUG(...) LOG(LOG_DEBUG,RCNE_LOG_TAG,__VA_ARGS__)
- #define RCNE_MSG_DEBUG1 RCNE_MSG_DEBUG
- #define RCNE_MSG_DEBUG2 RCNE_MSG_DEBUG
- #define RCNE_MSG_DEBUG3 RCNE_MSG_DEBUG
- #define RCNE_MSG_DEBUG4 RCNE_MSG_DEBUG
- #define RCNE_MSG_DEBUG5 RCNE_MSG_DEBUG
-
- #define RCNE_MSG_ERROR(...) LOG(LOG_ERROR,RCNE_LOG_TAG,__VA_ARGS__)
- #define RCNE_MSG_ERROR1 RCNE_MSG_ERROR
- #define RCNE_MSG_ERROR2 RCNE_MSG_ERROR
- #define RCNE_MSG_ERROR3 RCNE_MSG_ERROR
- #define RCNE_MSG_ERROR4 RCNE_MSG_ERROR
- #define RCNE_MSG_ERROR5 RCNE_MSG_ERROR
-
- #define RCNE_MSG_VERBOSE(...) LOG(LOG_VERBOSE,RCNE_LOG_TAG,__VA_ARGS__)
- #define RCNE_MSG_VERBOSE1 RCNE_MSG_VERBOSE
- #define RCNE_MSG_VERBOSE2 RCNE_MSG_VERBOSE
- #define RCNE_MSG_VERBOSE3 RCNE_MSG_VERBOSE
- #define RCNE_MSG_VERBOSE4 RCNE_MSG_VERBOSE
- #define RCNE_MSG_VERBOSE5 RCNE_MSG_VERBOSE
-
- #define RCNE_MSG_INFO(...) LOG(LOG_INFO,RCNE_LOG_TAG,__VA_ARGS__)
- #define RCNE_MSG_INFO1 RCNE_MSG_INFO
- #define RCNE_MSG_INFO2 RCNE_MSG_INFO
- #define RCNE_MSG_INFO3 RCNE_MSG_INFO
- #define RCNE_MSG_INFO4 RCNE_MSG_INFO
- #define RCNE_MSG_INFO5 RCNE_MSG_INFO
-
-/*----------------------------------------------------------------------------
- * Type Declarations
- * -------------------------------------------------------------------------*/
-
-/** Possible return codes */
-typedef enum
-{
- /* ADD other new error codes here */
- REF_CNE_RET_ERROR = -1,
-
- REF_CNE_RET_OK = 1,
-} ref_cne_ret_enum_type;
-
-typedef enum
-{
- REF_CNE_NET_STATE_DISCONNECTED=0,
- REF_CNE_NET_STATE_CONNECTED,
- REF_CNE_NET_STATE_UNINITIALIZED,
-} ref_cne_net_con_status_enum_type;
-
-typedef enum
-{
- REF_CNE_NET_PENDING_CONNECT=0,
- REF_CNE_NET_PENDING_DISCONNECT,
- REF_CNE_NET_NOT_PENDING,
-} ref_cne_net_con_req_enum_type;
-
-#ifndef TRUE
- #define TRUE 1 /* Boolean true value. */
-#endif /* TRUE */
-
-#ifndef FALSE
- #define FALSE 0 /* Boolean false value. */
-#endif /* FALSE */
-
-#ifndef NULL
- #define NULL 0
-#endif /* NULL */
-
-#ifndef MAX
- #define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
-#endif /* MAX */
-
-#ifndef MIN
- #define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
-#endif /* MIN */
-
-#endif /* REF_CNE_DEFS_H */
+#ifndef REF_CNE_DEFS_H
+#define REF_CNE_DEFS_H
+
+/**----------------------------------------------------------------------------
+ @file REFCNE_Defs.h
+
+ This file holds various definations that get used across, different CNE
+ modules.
+-----------------------------------------------------------------------------*/
+
+
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Code Aurora nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+ #include <utils/Log.h>
+
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+ #define RCNE_LOG_TAG "RefCnE"
+
+ #define RCNE_MSG_WARN(...) LOG(LOG_WARN,RCNE_LOG_TAG,__VA_ARGS__)
+ #define RCNE_MSG_WARN1 RCNE_MSG_WARN
+ #define RCNE_MSG_WARN2 RCNE_MSG_WARN
+ #define RCNE_MSG_WARN3 RCNE_MSG_WARN
+ #define RCNE_MSG_WARN4 RCNE_MSG_WARN
+ #define RCNE_MSG_WARN5 RCNE_MSG_WARN
+
+ #define RCNE_MSG_DEBUG(...) LOG(LOG_DEBUG,RCNE_LOG_TAG,__VA_ARGS__)
+ #define RCNE_MSG_DEBUG1 RCNE_MSG_DEBUG
+ #define RCNE_MSG_DEBUG2 RCNE_MSG_DEBUG
+ #define RCNE_MSG_DEBUG3 RCNE_MSG_DEBUG
+ #define RCNE_MSG_DEBUG4 RCNE_MSG_DEBUG
+ #define RCNE_MSG_DEBUG5 RCNE_MSG_DEBUG
+
+ #define RCNE_MSG_ERROR(...) LOG(LOG_ERROR,RCNE_LOG_TAG,__VA_ARGS__)
+ #define RCNE_MSG_ERROR1 RCNE_MSG_ERROR
+ #define RCNE_MSG_ERROR2 RCNE_MSG_ERROR
+ #define RCNE_MSG_ERROR3 RCNE_MSG_ERROR
+ #define RCNE_MSG_ERROR4 RCNE_MSG_ERROR
+ #define RCNE_MSG_ERROR5 RCNE_MSG_ERROR
+
+ #define RCNE_MSG_VERBOSE(...) LOG(LOG_VERBOSE,RCNE_LOG_TAG,__VA_ARGS__)
+ #define RCNE_MSG_VERBOSE1 RCNE_MSG_VERBOSE
+ #define RCNE_MSG_VERBOSE2 RCNE_MSG_VERBOSE
+ #define RCNE_MSG_VERBOSE3 RCNE_MSG_VERBOSE
+ #define RCNE_MSG_VERBOSE4 RCNE_MSG_VERBOSE
+ #define RCNE_MSG_VERBOSE5 RCNE_MSG_VERBOSE
+
+ #define RCNE_MSG_INFO(...) LOG(LOG_INFO,RCNE_LOG_TAG,__VA_ARGS__)
+ #define RCNE_MSG_INFO1 RCNE_MSG_INFO
+ #define RCNE_MSG_INFO2 RCNE_MSG_INFO
+ #define RCNE_MSG_INFO3 RCNE_MSG_INFO
+ #define RCNE_MSG_INFO4 RCNE_MSG_INFO
+ #define RCNE_MSG_INFO5 RCNE_MSG_INFO
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+
+/** Possible return codes */
+typedef enum
+{
+ /* ADD other new error codes here */
+ REF_CNE_RET_ERROR = -1,
+
+ REF_CNE_RET_OK = 1,
+} ref_cne_ret_enum_type;
+
+typedef enum
+{
+ REF_CNE_NET_STATE_DISCONNECTED=0,
+ REF_CNE_NET_STATE_CONNECTED,
+ REF_CNE_NET_STATE_UNINITIALIZED,
+} ref_cne_net_con_status_enum_type;
+
+typedef enum
+{
+ REF_CNE_NET_PENDING_CONNECT=0,
+ REF_CNE_NET_PENDING_DISCONNECT,
+ REF_CNE_NET_NOT_PENDING,
+} ref_cne_net_con_req_enum_type;
+
+#ifndef TRUE
+ #define TRUE 1 /* Boolean true value. */
+#endif /* TRUE */
+
+#ifndef FALSE
+ #define FALSE 0 /* Boolean false value. */
+#endif /* FALSE */
+
+#ifndef NULL
+ #define NULL 0
+#endif /* NULL */
+
+#ifndef MAX
+ #define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
+#endif /* MAX */
+
+#ifndef MIN
+ #define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
+#endif /* MIN */
+
+#endif /* REF_CNE_DEFS_H */
diff --git a/reference-cne/src/Android.mk b/reference-cne/src/Android.mk
index 280264e..f357dbc 100755..100644
--- a/reference-cne/src/Android.mk
+++ b/reference-cne/src/Android.mk
@@ -1,46 +1,21 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# measurements show that the ARM version of ZLib is about x1.17 faster
-# than the thumb one...
-LOCAL_ARM_MODE := arm
-
-#this is needed to make sure that the path for stlport is specified first than stdc++
-LOCAL_NO_DEFAULT_COMPILER_FLAGS :=true
-
-LOCAL_SRC_FILES:= \
- CRefCne.cpp\
- CRefCneRadio.cpp\
- CneSvc.cpp\
-
-LOCAL_MODULE:= librefcne
-
-LOCAL_C_INCLUDES := \
- external/connectivity/reference-cne/inc \
- external/connectivity/include/cne \
- bionic/libstdc++/include \
- system/core/include \
- hardware/libhardware/include \
- hardware/libhardware_legacy/include \
- hardware/ril/include \
- dalvik/libnativehelper/include \
- frameworks/base/include \
- external/skia/include \
- out/target/product/dream/obj/include \
- bionic/libc/arch-arm/include \
- bionic/libc/include \
- bionic/libstdc++/include \
- bionic/libc/kernel/common \
- bionic/libc/kernel/arch-arm \
- bionic/libm/include \
- bionic/libm/include/arch/arm \
- bionic/libthread_db/include \
- out/target/product/dream/obj/EXECUTABLES/cnetest_intermediates
-
-LOCAL_CFLAGS+= -fno-exceptions -Wno-multichar -msoft-float -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -march=armv5te -mtune=xscale -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5TE__ -include system/core/include/arch/linux-arm/AndroidConfig.h -I system/core/include/arch/linux-arm/ -mthumb-interwork -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -DSK_RELEASE -DNDEBUG -O2 -g -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -DNDEBUG -UDEBUG -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -fno-rtti -DFEATURE_XMLLIB
-
-LOCAL_PRELINK_MODULE := false
-
-include $(BUILD_SHARED_LIBRARY)
-
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= \
+ CRefCne.cpp\
+ CRefCneRadio.cpp\
+ CneSvc.cpp
+
+LOCAL_MODULE:= librefcne
+
+LOCAL_SHARED_LIBRARIES := libcutils
+
+LOCAL_C_INCLUDES := \
+ external/connectivity/reference-cne/inc \
+ external/connectivity/include/cne
+
+LOCAL_PRELINK_MODULE := false
+
+include $(BUILD_SHARED_LIBRARY)
+
diff --git a/reference-cne/src/CRefCne.cpp b/reference-cne/src/CRefCne.cpp
index 5577a0a..c3ef46a 100755..100644
--- a/reference-cne/src/CRefCne.cpp
+++ b/reference-cne/src/CRefCne.cpp
@@ -1,402 +1,428 @@
-/**----------------------------------------------------------------------------
- @file CRefCne.cpp
-
-
------------------------------------------------------------------------------*/
-
-/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Code Aurora nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-/*----------------------------------------------------------------------------
- * Preprocessor Definitions and Constants
- * -------------------------------------------------------------------------*/
-#define TWO_RADIOS_ARE_CONNECTED 2
-#define ONE_RADIO_IS_CONNECTED 1
-#define ALL_RADIOS_ARE_DISCONNECTED 0
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
-#include "stdio.h"
-#include "cne_svc.h"
-#include "CRefCne.h"
-#include "CRefCneRadio.h"
-#include "RefCneDefs.h"
-
-/*----------------------------------------------------------------------------
- * Static Member declarations
- * -------------------------------------------------------------------------*/
-CRefCne* CRefCne::m_sInstancePtr = NULL;
-cne_rat_type CRefCne::m_siPrefNetwork = CNE_RAT_NONE;
-
-/*----------------------------------------------------------------------------
- * Type Declarations
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Class Definitions
- * -------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------
- * FUNCTION getInstance
-
- * DESCRIPTION The user of this class will call this function to get an
- instance of the class. All other public functions will be
- called on this instance
-
- * DEPENDENCIES None
-
- * RETURN VALUE an instance of CRefCne class
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-CRefCne* CRefCne::getInstance
-(
-)
-{
- if (m_sInstancePtr == NULL)
- {
- m_sInstancePtr = new CRefCne;
- }
- return(m_sInstancePtr);
-}
-/*----------------------------------------------------------------------------
- * FUNCTION Constructor
-
- * DESCRIPTION Creates the RefCne object & initializes members appropriately
-
- * DEPENDENCIES None
-
- * RETURN VALUE an instance of CRefCne class
-
- * SIDE EFFECTS RefCne object is created
- *--------------------------------------------------------------------------*/
-CRefCne::CRefCne ()
-{
- m_iNumActiveNetworks = NULL;
- RefCneWifi = new CRefCneRadio(CNE_RAT_WLAN);
- RefCneWwan = new CRefCneRadio(CNE_RAT_WWAN);
-}
-/*----------------------------------------------------------------------------
- * FUNCTION RefCneCmdHdlr
-
- * DESCRIPTION This the master command handler which calls specific handler
- to handle a particular command sent by the daemon
-
- * DEPENDENCIES None
-
- * RETURN VALUE None
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-void CRefCne::RefCneCmdHdlr
-(
- int cmd,
- int cmd_len,
- void* pCmdDataPtr
-)
-{
- cmd = (cne_cmd_enum_type) cmd;
- CRefCne* myself = getInstance();
- switch (cmd)
- {
- case CNE_NOTIFY_DEFAULT_NW_PREF_CMD:
- {
- RCNE_MSG_INFO("Command hdlr: Notify default"
- " network pref cmd called [%d]",cmd);
- ref_cne_ret_enum_type ret = myself->SetPrefNetCmd(pCmdDataPtr);
- if (ret != REF_CNE_RET_OK)
- {
- //ASSERT(0);
- }
- break;
- }
- case CNE_REQUEST_UPDATE_WLAN_INFO_CMD:
- {
- RCNE_MSG_INFO("Command hdlr: Update Wifi info cmd called [%d]",cmd);
- ref_cne_ret_enum_type ret = myself->UpdateWlanInfoCmd(pCmdDataPtr);
- if (ret != REF_CNE_RET_OK)
- {
- //ASSERT(0);
- }
- break;
- }
- case CNE_REQUEST_UPDATE_WWAN_INFO_CMD:
- {
- RCNE_MSG_INFO("Command hdlr: Update WWAN info cmd called [%d]",cmd);
- ref_cne_ret_enum_type ret = myself->UpdateWwanInfoCmd(pCmdDataPtr);
- if (ret != REF_CNE_RET_OK)
- {
- //assert(0);
- }
- break;
- }
- default:
- {
- RCNE_MSG_ERROR("Command hdlr: Unrecognized command recvd [%d]",cmd);
- }
- }
- myself->ProcessStateChange();
-}
-/*----------------------------------------------------------------------------
- * FUNCTION ProcessStateChange
-
- * DESCRIPTION Processess the change of state of the connectivity engine
- after the command received from the daemon is processed
-
- * DEPENDENCIES None
-
- * RETURN VALUE None
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-void CRefCne::ProcessStateChange
-(
-)
-{
- RCNE_MSG_INFO("PSC:BEGIN processing state change");
- m_iNumActiveNetworks = 0;
- cne_rat_type myPrefNet = GetPreferredNetwork();
- /* Check if the preferred network is set, if not then phone is
- * in boot up process, so do nothing */
- if (myPrefNet == NULL)
- {
- return;
- }
-
- CRefCneRadio* pref;
- CRefCneRadio* nonpref;
- if (myPrefNet == CNE_RAT_WLAN )
- {
- RCNE_MSG_DEBUG("PSC: Preferred RAT is Wifi, non-preferred RAT is WWAN");
- pref = RefCneWifi;
- nonpref = RefCneWwan;
- } else
- {
- RCNE_MSG_DEBUG("PSC: Preferred RAT is WWAN, non-preferred RAT is Wifi");
- pref = RefCneWwan;
- nonpref = RefCneWifi;
- }
- if (RefCneWifi->bIsDataConnected() == TRUE )
- {
- ++m_iNumActiveNetworks;
- RCNE_MSG_INFO("PSC: Wifi is in connected state");
- }
- if (RefCneWwan->bIsDataConnected() == TRUE )
- {
- ++m_iNumActiveNetworks;
- RCNE_MSG_INFO("PSC: WWAN is in connected state");
- }
- switch (m_iNumActiveNetworks)
- {
- case TWO_RADIOS_ARE_CONNECTED:
- /**
- * If both Radios are up turn off the non-preferred network
- */
- {
- RCNE_MSG_DEBUG("PSC: both radios are up; disconnecting"
- " non-preferred radio");
- nonpref->TurnOff();
- nonpref->SetPending(REF_CNE_NET_PENDING_DISCONNECT);
- break;
- }
- case ONE_RADIO_IS_CONNECTED:
- /**
- * If only one radio is up check if it is the preferred one,
- * if not then turn on the preferred network
- */
- {
- if (pref->bIsDataConnected() == FALSE)
- {
- RCNE_MSG_INFO("PSC: Non preferred radio is up; reconnecting"
- " preferred radio");
- pref->TurnOn();
- pref->SetPending(REF_CNE_NET_PENDING_CONNECT);
- } else
- {
- RCNE_MSG_INFO("PSC: Preferred radio is connected");
- }
- break;
- }
- case ALL_RADIOS_ARE_DISCONNECTED:
- /**
- * If both networks are disconnected then try to bring up
- * both networks
- */
- {
- RCNE_MSG_INFO("All radios are disconnected; trying to reconnect");
- pref->TurnOn();
- pref->SetPending(REF_CNE_NET_PENDING_CONNECT);
- nonpref->TurnOn();
- nonpref->SetPending(REF_CNE_NET_PENDING_CONNECT);
- break;
- }
- default:
- {
- RCNE_MSG_WARN("PSC: number of active networks is invalid");
- //ASSERT(0);
- }
- }
-}
-/*----------------------------------------------------------------------------
- * FUNCTION UpdateWlanInfoCmd
-
- * DESCRIPTION The command handler for UpdateWlanInfo notification
-
- * DEPENDENCIES None
-
- * RETURN VALUE ref_cne_ret_enum_type
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-ref_cne_ret_enum_type CRefCne::UpdateWlanInfoCmd
-(
- void* pWifiCmdData
-)
-{
- RCNE_MSG_DEBUG("UWLICH: Wlan update info cmd handler called");
- refCneWlanInfoCmdFmt *WlanInfoCmd;
- WlanInfoCmd = (refCneWlanInfoCmdFmt *)pWifiCmdData;
- if (WlanInfoCmd->status == NULL)
- {
- RCNE_MSG_ERROR("UWLICH: Invalid (==NULL) WLAN status received");
- return(REF_CNE_RET_ERROR);
- }
- RefCneWifi->UpdateStatus(WlanInfoCmd->status);
- if ( (RefCneWifi->bIsDataConnected()
- && (RefCneWifi->iIsConActionPending()== REF_CNE_NET_PENDING_CONNECT) )
- || (!RefCneWifi->bIsDataConnected()
- && (RefCneWifi->iIsConActionPending()== REF_CNE_NET_PENDING_DISCONNECT) ) )
- {
- RCNE_MSG_DEBUG("UWLICH: Was in connection action pending state; clearing it");
- RefCneWifi->ClearPending();
- }
- RCNE_MSG_INFO("UWLICH: handled Wlan update info cmd");
- return(REF_CNE_RET_OK);
-}
-/*----------------------------------------------------------------------------
- * FUNCTION UpdateWwanInfoCmd
-
- * DESCRIPTION The command handler for UpdateWwanInfo notification
-
- * DEPENDENCIES None
-
- * RETURN VALUE ref_cne_ret_enum_type
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-ref_cne_ret_enum_type CRefCne::UpdateWwanInfoCmd
-(
- void* pWwanCmdData
-)
-{
- RCNE_MSG_DEBUG("UWWICH: Wwan update info cmd handler called");
- refCneWwanInfoCmdFmt *WwanInfoCmd;
- WwanInfoCmd = (refCneWwanInfoCmdFmt *)pWwanCmdData;
- if (WwanInfoCmd->status == NULL)
- {
- RCNE_MSG_ERROR("UWWICH: Invalid (==NULL) WWAN status received");
- return(REF_CNE_RET_ERROR);
- }
- RefCneWwan->UpdateStatus(WwanInfoCmd->status);
- if ( (RefCneWwan->bIsDataConnected()
- && (RefCneWwan->iIsConActionPending()== REF_CNE_NET_PENDING_CONNECT) )
- || (!RefCneWwan->bIsDataConnected()
- && (RefCneWwan->iIsConActionPending()== REF_CNE_NET_PENDING_DISCONNECT) ) )
- {
- RCNE_MSG_DEBUG("UWWICH: Was in connection action pending state; clearing it");
- RefCneWwan->ClearPending();
- }
- RCNE_MSG_INFO("UWWICH: handled Wwan update info cmd");
- return(REF_CNE_RET_OK);
-}
-/*----------------------------------------------------------------------------
- * FUNCTION SetPrefNetCmd
-
- * DESCRIPTION The command handler for set preferred network notification
-
- * DEPENDENCIES None
-
- * RETURN VALUE ref_cne_ret_enum_type
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-ref_cne_ret_enum_type CRefCne::SetPrefNetCmd
-(
- void* pPrefNetCmdData
-)
-{
- RCNE_MSG_DEBUG("SPNCH: Set preferred network command handler called");
- cne_rat_type *pPrefNetwork;
- pPrefNetwork = (cne_rat_type *)pPrefNetCmdData;
- if ( (*pPrefNetwork != CNE_RAT_WLAN)&&(*pPrefNetwork != CNE_RAT_WWAN) )
- {
- RCNE_MSG_ERROR("SPNCH: Invalid Network ID [%d] received",*pPrefNetwork);
- return(REF_CNE_RET_ERROR);
- }
- SetPreferredNetwork(pPrefNetwork);
- RCNE_MSG_DEBUG("SPNCH: handled set preferred network cmd");
- return(REF_CNE_RET_OK);
-}
-/*----------------------------------------------------------------------------
- * FUNCTION SetPreferredNetwork
-
- * DESCRIPTION Sets the desired network as the preferred network
-
- * DEPENDENCIES None
-
- * RETURN VALUE None
-
- * SIDE EFFECTS The default network for the system is changed
- *--------------------------------------------------------------------------*/
-void CRefCne::SetPreferredNetwork
-(
- cne_rat_type* pNetId
-)
-{
- m_siPrefNetwork = *pNetId;
- return;
-}
-/*----------------------------------------------------------------------------
- * FUNCTION GetPreferredNetwork
-
- * DESCRIPTION Informs the caller about which network is used as default
-
- * DEPENDENCIES None
-
- * RETURN VALUE cne_rat_type
-
- * SIDE EFFECTS None
- *--------------------------------------------------------------------------*/
-cne_rat_type CRefCne::GetPreferredNetwork
-(
-)
-{
- return(m_siPrefNetwork);
-}
-
+/**----------------------------------------------------------------------------
+ @file CRefCne.cpp
+
+
+-----------------------------------------------------------------------------*/
+
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Code Aurora nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+#define TWO_RADIOS_ARE_CONNECTED 2
+#define ONE_RADIO_IS_CONNECTED 1
+#define ALL_RADIOS_ARE_DISCONNECTED 0
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+#include "cne.h"
+#include "CRefCne.h"
+#include "CRefCneRadio.h"
+#include "RefCneDefs.h"
+
+/*----------------------------------------------------------------------------
+ * Static Member declarations
+ * -------------------------------------------------------------------------*/
+CRefCne* CRefCne::m_sInstancePtr = NULL;
+cne_rat_type CRefCne::m_siPrefNetwork = CNE_RAT_WLAN;
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Class Definitions
+ * -------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------
+ * FUNCTION getInstance
+
+ * DESCRIPTION The user of this class will call this function to get an
+ instance of the class. All other public functions will be
+ called on this instance
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE an instance of CRefCne class
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+CRefCne* CRefCne::getInstance
+(
+)
+{
+ if (m_sInstancePtr == NULL)
+ {
+ m_sInstancePtr = new CRefCne;
+ }
+ return(m_sInstancePtr);
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION Constructor
+
+ * DESCRIPTION Creates the RefCne object & initializes members appropriately
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE an instance of CRefCne class
+
+ * SIDE EFFECTS RefCne object is created
+ *--------------------------------------------------------------------------*/
+CRefCne::CRefCne ()
+{
+ RCNE_MSG_INFO("In reference CNE constructor");
+ m_iNumActiveNetworks = NULL;
+ RefCneWifi = new CRefCneRadio(CNE_RAT_WLAN);
+ RefCneWwan = new CRefCneRadio(CNE_RAT_WWAN);
+ RCNE_MSG_INFO("Reference CNE constructed");
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION RefCneCmdHdlr
+
+ * DESCRIPTION This the master command handler which calls specific handler
+ to handle a particular command sent by the daemon
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE None
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+void CRefCne::RefCneCmdHdlr
+(
+ int cmd,
+ int cmd_len,
+ void* pCmdDataPtr
+)
+{
+ cmd = (cne_cmd_enum_type) cmd;
+ CRefCne* myself = getInstance();
+ switch (cmd)
+ {
+ case CNE_NOTIFY_DEFAULT_NW_PREF_CMD:
+ {
+ RCNE_MSG_INFO("Command hdlr: Notify default"
+ " network pref cmd called [%d]",cmd);
+ ref_cne_ret_enum_type ret = myself->SetPrefNetCmd(pCmdDataPtr);
+ if (ret != REF_CNE_RET_OK)
+ {
+ break;
+ }
+ myself->ProcessStateChange();
+ }
+ break;
+ case CNE_REQUEST_UPDATE_WLAN_INFO_CMD:
+ {
+ RCNE_MSG_INFO("Command hdlr: Update Wifi info cmd called [%d]",cmd);
+ ref_cne_ret_enum_type ret = myself->UpdateWlanInfoCmd(pCmdDataPtr);
+ if (ret != REF_CNE_RET_OK)
+ {
+ break;
+ }
+ myself->ProcessStateChange();
+ }
+ break;
+ case CNE_REQUEST_UPDATE_WWAN_INFO_CMD:
+ {
+ RCNE_MSG_INFO("Command hdlr: Update WWAN info cmd called [%d]",cmd);
+ ref_cne_ret_enum_type ret = myself->UpdateWwanInfoCmd(pCmdDataPtr);
+ if (ret != REF_CNE_RET_OK)
+ {
+ break;
+ }
+ myself->ProcessStateChange();
+ }
+ break;
+ default:
+ {
+ RCNE_MSG_ERROR("Command hdlr: Unrecognized command recvd [%d]",cmd);
+ }
+ }
+
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION ProcessStateChange
+
+ * DESCRIPTION Processess the change of state of the connectivity engine
+ after the command received from the daemon is processed
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE None
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+void CRefCne::ProcessStateChange
+(
+)
+{
+ RCNE_MSG_INFO("PSC:BEGIN processing state change");
+ m_iNumActiveNetworks = 0;
+ cne_rat_type myPrefNet = GetPreferredNetwork();
+ /* Check if the preferred network is set, if not then phone is
+ * in boot up process, so do nothing */
+ if (myPrefNet == NULL)
+ {
+ RCNE_MSG_ERROR("Invalid network preference: [%d]", myPrefNet);
+ }
+
+ CRefCneRadio* pref;
+ CRefCneRadio* nonpref;
+ if (myPrefNet == CNE_RAT_WLAN )
+ {
+ RCNE_MSG_INFO("PSC: Preferred RAT is Wifi, non-preferred RAT is WWAN");
+ pref = RefCneWifi;
+ nonpref = RefCneWwan;
+ } else
+ {
+ RCNE_MSG_INFO("PSC: Preferred RAT is WWAN, non-preferred RAT is Wifi");
+ pref = RefCneWwan;
+ nonpref = RefCneWifi;
+ }
+ if (RefCneWifi->bIsDataConnected() == TRUE )
+ {
+ ++m_iNumActiveNetworks;
+ RCNE_MSG_INFO("PSC: Wifi is in connected state");
+ }
+ if (RefCneWwan->bIsDataConnected() == TRUE )
+ {
+ ++m_iNumActiveNetworks;
+ RCNE_MSG_INFO("PSC: WWAN is in connected state");
+ }
+ switch (m_iNumActiveNetworks)
+ {
+ case TWO_RADIOS_ARE_CONNECTED:
+ /**
+ * If both Radios are up turn off the non-preferred network
+ */
+ {
+ RCNE_MSG_INFO("PSC: both radios are up; disconnecting"
+ " non-preferred radio");
+ nonpref->TurnOff();
+ nonpref->SetPending(REF_CNE_NET_PENDING_DISCONNECT);
+ }
+ break;
+ case ONE_RADIO_IS_CONNECTED:
+ /**
+ * If only one radio is up check if it is the preferred one,
+ * if not then turn on the preferred network
+ */
+ {
+ if (pref->bIsDataConnected() == FALSE)
+ {
+ RCNE_MSG_INFO("PSC: Non preferred radio is up; reconnecting"
+ " preferred radio");
+ pref->TurnOn();
+ pref->SetPending(REF_CNE_NET_PENDING_CONNECT);
+ } else
+ {
+ RCNE_MSG_INFO("PSC: Preferred radio is connected");
+ }
+ }
+ break;
+ case ALL_RADIOS_ARE_DISCONNECTED:
+ /**
+ * If both networks are disconnected then try to bring up
+ * both networks
+ */
+ {
+ RCNE_MSG_INFO("All radios are disconnected; trying to reconnect");
+ pref->TurnOn();
+ pref->SetPending(REF_CNE_NET_PENDING_CONNECT);
+ nonpref->TurnOn();
+ nonpref->SetPending(REF_CNE_NET_PENDING_CONNECT);
+ }
+ break;
+ default:
+ {
+ RCNE_MSG_WARN("PSC: number of active networks is invalid");
+ //ASSERT(0);
+ }
+ }
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION UpdateWlanInfoCmd
+
+ * DESCRIPTION The command handler for UpdateWlanInfo notification
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE ref_cne_ret_enum_type
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+ref_cne_ret_enum_type CRefCne::UpdateWlanInfoCmd
+(
+ void* pWifiCmdData
+)
+{
+ RCNE_MSG_DEBUG("UWLICH: Wlan update info cmd handler called");
+ if (pWifiCmdData == NULL)
+ {
+ RCNE_MSG_ERROR("UWLICH: Cmd data ptr is Null, bailing out...");
+ return(REF_CNE_RET_ERROR);
+ }
+ refCneWlanInfoCmdFmt *WlanInfoCmd;
+ WlanInfoCmd = (refCneWlanInfoCmdFmt *) pWifiCmdData;
+ RCNE_MSG_INFO("UWLICH: WLAN INFO data is: rssi=%d, status=%d", WlanInfoCmd->rssi, WlanInfoCmd->status);
+ if (WlanInfoCmd->status == -10)
+ {
+ RCNE_MSG_ERROR("UWLICH: Invalid WLAN status received");
+ return(REF_CNE_RET_ERROR);
+ }
+ RCNE_MSG_DEBUG("UWLICH: WLAN info status is valid, will update status");
+ RefCneWifi->UpdateStatus(WlanInfoCmd->status);
+ RCNE_MSG_DEBUG("UWLICH: WLAN info status updated");
+ if ( (RefCneWifi->bIsDataConnected()
+ && (RefCneWifi->iIsConActionPending()== REF_CNE_NET_PENDING_CONNECT) )
+ || (!RefCneWifi->bIsDataConnected()
+ && (RefCneWifi->iIsConActionPending()== REF_CNE_NET_PENDING_DISCONNECT) ) )
+ {
+ RCNE_MSG_DEBUG("UWLICH: Was in connection action pending state; clearing it");
+ RefCneWifi->ClearPending();
+ }
+ RCNE_MSG_INFO("UWLICH: handled Wlan update info cmd");
+ return(REF_CNE_RET_OK);
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION UpdateWwanInfoCmd
+
+ * DESCRIPTION The command handler for UpdateWwanInfo notification
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE ref_cne_ret_enum_type
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+ref_cne_ret_enum_type CRefCne::UpdateWwanInfoCmd
+(
+ void* pWwanCmdData
+)
+{
+ RCNE_MSG_DEBUG("UWWICH: Wwan update info cmd handler called");
+ if (pWwanCmdData == NULL)
+ {
+ RCNE_MSG_ERROR("UWWICH: WWAN info data is null, bailing out...");
+ return(REF_CNE_RET_ERROR);
+ }
+ refCneWwanInfoCmdFmt *WwanInfoCmd;
+ WwanInfoCmd = (refCneWwanInfoCmdFmt *)pWwanCmdData;
+ RCNE_MSG_INFO("UWWICH: WWAN info data is: rssi=%d, status=%d", WwanInfoCmd->rssi, WwanInfoCmd->status);
+ if (WwanInfoCmd->status == -10)
+ {
+ RCNE_MSG_ERROR("UWWICH: Invalid WWAN status received");
+ return(REF_CNE_RET_ERROR);
+ }
+ RCNE_MSG_DEBUG("UWWICH: wwan status is valid, now updating status");
+ RefCneWwan->UpdateStatus(WwanInfoCmd->status);
+ RCNE_MSG_DEBUG("UWWICH: wwan status is updated");
+ if ( (RefCneWwan->bIsDataConnected()
+ && (RefCneWwan->iIsConActionPending()== REF_CNE_NET_PENDING_CONNECT) )
+ || (!RefCneWwan->bIsDataConnected()
+ && (RefCneWwan->iIsConActionPending()== REF_CNE_NET_PENDING_DISCONNECT) ) )
+ {
+ RCNE_MSG_DEBUG("UWWICH: Was in connection action pending state; clearing it");
+ RefCneWwan->ClearPending();
+ }
+ RCNE_MSG_INFO("UWWICH: handled Wwan update info cmd");
+ return(REF_CNE_RET_OK);
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION SetPrefNetCmd
+
+ * DESCRIPTION The command handler for set preferred network notification
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE ref_cne_ret_enum_type
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+ref_cne_ret_enum_type CRefCne::SetPrefNetCmd
+(
+ void* pPrefNetCmdData
+)
+{
+ RCNE_MSG_DEBUG("SPNCH: Set preferred network command handler called");
+ if (pPrefNetCmdData == NULL)
+ {
+ RCNE_MSG_ERROR("SPNCH: preferred network data is null, bailing out...");
+ return(REF_CNE_RET_ERROR);
+ }
+ cne_rat_type *pPrefNetwork;
+ pPrefNetwork = (cne_rat_type *)pPrefNetCmdData;
+ if ( (*pPrefNetwork != CNE_RAT_WLAN)&&(*pPrefNetwork != CNE_RAT_WWAN) )
+ {
+ RCNE_MSG_ERROR("SPNCH: Invalid Network ID [%d] received",*pPrefNetwork);
+ return(REF_CNE_RET_ERROR);
+ }
+ RCNE_MSG_INFO("SPNCH: setting preferred network to [%d]",*pPrefNetwork);
+ SetPreferredNetwork(pPrefNetwork);
+ RCNE_MSG_DEBUG("SPNCH: handled set preferred network cmd");
+ return(REF_CNE_RET_OK);
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION SetPreferredNetwork
+
+ * DESCRIPTION Sets the desired network as the preferred network
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE None
+
+ * SIDE EFFECTS The default network for the system is changed
+ *--------------------------------------------------------------------------*/
+void CRefCne::SetPreferredNetwork
+(
+ cne_rat_type* pNetId
+)
+{
+ m_siPrefNetwork = *pNetId;
+ return;
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION GetPreferredNetwork
+
+ * DESCRIPTION Informs the caller about which network is used as default
+
+ * DEPENDENCIES None
+
+ * RETURN VALUE cne_rat_type
+
+ * SIDE EFFECTS None
+ *--------------------------------------------------------------------------*/
+cne_rat_type CRefCne::GetPreferredNetwork
+(
+)
+{
+ return(m_siPrefNetwork);
+}
+
diff --git a/reference-cne/src/CRefCneRadio.cpp b/reference-cne/src/CRefCneRadio.cpp
index 48a4738..0d55214 100755..100644
--- a/reference-cne/src/CRefCneRadio.cpp
+++ b/reference-cne/src/CRefCneRadio.cpp
@@ -1,280 +1,285 @@
-/*============================================================================
- FILE: CRefCneRadio.cpp
-
- OVERVIEW: The CRefCneRadio class provides means to control an air
- interface upon creation of its object. Some of the methods
- such as bIsDataConnected, bIsConStateChanged, provide means to
- find out the current connectivity state of the radio
-
- DEPENDENCIES: The CRefCneRadio class is constructed for a unique air interface
- denoted by its RAT type. Once constructed, all other methods
- can be called on this object.
-============================================================================*/
-
-/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Code Aurora nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-/*---------------------------------------------------------------------------
- * Extern Declarations
- *-------------------------------------------------------------------------*/
-extern "C" void cnd_sendUnsolicitedMsg
- (
- int targetFd,
- int msgType,
- int dataLen,
- void *data
- );
-
-/*----------------------------------------------------------------------------
- * Includes
- * -------------------------------------------------------------------------*/
-#include "CRefCneRadio.h"
-#include "RefCneDefs.h"
-#include "cne_svc.h"
-
-/*=============================================================================
- FUNCTION CRefCneRadio
-
- DESCRIPTION Class constructor initializes class member variables
-
- DEPENDENCIES None
-
- RETURN VALUE CRefCneRadio instance
-
- SIDE EFFECTS None
- ============================================================================*/
-CRefCneRadio::CRefCneRadio
-(
- cne_rat_type myRadio
-):m_iRequestState(REF_CNE_NET_NOT_PENDING),
- m_iNetConState(REF_CNE_NET_STATE_UNINITIALIZED),
- m_iPrevNetConState(REF_CNE_NET_STATE_UNINITIALIZED)
-{
- //Print to logcat: RefCne Radio constructor called
- /* set the command handlers */
-
- m_iMyRatType = myRadio;
-
- //Print to logcat: RefCne Radio constructed
-}
-/*=============================================================================
- FUNCTION CRefCneRadio
-
- DESCRIPTION Copy constructor, not allowed.
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-CRefCneRadio::CRefCneRadio(const CRefCneRadio& radio)
-{
-}
-/*=============================================================================
- FUNCTION bIsDataConnected
-
- DESCRIPTION Querrys the Radio to see if it is connected
-
- DEPENDENCIES None
-
- RETURN VALUE TRUE, FALSE
-
- SIDE EFFECTS None
- ============================================================================*/
-bool CRefCneRadio::bIsDataConnected ()
-{
- if(m_iNetConState == REF_CNE_NET_STATE_CONNECTED)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
-}
-/*=============================================================================
- FUNCTION iIsConActionPending
-
- DESCRIPTION Querrys the Radio for a pending request
-
- DEPENDENCIES None
-
- RETURN VALUE TRUE, FALSE
-
- SIDE EFFECTS None
- ============================================================================*/
-int CRefCneRadio::iIsConActionPending
-(
-)
-{
- return m_iRequestState;
-}
-/*=============================================================================
- FUNCTION ClearPending
-
- DESCRIPTION Clears the request pending flag
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-void CRefCneRadio::ClearPending
-(
-)
-{
- m_iRequestState = REF_CNE_NET_NOT_PENDING;
-}
-/*=============================================================================
- FUNCTION bIsConStateChanged
-
- DESCRIPTION Querry the radio to see if the new status is different from
- previous
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-bool CRefCneRadio::bIsConStateChanged
-(
-)
-{
- if(m_iNetConState != m_iPrevNetConState)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
-}
-/*=============================================================================
- FUNCTION UpdateStatus
-
- DESCRIPTION Maintains the previous and current state of the radio
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-void CRefCneRadio::UpdateStatus
- (
- int myNetStatus
- )
-{
- m_iNetState = (cne_network_state_enum_type )myNetStatus;
- m_iPrevNetConState = m_iNetConState;
- switch(myNetStatus)
- {
- case CNE_NETWORK_STATE_CONNECTED:
- {
- m_iNetConState = REF_CNE_NET_STATE_CONNECTED;
- break;
- }
- default:
- {
- m_iNetConState = REF_CNE_NET_STATE_DISCONNECTED;
- }
- }
- return;
-}
-/*=============================================================================
- FUNCTION TurnOn
-
- DESCRIPTION Turns the radio on
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-void CRefCneRadio::TurnOn
-(
-)
-{
- //Send Turn On command to Connectivity daemon
- cnd_sendUnsolicitedMsg
- (0, CNE_REQUEST_BRING_RAT_UP_MSG, sizeof(m_iMyRatType), &m_iMyRatType);
- return;
-}
-/*=============================================================================
- FUNCTION TurnOff
-
- DESCRIPTION Turns the radio off
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-void CRefCneRadio::TurnOff
-(
-)
-{
- //Send Turn Off command to Connectivity daemon
- cnd_sendUnsolicitedMsg
- (0, CNE_REQUEST_BRING_RAT_DOWN_MSG, sizeof(m_iMyRatType), &m_iMyRatType);
- return;
-}
-/*=============================================================================
- FUNCTION SetPending
-
- DESCRIPTION Sets the pending flag appropriately when radio is turned on
- or off
-
- DEPENDENCIES None
-
- RETURN VALUE None
-
- SIDE EFFECTS None
- ============================================================================*/
-void CRefCneRadio::SetPending
-(
- ref_cne_net_con_req_enum_type flag
-)
-{
- m_iRequestState = flag;
-}
-
-//Implicit constructor
-CRefCneRadio::CRefCneRadio
-(
-)
-{
-}
-
-
+/*============================================================================
+ FILE: CRefCneRadio.cpp
+
+ OVERVIEW: The CRefCneRadio class provides means to control an air
+ interface upon creation of its object. Some of the methods
+ such as bIsDataConnected, bIsConStateChanged, provide means to
+ find out the current connectivity state of the radio
+
+ DEPENDENCIES: The CRefCneRadio class is constructed for a unique air interface
+ denoted by its RAT type. Once constructed, all other methods
+ can be called on this object.
+============================================================================*/
+
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Code Aurora nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+/*---------------------------------------------------------------------------
+ * Extern Declarations
+ *-------------------------------------------------------------------------*/
+extern "C" void cne_sendUnsolicitedMsg
+ (
+ int targetFd,
+ int msgType,
+ int dataLen,
+ void *data
+ );
+
+/*----------------------------------------------------------------------------
+ * Includes
+ * -------------------------------------------------------------------------*/
+#include "CRefCneRadio.h"
+#include "RefCneDefs.h"
+#include "cne.h"
+
+/*=============================================================================
+ FUNCTION CRefCneRadio
+
+ DESCRIPTION Class constructor initializes class member variables
+
+ DEPENDENCIES None
+
+ RETURN VALUE CRefCneRadio instance
+
+ SIDE EFFECTS None
+ ============================================================================*/
+CRefCneRadio::CRefCneRadio
+(
+ cne_rat_type myRadio
+):m_iRequestState(REF_CNE_NET_NOT_PENDING),
+ m_iNetConState(REF_CNE_NET_STATE_UNINITIALIZED),
+ m_iPrevNetConState(REF_CNE_NET_STATE_UNINITIALIZED)
+{
+ RCNE_MSG_DEBUG("In RefCneRadio constructor");
+ /* set the command handlers */
+
+ m_iMyRatType = myRadio;
+
+ RCNE_MSG_DEBUG("RefCneRadio constructed for RAT: %d",m_iMyRatType);
+}
+/*=============================================================================
+ FUNCTION CRefCneRadio
+
+ DESCRIPTION Copy constructor, not allowed.
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+CRefCneRadio::CRefCneRadio(const CRefCneRadio& radio)
+{
+}
+/*=============================================================================
+ FUNCTION bIsDataConnected
+
+ DESCRIPTION Querrys the Radio to see if it is connected
+
+ DEPENDENCIES None
+
+ RETURN VALUE TRUE, FALSE
+
+ SIDE EFFECTS None
+ ============================================================================*/
+bool CRefCneRadio::bIsDataConnected ()
+{
+ if(m_iNetConState == REF_CNE_NET_STATE_CONNECTED)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+/*=============================================================================
+ FUNCTION iIsConActionPending
+
+ DESCRIPTION Querrys the Radio for a pending request
+
+ DEPENDENCIES None
+
+ RETURN VALUE TRUE, FALSE
+
+ SIDE EFFECTS None
+ ============================================================================*/
+int CRefCneRadio::iIsConActionPending
+(
+)
+{
+ return m_iRequestState;
+}
+/*=============================================================================
+ FUNCTION ClearPending
+
+ DESCRIPTION Clears the request pending flag
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+void CRefCneRadio::ClearPending
+(
+)
+{
+ m_iRequestState = REF_CNE_NET_NOT_PENDING;
+}
+/*=============================================================================
+ FUNCTION bIsConStateChanged
+
+ DESCRIPTION Querry the radio to see if the new status is different from
+ previous
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+bool CRefCneRadio::bIsConStateChanged
+(
+)
+{
+ if(m_iNetConState != m_iPrevNetConState)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+/*=============================================================================
+ FUNCTION UpdateStatus
+
+ DESCRIPTION Maintains the previous and current state of the radio
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+void CRefCneRadio::UpdateStatus
+ (
+ int myNetStatus
+ )
+{
+ m_iNetState = (cne_network_state_enum_type )myNetStatus;
+ m_iPrevNetConState = m_iNetConState;
+ switch(myNetStatus)
+ {
+ case CNE_NETWORK_STATE_CONNECTED:
+ {
+ m_iNetConState = REF_CNE_NET_STATE_CONNECTED;
+ RCNE_MSG_DEBUG("refcne %d radio state is connected",m_iMyRatType);
+ }
+ break;
+ default:
+ {
+ m_iNetConState = REF_CNE_NET_STATE_DISCONNECTED;
+ RCNE_MSG_DEBUG("refcne %d radio state is disconnected",m_iMyRatType);
+ }
+ }
+
+ return;
+}
+/*=============================================================================
+ FUNCTION TurnOn
+
+ DESCRIPTION Turns the radio on
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+void CRefCneRadio::TurnOn
+(
+)
+{
+ //Send Turn On command to Connectivity daemon
+ RCNE_MSG_DEBUG("requesting service to turn on radio with params: cmd %d, sz %d, radio %d",
+ CNE_REQUEST_BRING_RAT_UP_MSG,(sizeof(m_iMyRatType)),m_iMyRatType);
+ cne_sendUnsolicitedMsg
+ (0, CNE_REQUEST_BRING_RAT_UP_MSG, sizeof(m_iMyRatType), &m_iMyRatType);
+ return;
+}
+/*=============================================================================
+ FUNCTION TurnOff
+
+ DESCRIPTION Turns the radio off
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+void CRefCneRadio::TurnOff
+(
+)
+{
+ //Send Turn Off command to Connectivity daemon
+ RCNE_MSG_DEBUG("requesting service to turn off radio with params: cmd %d, sz %d, radio %d",
+ CNE_REQUEST_BRING_RAT_DOWN_MSG,(sizeof(m_iMyRatType)),m_iMyRatType);
+ cne_sendUnsolicitedMsg
+ (0, CNE_REQUEST_BRING_RAT_DOWN_MSG, sizeof(m_iMyRatType), &m_iMyRatType);
+ return;
+}
+/*=============================================================================
+ FUNCTION SetPending
+
+ DESCRIPTION Sets the pending flag appropriately when radio is turned on
+ or off
+
+ DEPENDENCIES None
+
+ RETURN VALUE None
+
+ SIDE EFFECTS None
+ ============================================================================*/
+void CRefCneRadio::SetPending
+(
+ ref_cne_net_con_req_enum_type flag
+)
+{
+ m_iRequestState = flag;
+}
+
+//Implicit constructor
+CRefCneRadio::CRefCneRadio
+(
+)
+{
+}
diff --git a/reference-cne/src/CneSvc.cpp b/reference-cne/src/CneSvc.cpp
index 9c91ed4..77f2f5b 100755..100644
--- a/reference-cne/src/CneSvc.cpp
+++ b/reference-cne/src/CneSvc.cpp
@@ -1,133 +1,188 @@
-/*============================================================================
- FILE: CneSvc.cpp
-
- OVERVIEW: Provide an overview of the implementation contained in this
- file. Do not rehash the user-level documentation from the
- header file. Maintainers, not users of this code will be
- reading this. Describe anything of interest about the
- algorithms or design, and call attention to anything tricky
- or potentially confusing.
-
- DEPENDENCIES: If the code in this file has any notable dependencies,
- describe them here. Any initialization and sequencing
- requirements, or assumptions about the overall state of
- the system belong here.
-============================================================================*/
-
-/* Copyright (c) 2009, Code Aurora Forum. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Code Aurora nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-/*----------------------------------------------------------------------------
- * Include Files
- * -------------------------------------------------------------------------*/
-#include "cne_svc.h"
-#include "CRefCne.h"
-#include "RefCneDefs.h"
-
-/*----------------------------------------------------------------------------
- * Preprocessor Definitions and Constants
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Type Declarations
- * -------------------------------------------------------------------------*/
-#ifdef __cplusplus
- extern "C" {
-#endif /* __cplusplus */
-
-extern void cnd_regCommandsNotificationCb
-(
- int,
- void (*)(int,int,void*),
- int
-);
-
-#ifdef __cplusplus
- }
-#endif /* __cplusplus */
-
-/*----------------------------------------------------------------------------
- * Global Data Definitions
- * -------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------
- * Static Variable Definitions
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Static/Class member Function Declarations and Definitions
- * -------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * Externalized Function Definitions
- * -------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------
- * FUNCTION Function Name
-
- * DESCRIPTION Function Description
-
- * DEPENDENCIES
-
- * RETURN VALUE
-
- * SIDE EFFECTS
- *--------------------------------------------------------------------------*/
-extern "C" void
-cne_processCommand
-(
- int cmd,
- int cmd_len,
- void *cmd_data /* event data depends on the type of event */
-)
-{
- //CRefCne::getInstance()->RefCneCmdHdlr(cmd, cmd_len, cmd_data);
- CRefCne::RefCneCmdHdlr(cmd, cmd_len, cmd_data);
- return;
-}
-
-/*----------------------------------------------------------------------------
- * FUNCTION Function Name
-
- * DESCRIPTION Function Description
-
- * DEPENDENCIES
-
- * RETURN VALUE
-
- * SIDE EFFECTS
- *--------------------------------------------------------------------------*/
-void cne_svc_init
-(
- void
-)
-{
- /* create the RefCne obj */
- (void) CRefCne::getInstance();
-}
-
-
+/*============================================================================
+ FILE: CneSvc.cpp
+
+ OVERVIEW: Provide an overview of the implementation contained in this
+ file. Do not rehash the user-level documentation from the
+ header file. Maintainers, not users of this code will be
+ reading this. Describe anything of interest about the
+ algorithms or design, and call attention to anything tricky
+ or potentially confusing.
+
+ DEPENDENCIES: If the code in this file has any notable dependencies,
+ describe them here. Any initialization and sequencing
+ requirements, or assumptions about the overall state of
+ the system belong here.
+============================================================================*/
+
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Code Aurora nor
+ * the names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+/*----------------------------------------------------------------------------
+ * Include Files
+ * -------------------------------------------------------------------------*/
+#include "cne.h"
+#include "CRefCne.h"
+#include "RefCneDefs.h"
+
+/*----------------------------------------------------------------------------
+ * Preprocessor Definitions and Constants
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Type Declarations
+ * -------------------------------------------------------------------------*/
+#ifdef __cplusplus
+ extern "C" {
+#endif /* __cplusplus */
+
+extern void cnd_regCommandsNotificationCb
+(
+ int,
+ void (*)(int,int,void*),
+ int
+);
+
+#ifdef __cplusplus
+ }
+#endif /* __cplusplus */
+
+/*----------------------------------------------------------------------------
+ * Global Data Definitions
+ * -------------------------------------------------------------------------*/
+/*----------------------------------------------------------------------------
+ * Static Variable Definitions
+ * -------------------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------
+ * Static/Class member Function Declarations and Definitions
+ * -------------------------------------------------------------------------*/
+static cne_messageCbType cnd_sendUnsolicitedMsg;
+
+/*----------------------------------------------------------------------------
+ * Externalized Function Definitions
+ * -------------------------------------------------------------------------*/
+extern "C" void cne_init
+(
+ void
+)
+{
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION Function Name
+
+ * DESCRIPTION Function Description
+
+ * DEPENDENCIES
+
+ * RETURN VALUE
+
+ * SIDE EFFECTS
+ *--------------------------------------------------------------------------*/
+extern "C" void
+cne_processCommand
+(
+ int cmd,
+ void *cmd_data, /* event data depends on the type of event */
+ int cmd_len
+)
+{
+ //CRefCne::getInstance()->RefCneCmdHdlr(cmd, cmd_len, cmd_data);
+ CRefCne::RefCneCmdHdlr(cmd, cmd_len, cmd_data);
+ return;
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION Function Name
+
+ * DESCRIPTION Function Description
+
+ * DEPENDENCIES
+
+ * RETURN VALUE
+
+ * SIDE EFFECTS
+ *--------------------------------------------------------------------------*/
+extern "C" void cne_sendUnsolicitedMsg
+(
+ int targetFd,
+ int msgType,
+ int dataLen,
+ void *data
+)
+{
+
+ RCNE_MSG_ERROR("cne_sendUnsolicitedMsg called");
+ cnd_sendUnsolicitedMsg(targetFd,
+ msgType,
+ dataLen,
+ data);
+
+ RCNE_MSG_ERROR("cne_sendUnsolicitedMsg called GOT");
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION Function Name
+
+ * DESCRIPTION Function Description
+
+ * DEPENDENCIES
+
+ * RETURN VALUE
+
+ * SIDE EFFECTS
+ *--------------------------------------------------------------------------*/
+extern "C" void
+cne_regMessageCb
+(
+ cne_messageCbType cbFn
+)
+{
+ cnd_sendUnsolicitedMsg = cbFn;
+ return;
+}
+/*----------------------------------------------------------------------------
+ * FUNCTION Function Name
+
+ * DESCRIPTION Function Description
+
+ * DEPENDENCIES
+
+ * RETURN VALUE
+
+ * SIDE EFFECTS
+ *--------------------------------------------------------------------------*/
+void cne_svc_init
+(
+ void
+)
+{
+ /* create the RefCne obj */
+ RCNE_MSG_DEBUG("Reference CNE init called");
+ (void) CRefCne::getInstance();
+}
+
+