common

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2021 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AMT_TYPE  = "AMT_TYPE"  //原始 ASN 类型 : {"expr_type":"INTEGER","meta_type":"AMT_TYPE","constraints":{"type":"SIZE_RANG","min":1,"max":255},"Identifier":"Speed"}
	ASN_TYPE  = "ASN_TYPE"  //自定义类型
	AMT_VALUE = "AMT_VALUE" //数字类型如 ENUMERATED {solid(1), liquid(2), gas(3)} 其中成员 solid 定义: {"expr_type":"A1TC_UNIVERVAL","meta_type":"AMT_VALUE","Identifier":"solid","value":1}
)
View Source
const IDENTIFY_EXTENSIBLE = "..."

Variables

This section is empty.

Functions

This section is empty.

Types

type Bit

type Bit bool

type BitBuffer

type BitBuffer struct {
	// contains filtered or unexported fields
}

func NewBitBuffer

func NewBitBuffer() *BitBuffer

func NewBitBufferFromBitString

func NewBitBufferFromBitString(bitString string) *BitBuffer

func NewBitBufferFromBytes

func NewBitBufferFromBytes(buf []byte) *BitBuffer

func (*BitBuffer) Bits

func (b *BitBuffer) Bits() []Bit

func (*BitBuffer) ByteLength

func (b *BitBuffer) ByteLength() int

计算当前字节长度

func (*BitBuffer) Bytes

func (b *BitBuffer) Bytes() []byte

返回比特数组

func (*BitBuffer) Error

func (b *BitBuffer) Error() error

最后需要通过该接口判断是否出错

func (*BitBuffer) Length

func (b *BitBuffer) Length() int

当前的比特长度

func (*BitBuffer) PushBit

func (b *BitBuffer) PushBit(bit Bit) *BitBuffer

func (*BitBuffer) PushBit2

func (b *BitBuffer) PushBit2(value byte) *BitBuffer

value: 0 or 1

func (*BitBuffer) PushBitBuffer

func (b *BitBuffer) PushBitBuffer(bitBuffer *BitBuffer) *BitBuffer

func (*BitBuffer) PushBits

func (b *BitBuffer) PushBits(bit []Bit) *BitBuffer

func (*BitBuffer) PushBool

func (b *BitBuffer) PushBool(bit bool) *BitBuffer

func (*BitBuffer) PushByte

func (b *BitBuffer) PushByte(byte2 byte, bit_len int) *BitBuffer

func (*BitBuffer) PushBytes

func (b *BitBuffer) PushBytes(buf []byte, bit_len int) *BitBuffer

func (*BitBuffer) PushInteger

func (b *BitBuffer) PushInteger(value uint64, bit_len int) *BitBuffer

添加一个指定比特长度的整数

func (*BitBuffer) Result

func (b *BitBuffer) Result() ([]byte, error)

func (*BitBuffer) ReverseBits

func (b *BitBuffer) ReverseBits() []Bit

返回逆转后的 []Bit

func (*BitBuffer) SetError

func (b *BitBuffer) SetError(err error) *BitBuffer

外部可设置编码是否出错

func (*BitBuffer) SetErrorText

func (b *BitBuffer) SetErrorText(txt string) *BitBuffer

外部可设置编码是否出错

func (*BitBuffer) SetErrorTextf

func (b *BitBuffer) SetErrorTextf(format string, args ...interface{}) *BitBuffer

外部可设置编码是否出错

func (*BitBuffer) ShiftBit

func (b *BitBuffer) ShiftBit() Bit

读取一个比特

func (*BitBuffer) ShiftBits

func (b *BitBuffer) ShiftBits(bit_len int) []Bit

func (*BitBuffer) ShiftBool

func (b *BitBuffer) ShiftBool() bool

func (*BitBuffer) ShiftByte

func (b *BitBuffer) ShiftByte(bit_len int) byte

根据比特数读取一个bye

func (*BitBuffer) ShiftBytes

func (b *BitBuffer) ShiftBytes(bit_len int) []byte

根据比特数读取一个[]bye

func (*BitBuffer) ShiftInteger

func (b *BitBuffer) ShiftInteger(bit_len int) uint64

根据比特数读取一个整数

func (*BitBuffer) String

func (b *BitBuffer) String() string

type Constraint

type Constraint struct {
	Type Type `json:"type"` //SIZE_FIXED SIZE_RANG SIZE_FIXED_AND_EXT SIZE_RANG_AND_EXT REAL_WITH_COMPONENTS
	//SIZE_FIXED SIZE_FIXED_AND_EXT 定长时包含 Value
	Value int64 `json:"value"`
	//SIZE_RANG SIZE_RANG_AND_EXT 变长时包含值范围
	Min int64 `json:"min"`
	Max int64 `json:"max"`
	//Type 为 REAL_WITH_COMPONENTS 时的约束
	Base     int `json:"base"`     //10
	Exponent int `json:"exponent"` //-2
}

func (*Constraint) HasExt

func (c *Constraint) HasExt() bool

是否可扩展

func (*Constraint) IsOutOfRange

func (c *Constraint) IsOutOfRange(val int64) bool

判断某个值是否超出了指定范围

func (*Constraint) IsRange

func (c *Constraint) IsRange() bool

判断约束是否是变长的

func (*Constraint) Range

func (c *Constraint) Range() uint64

获取约束的范围 0~range

func (*Constraint) RangeBitLength

func (c *Constraint) RangeBitLength() int

获取该范围 uper 编码需要的比特长度

type ExprType

type ExprType string
const (
	AMT_TYPE_INTEGER      ExprType = "INTEGER"
	AMT_TYPE_BOOLEAN      ExprType = "BOOLEAN"
	AMT_TYPE_CHOICE       ExprType = "CHOICE"
	AMT_TYPE_ENUMERATED   ExprType = "ENUMERATED"
	AMT_TYPE_SEQUENCE     ExprType = "SEQUENCE"
	AMT_TYPE_IA5String    ExprType = "IA5String"
	AMT_TYPE_OCTET_STRING ExprType = "OCTET_STRING"
	AMT_TYPE_BIT_STRING   ExprType = "BIT_STRING"
	AMT_TYPE_REAL         ExprType = "REAL"
	AMT_TYPE_SEQUENCE_OF  ExprType = "SEQUENCE_OF"
)

type Flag

type Flag string
const (
	EM_NOMARK   Flag = "EM_NOMARK"
	EM_OPTIONAL Flag = "EM_OPTIONAL"
)

type Marker

type Marker struct {
	Flags Flag `json:"flags"`
}

func (*Marker) IsOptional

func (m *Marker) IsOptional() bool

判断是否是可选的

type Member

type Member struct {
	Members     []Member    `json:"members,omitempty"`     //包含的字段
	ExprType    ExprType    `json:"expr_type"`             // AMT_TYPE 类型 INTEGER,BOOLEAN,CHOICE,ENUMERATED,SEQUENCE,IA5String,OCTET_STRING,BIT_STRING,REAL,SEQUENCE_OF
	MetaType    string      `json:"meta_type"`             // AMT_TYPE(原始 ASN 类型) ASN_TYPE(自定义类型) AMT_VALUE(数字类型如 ENUMERATED {solid(1), liquid(2), gas(3)})
	Constraints *Constraint `json:"constraints,omitempty"` //约束
	Identifier  string      `json:"Identifier"`            //字段名称,注意标识符为 ...(IDENTIFY_EXTENSIBLE) 时需特殊处理扩展的情况
	Marker      *Marker     `json:"marker,omitempty"`      //"marker": { "flags": "EM_OPTIONAL" }
	Value       int         `json:"value"`                 //meta_type 为 AMT_VALUE 需要处理该字段,若没设置时,value 为 -1
}

func (Member) ExtMemberCount

func (m Member) ExtMemberCount() int

扩展标记后面的成员都是可扩展成员

func (Member) HasExtLabel

func (m Member) HasExtLabel() bool

Sequence 判断是否有可扩展的标记 ...

func (Member) HasOptionalMember

func (m Member) HasOptionalMember() bool

是否包含可选的子成员

func (Member) IsExtLabel

func (m Member) IsExtLabel() bool

判断该成员是否是个扩展标记

func (Member) MemberCount

func (m Member) MemberCount() int

获取非扩展的成员数量

func (Member) MemberCountBitLength

func (m Member) MemberCountBitLength() int

非扩展的成员数量需要的编码 bit_len

func (Member) OptionalCount

func (m Member) OptionalCount() int

返回有可选标记(OPTIONAL)的子成员数,不包含扩展成员

type Module

type Module struct {
	ModuleName string   `json:"moduleName"`
	Flags      string   `json:"flags"` //MSF_AUTOMATIC_TAGS
	Members    []Member `json:"members,omitempty"`
}

type Type

type Type string
const (
	SIZE_FIXED           Type = "SIZE_FIXED"           //定长 SIZE(5)
	SIZE_RANG            Type = "SIZE_RANG"            //变长 SIZE(1..8)
	SIZE_FIXED_AND_EXT   Type = "SIZE_FIXED_AND_EXT"   //定长可扩展 SIZE(5,...) Max==Min
	SIZE_RANG_AND_EXT    Type = "SIZE_RANG_AND_EXT"    //变长可扩展 SIZE(1..7,...) //暂时没有这个
	REAL_WITH_COMPONENTS Type = "REAL_WITH_COMPONENTS" //Type 为 REAL_WITH_COMPONENTS 时包含 Base 和 Exponent 约束
)

type UperDecoder

type UperDecoder interface {
	UperDecode(buffer *BitBuffer)
}

type UperEncoder

type UperEncoder interface {
	UperEncode() *BitBuffer
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL