我有一个小的asn1代码:
-“ASN1 1”文件
RectangleModule1 DEFINITIONS ::=
BEGIN
Rectangle ::= SEQUENCE (SIZE(1..10)) OF SEQUENCE {
item CHOICE {
height INTEGER,
width IA5String
} --# UNTAGGED
}
END当我用asn1c编译它时,它会给我Rectangle.c和Rectangle.h文件。矩形的输出如下所示:
-----------------------Rectangle.h
/* Dependencies */
typedef enum item_PR {
item_PR_NOTHING, /* No components present */
item_PR_height,
item_PR_width
} item_PR;
/* Rectangle */
typedef struct Rectangle {
A_SEQUENCE_OF(struct Member {
struct item {
item_PR present;
union item_u {
long height;
IA5String_t width;
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} item;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} ) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} Rectangle_t;但我希望我的输出是这样的:
/* Dependencies */
typedef enum item_PR_sl {
item_PR_NOTHING_sl, /* No components present */
item_PR_height_sl,
item_PR_width_sl
} item_PR_sl;
/* Rectangle */
typedef struct Rectangle {
A_SEQUENCE_OF(struct Member {
struct item_sl {
item_PR_sl present;
union item_u_sl {
long height;
IA5String_t width;
} choice;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} item;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} ) list;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} Rectangle_t;即,将_sl连接到item字段。我无法通过更改asn文件来做到这一点。我不知道constr_CHOICE和constr_SEQUENCE是如何工作的。任何帮助都将不胜感激。
发布于 2013-10-16 04:22:48
在花了几个小时之后,我觉得修改asn文件是不可能的。它只能通过编辑编译asn文件所生成的.h和.c文件来完成。
https://stackoverflow.com/questions/19388524
复制相似问题