Loading system/gd/hci/hci_packets.pdl +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ enum GapDataType : 8 { struct GapData { _size_(data) : 8, // Including one byte for data_type data_type : GapDataType, data : 8[+1*8], data : 8[+1], } // HCI ACL Packets Loading system/gd/l2cap/l2cap_packets.pdl +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ packet BasicFrameWithFcs { _checksum_start_(fcs), _size_(_payload_) : 16, channel_id : 16, _payload_ : [+2*8], // Include Fcs in the _size_ _payload_ : [+2], // Include Fcs in the _size_ fcs : Fcs, } Loading system/gd/packet/parser/fields/payload_field.cc +3 −3 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ Size PayloadField::GetSize() const { std::string dynamic_size = "(Get" + util::UnderscoreToCamelCase(size_field_->GetName()) + "() * 8)"; if (!size_modifier_.empty()) { dynamic_size += "- (" + size_modifier_ + ")"; dynamic_size += "- (" + size_modifier_.substr(1) + " * 8)"; } return dynamic_size; Loading Loading @@ -121,7 +121,7 @@ void PayloadField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std: if (size_field_ != nullptr) { s << "let want_ = " << start_offset.bytes() << " + (" << size_field_->GetName() << " as usize)"; if (!size_modifier_.empty()) { s << " - ((" << size_modifier_.substr(1) << ") / 8)"; s << " - " << size_modifier_.substr(1); } s << ";"; s << "if bytes.len() < want_ {"; Loading @@ -132,7 +132,7 @@ void PayloadField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std: s << " got: bytes.len()});"; s << "}"; if (!size_modifier_.empty()) { s << "if ((" << size_field_->GetName() << " as usize) < ((" << size_modifier_.substr(1) << ") / 8)) {"; s << "if (" << size_field_->GetName() << " as usize) < " << size_modifier_.substr(1) << " {"; s << " return Err(Error::ImpossibleStructError);"; s << "}"; } Loading system/gd/packet/parser/fields/vector_field.cc +6 −6 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ Size VectorField::GetSize() const { // size_field_ is of type SIZE if (size_field_->GetFieldType() == SizeField::kFieldType) { std::string ret = "(static_cast<size_t>(Get" + util::UnderscoreToCamelCase(size_field_->GetName()) + "()) * 8)"; if (!size_modifier_.empty()) ret += size_modifier_; if (!size_modifier_.empty()) ret += "+ (" + size_modifier_.substr(1) + " * 8)"; return ret; } Loading Loading @@ -90,7 +90,7 @@ Size VectorField::GetStructSize() const { // size_field_ is of type SIZE if (size_field_->GetFieldType() == SizeField::kFieldType) { std::string ret = "(static_cast<size_t>(to_fill->" + size_field_->GetName() + "_extracted_) * 8)"; if (!size_modifier_.empty()) ret += "-" + size_modifier_; if (!size_modifier_.empty()) ret += "- (" + size_modifier_.substr(1) + " * 8)"; return ret; } Loading Loading @@ -262,7 +262,7 @@ void VectorField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std:: if (size_field_ != nullptr && size_field_->GetFieldType() == SizeField::kFieldType) { s << "let want_ = " << start_offset.bytes() << " + (" << size_field_->GetName() << " as usize)"; if (GetSizeModifier() != "") { s << " - ((" << GetSizeModifier().substr(1) << ") / 8)"; s << " - " << GetSizeModifier().substr(1); } s << ";"; s << "if bytes.len() < want_ {"; Loading @@ -273,7 +273,7 @@ void VectorField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std:: s << " got: bytes.len()});"; s << "}"; if (GetSizeModifier() != "") { s << "if ((" << size_field_->GetName() << " as usize) < ((" << GetSizeModifier().substr(1) << ") / 8)) {"; s << "if (" << size_field_->GetName() << " as usize) < " << GetSizeModifier().substr(1) << " {"; s << " return Err(Error::ImpossibleStructError);"; s << "}"; } Loading Loading @@ -318,7 +318,7 @@ void VectorField::GenRustGetter(std::ostream& s, Size start_offset, Size, std::s s << start_offset.bytes() << " + " << size_field_->GetName(); s << " as usize)"; if (GetSizeModifier() != "") { s << " - ((" << GetSizeModifier().substr(1) << ") / 8)"; s << " - " << GetSizeModifier().substr(1); } s << "]"; } Loading Loading @@ -346,7 +346,7 @@ void VectorField::GenRustGetter(std::ostream& s, Size start_offset, Size, std::s s << "let mut parsable_ = &bytes[" << start_offset.bytes() << ".." << start_offset.bytes() << " + (" << size_field_->GetName() << " as usize)"; if (GetSizeModifier() != "") { s << " - ((" << GetSizeModifier().substr(1) << ") / 8)"; s << " - " << GetSizeModifier().substr(1); } s << "];"; s << "while parsable_.len() > 0 {"; Loading system/gd/packet/parser/parent_def.cc +3 −5 Original line number Diff line number Diff line Loading @@ -398,8 +398,7 @@ void ParentDef::GenSerialize(std::ostream& s) const { s << "size_t payload_bytes = GetPayloadSize();"; std::string modifier = ((PayloadField*)sized_field)->size_modifier_; if (modifier != "") { s << "static_assert((" << modifier << ")%8 == 0, \"Modifiers must be byte-aligned\");"; s << "payload_bytes = payload_bytes + (" << modifier << ") / 8;"; s << "payload_bytes = payload_bytes + " << modifier.substr(1) << ";"; } s << "ASSERT(payload_bytes < (static_cast<size_t>(1) << " << field->GetSize().bits() << "));"; s << "insert(static_cast<" << field->GetDataType() << ">(payload_bytes), i," << field->GetSize().bits() << ");"; Loading @@ -426,9 +425,8 @@ void ParentDef::GenSerialize(std::ostream& s) const { } std::string modifier = vector->GetSizeModifier(); if (modifier != "") { s << "static_assert((" << modifier << ")%8 == 0, \"Modifiers must be byte-aligned\");"; s << vector_name << "bytes = "; s << vector_name << "bytes + (" << modifier << ") / 8;"; s << vector_name << "bytes + " << modifier.substr(1) << ";"; } s << "ASSERT(" << vector_name + "bytes < (1 << " << field->GetSize().bits() << "));"; s << "insert(" << vector_name << "bytes, i, "; Loading Loading @@ -671,7 +669,7 @@ void ParentDef::GenRustWriteToFields(std::ostream& s) const { } std::string modifier = vector->GetSizeModifier(); if (modifier != "") { s << "let " << vector_name << " = " << vector_name << " + (" << modifier.substr(1) << ") / 8;"; s << "let " << vector_name << " = " << vector_name << " + " << modifier.substr(1) << ";"; } s << "let " << field->GetName() << " = " << field->GetRustDataType() << "::try_from(" << vector_name Loading Loading
system/gd/hci/hci_packets.pdl +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ enum GapDataType : 8 { struct GapData { _size_(data) : 8, // Including one byte for data_type data_type : GapDataType, data : 8[+1*8], data : 8[+1], } // HCI ACL Packets Loading
system/gd/l2cap/l2cap_packets.pdl +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ packet BasicFrameWithFcs { _checksum_start_(fcs), _size_(_payload_) : 16, channel_id : 16, _payload_ : [+2*8], // Include Fcs in the _size_ _payload_ : [+2], // Include Fcs in the _size_ fcs : Fcs, } Loading
system/gd/packet/parser/fields/payload_field.cc +3 −3 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ Size PayloadField::GetSize() const { std::string dynamic_size = "(Get" + util::UnderscoreToCamelCase(size_field_->GetName()) + "() * 8)"; if (!size_modifier_.empty()) { dynamic_size += "- (" + size_modifier_ + ")"; dynamic_size += "- (" + size_modifier_.substr(1) + " * 8)"; } return dynamic_size; Loading Loading @@ -121,7 +121,7 @@ void PayloadField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std: if (size_field_ != nullptr) { s << "let want_ = " << start_offset.bytes() << " + (" << size_field_->GetName() << " as usize)"; if (!size_modifier_.empty()) { s << " - ((" << size_modifier_.substr(1) << ") / 8)"; s << " - " << size_modifier_.substr(1); } s << ";"; s << "if bytes.len() < want_ {"; Loading @@ -132,7 +132,7 @@ void PayloadField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std: s << " got: bytes.len()});"; s << "}"; if (!size_modifier_.empty()) { s << "if ((" << size_field_->GetName() << " as usize) < ((" << size_modifier_.substr(1) << ") / 8)) {"; s << "if (" << size_field_->GetName() << " as usize) < " << size_modifier_.substr(1) << " {"; s << " return Err(Error::ImpossibleStructError);"; s << "}"; } Loading
system/gd/packet/parser/fields/vector_field.cc +6 −6 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ Size VectorField::GetSize() const { // size_field_ is of type SIZE if (size_field_->GetFieldType() == SizeField::kFieldType) { std::string ret = "(static_cast<size_t>(Get" + util::UnderscoreToCamelCase(size_field_->GetName()) + "()) * 8)"; if (!size_modifier_.empty()) ret += size_modifier_; if (!size_modifier_.empty()) ret += "+ (" + size_modifier_.substr(1) + " * 8)"; return ret; } Loading Loading @@ -90,7 +90,7 @@ Size VectorField::GetStructSize() const { // size_field_ is of type SIZE if (size_field_->GetFieldType() == SizeField::kFieldType) { std::string ret = "(static_cast<size_t>(to_fill->" + size_field_->GetName() + "_extracted_) * 8)"; if (!size_modifier_.empty()) ret += "-" + size_modifier_; if (!size_modifier_.empty()) ret += "- (" + size_modifier_.substr(1) + " * 8)"; return ret; } Loading Loading @@ -262,7 +262,7 @@ void VectorField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std:: if (size_field_ != nullptr && size_field_->GetFieldType() == SizeField::kFieldType) { s << "let want_ = " << start_offset.bytes() << " + (" << size_field_->GetName() << " as usize)"; if (GetSizeModifier() != "") { s << " - ((" << GetSizeModifier().substr(1) << ") / 8)"; s << " - " << GetSizeModifier().substr(1); } s << ";"; s << "if bytes.len() < want_ {"; Loading @@ -273,7 +273,7 @@ void VectorField::GenBoundsCheck(std::ostream& s, Size start_offset, Size, std:: s << " got: bytes.len()});"; s << "}"; if (GetSizeModifier() != "") { s << "if ((" << size_field_->GetName() << " as usize) < ((" << GetSizeModifier().substr(1) << ") / 8)) {"; s << "if (" << size_field_->GetName() << " as usize) < " << GetSizeModifier().substr(1) << " {"; s << " return Err(Error::ImpossibleStructError);"; s << "}"; } Loading Loading @@ -318,7 +318,7 @@ void VectorField::GenRustGetter(std::ostream& s, Size start_offset, Size, std::s s << start_offset.bytes() << " + " << size_field_->GetName(); s << " as usize)"; if (GetSizeModifier() != "") { s << " - ((" << GetSizeModifier().substr(1) << ") / 8)"; s << " - " << GetSizeModifier().substr(1); } s << "]"; } Loading Loading @@ -346,7 +346,7 @@ void VectorField::GenRustGetter(std::ostream& s, Size start_offset, Size, std::s s << "let mut parsable_ = &bytes[" << start_offset.bytes() << ".." << start_offset.bytes() << " + (" << size_field_->GetName() << " as usize)"; if (GetSizeModifier() != "") { s << " - ((" << GetSizeModifier().substr(1) << ") / 8)"; s << " - " << GetSizeModifier().substr(1); } s << "];"; s << "while parsable_.len() > 0 {"; Loading
system/gd/packet/parser/parent_def.cc +3 −5 Original line number Diff line number Diff line Loading @@ -398,8 +398,7 @@ void ParentDef::GenSerialize(std::ostream& s) const { s << "size_t payload_bytes = GetPayloadSize();"; std::string modifier = ((PayloadField*)sized_field)->size_modifier_; if (modifier != "") { s << "static_assert((" << modifier << ")%8 == 0, \"Modifiers must be byte-aligned\");"; s << "payload_bytes = payload_bytes + (" << modifier << ") / 8;"; s << "payload_bytes = payload_bytes + " << modifier.substr(1) << ";"; } s << "ASSERT(payload_bytes < (static_cast<size_t>(1) << " << field->GetSize().bits() << "));"; s << "insert(static_cast<" << field->GetDataType() << ">(payload_bytes), i," << field->GetSize().bits() << ");"; Loading @@ -426,9 +425,8 @@ void ParentDef::GenSerialize(std::ostream& s) const { } std::string modifier = vector->GetSizeModifier(); if (modifier != "") { s << "static_assert((" << modifier << ")%8 == 0, \"Modifiers must be byte-aligned\");"; s << vector_name << "bytes = "; s << vector_name << "bytes + (" << modifier << ") / 8;"; s << vector_name << "bytes + " << modifier.substr(1) << ";"; } s << "ASSERT(" << vector_name + "bytes < (1 << " << field->GetSize().bits() << "));"; s << "insert(" << vector_name << "bytes, i, "; Loading Loading @@ -671,7 +669,7 @@ void ParentDef::GenRustWriteToFields(std::ostream& s) const { } std::string modifier = vector->GetSizeModifier(); if (modifier != "") { s << "let " << vector_name << " = " << vector_name << " + (" << modifier.substr(1) << ") / 8;"; s << "let " << vector_name << " = " << vector_name << " + " << modifier.substr(1) << ";"; } s << "let " << field->GetName() << " = " << field->GetRustDataType() << "::try_from(" << vector_name Loading