124475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata/* 224475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * Copyright (C) 2017 The Android Open Source Project 324475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * 424475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * Licensed under the Apache License, Version 2.0 (the "License"); 524475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * you may not use this file except in compliance with the License. 624475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * You may obtain a copy of the License at 724475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * 824475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * http://www.apache.org/licenses/LICENSE-2.0 924475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * 1024475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * Unless required by applicable law or agreed to in writing, software 1124475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * distributed under the License is distributed on an "AS IS" BASIS, 1224475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1324475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * See the License for the specific language governing permissions and 1424475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata * limitations under the License. 1524475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata */ 1624475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 1724475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granatapackage com.android.car.obd2.commands; 1824475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 1924475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granataimport com.android.car.obd2.IntegerArrayStream; 2024475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granataimport com.android.car.obd2.Obd2Command; 2124475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granataimport java.util.Optional; 2224475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 2324475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granatapublic abstract class FuelTrimCommand implements Obd2Command.OutputSemanticHandler<Float> { 2424475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata @Override 2524475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public Optional<Float> consume(IntegerArrayStream data) { 2624475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata return data.hasAtLeast( 2724475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 1, 2824475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata theData -> Optional.of(3 * theData.consume() / 1.28f - 100), 29730169ae5f7cd0b71093cffaf08e8af0bb218269Colin Cross theData -> Optional.<Float>empty()); 3024475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 3124475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 3224475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public static class Bank1ShortTermFuelTrimCommand extends FuelTrimCommand { 3324475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata @Override 3424475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public int getPid() { 3524475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata return 0x06; 3624475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 3724475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 3824475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 3924475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public static class Bank1LongTermFuelTrimCommand extends FuelTrimCommand { 4024475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata @Override 4124475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public int getPid() { 4224475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata return 0x07; 4324475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 4424475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 4524475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 4624475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public static class Bank2ShortTermFuelTrimCommand extends FuelTrimCommand { 4724475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata @Override 4824475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public int getPid() { 4924475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata return 0x08; 5024475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 5124475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 5224475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata 5324475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public static class Bank2LongTermFuelTrimCommand extends FuelTrimCommand { 5424475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata @Override 5524475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata public int getPid() { 5624475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata return 0x09; 5724475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 5824475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata } 5924475d0e9c67c758d05fa69bfe34013babfeb176Enrico Granata} 60