FreeCalypso > hg > gsm-codec-lib
view libgsmhr1/twts002_in.c @ 491:45bf34451dd7
libgsmhr1: implement TW-TS-002 input
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 15 Jun 2024 06:22:21 +0000 |
parents | |
children |
line wrap: on
line source
/* * The function implemented in this module parses a received TW-TS-002 * RTP payload and turns it into the internal input form for the HRv1 * decoder. */ #include <stdint.h> #include <string.h> #include "tw_gsmhr.h" int gsmhr_decoder_twts002_in(const uint8_t *payload, int16_t *params) { int ft; if (payload[0] & 0x80) return -1; ft = payload[0] >> 4; switch (ft) { case 0: gsmhr_unpack_ts101318(payload + 1, params); params[18] = 0; /* BFI */ params[20] = 0; /* SID */ break; case 1: memset(params, 0, sizeof(int16_t) * GSMHR_NUM_PARAMS); params[18] = 0; /* BFI */ params[20] = 1; /* SID */ break; case 2: gsmhr_unpack_ts101318(payload + 1, params); params[18] = 0; /* BFI */ params[20] = 2; /* SID */ break; case 6: gsmhr_unpack_ts101318(payload + 1, params); params[18] = 1; /* BFI */ params[20] = 0; /* SID */ break; case 7: memset(params, 0, sizeof(int16_t) * GSMHR_NUM_PARAMS); params[18] = 2; /* BFI with no data */ params[20] = 0; /* SID */ break; default: return -2; } /* UFI and TAF always get their own bits */ params[19] = (payload[0] & 0x02) >> 1; params[21] = payload[0] & 0x01; return 0; }