Skinny: pack data in mem to fix 64bit

On 64bit, fields are aligned which cause Skinny to fail
This commit is contained in:
Mathieu Parent 2010-07-28 21:43:12 +02:00
parent 7d32847894
commit b062eef12e

View File

@ -45,7 +45,7 @@
/* RegisterMessage */ /* RegisterMessage */
#define REGISTER_MESSAGE 0x0001 #define REGISTER_MESSAGE 0x0001
struct register_message { struct PACKED register_message {
char device_name[16]; char device_name[16];
uint32_t user_id; uint32_t user_id;
uint32_t instance; uint32_t instance;
@ -56,13 +56,13 @@ struct register_message {
/* PortMessage */ /* PortMessage */
#define PORT_MESSAGE 0x0002 #define PORT_MESSAGE 0x0002
struct port_message { struct PACKED port_message {
uint16_t port; uint16_t port;
}; };
/* KeypadButtonMessage */ /* KeypadButtonMessage */
#define KEYPAD_BUTTON_MESSAGE 0x0003 #define KEYPAD_BUTTON_MESSAGE 0x0003
struct keypad_button_message { struct PACKED keypad_button_message {
uint32_t button; uint32_t button;
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
@ -70,7 +70,7 @@ struct keypad_button_message {
/* StimulusMessage */ /* StimulusMessage */
#define STIMULUS_MESSAGE 0x0005 #define STIMULUS_MESSAGE 0x0005
struct stimulus_message { struct PACKED stimulus_message {
uint32_t instance_type; /* See enum skinny_button_definition */ uint32_t instance_type; /* See enum skinny_button_definition */
uint32_t instance; uint32_t instance;
uint32_t call_id; uint32_t call_id;
@ -78,27 +78,27 @@ struct stimulus_message {
/* OffHookMessage */ /* OffHookMessage */
#define OFF_HOOK_MESSAGE 0x0006 #define OFF_HOOK_MESSAGE 0x0006
struct off_hook_message { struct PACKED off_hook_message {
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
}; };
/* OnHookMessage */ /* OnHookMessage */
#define ON_HOOK_MESSAGE 0x0007 #define ON_HOOK_MESSAGE 0x0007
struct on_hook_message { struct PACKED on_hook_message {
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
}; };
/* SpeedDialStatReqMessage */ /* SpeedDialStatReqMessage */
#define SPEED_DIAL_STAT_REQ_MESSAGE 0x000A #define SPEED_DIAL_STAT_REQ_MESSAGE 0x000A
struct speed_dial_stat_req_message { struct PACKED speed_dial_stat_req_message {
uint32_t number; uint32_t number;
}; };
/* LineStatReqMessage */ /* LineStatReqMessage */
#define LINE_STAT_REQ_MESSAGE 0x000B #define LINE_STAT_REQ_MESSAGE 0x000B
struct line_stat_req_message { struct PACKED line_stat_req_message {
uint32_t number; uint32_t number;
}; };
@ -116,20 +116,20 @@ struct line_stat_req_message {
/* CapabilitiesResMessage */ /* CapabilitiesResMessage */
#define CAPABILITIES_RES_MESSAGE 0x0010 #define CAPABILITIES_RES_MESSAGE 0x0010
struct station_capabilities { struct PACKED station_capabilities {
uint32_t codec; uint32_t codec;
uint16_t frames; uint16_t frames;
char reserved[10]; char reserved[10];
}; };
struct capabilities_res_message { struct PACKED capabilities_res_message {
uint32_t count; uint32_t count;
struct station_capabilities caps[SWITCH_MAX_CODECS]; struct station_capabilities caps[SWITCH_MAX_CODECS];
}; };
/* AlarmMessage */ /* AlarmMessage */
#define ALARM_MESSAGE 0x0020 #define ALARM_MESSAGE 0x0020
struct alarm_message { struct PACKED alarm_message {
uint32_t alarm_severity; uint32_t alarm_severity;
char display_message[80]; char display_message[80];
uint32_t alarm_param1; uint32_t alarm_param1;
@ -138,7 +138,7 @@ struct alarm_message {
/* OpenReceiveChannelAck */ /* OpenReceiveChannelAck */
#define OPEN_RECEIVE_CHANNEL_ACK_MESSAGE 0x0022 #define OPEN_RECEIVE_CHANNEL_ACK_MESSAGE 0x0022
struct open_receive_channel_ack_message { struct PACKED open_receive_channel_ack_message {
uint32_t status; uint32_t status;
struct in_addr ip; struct in_addr ip;
uint32_t port; uint32_t port;
@ -150,7 +150,7 @@ struct open_receive_channel_ack_message {
/* SoftKeyEventMessage */ /* SoftKeyEventMessage */
#define SOFT_KEY_EVENT_MESSAGE 0x0026 #define SOFT_KEY_EVENT_MESSAGE 0x0026
struct soft_key_event_message { struct PACKED soft_key_event_message {
uint32_t event; uint32_t event;
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
@ -164,31 +164,31 @@ struct soft_key_event_message {
/* HeadsetStatusMessage */ /* HeadsetStatusMessage */
#define HEADSET_STATUS_MESSAGE 0x002B #define HEADSET_STATUS_MESSAGE 0x002B
struct headset_status_message { struct PACKED headset_status_message {
uint32_t mode; uint32_t mode;
}; };
/* RegisterAvailableLinesMessage */ /* RegisterAvailableLinesMessage */
#define REGISTER_AVAILABLE_LINES_MESSAGE 0x002D #define REGISTER_AVAILABLE_LINES_MESSAGE 0x002D
struct register_available_lines_message { struct PACKED register_available_lines_message {
uint32_t count; uint32_t count;
}; };
/* ServiceUrlStatReqMessage */ /* ServiceUrlStatReqMessage */
#define SERVICE_URL_STAT_REQ_MESSAGE 0x0033 #define SERVICE_URL_STAT_REQ_MESSAGE 0x0033
struct service_url_stat_req_message { struct PACKED service_url_stat_req_message {
uint32_t service_url_index; uint32_t service_url_index;
}; };
/* FeatureStatReqMessage */ /* FeatureStatReqMessage */
#define FEATURE_STAT_REQ_MESSAGE 0x0034 #define FEATURE_STAT_REQ_MESSAGE 0x0034
struct feature_stat_req_message { struct PACKED feature_stat_req_message {
uint32_t feature_index; uint32_t feature_index;
}; };
/* RegisterAckMessage */ /* RegisterAckMessage */
#define REGISTER_ACK_MESSAGE 0x0081 #define REGISTER_ACK_MESSAGE 0x0081
struct register_ack_message { struct PACKED register_ack_message {
uint32_t keep_alive; uint32_t keep_alive;
char date_format[6]; char date_format[6];
char reserved[2]; char reserved[2];
@ -198,7 +198,7 @@ struct register_ack_message {
/* StartToneMessage */ /* StartToneMessage */
#define START_TONE_MESSAGE 0x0082 #define START_TONE_MESSAGE 0x0082
struct start_tone_message { struct PACKED start_tone_message {
uint32_t tone; /* see enum skinny_tone */ uint32_t tone; /* see enum skinny_tone */
uint32_t reserved; uint32_t reserved;
uint32_t line_instance; uint32_t line_instance;
@ -207,14 +207,14 @@ struct start_tone_message {
/* StopToneMessage */ /* StopToneMessage */
#define STOP_TONE_MESSAGE 0x0083 #define STOP_TONE_MESSAGE 0x0083
struct stop_tone_message { struct PACKED stop_tone_message {
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
}; };
/* SetRingerMessage */ /* SetRingerMessage */
#define SET_RINGER_MESSAGE 0x0085 #define SET_RINGER_MESSAGE 0x0085
struct set_ringer_message { struct PACKED set_ringer_message {
uint32_t ring_type; /* See enum skinny_ring_type */ uint32_t ring_type; /* See enum skinny_ring_type */
uint32_t ring_mode; /* See enum skinny_ring_mode */ uint32_t ring_mode; /* See enum skinny_ring_mode */
uint32_t line_instance; uint32_t line_instance;
@ -223,7 +223,7 @@ struct set_ringer_message {
/* SetLampMessage */ /* SetLampMessage */
#define SET_LAMP_MESSAGE 0x0086 #define SET_LAMP_MESSAGE 0x0086
struct set_lamp_message { struct PACKED set_lamp_message {
uint32_t stimulus; /* See enum skinny_button_definition */ uint32_t stimulus; /* See enum skinny_button_definition */
uint32_t stimulus_instance; uint32_t stimulus_instance;
uint32_t mode; /* See enum skinny_lamp_mode */ uint32_t mode; /* See enum skinny_lamp_mode */
@ -231,13 +231,13 @@ struct set_lamp_message {
/* SetSpeakerModeMessage */ /* SetSpeakerModeMessage */
#define SET_SPEAKER_MODE_MESSAGE 0x0088 #define SET_SPEAKER_MODE_MESSAGE 0x0088
struct set_speaker_mode_message { struct PACKED set_speaker_mode_message {
uint32_t mode; /* See enum skinny_speaker_mode */ uint32_t mode; /* See enum skinny_speaker_mode */
}; };
/* StartMediaTransmissionMessage */ /* StartMediaTransmissionMessage */
#define START_MEDIA_TRANSMISSION_MESSAGE 0x008A #define START_MEDIA_TRANSMISSION_MESSAGE 0x008A
struct start_media_transmission_message { struct PACKED start_media_transmission_message {
uint32_t conference_id; uint32_t conference_id;
uint32_t pass_thru_party_id; uint32_t pass_thru_party_id;
uint32_t remote_ip; uint32_t remote_ip;
@ -253,7 +253,7 @@ struct start_media_transmission_message {
/* StopMediaTransmissionMessage */ /* StopMediaTransmissionMessage */
#define STOP_MEDIA_TRANSMISSION_MESSAGE 0x008B #define STOP_MEDIA_TRANSMISSION_MESSAGE 0x008B
struct stop_media_transmission_message { struct PACKED stop_media_transmission_message {
uint32_t conference_id; uint32_t conference_id;
uint32_t pass_thru_party_id; uint32_t pass_thru_party_id;
uint32_t conference_id2; uint32_t conference_id2;
@ -262,7 +262,7 @@ struct stop_media_transmission_message {
/* CallInfoMessage */ /* CallInfoMessage */
#define CALL_INFO_MESSAGE 0x008F #define CALL_INFO_MESSAGE 0x008F
struct call_info_message { struct PACKED call_info_message {
char calling_party_name[40]; char calling_party_name[40];
char calling_party[24]; char calling_party[24];
char called_party_name[40]; char called_party_name[40];
@ -287,7 +287,7 @@ struct call_info_message {
/* SpeedDialStatMessage */ /* SpeedDialStatMessage */
#define SPEED_DIAL_STAT_RES_MESSAGE 0x0091 #define SPEED_DIAL_STAT_RES_MESSAGE 0x0091
struct speed_dial_stat_res_message { struct PACKED speed_dial_stat_res_message {
uint32_t number; uint32_t number;
char line[24]; char line[24];
char label[40]; char label[40];
@ -295,7 +295,7 @@ struct speed_dial_stat_res_message {
/* LineStatMessage */ /* LineStatMessage */
#define LINE_STAT_RES_MESSAGE 0x0092 #define LINE_STAT_RES_MESSAGE 0x0092
struct line_stat_res_message { struct PACKED line_stat_res_message {
uint32_t number; uint32_t number;
char name[24]; char name[24];
char shortname[40]; char shortname[40];
@ -304,7 +304,7 @@ struct line_stat_res_message {
/* ConfigStatMessage */ /* ConfigStatMessage */
#define CONFIG_STAT_RES_MESSAGE 0x0093 #define CONFIG_STAT_RES_MESSAGE 0x0093
struct config_stat_res_message { struct PACKED config_stat_res_message {
char device_name[16]; char device_name[16];
uint32_t user_id; uint32_t user_id;
uint32_t instance; uint32_t instance;
@ -316,7 +316,7 @@ struct config_stat_res_message {
/* DefineTimeDate */ /* DefineTimeDate */
#define DEFINE_TIME_DATE_MESSAGE 0x0094 #define DEFINE_TIME_DATE_MESSAGE 0x0094
struct define_time_date_message { struct PACKED define_time_date_message {
uint32_t year; uint32_t year;
uint32_t month; uint32_t month;
uint32_t day_of_week; /* monday = 1 */ uint32_t day_of_week; /* monday = 1 */
@ -330,13 +330,13 @@ struct define_time_date_message {
/* ButtonTemplateMessage */ /* ButtonTemplateMessage */
#define BUTTON_TEMPLATE_RES_MESSAGE 0x0097 #define BUTTON_TEMPLATE_RES_MESSAGE 0x0097
struct button_definition { struct PACKED button_definition {
uint8_t instance_number; uint8_t instance_number;
uint8_t button_definition; /* See enum skinny_button_definition */ uint8_t button_definition; /* See enum skinny_button_definition */
}; };
#define SKINNY_MAX_BUTTON_COUNT 42 #define SKINNY_MAX_BUTTON_COUNT 42
struct button_template_message { struct PACKED button_template_message {
uint32_t button_offset; uint32_t button_offset;
uint32_t button_count; uint32_t button_count;
uint32_t total_button_count; uint32_t total_button_count;
@ -345,7 +345,7 @@ struct button_template_message {
/* VersionMessage */ /* VersionMessage */
#define VERSION_MESSAGE 0x0098 #define VERSION_MESSAGE 0x0098
struct version_message { struct PACKED version_message {
char version[16]; char version[16];
}; };
@ -354,13 +354,13 @@ struct version_message {
/* RegisterRejectMessage */ /* RegisterRejectMessage */
#define REGISTER_REJECT_MESSAGE 0x009D #define REGISTER_REJECT_MESSAGE 0x009D
struct register_reject_message { struct PACKED register_reject_message {
char error[33]; char error[33];
}; };
/* ResetMessage */ /* ResetMessage */
#define RESET_MESSAGE 0x009F #define RESET_MESSAGE 0x009F
struct reset_message { struct PACKED reset_message {
uint32_t reset_type; /* See enum skinny_device_reset_types */ uint32_t reset_type; /* See enum skinny_device_reset_types */
}; };
@ -369,7 +369,7 @@ struct reset_message {
/* OpenReceiveChannelMessage */ /* OpenReceiveChannelMessage */
#define OPEN_RECEIVE_CHANNEL_MESSAGE 0x0105 #define OPEN_RECEIVE_CHANNEL_MESSAGE 0x0105
struct open_receive_channel_message { struct PACKED open_receive_channel_message {
uint32_t conference_id; uint32_t conference_id;
uint32_t pass_thru_party_id; uint32_t pass_thru_party_id;
uint32_t packets; uint32_t packets;
@ -382,7 +382,7 @@ struct open_receive_channel_message {
/* CloseReceiveChannelMessage */ /* CloseReceiveChannelMessage */
#define CLOSE_RECEIVE_CHANNEL_MESSAGE 0x0106 #define CLOSE_RECEIVE_CHANNEL_MESSAGE 0x0106
struct close_receive_channel_message { struct PACKED close_receive_channel_message {
uint32_t conference_id; uint32_t conference_id;
uint32_t pass_thru_party_id; uint32_t pass_thru_party_id;
uint32_t conference_id2; uint32_t conference_id2;
@ -391,12 +391,12 @@ struct close_receive_channel_message {
/* SoftKeyTemplateResMessage */ /* SoftKeyTemplateResMessage */
#define SOFT_KEY_TEMPLATE_RES_MESSAGE 0x0108 #define SOFT_KEY_TEMPLATE_RES_MESSAGE 0x0108
struct soft_key_template_definition { struct PACKED soft_key_template_definition {
char soft_key_label[16]; char soft_key_label[16];
uint32_t soft_key_event; uint32_t soft_key_event;
}; };
struct soft_key_template_res_message { struct PACKED soft_key_template_res_message {
uint32_t soft_key_offset; uint32_t soft_key_offset;
uint32_t soft_key_count; uint32_t soft_key_count;
uint32_t total_soft_key_count; uint32_t total_soft_key_count;
@ -405,12 +405,12 @@ struct soft_key_template_res_message {
/* SoftKeySetResMessage */ /* SoftKeySetResMessage */
#define SOFT_KEY_SET_RES_MESSAGE 0x0109 #define SOFT_KEY_SET_RES_MESSAGE 0x0109
struct soft_key_set_definition { struct PACKED soft_key_set_definition {
uint8_t soft_key_template_index[16]; /* See enum skinny_soft_key_event */ uint8_t soft_key_template_index[16]; /* See enum skinny_soft_key_event */
uint16_t soft_key_info_index[16]; uint16_t soft_key_info_index[16];
}; };
struct soft_key_set_res_message { struct PACKED soft_key_set_res_message {
uint32_t soft_key_set_offset; uint32_t soft_key_set_offset;
uint32_t soft_key_set_count; uint32_t soft_key_set_count;
uint32_t total_soft_key_set_count; uint32_t total_soft_key_set_count;
@ -420,7 +420,7 @@ struct soft_key_set_res_message {
/* SelectSoftKeysMessage */ /* SelectSoftKeysMessage */
#define SELECT_SOFT_KEYS_MESSAGE 0x0110 #define SELECT_SOFT_KEYS_MESSAGE 0x0110
struct select_soft_keys_message { struct PACKED select_soft_keys_message {
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
uint32_t soft_key_set; /* See enum skinny_key_set */ uint32_t soft_key_set; /* See enum skinny_key_set */
@ -429,7 +429,7 @@ struct select_soft_keys_message {
/* CallStateMessage */ /* CallStateMessage */
#define CALL_STATE_MESSAGE 0x0111 #define CALL_STATE_MESSAGE 0x0111
struct call_state_message { struct PACKED call_state_message {
uint32_t call_state; /* See enum skinny_call_state */ uint32_t call_state; /* See enum skinny_call_state */
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
@ -437,7 +437,7 @@ struct call_state_message {
/* DisplayPromptStatusMessage */ /* DisplayPromptStatusMessage */
#define DISPLAY_PROMPT_STATUS_MESSAGE 0x0112 #define DISPLAY_PROMPT_STATUS_MESSAGE 0x0112
struct display_prompt_status_message { struct PACKED display_prompt_status_message {
uint32_t timeout; uint32_t timeout;
char display[32]; char display[32];
uint32_t line_instance; uint32_t line_instance;
@ -446,33 +446,33 @@ struct display_prompt_status_message {
/* ClearPromptStatusMessage */ /* ClearPromptStatusMessage */
#define CLEAR_PROMPT_STATUS_MESSAGE 0x0113 #define CLEAR_PROMPT_STATUS_MESSAGE 0x0113
struct clear_prompt_status_message { struct PACKED clear_prompt_status_message {
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
}; };
/* ActivateCallPlaneMessage */ /* ActivateCallPlaneMessage */
#define ACTIVATE_CALL_PLANE_MESSAGE 0x0116 #define ACTIVATE_CALL_PLANE_MESSAGE 0x0116
struct activate_call_plane_message { struct PACKED activate_call_plane_message {
uint32_t line_instance; uint32_t line_instance;
}; };
/* UnregisterAckMessage */ /* UnregisterAckMessage */
#define UNREGISTER_ACK_MESSAGE 0x0118 #define UNREGISTER_ACK_MESSAGE 0x0118
struct unregister_ack_message { struct PACKED unregister_ack_message {
uint32_t unregister_status; uint32_t unregister_status;
}; };
/* BackSpaceReqMessage */ /* BackSpaceReqMessage */
#define BACK_SPACE_REQ_MESSAGE 0x0119 #define BACK_SPACE_REQ_MESSAGE 0x0119
struct back_space_req_message { struct PACKED back_space_req_message {
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
}; };
/* DialedNumberMessage */ /* DialedNumberMessage */
#define DIALED_NUMBER_MESSAGE 0x011D #define DIALED_NUMBER_MESSAGE 0x011D
struct dialed_number_message { struct PACKED dialed_number_message {
char called_party[24]; char called_party[24];
uint32_t line_instance; uint32_t line_instance;
uint32_t call_id; uint32_t call_id;
@ -480,7 +480,7 @@ struct dialed_number_message {
/* FeatureStatMessage */ /* FeatureStatMessage */
#define FEATURE_STAT_RES_MESSAGE 0x011F #define FEATURE_STAT_RES_MESSAGE 0x011F
struct feature_stat_res_message { struct PACKED feature_stat_res_message {
uint32_t index; uint32_t index;
uint32_t id; uint32_t id;
char text_label[40]; char text_label[40];
@ -489,7 +489,7 @@ struct feature_stat_res_message {
/* DisplayPriNotifyMessage */ /* DisplayPriNotifyMessage */
#define DISPLAY_PRI_NOTIFY_MESSAGE 0x0120 #define DISPLAY_PRI_NOTIFY_MESSAGE 0x0120
struct display_pri_notify_message { struct PACKED display_pri_notify_message {
uint32_t message_timeout; uint32_t message_timeout;
uint32_t priority; uint32_t priority;
char notify[32]; char notify[32];
@ -497,7 +497,7 @@ struct display_pri_notify_message {
/* ServiceUrlStatMessage */ /* ServiceUrlStatMessage */
#define SERVICE_URL_STAT_RES_MESSAGE 0x012F #define SERVICE_URL_STAT_RES_MESSAGE 0x012F
struct service_url_stat_res_message { struct PACKED service_url_stat_res_message {
uint32_t index; uint32_t index;
char url[256]; char url[256];
char display_name[40]; char display_name[40];
@ -570,7 +570,7 @@ union skinny_data {
* body is type+data * body is type+data
* length is length of body * length is length of body
*/ */
struct skinny_message { struct PACKED skinny_message {
uint32_t length; uint32_t length;
uint32_t version; uint32_t version;
uint32_t type; uint32_t type;