summaryrefslogtreecommitdiff
path: root/channels/chan_skinny.c
diff options
context:
space:
mode:
authorDamien Wedhorn <voip@facts.com.au>2013-02-02 01:52:21 +0000
committerDamien Wedhorn <voip@facts.com.au>2013-02-02 01:52:21 +0000
commit8bb9aa2f6d1b6aa5d0565609c96415625a88f021 (patch)
tree437500d82ccb9306cb5268a172e44826faa0e25e /channels/chan_skinny.c
parentae1421e04d557f99687664c44c2e157a519c3ed1 (diff)
Add variable length displayprompt packet to skinny and use octals.
Add new variable length displayprompt packet (0x0145) to skinny. Uses the new packet if the device is reporting protocol versions >= 17. Add the use of octal codes for sending prompts to both the new and old displayprompt messages (also cleaned up soft_key_template_default to use the defined octal codes). Review: https://reviewboard.asterisk.org/r/2294/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@380792 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_skinny.c')
-rw-r--r--channels/chan_skinny.c396
1 files changed, 225 insertions, 171 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 9f833dac1..6b7486e35 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -745,164 +745,162 @@ struct bksp_req_message {
#define KEYMASK_IDIVERT (1 << 20)
#define KEYMASK_FORCEDIAL (1 << 21)
+/* Localized message "codes" (in octal)
+ Below is en_US (taken from a 7970) */
+
+/* "\200\000" ??? */
+#define OCTAL_REDIAL "\200\001" /* Redial */
+#define OCTAL_NEWCALL "\200\002" /* New Call */
+#define OCTAL_HOLD "\200\003" /* Hold */
+#define OCTAL_TRANSFER "\200\004" /* Transfer */
+#define OCTAL_CFWDALL "\200\005" /* CFwdALL */
+#define OCTAL_CFWDBUSY "\200\006" /* CFwdBusy */
+#define OCTAL_CFWDNOAN "\200\007" /* CFwdNoAnswer */
+#define OCTAL_BKSPC "\200\010" /* << */
+#define OCTAL_ENDCALL "\200\011" /* EndCall */
+#define OCTAL_RESUME "\200\012" /* Resume */
+#define OCTAL_ANSWER "\200\013" /* Answer */
+#define OCTAL_INFO "\200\014" /* Info */
+#define OCTAL_CONFRN "\200\015" /* Confrn */
+#define OCTAL_PARK "\200\016" /* Park */
+#define OCTAL_JOIN "\200\017" /* Join */
+#define OCTAL_MEETME "\200\020" /* MeetMe */
+#define OCTAL_PICKUP "\200\021" /* PickUp */
+#define OCTAL_GPICKUP "\200\022" /* GPickUp */
+#define OCTAL_CUROPTS "\200\023" /* Your current options */
+#define OCTAL_OFFHOOK "\200\024" /* Off Hook */
+#define OCTAL_ONHOOK "\200\025" /* On Hook */
+#define OCTAL_RINGOUT "\200\026" /* Ring out */
+#define OCTAL_FROM "\200\027" /* From */
+#define OCTAL_CONNECTED "\200\030" /* Connected */
+#define OCTAL_BUSY "\200\031" /* Busy */
+#define OCTAL_LINEINUSE "\200\032" /* Line In Use */
+#define OCTAL_CALLWAITING "\200\033" /* Call Waiting */
+#define OCTAL_CALLXFER "\200\034" /* Call Transfer */
+#define OCTAL_CALLPARK "\200\035" /* Call Park */
+#define OCTAL_CALLPROCEED "\200\036" /* Call Proceed */
+#define OCTAL_INUSEREMOTE "\200\037" /* In Use Remote */
+#define OCTAL_ENTRNUM "\200\040" /* Enter number */
+#define OCTAL_PARKAT "\200\041" /* Call park At */
+#define OCTAL_PRIMONLY "\200\042" /* Primary Only */
+#define OCTAL_TMPFAIL "\200\043" /* Temp Fail */
+#define OCTAL_HAVEVMAIL "\200\044" /* You Have VoiceMail */
+#define OCTAL_FWDEDTO "\200\045" /* Forwarded to */
+#define OCTAL_CANTCOMPCNF "\200\046" /* Can Not Complete Conference */
+#define OCTAL_NOCONFBRDG "\200\047" /* No Conference Bridge */
+#define OCTAL_NOPRIMARYCTL "\200\050" /* Can Not Hold Primary Control */
+#define OCTAL_INVALCONFPART "\200\051" /* Invalid Conference Participant */
+#define OCTAL_INCONFALREADY "\200\052" /* In Conference Already */
+#define OCTAL_NOPARTINFO "\200\053" /* No Participant Info */
+#define OCTAL_MAXPARTEXCEED "\200\054" /* Exceed Maximum Parties */
+#define OCTAL_KEYNOTACTIVE "\200\055" /* Key Is Not Active */
+#define OCTAL_ERRNOLIC "\200\056" /* Error No License */
+#define OCTAL_ERRDBCFG "\200\057" /* Error DBConfig */
+#define OCTAL_ERRDB "\200\060" /* Error Database */
+#define OCTAL_ERRPASSLMT "\200\061" /* Error Pass Limit */
+#define OCTAL_ERRUNK "\200\062" /* Error Unknown */
+#define OCTAL_ERRMISMATCH "\200\063" /* Error Mismatch */
+#define OCTAL_CONFERENCE "\200\064" /* Conference */
+#define OCTAL_PARKNO "\200\065" /* Park Number */
+#define OCTAL_PRIVATE "\200\066" /* Private */
+#define OCTAL_INSUFBANDW "\200\067" /* Not Enough Bandwidth */
+#define OCTAL_UNKNUM "\200\070" /* Unknown Number */
+#define OCTAL_RMLSTC "\200\071" /* RmLstC */
+#define OCTAL_VOICEMAIL "\200\072" /* Voicemail */
+#define OCTAL_IMMDIV "\200\073" /* ImmDiv */
+#define OCTAL_INTRCPT "\200\074" /* Intrcpt */
+#define OCTAL_SETWTCH "\200\075" /* SetWtch */
+#define OCTAL_TRNSFVM "\200\076" /* TrnsfVM */
+#define OCTAL_DND "\200\077" /* DND */
+#define OCTAL_DIVALL "\200\100" /* DivAll */
+#define OCTAL_CALLBACK "\200\101" /* CallBack */
+#define OCTAL_NETCNGREROUT "\200\102" /* Network congestion,rerouting */
+#define OCTAL_BARGE "\200\103" /* Barge */
+#define OCTAL_BARGEFAIL "\200\104" /* Failed to setup Barge */
+#define OCTAL_BARGEEXIST "\200\105" /* Another Barge exists */
+#define OCTAL_INCOMPATDEV "\200\106" /* Incompatible device type */
+#define OCTAL_PARKNONUM "\200\107" /* No Park Number Available */
+#define OCTAL_PARKREVERSION "\200\110" /* CallPark Reversion */
+#define OCTAL_SRVNOTACTIVE "\200\111" /* Service is not Active */
+#define OCTAL_HITRAFFIC "\200\112" /* High Traffic Try Again Later */
+#define OCTAL_QRT "\200\113" /* QRT */
+#define OCTAL_MCID "\200\114" /* MCID */
+#define OCTAL_DIRTRFR "\200\115" /* DirTrfr */
+#define OCTAL_SELECT "\200\116" /* Select */
+#define OCTAL_CONFLIST "\200\117" /* ConfList */
+#define OCTAL_IDIVERT "\200\120" /* iDivert */
+#define OCTAL_CBARGE "\200\121" /* cBarge */
+#define OCTAL_CANTCOMPLXFER "\200\122" /* Can Not Complete Transfer */
+#define OCTAL_CANTJOINCALLS "\200\123" /* Can Not Join Calls */
+#define OCTAL_MCIDSUCCESS "\200\124" /* Mcid Successful */
+#define OCTAL_NUMNOTCFG "\200\125" /* Number Not Configured */
+#define OCTAL_SECERROR "\200\126" /* Security Error */
+#define OCTAL_VIDBANDWNA "\200\127" /* Video Bandwidth Unavailable */
+#define OCTAL_VIDMODE "\200\130" /* VidMode */
+#define OCTAL_CALLDURTIMEOUT "\200\131" /* Max Call Duration Timeout */
+#define OCTAL_HOLDDURTIMEOUT "\200\132" /* Max Hold Duration Timeout */
+#define OCTAL_OPICKUP "\200\133" /* OPickUp */
+/* "\200\134" ??? */
+/* "\200\135" ??? */
+/* "\200\136" ??? */
+/* "\200\137" ??? */
+/* "\200\140" ??? */
+#define OCTAL_EXTXFERRESTRICT "\200\141" /* External Transfer Restricted */
+/* "\200\142" ??? */
+/* "\200\143" ??? */
+/* "\200\144" ??? */
+#define OCTAL_MACADD "\200\145" /* Mac Address */
+#define OCTAL_HOST "\200\146" /* Host Name */
+#define OCTAL_DOMAIN "\200\147" /* Domain Name */
+#define OCTAL_IPADD "\200\150" /* IP Address */
+#define OCTAL_SUBMASK "\200\151" /* Subnet Mask */
+#define OCTAL_TFTP1 "\200\152" /* TFTP Server 1 */
+#define OCTAL_ROUTER1 "\200\153" /* Default Router 1 */
+#define OCTAL_ROUTER2 "\200\154" /* Default Router 2 */
+#define OCTAL_ROUTER3 "\200\155" /* Default Router 3 */
+#define OCTAL_ROUTER4 "\200\156" /* Default Router 4 */
+#define OCTAL_ROUTER5 "\200\157" /* Default Router 5 */
+#define OCTAL_DNS1 "\200\160" /* DNS Server 1 */
+#define OCTAL_DNS2 "\200\161" /* DNS Server 2 */
+#define OCTAL_DNS3 "\200\162" /* DNS Server 3 */
+#define OCTAL_DNS4 "\200\163" /* DNS Server 4 */
+#define OCTAL_DNS5 "\200\164" /* DNS Server 5 */
+#define OCTAL_VLANOPID "\200\165" /* Operational VLAN Id */
+#define OCTAL_VLANADID "\200\166" /* Admin. VLAN Id */
+#define OCTAL_CM1 "\200\167" /* CallManager 1 */
+#define OCTAL_CM2 "\200\170" /* CallManager 2 */
+#define OCTAL_CM3 "\200\171" /* CallManager 3 */
+#define OCTAL_CM4 "\200\172" /* CallManager 4 */
+#define OCTAL_CM5 "\200\173" /* CallManager 5 */
+#define OCTAL_URLINFO "\200\174" /* Information URL */
+#define OCTAL_URLDIRS "\200\175" /* Directories URL */
+#define OCTAL_URLMSGS "\200\176" /* Messages URL */
+#define OCTAL_URLSRVS "\200\177" /* Services URL */
+
static struct soft_key_template_definition soft_key_template_default[] = {
- { "\200\001", SOFTKEY_REDIAL },
- { "\200\002", SOFTKEY_NEWCALL },
- { "\200\003", SOFTKEY_HOLD },
- { "\200\004", SOFTKEY_TRNSFER },
- { "\200\005", SOFTKEY_CFWDALL },
- { "\200\006", SOFTKEY_CFWDBUSY },
- { "\200\007", SOFTKEY_CFWDNOANSWER },
- { "\200\010", SOFTKEY_BKSPC },
- { "\200\011", SOFTKEY_ENDCALL },
- { "\200\012", SOFTKEY_RESUME },
- { "\200\013", SOFTKEY_ANSWER },
- { "\200\014", SOFTKEY_INFO },
- { "\200\015", SOFTKEY_CONFRN },
- { "\200\016", SOFTKEY_PARK },
- { "\200\017", SOFTKEY_JOIN },
- { "\200\020", SOFTKEY_MEETME },
- { "\200\021", SOFTKEY_PICKUP },
- { "\200\022", SOFTKEY_GPICKUP },
- { "\200\077", SOFTKEY_DND },
- { "\200\120", SOFTKEY_IDIVERT },
+ { OCTAL_REDIAL, SOFTKEY_REDIAL },
+ { OCTAL_NEWCALL, SOFTKEY_NEWCALL },
+ { OCTAL_HOLD, SOFTKEY_HOLD },
+ { OCTAL_TRANSFER, SOFTKEY_TRNSFER },
+ { OCTAL_CFWDALL, SOFTKEY_CFWDALL },
+ { OCTAL_CFWDBUSY, SOFTKEY_CFWDBUSY },
+ { OCTAL_CFWDNOAN, SOFTKEY_CFWDNOANSWER },
+ { OCTAL_BKSPC, SOFTKEY_BKSPC },
+ { OCTAL_ENDCALL, SOFTKEY_ENDCALL },
+ { OCTAL_RESUME, SOFTKEY_RESUME },
+ { OCTAL_ANSWER, SOFTKEY_ANSWER },
+ { OCTAL_INFO, SOFTKEY_INFO },
+ { OCTAL_CONFRN, SOFTKEY_CONFRN },
+ { OCTAL_PARK, SOFTKEY_PARK },
+ { OCTAL_JOIN, SOFTKEY_JOIN },
+ { OCTAL_MEETME, SOFTKEY_MEETME },
+ { OCTAL_PICKUP, SOFTKEY_PICKUP },
+ { OCTAL_GPICKUP, SOFTKEY_GPICKUP },
+ { OCTAL_DND, SOFTKEY_DND },
+ { OCTAL_IDIVERT, SOFTKEY_IDIVERT },
{ "Dial", SOFTKEY_FORCEDIAL},
};
-/* Localized message "codes" (in octal)
- Below is en_US (taken from a 7970)
-
- \200\xxx
- \000: ???
- \001: Redial
- \002: New Call
- \003: Hold
- \004: Transfer
- \005: CFwdALL
- \006: CFwdBusy
- \007: CFwdNoAnswer
- \010: <<
- \011: EndCall
- \012: Resume
- \013: Answer
- \014: Info
- \015: Confrn
- \016: Park
- \017: Join
- \020: MeetMe
- \021: PickUp
- \022: GPickUp
- \023: Your current options
- \024: Off Hook
- \025: On Hook
- \026: Ring out
- \027: From
- \030: Connected
- \031: Busy
- \032: Line In Use
- \033: Call Waiting
- \034: Call Transfer
- \035: Call Park
- \036: Call Proceed
- \037: In Use Remote
- \040: Enter number
- \041: Call park At
- \042: Primary Only
- \043: Temp Fail
- \044: You Have VoiceMail
- \045: Forwarded to
- \046: Can Not Complete Conference
- \047: No Conference Bridge
- \050: Can Not Hold Primary Control
- \051: Invalid Conference Participant
- \052: In Conference Already
- \053: No Participant Info
- \054: Exceed Maximum Parties
- \055: Key Is Not Active
- \056: Error No License
- \057: Error DBConfig
- \060: Error Database
- \061: Error Pass Limit
- \062: Error Unknown
- \063: Error Mismatch
- \064: Conference
- \065: Park Number
- \066: Private
- \067: Not Enough Bandwidth
- \070: Unknown Number
- \071: RmLstC
- \072: Voicemail
- \073: ImmDiv
- \074: Intrcpt
- \075: SetWtch
- \076: TrnsfVM
- \077: DND
- \100: DivAll
- \101: CallBack
- \102: Network congestion,rerouting
- \103: Barge
- \104: Failed to setup Barge
- \105: Another Barge exists
- \106: Incompatible device type
- \107: No Park Number Available
- \110: CallPark Reversion
- \111: Service is not Active
- \112: High Traffic Try Again Later
- \113: QRT
- \114: MCID
- \115: DirTrfr
- \116: Select
- \117: ConfList
- \120: iDivert
- \121: cBarge
- \122: Can Not Complete Transfer
- \123: Can Not Join Calls
- \124: Mcid Successful
- \125: Number Not Configured
- \126: Security Error
- \127: Video Bandwidth Unavailable
- \130: VidMode
- \131: Max Call Duration Timeout
- \132: Max Hold Duration Timeout
- \133: OPickUp
- \134: ???
- \135: ???
- \136: ???
- \137: ???
- \140: ???
- \141: External Transfer Restricted
- \142: ???
- \143: ???
- \144: ???
- \145: Mac Address
- \146: Host Name
- \147: Domain Name
- \150: IP Address
- \151: Subnet Mask
- \152: TFTP Server 1
- \153: Default Router 1
- \154: Default Router 2
- \155: Default Router 3
- \156: Default Router 4
- \157: Default Router 5
- \160: DNS Server 1
- \161: DNS Server 2
- \162: DNS Server 3
- \163: DNS Server 4
- \164: DNS Server 5
- \165: Operational VLAN Id
- \166: Admin. VLAN Id
- \167: CallManager 1
- \170: CallManager 2
- \171: CallManager 3
- \172: CallManager 4
- \173: CallManager 5
- \174: Information URL
- \175: Directories URL
- \176: Messages URL
- \177: Services URL
- */
-
struct soft_key_definitions {
const uint8_t mode;
const uint8_t *defaults;
@@ -1096,6 +1094,14 @@ struct call_info_message_variable {
char calldetails[MAXCALLINFOSTR];
};
+#define DISPLAY_PROMPT_STATUS_MESSAGE_VARIABLE 0x0145
+struct display_prompt_status_message_variable {
+ uint32_t unknown;
+ uint32_t lineInstance;
+ uint32_t callReference;
+ char promptMessage[MAXCALLINFOSTR];
+};
+
union skinny_data {
struct alarm_message alarm;
struct speed_dial_stat_req_message speeddialreq;
@@ -1145,6 +1151,7 @@ union skinny_data {
struct forward_stat_message forwardstat;
struct bksp_req_message bkspmessage;
struct call_info_message_variable callinfomessagevariable;
+ struct display_prompt_status_message_variable displaypromptstatusvar;
};
/* packet composition */
@@ -2701,22 +2708,69 @@ static void transmit_displaynotify(struct skinny_device *d, const char *text, in
transmit_response(d, req);
}
-static void transmit_displaypromptstatus(struct skinny_device *d, const char *text, int t, int instance, int callid)
+static void transmit_displaypromptstatus(struct skinny_device *d, const char *text, const char *extratext, int t, int instance, int callid)
{
struct skinny_req *req;
if (!(req = req_alloc(sizeof(struct display_prompt_status_message), DISPLAY_PROMPT_STATUS_MESSAGE)))
return;
- ast_copy_string(req->data.displaypromptstatus.promptMessage, text, sizeof(req->data.displaypromptstatus.promptMessage));
req->data.displaypromptstatus.messageTimeout = htolel(t);
req->data.displaypromptstatus.lineInstance = htolel(instance);
req->data.displaypromptstatus.callReference = htolel(callid);
- SKINNY_DEBUG(DEBUG_PACKET, 3, "Transmitting DISPLAY_PROMPT_STATUS_MESSAGE to %s, text %s\n", d->name, text);
+ if ((char)*text == '\200') {
+ int octalstrlen = strlen(text);
+ ast_copy_string(req->data.displaypromptstatus.promptMessage, text, sizeof(req->data.displaypromptstatusvar.promptMessage));
+ ast_copy_string(req->data.displaypromptstatus.promptMessage+octalstrlen, extratext, sizeof(req->data.displaypromptstatus.promptMessage)-octalstrlen);
+ SKINNY_DEBUG(DEBUG_PACKET, 3, "Transmitting DISPLAY_PROMPT_STATUS_MESSAGE to %s, '\\%03o\\%03o', '%s'\n",
+ d->name, (uint8_t)*text, (uint8_t)*(text+1), extratext);
+ } else {
+ ast_copy_string(req->data.displaypromptstatus.promptMessage, text, sizeof(req->data.displaypromptstatus.promptMessage));
+ SKINNY_DEBUG(DEBUG_PACKET, 3, "Transmitting DISPLAY_PROMPT_STATUS_MESSAGE to %s, '%s'\n",
+ d->name, text);
+ }
transmit_response(d, req);
}
+static void transmit_displaypromptstatusvar(struct skinny_device *d, const char *text, const char *extratext, int t, int instance, int callid)
+{
+ struct skinny_req *req;
+ int packetlen;
+
+ if (!(req = req_alloc(sizeof(struct display_prompt_status_message_variable), DISPLAY_PROMPT_STATUS_MESSAGE_VARIABLE)))
+ return;
+
+ req->data.displaypromptstatusvar.lineInstance = htolel(instance);
+ req->data.displaypromptstatusvar.callReference = htolel(callid);
+
+ if ((char)*text == '\200') {
+ int octalstrlen = strlen(text);
+ ast_copy_string(req->data.displaypromptstatusvar.promptMessage, text, sizeof(req->data.displaypromptstatusvar.promptMessage));
+ ast_copy_string(req->data.displaypromptstatusvar.promptMessage+octalstrlen, extratext, sizeof(req->data.displaypromptstatusvar.promptMessage)-octalstrlen);
+ packetlen = req->len - MAXCALLINFOSTR + strlen(text) + strlen(extratext);
+ SKINNY_DEBUG(DEBUG_PACKET, 3, "Transmitting DISPLAY_PROMPT_STATUS_MESSAGE_VARIABLE to %s, '\\%03o\\%03o', '%s'\n",
+ d->name, (uint8_t)*text, (uint8_t)*(text+1), extratext);
+ } else {
+ ast_copy_string(req->data.displaypromptstatusvar.promptMessage, text, sizeof(req->data.displaypromptstatus.promptMessage));
+ packetlen = req->len - MAXCALLINFOSTR + strlen(text);
+ SKINNY_DEBUG(DEBUG_PACKET, 3, "Transmitting DISPLAY_PROMPT_STATUS_MESSAGE_VARIABLE to %s, '%s'\n",
+ d->name, text);
+ }
+ req->len = (packetlen & ~0x3) + 4;
+
+ transmit_response(d, req);
+}
+
+static void send_displaypromptstatus(struct skinny_device *d, const char *text, const char *extratext, int t, int instance, int callid)
+{
+ if (d->protocolversion < 17) {
+ transmit_displaypromptstatus(d, text, extratext, t, instance, callid);
+ } else {
+ transmit_displaypromptstatusvar(d, text, extratext, t, instance, callid);
+ }
+}
+
static void transmit_clearpromptmessage(struct skinny_device *d, int instance, int callid)
{
struct skinny_req *req;
@@ -3202,11 +3256,11 @@ static int skinny_extensionstate_cb(char *context, char *exten, struct ast_state
if (subline->sub && (subline->sub->substate == SKINNY_CONNECTED)) { /* Device has a real call */
transmit_callstate(d, l->instance, subline->callid, SKINNY_CONNECTED);
transmit_selectsoftkeys(d, l->instance, subline->callid, KEYDEF_CONNECTED, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "Connected", 0, l->instance, subline->callid);
+ send_displaypromptstatus(d, OCTAL_CONNECTED, "", 0, l->instance, subline->callid);
} else { /* Some other device has active call */
transmit_callstate(d, l->instance, subline->callid, SKINNY_CALLREMOTEMULTILINE);
transmit_selectsoftkeys(d, l->instance, subline->callid, KEYDEF_SLACONNECTEDNOTACTIVE, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "In Use", 0, l->instance, subline->callid);
+ send_displaypromptstatus(d, "In Use", "", 0, l->instance, subline->callid);
}
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_ON);
transmit_ringer_mode(d, SKINNY_RING_OFF);
@@ -3215,7 +3269,7 @@ static int skinny_extensionstate_cb(char *context, char *exten, struct ast_state
case AST_EXTENSION_ONHOLD:
transmit_callstate(d, l->instance, subline->callid, SKINNY_HOLD);
transmit_selectsoftkeys(d, l->instance, subline->callid, KEYDEF_SLAHOLD, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "Hold", 0, l->instance, subline->callid);
+ send_displaypromptstatus(d, "Hold", "", 0, l->instance, subline->callid);
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_BLINK);
transmit_activatecallplane(d, l);
break;
@@ -5208,7 +5262,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
transmit_stop_tone(d, l->instance, sub->callid);
transmit_callstate(d, l->instance, subline->callid, SKINNY_CALLREMOTEMULTILINE);
transmit_selectsoftkeys(d, l->instance, subline->callid, KEYDEF_SLACONNECTEDNOTACTIVE, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "In Use", 0, l->instance, subline->callid);
+ send_displaypromptstatus(d, "In Use", "", 0, l->instance, subline->callid);
}
sub->cxmode = SKINNY_CX_RECVONLY;
@@ -5250,7 +5304,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
transmit_callstate(d, l->instance, subline->callid, SKINNY_CALLREMOTEMULTILINE);
transmit_selectsoftkeys(d, l->instance, subline->callid, KEYDEF_SLACONNECTEDNOTACTIVE, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "In Use", 0, l->instance, subline->callid);
+ send_displaypromptstatus(d, "In Use", "", 0, l->instance, subline->callid);
sub->substate = SUBSTATE_HOLD;
@@ -5289,7 +5343,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
transmit_clear_display_message(d, l->instance, sub->callid);
transmit_start_tone(d, SKINNY_DIALTONE, l->instance, sub->callid);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_OFFHOOK, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "Enter number", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, OCTAL_ENTRNUM, "", 0, l->instance, sub->callid);
sub->substate = SUBSTATE_OFFHOOK;
sub->dialer_sched = skinny_sched_add(firstdigittimeout, skinny_dialer_cb, sub);
@@ -5347,7 +5401,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
transmit_stop_tone(d, l->instance, sub->callid);
transmit_clear_display_message(d, l->instance, sub->callid);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_RINGOUT, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "Dialing", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, "Dialing", "", 0, l->instance, sub->callid);
}
if (AST_LIST_FIRST(&l->sublines)) {
@@ -5387,14 +5441,14 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
}
transmit_callstate(d, l->instance, sub->callid, SKINNY_RINGOUT);
transmit_dialednumber(d, l->lastnumberdialed, l->instance, sub->callid);
- transmit_displaypromptstatus(d, "Ring Out", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, OCTAL_RINGOUT, "", 0, l->instance, sub->callid);
send_callinfo(sub);
sub->substate = SUBSTATE_RINGOUT;
break;
case SUBSTATE_RINGIN:
transmit_callstate(d, l->instance, sub->callid, SKINNY_RINGIN);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_RINGIN, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "Ring-In", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, "Ring-In", "", 0, l->instance, sub->callid);
send_callinfo(sub);
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_BLINK);
transmit_ringer_mode(d, SKINNY_RING_INSIDE);
@@ -5414,7 +5468,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
transmit_callstate(d, l->instance, sub->callid, SKINNY_RINGIN);
transmit_callstate(d, l->instance, sub->callid, SKINNY_CALLWAIT);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_RINGIN, KEYMASK_ALL);
- transmit_displaypromptstatus(d, "Callwaiting", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, OCTAL_CALLWAITING, "", 0, l->instance, sub->callid);
send_callinfo(sub);
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_BLINK);
transmit_start_tone(d, SKINNY_CALLWAITTONE, l->instance, sub->callid);
@@ -5436,7 +5490,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
transmit_stop_tone(d, l->instance, sub->callid);
send_callinfo(sub);
transmit_callstate(d, l->instance, sub->callid, SKINNY_CONNECTED);
- transmit_displaypromptstatus(d, "Connected", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, OCTAL_CONNECTED, "", 0, l->instance, sub->callid);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_CONNECTED, KEYMASK_ALL);
if (!sub->rtp) {
start_rtp(sub);
@@ -5470,7 +5524,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
}
send_callinfo(sub);
transmit_callstate(d, l->instance, sub->callid, SKINNY_BUSY);
- transmit_displaypromptstatus(d, "Busy", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, OCTAL_BUSY, "", 0, l->instance, sub->callid);
sub->substate = SUBSTATE_BUSY;
break;
case SUBSTATE_CONGESTION:
@@ -5484,7 +5538,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
}
send_callinfo(sub);
transmit_callstate(d, l->instance, sub->callid, SKINNY_CONGESTION);
- transmit_displaypromptstatus(d, "Congestion", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, "Congestion", "", 0, l->instance, sub->callid);
sub->substate = SUBSTATE_CONGESTION;
break;
case SUBSTATE_PROGRESS:
@@ -5498,7 +5552,7 @@ static void setsubstate(struct skinny_subchannel *sub, int state)
}
send_callinfo(sub);
transmit_callstate(d, l->instance, sub->callid, SKINNY_PROGRESS);
- transmit_displaypromptstatus(d, "Call Progress", 0, l->instance, sub->callid);
+ send_displaypromptstatus(d, "Call Progress", "", 0, l->instance, sub->callid);
sub->substate = SUBSTATE_PROGRESS;
break;
case SUBSTATE_HOLD: