Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,7 @@ gensrcs { ], srcs: [ "core/proto/android/os/batterytype.proto", "core/proto/android/os/cpufreq.proto", "core/proto/android/os/cpuinfo.proto", "core/proto/android/os/kernelwake.proto", Loading cmds/incident_helper/src/main.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #define LOG_TAG "incident_helper" #include "parsers/BatteryTypeParser.h" #include "parsers/CpuFreqParser.h" #include "parsers/CpuInfoParser.h" #include "parsers/KernelWakesParser.h" Loading Loading @@ -63,6 +64,8 @@ static TextParserBase* selectParser(int section) { return new CpuInfoParser(); case 2004: return new CpuFreqParser(); case 2006: return new BatteryTypeParser(); default: return NULL; } Loading cmds/incident_helper/src/parsers/BatteryTypeParser.cpp 0 → 100644 +60 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define LOG_TAG "incident_helper" #include <android/util/ProtoOutputStream.h> #include "frameworks/base/core/proto/android/os/batterytype.proto.h" #include "ih_util.h" #include "BatteryTypeParser.h" using namespace android::os; status_t BatteryTypeParser::Parse(const int in, const int out) const { Reader reader(in); string line; bool readLine = false; ProtoOutputStream proto; // parse line by line while (reader.readLine(&line)) { if (line.empty()) continue; if (readLine) { fprintf(stderr, "Multiple lines in file. Unsure what to do.\n"); break; } proto.write(BatteryTypeProto::TYPE, line); readLine = true; } if (!reader.ok(&line)) { fprintf(stderr, "Bad read from fd %d: %s\n", in, line.c_str()); return -1; } if (!proto.flush(out)) { fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); return -1; } fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); return NO_ERROR; } cmds/incident_helper/src/parsers/BatteryTypeParser.h 0 → 100644 +36 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef BATTERY_TYPE_PARSER_H #define BATTERY_TYPE_PARSER_H #include "TextParserBase.h" using namespace android; /** * Battery type parser, parses text in file * /sys/class/power_supply/bms/battery_type. */ class BatteryTypeParser : public TextParserBase { public: BatteryTypeParser() : TextParserBase(String8("BatteryTypeParser")) {}; ~BatteryTypeParser() {}; virtual status_t Parse(const int in, const int out) const; }; #endif // BATTERY_TYPE_PARSER_H cmds/incident_helper/testdata/batterytype.txt 0 → 100644 +1 −0 Original line number Diff line number Diff line random_battery_type_string Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -722,6 +722,7 @@ gensrcs { ], srcs: [ "core/proto/android/os/batterytype.proto", "core/proto/android/os/cpufreq.proto", "core/proto/android/os/cpuinfo.proto", "core/proto/android/os/kernelwake.proto", Loading
cmds/incident_helper/src/main.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #define LOG_TAG "incident_helper" #include "parsers/BatteryTypeParser.h" #include "parsers/CpuFreqParser.h" #include "parsers/CpuInfoParser.h" #include "parsers/KernelWakesParser.h" Loading Loading @@ -63,6 +64,8 @@ static TextParserBase* selectParser(int section) { return new CpuInfoParser(); case 2004: return new CpuFreqParser(); case 2006: return new BatteryTypeParser(); default: return NULL; } Loading
cmds/incident_helper/src/parsers/BatteryTypeParser.cpp 0 → 100644 +60 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define LOG_TAG "incident_helper" #include <android/util/ProtoOutputStream.h> #include "frameworks/base/core/proto/android/os/batterytype.proto.h" #include "ih_util.h" #include "BatteryTypeParser.h" using namespace android::os; status_t BatteryTypeParser::Parse(const int in, const int out) const { Reader reader(in); string line; bool readLine = false; ProtoOutputStream proto; // parse line by line while (reader.readLine(&line)) { if (line.empty()) continue; if (readLine) { fprintf(stderr, "Multiple lines in file. Unsure what to do.\n"); break; } proto.write(BatteryTypeProto::TYPE, line); readLine = true; } if (!reader.ok(&line)) { fprintf(stderr, "Bad read from fd %d: %s\n", in, line.c_str()); return -1; } if (!proto.flush(out)) { fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); return -1; } fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); return NO_ERROR; }
cmds/incident_helper/src/parsers/BatteryTypeParser.h 0 → 100644 +36 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef BATTERY_TYPE_PARSER_H #define BATTERY_TYPE_PARSER_H #include "TextParserBase.h" using namespace android; /** * Battery type parser, parses text in file * /sys/class/power_supply/bms/battery_type. */ class BatteryTypeParser : public TextParserBase { public: BatteryTypeParser() : TextParserBase(String8("BatteryTypeParser")) {}; ~BatteryTypeParser() {}; virtual status_t Parse(const int in, const int out) const; }; #endif // BATTERY_TYPE_PARSER_H
cmds/incident_helper/testdata/batterytype.txt 0 → 100644 +1 −0 Original line number Diff line number Diff line random_battery_type_string