Loading system/gd/hci/hci_packets.pdl +2 −2 Original line number Diff line number Diff line Loading @@ -1867,7 +1867,7 @@ packet ReadLocalVersionInformation : CommandPacket (op_code = READ_LOCAL_VERSION } enum HciVersion : 8 { V_1_0b = 0x00, V_1_0B = 0x00, V_1_1 = 0x01, V_1_2 = 0x02, V_2_0 = 0x03, // + EDR Loading @@ -1881,7 +1881,7 @@ enum HciVersion : 8 { } enum LmpVersion : 8 { V_1_0b = 0x00, // withdrawn V_1_0B = 0x00, // withdrawn V_1_1 = 0x01, // withdrawn V_1_2 = 0x02, // withdrawn V_2_0 = 0x03, // + EDR Loading system/gd/packet/parser/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ cc_binary_host { "fields/scalar_field.cc", "fields/size_field.cc", "fields/struct_field.cc", "fields/variable_length_struct_field.cc", "checksum_def.cc", "custom_field_def.cc", "enum_def.cc", Loading @@ -27,6 +28,7 @@ cc_binary_host { "packet_def.cc", "parent_def.cc", "struct_def.cc", "struct_parser_generator.cc", "main.cc", "language_y.yy", "language_l.ll", Loading system/gd/packet/parser/enum_def.cc +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ EnumDef::EnumDef(std::string name, int size) : TypeDef(name, size) {} void EnumDef::AddEntry(std::string name, uint32_t value) { if (!util::IsEnumCase(name)) { ERROR() << __func__ << ": Enum " << name << "(" << value << ") should be all uppercase with underscores"; } if (value > util::GetMaxValueForBits(size_)) { ERROR() << __func__ << ": Value of " << name << "(" << value << ") is greater than the max possible value for enum " << name_ << "(" << util::GetMaxValueForBits(size_) << ")\n"; Loading system/gd/packet/parser/fields/all_fields.h +1 −0 Original line number Diff line number Diff line Loading @@ -32,4 +32,5 @@ #include "fields/scalar_field.h" #include "fields/size_field.h" #include "fields/struct_field.h" #include "fields/variable_length_struct_field.h" #include "fields/vector_field.h" system/gd/packet/parser/fields/array_field.cc +23 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ #include "fields/array_field.h" #include "fields/custom_field.h" #include "fields/scalar_field.h" #include "util.h" const std::string ArrayField::kFieldType = "ArrayField"; Loading Loading @@ -52,6 +54,10 @@ Size ArrayField::GetSize() const { Size ArrayField::GetBuilderSize() const { if (!element_size_.empty() && !element_size_.has_dynamic()) { return GetSize(); } else if (element_field_->BuilderParameterMustBeMoved()) { std::string ret = "[this](){ size_t length = 0; for (const auto& elem : " + GetName() + "_) { length += elem->size() * 8; } return length; }()"; return ret; } else { std::string ret = "[this](){ size_t length = 0; for (const auto& elem : " + GetName() + "_) { length += elem.size() * 8; } return length; }()"; Loading @@ -73,8 +79,15 @@ void ArrayField::GenExtractor(std::ostream& s, int num_leading_bits) const { s << "while (" << element_field_->GetName() << "_it.NumBytesRemaining() > 0 "; s << " && ret_it < " << GetName() << "_ptr->end()) {"; } if (element_field_->BuilderParameterMustBeMoved()) { s << element_field_->GetDataType() << " " << element_field_->GetName() << "_ptr;"; } else { s << element_field_->GetDataType() << "* " << element_field_->GetName() << "_ptr = ret_it;"; } element_field_->GenExtractor(s, num_leading_bits); if (element_field_->BuilderParameterMustBeMoved()) { s << "*ret_it = std::move(" << element_field_->GetName() << "_ptr);"; } s << "ret_it++;"; s << "}"; } Loading @@ -96,10 +109,18 @@ void ArrayField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) } bool ArrayField::GenBuilderParameter(std::ostream& s) const { if (element_field_->BuilderParameterMustBeMoved()) { s << "std::array<" << element_field_->GetDataType() << "," << array_size_ << "> " << GetName(); } else { s << "const std::array<" << element_field_->GetDataType() << "," << array_size_ << ">& " << GetName(); } return true; } bool ArrayField::BuilderParameterMustBeMoved() const { return element_field_->BuilderParameterMustBeMoved(); } bool ArrayField::GenBuilderMember(std::ostream& s) const { s << "std::array<" << element_field_->GetDataType() << "," << array_size_ << "> " << GetName(); return true; Loading Loading
system/gd/hci/hci_packets.pdl +2 −2 Original line number Diff line number Diff line Loading @@ -1867,7 +1867,7 @@ packet ReadLocalVersionInformation : CommandPacket (op_code = READ_LOCAL_VERSION } enum HciVersion : 8 { V_1_0b = 0x00, V_1_0B = 0x00, V_1_1 = 0x01, V_1_2 = 0x02, V_2_0 = 0x03, // + EDR Loading @@ -1881,7 +1881,7 @@ enum HciVersion : 8 { } enum LmpVersion : 8 { V_1_0b = 0x00, // withdrawn V_1_0B = 0x00, // withdrawn V_1_1 = 0x01, // withdrawn V_1_2 = 0x02, // withdrawn V_2_0 = 0x03, // + EDR Loading
system/gd/packet/parser/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ cc_binary_host { "fields/scalar_field.cc", "fields/size_field.cc", "fields/struct_field.cc", "fields/variable_length_struct_field.cc", "checksum_def.cc", "custom_field_def.cc", "enum_def.cc", Loading @@ -27,6 +28,7 @@ cc_binary_host { "packet_def.cc", "parent_def.cc", "struct_def.cc", "struct_parser_generator.cc", "main.cc", "language_y.yy", "language_l.ll", Loading
system/gd/packet/parser/enum_def.cc +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ EnumDef::EnumDef(std::string name, int size) : TypeDef(name, size) {} void EnumDef::AddEntry(std::string name, uint32_t value) { if (!util::IsEnumCase(name)) { ERROR() << __func__ << ": Enum " << name << "(" << value << ") should be all uppercase with underscores"; } if (value > util::GetMaxValueForBits(size_)) { ERROR() << __func__ << ": Value of " << name << "(" << value << ") is greater than the max possible value for enum " << name_ << "(" << util::GetMaxValueForBits(size_) << ")\n"; Loading
system/gd/packet/parser/fields/all_fields.h +1 −0 Original line number Diff line number Diff line Loading @@ -32,4 +32,5 @@ #include "fields/scalar_field.h" #include "fields/size_field.h" #include "fields/struct_field.h" #include "fields/variable_length_struct_field.h" #include "fields/vector_field.h"
system/gd/packet/parser/fields/array_field.cc +23 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ #include "fields/array_field.h" #include "fields/custom_field.h" #include "fields/scalar_field.h" #include "util.h" const std::string ArrayField::kFieldType = "ArrayField"; Loading Loading @@ -52,6 +54,10 @@ Size ArrayField::GetSize() const { Size ArrayField::GetBuilderSize() const { if (!element_size_.empty() && !element_size_.has_dynamic()) { return GetSize(); } else if (element_field_->BuilderParameterMustBeMoved()) { std::string ret = "[this](){ size_t length = 0; for (const auto& elem : " + GetName() + "_) { length += elem->size() * 8; } return length; }()"; return ret; } else { std::string ret = "[this](){ size_t length = 0; for (const auto& elem : " + GetName() + "_) { length += elem.size() * 8; } return length; }()"; Loading @@ -73,8 +79,15 @@ void ArrayField::GenExtractor(std::ostream& s, int num_leading_bits) const { s << "while (" << element_field_->GetName() << "_it.NumBytesRemaining() > 0 "; s << " && ret_it < " << GetName() << "_ptr->end()) {"; } if (element_field_->BuilderParameterMustBeMoved()) { s << element_field_->GetDataType() << " " << element_field_->GetName() << "_ptr;"; } else { s << element_field_->GetDataType() << "* " << element_field_->GetName() << "_ptr = ret_it;"; } element_field_->GenExtractor(s, num_leading_bits); if (element_field_->BuilderParameterMustBeMoved()) { s << "*ret_it = std::move(" << element_field_->GetName() << "_ptr);"; } s << "ret_it++;"; s << "}"; } Loading @@ -96,10 +109,18 @@ void ArrayField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) } bool ArrayField::GenBuilderParameter(std::ostream& s) const { if (element_field_->BuilderParameterMustBeMoved()) { s << "std::array<" << element_field_->GetDataType() << "," << array_size_ << "> " << GetName(); } else { s << "const std::array<" << element_field_->GetDataType() << "," << array_size_ << ">& " << GetName(); } return true; } bool ArrayField::BuilderParameterMustBeMoved() const { return element_field_->BuilderParameterMustBeMoved(); } bool ArrayField::GenBuilderMember(std::ostream& s) const { s << "std::array<" << element_field_->GetDataType() << "," << array_size_ << "> " << GetName(); return true; Loading