forked from cellular-infrastructure/osmocom-analog
Minor fixes on AMPS messages
- Flipping polarity is now performed after B/I has been applied - Correcting sysinfo
This commit is contained in:
parent
4d10ee7c82
commit
12dcc6c40f
|
@ -393,6 +393,9 @@ again:
|
||||||
}
|
}
|
||||||
if (c == 'i')
|
if (c == 'i')
|
||||||
c = (amps->channel_busy) ? '0' : '1';
|
c = (amps->channel_busy) ? '0' : '1';
|
||||||
|
/* invert, if polarity of the cell is negative */
|
||||||
|
if (amps->flip_polarity)
|
||||||
|
c ^= 1;
|
||||||
len = fsk_encode(amps, c);
|
len = fsk_encode(amps, c);
|
||||||
amps->fsk_tx_frame_pos++;
|
amps->fsk_tx_frame_pos++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,9 @@
|
||||||
/* uncomment this to debug bits */
|
/* uncomment this to debug bits */
|
||||||
//#define BIT_DEBUGGING
|
//#define BIT_DEBUGGING
|
||||||
|
|
||||||
|
/* uncomment this to debug all messages (control filler / global action messages) */
|
||||||
|
//#define DEBUG_ALL_MESSAGES
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* parity
|
* parity
|
||||||
*/
|
*/
|
||||||
|
@ -2683,6 +2686,10 @@ static uint64_t amps_encode_word(frame_t *frame, struct def_word *w, int debug)
|
||||||
int sum_bits, bits;
|
int sum_bits, bits;
|
||||||
int i, t4 = 0;
|
int i, t4 = 0;
|
||||||
|
|
||||||
|
#ifdef DEBUG_ALL_MESSAGES
|
||||||
|
debug=1;
|
||||||
|
#endif
|
||||||
|
|
||||||
memset(spaces, ' ', ie_desc_max_len);
|
memset(spaces, ' ', ie_desc_max_len);
|
||||||
spaces[ie_desc_max_len] = '\0';
|
spaces[ie_desc_max_len] = '\0';
|
||||||
|
|
||||||
|
@ -3296,17 +3303,15 @@ static void amps_encode_focc_bits(uint64_t word_a, uint64_t word_b, char *bits)
|
||||||
bits[10] = 'i';
|
bits[10] = 'i';
|
||||||
strcpy(bits + 11, sync_word);
|
strcpy(bits + 11, sync_word);
|
||||||
bits[22] = 'i';
|
bits[22] = 'i';
|
||||||
/* WORD A (msb first) */
|
|
||||||
k = 23;
|
k = 23;
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
|
/* WORD A (msb first) */
|
||||||
for (j = 39; j >= 0; j--) {
|
for (j = 39; j >= 0; j--) {
|
||||||
bits[k++] = ((word_a >> j) & 1) + '0';
|
bits[k++] = ((word_a >> j) & 1) + '0';
|
||||||
if ((j % 10) == 0)
|
if ((j % 10) == 0)
|
||||||
bits[k++] = 'i';
|
bits[k++] = 'i';
|
||||||
}
|
}
|
||||||
}
|
/* WORD B (msb first) */
|
||||||
/* WORD B (msb first) */
|
|
||||||
for (i = 0; i < 5; i++) {
|
|
||||||
for (j = 39; j >= 0; j--) {
|
for (j = 39; j >= 0; j--) {
|
||||||
bits[k++] = ((word_b >> j) & 1) + '0';
|
bits[k++] = ((word_b >> j) & 1) + '0';
|
||||||
if ((j % 10) == 0)
|
if ((j % 10) == 0)
|
||||||
|
@ -3325,15 +3330,10 @@ static void amps_encode_focc_bits(uint64_t word_a, uint64_t word_b, char *bits)
|
||||||
text[23] = '\0';
|
text[23] = '\0';
|
||||||
#ifdef BIT_DEBUGGING
|
#ifdef BIT_DEBUGGING
|
||||||
PDEBUG(DFRAME, DEBUG_INFO, "TX FOCC: %s\n", text);
|
PDEBUG(DFRAME, DEBUG_INFO, "TX FOCC: %s\n", text);
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
strncpy(text, bits + 23 + i * 44, 44);
|
strncpy(text, bits + 23 + i * 44, 44);
|
||||||
text[44] = '\0';
|
text[44] = '\0';
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, " word a - %s\n", text);
|
PDEBUG(DFRAME, DEBUG_DEBUG, " word %c - %s\n", (i & 1) ? 'b' : 'a', text);
|
||||||
}
|
|
||||||
for (i = 5; i < 10; i++) {
|
|
||||||
strncpy(text, bits + 23 + i * 44, 44);
|
|
||||||
text[44] = '\0';
|
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, " word b - %s\n", text);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -3437,14 +3437,6 @@ int amps_encode_frame_focc(amps_t *amps, char *bits)
|
||||||
send:
|
send:
|
||||||
amps_encode_focc_bits(word, word, bits);
|
amps_encode_focc_bits(word, word, bits);
|
||||||
|
|
||||||
/* invert, if polarity of the cell is negative */
|
|
||||||
if (amps->flip_polarity) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; bits[i]; i++)
|
|
||||||
bits[i] ^= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3480,14 +3472,6 @@ int amps_encode_frame_fvc(amps_t *amps, char *bits)
|
||||||
|
|
||||||
amps_encode_fvc_bits(word, bits);
|
amps_encode_fvc_bits(word, bits);
|
||||||
|
|
||||||
/* invert, if polarity of the cell is negative */
|
|
||||||
if (amps->flip_polarity) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; bits[i]; i++)
|
|
||||||
bits[i] ^= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3536,15 +3520,10 @@ static void amps_decode_bits_focc(amps_t *amps, const char *bits)
|
||||||
if (debuglevel == DEBUG_DEBUG) {
|
if (debuglevel == DEBUG_DEBUG) {
|
||||||
char text[64];
|
char text[64];
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
strncpy(text, bits + i * 44, 44);
|
strncpy(text, bits + i * 44, 44);
|
||||||
text[44] = '\0';
|
text[44] = '\0';
|
||||||
PDEBUG_CHAN(DFRAME, DEBUG_DEBUG, " word a - %s%s\n", text, (crc_a_ok[i % 5]) ? " ok" : " BAD CRC!");
|
PDEBUG_CHAN(DFRAME, DEBUG_DEBUG, " word %c - %s%s\n", (i & 1) ? 'b' : 'a', text, (crc_a_ok[i % 5]) ? " ok" : " BAD CRC!");
|
||||||
}
|
|
||||||
for (i = 5; i < 10; i++) {
|
|
||||||
strncpy(text, bits + i * 44, 44);
|
|
||||||
text[44] = '\0';
|
|
||||||
PDEBUG_CHAN(DFRAME, DEBUG_DEBUG, " word b - %s%s\n", text, (crc_b_ok[i % 5]) ? " ok" : " BAD CRC!");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ void init_sysinfo(amps_si *si, int cmac, int vmac, int dcc, int sid1, int regh,
|
||||||
|
|
||||||
/* Word 1 */
|
/* Word 1 */
|
||||||
si->word1.sid1 = sid1;
|
si->word1.sid1 = sid1;
|
||||||
si->word1.ep = 1; /* shall be 0 */
|
si->word1.ep = 0; /* shall be 0 */
|
||||||
si->word1.auth = 0;
|
si->word1.auth = 0;
|
||||||
si->word1.pci = 0;
|
si->word1.pci = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue