Change IE_METERING timing information from deciseconds to seconds and milliseconds
This commit is contained in:
parent
88fc70d781
commit
9ff85d6226
|
@ -442,7 +442,8 @@ struct osmo_cc_ie_display {
|
|||
|
||||
struct osmo_cc_ie_metering {
|
||||
uint16_t connect_units;
|
||||
uint16_t unit_period_decisecs;
|
||||
uint16_t unit_period_sec;
|
||||
uint16_t unit_period_msec;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct osmo_cc_ie_sdp {
|
||||
|
@ -519,8 +520,8 @@ int osmo_cc_get_ie_cause(osmo_cc_msg_t *msg, int ie_repeat, uint8_t *location, u
|
|||
uint16_t *sip_cause, uint8_t *socket_cause);
|
||||
void osmo_cc_add_ie_display(osmo_cc_msg_t *msg, const char *text);
|
||||
int osmo_cc_get_ie_display(osmo_cc_msg_t *msg, int ie_repeat, char *text, size_t text_size);
|
||||
void osmo_cc_add_ie_metering(osmo_cc_msg_t *msg, uint16_t connect_units, uint16_t unit_period_decisecs);
|
||||
int osmo_cc_get_ie_metering(osmo_cc_msg_t *msg, int ie_repeat, uint16_t *connect_units, uint16_t *unit_period_decisecs);
|
||||
void osmo_cc_add_ie_metering(osmo_cc_msg_t *msg, uint16_t connect_units, struct timeval *unit_tv);
|
||||
int osmo_cc_get_ie_metering(osmo_cc_msg_t *msg, int ie_repeat, uint16_t *connect_units, struct timeval *unit_tv);
|
||||
void osmo_cc_add_ie_sdp(osmo_cc_msg_t *msg, const char *sdp);
|
||||
int osmo_cc_get_ie_sdp(osmo_cc_msg_t *msg, int ie_repeat, char *sdp, size_t sdp_size);
|
||||
void osmo_cc_add_ie_socket_address(osmo_cc_msg_t *msg, const char *address);
|
||||
|
|
|
@ -445,7 +445,8 @@ void osmo_cc_debug_ie(osmo_cc_msg_t *msg, int level)
|
|||
int ie_repeat[256];
|
||||
uint8_t type, plan, present, screen, coding, capability, mode, progress, reason,
|
||||
duration_ms, pause_ms, dtmf_mode, location, notify, isdn_cause, socket_cause;
|
||||
uint16_t sip_cause, metering_connect_units, metering_unit_time_decisecs;
|
||||
uint16_t sip_cause, metering_connect_units;
|
||||
struct timeval unit_tv;
|
||||
uint32_t unique;
|
||||
char string[65536];
|
||||
int i;
|
||||
|
@ -609,12 +610,11 @@ void osmo_cc_debug_ie(osmo_cc_msg_t *msg, int level)
|
|||
LOGP(DLCC, level, " %s info='%s'\n", osmo_cc_ie_value2name(ie->type), string);
|
||||
break;
|
||||
case OSMO_CC_IE_METERING:
|
||||
rc = osmo_cc_get_ie_metering(msg, ie_repeat[ie->type], &metering_connect_units,
|
||||
&metering_unit_time_decisecs);
|
||||
rc = osmo_cc_get_ie_metering(msg, ie_repeat[ie->type], &metering_connect_units, &unit_tv);
|
||||
if (rc < 0)
|
||||
break;
|
||||
LOGP(DLCC, level, " %s connect_units=%d unit_time_decisecs=%d (1/10 sec)\n",
|
||||
osmo_cc_ie_value2name(ie->type), metering_connect_units, metering_unit_time_decisecs);
|
||||
LOGP(DLCC, level, " %s connect_units=%d unit_time_sec=%d.%03d\n",
|
||||
osmo_cc_ie_value2name(ie->type), metering_connect_units, (uint16_t)unit_tv.tv_sec, (uint32_t)unit_tv.tv_usec / 1000);
|
||||
break;
|
||||
case OSMO_CC_IE_SDP:
|
||||
rc = osmo_cc_get_ie_sdp(msg, ie_repeat[ie->type], string, sizeof(string));
|
||||
|
@ -1289,17 +1289,18 @@ int osmo_cc_get_ie_display(osmo_cc_msg_t *msg, int ie_repeat, char *text, size_t
|
|||
}
|
||||
|
||||
/* helper to encode METERING information */
|
||||
void osmo_cc_add_ie_metering(osmo_cc_msg_t *msg, uint16_t connect_units, uint16_t unit_period_decisecs)
|
||||
void osmo_cc_add_ie_metering(osmo_cc_msg_t *msg, uint16_t connect_units, struct timeval *unit_tv)
|
||||
{
|
||||
struct osmo_cc_ie_metering *ie_metering;
|
||||
|
||||
ie_metering = osmo_cc_add_ie(msg, OSMO_CC_IE_METERING, sizeof(*ie_metering));
|
||||
ie_metering->connect_units = htons(connect_units);
|
||||
ie_metering->unit_period_decisecs = htons(unit_period_decisecs);
|
||||
ie_metering->unit_period_sec = htons(unit_tv->tv_sec);
|
||||
ie_metering->unit_period_msec = htons(unit_tv->tv_usec / 1000);
|
||||
}
|
||||
|
||||
/* helper to decode METERING information */
|
||||
int osmo_cc_get_ie_metering(osmo_cc_msg_t *msg, int ie_repeat, uint16_t *connect_units, uint16_t *unit_period_decisecs)
|
||||
int osmo_cc_get_ie_metering(osmo_cc_msg_t *msg, int ie_repeat, uint16_t *connect_units, struct timeval *unit_tv)
|
||||
{
|
||||
struct osmo_cc_ie_metering *ie_metering;
|
||||
int rc;
|
||||
|
@ -1310,7 +1311,8 @@ int osmo_cc_get_ie_metering(osmo_cc_msg_t *msg, int ie_repeat, uint16_t *connect
|
|||
return rc;
|
||||
|
||||
*connect_units = ntohs(ie_metering->connect_units);
|
||||
*unit_period_decisecs = ntohs(ie_metering->unit_period_decisecs);
|
||||
unit_tv->tv_sec = ntohs(ie_metering->unit_period_sec);
|
||||
unit_tv->tv_usec = ntohs(ie_metering->unit_period_msec) * 1000;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue