aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-07 20:25:18 +0000
committerqwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-07 20:25:18 +0000
commit57223486b9b1dfcb015bbc09ff55647d921bd46e (patch)
tree259b29769a44ad537a50d59018f58212f1b7d0b3 /channels
parent071bac86a71cbf481f879cce2a641d9575e11e5a (diff)
Fix an issue with newer phones which require packets be padded out to the correct length.
Issue 9887, patch by DEA. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@68249 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_skinny.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index b7e433cb2..c4d2a98a5 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -258,15 +258,20 @@ struct register_ack_message {
#define START_TONE_MESSAGE 0x0082
struct start_tone_message {
uint32_t tone;
+ uint32_t space[3];
};
#define STOP_TONE_MESSAGE 0x0083
+struct stop_tone_message {
+ uint32_t space[2];
+};
#define SET_RINGER_MESSAGE 0x0085
struct set_ringer_message {
uint32_t ringerMode;
uint32_t unknown1; /* See notes in transmit_ringer_mode */
uint32_t unknown2;
+ uint32_t space[2];
};
#define SET_LAMP_MESSAGE 0x0086
@@ -291,7 +296,7 @@ struct set_microphone_message {
struct media_qualifier {
uint32_t precedence;
uint32_t vad;
- uint32_t packets;
+ uint16_t packets;
uint32_t bitRate;
};
@@ -303,12 +308,14 @@ struct start_media_transmission_message {
uint32_t packetSize;
uint32_t payloadType;
struct media_qualifier qualifier;
+ uint32_t space[16];
};
#define STOP_MEDIA_TRANSMISSION_MESSAGE 0x008B
struct stop_media_transmission_message {
uint32_t conferenceId;
uint32_t passThruPartyId;
+ uint32_t space[3];
};
#define CALL_INFO_MESSAGE 0x008F
@@ -330,6 +337,7 @@ struct call_info_message {
char calledPartyVoiceMailbox[24];
char originalCalledPartyVoiceMailbox[24];
char lastRedirectingVoiceMailbox[24];
+ uint32_t space[3];
};
#define SPEED_DIAL_STAT_RES_MESSAGE 0x0091
@@ -343,8 +351,8 @@ struct speed_dial_stat_res_message {
struct line_stat_res_message {
uint32_t lineNumber;
char lineDirNumber[24];
- char lineDisplayName[42];
- uint32_t space;
+ char lineDisplayName[24];
+ uint32_t space[15];
};
#define DEFINETIMEDATE_MESSAGE 0x0094
@@ -429,7 +437,6 @@ struct displaytext_message {
};
#define CLEAR_NOTIFY_MESSAGE 0x0115
-#define CLEAR_PROMPT_MESSAGE 0x0113
#define CLEAR_DISPLAY_MESSAGE 0x009A
#define CAPABILITIES_REQ_MESSAGE 0x009B
@@ -465,12 +472,14 @@ struct open_receive_channel_message {
uint32_t capability;
uint32_t echo;
uint32_t bitrate;
+ uint32_t space[16];
};
#define CLOSE_RECEIVE_CHANNEL_MESSAGE 0x0106
struct close_receive_channel_message {
uint32_t conferenceId;
uint32_t partyId;
+ uint32_t space[2];
};
#define SOFT_KEY_TEMPLATE_RES_MESSAGE 0x0108
@@ -660,6 +669,7 @@ struct call_state_message {
uint32_t callState;
uint32_t lineInstance;
uint32_t callReference;
+ uint32_t space[3];
};
#define DISPLAY_PROMPT_STATUS_MESSAGE 0x0112
@@ -670,6 +680,12 @@ struct display_prompt_status_message {
uint32_t callReference;
};
+#define CLEAR_PROMPT_MESSAGE 0x0113
+struct clear_prompt_message {
+ uint32_t lineInstance;
+ uint32_t callReference;
+};
+
#define DISPLAY_NOTIFY_MESSAGE 0x0114
struct display_notify_message {
uint32_t displayTimeout;
@@ -699,6 +715,7 @@ union skinny_data {
struct button_template_res_message buttontemplate;
struct displaytext_message displaytext;
struct display_prompt_status_message displaypromptstatus;
+ struct clear_prompt_message clearpromptstatus;
struct definetimedate_message definetimedate;
struct start_tone_message starttone;
struct speed_dial_stat_res_message speeddial;
@@ -926,7 +943,7 @@ struct skinny_subchannel {
struct skinny_line {
ast_mutex_t lock;
char name[80];
- char label[42]; /* Label that shows next to the line buttons */
+ char label[24]; /* Label that shows next to the line buttons */
char accountcode[AST_MAX_ACCOUNT_CODE];
char exten[AST_MAX_EXTENSION]; /* Extension where to start */
char context[AST_MAX_CONTEXT];
@@ -1564,7 +1581,7 @@ static void transmit_tone(struct skinnysession *s, int tone)
if (!(req = req_alloc(sizeof(struct start_tone_message), START_TONE_MESSAGE)))
return;
} else {
- if (!(req = req_alloc(0, STOP_TONE_MESSAGE)))
+ if (!(req = req_alloc(sizeof(struct stop_tone_message), STOP_TONE_MESSAGE)))
return;
}
@@ -4108,6 +4125,8 @@ static int handle_message(struct skinny_req *req, struct skinnysession *s)
res = handle_speed_dial_stat_req_message(req, s);
break;
case LINE_STATE_REQ_MESSAGE:
+ if (skinnydebug)
+ ast_verbose("Received LineStatRequest\n");
res = handle_line_state_req_message(req, s);
break;
case TIME_DATE_REQ_MESSAGE: