mirror of
				https://github.com/brmlab/osmo-tetra.git
				synced 2025-10-30 23:14:00 +01:00 
			
		
		
		
	add rate 8/17 RCPC for speech with STCH
This commit is contained in:
		
							parent
							
								
									e3032cd897
								
							
						
					
					
						commit
						c959894fbe
					
				
					 2 changed files with 13 additions and 0 deletions
				
			
		|  | @ -99,6 +99,7 @@ const uint8_t P_rate1_3[] = { 0, 1, 2, 3, 5, 6, 7 }; | ||||||
| /* Voice */ | /* Voice */ | ||||||
| const uint8_t P_rate8_12[] = { 0, 1, 2, 4 }; | const uint8_t P_rate8_12[] = { 0, 1, 2, 4 }; | ||||||
| const uint8_t P_rate8_18[] = { 0, 1, 2, 3, 4, 5, 7, 8, 10, 11 }; | const uint8_t P_rate8_18[] = { 0, 1, 2, 3, 4, 5, 7, 8, 10, 11 }; | ||||||
|  | const uint8_t P_rate8_17[] = { 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23 }; | ||||||
| 
 | 
 | ||||||
| struct puncturer { | struct puncturer { | ||||||
| 	enum tetra_rcpc_puncturer type; | 	enum tetra_rcpc_puncturer type; | ||||||
|  | @ -177,6 +178,15 @@ static const struct puncturer punct_72_162 = { | ||||||
| 	.i_func = &i_func_equals, | 	.i_func = &i_func_equals, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | /* EN 300 395-2 Section 5.6.2.1 */ | ||||||
|  | static const struct puncturer punct_38_80 = { | ||||||
|  | 	.type = TETRA_RCPC_PUNCT_72_162, | ||||||
|  | 	.P = P_rate8_17, | ||||||
|  | 	.t = 17, | ||||||
|  | 	.period = 24, | ||||||
|  | 	.i_func = &i_func_equals, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| static const struct puncturer *tetra_puncts[] = { | static const struct puncturer *tetra_puncts[] = { | ||||||
| 	[TETRA_RCPC_PUNCT_2_3]		= &punct_2_3, | 	[TETRA_RCPC_PUNCT_2_3]		= &punct_2_3, | ||||||
| 	[TETRA_RCPC_PUNCT_1_3]		= &punct_1_3, | 	[TETRA_RCPC_PUNCT_1_3]		= &punct_1_3, | ||||||
|  | @ -184,6 +194,7 @@ static const struct puncturer *tetra_puncts[] = { | ||||||
| 	[TETRA_RCPC_PUNCT_148_432]	= &punct_148_432, | 	[TETRA_RCPC_PUNCT_148_432]	= &punct_148_432, | ||||||
| 	[TETRA_RCPC_PUNCT_114_171]	= &punct_114_171, | 	[TETRA_RCPC_PUNCT_114_171]	= &punct_114_171, | ||||||
| 	[TETRA_RCPC_PUNCT_72_162]	= &punct_72_162, | 	[TETRA_RCPC_PUNCT_72_162]	= &punct_72_162, | ||||||
|  | 	[TETRA_RCPC_PUNCT_38_80]	= &punct_38_80, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* Puncture the mother code (in) and write 'len' symbols to out */ | /* Puncture the mother code (in) and write 'len' symbols to out */ | ||||||
|  | @ -252,6 +263,7 @@ static const struct punct_test_param punct_test_params[] = { | ||||||
| 	{ 288, 432, 4, TETRA_RCPC_PUNCT_2_3 },		/* SCH/F */ | 	{ 288, 432, 4, TETRA_RCPC_PUNCT_2_3 },		/* SCH/F */ | ||||||
| 	{ 114, 171, 3, TETRA_RCPC_PUNCT_114_171 },	/* Speech class 1 */ | 	{ 114, 171, 3, TETRA_RCPC_PUNCT_114_171 },	/* Speech class 1 */ | ||||||
| 	{ 72, 162, 3, TETRA_RCPC_PUNCT_72_162 },	/* Speech class 2 */ | 	{ 72, 162, 3, TETRA_RCPC_PUNCT_72_162 },	/* Speech class 2 */ | ||||||
|  | 	{ 38, 80, 3, TETRA_RCPC_PUNCT_38_80 },		/* Speech class 2 in STCH */ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static int mother_memcmp(const uint8_t *mother, const uint8_t *depunct, int len) | static int mother_memcmp(const uint8_t *mother, const uint8_t *depunct, int len) | ||||||
|  |  | ||||||
|  | @ -20,6 +20,7 @@ enum tetra_rcpc_puncturer { | ||||||
| 	TETRA_RCPC_PUNCT_148_432, | 	TETRA_RCPC_PUNCT_148_432, | ||||||
| 	TETRA_RCPC_PUNCT_114_171, | 	TETRA_RCPC_PUNCT_114_171, | ||||||
| 	TETRA_RCPC_PUNCT_72_162, | 	TETRA_RCPC_PUNCT_72_162, | ||||||
|  | 	TETRA_RCPC_PUNCT_38_80, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* Puncture the mother code (in) and write 'len' symbols to out */ | /* Puncture the mother code (in) and write 'len' symbols to out */ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Harald Welte
						Harald Welte