diff --git a/examples/README b/examples/README index ae7ee79a..fa138805 100644 --- a/examples/README +++ b/examples/README @@ -12,3 +12,6 @@ To compile the files using asn1c, try 1. The ./sample.source.PKIX1 directory contains the X.509 Certificate decoder. 2. The ./sample.source.TAP3 directory contains the GSM TAP3 decoder. Please read the README file in that directory first. +3. The ./sample.source.MHEG5 directory contains the decoder for +ISO 13522 MHEG-5/ITU-T T.172 (Multimedia Hypermedia Experts Group, +Multimedia Presentations). diff --git a/examples/sample.source.MHEG5/Makefile b/examples/sample.source.MHEG5/Makefile new file mode 100644 index 00000000..e84e400f --- /dev/null +++ b/examples/sample.source.MHEG5/Makefile @@ -0,0 +1,479 @@ +ASN_MODULE_SOURCES= \ + InterchangedObject.c \ + RootClass.c \ + GroupClass.c \ + StandardIdentifier.c \ + GroupItem.c \ + ApplicationClass.c \ + DefaultAttribute.c \ + FontBody.c \ + SceneClass.c \ + SceneCoordinateSystem.c \ + AspectRatio.c \ + NextScene.c \ + IngredientClass.c \ + ContentBody.c \ + ReferencedContent.c \ + LinkClass.c \ + LinkCondition.c \ + EventType.c \ + EventData.c \ + ProgramClass.c \ + ResidentProgramClass.c \ + RemoteProgramClass.c \ + InterchangedProgramClass.c \ + PaletteClass.c \ + FontClass.c \ + CursorShapeClass.c \ + VariableClass.c \ + OriginalValue.c \ + BooleanVariableClass.c \ + IntegerVariableClass.c \ + OctetStringVariableClass.c \ + ObjectRefVariableClass.c \ + ContentRefVariableClass.c \ + PresentableClass.c \ + TokenManagerClass.c \ + Movement.c \ + TokenGroupClass.c \ + TokenGroupItem.c \ + ActionSlot.c \ + ListGroupClass.c \ + VisibleClass.c \ + OriginalBoxSize.c \ + BitmapClass.c \ + LineArtClass.c \ + RectangleClass.c \ + DynamicLineArtClass.c \ + TextClass.c \ + Justification.c \ + LineOrientation.c \ + StartCorner.c \ + StreamClass.c \ + StreamComponent.c \ + Storage.c \ + AudioClass.c \ + VideoClass.c \ + Termination.c \ + RTGraphicsClass.c \ + InteractibleClass.c \ + SliderClass.c \ + Orientation.c \ + SliderStyle.c \ + EntryFieldClass.c \ + InputType.c \ + HyperTextClass.c \ + ButtonClass.c \ + HotspotClass.c \ + PushButtonClass.c \ + SwitchButtonClass.c \ + ButtonStyle.c \ + ActionClass.c \ + ElementaryAction.c \ + Add.c \ + AddItem.c \ + Append.c \ + Call.c \ + CallActionSlot.c \ + Clone.c \ + CloseConnection.c \ + DelItem.c \ + DeselectItem.c \ + Divide.c \ + DrawArc.c \ + DrawLine.c \ + DrawOval.c \ + DrawPolygon.c \ + DrawPolyline.c \ + DrawRectangle.c \ + DrawSector.c \ + Fork.c \ + GetAvailabilityStatus.c \ + GetBoxSize.c \ + GetCellItem.c \ + GetCursorPosition.c \ + GetEngineSupport.c \ + GetEntryPoint.c \ + GetFillColour.c \ + GetFirstItem.c \ + GetHighlightStatus.c \ + GetInteractionStatus.c \ + GetItemStatus.c \ + GetLabel.c \ + GetLastAnchorFired.c \ + GetLineColour.c \ + GetLineStyle.c \ + GetLineWidth.c \ + GetListItem.c \ + GetListSize.c \ + GetOverwriteMode.c \ + GetPortion.c \ + GetPosition.c \ + GetRunningStatus.c \ + GetSelectionStatus.c \ + GetSliderValue.c \ + GetTextContent.c \ + GetTextData.c \ + GetTokenPosition.c \ + GetVolume.c \ + Modulo.c \ + Move.c \ + MoveTo.c \ + Multiply.c \ + OpenConnection.c \ + PutBefore.c \ + PutBehind.c \ + ReadPersistent.c \ + ScaleBitmap.c \ + ScaleVideo.c \ + ScrollItems.c \ + SelectItem.c \ + SendEvent.c \ + SetBoxSize.c \ + SetCachePriority.c \ + SetCounterEndPosition.c \ + SetCounterPosition.c \ + SetCounterTrigger.c \ + SetCursorPosition.c \ + SetCursorShape.c \ + SetData.c \ + SetEntryPoint.c \ + SetFillColour.c \ + SetFirstItem.c \ + SetFontRef.c \ + SetHighlightStatus.c \ + SetInteractionStatus.c \ + SetLabel.c \ + SetLineColour.c \ + SetLineStyle.c \ + SetLineWidth.c \ + SetOverwriteMode.c \ + SetPaletteRef.c \ + SetPortion.c \ + SetPosition.c \ + SetSliderValue.c \ + SetSpeed.c \ + SetTimer.c \ + NewTimer.c \ + SetTransparency.c \ + SetVariable.c \ + SetVolume.c \ + Step.c \ + StorePersistent.c \ + Subtract.c \ + TestVariable.c \ + ToggleItem.c \ + TransitionTo.c \ + ConnectionTagOrNull.c \ + ComparisonValue.c \ + EmulatedEventData.c \ + NewColour.c \ + NewContent.c \ + NewFont.c \ + NewReferencedContent.c \ + NewContentSize.c \ + NewVariableValue.c \ + Parameter.c \ + Point.c \ + Rational.c \ + ObjectReference.c \ + ExternalReference.c \ + IndirectReference.c \ + ContentReference.c \ + GenericObjectReference.c \ + GenericContentReference.c \ + GenericInteger.c \ + GenericBoolean.c \ + GenericOctetString.c \ + Colour.c \ + XYPosition.c + +ASN_MODULE_HEADERS= \ + InterchangedObject.h \ + RootClass.h \ + GroupClass.h \ + StandardIdentifier.h \ + GroupItem.h \ + ApplicationClass.h \ + DefaultAttribute.h \ + FontBody.h \ + SceneClass.h \ + SceneCoordinateSystem.h \ + AspectRatio.h \ + NextScene.h \ + IngredientClass.h \ + ContentBody.h \ + ReferencedContent.h \ + LinkClass.h \ + LinkCondition.h \ + EventType.h \ + EventData.h \ + ProgramClass.h \ + ResidentProgramClass.h \ + RemoteProgramClass.h \ + InterchangedProgramClass.h \ + PaletteClass.h \ + FontClass.h \ + CursorShapeClass.h \ + VariableClass.h \ + OriginalValue.h \ + BooleanVariableClass.h \ + IntegerVariableClass.h \ + OctetStringVariableClass.h \ + ObjectRefVariableClass.h \ + ContentRefVariableClass.h \ + PresentableClass.h \ + TokenManagerClass.h \ + Movement.h \ + TokenGroupClass.h \ + TokenGroupItem.h \ + ActionSlot.h \ + ListGroupClass.h \ + VisibleClass.h \ + OriginalBoxSize.h \ + BitmapClass.h \ + LineArtClass.h \ + RectangleClass.h \ + DynamicLineArtClass.h \ + TextClass.h \ + Justification.h \ + LineOrientation.h \ + StartCorner.h \ + StreamClass.h \ + StreamComponent.h \ + Storage.h \ + AudioClass.h \ + VideoClass.h \ + Termination.h \ + RTGraphicsClass.h \ + InteractibleClass.h \ + SliderClass.h \ + Orientation.h \ + SliderStyle.h \ + EntryFieldClass.h \ + InputType.h \ + HyperTextClass.h \ + ButtonClass.h \ + HotspotClass.h \ + PushButtonClass.h \ + SwitchButtonClass.h \ + ButtonStyle.h \ + ActionClass.h \ + ElementaryAction.h \ + Add.h \ + AddItem.h \ + Append.h \ + Call.h \ + CallActionSlot.h \ + Clone.h \ + CloseConnection.h \ + DelItem.h \ + DeselectItem.h \ + Divide.h \ + DrawArc.h \ + DrawLine.h \ + DrawOval.h \ + DrawPolygon.h \ + DrawPolyline.h \ + DrawRectangle.h \ + DrawSector.h \ + Fork.h \ + GetAvailabilityStatus.h \ + GetBoxSize.h \ + GetCellItem.h \ + GetCursorPosition.h \ + GetEngineSupport.h \ + GetEntryPoint.h \ + GetFillColour.h \ + GetFirstItem.h \ + GetHighlightStatus.h \ + GetInteractionStatus.h \ + GetItemStatus.h \ + GetLabel.h \ + GetLastAnchorFired.h \ + GetLineColour.h \ + GetLineStyle.h \ + GetLineWidth.h \ + GetListItem.h \ + GetListSize.h \ + GetOverwriteMode.h \ + GetPortion.h \ + GetPosition.h \ + GetRunningStatus.h \ + GetSelectionStatus.h \ + GetSliderValue.h \ + GetTextContent.h \ + GetTextData.h \ + GetTokenPosition.h \ + GetVolume.h \ + Modulo.h \ + Move.h \ + MoveTo.h \ + Multiply.h \ + OpenConnection.h \ + PutBefore.h \ + PutBehind.h \ + ReadPersistent.h \ + ScaleBitmap.h \ + ScaleVideo.h \ + ScrollItems.h \ + SelectItem.h \ + SendEvent.h \ + SetBoxSize.h \ + SetCachePriority.h \ + SetCounterEndPosition.h \ + SetCounterPosition.h \ + SetCounterTrigger.h \ + SetCursorPosition.h \ + SetCursorShape.h \ + SetData.h \ + SetEntryPoint.h \ + SetFillColour.h \ + SetFirstItem.h \ + SetFontRef.h \ + SetHighlightStatus.h \ + SetInteractionStatus.h \ + SetLabel.h \ + SetLineColour.h \ + SetLineStyle.h \ + SetLineWidth.h \ + SetOverwriteMode.h \ + SetPaletteRef.h \ + SetPortion.h \ + SetPosition.h \ + SetSliderValue.h \ + SetSpeed.h \ + SetTimer.h \ + NewTimer.h \ + SetTransparency.h \ + SetVariable.h \ + SetVolume.h \ + Step.h \ + StorePersistent.h \ + Subtract.h \ + TestVariable.h \ + ToggleItem.h \ + TransitionTo.h \ + ConnectionTagOrNull.h \ + ComparisonValue.h \ + EmulatedEventData.h \ + NewColour.h \ + NewContent.h \ + NewFont.h \ + NewReferencedContent.h \ + NewContentSize.h \ + NewVariableValue.h \ + Parameter.h \ + Point.h \ + Rational.h \ + ObjectReference.h \ + ExternalReference.h \ + IndirectReference.h \ + ContentReference.h \ + GenericObjectReference.h \ + GenericContentReference.h \ + GenericInteger.h \ + GenericBoolean.h \ + GenericOctetString.h \ + Colour.h \ + XYPosition.h + +ASN_MODULE_HEADERS+=BOOLEAN.h +ASN_MODULE_SOURCES+=BOOLEAN.c +ASN_MODULE_HEADERS+=ENUMERATED.h +ASN_MODULE_SOURCES+=ENUMERATED.c +ASN_MODULE_HEADERS+=INTEGER.h +ASN_MODULE_SOURCES+=INTEGER.c +ASN_MODULE_HEADERS+=NULL.h +ASN_MODULE_SOURCES+=NULL.c +ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h +ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c +ASN_MODULE_HEADERS+=asn_SET_OF.h +ASN_MODULE_SOURCES+=asn_SET_OF.c +ASN_MODULE_HEADERS+=constr_CHOICE.h +ASN_MODULE_SOURCES+=constr_CHOICE.c +ASN_MODULE_HEADERS+=constr_SEQUENCE.h +ASN_MODULE_SOURCES+=constr_SEQUENCE.c +ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h +ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c +ASN_MODULE_HEADERS+=constr_SET_OF.h +ASN_MODULE_HEADERS+=constr_SET.h +ASN_MODULE_SOURCES+=constr_SET.c +ASN_MODULE_SOURCES+=constr_SET_OF.c +ASN_MODULE_HEADERS+=asn_application.h +ASN_MODULE_HEADERS+=asn_system.h +ASN_MODULE_HEADERS+=asn_codecs.h +ASN_MODULE_HEADERS+=asn_internal.h +ASN_MODULE_HEADERS+=OCTET_STRING.h +ASN_MODULE_SOURCES+=OCTET_STRING.c +ASN_MODULE_HEADERS+=BIT_STRING.h +ASN_MODULE_SOURCES+=BIT_STRING.c +ASN_MODULE_SOURCES+=asn_codecs_prim.c +ASN_MODULE_HEADERS+=asn_codecs_prim.h +ASN_MODULE_HEADERS+=ber_tlv_length.h +ASN_MODULE_SOURCES+=ber_tlv_length.c +ASN_MODULE_HEADERS+=ber_tlv_tag.h +ASN_MODULE_SOURCES+=ber_tlv_tag.c +ASN_MODULE_HEADERS+=ber_decoder.h +ASN_MODULE_SOURCES+=ber_decoder.c +ASN_MODULE_HEADERS+=der_encoder.h +ASN_MODULE_SOURCES+=der_encoder.c +ASN_MODULE_HEADERS+=constr_TYPE.h +ASN_MODULE_SOURCES+=constr_TYPE.c +ASN_MODULE_HEADERS+=constraints.h +ASN_MODULE_SOURCES+=constraints.c +ASN_MODULE_HEADERS+=xer_support.h +ASN_MODULE_SOURCES+=xer_support.c +ASN_MODULE_HEADERS+=xer_decoder.h +ASN_MODULE_SOURCES+=xer_decoder.c +ASN_MODULE_HEADERS+=xer_encoder.h +ASN_MODULE_SOURCES+=xer_encoder.c + + +lib_LTLIBRARIES=libsomething.la +libsomething_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS) + +# This file may be used as an input for make(3) +# Remove the lines below to convert it into a pure .am file +TARGET = mheg5dump +CFLAGS += -I. -DHAVE_CONFIG_H +OBJS=${ASN_MODULE_SOURCES:.c=.o} $(TARGET).o + +all: $(TARGET) + +$(TARGET): ${OBJS} + $(CC) $(CFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS) + +.SUFFIXES: +.SUFFIXES: .c .o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + +clean: + rm -f $(TARGET) + rm -f $(OBJS) + +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + ../../asn1c/asn1c -S ../../skeletons -fcompound-names ../ISO13522-MHEG-5.asn + + +../ISO13522-MHEG-5.asn: + @echo The ../ISO13522-MHEG-5.asn file is not yet present. + @echo Please read the README file on how to obtain this file. + @exit 42 + +InterchangedObject.c: ../ISO13522-MHEG-5.asn regenerate.Makefile + ./regenerate.Makefile + @touch InterchangedObject.c + make + +ASN_DECODER_TEMPLATE=../../skeletons/asn-decoder-template.c +$(TARGET).o: $(ASN_DECODER_TEMPLATE) + $(CC) $(CFLAGS) -Dasn_DEF=asn_DEF_InterchangedObject -o $(TARGET).o -c $(ASN_DECODER_TEMPLATE) + +distclean: clean + rm -f $(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS) + rm -f Makefile.am.sample diff --git a/examples/sample.source.MHEG5/README b/examples/sample.source.MHEG5/README new file mode 100644 index 00000000..2fe89c1e --- /dev/null +++ b/examples/sample.source.MHEG5/README @@ -0,0 +1,48 @@ + +GENERAL INFORMATION +=================== + +The ISO MHEG-5 (Multimedia Hypermedia Experts Group, +Multimedia Presentations) decoder. + +Invoking `make` will compile the ASN.1 specifications from the +../ISO13522-MHEG-5.asn file. + +THERE IS NO ISO13522-MHEG-5.asn FILE THERE YET! + +OBTAINING THE MHEG-5 SPECIFICATION +================================== + +To obtain the MHEG-5 ASN.1 specification, you should go to + http://www.itu.int/ITU-T/asn1/database/itu-t/t/t172 +and select the latest "Text" version of the corresponding ASN.1 module. + +After obtaining the ISO13522-MHEG-5.asn, type `make` in the directory +containing this README file. + +mheg5dump USAGE +=============== + +The mheg5dump utility may be used to dump the contents of the BER-encoded +MHEG-5 data record file: + + ./mheg5dump -x tapfile.der # Print as XML (BASIC-XER) + +If necessary, a straightforward modification of the + ../../skeletons/asn-decoder-template.c +will allow you to build a converter from the XML (XER) MHEG-5 format +back into binary (BER). + +The full list of recognized command line options may be obtained with + + > ./mheg5dump -h + Usage: ./mheg5dump [options] ... + Where options are: + -b Set the i/o buffer size (default is 8192) + -c Check ASN.1 constraints after decoding + -d Enable debugging (-dd is even better) + -n Process files times + -s Set the stack usage limit + -p Print out the decoded contents + -x Print out as XML +