annotate libtwamr/ietf_fo.c @ 553:ebcf414b7d99

doc/TFO-transform: describe details for FRv1, both modes
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 07 Oct 2024 08:24:24 +0000
parents ebe499058c63
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * The function implemented in this module groks the first octet of
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * an RFC 4867 payload and tells the calling application how many more
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * bytes need to be read, or if the frame type is invalid.
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdint.h>
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include "tw_amr.h"
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 static const uint8_t extra_bytes_per_ft[9] =
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 {12, 13, 15, 17, 19, 20, 26, 31, 5};
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 int amr_ietf_grok_first_octet(uint8_t fo)
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 {
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 uint8_t ft;
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 ft = (fo & 0x78) >> 3;
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 if (ft == AMR_FT_NODATA)
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 return 0;
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 if (ft > MRDTX)
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 return -1;
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 return extra_bytes_per_ft[ft];
ebe499058c63 libtwamr: implement API functions for RFC 4867 I/O
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 }