R2000: Fixes
This commit is contained in:
parent
3afcac8342
commit
275be50225
|
@ -176,7 +176,7 @@ static struct r2000_element {
|
|||
{ 'r', "SM Relais", NULL, NULL },
|
||||
{ 'f', "SM Flotte", NULL, NULL },
|
||||
{ 'm', "SM ID", NULL, NULL },
|
||||
{ 'd', "Called ID", NULL, NULL },
|
||||
{ 'd', "Called Flotte", NULL, NULL },
|
||||
{ 'c', "CRINS", param_crins, param_crins },
|
||||
{ 'a', "Assign Channel", NULL, NULL },
|
||||
{ 's', "Sequence Number", param_hex, param_hex },
|
||||
|
@ -347,13 +347,13 @@ static struct r2000_frame {
|
|||
const char *def;
|
||||
const char *name;
|
||||
} r2000_frame_def[] = {
|
||||
/* V Channel-Relais---Msg--t--HomeRel--MobieID--------- Supervisory----- */
|
||||
/* V Channel-Relais---Msg--t--HomeRel--MobieID---------misc--------Supervisory----- */
|
||||
/* messages REL->SM */
|
||||
{ REL_TO_SM, 0, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm-----ccc----DDDIII++---PT---", "INSCRIPTION ACK" }, /* inscription ack */
|
||||
{ REL_TO_SM, 2, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm------------DDDIII++---PT---", "PLEASE WAIT" }, /* waiting on CC */
|
||||
{ REL_TO_SM, 1, "V-CCCCCCCCRRRRRRRRRMMMMM----------------------------------------DDDIII++---PT---", "IDLE" }, /* broadcast */
|
||||
{ REL_TO_SM, 2, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm------------DDDIII++---PT---", "PLEASE WAIT" }, /* waiting on CC */
|
||||
{ REL_TO_SM, 3, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmmaaaaaaaa----DDDIII++---PT---", "ASSIGN INCOMING"}, /* assign incoming call */
|
||||
{ REL_TO_SM, 4, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrfffffffffmmmmmmmaaaaaaaa----DDDIII++---PT---", "ASSIGN GROUP"}, /* assign groupp call */
|
||||
{ REL_TO_SM, 4, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrfffffffffmmmmmmmaaaaaaaa----DDDIII++---PT---", "ASSIGN INCOMING (GROUP)"}, /* assign group call */
|
||||
{ REL_TO_SM, 5, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmmaaaaaaaa----DDDIII++---PT---", "ASSIGN OUTGOING"}, /* assign outgoing call */
|
||||
{ REL_TO_SM, 9, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm------------DDDIII++---PT---", "RELEASE ON CC" }, /* release call on CC */
|
||||
{ REL_TO_SM, 16, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm----------------------------", "IDENTITY REQ"}, /* request identity */
|
||||
|
@ -363,7 +363,7 @@ static struct r2000_frame {
|
|||
/* messages SM->REL */
|
||||
{ SM_TO_REL, 0, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm--------ssss", "INSCRIPTION REQ" }, /* inscription */
|
||||
{ SM_TO_REL, 1, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm--------ssss", "CALL REQ (PRIVATE)" }, /* request call */
|
||||
{ SM_TO_REL, 1, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrfffffffffmmmmmmmddddddddssss", "CALL REQ (GROUP)" }, /* request call */
|
||||
{ SM_TO_REL, 2, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrfffffffffmmmmmmmddddddddssss", "CALL REQ (GROUP)" }, /* request call */
|
||||
{ SM_TO_REL, 3, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm--------ssss", "CALL REQ (PUBLIC)" }, /* request call */
|
||||
{ SM_TO_REL, 6, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm------------", "RELEASE ON CC" }, /* release on CC */
|
||||
{ SM_TO_REL, 16, "V-CCCCCCCCRRRRRRRRRMMMMMtttrrrrrrrrrmmmmmmmmmmmmmmmm--------ssss", "IDENTITY ACK" }, /* identity response */
|
||||
|
|
|
@ -372,6 +372,10 @@ static int match_relais(r2000_t *r2000, frame_t *frame)
|
|||
|
||||
static int match_subscriber(r2000_t *r2000, frame_t *frame)
|
||||
{
|
||||
/* ignore dialing messages, because subscriber info is not used in there */
|
||||
if (frame->message == 19 || frame->message == 20)
|
||||
return 1;
|
||||
|
||||
if (r2000->subscriber.relais != frame->sm_relais
|
||||
|| r2000->subscriber.mor != frame->sm_mor) {
|
||||
PDEBUG_CHAN(DR2000, DEBUG_NOTICE, "Frame for different subscriber '%s' received, ignoring.\n", print_subscriber_frame(frame));
|
||||
|
@ -686,9 +690,11 @@ static void rx_idle(r2000_t *r2000, frame_t *frame)
|
|||
r2000->subscriber.relais = frame->sm_relais;
|
||||
r2000->subscriber.mor = frame->sm_mor;
|
||||
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Received inscription from station mobile '%s'\n", print_subscriber_frame(frame));
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, " -> Home Relais: %d'\n", frame->sm_relais);
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, " -> Mobile ID: %d'\n", frame->sm_mor);
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Received inscription from station mobile '%s'\n", print_subscriber_subscr(&r2000->subscriber));
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, " -> Mobile Type: %d'\n", r2000->subscriber.type);
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, " -> Home Relais: %d'\n", r2000->subscriber.relais);
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, " -> Mobile ID: %d'\n", r2000->subscriber.mor);
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, " (Use '%s' as dial string to call the station mobile.)'\n", subscriber2string(&r2000->subscriber));
|
||||
|
||||
r2000_new_state(r2000, STATE_INSCRIPTION);
|
||||
break;
|
||||
|
@ -852,12 +858,15 @@ static void timeout_out_ident(r2000_t *r2000)
|
|||
{
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Timeout receiving identity (outgoing call)\n");
|
||||
|
||||
r2000_release(r2000);
|
||||
r2000_go_idle(r2000);
|
||||
}
|
||||
|
||||
static void timeout_in_ident(r2000_t *r2000)
|
||||
{
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Timeout receiving identity (incoming call)\n");
|
||||
if (r2000->state == STATE_IN_IDENT)
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Timeout receiving identity (incoming call)\n");
|
||||
else
|
||||
PDEBUG_CHAN(DR2000, DEBUG_INFO, "Timeout receiving identity (recalling outgoing call)\n");
|
||||
|
||||
/* move us back to cc */
|
||||
r2000 = move_call_to_chan(r2000, CHAN_TYPE_CC);
|
||||
|
@ -871,11 +880,9 @@ static void timeout_in_ident(r2000_t *r2000)
|
|||
}
|
||||
|
||||
/* ... or release */
|
||||
if (r2000->callref) {
|
||||
PDEBUG_CHAN(DR2000, DEBUG_NOTICE, "Phone does not response, releasing towards network\n");
|
||||
call_in_release(r2000->callref, CAUSE_OUTOFORDER);
|
||||
r2000->callref = 0;
|
||||
}
|
||||
PDEBUG_CHAN(DR2000, DEBUG_NOTICE, "Phone does not response, releasing towards network\n");
|
||||
call_in_release(r2000->callref, CAUSE_OUTOFORDER);
|
||||
r2000->callref = 0;
|
||||
r2000_release(r2000);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue