/// <summary>
        /// サーバーからHttpで前回データのファイルパスを全て取得する
        /// </summary>
        /// <param name="deviceAdress">接続しているデバイスのアドレス(MACアドレス)</param>
        /// <param name="onGetDataPathList">データのパスリスト取得完了時に呼び出されるコールバック。取得失敗時はnull</param>
        public static IEnumerator GetPriviousDataPathList(string deviceAdress, Action <List <string> > onGetDataPathList)
        {
            Debug.Log("GetPriviousDataPathList");
            //スリープしないように設定
            Screen.sleepTimeout = SleepTimeout.NeverSleep;

            if (!HttpManager.IsInternetAvailable())
            {
                //接続失敗
                Debug.Log("Connection Failed...");
                onGetDataPathList(null);
                //スリープ設定解除
                Screen.sleepTimeout = SleepTimeout.SystemSetting;
                yield break;
            }
            Debug.Log("Connection Success");

            var devicePath   = "/RD8001/Data/" + deviceAdress;
            var fileListTask = HttpManager.GetFileList(devicePath, HttpManager.FILE_TYPE_CSV, false);

            yield return(fileListTask.AsCoroutine());

            List <string> fileFullPathList = fileListTask.Result;

            onGetDataPathList(fileFullPathList);
            //スリープ設定解除
            Screen.sleepTimeout = SleepTimeout.SystemSetting;
        }
        /// <summary>
        /// サーバーからHttpで最新のファームウェアのファイル名を取得する
        /// </summary>
        /// <param name="firmwareDirectory">G1D・H1Dのディレクトリパス</param>
        /// <param name="onGetFileName">目的のファイル名を受け取るコールバック</param>
        /// <param name="fileExtension">.mot, .bin</param>
        public static IEnumerator GetLatestFirmwareFileNameByHttp(string firmwareDirectoryPath, Action <string> onGetFileName, string fileExtension, Action <bool> onResponseIsError = null)
        {
            bool directoryExistResult = false;

            if (HttpManager.IsInternetAvailable())
            {
                //HTTPでサーバー上にファームウェアのディレクトリが存在するか確認する
                var isDirExistTask = HttpManager.IsDirectoryExist(firmwareDirectoryPath);
                yield return(isDirExistTask.AsCoroutine());

                directoryExistResult = isDirExistTask.Result;
                Debug.Log(directoryExistResult ? "G1D directory is Exist!" : "G1D directory is NotExist...");
            }

            if (directoryExistResult)
            {
                //指定したファームウェアディレクトリの名のファイル名をすべて取得する
                var firmwareFileNameListTask = HttpManager.GetFileList(firmwareDirectoryPath, HttpManager.FILE_TYPE_BIN, true);
                yield return(firmwareFileNameListTask.AsCoroutine());

                if (firmwareFileNameListTask.Result != null)
                {
                    List <string> firmwareFileNameList = firmwareFileNameListTask.Result;

                    //ファームウェア以外のファイルをはじく
                    firmwareFileNameList = firmwareFileNameList
                                           .Where(fileName => fileName.Contains(fileExtension))
                                           .ToList();

                    //ファイルがあるか確認
                    if (firmwareFileNameList.Count == 0)
                    {
                        onGetFileName(null);
                        Debug.Log("No firmwareFile");
                    }
                    else
                    {
                        //取得したディレクトリを確認
                        //foreach (var fileName in firmwareFileNameList)
                        //{
                        //    Debug.Log("GetFile:" + fileName);
                        //}

                        //ファイル名のリストが取得できれば、その中から最新のものを探す
                        var ratestVersionFileIndex = firmwareFileNameList
                                                     .Select((fileName, index) => new { FileName = fileName, Index = index })
                                                     .Aggregate((max, current) => (FirmwareFileNameToVersionLong(max.FileName) > FirmwareFileNameToVersionLong(current.FileName) ? max : current))
                                                     .Index;

                        onGetFileName(firmwareFileNameList[ratestVersionFileIndex]);
                    }

                    if (onResponseIsError != null)
                    {
                        onResponseIsError(false);
                    }
                    yield break;
                }
            }

            if (onResponseIsError != null)
            {
                onResponseIsError(true);
            }
            onGetFileName(null);
        }