diff --git a/asn.1/Makefile b/asn.1/Makefile index efaa5dd5..a809ae75 100644 --- a/asn.1/Makefile +++ b/asn.1/Makefile @@ -19,8 +19,8 @@ libasn1.a: $(ALL_OBJECTS) %.o: %.c %.h $(CC) $(CFLAGS) $(CPPFLAGS) $(OPTIMIZE) $(ASN1C_INC) -c $< -o $@ -Sync.c: sync.asn1 keysync.asn1 trustsync.asn1 groupsync.asn1 pEp.asn1 - $(ASN1C) -gen-PER -fincludes-quoted -fcompound-names -pdu=auto pEp.asn1 keysync.asn1 trustsync.asn1 groupsync.asn1 $< +Sync.c: sync.asn1 keysync.asn1 trustsync.asn1 groupsync.asn1 pEp.asn1 distribution.asn1 + $(ASN1C) -gen-PER -fincludes-quoted -fcompound-names -pdu=auto pEp.asn1 keysync.asn1 trustsync.asn1 groupsync.asn1 distribution.asn1 keyreset.asn1 managedgroup.asn1 exploration.asn1 $< rm -f converter-sample.c touch Sync.c diff --git a/codegen/fsm.yml2 b/codegen/fsm.yml2 index b37bfa80..c14553fb 100644 --- a/codegen/fsm.yml2 +++ b/codegen/fsm.yml2 @@ -66,3 +66,7 @@ decl auto < field >; decl list < field >; +// emped message from other state machine + +decl embed @protocol @type @name; + diff --git a/codegen/gen_messages.ysl2 b/codegen/gen_messages.ysl2 index 30e50ecf..c9d0124b 100644 --- a/codegen/gen_messages.ysl2 +++ b/codegen/gen_messages.ysl2 @@ -15,7 +15,7 @@ tstylesheet { include ./functions.ysl2 function "pEp_imports" - | IMPORTS Version, Identity, IdentityList, TID, Hash, Rating FROM PEP; + | IMPORTS Version, Identity, IdentityList, TID, Hash, Rating FROM PEP function "header" || @@ -74,6 +74,8 @@ tstylesheet { EXPORTS «@name»; `` call "pEp_imports" + `` apply "message/embed", mode=import + ; `` apply "message//list|message", 0, mode=impl; «@name» ::= CHOICE { @@ -88,7 +90,7 @@ tstylesheet { template "message", mode=impl || «@name» ::= SEQUENCE { - `` apply "field|auto|list", mode=direct + `` apply "field|auto|list|embed", mode=direct } || @@ -101,10 +103,13 @@ tstylesheet { || - template "field|auto", mode=direct + template "field|auto|embed", mode=direct | «func:asn1name()» «func:asn1type()»`if "position()!=last()" > ,` template "list", mode=direct | «func:asn1name()» SEQUENCE OF «func:asn1type()»`if "position()!=last()" > ,` + + template "embed", mode=import + | «@type» FROM «yml:ucase(@protocol)» }