public void WriteProfile(GarminFitnessPlugin.Data.GarminProfile profile)
        {
            Logger.Instance.LogText("Comm. : Writing profile");

            Debug.Assert(m_CurrentOperation == DeviceOperations.Idle);

            m_CancellationError = "";
            m_Controller.CommunicatorBridge.SetDeviceNumber(m_DeviceNumber);

            if (SupportsFITProfile)
            {
                if (m_FITSportFileWritePath.Equals(m_FITSettingsFileWritePath))
                {
                    Logger.Instance.LogText("Comm. : Writing FIT profile");

                    IList<String> filenames;

                    ClearTempDirectory();

                    filenames = ProfileExporter.ExportProfileToFIT(m_TempDirectoryLocation);

                    Logger.Instance.LogText(String.Format("Comm. : {0} FIT profile files", filenames.Count));

                    m_CurrentOperation = DeviceOperations.WriteProfile;

                    m_Controller.CommunicatorBridge.WriteFilesToDevice(filenames, m_FITSportFileWritePath);
                }
                else
                {
                    throw new Exception("Different export path for setting & sport FIT files.  Please report this problem to PissedOffCil on the SportTracks forum.");
                }
            }
            else
            {
                string fileName = "UserProfile.tcx";
                MemoryStream textStream = new MemoryStream();

                ProfileExporter.ExportProfile(profile, textStream);
                string xmlCode = Encoding.UTF8.GetString(textStream.GetBuffer());

                m_CurrentOperation = DeviceOperations.WriteProfile;

                m_Controller.CommunicatorBridge.WriteProfileToFitnessDevice(xmlCode, fileName);
            }
        }
        public void ReadProfile(GarminFitnessPlugin.Data.GarminProfile profile)
        {
            Logger.Instance.LogText("Comm. : Reading profile");

            Debug.Assert(m_CurrentOperation == DeviceOperations.Idle);

            m_CancellationError = "";
            m_Controller.CommunicatorBridge.SetDeviceNumber(m_DeviceNumber);

            if (SupportsFITProfile)
            {
                Logger.Instance.LogText("Comm. : Reading FIT directory for profile");

                m_MassStorageFileReadCount = 0;
                m_IsReadingDirectory = true;
                ClearTempDirectory();

                m_CurrentOperation = DeviceOperations.ReadFITProfile;
                m_Controller.CommunicatorBridge.GetFITDirectoryInfo();
            }
            else
            {
                m_CurrentOperation = DeviceOperations.ReadProfile;
                m_Controller.CommunicatorBridge.ReadProfileFromFitnessDevice();
            }
        }