使用ASN.1表示位掩码

时间:2016-04-11 18:18:32

标签: asn.1

我想知道是否有一种标准方法来表示与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
}

0 个答案:

没有答案