public Outputs Create(Inputs inputs) {
     LifeCycle lc = new LifeCycle(inputs.ENozzle1,
                                  inputs.ENozzle2,
                                  inputs.ENozzle3);
     Fill fi = new Fill(lc.EStart.Map(u => Unit.UNIT),
                        inputs.EFuelPulses, inputs.Calibration,
                        inputs.Price1, inputs.Price2, inputs.Price3,
                        lc.EStart);
     return new Outputs()
         .SetDelivery(lc.FillActive.Map(
             of =>
                 of.Equals(Optional<Fuel>.Of(Fuel.ONE))   ? Delivery.FAST1 :
                 of.Equals(Optional<Fuel>.Of(Fuel.TWO)) ? Delivery.FAST2 :
                 of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? Delivery.FAST3 : 
                                                      Delivery.OFF))
         .SetSaleCostLcd(fi.DollarsDelivered.Map(
             q => Formatters.FormatSaleCost(q)))
         .SetSaleQuantityLcd(fi.LitersDelivered.Map(
             q => Formatters.FormatSaleQuantity(q)))
         .SetPriceLcd1(PriceLCD(lc.FillActive, fi.Price, Fuel.ONE,
             inputs))
         .SetPriceLcd2(PriceLCD(lc.FillActive, fi.Price, Fuel.TWO,
             inputs))
         .SetPriceLcd3(PriceLCD(lc.FillActive, fi.Price, Fuel.THREE,
             inputs));
 }
Example #2
0
 public Outputs Create(Inputs inputs) 
 {
     LifeCycle lc = new LifeCycle(inputs.ENozzle1,
                                  inputs.ENozzle2,
                                  inputs.ENozzle3);
     return new Outputs()
         .SetDelivery(lc.FillActive.Map(
             of =>
                 of.Equals(Optional<Fuel>.Of(Fuel.ONE))   ? Delivery.FAST1 :
                 of.Equals(Optional<Fuel>.Of(Fuel.TWO))   ? Delivery.FAST2 :
                 of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? Delivery.FAST3 : 
                                                      Delivery.OFF))
         .SetSaleQuantityLcd(lc.FillActive.Map(
             of =>
                 of.Equals(Optional<Fuel>.Of(Fuel.ONE))   ? "1" :
                 of.Equals(Optional<Fuel>.Of(Fuel.TWO))   ? "2" :
                 of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? "3" : ""));
 }
 public Outputs Create(Inputs inputs) 
 {
     LifeCycle lc = new LifeCycle(inputs.ENozzle1,
                                  inputs.ENozzle2,
                                  inputs.ENozzle3);
     Behavior<Double> litersDelivered =
             Accumulate(lc.EStart.Map(u => Unit.UNIT),
                        inputs.EFuelPulses,
                        inputs.Calibration);
     return new Outputs()
         .SetDelivery(lc.FillActive.Map(
             Of =>
                 Of.Equals(Optional<Fuel>.Of(Fuel.ONE))   ? Delivery.FAST1 :
                 Of.Equals(Optional<Fuel>.Of(Fuel.TWO))   ? Delivery.FAST2 :
                 Of.Equals(Optional<Fuel>.Of(Fuel.THREE)) ? Delivery.FAST3 : 
                                                      Delivery.OFF))
         .SetSaleQuantityLcd(litersDelivered.Map(
                 q => Formatters.FormatSaleQuantity(q)));
 }
Example #4
0
        public Outputs Create(Inputs inputs)
        {
            LifeCycle lc = new LifeCycle(inputs.ENozzle1,
                                         inputs.ENozzle2,
                                         inputs.ENozzle3);

            return(new Outputs()
                   .SetDelivery(lc.FillActive.Map(
                                    of =>
                                    of.Equals(Optional <Fuel> .Of(Fuel.ONE))   ? Delivery.FAST1 :
                                    of.Equals(Optional <Fuel> .Of(Fuel.TWO))   ? Delivery.FAST2 :
                                    of.Equals(Optional <Fuel> .Of(Fuel.THREE)) ? Delivery.FAST3 :
                                    Delivery.OFF))
                   .SetSaleQuantityLcd(lc.FillActive.Map(
                                           of =>
                                           of.Equals(Optional <Fuel> .Of(Fuel.ONE))   ? "1" :
                                           of.Equals(Optional <Fuel> .Of(Fuel.TWO))   ? "2" :
                                           of.Equals(Optional <Fuel> .Of(Fuel.THREE)) ? "3" : "")));
        }
 public NotifyPointOfSale(
   LifeCycle lc,
   Event<Unit> eClearSale,
   Fill fi)
 {
   Behavior<Boolean> locked = lc.EStart.Map(u => true).Merge(eClearSale.Map(u => false)).Hold(false);
   EStart = lc.EStart.Gate(locked.Map(l => !l));
   EEnd = lc.EEnd.Gate(locked);
   FuelFlowing = EStart.Map(f => Optional<Fuel>.Of(f))
     .Merge(EEnd.Map(f => Optional<Fuel>.Empty())).Hold(Optional<Fuel>.Empty());
   FillActive = EStart.Map(f => Optional<Fuel>.Of(f))
     .Merge(eClearSale.Map(f => Optional<Fuel>.Empty())).Hold(Optional<Fuel>.Empty());
   EBeep = eClearSale;
   ESaleComplete = Event<Sale>.FilterOptional(
     EEnd.Snapshot(
       Behavior<Sale>.Lift(
         (oFuel, price_, dollars, liters) => oFuel.IsPresent ? Optional<Sale>.Of(new Sale(oFuel.Get(), price_, dollars, liters)) : Optional<Sale>.Empty(),
         FuelFlowing,
         fi.Price,
         fi.DollarsDelivered,
         fi.LitersDelivered)));
 }