summaryrefslogtreecommitdiffstats
path: root/tests/codec
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-05-31 14:50:21 +0200
committerHarald Welte <laforge@gnumonks.org>2016-06-01 10:44:06 +0000
commitec8f192fec548dd87522946319d80e4f3bc4e35c (patch)
treeac65b412cc0bd44cb14ffd36ab5419d9b8a7310f /tests/codec
parent720ac4a4e1768cd928eb9d9265c0417f6865bc1b (diff)
Add functions to detect HR/FR SID frames
Add functions which check if given FR or HR frame (packed in RTP) contains SID (SIlence Descriptor) and corresponding tests. Related: OS#22 Change-Id: I4051e3c0d4fb9ee93d7e9e0ef4abaf9f18e227ca Reviewed-on: https://gerrit.osmocom.org/160 Tested-by: Jenkins Builder Reviewed-by: Harald Welte <laforge@gnumonks.org>
Diffstat (limited to 'tests/codec')
-rw-r--r--tests/codec/codec_test.c28
-rw-r--r--tests/codec/codec_test.ok6
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/codec/codec_test.c b/tests/codec/codec_test.c
index 4905dd39..5b934b13 100644
--- a/tests/codec/codec_test.c
+++ b/tests/codec/codec_test.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <stdbool.h>
#include <osmocom/core/utils.h>
#include <osmocom/codec/codec.h>
@@ -68,6 +69,26 @@ static void test_amr_rt(uint8_t _cmr, enum osmo_amr_type _ft,
cmpr(_cmr, cmr), cmpr(_ft, ft), cmpr(_bfi, bfi), cmi, sti);
}
+uint8_t fr[] = {0xd8, 0xa9, 0xb5, 0x1d, 0xda, 0xa8, 0x82, 0xcc, 0xec, 0x52,
+ 0x29, 0x05, 0xa8, 0xc3, 0xe3, 0x0e, 0xb0, 0x89, 0x7a, 0xee,
+ 0x42, 0xca, 0xc4, 0x97, 0x22, 0xe6, 0x9e, 0xa8, 0xb8, 0xec,
+ 0x52, 0x26, 0xbd};
+uint8_t sid_fr[] = {0xd7, 0x27, 0x93, 0xe5, 0xe3, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+uint8_t hr[] = {0x06, 0x46, 0x76, 0xb1, 0x8e, 0x48, 0x9a, 0x2f, 0x5e, 0x4c,
+ 0x22, 0x2b, 0x62, 0x25};
+uint8_t sid_hr[] = {0x03, 0x8e, 0xb6, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff};
+
+static void test_sid_xr(uint8_t *t, size_t len, bool hr)
+{
+ printf("%s SID ? %s:: %d\n", hr ? "HR" : "FR", osmo_hexdump(t, len),
+ hr ? osmo_hr_check_sid(t, len) : osmo_fr_check_sid(t, len));
+}
+
int main(int argc, char **argv)
{
printf("AMR RTP payload decoder test:\n");
@@ -79,6 +100,13 @@ int main(int argc, char **argv)
test_amr_rt(AMR_12_2, AMR_12_2, AMR_GOOD);
test_amr_rt(AMR_7_40, AMR_7_40, AMR_BAD);
test_amr_rt(AMR_7_40, AMR_7_40, AMR_GOOD);
+ printf("FR RTP payload SID test:\n");
+ test_sid_xr(sid_fr, 33, false);
+ test_sid_xr(fr, 33, false);
+
+ printf("HR RTP payload SID test:\n");
+ test_sid_xr(sid_hr, 14, true);
+ test_sid_xr(hr, 14, true);
return 0;
}
diff --git a/tests/codec/codec_test.ok b/tests/codec/codec_test.ok
index 0f76fefc..2af7cc71 100644
--- a/tests/codec/codec_test.ok
+++ b/tests/codec/codec_test.ok
@@ -7,3 +7,9 @@ AMR RTP payload decoder test:
[33/33] AMR 12,2 kbit/s (GSM-EFR), CMR: OK, FT: OK, BFI: OK, CMI: -1, STI: -1
[21/21] AMR 7,40 kbit/s (TDMA-EFR), CMR: OK, FT: OK, BFI: OK, CMI: -1, STI: -1
[21/21] AMR 7,40 kbit/s (TDMA-EFR), CMR: OK, FT: OK, BFI: OK, CMI: -1, STI: -1
+FR RTP payload SID test:
+FR SID ? d7 27 93 e5 e3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 :: 1
+FR SID ? d8 a9 b5 1d da a8 82 cc ec 52 29 05 a8 c3 e3 0e b0 89 7a ee 42 ca c4 97 22 e6 9e a8 b8 ec 52 26 bd :: 0
+HR RTP payload SID test:
+HR SID ? 03 8e b6 cb ff ff ff ff ff ff ff ff ff ff :: 1
+HR SID ? 06 46 76 b1 8e 48 9a 2f 5e 4c 22 2b 62 25 :: 0