Example #1
0
        public cUserHandler(cStreamHandler StreamHandler)
        {
            l_Users = new List <cAntUsers>();

            userPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "CycleSoft\\Users\\");
            Directory.CreateDirectory(userPath);
            userFileArray = Directory.GetFiles(userPath, "*.xml");

            for (int i = 0; i < userFileArray.Length; i++)
            {
                cAntUsers newUser = new cAntUsers();

                Stream userContents = File.Open(userFileArray[i], FileMode.Open);
                reader = XmlReader.Create(userContents);

                while (!reader.EOF)
                {
                    /* Content Like:
                     *  <User fName = "Greg" lName = "GT" ftp = "245">
                     *          <power></power>
                     *          <wheelsize>2170</wheelsize>
                     *          <speedCad>64522</speedCad>
                     *          <heartrate>4030</heartrate>
                     *          <virtPower>16</virtPower>
                     *  </User>
                     */
                    reader.Read();
                    switch (reader.Name)
                    {
                    case "User":
                        if (reader.HasAttributes)
                        {
                            newUser.firstName = reader.GetAttribute("fName");
                            newUser.lastName  = reader.GetAttribute("lName");
                            newUser.ftp       = Convert.ToInt16(reader.GetAttribute("ftp"));
                        }
                        break;

                    case "power":
                        try
                        {
                            ushort sAddress     = (ushort)reader.ReadElementContentAsInt();
                            int    pwrStreamIdx = StreamHandler.addStream(sAddress, (byte)sensorTypes.Power);
                            if (pwrStreamIdx >= 0)
                            {
                                StreamHandler.pwrStreams[pwrStreamIdx].updateEvent += newUser.updatePwrEvent;
                                newUser.activePwrStream = StreamHandler.pwrStreams[pwrStreamIdx];
                            }
                        }
                        catch
                        { }
                        break;

                    case "speedCad":
                        try
                        {
                            ushort sAddress     = (ushort)reader.ReadElementContentAsInt();
                            int    spdStreamIdx = StreamHandler.addStream(sAddress, (byte)sensorTypes.SpeedCadence);
                            if (spdStreamIdx >= 0)
                            {
                                StreamHandler.spdStreams[spdStreamIdx].updateEvent += newUser.updateSpdCadEvent;
                                newUser.activeSpeedStream = StreamHandler.spdStreams[spdStreamIdx];
                            }
                        }
                        catch
                        { }
                        break;

                    case "heartrate":
                        try
                        {
                            ushort sAddress    = (ushort)reader.ReadElementContentAsInt();
                            int    hbStreamIdx = StreamHandler.addStream(sAddress, (byte)sensorTypes.HeartRate);
                            if (hbStreamIdx >= 0)
                            {
                                StreamHandler.hbStreams[hbStreamIdx].updateEvent += newUser.updateHrEvent;
                                newUser.activeHrStream = StreamHandler.hbStreams[hbStreamIdx];
                            }
                        }
                        catch
                        { }
                        break;

                    case "wheelsize":
                        try
                        {
                            newUser.wheelSize = reader.ReadElementContentAsInt();
                        }
                        catch
                        { newUser.wheelSize = 2100; }
                        break;

                    case "virtPower":
                        try
                        {
                            newUser.ptrSPwr = reader.ReadElementContentAsInt();
                        }
                        catch
                        { newUser.ptrSPwr = -1; }
                        break;

                    default:
                        break;
                    }
                }
                l_Users.Add(newUser);
                reader.Close();
                userContents.Close();
            }
        }