<div dir="ltr">Hi,<div><br></div><div>I'm not very familiar with ASN.1, but I believe the error comes from a different place than the CallEventRecord. <font face="monospace">{invalid_choice_tag, {1, _}}</font> suggests that you're trying to decode a CHOICE and found tag 1 in the data, but there's no tag 1 in the definition. CallEventRecord has tag 1 (GGSNPDPRecord), so the error cannot come from this place (and if there were an error decoding the GGSNPDPRecord, the error message won't complain about the invalid choice tag).</div><div><br></div><div>Could you please include the top of the call stack? i think the name of the function where this error is coming from may hint to what kind of data fails to decode. Or, you can search the ASN.1 files for a CHOICE that has no tag 1.</div><div><br></div><div>Cheers,</div><div>Daniel</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 12 Sep 2019 at 16:37, Anthony Howe <<a href="mailto:achowe@snert.com">achowe@snert.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I've written a couple ASN.1 BER and PER transcoders to JSON for LTE,<br>
TAP3, NRTRDE files before.  ( It was Erlang's open source ASN.1 support<br>
that got me to learn the language in the first place. )  I'm trying to<br>
write one now for GPRS charging records (ETSI TS 101 393 V7.4.0<br>
(2000-02)); I have something that builds, but does not decode the input<br>
and just reports a vague Erlang ASN error.<br>
<br>
I figure the problem revolves around a mismatched set of ASN module<br>
files (which are a frik'n pain to find, but I digress).  Anyway, I<br>
figure if I understood the error better it might point me finally in the<br>
right direction.<br>
<br>
So the error is...<br>
<br>
$ ./_build/default/bin/gprsdump -r cdr_0f1<br>
cdr_0f1: processing...<br>
runtime error: cdr_0f1: {badmatch,<br>
                         {error,<br>
                          {asn1,<br>
                           {invalid_choice_tag,<br>
                            {1,<br>
                             <<0,168,161,129,165,128,1,19,131,8,48,36,128,<br>
                               1,113,0,0,63,164>>}}}}}<br>
<br>
Reset of stack omitted.<br>
<br>
My interpretation is that initial CallEventRecord choice 1<br>
(GGSNPDPRecord) is not decoding, but I have no idea what the binary is<br>
suppose to be telling me, other than "You Are Here in the BER input".<br>
<br>
CallEventRecord ::= CHOICE<br>
{<br>
        sgsnPDPRecord                   [0] SGSNPDPRecord,<br>
        ggsnPDPRecord                   [1] GGSNPDPRecord,<br>
        sgsnMMRecord                    [2] SGSNMMRecord,<br>
        sgsnSMORecord                   [3] SGSNSMORecord,<br>
        sgsnSMTRecord                   [4] SGSNSMTRecord<br>
}<br>
<br>
Any clues to would be welcome.<br>
<br>
Right now its looking like I'll have to learn how to decode BER by hand<br>
in order to understand the failure better.  Maybe a generic BER to ASN<br>
syntax decoder tool?<br>
<br>
<br>
-- <br>
Anthony C Howe                                              SnertSoft<br>
<a href="mailto:achowe@snert.com" target="_blank">achowe@snert.com</a>       Twitter: SirWumpus       BarricadeMX & Milters<br>
<a href="http://snert.com/" rel="noreferrer" target="_blank">http://snert.com/</a>      <a href="http://nanozen.info/" rel="noreferrer" target="_blank">http://nanozen.info/</a>     <a href="http://snertsoft.com/" rel="noreferrer" target="_blank">http://snertsoft.com/</a><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>