blob: bcb882149312f836fa848fcb7945fe7d8199b86d [file] [log] [blame]
Ting Xuce4b6452022-04-24 06:14:25 +00001# Copyright (c) 2022 Intel and/or its affiliates.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at:
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import ExpressionConverter
15
16
17class ProtocolHeaderField:
18 def __init__(self, Size, Value, Mask, Field):
19 self.Size = Size
20 self.Value = Value
21 self.Mask = Mask
22 self.Field = Field
23
24 def UpdateValue(self, expression, auto):
25 if self.Field.IsReadonly and not auto:
26 return False
27
28 if expression != None:
29 ret, _ = ExpressionConverter.Verify(self.Field.Format, expression)
30 if not ret:
31 return False
32
33 self.Value = expression
34 return True
35
36 def UpdateMask(self, expression):
37 if expression != None:
38 ret, _ = ExpressionConverter.Verify(self.Field.Format, expression)
39 if not ret:
40 return False
41
42 self.Mask = expression
43 return True
44
45 def UpdateSize(self):
46 if self.Size:
47 return
48 self.Size = self.Field.Size