2010-12-19 22:20:09 +01:00

155 lines
3.4 KiB
Perl

#!/usr/bin/perl
# Copyright (c) 2010 Mathieu Parent <math.parent@gmail.com>.
# All rights reserved. This program is free software; you can redistribute it
# and/or modify it under the same terms as Perl itself.
BEGIN {
push @INC, 'src/mod/endpoints/mod_skinny';
}
use strict;
use warnings;
use Sys::Hostname;
use Net::Skinny;
use Net::Skinny::Protocol qw/:all/;
use Net::Skinny::Message;
use Net::Skinny::Client;
#Config
my $skinny_server = hostname;
my $device_name = "SEP001120AABBCC";
my $device_ip = 10+256*(11+256*(12+256*13)); # 10.11.12.13
#======
$| = 1;
my $socket = Net::Skinny::Client->new(
PeerAddr => $skinny_server,
PeerPort => 2000,
);
if(!$socket) {
printf "Unable to connect to server %s\n", $skinny_server;
exit 1;
}
# =============================================================================
$socket->send_message(
REGISTER_MESSAGE,
device_name => $device_name,
user_id => 0,
instance => 1,
ip => $device_ip,
device_type => 7,
max_streams => 0,
);
$socket->receive_message(); # RegisterAck
$socket->send_message(
PORT_MESSAGE,
port => 2000,
);
$socket->send_message(
HEADSET_STATUS_MESSAGE,
mode => 2, #Off
);
$socket->receive_message(); # CapabilitiesReq
$socket->send_message(
CAPABILITIES_RES_MESSAGE,
count => 2,
caps => pack("Vva10"."Vva10",
2, 8, "", # codec, frames, res
4, 16, "", # codec, frames, res
)
);
if(0) {
$socket->send_message(VERSION_REQ_MESSAGE);
$socket->receive_message(); # VersionMessage
}
$socket->send_message(BUTTON_TEMPLATE_REQ_MESSAGE);
$socket->receive_message(); # ButtonTemplateMessage
$socket->send_message(SOFT_KEY_TEMPLATE_REQ_MESSAGE);
$socket->receive_message(); # SoftKeyTemplateRes
$socket->send_message(SOFT_KEY_SET_REQ_MESSAGE);
$socket->receive_message(); # SoftKeySetRes
$socket->receive_message(); # SelectSoftKeys
$socket->send_message(
LINE_STAT_REQ_MESSAGE,
number => 1,
);
$socket->receive_message(); # LineStat
$socket->send_message(
REGISTER_AVAILABLE_LINES_MESSAGE,
count => 2
);
$socket->launch_keep_alive_thread();
$socket->sleep(5);
#NewCall
$socket->send_message(
SOFT_KEY_EVENT_MESSAGE,
event => 2, #NewCall
line_instance => 2,
call_id => 0
);
$socket->receive_message(); # SetRinger
$socket->receive_message(); # SetSpeakerMode
$socket->receive_message(); # SetLamp
$socket->receive_message(); # SelectSoftKeys
$socket->receive_message(); # DisplayPromptStatus
$socket->receive_message(); # ActivateCallPlane
$socket->receive_message(); # StartTone
$socket->sleep(5);
#VoiceMail
$socket->send_message(
STIMULUS_MESSAGE,
instance_type => 0xf, #VoiceMail
instance => 0,
);
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
$socket->receive_message(); #
#
$socket->send_message(
OPEN_RECEIVE_CHANNEL_ACK_MESSAGE,
status => 1,
ip => $device_ip,
port => 12,
pass_thru_party_id => 0,
);
$socket->receive_message(); # StartMediaTransmission
$socket->sleep(20);
#EndCall
$socket->send_message(
SOFT_KEY_EVENT_MESSAGE,
event => 0x09, #NewCall
line_instance => 1,
call_id => 0
);
while(1) {
$socket->receive_message();
}