Reconcile with jb-mr1-factory-release jb-mr1-release - do not merge

Change-Id: Ifb0a30557854004e5a4c90944908a91d70ceb8c6
diff --git a/etc/gps.conf b/etc/gps.conf
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/LocApiRpcAdapter.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/LocApiRpcAdapter.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/debug.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/debug.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_fixup.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_fixup.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_log.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_log.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_rpc_glue.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_rpc_glue.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_sync_call.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_sync_call.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_apicb_appinit.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_apicb_appinit.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpcAdapter.cpp b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpcAdapter.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_fixup.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_fixup.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_log.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_log.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_rpc_glue.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_rpc_glue.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_sync_call.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_sync_call.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_apicb_appinit.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_apicb_appinit.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_cb_rpc.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_cb_rpc.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_common_rpc.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_common_rpc.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_rpc.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_rpc.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_apicb_appinit.h b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_apicb_appinit.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_svc.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_svc.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_xdr.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_clnt.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_clnt.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_common_xdr.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_common_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_xdr.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_apicb_appinit.c b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_apicb_appinit.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_cb_svc.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_cb_svc.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_cb_xdr.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_cb_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_clnt.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_clnt.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_common_xdr.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_common_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_fixup.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_fixup.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_rpc_glue.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_rpc_glue.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-1240/loc_api_xdr.c b/loc_api/libloc_api-rpc/gen-1240/loc_api_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_cb_svc.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_cb_svc.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_cb_xdr.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_cb_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_clnt.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_clnt.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_common_xdr.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_common_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_fixup.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_fixup.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_rpc_glue.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_rpc_glue.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/gen-3200/loc_api_xdr.c b/loc_api/libloc_api-rpc/gen-3200/loc_api_xdr.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-1240/loc_api.h b/loc_api/libloc_api-rpc/inc-1240/loc_api.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-1240/loc_api_cb.h b/loc_api/libloc_api-rpc/inc-1240/loc_api_cb.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-1240/loc_api_common.h b/loc_api/libloc_api-rpc/inc-1240/loc_api_common.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-1240/loc_api_fixup.h b/loc_api/libloc_api-rpc/inc-1240/loc_api_fixup.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-1240/loc_apicb_appinit.h b/loc_api/libloc_api-rpc/inc-1240/loc_apicb_appinit.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-3200/loc_api.h b/loc_api/libloc_api-rpc/inc-3200/loc_api.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-3200/loc_api_cb.h b/loc_api/libloc_api-rpc/inc-3200/loc_api_cb.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-3200/loc_api_common.h b/loc_api/libloc_api-rpc/inc-3200/loc_api_common.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-3200/loc_api_fixup.h b/loc_api/libloc_api-rpc/inc-3200/loc_api_fixup.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc-3200/loc_apicb_appinit.h b/loc_api/libloc_api-rpc/inc-3200/loc_apicb_appinit.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc/debug.h b/loc_api/libloc_api-rpc/inc/debug.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/inc/loc_api_rpc_glue.h b/loc_api/libloc_api-rpc/inc/loc_api_rpc_glue.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api-rpc/src/loc_apicb_appinit.c b/loc_api/libloc_api-rpc/src/loc_apicb_appinit.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/gps.c b/loc_api/libloc_api/gps.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng.cpp b/loc_api/libloc_api/loc_eng.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng.h b/loc_api/libloc_api/loc_eng.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng_ioctl.cpp b/loc_api/libloc_api/loc_eng_ioctl.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng_ioctl.h b/loc_api/libloc_api/loc_eng_ioctl.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng_ni.cpp b/loc_api/libloc_api/loc_eng_ni.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng_ni.h b/loc_api/libloc_api/loc_eng_ni.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng_xtra.cpp b/loc_api/libloc_api/loc_eng_xtra.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api/loc_eng_xtra.h b/loc_api/libloc_api/loc_eng_xtra.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/LocApiAdapter.cpp b/loc_api/libloc_api_50001/LocApiAdapter.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/LocApiAdapter.h b/loc_api/libloc_api_50001/LocApiAdapter.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/gps.c b/loc_api/libloc_api_50001/gps.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc.cpp b/loc_api/libloc_api_50001/loc.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc.h b/loc_api/libloc_api_50001/loc.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng.h b/loc_api/libloc_api_50001/loc_eng.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_agps.cpp b/loc_api/libloc_api_50001/loc_eng_agps.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_agps.h b/loc_api/libloc_api_50001/loc_eng_agps.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn.cpp b/loc_api/libloc_api_50001/loc_eng_dmn_conn.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn.h b/loc_api/libloc_api_50001/loc_eng_dmn_conn.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.c b/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.h b/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.c b/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.h b/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.cpp b/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.h b/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.c b/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.c
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.h b/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_log.cpp b/loc_api/libloc_api_50001/loc_eng_log.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_log.h b/loc_api/libloc_api_50001/loc_eng_log.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_msg.cpp b/loc_api/libloc_api_50001/loc_eng_msg.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_msg.h b/loc_api/libloc_api_50001/loc_eng_msg.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_msg_id.h b/loc_api/libloc_api_50001/loc_eng_msg_id.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_ni.cpp b/loc_api/libloc_api_50001/loc_eng_ni.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_ni.h b/loc_api/libloc_api_50001/loc_eng_ni.h
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_xtra.cpp b/loc_api/libloc_api_50001/loc_eng_xtra.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/libloc_api_50001/loc_eng_xtra.h b/loc_api/libloc_api_50001/loc_eng_xtra.h
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/LocApiV02Adapter.cpp b/loc_api/loc_api_v02/LocApiV02Adapter.cpp
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/LocApiV02Adapter.h b/loc_api/loc_api_v02/LocApiV02Adapter.h
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/loc_api_sync_req.c b/loc_api/loc_api_v02/loc_api_sync_req.c
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/loc_api_sync_req.h b/loc_api/loc_api_v02/loc_api_sync_req.h
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/loc_api_v02_client.c b/loc_api/loc_api_v02/loc_api_v02_client.c
old mode 100755
new mode 100644
index 4d34adc..bb74511
--- a/loc_api/loc_api_v02/loc_api_v02_client.c
+++ b/loc_api/loc_api_v02/loc_api_v02_client.c
@@ -71,7 +71,8 @@
 #endif //LOC_UTIL_TARGET_OFF_TARGET
 
 //timeout in ms to wait for the service to come up
-#define LOC_CLIENT_SERVICE_TIMEOUT  (20000)
+#define LOC_CLIENT_SERVICE_TIMEOUT_UNIT  (4000)
+#define LOC_CLIENT_SERVICE_TIMEOUT_TOTAL  (60000)
 
 /* Table to relate eventId, size and mask value used to enable the event*/
 typedef struct
@@ -1401,14 +1402,17 @@
 static locClientStatusEnumType locClientQmiCtrlPointInit(
     locClientCallbackDataType *pLocClientCbData)
 {
-  uint32_t num_services, num_entries = 10;
   qmi_client_type clnt, notifier;
-  qmi_client_os_params os_params;
+  bool notifierInitFlag = false;
+  locClientStatusEnumType status = eLOC_CLIENT_SUCCESS;
+  // instances of this service
+  qmi_service_info *pServiceInfo = NULL;
 
-  // num instances of this service
-  qmi_service_info serviceInfo[5];
-
+  do
+  {
+  uint32_t num_services = 0, num_entries = 0;
   qmi_client_error_type rc = QMI_NO_ERR;
+  bool nosignal = false;
 
   // Get the service object for the qmiLoc Service
   qmi_idl_service_object_type locClientServiceObject =
@@ -1419,73 +1423,107 @@
   {
       LOC_LOGE("%s:%d]: qmiLoc_get_service_object_v02 failed\n" ,
                   __func__, __LINE__ );
-    return(eLOC_CLIENT_FAILURE_INTERNAL);
+       status = eLOC_CLIENT_FAILURE_INTERNAL;
+       break;
   }
 
-
-  // register for service notification
-  rc = qmi_client_notifier_init(locClientServiceObject, &os_params, &notifier);
-
-  if(rc != QMI_NO_ERR)
-  {
-    LOC_LOGE("%s:%d]: qmi_client_notifier_init failed\n",
-                  __func__, __LINE__ );
-    return(eLOC_CLIENT_FAILURE_INTERNAL);
-  }
-
-  /* If service is not up wait on a signal until the service is up
-   * or a timeout occurs. */
-
-  QMI_CCI_OS_SIGNAL_WAIT(&os_params, LOC_CLIENT_SERVICE_TIMEOUT);
-
-  if(QMI_CCI_OS_SIGNAL_TIMED_OUT(&os_params))
-  {
-    // timed out, return with error
-    LOC_LOGE("%s:%d]: timed out waiting for service\n",
-                    __func__, __LINE__);
-
-    return(eLOC_CLIENT_FAILURE_TIMEOUT);
-  }
-  else
-  {
     // get the service addressing information
     rc = qmi_client_get_service_list( locClientServiceObject, NULL, NULL,
                                       &num_services);
-    LOC_LOGV("%s:%d]: qmi_client_get_service_list() returned %d "
-                  "num_services = %d\n", __func__, __LINE__, rc,
-                  num_services);
+    LOC_LOGV("%s:%d]: qmi_client_get_service_list() first try rc %d, "
+             "num_services %d", __func__, __LINE__, rc, num_services);
+
+    if (rc != QMI_NO_ERR) {
+        // bummer, service list is not up.
+        // We need to try again after a timed wait
+        qmi_client_os_params os_params;
+        int timeout = 0;
+
+        // register for service notification
+        rc = qmi_client_notifier_init(locClientServiceObject, &os_params, &notifier);
+        notifierInitFlag = (NULL != notifier);
+
+        if (rc != QMI_NO_ERR) {
+            LOC_LOGE("%s:%d]: qmi_client_notifier_init failed %d\n",
+                     __func__, __LINE__, rc);
+            status = eLOC_CLIENT_FAILURE_INTERNAL;
+            break;
+        }
+
+        do {
+            QMI_CCI_OS_SIGNAL_CLEAR(&os_params);
+            /* If service is not up wait on a signal until the service is up
+             * or a timeout occurs. */
+            QMI_CCI_OS_SIGNAL_WAIT(&os_params, LOC_CLIENT_SERVICE_TIMEOUT_UNIT);
+            nosignal = QMI_CCI_OS_SIGNAL_TIMED_OUT(&os_params);
+
+            // get the service addressing information
+            rc = qmi_client_get_service_list(locClientServiceObject, NULL, NULL,
+                                             &num_services);
+
+            timeout += LOC_CLIENT_SERVICE_TIMEOUT_UNIT;
+
+            LOC_LOGV("%s:%d]: qmi_client_get_service_list() rc %d, nosignal %d, "
+                     "total timeout %d", __func__, __LINE__, rc, nosignal, timeout);
+        } while (timeout < LOC_CLIENT_SERVICE_TIMEOUT_TOTAL && nosignal && rc != QMI_NO_ERR);
+    }
+
+    if (0 == num_services || rc != QMI_NO_ERR) {
+        if (!nosignal) {
+            LOC_LOGE("%s:%d]: qmi_client_get_service_list failed even though"
+                     "service is up !!!  Error %d \n", __func__, __LINE__, rc);
+            status = eLOC_CLIENT_FAILURE_INTERNAL;
+        } else {
+            LOC_LOGE("%s:%d]: qmi_client_get_service_list failed after retries,"
+                     " final Err %d", __func__, __LINE__, rc);
+            status = eLOC_CLIENT_FAILURE_TIMEOUT;
+        }
+        break;
+    }
+
+    pServiceInfo =
+      (qmi_service_info *)malloc(num_services * sizeof(qmi_service_info));
+
+    if(NULL == pServiceInfo)
+    {
+      LOC_LOGE("%s:%d]: could not allocate memory for serviceInfo !!\n",
+               __func__, __LINE__);
+
+      status = eLOC_CLIENT_FAILURE_INTERNAL;
+      break;
+    }
+
+    //set the number of entries to get equal to the total number of
+    //services.
+    num_entries = num_services;
+    //populate the serviceInfo
+    rc = qmi_client_get_service_list( locClientServiceObject, pServiceInfo,
+                                      &num_entries, &num_services);
+
+
+    LOC_LOGV("%s:%d]: qmi_client_get_service_list()"
+                  " returned %d num_entries = %d num_services = %d\n",
+                  __func__, __LINE__,
+                   rc, num_entries, num_services);
 
     if(rc != QMI_NO_ERR)
     {
-      LOC_LOGE("%s:%d]: qmi_client_get_service_list failed even though"
-                    "service is up !!!\n", __func__, __LINE__);
+      LOC_LOGE("%s:%d]: qmi_client_get_service_list Error %d \n",
+                    __func__, __LINE__, rc);
 
-      return(eLOC_CLIENT_FAILURE_INTERNAL);
+      status = eLOC_CLIENT_FAILURE_INTERNAL;
+      break;
     }
 
-  }
-
-  //get service info to be used in qmi_client_init
-  rc = qmi_client_get_service_list( locClientServiceObject, serviceInfo,
-                                    &num_entries, &num_services);
-
-  LOC_LOGV("%s:%d]: qmi_client_get_service_list()"
-                " returned %d num_entries = %d num_services = %d\n",
-                __func__, __LINE__,
-                 rc, num_entries, num_services);
-
-  if(rc != QMI_NO_ERR)
-  {
-    LOC_LOGE("%s:%d]: qmi_client_get_service_list Error %d \n",
-                  __func__, __LINE__, rc);
-
-    return(eLOC_CLIENT_FAILURE_INTERNAL);
-  }
-
   LOC_LOGV("%s:%d]: passing the pointer %p to qmi_client_init \n",
                     __func__, __LINE__, pLocClientCbData);
+
   // initialize the client
-  rc = qmi_client_init(&serviceInfo[0], locClientServiceObject,
+    //sent the address of the first service found
+    // if IPC router is present, this will go to the service instance
+    // enumerated over IPC router, else it will go over the next transport where
+    // the service was enumerated.
+    rc = qmi_client_init(&pServiceInfo[0], locClientServiceObject,
                        locClientIndCb, (void *) pLocClientCbData,
                        NULL, &clnt);
 
@@ -1493,7 +1531,9 @@
   {
     LOC_LOGE("%s:%d]: qmi_client_init error %d\n",
                   __func__, __LINE__, rc);
-    return(eLOC_CLIENT_FAILURE_INTERNAL);
+
+      status = eLOC_CLIENT_FAILURE_INTERNAL;
+      break;
   }
 
   LOC_LOGV("%s:%d]: passing the pointer %p to"
@@ -1508,14 +1548,30 @@
   {
     LOC_LOGE("%s:%d]: could not register QCCI error callback error:%d\n",
                   __func__, __LINE__, rc);
-    return (eLOC_CLIENT_FAILURE_INTERNAL);
+
+      status = eLOC_CLIENT_FAILURE_INTERNAL;
+      break;
   }
 
   // copy the clnt handle returned in qmi_client_init
   memcpy(&(pLocClientCbData->userHandle), &clnt, sizeof(qmi_client_type));
 
-  return(eLOC_CLIENT_SUCCESS);
+    status = eLOC_CLIENT_SUCCESS;
 
+  } while(0);
+
+  /* release the notifier handle */
+  if(true == notifierInitFlag)
+  {
+    qmi_client_release(notifier);
+  }
+
+  if(NULL != pServiceInfo)
+  {
+    free((void *)pServiceInfo);
+  }
+
+  return status;
 }
 //----------------------- END INTERNAL FUNCTIONS ----------------------------------------
 
diff --git a/loc_api/loc_api_v02/loc_api_v02_client.h b/loc_api/loc_api_v02/loc_api_v02_client.h
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/loc_api_v02_log.c b/loc_api/loc_api_v02/loc_api_v02_log.c
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/loc_api_v02_log.h b/loc_api/loc_api_v02/loc_api_v02_log.h
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/loc_util_log.h b/loc_api/loc_api_v02/loc_util_log.h
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/location_service_v02.c b/loc_api/loc_api_v02/location_service_v02.c
old mode 100755
new mode 100644
diff --git a/loc_api/loc_api_v02/location_service_v02.h b/loc_api/loc_api_v02/location_service_v02.h
old mode 100755
new mode 100644
diff --git a/loc_api/ulp/inc/ulp.h b/loc_api/ulp/inc/ulp.h
old mode 100755
new mode 100644
diff --git a/utils/linked_list.c b/utils/linked_list.c
old mode 100755
new mode 100644
diff --git a/utils/linked_list.h b/utils/linked_list.h
old mode 100755
new mode 100644
diff --git a/utils/loc_cfg.cpp b/utils/loc_cfg.cpp
old mode 100755
new mode 100644
diff --git a/utils/loc_cfg.h b/utils/loc_cfg.h
old mode 100755
new mode 100644
diff --git a/utils/loc_log.cpp b/utils/loc_log.cpp
old mode 100755
new mode 100644
diff --git a/utils/loc_log.h b/utils/loc_log.h
old mode 100755
new mode 100644
diff --git a/utils/log_util.h b/utils/log_util.h
old mode 100755
new mode 100644
diff --git a/utils/msg_q.c b/utils/msg_q.c
old mode 100755
new mode 100644
diff --git a/utils/msg_q.h b/utils/msg_q.h
old mode 100755
new mode 100644