Trixbox 2.8 UNISTIM

新規に Trixbox 2.8系のインストールを行っているところである。
unistim が nortel i2002 でうまく動かないし、パッチもないので、i2002専用の chan_unistim.c を作成した。
patchは以下のとおりである。


*** channels/chan_unistim.c 2010-01-15 15:44:47.000000000 +0900
— channels/chan_unistim.c 2010-01-17 16:47:14.000000000 +0900
***************
*** 1238,1243 ****
— 1238,1254 —-

}

+ static void SendIdleClock(struct unistimsession *pte)
+ {
+ char text[2];
+
+ text[0] = 0x00;
+ text[1] = 0x00;
+
+ send_text(TEXT_LINE0, TEXT_NORMAL, pte, text);
+ }
+
+
/* led values in hexa : 0 = bar off, 1 = bar on, 2 = bar 1s on/1s off, 3 = bar 2.5s on/0.5s off
* 4 = bar 0.6s on/0.3s off, 5 = bar 0.5s on/0.5s off, 6 = bar 2s on/0.5s off
* 7 = bar off, 8 = speaker off, 9 = speaker on, 10 = headphone off, 11 = headphone on
***************
*** 2263,2272 ****
pte->device->size_phone_number = 15;
strcpy(tmp, "Number : ……………");
memcpy(tmp + 9, pte->device->phone_number, pte->device->size_phone_number);
! send_text(TEXT_LINE2, TEXT_NORMAL, pte, tmp);
send_blink_cursor(pte);
send_cursor_pos(pte,
! (unsigned char) (TEXT_LINE2 + 0x09 +
pte->device->size_phone_number));
send_led_update(pte, 0);
return;
— 2274,2283 —-
pte->device->size_phone_number = 15;
strcpy(tmp, "Number : ……………");
memcpy(tmp + 9, pte->device->phone_number, pte->device->size_phone_number);
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, tmp);
send_blink_cursor(pte);
send_cursor_pos(pte,
! (unsigned char) (TEXT_LINE0 + 0x09 +
pte->device->size_phone_number));
send_led_update(pte, 0);
return;
***************
*** 2278,2290 ****
else
send_select_output(pte, pte->device->output, pte->device->volume, MUTE_OFF);
SendDialTone(pte);
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Enter the number to dial");
! send_text(TEXT_LINE1, TEXT_NORMAL, pte, "and press Call");
! send_text_status(pte, "Call Redial BackSpcErase");
}
! send_text(TEXT_LINE2, TEXT_NORMAL, pte, "Number : ……………");
send_blink_cursor(pte);
! send_cursor_pos(pte, TEXT_LINE2 + 0x09);
pte->device->size_phone_number = 0;
pte->device->phone_number[0] = 0;
change_favorite_icon(pte, FAV_ICON_PHONE_BLACK);
— 2289,2299 —-
else
send_select_output(pte, pte->device->output, pte->device->volume, MUTE_OFF);
SendDialTone(pte);
! send_text_status(pte, "[CALL] [REDI] [BSP] [ERA]");
}
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Number : ……………");
send_blink_cursor(pte);
! send_cursor_pos(pte, TEXT_LINE0 + 0x09);
pte->device->size_phone_number = 0;
pte->device->phone_number[0] = 0;
change_favorite_icon(pte, FAV_ICON_PHONE_BLACK);
***************
*** 2359,2367 ****
if (!sub->rtp)
start_rtp(sub);
send_select_output(s, s->device->output, s->device->volume, MUTE_OFF);
! send_text(TEXT_LINE0, TEXT_NORMAL, s, "Calling :");
! send_text(TEXT_LINE1, TEXT_NORMAL, s, s->device->phone_number);
! send_text(TEXT_LINE2, TEXT_NORMAL, s, "Dialing…");
send_text_status(s, "Hangup");
/* start switch */
if (ast_pthread_create(&t, NULL, unistim_ss, c)) {
— 2368,2374 —-
if (!sub->rtp)
start_rtp(sub);
send_select_output(s, s->device->output, s->device->volume, MUTE_OFF);
! send_text(TEXT_LINE0, TEXT_NORMAL, s, s->device->phone_number);
send_text_status(s, "Hangup");
/* start switch */
if (ast_pthread_create(&t, NULL, unistim_ss, c)) {
***************
*** 2409,2417 ****
/* Swap things around between the three-way and real call */
swap_subs(p, SUB_THREEWAY, SUB_REAL);
send_select_output(s, s->device->output, s->device->volume, MUTE_OFF);
! send_text(TEXT_LINE0, TEXT_NORMAL, s, "Calling (pre-transfer)");
! send_text(TEXT_LINE1, TEXT_NORMAL, s, s->device->phone_number);
! send_text(TEXT_LINE2, TEXT_NORMAL, s, "Dialing…");
send_text_status(s, "TransfrCancel");

if (ast_pthread_create(&t, NULL, unistim_ss, p->subs[SUB_THREEWAY]->owner)) {
— 2416,2422 —-
/* Swap things around between the three-way and real call */
swap_subs(p, SUB_THREEWAY, SUB_REAL);
send_select_output(s, s->device->output, s->device->volume, MUTE_OFF);
! send_text(TEXT_LINE0, TEXT_NORMAL, s, s->device->phone_number);
send_text_status(s, "TransfrCancel");

if (ast_pthread_create(&t, NULL, unistim_ss, p->subs[SUB_THREEWAY]->owner)) {
***************
*** 2448,2455 ****
ast_log(LOG_WARNING, "Unable to create channel for %s@%sn", sub->parent->name,
s->device->name);
ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
! send_text(TEXT_LINE2, TEXT_NORMAL, s, "is on-line");
! send_text_status(s, "Hangup Transf");
send_start_timer(s);

if ((s->device->output == OUTPUT_HANDSET) &&
— 2453,2459 —-
ast_log(LOG_WARNING, "Unable to create channel for %s@%sn", sub->parent->name,
s->device->name);
ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
! send_text_status(s, "[END] [XFER]");
send_start_timer(s);

if ((s->device->output == OUTPUT_HANDSET) &&
***************
*** 2674,2680 ****
pte->device->phone_number[i] = keycode;
pte->device->size_phone_number++;
pte->device->phone_number[i + 1] = 0;
! send_text(TEXT_LINE2, TEXT_NORMAL, pte, tmpbuf);
send_blink_cursor(pte);
send_cursor_pos(pte, (unsigned char) (TEXT_LINE2 + 0x0a + i));
return;
— 2678,2684 —-
pte->device->phone_number[i] = keycode;
pte->device->size_phone_number++;
pte->device->phone_number[i + 1] = 0;
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, tmpbuf);
send_blink_cursor(pte);
send_cursor_pos(pte, (unsigned char) (TEXT_LINE2 + 0x0a + i));
return;
***************
*** 2682,2690 ****
if (keycode == KEY_FUNC4) {

pte->device->size_phone_number = 0;
! send_text(TEXT_LINE2, TEXT_NORMAL, pte, "Number : ……………");
send_blink_cursor(pte);
! send_cursor_pos(pte, TEXT_LINE2 + 0x09);
return;
}

— 2686,2694 —-
if (keycode == KEY_FUNC4) {

pte->device->size_phone_number = 0;
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Number : ……………");
send_blink_cursor(pte);
! send_cursor_pos(pte, TEXT_LINE0 + 0x09);
return;
}

***************
*** 2722,2730 ****
ast_moh_stop(ast_bridged_channel(pte->device->lines->subs[SUB_REAL]->owner));
pte->device->moh = 0;
pte->state = STATE_CALL;
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Dialing canceled,");
! send_text(TEXT_LINE1, TEXT_NORMAL, pte, "switching back to");
! send_text(TEXT_LINE2, TEXT_NORMAL, pte, "previous call.");
send_text_status(pte, "Hangup Transf");
} else
show_main_page(pte);
— 2726,2732 —-
ast_moh_stop(ast_bridged_channel(pte->device->lines->subs[SUB_REAL]->owner));
pte->device->moh = 0;
pte->state = STATE_CALL;
! send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Dial Cancel,back to priv. call.");
send_text_status(pte, "Hangup Transf");
} else
show_main_page(pte);
***************
*** 3085,3097 ****
send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Call forwarded to :");
send_text(TEXT_LINE1, TEXT_NORMAL, pte, pte->device->call_forward);
Sendicon(TEXT_LINE0, FAV_ICON_REFLECT + FAV_BLINK_SLOW, pte);
! send_text_status(pte, "Dial Redial NoForwd");
} else {
if ((pte->device->extension == EXTENSION_ASK) ||
(pte->device->extension == EXTENSION_TN))
! send_text_status(pte, "Dial Redial ForwardUnregis");
else
! send_text_status(pte, "Dial Redial Forward");

send_text(TEXT_LINE1, TEXT_NORMAL, pte, pte->device->maintext1);
if (pte->device->missed_call == 0)
— 3087,3099 —-
send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Call forwarded to :");
send_text(TEXT_LINE1, TEXT_NORMAL, pte, pte->device->call_forward);
Sendicon(TEXT_LINE0, FAV_ICON_REFLECT + FAV_BLINK_SLOW, pte);
! send_text_status(pte, "[NEW] [REDI] [NoFWD]");
} else {
if ((pte->device->extension == EXTENSION_ASK) ||
(pte->device->extension == EXTENSION_TN))
! send_text_status(pte, "[NEW] [REDI] [FWD] [UREG]");
else
! send_text_status(pte, "[NEW] [REDI] [FWD]");

send_text(TEXT_LINE1, TEXT_NORMAL, pte, pte->device->maintext1);
if (pte->device->missed_call == 0)
***************
*** 3103,3111 ****
}
}
if (ast_strlen_zero(pte->device->maintext2)) {
! strcpy(tmpbuf, "IP : ");
! strcat(tmpbuf, ast_inet_ntoa(pte->sin.sin_addr));
! send_text(TEXT_LINE2, TEXT_NORMAL, pte, tmpbuf);
} else
send_text(TEXT_LINE2, TEXT_NORMAL, pte, pte->device->maintext2);
send_texttitle(pte, pte->device->titledefault);
— 3105,3112 —-
}
}
if (ast_strlen_zero(pte->device->maintext2)) {
! if (pte->device->missed_call == 0)
! SendIdleClock(pte);
} else
send_text(TEXT_LINE2, TEXT_NORMAL, pte, pte->device->maintext2);
send_texttitle(pte, pte->device->titledefault);
***************
*** 3666,3675 ****

if (sub->owner) {
if (sub->owner->cid.cid_num) {
! send_text(TEXT_LINE1, TEXT_NORMAL, session, sub->owner->cid.cid_num);
change_callerid(session, 0, sub->owner->cid.cid_num);
} else {
! send_text(TEXT_LINE1, TEXT_NORMAL, session, DEFAULTCALLERID);
change_callerid(session, 0, DEFAULTCALLERID);
}
if (sub->owner->cid.cid_name) {
— 3667,3676 —-

if (sub->owner) {
if (sub->owner->cid.cid_num) {
! send_text(TEXT_LINE0, TEXT_NORMAL, session, sub->owner->cid.cid_num);
change_callerid(session, 0, sub->owner->cid.cid_num);
} else {
! send_text(TEXT_LINE0, TEXT_NORMAL, session, DEFAULTCALLERID);
change_callerid(session, 0, DEFAULTCALLERID);
}
if (sub->owner->cid.cid_name) {
***************
*** 3680,3687 ****
change_callerid(session, 1, DEFAULTCALLERNAME);
}
}
! send_text(TEXT_LINE2, TEXT_NORMAL, session, "is calling you.");
! send_text_status(session, "Accept Ignore");

if (sub->ringstyle == -1)
send_ring(session, session->device->ringvolume, session->device->ringstyle);
— 3681,3687 —-
change_callerid(session, 1, DEFAULTCALLERNAME);
}
}
! send_text_status(session, "[ANS] [IGNR]");

if (sub->ringstyle == -1)
send_ring(session, session->device->ringvolume, session->device->ringstyle);
***************
*** 3738,3745 ****
if (unistimdebug)
ast_verb(0, "threeway call disconnected, switching to real calln");
send_text(TEXT_LINE0, TEXT_NORMAL, s, "Three way call canceled,");
– send_text(TEXT_LINE1, TEXT_NORMAL, s, "switching back to");
– send_text(TEXT_LINE2, TEXT_NORMAL, s, "previous call.");
send_text_status(s, "Hangup Transf");
ast_moh_stop(ast_bridged_channel(l->subs[SUB_REAL]->owner));
swap_subs(l, SUB_THREEWAY, SUB_REAL);
— 3738,3743 —-
***************
*** 3825,3831 ****
if (unistimdebug)
ast_verb(0, "unistim_answer(%s) on %s@%s-%dn", ast->name, l->name,
l->parent->name, sub->subtype);
– send_text(TEXT_LINE2, TEXT_NORMAL, l->parent->session, "is now on-line");
if (l->subs[SUB_THREEWAY])
send_text_status(l->parent->session, "Transf Cancel");
else
— 3823,3828 —-
***************
*** 4085,4091 ****
switch (ind) {
case AST_CONTROL_RINGING:
if (ast->_state != AST_STATE_UP) {
– send_text(TEXT_LINE2, TEXT_NORMAL, s, "Ringing…");
in_band_indication(ast, l->parent->tz, "ring");
s->device->missed_call = -1;
break;
— 4082,4087 —-
***************
*** 4094,4100 ****
case AST_CONTROL_BUSY:
if (ast->_state != AST_STATE_UP) {
sub->alreadygone = 1;
– send_text(TEXT_LINE2, TEXT_NORMAL, s, "Busy");
in_band_indication(ast, l->parent->tz, "busy");
s->device->missed_call = -1;
break;
— 4090,4095 —-
***************
*** 4103,4109 ****
case AST_CONTROL_CONGESTION:
if (ast->_state != AST_STATE_UP) {
sub->alreadygone = 1;
– send_text(TEXT_LINE2, TEXT_NORMAL, s, "Congestion");
in_band_indication(ast, l->parent->tz, "congestion");
s->device->missed_call = -1;
break;
— 4098,4103 —-
***************
*** 4347,4356 ****
}

if (size <= TEXT_LENGTH_MAX * 2) { ! send_text(TEXT_LINE0, TEXT_NORMAL, pte, "Message :"); ! send_text(TEXT_LINE1, TEXT_NORMAL, pte, text); if (size <= TEXT_LENGTH_MAX) { - send_text(TEXT_LINE2, TEXT_NORMAL, pte, ""); return 0; } memcpy(tmp, text + TEXT_LENGTH_MAX, TEXT_LENGTH_MAX); --- 4341,4348 ---- } if (size <= TEXT_LENGTH_MAX * 2) { ! send_text(TEXT_LINE0, TEXT_NORMAL, pte, text); if (size <= TEXT_LENGTH_MAX) { return 0; } memcpy(tmp, text + TEXT_LENGTH_MAX, TEXT_LENGTH_MAX); *************** *** 4361,4370 **** send_text(TEXT_LINE0, TEXT_NORMAL, pte, text); memcpy(tmp, text + TEXT_LENGTH_MAX, TEXT_LENGTH_MAX); tmp[sizeof(tmp) - 1] = ''; - send_text(TEXT_LINE1, TEXT_NORMAL, pte, tmp); memcpy(tmp, text + TEXT_LENGTH_MAX * 2, TEXT_LENGTH_MAX); tmp[sizeof(tmp) - 1] = ''; - send_text(TEXT_LINE2, TEXT_NORMAL, pte, tmp); return 0; } --- 4353,4360 ---- [/code]

コメントを残す

メールアドレスが公開されることはありません。