Change IE_METERING timing information from deciseconds to seconds and milliseconds
This commit is contained in:
parent
d825843be5
commit
16cfce2f23
|
@ -346,7 +346,7 @@ static void metering_timer_cb(void *data)
|
|||
|
||||
/* reschedule timer and send next periodic metering pulse */
|
||||
LOGP(DTEL, LOGL_DEBUG, "Sending next periodic metering pulse.\n");
|
||||
osmo_timer_schedule(&pstn_call->metering_timer, pstn_call->metering_unit_period_decisecs / 10, (pstn_call->metering_unit_period_decisecs % 10) * 100000);
|
||||
osmo_timer_schedule(&pstn_call->metering_timer, pstn_call->metering_unit_period.tv_sec, pstn_call->metering_unit_period.tv_usec);
|
||||
|
||||
/* metering using V5 metering signal */
|
||||
if(pstn_call->pstn->metering) {
|
||||
|
@ -385,6 +385,7 @@ static void metering_lr_timer_cb(void *data)
|
|||
uint8_t ie_ln[3] = { PSTN_V5_IE_STEADY_SIGNAL, 1, 0x80 | PSTN_V5_STEADY_SIGNAL_NORMAL };
|
||||
v5_sig_req(pstn, ie_ln, sizeof(ie_ln));
|
||||
}
|
||||
pstn->metering_units_sent++;
|
||||
pstn->reversed = 0;
|
||||
osmo_timer_schedule(&pstn->metering_lr_timer, 0, METERING_LR_NORM_MILLISEC * 1000);
|
||||
}
|
||||
|
@ -396,7 +397,6 @@ static void metering_lr_timer_cb(void *data)
|
|||
v5_sig_req(pstn, ie_lr, sizeof(ie_lr));
|
||||
}
|
||||
pstn->reversed = 1;
|
||||
pstn->metering_units_sent++;
|
||||
osmo_timer_schedule(&pstn->metering_lr_timer, 0, METERING_LR_REV_MILLISEC * 1000);
|
||||
}
|
||||
}
|
||||
|
@ -1194,7 +1194,7 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
|
|||
if (!rc && coding == OSMO_CC_CODING_ITU_T && (progress == 1 || progress == 8))
|
||||
pstn->audio_path = 1;
|
||||
/* get metering information */
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period_decisecs));
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period));
|
||||
/* change call state */
|
||||
pstn_call_state(pstn_call, CALL_STATE_PROCEEDING_NET);
|
||||
break;
|
||||
|
@ -1225,7 +1225,7 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
|
|||
tone_on(pstn, TONE_RINGING, "ringback");
|
||||
}
|
||||
/* get metering information */
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period_decisecs));
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period));
|
||||
/* change call state */
|
||||
pstn_call_state(pstn_call, CALL_STATE_ALERTING_NET);
|
||||
break;
|
||||
|
@ -1250,7 +1250,7 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
|
|||
break;
|
||||
}
|
||||
/* get metering information */
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period_decisecs));
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period));
|
||||
LOGP(DTEL, LOGL_INFO, "Sending SETUP-COMP-IND towards Osmo-CC\n");
|
||||
/* create osmo-cc message */
|
||||
new_msg = osmo_cc_new_msg(OSMO_CC_MSG_SETUP_COMP_IND);
|
||||
|
@ -1275,9 +1275,9 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
|
|||
osmo_timer_schedule(&pstn->metering_lr_timer, 0, 1000);
|
||||
}
|
||||
/* start unit timer if a unit period is given */
|
||||
if(pstn_call->metering_unit_period_decisecs > 0) {
|
||||
LOGP(DTEL, LOGL_DEBUG, "Scheduling metering pulses every %d deciseconds.\n", pstn_call->metering_unit_period_decisecs);
|
||||
osmo_timer_schedule(&pstn_call->metering_timer, pstn_call->metering_unit_period_decisecs / 10, (pstn_call->metering_unit_period_decisecs % 10) * 100000);
|
||||
if(pstn_call->metering_unit_period.tv_sec > 0 || pstn_call->metering_unit_period.tv_usec > 0) {
|
||||
LOGP(DTEL, LOGL_DEBUG, "Scheduling metering pulses every %d.%03d seconds.\n", (uint16_t)pstn_call->metering_unit_period.tv_sec, (uint32_t)pstn_call->metering_unit_period.tv_usec / 1000);
|
||||
osmo_timer_schedule(&pstn_call->metering_timer, pstn_call->metering_unit_period.tv_sec, pstn_call->metering_unit_period.tv_usec);
|
||||
}
|
||||
}
|
||||
if(pstn->lr_on_connect && !pstn->lr_metering) {
|
||||
|
@ -1297,7 +1297,7 @@ void cc_message(osmo_cc_endpoint_t *ep, uint32_t callref, osmo_cc_msg_t *msg)
|
|||
case OSMO_CC_MSG_PROGRESS_REQ: /* progress */
|
||||
LOGP(DTEL, LOGL_INFO, "Received PROGRESS-REQ from Osmo-CC.\n");
|
||||
/* get metering information */
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period_decisecs));
|
||||
osmo_cc_get_ie_metering(msg, 0, &(pstn_call->metering_connect_units), &(pstn_call->metering_unit_period));
|
||||
/* stop timer */
|
||||
timer_off(pstn);
|
||||
/* negotiate audio */
|
||||
|
@ -1542,7 +1542,8 @@ static void setup_ind(pstn_t *pstn, int hold, const char *called, int complete)
|
|||
pstn->audio_path = 0;
|
||||
/* set metering stuff to off */
|
||||
pstn_call->metering_connect_units = 0;
|
||||
pstn_call->metering_unit_period_decisecs = 0;
|
||||
pstn_call->metering_unit_period.tv_sec = 0;
|
||||
pstn_call->metering_unit_period.tv_usec = 0;
|
||||
osmo_timer_setup(&pstn_call->metering_timer, metering_timer_cb, pstn_call);
|
||||
}
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ struct call {
|
|||
osmo_cc_session_codec_t *codec;
|
||||
int on_hold; /* track hold/retrieval notification */
|
||||
uint16_t metering_connect_units;
|
||||
uint16_t metering_unit_period_decisecs;
|
||||
struct timeval metering_unit_period;
|
||||
struct osmo_timer_list metering_timer;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue