/// <summary> /// サーバーに前回データが存在しているかどうか /// </summary> /// <param name="deviceAdress">接続しているデバイスのアドレス(MACアドレス)</param> /// <param name="onReceivResult">通信結果を返すコールバック 1:有り 0:無し -1:エラー</param> static IEnumerator IsExistPriviousDataInServer(string deviceAdress, Action <int> onReceivResult) { Debug.Log("IsExistPriviousDataInServer"); //サーバー上にデバイスアドレスと一致するディレクトリが存在するかどうか調べる int result = -1; bool isComplete = false; FtpManager.DirectoryExists("/Data/" + deviceAdress, (int _result) => { result = _result; isComplete = true; }); yield return(new WaitUntil(() => isComplete)); Debug.Log(result == 1 ? "Privious data is Exist!" : "Privious data is NotExist..."); onReceivResult(result); }
/// <summary> /// FTPサーバーから最新のファームウェアのファイル名を取得する /// </summary> /// <param name="farmwareDirectory">G1D・H1Dのディレクトリパス</param> /// <param name="onGetFileName">目的のファイル名を受け取るコールバック</param> IEnumerator GetRatestFarmwareFileNameFromFtp(string farmwareDirectoryPath, Action <string> onGetFileName) { //FTPサーバー上にファームウェアのディレクトリが存在するか確認する int directoryExistResult = -1; bool isComplete = false; FtpManager.DirectoryExists(farmwareDirectoryPath, (int result) => { directoryExistResult = result; isComplete = true; }); yield return(new WaitUntil(() => isComplete)); Debug.Log(directoryExistResult == 1 ? "G1D directory is Exist!" : "G1D directory is NotExist..."); if (directoryExistResult == 1) { //指定したファームウェアディレクトリの名のファイル名をすべて取得する var getAllFarmwareFileNameList = FtpManager.GetAllList(farmwareDirectoryPath); yield return(getAllFarmwareFileNameList.AsCoroutine()); List <string> farmwareFileNameList = new List <string>(); if (getAllFarmwareFileNameList.Result != null && getAllFarmwareFileNameList.Result.Count > 0) { //取得したものには、ファイル、ディレクトリ、Linkが混在してるためファイルのみを取り出す farmwareFileNameList = getAllFarmwareFileNameList.Result .Where(data => int.Parse(data[0]) == 0) //ファイルのみ通す .Select(data => data[1]) //ファイル名に変換 .ToList(); //ファイルがあるか確認 if (farmwareFileNameList.Count == 0) { onGetFileName(null); yield break; } //ファームウェア以外のファイルをはじく farmwareFileNameList = farmwareFileNameList .Where(fileName => fileName.Contains(".mot")) .ToList(); //ファイルがあるか確認 if (farmwareFileNameList.Count == 0) { onGetFileName(null); yield break; } //取得したディレクトリを確認 foreach (var fileName in farmwareFileNameList) { Debug.Log("GetFile:" + fileName); } } else { //なにかしらのエラーが発生した場合 onGetFileName(null); yield break; } //ファイル名のリストが取得できれば、その中から最新のものを探す var ratestVersionFileIndex = farmwareFileNameList .Select((fileName, index) => new { FileName = fileName, Index = index }) .Aggregate((max, current) => (FarmwareFileNameToVersionLong(max.FileName) > FarmwareFileNameToVersionLong(current.FileName) ? max : current)) .Index; onGetFileName(farmwareFileNameList[ratestVersionFileIndex]); yield break; } onGetFileName(null); }