NMT: Change 'index' of message to 'mt' (message type)
This commit is contained in:
@@ -133,7 +133,7 @@ int nmt_encode_a_number(frame_t *frame, int index, enum number_type type, const
|
|||||||
number_offset = index * 7 - 2;
|
number_offset = index * 7 - 2;
|
||||||
|
|
||||||
/* encode */
|
/* encode */
|
||||||
frame->index = NMT_MESSAGE_8;
|
frame->mt = NMT_MESSAGE_8;
|
||||||
frame->seq_number = index;
|
frame->seq_number = index;
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
/* number type */
|
/* number type */
|
||||||
@@ -251,11 +251,11 @@ static struct nmt_frame {
|
|||||||
/* store actual number of frames for run-time range check */
|
/* store actual number of frames for run-time range check */
|
||||||
static int num_frames;
|
static int num_frames;
|
||||||
|
|
||||||
const char *nmt_frame_name(int index)
|
const char *nmt_frame_name(enum nmt_mt mt)
|
||||||
{
|
{
|
||||||
if (index < 0 || index >= num_frames)
|
if (mt < 0 || mt >= num_frames)
|
||||||
return "invalid";
|
return "invalid";
|
||||||
return nmt_frame[index].nr;
|
return nmt_frame[mt].nr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *param_integer(uint64_t value, int ndigits, enum nmt_direction direction)
|
static const char *param_integer(uint64_t value, int ndigits, enum nmt_direction direction)
|
||||||
@@ -483,7 +483,7 @@ static struct nmt_parameter {
|
|||||||
/* Depending on P-value, direction and additional info, frame index (used for
|
/* Depending on P-value, direction and additional info, frame index (used for
|
||||||
* nmt_frame[]) is decoded.
|
* nmt_frame[]) is decoded.
|
||||||
*/
|
*/
|
||||||
static int decode_frame_index(const uint8_t *digits, enum nmt_direction direction, int callack)
|
enum nmt_mt decode_frame_mt(const uint8_t *digits, enum nmt_direction direction, int callack)
|
||||||
{
|
{
|
||||||
if (direction == MS_TO_MTX || direction == BS_TO_MTX || direction == XX_TO_MTX) {
|
if (direction == MS_TO_MTX || direction == BS_TO_MTX || direction == XX_TO_MTX) {
|
||||||
/* MS/BS TO MTX */
|
/* MS/BS TO MTX */
|
||||||
@@ -672,30 +672,30 @@ int init_frame(void)
|
|||||||
/* decode 16 digits frame */
|
/* decode 16 digits frame */
|
||||||
static void disassemble_frame(frame_t *frame, const uint8_t *digits, enum nmt_direction direction, int callack)
|
static void disassemble_frame(frame_t *frame, const uint8_t *digits, enum nmt_direction direction, int callack)
|
||||||
{
|
{
|
||||||
int index;
|
enum nmt_mt mt;
|
||||||
int i, j, ndigits;
|
int i, j, ndigits;
|
||||||
char digit;
|
char digit;
|
||||||
uint64_t value;
|
uint64_t value;
|
||||||
|
|
||||||
memset(frame, 0, sizeof(*frame));
|
memset(frame, 0, sizeof(*frame));
|
||||||
|
|
||||||
/* index of frame */
|
/* message type of frame */
|
||||||
index = decode_frame_index(digits, direction, callack);
|
mt = decode_frame_mt(digits, direction, callack);
|
||||||
frame->index = index;
|
frame->mt = mt;
|
||||||
|
|
||||||
/* update direction */
|
/* update direction */
|
||||||
direction = nmt_frame[index].direction;
|
direction = nmt_frame[mt].direction;
|
||||||
|
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, "Decoding %s %s %s\n", nmt_dir_name(direction), nmt_frame[index].nr, nmt_frame[index].description);
|
PDEBUG(DFRAME, DEBUG_DEBUG, "Decoding %s %s %s\n", nmt_dir_name(direction), nmt_frame[mt].nr, nmt_frame[mt].description);
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < 16; i++) {
|
||||||
digit = nmt_frame[index].digits[i];
|
digit = nmt_frame[mt].digits[i];
|
||||||
if (digit == '-')
|
if (digit == '-')
|
||||||
continue;
|
continue;
|
||||||
value = digits[i];
|
value = digits[i];
|
||||||
ndigits = 1;
|
ndigits = 1;
|
||||||
for (j = i + 1; j < 16; j++) {
|
for (j = i + 1; j < 16; j++) {
|
||||||
if (nmt_frame[index].digits[j] != digit)
|
if (nmt_frame[mt].digits[j] != digit)
|
||||||
break;
|
break;
|
||||||
value = (value << 4) | digits[j];
|
value = (value << 4) | digits[j];
|
||||||
ndigits++;
|
ndigits++;
|
||||||
@@ -790,7 +790,7 @@ static void disassemble_frame(frame_t *frame, const uint8_t *digits, enum nmt_di
|
|||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
debug_digits[i] = "0123456789abcdef"[digits[i]];
|
debug_digits[i] = "0123456789abcdef"[digits[i]];
|
||||||
debug_digits[i] = '\0';
|
debug_digits[i] = '\0';
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", nmt_frame[index].digits);
|
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", nmt_frame[mt].digits);
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", debug_digits);
|
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", debug_digits);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -798,30 +798,30 @@ static void disassemble_frame(frame_t *frame, const uint8_t *digits, enum nmt_di
|
|||||||
/* encode 16 digits frame */
|
/* encode 16 digits frame */
|
||||||
static void assemble_frame(frame_t *frame, uint8_t *digits, int debug)
|
static void assemble_frame(frame_t *frame, uint8_t *digits, int debug)
|
||||||
{
|
{
|
||||||
int index;
|
enum nmt_mt mt;
|
||||||
int i, j;
|
int i, j;
|
||||||
char digit;
|
char digit;
|
||||||
uint64_t value;
|
uint64_t value;
|
||||||
enum nmt_direction direction;
|
enum nmt_direction direction;
|
||||||
|
|
||||||
index = frame->index;
|
mt = frame->mt;
|
||||||
|
|
||||||
if (index >= num_frames) {
|
if (mt >= num_frames) {
|
||||||
PDEBUG(DFRAME, DEBUG_ERROR, "Frame index %d out of range (0..%d), please fix!\n", index, num_frames - 1);
|
PDEBUG(DFRAME, DEBUG_ERROR, "Frame mt %d out of range (0..%d), please fix!\n", mt, num_frames - 1);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set prefix of frame */
|
/* set prefix of frame */
|
||||||
frame->prefix = nmt_frame[index].prefix;
|
frame->prefix = nmt_frame[mt].prefix;
|
||||||
|
|
||||||
/* retrieve direction */
|
/* retrieve direction */
|
||||||
direction = nmt_frame[index].direction;
|
direction = nmt_frame[mt].direction;
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, "Coding %s %s %s\n", nmt_dir_name(direction), nmt_frame[index].nr, nmt_frame[index].description);
|
PDEBUG(DFRAME, DEBUG_DEBUG, "Coding %s %s %s\n", nmt_dir_name(direction), nmt_frame[mt].nr, nmt_frame[mt].description);
|
||||||
|
|
||||||
for (i = 15; i >= 0; i--) {
|
for (i = 15; i >= 0; i--) {
|
||||||
digit = nmt_frame[index].digits[i];
|
digit = nmt_frame[mt].digits[i];
|
||||||
if (digit == '-') {
|
if (digit == '-') {
|
||||||
digits[i] = 0;
|
digits[i] = 0;
|
||||||
continue;
|
continue;
|
||||||
@@ -904,7 +904,7 @@ static void assemble_frame(frame_t *frame, uint8_t *digits, int debug)
|
|||||||
digits[i] = (value & 0xf);
|
digits[i] = (value & 0xf);
|
||||||
value >>= 4;
|
value >>= 4;
|
||||||
for (j = i - 1; j >= 0; j--) {
|
for (j = i - 1; j >= 0; j--) {
|
||||||
if (nmt_frame[index].digits[j] != digit)
|
if (nmt_frame[mt].digits[j] != digit)
|
||||||
break;
|
break;
|
||||||
digits[j] = (value & 0xf);
|
digits[j] = (value & 0xf);
|
||||||
value >>= 4;
|
value >>= 4;
|
||||||
@@ -916,13 +916,13 @@ static void assemble_frame(frame_t *frame, uint8_t *digits, int debug)
|
|||||||
int ndigits;
|
int ndigits;
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < 16; i++) {
|
||||||
digit = nmt_frame[index].digits[i];
|
digit = nmt_frame[mt].digits[i];
|
||||||
if (digit == '-')
|
if (digit == '-')
|
||||||
continue;
|
continue;
|
||||||
value = digits[i];
|
value = digits[i];
|
||||||
ndigits = 1;
|
ndigits = 1;
|
||||||
for (j = i + 1; j < 16; j++) {
|
for (j = i + 1; j < 16; j++) {
|
||||||
if (nmt_frame[index].digits[j] != digit)
|
if (nmt_frame[mt].digits[j] != digit)
|
||||||
break;
|
break;
|
||||||
value = (value << 4) | digits[j];
|
value = (value << 4) | digits[j];
|
||||||
ndigits++;
|
ndigits++;
|
||||||
@@ -938,7 +938,7 @@ static void assemble_frame(frame_t *frame, uint8_t *digits, int debug)
|
|||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
debug_digits[i] = "0123456789abcdef"[digits[i]];
|
debug_digits[i] = "0123456789abcdef"[digits[i]];
|
||||||
debug_digits[i] = '\0';
|
debug_digits[i] = '\0';
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", nmt_frame[index].digits);
|
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", nmt_frame[mt].digits);
|
||||||
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", debug_digits);
|
PDEBUG(DFRAME, DEBUG_DEBUG, "%s\n", debug_digits);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -49,7 +49,7 @@ enum nmt_mt {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef struct frame {
|
typedef struct frame {
|
||||||
uint8_t index;
|
enum nmt_mt mt;
|
||||||
uint16_t channel_no;
|
uint16_t channel_no;
|
||||||
uint16_t tc_no;
|
uint16_t tc_no;
|
||||||
uint8_t traffic_area;
|
uint8_t traffic_area;
|
||||||
@@ -84,7 +84,7 @@ uint64_t nmt_digits2value(const char *digits, int num);
|
|||||||
char nmt_value2digit(uint64_t value);
|
char nmt_value2digit(uint64_t value);
|
||||||
uint16_t nmt_encode_area_no(uint8_t area_no);
|
uint16_t nmt_encode_area_no(uint8_t area_no);
|
||||||
|
|
||||||
const char *nmt_frame_name(int index);
|
const char *nmt_frame_name(enum nmt_mt mt);
|
||||||
|
|
||||||
const char *encode_frame(frame_t *frame, int debug);
|
const char *encode_frame(frame_t *frame, int debug);
|
||||||
int decode_frame(frame_t *frame, const char *bits, enum nmt_direction direction, int callack);
|
int decode_frame(frame_t *frame, const char *bits, enum nmt_direction direction, int callack);
|
||||||
|
@@ -524,7 +524,7 @@ static int match_subscriber(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void tx_ident(nmt_t *nmt, frame_t *frame)
|
static void tx_ident(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
frame->index = NMT_MESSAGE_3b;
|
frame->mt = NMT_MESSAGE_3b;
|
||||||
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
||||||
frame->traffic_area = nmt->sysinfo.traffic_area;
|
frame->traffic_area = nmt->sysinfo.traffic_area;
|
||||||
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
||||||
@@ -534,7 +534,7 @@ static void tx_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void set_line_signal(nmt_t *nmt, frame_t *frame, uint8_t signal)
|
static void set_line_signal(nmt_t *nmt, frame_t *frame, uint8_t signal)
|
||||||
{
|
{
|
||||||
frame->index = NMT_MESSAGE_5a;
|
frame->mt = NMT_MESSAGE_5a;
|
||||||
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
||||||
frame->traffic_area = nmt->sysinfo.traffic_area;
|
frame->traffic_area = nmt->sysinfo.traffic_area;
|
||||||
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
||||||
@@ -564,7 +564,7 @@ static int encode_a_number(nmt_t *nmt, frame_t *frame, int index, enum number_ty
|
|||||||
number_offset = index * 7 - 2;
|
number_offset = index * 7 - 2;
|
||||||
|
|
||||||
/* encode */
|
/* encode */
|
||||||
frame->index = NMT_MESSAGE_8;
|
frame->mt = NMT_MESSAGE_8;
|
||||||
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
||||||
frame->traffic_area = nmt->sysinfo.traffic_area;
|
frame->traffic_area = nmt->sysinfo.traffic_area;
|
||||||
frame->seq_number = index;
|
frame->seq_number = index;
|
||||||
@@ -630,16 +630,16 @@ static void tx_idle(nmt_t *nmt, frame_t *frame)
|
|||||||
{
|
{
|
||||||
switch (nmt->sysinfo.chan_type) {
|
switch (nmt->sysinfo.chan_type) {
|
||||||
case CHAN_TYPE_CC:
|
case CHAN_TYPE_CC:
|
||||||
frame->index = NMT_MESSAGE_1a;
|
frame->mt = NMT_MESSAGE_1a;
|
||||||
break;
|
break;
|
||||||
case CHAN_TYPE_TC:
|
case CHAN_TYPE_TC:
|
||||||
frame->index = NMT_MESSAGE_4;
|
frame->mt = NMT_MESSAGE_4;
|
||||||
break;
|
break;
|
||||||
case CHAN_TYPE_CC_TC:
|
case CHAN_TYPE_CC_TC:
|
||||||
frame->index = NMT_MESSAGE_1b;
|
frame->mt = NMT_MESSAGE_1b;
|
||||||
break;
|
break;
|
||||||
case CHAN_TYPE_TEST:
|
case CHAN_TYPE_TEST:
|
||||||
frame->index = NMT_MESSAGE_30;
|
frame->mt = NMT_MESSAGE_30;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
||||||
@@ -649,7 +649,7 @@ static void tx_idle(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_idle(nmt_t *nmt, frame_t *frame)
|
static void rx_idle(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_11a: /* roaming update and seizure */
|
case NMT_MESSAGE_11a: /* roaming update and seizure */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -675,7 +675,7 @@ static void rx_idle(nmt_t *nmt, frame_t *frame)
|
|||||||
/* set subscriber */
|
/* set subscriber */
|
||||||
nmt_value2digits(frame->ms_country, &nmt->subscriber.country, 1);
|
nmt_value2digits(frame->ms_country, &nmt->subscriber.country, 1);
|
||||||
nmt_value2digits(frame->ms_number, nmt->subscriber.number, 6);
|
nmt_value2digits(frame->ms_number, nmt->subscriber.number, 6);
|
||||||
if (frame->index == NMT_MESSAGE_12)
|
if (frame->mt == NMT_MESSAGE_12)
|
||||||
nmt->subscriber.coinbox = 1;
|
nmt->subscriber.coinbox = 1;
|
||||||
nmt->subscriber.number[6] = '\0';
|
nmt->subscriber.number[6] = '\0';
|
||||||
|
|
||||||
@@ -689,7 +689,7 @@ static void rx_idle(nmt_t *nmt, frame_t *frame)
|
|||||||
case NMT_MESSAGE_13a: /* line signal */
|
case NMT_MESSAGE_13a: /* line signal */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -709,7 +709,7 @@ static void tx_roaming_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_roaming_ident(nmt_t *nmt, frame_t *frame)
|
static void rx_roaming_ident(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_11a: /* roaming update */
|
case NMT_MESSAGE_11a: /* roaming update */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -727,7 +727,7 @@ static void rx_roaming_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
nmt->tx_frame_count = 0;
|
nmt->tx_frame_count = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -742,9 +742,9 @@ static void tx_roaming_confirm(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_roaming_confirm(nmt_t *nmt, frame_t *frame)
|
static void rx_roaming_confirm(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -764,7 +764,7 @@ static void tx_mo_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_mo_ident(nmt_t *nmt, frame_t *frame)
|
static void rx_mo_ident(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_10b: /* seizure */
|
case NMT_MESSAGE_10b: /* seizure */
|
||||||
case NMT_MESSAGE_12: /* seizure */
|
case NMT_MESSAGE_12: /* seizure */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
@@ -781,7 +781,7 @@ static void rx_mo_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
nmt->tx_frame_count = 0;
|
nmt->tx_frame_count = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -805,7 +805,7 @@ static void rx_mo_dialing(nmt_t *nmt, frame_t *frame)
|
|||||||
{
|
{
|
||||||
int len = strlen(nmt->dialing);
|
int len = strlen(nmt->dialing);
|
||||||
|
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_14a: /* digits */
|
case NMT_MESSAGE_14a: /* digits */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -881,7 +881,7 @@ static void rx_mo_dialing(nmt_t *nmt, frame_t *frame)
|
|||||||
nmt->tx_frame_count = 0;
|
nmt->tx_frame_count = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -903,7 +903,7 @@ static void tx_mo_complete(nmt_t *nmt, frame_t *frame)
|
|||||||
if (nmt->tx_frame_count == 5)
|
if (nmt->tx_frame_count == 5)
|
||||||
PDEBUG(DNMT, DEBUG_INFO, "Send 'compandor in'.\n");
|
PDEBUG(DNMT, DEBUG_INFO, "Send 'compandor in'.\n");
|
||||||
} else
|
} else
|
||||||
frame->index = NMT_MESSAGE_6;
|
frame->mt = NMT_MESSAGE_6;
|
||||||
if (nmt->tx_frame_count == 9) {
|
if (nmt->tx_frame_count == 9) {
|
||||||
PDEBUG(DNMT, DEBUG_INFO, "Connect audio.\n");
|
PDEBUG(DNMT, DEBUG_INFO, "Connect audio.\n");
|
||||||
nmt_new_state(nmt, STATE_ACTIVE);
|
nmt_new_state(nmt, STATE_ACTIVE);
|
||||||
@@ -931,7 +931,7 @@ static void timeout_mo_dialing(nmt_t *nmt)
|
|||||||
*/
|
*/
|
||||||
static void tx_mt_paging(nmt_t *nmt, frame_t *frame)
|
static void tx_mt_paging(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
frame->index = NMT_MESSAGE_2a;
|
frame->mt = NMT_MESSAGE_2a;
|
||||||
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
||||||
frame->traffic_area = nmt->sysinfo.traffic_area;
|
frame->traffic_area = nmt->sysinfo.traffic_area;
|
||||||
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
||||||
@@ -962,7 +962,7 @@ static void tx_mt_paging(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_mt_paging(nmt_t *nmt, frame_t *frame)
|
static void rx_mt_paging(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_10a: /* call acknowledgement */
|
case NMT_MESSAGE_10a: /* call acknowledgement */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -980,13 +980,13 @@ static void rx_mt_paging(nmt_t *nmt, frame_t *frame)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tx_mt_channel(nmt_t *nmt, frame_t *frame)
|
static void tx_mt_channel(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
frame->index = NMT_MESSAGE_2b;
|
frame->mt = NMT_MESSAGE_2b;
|
||||||
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
frame->channel_no = nmt_encode_channel(nmt->sender.kanal, nmt->sysinfo.ms_power);
|
||||||
frame->traffic_area = nmt->sysinfo.traffic_area;
|
frame->traffic_area = nmt->sysinfo.traffic_area;
|
||||||
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
frame->ms_country = nmt_digits2value(&nmt->subscriber.country, 1);
|
||||||
@@ -1016,7 +1016,7 @@ static void tx_mt_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_mt_ident(nmt_t *nmt, frame_t *frame)
|
static void rx_mt_ident(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_10b: /* seizure */
|
case NMT_MESSAGE_10b: /* seizure */
|
||||||
if (!match_subscriber(nmt, frame))
|
if (!match_subscriber(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -1041,7 +1041,7 @@ static void rx_mt_ident(nmt_t *nmt, frame_t *frame)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1049,7 +1049,7 @@ static void tx_mt_autoanswer(nmt_t *nmt, frame_t *frame)
|
|||||||
{
|
{
|
||||||
/* first we need to wait for autoanswer */
|
/* first we need to wait for autoanswer */
|
||||||
if (nmt->wait_autoanswer) {
|
if (nmt->wait_autoanswer) {
|
||||||
frame->index = NMT_MESSAGE_6;
|
frame->mt = NMT_MESSAGE_6;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (++nmt->tx_frame_count == 1)
|
if (++nmt->tx_frame_count == 1)
|
||||||
@@ -1067,7 +1067,7 @@ static void tx_mt_autoanswer(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_mt_autoanswer(nmt_t *nmt, frame_t *frame)
|
static void rx_mt_autoanswer(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_15: /* idle */
|
case NMT_MESSAGE_15: /* idle */
|
||||||
nmt->wait_autoanswer = 0;
|
nmt->wait_autoanswer = 0;
|
||||||
break;
|
break;
|
||||||
@@ -1084,7 +1084,7 @@ static void rx_mt_autoanswer(nmt_t *nmt, frame_t *frame)
|
|||||||
call_in_answer(nmt->sender.callref, &nmt->subscriber.country);
|
call_in_answer(nmt->sender.callref, &nmt->subscriber.country);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1099,7 +1099,7 @@ static void tx_mt_ringing(nmt_t *nmt, frame_t *frame)
|
|||||||
PDEBUG(DNMT, DEBUG_INFO, "Send 'A-number'.\n");
|
PDEBUG(DNMT, DEBUG_INFO, "Send 'A-number'.\n");
|
||||||
encode_a_number(nmt, frame, nmt->tx_frame_count - 4, nmt->caller_type, nmt->caller_id);
|
encode_a_number(nmt, frame, nmt->tx_frame_count - 4, nmt->caller_type, nmt->caller_id);
|
||||||
} else
|
} else
|
||||||
frame->index = NMT_MESSAGE_6;
|
frame->mt = NMT_MESSAGE_6;
|
||||||
}
|
}
|
||||||
if (nmt->tx_callerid_count == 1) {
|
if (nmt->tx_callerid_count == 1) {
|
||||||
/* start ringing after first caller ID of 6 frames */
|
/* start ringing after first caller ID of 6 frames */
|
||||||
@@ -1117,7 +1117,7 @@ static void tx_mt_ringing(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_mt_ringing(nmt_t *nmt, frame_t *frame)
|
static void rx_mt_ringing(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_13a: /* line signal */
|
case NMT_MESSAGE_13a: /* line signal */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -1131,7 +1131,7 @@ static void rx_mt_ringing(nmt_t *nmt, frame_t *frame)
|
|||||||
call_in_answer(nmt->sender.callref, &nmt->subscriber.country);
|
call_in_answer(nmt->sender.callref, &nmt->subscriber.country);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1143,7 +1143,7 @@ static void tx_mt_complete(nmt_t *nmt, frame_t *frame)
|
|||||||
PDEBUG(DNMT, DEBUG_INFO, "Send 'compandor in'.\n");
|
PDEBUG(DNMT, DEBUG_INFO, "Send 'compandor in'.\n");
|
||||||
set_line_signal(nmt, frame, 5);
|
set_line_signal(nmt, frame, 5);
|
||||||
} else
|
} else
|
||||||
frame->index = NMT_MESSAGE_6;
|
frame->mt = NMT_MESSAGE_6;
|
||||||
if (nmt->tx_frame_count == 5) {
|
if (nmt->tx_frame_count == 5) {
|
||||||
PDEBUG(DNMT, DEBUG_INFO, "Connect audio.\n");
|
PDEBUG(DNMT, DEBUG_INFO, "Connect audio.\n");
|
||||||
nmt_new_state(nmt, STATE_ACTIVE);
|
nmt_new_state(nmt, STATE_ACTIVE);
|
||||||
@@ -1195,7 +1195,7 @@ static void tx_mt_release(nmt_t *nmt, frame_t *frame)
|
|||||||
|
|
||||||
static void rx_mt_release(nmt_t *nmt, frame_t *frame)
|
static void rx_mt_release(nmt_t *nmt, frame_t *frame)
|
||||||
{
|
{
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_13a: /* line signal */
|
case NMT_MESSAGE_13a: /* line signal */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -1207,7 +1207,7 @@ static void rx_mt_release(nmt_t *nmt, frame_t *frame)
|
|||||||
nmt_go_idle(nmt);
|
nmt_go_idle(nmt);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1261,7 +1261,7 @@ static void rx_active(nmt_t *nmt, frame_t *frame)
|
|||||||
if (nmt->supervisory)
|
if (nmt->supervisory)
|
||||||
timer_start(&nmt->timer, SUPERVISORY_TO2);
|
timer_start(&nmt->timer, SUPERVISORY_TO2);
|
||||||
|
|
||||||
switch (frame->index) {
|
switch (frame->mt) {
|
||||||
case NMT_MESSAGE_13a: /* line signal */
|
case NMT_MESSAGE_13a: /* line signal */
|
||||||
if (!match_channel(nmt, frame))
|
if (!match_channel(nmt, frame))
|
||||||
break;
|
break;
|
||||||
@@ -1319,7 +1319,7 @@ static void rx_active(nmt_t *nmt, frame_t *frame)
|
|||||||
nmt->mft_num++;
|
nmt->mft_num++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame->mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1371,13 +1371,13 @@ void nmt_receive_frame(nmt_t *nmt, const char *bits, double quality, double leve
|
|||||||
/* frame counter */
|
/* frame counter */
|
||||||
nmt->rx_frame_count += (int)(frames_elapsed + 0.5);
|
nmt->rx_frame_count += (int)(frames_elapsed + 0.5);
|
||||||
|
|
||||||
PDEBUG(DNMT, (nmt->sender.loopback) ? DEBUG_NOTICE : DEBUG_DEBUG, "Received frame %s\n", nmt_frame_name(frame.index));
|
PDEBUG(DNMT, (nmt->sender.loopback) ? DEBUG_NOTICE : DEBUG_DEBUG, "Received frame %s\n", nmt_frame_name(frame.mt));
|
||||||
|
|
||||||
if (nmt->sender.loopback)
|
if (nmt->sender.loopback)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* MS releases, but this is not the acknowledge of MTX release */
|
/* MS releases, but this is not the acknowledge of MTX release */
|
||||||
if (frame.index == NMT_MESSAGE_13a
|
if (frame.mt == NMT_MESSAGE_13a
|
||||||
&& (frame.line_signal & 0xf) == 1
|
&& (frame.line_signal & 0xf) == 1
|
||||||
&& nmt->state != STATE_MO_RELEASE
|
&& nmt->state != STATE_MO_RELEASE
|
||||||
&& nmt->state != STATE_MT_RELEASE) {
|
&& nmt->state != STATE_MT_RELEASE) {
|
||||||
@@ -1436,7 +1436,7 @@ void nmt_receive_frame(nmt_t *nmt, const char *bits, double quality, double leve
|
|||||||
rx_active(nmt, &frame);
|
rx_active(nmt, &frame);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame.index), nmt_state_name(nmt->state));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Dropping message %s in state %s\n", nmt_frame_name(frame.mt), nmt_state_name(nmt->state));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1524,13 +1524,15 @@ const char *nmt_get_frame(nmt_t *nmt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* no encoding debug for certain (idle) frames */
|
/* no encoding debug for certain (idle) frames */
|
||||||
switch(frame.index) {
|
switch(frame.mt) {
|
||||||
case NMT_MESSAGE_1a:
|
case NMT_MESSAGE_1a:
|
||||||
case NMT_MESSAGE_4:
|
case NMT_MESSAGE_4:
|
||||||
case NMT_MESSAGE_1b:
|
case NMT_MESSAGE_1b:
|
||||||
case NMT_MESSAGE_30:
|
case NMT_MESSAGE_30:
|
||||||
debug = 0;
|
debug = 0;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* frame sending aborted (e.g. due to audio) */
|
/* frame sending aborted (e.g. due to audio) */
|
||||||
@@ -1539,7 +1541,7 @@ const char *nmt_get_frame(nmt_t *nmt)
|
|||||||
|
|
||||||
bits = encode_frame(&frame, debug);
|
bits = encode_frame(&frame, debug);
|
||||||
|
|
||||||
PDEBUG(DNMT, DEBUG_DEBUG, "Sending frame %s.\n", nmt_frame_name(frame.index));
|
PDEBUG(DNMT, DEBUG_DEBUG, "Sending frame %s.\n", nmt_frame_name(frame.mt));
|
||||||
return bits;
|
return bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user