FreeCalypso > hg > gsm-codec-lib
comparison dev/efr-sid-insert.c @ 35:3b5958f28a40
dev: efr-sid-insert helper program
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 24 Nov 2022 02:35:02 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 34:69b9cbca075b | 35:3b5958f28a40 |
|---|---|
| 1 /* | |
| 2 * We need to implement a function that inserts the 95 bit wide SID | |
| 3 * codeword into the frame, and we would like to do it more efficiently | |
| 4 * than calling a "set bit" function for each of the 95 bits. This | |
| 5 * program will produce a more efficient solution. | |
| 6 */ | |
| 7 | |
| 8 #include <stdio.h> | |
| 9 #include <stdint.h> | |
| 10 #include <stdlib.h> | |
| 11 #include <string.h> | |
| 12 | |
| 13 static const uint8_t SID_codeword_bit_idx[95] = | |
| 14 { | |
| 15 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, | |
| 16 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, | |
| 17 66, 67, 68, 94, 95, 96, 98, 99, 100, 101, | |
| 18 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, | |
| 19 112, 113, 114, 115, 116, 117, 118, 148, 149, 150, | |
| 20 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, | |
| 21 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, | |
| 22 171, 196, 197, 198, 199, 200, 201, 202, 203, 204, | |
| 23 205, 206, 207, 208, 209, 212, 213, 214, 215, 216, | |
| 24 217, 218, 219, 220, 221 | |
| 25 }; | |
| 26 | |
| 27 static void set_bit(uint8_t *frame, unsigned bitnum) | |
| 28 { | |
| 29 unsigned bytenum = bitnum >> 3; | |
| 30 unsigned bit_in_byte = 7 - (bitnum & 7); | |
| 31 unsigned bitmask = 1 << bit_in_byte; | |
| 32 | |
| 33 frame[bytenum] |= bitmask; | |
| 34 } | |
| 35 | |
| 36 main(argc, argv) | |
| 37 char **argv; | |
| 38 { | |
| 39 uint8_t bytes[31]; | |
| 40 unsigned n; | |
| 41 | |
| 42 memset(bytes, 0, 31); | |
| 43 for (n = 0; n < 95; n++) | |
| 44 set_bit(bytes, SID_codeword_bit_idx[n] + 4); | |
| 45 for (n = 0; n < 31; n++) | |
| 46 if (bytes[n]) | |
| 47 printf("\tframe[%u] |= 0x%02X;\n", n, bytes[n]); | |
| 48 exit(0); | |
| 49 } |
