if (sub->subtype == SUB_REAL) {
send_callerid_screen(s, sub);
}
+ case AST_CONTROL_UPDATE_RTP_PEER:
break;
case AST_CONTROL_SRCCHANGE:
ast_rtp_instance_change_source(sub->rtp);
}
ast_mutex_init(&d->lock);
ast_copy_string(d->name, cat, sizeof(d->name));
+ d->contrast = -1;
+ d->output = OUTPUT_HANDSET;
+ d->previous_output = OUTPUT_HANDSET;
+ d->volume = VOLUME_LOW;
+ d->mute = MUTE_OFF;
+ d->height = DEFAULTHEIGHT;
+ d->selected = -1;
} else {
/* Delete existing line information */
AST_LIST_LOCK(&d->lines);
memset(d->sline, 0, sizeof(d->sline));
memset(d->sp, 0, sizeof(d->sp));
}
-
ast_copy_string(d->context, DEFAULTCONTEXT, sizeof(d->context));
- d->contrast = -1;
- d->output = OUTPUT_HANDSET;
- d->previous_output = OUTPUT_HANDSET;
- d->volume = VOLUME_LOW;
- d->mute = MUTE_OFF;
- d->height = DEFAULTHEIGHT;
d->selected = -1;
d->interdigit_timer = DEFAULT_INTERDIGIT_TIMER;
linelabel[0] = '\0';
{
struct unistim_subchannel *sub = ast_channel_tech_pvt(chan);
+ if (!sub) {
+ return AST_RTP_GLUE_RESULT_FORBID;
+ }
+ if (!sub->rtp) {
+ return AST_RTP_GLUE_RESULT_FORBID;
+ }
+
ao2_ref(sub->rtp, +1);
*instance = sub->rtp;
return AST_RTP_GLUE_RESULT_LOCAL;
}
+static int unistim_set_rtp_peer(struct ast_channel *chan, struct ast_rtp_instance *rtp, struct ast_rtp_instance *vrtp, struct ast_rtp_instance *trtp, const struct ast_format_cap *codecs, int nat_active)
+{
+ struct unistim_subchannel *sub;
+ struct sockaddr_in them = { 0, };
+ struct sockaddr_in us = { 0, };
+
+ if (!rtp) {
+ return 0;
+ }
+
+ sub = ast_channel_tech_pvt(chan);
+ if (!sub) {
+ ast_log(LOG_ERROR, "No Private Structure, this is bad\n");
+ return -1;
+ }
+ {
+ struct ast_sockaddr tmp;
+ ast_rtp_instance_get_remote_address(rtp, &tmp);
+ ast_sockaddr_to_sin(&tmp, &them);
+ ast_rtp_instance_get_local_address(rtp, &tmp);
+ ast_sockaddr_to_sin(&tmp, &us);
+ }
+
+ /* TODO: Set rtp on phone in case of direct rtp (not implemented) */
+
+ return 0;
+}
+
static struct ast_rtp_glue unistim_rtp_glue = {
.type = channel_type,
.get_rtp_info = unistim_get_rtp_peer,
+ .update_peer = unistim_set_rtp_peer,
};
/*--- load_module: PBX load module - initialization ---*/