我想知道是否有一种标准方法来表示与ASN.1中的另一个数据字段互补的位掩码。
例如,有一个称为机器状态的位字段,定义如下
Machine_Status::= BIT STRING (SIZE(16)){
battery-low(0),
temperature-low(1),
monitor-plugged-in(2),
....
humidity-high(15)
}
但是,机器状态有一个补码位掩码,表示某个状态位有意义(如果客户端启用了某些状态检测,则说明)
Machine_Status_Mask::=BIT STRING(SIZE(16)){
battery-low-detect-supported(0),
temperature-low-detect-supported(1),
monitor-plugged-in-detect-supported(2),
....
humidity-high-detect-support(15)
}
我的问题是,如果我想定义一般掩码数据类型,以便我不需要为每个可能的位串定义新的掩码类型,我应该怎么做?为了说明这个概念,请参阅以下示例
//This is what I want, but I am not sure if there is a better or more legit way to express in ASN.1
Bit_Mask::=BIT STRING(SIZE(16)){
bit-0-of-target-is-meaningful(0),
bit-1-of-target-is-meaningful(1),
bit-1-of-target-is-meaningful(2),
....
bit-15-of-target-is-meaningful(15)
}
我可以将此数据类型应用于任何其他大小为(16)的位字符串以形成一个小伙伴,比如说
Machine_Status_Bundle::=SEQUENCE{
status Machine_Status_Mask,
mask Bit_Mask
}
Communication_Status_Bundle::SEQUENCE{
status Communication_Status_Mask,
mask Bit_Mask
}