示例#1
0
/*! \brief return pointer to global buffer containing a TRAU idle frame
 */
uint8_t *trau_idle_frame(void)
{
	/* only initialize during the first call */
	if (!dbits_initted) {
		/* set all D-bits to 1 */
		memset(&fr_idle_frame.d_bits, 0x01, 260);

		memset(&fr_idle_frame.c_bits, 0x01, 25); /* spare are set to 1 */
		/* set Downlink Idle Speech Frame pattern */
		fr_idle_frame.c_bits[0] = 0; /* C1 */
		fr_idle_frame.c_bits[1] = 1; /* C2 */
		fr_idle_frame.c_bits[2] = 1; /* C3 */
		fr_idle_frame.c_bits[3] = 1; /* C4 */
		fr_idle_frame.c_bits[4] = 0; /* C5 */
		/* set no Time Alignment pattern */
		fr_idle_frame.c_bits[5] = 0; /* C6 */
		fr_idle_frame.c_bits[6] = 0; /* C7 */
		fr_idle_frame.c_bits[7] = 0; /* C8 */
		fr_idle_frame.c_bits[8] = 0; /* C9 */
		fr_idle_frame.c_bits[9] = 0; /* C10 */
		fr_idle_frame.c_bits[10] = 0; /* C11 */
		/* already set to 1, but maybe we need to modify it in the future */
		fr_idle_frame.c_bits[11] = 1; /* C12 (UFE), good frame */
		fr_idle_frame.c_bits[15] = 1; /* C16 (SP), no DTX */

		encode_fr(encoded_idle_frame, &fr_idle_frame);
		dbits_initted = 1; /* set it to 1 to not call it again */
	}
	return encoded_idle_frame;
}
示例#2
0
int encode_trau_frame(uint8_t *trau_bits, const struct decoded_trau_frame *fr)
{
	uint8_t cbits5 = get_bits(fr->c_bits, 0, 5);
	
	/* 16 bits of sync header */
	memset(trau_bits, 0, 16);

	switch (cbits5) {
	case TRAU_FT_FR_UP:
	case TRAU_FT_FR_DOWN:
	case TRAU_FT_IDLE_UP:
	case TRAU_FT_IDLE_DOWN:
	case TRAU_FT_EFR:
		encode_fr(trau_bits, fr);
		break;
	case TRAU_FT_AMR:
	case TRAU_FT_OM_UP:
	case TRAU_FT_OM_DOWN:
	case TRAU_FT_DATA_UP:
	case TRAU_FT_DATA_DOWN:
	case TRAU_FT_D145_SYNC:
	case TRAU_FT_EDATA:
		LOGP(DMUX, LOGL_NOTICE, "unimplemented TRAU Frame Type "
			"0x%02x\n", cbits5);
		return -1;
		break;
	default:
		LOGP(DMUX, LOGL_NOTICE, "unknown TRAU Frame Type "
			"0x%02x\n", cbits5);
		return -1;
		break;
	}

	return 0;
}
示例#3
0
uint8_t *trau_idle_frame(void)
{
	/* only initialize during the first call */
	if (!dbits_initted) {
		/* set all D-bits to 1 */
		memset(&fr_idle_frame.d_bits, 0x01, 260);
		encode_fr(encoded_idle_frame, &fr_idle_frame);
	}
	return encoded_idle_frame;
}