| /* |
| * Copyright 2016 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. |
| */ |
| |
| #include "avb_messages.h" |
| |
| #include <stdio.h> |
| #include <string.h> |
| |
| namespace avb { |
| |
| uint32_t RollbackIndexRequest::GetSerializedSize() const { |
| return sizeof(value_) + sizeof(slot_); |
| } |
| |
| uint32_t RollbackIndexRequest::Serialize(uint8_t* payload, |
| const uint8_t* end) const { |
| if (payload + GetSerializedSize() > end) |
| return 0; |
| memcpy(payload, &value_, sizeof(value_)); |
| payload += sizeof(value_); |
| memcpy(payload, &slot_, sizeof(slot_)); |
| payload += sizeof(slot_); |
| return GetSerializedSize(); |
| } |
| |
| int RollbackIndexRequest::Deserialize(const uint8_t* payload, |
| const uint8_t* end) { |
| if (payload + GetSerializedSize() != end) |
| return ERR_NOT_VALID; |
| memcpy(&value_, payload, sizeof(value_)); |
| payload += sizeof(value_); |
| memcpy(&slot_, payload, sizeof(slot_)); |
| payload += sizeof(slot_); |
| return NO_ERROR; |
| } |
| |
| uint32_t RollbackIndexResponse::GetSerializedSize() const { |
| return sizeof(value_); |
| } |
| |
| uint32_t RollbackIndexResponse::Serialize(uint8_t* payload, |
| const uint8_t* end) const { |
| if (payload + GetSerializedSize() > end) |
| return 0; |
| memcpy(payload, &value_, sizeof(value_)); |
| payload += sizeof(value_); |
| return GetSerializedSize(); |
| } |
| |
| int RollbackIndexResponse::Deserialize(const uint8_t* payload, |
| const uint8_t* end) { |
| if (payload + GetSerializedSize() != end) |
| return ERR_NOT_VALID; |
| memcpy(&value_, payload, sizeof(value_)); |
| payload += sizeof(value_); |
| return NO_ERROR; |
| } |
| |
| uint32_t GetVersionResponse::GetSerializedSize() const { |
| return sizeof(version_); |
| } |
| |
| uint32_t GetVersionResponse::Serialize(uint8_t* payload, |
| const uint8_t* end) const { |
| if (payload + GetSerializedSize() > end) |
| return 0; |
| memcpy(payload, &version_, sizeof(version_)); |
| payload += sizeof(version_); |
| return GetSerializedSize(); |
| } |
| |
| int GetVersionResponse::Deserialize(const uint8_t* payload, |
| const uint8_t* end) { |
| if (payload + GetSerializedSize() != end) |
| return ERR_NOT_VALID; |
| memcpy(&version_, payload, sizeof(version_)); |
| payload += sizeof(version_); |
| return NO_ERROR; |
| } |
| |
| uint32_t PermanentAttributesMessage::GetSerializedSize() const { |
| return attributes_size_; |
| } |
| |
| uint32_t PermanentAttributesMessage::Serialize(uint8_t* payload, |
| const uint8_t* end) const { |
| if (static_cast<uint32_t>(end - payload) != attributes_size_) |
| return 0; |
| memcpy(payload, attributes_.get(), attributes_size_); |
| return attributes_size_; |
| } |
| |
| int PermanentAttributesMessage::Deserialize(const uint8_t* payload, |
| const uint8_t* end) { |
| if (end < payload) |
| return ERR_NOT_VALID; |
| attributes_size_ = end - payload; |
| attributes_.reset(new uint8_t[attributes_size_]); |
| if (!attributes_.get()) |
| return ERR_NO_MEMORY; |
| memcpy(attributes_.get(), payload, attributes_size_); |
| return NO_ERROR; |
| } |
| |
| uint32_t LockStateMessage::GetSerializedSize() const { |
| return sizeof(lock_state_); |
| } |
| |
| uint32_t LockStateMessage::Serialize(uint8_t* payload, |
| const uint8_t* end) const { |
| if (payload + GetSerializedSize() > end) |
| return 0; |
| memcpy(payload, &lock_state_, sizeof(lock_state_)); |
| payload += sizeof(lock_state_); |
| return GetSerializedSize(); |
| } |
| |
| int LockStateMessage::Deserialize(const uint8_t* payload, const uint8_t* end) { |
| if (payload + GetSerializedSize() != end) |
| return ERR_NOT_VALID; |
| memcpy(&lock_state_, payload, sizeof(lock_state_)); |
| payload += sizeof(lock_state_); |
| return NO_ERROR; |
| } |
| |
| }; // namespace avb |