// // public IEnumerator initGPS() // // This method initializes the GPS module // it is called from the outside Manager script public IEnumerator initGPS(Action <bool> onResult, int _timeOut) { clearErrorLog(); // check if GPS is enabled by user if (!Input.location.isEnabledByUser) { gpsState = GPSstate.failed; errorCode = "GPS disabled|GPS must be enabled in order to use this application."; onResult(false); yield break; } // start up the location service // without started location service, there will be no GPS Input.location.Start(); // now try to get GPS data, but do not try longer // than the set timeout interval int timeOut = _timeOut; while (Input.location.status == LocationServiceStatus.Initializing && timeOut > 0) { yield return(new WaitForSeconds(1)); timeOut--; } // did we consume the whole timeout interval? if (timeOut < 1) { gpsState = GPSstate.timedOut; errorCode = "GPS timed out|Connection timed out. Try again later."; onResult(false); yield break; } // GPS did not return a value in the timeout interval if (Input.location.status == LocationServiceStatus.Failed) { gpsState = GPSstate.failed; errorCode = "GPS could not be initialized|Failed to initialize location service.\nTry again later or increase timeout interval."; onResult(false); yield break; } // success! // now get the data, store it in the GPS class and return else { latitude = Input.location.lastData.latitude; longitude = Input.location.lastData.longitude; gpsState = GPSstate.valid; Input.location.Stop(); onResult(true); yield break; } }
// // public void clearErrorLog() // // Before starting a new try, // the last connection's event logs // have to be reset // public void clearErrorLog() { gpsState = GPSstate.undetermined; errorCode = ""; }