Exemple #1
0
        public void RoastProfileSelChanged()
        {
            // if changed manually in picker (this function is also called, if we programmatically change RoastProfileSel)m
            // we want to remove formerly selected special (id >= 100) entry, so it connot be choosen manually in the picker again
            if (RoastProfileSel.isManualChoiceAllowed ||                       // manually template choosen or
                (RoastProfileSel.Id != lastSelectedRoastProfile.Id))           // programmatically other special entry choosen
            {
                if ((lastSelectedRoastProfile?.Id > 100) || (lastSelectedRoastProfile?.Id == 0))
                {
                    RoastProfiles.Remove(lastSelectedRoastProfile);
                    OnPropertyChanged(nameof(RoastProfiles));
                }
            }

            if (!string.IsNullOrEmpty(RoastProfileSel.Data))
            {
                // if (manually) template choosen -> load template
                byte[] mem   = new byte[80];
                int    index = 16;
                string line  = RoastProfileSel.Data;
                if (string.IsNullOrEmpty(line))
                {
                    return;
                }

                try
                {
                    int j = 0;
                    while ((j < line.Length) && (index < 80))
                    {
                        if ((line[j] == ' ') || (line[j] == '\t'))
                        {
                            j++;
                            continue;
                        }

                        mem[index++] = byte.Parse(line.Substring(j, 2), NumberStyles.HexNumber);
                        j           += 2;
                    }
                }
                catch
                {
                    Console.WriteLine("Error: unknown line format: {0}", line);
                }

                nPause = PauseDuration.GetSliderTicks(256 * mem[48] + mem[49]);
                SetControlsVisibility(mem[41], false);

                DataBag.SetData(mem);
                MessagingCenter.Send(this, "DataChanged", DataBag.GetData());
            }

            lastSelectedRoastProfile = RoastProfileSel;
        }
Exemple #2
0
        public void SetControlsVisibility(byte Type, bool externalData = true)
        {
            RoastProfile r;

            switch (Type)
            {
            case 1:
                r = new RoastProfile()
                {
                    Id = 101, Name = "(RGB from NFC or File)", Data = "", isManualChoiceAllowed = false
                };
                nPauseEnabled     = true;
                cbMultiUseEnabled = true;
                break;

            case 2:
                r = new RoastProfile()
                {
                    Id = 102, Name = "(Roast from NFC or File)", Data = "", isManualChoiceAllowed = false
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            case 4:
                r = new RoastProfile()
                {
                    Id = 104, Name = "(Grind from NFC or File)", Data = "", isManualChoiceAllowed = false
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            case 5:
                r = new RoastProfile()
                {
                    Id = 103, Name = "(Grind/Brew from NFC or File)", Data = "", isManualChoiceAllowed = false
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            case 6:
                r = new RoastProfile()
                {
                    Id = 105, Name = "(Brew from NFC or File)", Data = "", isManualChoiceAllowed = false
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            case 0x0f:
                r = new RoastProfile()
                {
                    Id = 99, Name = "Reset air filter counter", Data = "AA96644B 05AA9641 3278AAAC 5F5005AA B6414696 376E5A2D 230F0F00 06018D7C 0000", isManualChoiceAllowed = true
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            case 0x12:
                r = new RoastProfile()
                {
                    Id = 98, Name = "Clean grinder", Data = "AAB44B4B00 AAB432464E  AAB44B5A99 AAB4324666 3C465A2D 32 12  1E  000501 8D5E 0005", isManualChoiceAllowed = true
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            case 0x13:
                r = new RoastProfile()
                {
                    Id = 97, Name = "Descale brewsystem", Data = "AAB44B4B05 AAB44B465F  AAB24B5005 AAB24B4687 37465A2D 23 13  2D  000601 7F56 0007", isManualChoiceAllowed = true
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;

            // RoastProfiles.Add(new RoastProfile() { Id = 101, Name = "(RGB from NFC or File)",        Data = "", isManualChoiceAllowed = true});
            // RoastProfiles.Add(new RoastProfile() { Id = 102, Name = "(Roast from NFC or File)",      Data = "", isManualChoiceAllowed = true});
            // RoastProfiles.Add(new RoastProfile() { Id = 103, Name = "(Grind/Brew from NFC or File)", Data = "", isManualChoiceAllowed = false});
            // RoastProfiles.Add(new RoastProfile() { Id = 104, Name = "(Grind from NFC or File)",      Data = "", isManualChoiceAllowed = false});
            // RoastProfiles.Add(new RoastProfile() { Id = 105, Name = "(Brew from NFC or File)",       Data = "", isManualChoiceAllowed = false});

            default:
                r = new RoastProfile()
                {
                    Id = 92, Name = "(unknown)", Data = "", isManualChoiceAllowed = false
                };
                nPauseEnabled     = false;
                cbMultiUseEnabled = true;
                break;
            }

            if (externalData)
            {
                if (RoastProfiles.Where(p => p.Id == r.Id).FirstOrDefault() == null)
                {
                    RoastProfiles.Add(r);
                }

                // workaround for throwing OutOfRangeException in OnRoastProfileSelChanged on ios
                if ((lastSelectedRoastProfile?.Id > 100) || (lastSelectedRoastProfile?.Id == 0))
                {
                    RoastProfiles.Remove(lastSelectedRoastProfile);
                }

                RoastProfileSel = RoastProfiles.Where(p => p.Id == r.Id).First();
            }
        }