1 /*! 2 * \file sccp_protocol.h 3 * \brief SCCP Protocol Header 4 * \author Sergio Chersovani <mlists [at] c-net.it> 5 * \note Reworked, but based on chan_sccp code. 6 * The original chan_sccp driver that was made by Zozo which itself was derived from the chan_skinny driver. 7 * Modified by Jan Czmok and Julien Goodwin 8 * \note This program is free software and may be modified and distributed under the terms of the GNU Public License. 9 * See the LICENSE file at the top of the source tree. 10 * 11 * \note Thank you Federico Santulli for SPCP support 12 */ 13 #pragma once 14 #include "define.h" 15 #include "sccp_codec.h" 16 #include "sccp_softkeys.h" 17 #include "sccp_enum.h" 18 19 __BEGIN_C_EXTERN__ 20 #define SCCP_DRIVER_SUPPORTED_PROTOCOL_LOW 3 /*!< At least we require protocol V.3 */ 21 #define SCCP_DRIVER_SUPPORTED_PROTOCOL_HIGH 22 /*!< We support up to protocol V.17 */ 22 23 #define UNKNOWN_PROTOCOL 0 24 #define SCCP_PROTOCOL 1 25 #define SPCP_PROTOCOL 2 26 27 #define DEFAULT_SCCP_PORT 2000 /*!< SCCP uses port 2000. */ 28 #define DEFAULT_SCCP_SECURE_PORT 2443 /*!< SCCP secure port 2443. */ 29 #define DEFAULT_SCCP_BACKLOG 16 /*!< the listen baklog. */ 30 #define SCCP_MAX_AUTOLOGIN 100 /*!< Maximum allowed of autologins per device */ 31 #define SCCP_MIN_KEEPALIVE 30 /*!< Minimal keepalive time if not specified in sccp.conf. */ 32 33 /* 34 Still looking for these features bits 35 MULTIMEDIA_SUPPORT, SNF_NETWORK_CAPABILITY, DICTIONARY_NEW_RANGE, KFACTOR_CAPABILITY (related to DSP) 36 RSVP_SUPPORT, UNICODE_CAPABLE, AUTO_IDLE_DISABLE, RESTRICT_PI, AUTHENTICATED_SIGNALING, 37 MEDIA_ENCRYPTION_SUPPORT, STATION_MAX_FEATURE_MASK, INTERNALIZATION 38 */ 39 40 //#define SKINNY_PHONE_FEATURES0 1<<0 41 //#define SKINNY_PHONE_FEATURES0 1<<1 42 //#define SKINNY_PHONE_FEATURES0 1<<2 43 //#define SKINNY_PHONE_FEATURES0 1<<3 44 //#define SKINNY_PHONE_FEATURES0 1<<4 45 //#define SKINNY_PHONE_FEATURES0 1<<5 46 //#define SKINNY_PHONE_FEATURES0 1<<6 47 //#define SKINNY_PHONE_FEATURES0 1<<7 48 49 //#define SKINNY_PHONE_FEATURES1 1<<0 50 #define SKINNY_PHONE_FEATURES1_PORTREQUEST 1<<1 /*!< Guess: portRequest/portResponse */ 51 //#define SKINNY_PHONE_FEATURES1 1<<2 52 //#define SKINNY_PHONE_FEATURES1 1<<3 53 #define SKINNY_PHONE_FEATURES1_UTF8 1<<4 54 #define SKINNY_PHONE_FEATURES1_UNKNOWN1 1<<5 55 #define SKINNY_PHONE_FEATURES1_UNKNOWN2 1<<6 56 //#define SKINNY_PHONE_FEATURES1 1<<7 57 58 #define SKINNY_PHONE_FEATURES2_DYNAMIC_MESSAGES 1<<0 59 //#define SKINNY_PHONE_FEATURES2 1<<1 60 #define SKINNY_PHONE_FEATURES2_RFC2833 1<<2 61 //#define SKINNY_PHONE_FEATURES2 1<<3 62 #define SKINNY_PHONE_FEATURES2_INTERNAL_CM_MEDIA 1<<4 63 //#define SKINNY_PHONE_FEATURES2 1<<5 64 #define SKINNY_PHONE_FEATURES2_UNKNOWN3 1<<6 65 #define SKINNY_PHONE_FEATURES2_ABBRDIAL 1<<7 66 67 68 #define SKINNY_MaxAnnouncementList 32 69 #define SKINNY_StationMaxMonitorParties 16 70 71 #define StationMaxDeviceNameSize 16 72 #define StationMaxButtonTemplateSize 56 73 #define StationMaxButtonTemplateNameSize 44 74 #define StationDateTemplateSize 7 75 #define StationMaxDisplayTextSize 32 76 #define StationMaxDisplayNotifySize 32 77 #define StationMaxDirnumSize 24 78 #define StationDynamicDirnumSize 25 79 #define StationMaxNameSize 40 80 #define StationDynamicNameSize 121 81 #define StationMaxSoftKeyDefinition 32 82 #define StationMaxSoftKeySetDefinition 16 83 #define StationMaxSoftKeyIndex 16 84 #define StationMaxSoftKeyLabelSize 16 85 #define StationMaxVersionSize 16 86 #define StationMaxServers 5 87 #define ServerMaxNameSize 48 88 #define StationMaxServiceURLSize 256 89 #define StationMaxPorts 16 90 #define StationMaxAlarmMessage 80 91 #define StationMaxXMLMessage 2000 92 #define StationMaxXMLAlarmMessage 2048 93 #define StationMaxImageVersionSize 32 94 95 #define APPID_INPUT 1 96 #define APPID_CONFERENCE 9081 97 #define APPID_CONFERENCE_INVITE 9082 98 #define APPID_PROVISION 9083 99 #define APPID_DEVICECAPABILITIES 9084 100 #define APPID_URIHOOK 9085 101 #define APPID_BACKGROUND 9086 102 #define APPID_RINGTONE 9087 103 #define APPID_STREAM 9088 104 #define APPID_PUSH 9089 105 #define APPID_VISUALPARKINGLOT 9090 106 107 /* 108 * \todo Merge sccp_button_type_t / sccp_buttontypes[] and this define 109 */ 110 #define SCCP_BUTTONTYPE_MULTI 0xF1 111 #define SCCP_BUTTONTYPE_LINE 0xF2 112 #define SCCP_BUTTONTYPE_SPEEDDIAL 0xF3 113 #define SCCP_BUTTONTYPE_HINT 0xF4 114 #define SCCP_BUTTONTYPE_ABBRDIAL 0xF5 115 116 /* unregister */ 117 #define SKINNY_UNREGISTERSTATUS_OK 0 118 #define SKINNY_UNREGISTERSTATUS_ERROR 1 119 #define SKINNY_UNREGISTERSTATUS_NAK 2 /*!< we have an active channel */ 120 121 /* media silence suppression */ 122 #define SKINNY_MEDIA_SILENCESUPPRESSION_OFF 0 123 #define SKINNY_MEDIA_SILENCESUPPRESSION_ON 1 124 125 /* media echo cancel -> enum*/ 126 #define SKINNY_MEDIA_ECHOCANCELLATION_OFF 0 127 #define SKINNY_MEDIA_ECHOCANCELLATION_ON 1 128 129 /* G723 bitrate -> enum */ 130 #define SKINNY_MEDIA_G723BRATE_NONE 0 131 #define SKINNY_MEDIA_G723BRATE_5_3 1 132 #define SKINNY_MEDIA_G723BRATE_6_4 2 133 134 /* statistic processing */ 135 #define SKINNY_STATSPROCESSING_CLEAR 0 136 #define SKINNY_STATSPROCESSING_DONOTCLEAR 1 137 138 /* speaker status */ 139 #define SKINNY_STATIONSPEAKER_ON 1 140 #define SKINNY_STATIONSPEAKER_OFF 2 141 142 /* mic status */ 143 #define SKINNY_STATIONMIC_ON 1 144 #define SKINNY_STATIONMIC_OFF 2 145 146 /* headset status */ 147 #define SKINNY_STATIONHEADSET_ON 1 148 #define SKINNY_STATIONHEADSET_OFF 2 149 150 #define MAX_CUSTOM_PICTURES 6 151 #define MAX_LAYOUT_WITH_SAME_SERVICE 5 152 #define MAX_SERVICE_TYPE 4 153 #define MAX_LEVEL_PREFERENCE 4 154 155 /*! 156 * \brief SCCP Device->Button List Structure 157 */ 158 typedef struct { 159 uint8_t instance; /*!< Button Instance */ 160 uint8_t type; /*!< Button Type */ 161 skinny_devicetype_t devicetype; 162 sccp_line_t *ptr; /*!< Pointer to the Line */ 163 } btnlist; /*!< Button List Structure */ 164 165 /*! 166 * \brief SKINNY Message Types Enum 167 */ 168 169 typedef enum { 170 /* *INDENT-OFF* */ 171 172 #define SCCP_MESSAGE_LOW_BOUNDARY KeepAliveMessage /*0x0000*/ 173 /* Client -> Server */ 174 KeepAliveMessage = 0x0000, 175 RegisterMessage = 0x0001, 176 IpPortMessage = 0x0002, 177 KeypadButtonMessage = 0x0003, 178 EnblocCallMessage = 0x0004, 179 StimulusMessage = 0x0005, 180 OffHookMessage = 0x0006, 181 OnHookMessage = 0x0007, 182 HookFlashMessage = 0x0008, 183 ForwardStatReqMessage = 0x0009, 184 SpeedDialStatReqMessage = 0x000A, 185 LineStatReqMessage = 0x000B, 186 ConfigStatReqMessage = 0x000C, 187 TimeDateReqMessage = 0x000D, 188 ButtonTemplateReqMessage = 0x000E, 189 VersionReqMessage = 0x000F, 190 CapabilitiesResMessage = 0x0010, 191 MediaPortListMessage = 0x0011, 192 ServerReqMessage = 0x0012, 193 AlarmMessage = 0x0020, 194 MulticastMediaReceptionAck = 0x0021, 195 OpenReceiveChannelAck = 0x0022, 196 ConnectionStatisticsRes = 0x0023, 197 OffHookMessageWithCallingPartyMessage = 0x0024, 198 SoftKeySetReqMessage = 0x0025, 199 SoftKeyEventMessage = 0x0026, 200 UnregisterMessage = 0x0027, 201 SoftKeyTemplateReqMessage = 0x0028, 202 RegisterTokenRequest = 0x0029, 203 MediaTransmissionFailure = 0x002A, 204 HeadsetStatusMessage = 0x002B, 205 MediaResourceNotification = 0x002C, 206 RegisterAvailableLinesMessage = 0x002D, 207 DeviceToUserDataMessage = 0x002E, 208 DeviceToUserDataResponseMessage = 0x002F, 209 UpdateCapabilitiesMessage = 0x0030, 210 OpenMultiMediaReceiveChannelAckMessage = 0x0031, 211 ClearConferenceMessage = 0x0032, 212 ServiceURLStatReqMessage = 0x0033, 213 FeatureStatReqMessage = 0x0034, 214 CreateConferenceResMessage = 0x0035, 215 DeleteConferenceResMessage = 0x0036, 216 ModifyConferenceResMessage = 0x0037, 217 AddParticipantResMessage = 0x0038, 218 AuditConferenceResMessage = 0x0039, 219 AuditParticipantResMessage = 0x0040, 220 DeviceToUserDataVersion1Message = 0x0041, 221 DeviceToUserDataResponseVersion1Message = 0x0042, 222 223 UpdateCapabilitiesV2Message = 0x0043, /*new (2013-12-9)*/ 224 UpdateCapabilitiesV3Message = 0x0044, 225 /* DynamicUpdateCapabilitiesMessage */ /*!< @see https://sourceforge.net/p/chan-sccp-b/bugs/181/ */ 226 227 PortResponseMessage = 0x0045, /*new (2013-12-9)*/ 228 QoSResvNotifyMessage = 0x0046, /*new (2013-12-9)*/ 229 QoSErrorNotifyMessage = 0x0047, /*new (2013-12-9)*/ 230 231 /* This are from protocol V 11 CCM7 */ 232 SubscriptionStatReqMessage = 0x0048, /* Subscription Stat Request */ 233 AccessoryStatusMessage = 0x0049, /* MediaPath Event Message */ 234 MediaPathCapabilityMessage = 0x004A, /*new name (2013-12-9)*/ 235 MwiNotificationMessage = 0x004C, 236 237 /* Server -> Client */ 238 RegisterAckMessage = 0x0081, 239 StartToneMessage = 0x0082, 240 StopToneMessage = 0x0083, 241 // ?? 242 SetRingerMessage = 0x0085, 243 SetLampMessage = 0x0086, 244 SetHookFlashDetectMessage = 0x0087, 245 SetSpeakerModeMessage = 0x0088, 246 SetMicroModeMessage = 0x0089, 247 StartMediaTransmission = 0x008A, 248 StopMediaTransmission = 0x008B, 249 StartMediaReception = 0x008C, 250 StopMediaReception = 0x008D, 251 // ? 252 CallInfoMessage = 0x008F, 253 254 ForwardStatMessage = 0x0090, 255 SpeedDialStatMessage = 0x0091, 256 LineStatMessage = 0x0092, 257 ConfigStatMessage = 0x0093, 258 DefineTimeDate = 0x0094, 259 StartSessionTransmission = 0x0095, 260 StopSessionTransmission = 0x0096, 261 ButtonTemplateMessage = 0x0097, 262 // ButtonTemplateMessageSingle = 0x0097, 263 VersionMessage = 0x0098, 264 DisplayTextMessage = 0x0099, 265 ClearDisplay = 0x009A, 266 CapabilitiesReqMessage = 0x009B, 267 EnunciatorCommandMessage = 0x009C, 268 RegisterRejectMessage = 0x009D, 269 ServerResMessage = 0x009E, 270 Reset = 0x009F, 271 272 KeepAliveAckMessage = 0x0100, 273 StartMulticastMediaReception = 0x0101, 274 StartMulticastMediaTransmission = 0x0102, 275 StopMulticastMediaReception = 0x0103, 276 StopMulticastMediaTransmission = 0x0104, 277 OpenReceiveChannel = 0x0105, 278 CloseReceiveChannel = 0x0106, 279 ConnectionStatisticsReq = 0x0107, 280 SoftKeyTemplateResMessage = 0x0108, 281 SoftKeySetResMessage = 0x0109, 282 283 SelectSoftKeysMessage = 0x0110, 284 CallStateMessage = 0x0111, 285 DisplayPromptStatusMessage = 0x0112, 286 ClearPromptStatusMessage = 0x0113, 287 DisplayNotifyMessage = 0x0114, 288 ClearNotifyMessage = 0x0115, 289 ActivateCallPlaneMessage = 0x0116, 290 DeactivateCallPlaneMessage = 0x0117, 291 UnregisterAckMessage = 0x0118, 292 BackSpaceResMessage = 0x0119, 293 RegisterTokenAck = 0x011A, 294 RegisterTokenReject = 0x011B, 295 StartMediaFailureDetection = 0x011C, 296 DialedNumberMessage = 0x011D, 297 DialedNumberMessageV19 = 0x011D, 298 UserToDeviceDataMessage = 0x011E, 299 FeatureStatMessage = 0x011F, 300 DisplayPriNotifyMessage = 0x0120, 301 ClearPriNotifyMessage = 0x0121, 302 StartAnnouncementMessage = 0x0122, 303 StopAnnouncementMessage = 0x0123, 304 AnnouncementFinishMessage = 0x0124, 305 306 NotifyDtmfToneMessage = 0x0127, 307 SendDtmfToneMessage = 0x0128, 308 SubscribeDtmfPayloadReqMessage = 0x0129, 309 SubscribeDtmfPayloadResMessage = 0x012A, 310 SubscribeDtmfPayloadErrMessage = 0x012B, 311 UnSubscribeDtmfPayloadReqMessage = 0x012C, 312 UnSubscribeDtmfPayloadResMessage = 0x012D, 313 UnSubscribeDtmfPayloadErrMessage = 0x012E, 314 ServiceURLStatMessage = 0x012F, 315 CallSelectStatMessage = 0x0130, 316 OpenMultiMediaChannelMessage = 0x0131, 317 OpenMultiMediaChannelMessageNew = 0x0131, 318 StartMultiMediaTransmission = 0x0132, 319 StopMultiMediaTransmission = 0x0133, 320 MiscellaneousCommandMessage = 0x0134, 321 FlowControlCommandMessage = 0x0135, 322 CloseMultiMediaReceiveChannel = 0x0136, 323 CreateConferenceReqMessage = 0x0137, 324 DeleteConferenceReqMessage = 0x0138, 325 ModifyConferenceReqMessage = 0x0139, 326 AddParticipantReqMessage = 0x013A, 327 DropParticipantReqMessage = 0x013B, 328 AuditConferenceReqMessage = 0x013C, 329 AuditParticipantReqMessage = 0x013D, 330 UserToDeviceDataVersion1Message = 0x013F, 331 332 /* sent by us */ 333 VideoDisplayCommandMessage = 0x0140, 334 FlowControlNotifyMessage = 0x0141, /*new name (2013-12-9)*/ 335 ConfigStatDynamicMessage = 0x0142, /*new (2013-12-9)*/ 336 DisplayDynamicNotifyMessage = 0x0143, 337 DisplayDynamicPriNotifyMessage = 0x0144, 338 DisplayDynamicPromptStatusMessage = 0x0145, 339 FeatureStatDynamicMessage = 0x0146, 340 LineStatDynamicMessage = 0x0147, 341 ServiceURLStatDynamicMessage = 0x0148, 342 SpeedDialStatDynamicMessage = 0x0149, 343 CallInfoDynamicMessage = 0x014A, 344 345 PortRequestMessage = 0x014B, /*new (2013-12-9)*/ 346 PortCloseMessage = 0x014C, /*new (2013-12-9)*/ 347 QoSListenMessage = 0x014D, /*new (2013-12-9)*/ 348 QoSPathMessage = 0x014E, /*new (2013-12-9)*/ 349 QoSTeardownMessage = 0x014F, /*new (2013-12-9)*/ 350 UpdateDSCPMessage = 0x0150, /*new (2013-12-9)*/ 351 QoSModifyMessage = 0x0151, /*new (2013-12-9)*/ 352 353 /* received from phone */ 354 SubscriptionStatMessage = 0x0152, /* Subscription Stat Message */ 355 NotificationMessage = 0x0153, /* Notification Message / CallListStateUpdate*/ 356 StartMediaTransmissionAck = 0x0154, 357 StartMultiMediaTransmissionAck = 0x0155, 358 CallHistoryDispositionMessage = 0x0156, 359 LocationInfoMessage = 0x0157, /* new (2015-09-08), send by 7925/7926 using firmware version 1.4.7.3 */ 360 361 MwiResponseMessage = 0x0158, /*new (2013-12-9)*/ 362 ExtensionDeviceCaps = 0x0159, 363 XMLAlarmMessage = 0x015A, 364 CallCountReqMessage = 0x015E, 365 /*new name (2013-12-9)*/ /*!< @see https://sourceforge.net/p/chan-sccp-b/bugs/173/ */ 366 CallCountRespMessage = 0x015F, /*new (2013-12-9)*/ 367 RecordingStatusMessage = 0x0160, /*new (2013-12-9)*/ 368 369 #define SCCP_MESSAGE_HIGH_BOUNDARY RecordingStatusMessage /*0x0160*/ 370 #define SPCP_MESSAGE_OFFSET SPCP_MESSAGE_LOW_BOUNDARY 371 #define SPCP_MESSAGE_LOW_BOUNDARY SPCPRegisterTokenRequest /*0x8000*/ 372 /* SPCP client -> server; */ 373 SPCPRegisterTokenRequest = 0x8000, 374 /* SPCP server -> client */ 375 SPCPRegisterTokenAck = 0x8100, 376 SPCPRegisterTokenReject = 0x8101, 377 378 //UnknownVGMessage = 0xFF00, /* Unknown Message (VG224). Reported by Ahmet Zaim */ 379 //#define SPCP_MESSAGE_HIGH_BOUNDARY UnknownVGMessage /*0xFF00*/ 380 #define SPCP_MESSAGE_HIGH_BOUNDARY SPCPRegisterTokenReject 381 /* 382 SPCPPlatformInfoGetReq = 0xFF02, 383 SPCPPlatformInfoGetRsp = 0xFF03, 384 SPCPPlatformInfoGetRej = 0xFF04, 385 */ 386 /* *INDENT-ON* */ 387 } sccp_mid_t; /*!< SKINNY Message ID Enum */ 388 389 390 /*=====================================================================================================*/ 391 392 typedef struct 393 { 394 skinny_ipAddr_t lel_ipAddrType; 395 uint8_t stationIpAddr[16]; 396 } skinny_ipAddress_t; 397 398 /*! 399 * \brief SKINNY Station Identifier Structure 400 */ 401 typedef struct { 402 char deviceName[StationMaxDeviceNameSize]; /*!< Device name */ 403 uint32_t lel_userid; /*!< User ID */ 404 uint32_t lel_instance; /*!< Instance */ 405 } StationIdentifier; /*!< SKINNY Station Identifier Structure */ 406 407 typedef struct { 408 uint8_t protocolVersion; 409 uint8_t phoneFeatures[3]; 410 } StationProtocolFeatures_t; 411 /*! 412 * \brief SKINNY Station Button Definition Structure 413 */ 414 typedef struct { 415 uint8_t instanceNumber; /*!< set to instance number or StationKeyPadButton value */ 416 uint8_t buttonDefinition; /*!< set to one of the preceding Bt values */ 417 } StationButtonDefinition; /*!< SKINNY Station Button Definition Structure */ 418 419 typedef struct { 420 uint8_t key[16]; 421 uint8_t salt[16]; 422 } EncryptionKey; 423 424 typedef struct { 425 skinny_encryptionMethod_t algorithm; 426 uint16_t keylen; 427 uint16_t saltlen; 428 EncryptionKey keyData; 429 uint32_t isMKIPresent; 430 uint32_t keyDerivationRate; 431 } EncryptionInfo; 432 433 /*! 434 * \brief SKINNY Media Payload Capability Structure 435 */ 436 typedef struct { 437 skinny_codec_t lel_payloadCapability; /*!< Payload Capability (Codec Used) */ 438 uint32_t lel_maxFramesPerPacket; /*!< Maximum Number of Frames per IP Packet / Number of milliseconds of audio per RTP Packet */ 439 union { 440 uint8_t futureUse[8]; 441 uint8_t lel_g723BitRate; /*!< g723 Bit Rate (1=5.3 Kbps, 2=6.4 Kbps) */ 442 } PAYLOADS; /*!< SKINNY Media Payload Capability Payloads Union */ 443 } MediaCapabilityStructure; /*!< SKINNY Media Payload Capability Structure */ 444 445 /*! 446 * \brief SKINNY Station Soft Key Definition Structure 447 */ 448 typedef struct { 449 char softKeyLabel[StationMaxSoftKeyLabelSize]; /*!< Soft Key Label */ 450 uint32_t lel_softKeyEvent; /*!< Soft Key Event */ 451 } StationSoftKeyDefinition; /*!< SKINNY Station Soft Key Definition Structure */ 452 453 /*! 454 * \brief SKINNY Station Soft Key Set Definition Structure 455 */ 456 typedef struct { 457 uint8_t softKeyTemplateIndex[StationMaxSoftKeyIndex]; /*!< Soft Key Template Index */ 458 uint16_t les_softKeyInfoIndex[StationMaxSoftKeyIndex]; /*!< Soft Key Info Index */ 459 } StationSoftKeySetDefinition; /*!< SKINNY Station Soft Key Set Definition Structure */ 460 461 /*! 462 * \brief SKINNY Server Identifier Structure 463 */ 464 typedef struct { 465 char serverName[ServerMaxNameSize]; /*!< Server Name */ 466 } ServerIdentifier; /*!< SKINNY Server Identifier Structure */ 467 468 /*! 469 * \brief SKINNY Layout Config Structure 470 * \note Part of Update Capabilities Message Struct 471 * \since 20080111 472 */ 473 typedef struct { 474 uint32_t layout; /*!< Layout */ 475 } layoutConfig_t; /*!< SKINNY Layout Config Structure */ 476 477 /*! 478 * \brief SKINNY Video Level Preference Structure 479 */ 480 typedef struct { 481 uint32_t lel_transmitPreference; /*!< Transmit Preference */ 482 uint32_t lel_format; /*!< Format / Codec */ 483 uint32_t lel_maxBitRate; /*!< Maximum BitRate */ 484 uint32_t lel_minBitRate; /*!< Minimum BitRate */ 485 uint32_t lel_MPI; /*!< */ 486 uint32_t lel_serviceNumber; /*!< Service Number */ 487 } levelPreference_t; /*!< SKINNY Level Preference Structure */ 488 489 /*! 490 * \brief SKINNY Service Resource Structure 491 */ 492 typedef struct { 493 uint32_t layoutCount; /*!< Layout Count */ 494 layoutConfig_t layout[MAX_LAYOUT_WITH_SAME_SERVICE]; /*!< Layout */ 495 uint32_t serviceNum; /*!< Service Number */ 496 uint32_t maxStreams; /*!< Maximum number of Streams */ 497 uint32_t maxConferences; /*!< Maximum number of Conferences */ 498 uint32_t activeConferenceOnRegistration; /*!< Active Conference On Registration */ 499 } serviceResource_t; /*!< SKINNY Service Resource Structure */ 500 501 /*! 502 * \brief SKINNY Conference Resource 503 */ 504 typedef struct { 505 uint32_t lel_activeStreamsOnRegistration; 506 uint32_t lel_maxBW; 507 uint32_t lel_serviceResourceCount; 508 serviceResource_t serviceResource[MAX_SERVICE_TYPE]; 509 } confResource_t ; 510 511 /*! 512 * \brief SKINNY Picture Format Structure 513 */ 514 typedef struct { 515 uint32_t lel_width; /*!< Picture Width */ 516 uint32_t lel_height; /*!< Picture Height */ 517 uint32_t lel_pixelAspectRatio; /*!< Picture Pixel Aspect Ratio */ 518 uint32_t lel_pixelclockConversionCode; /*!< Picture Pixel Conversion Code */ 519 uint32_t lel_pixelclockDivisor; /*!< Picture Pixel Divisor */ 520 } customPictureFormat_t; /*!< SKINNY Picture Format Structure */ 521 522 typedef struct 523 { 524 uint8_t codecMode; 525 uint8_t dynamicPayload; 526 uint8_t codecParam1; 527 uint8_t codecParam2; 528 } CodecParameters_t; 529 530 typedef union { 531 uint32_t lel_g723BitRate; /*!< G723 Bit Rate : Enum(5.3: 0x01, 6.3: 0x02) */ 532 struct { 533 uint32_t lel_capabilityAndVersion; 534 uint32_t lel_modulationAndModem2833Support; 535 } modemRelay; 536 struct { 537 uint16_t lel_chan0MaxPayload; 538 uint16_t lel_chan2MaxPayload; 539 uint16_t lel_chan3MaxPayload; 540 uint16_t lel_chan2MaxWindow; 541 } sprtPayload; 542 struct { 543 uint32_t lel_standardSupportField; 544 uint32_t lel_vendorSupportField; 545 } SupportEntry; 546 CodecParameters_t codecParams; 547 } payload_t; 548 549 /*! 550 * \brief SKINNY Audio Capabilities Structure 551 */ 552 typedef struct { 553 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 554 uint32_t lel_maxFramesPerPacket; /*!< Maximum Number of Frames per IP Packet */ 555 payload_t payloads; 556 } audioCap_t; /*!< SKINNY Audio Capabilities Structure */ 557 558 /*! 559 * \brief SKINNY Audio Parameters Structure 560 */ 561 typedef struct { 562 uint32_t millisecondPacketSize; /*!< Packet Size per Milli Second */ 563 uint32_t lel_echoCancelType; /*!< Echo Cancelation Type */ 564 uint32_t lel_g723BitRate; /*!< only used with G.723 payload */ 565 } audioParameter_t; /*!< SKINNY Audio Parameters Structure */ 566 567 /*! 568 * \brief SKINNY Picture Format Structure 569 */ 570 typedef struct { 571 uint32_t format; /*!< Picture Format */ 572 uint32_t mpi; /*!< MPI */ 573 } pictureFormat_t; /*!< SKINNY Picture Format Structure */ 574 575 /*! 576 * \brief SKINNY H261 Video Capability Structure 577 */ 578 typedef struct { 579 uint32_t lel_temporalSpatialTradeOffCapability; /*!< Temporal Spatial Trade Off Capability */ 580 uint32_t lel_stillImageTransmission; /*!< Still Image Transmission */ 581 } h261_VideoCapability_t; /*!< SKINNY H261 Video Capability Structure */ 582 583 /*! 584 * \brief SKINNY H263 Video Capability Structure 585 */ 586 typedef struct { 587 uint32_t lel_capabilityBitfield; /*!< H263 Capability Bit-Field */ 588 uint32_t lel_annexNandWFutureUse; /*!< Annex Nandw for Future Use */ 589 } h263_VideoCapability_t; /*!< SKINNY H262 Video Capability Structure */ 590 591 /*! 592 * \brief SKINNY vieo / h263P Video Capability Structure 593 */ 594 typedef struct { 595 uint32_t lel_modelNumber; /*!< Model Number */ 596 uint32_t lel_bandwidth; /*!< BandWidth */ 597 } h263P_VideoCapability_t; /*!< SKINNY vieo/h263P Video Capability Structure */ 598 599 /*! 600 * \brief SKINNY H264 Video Capability Structure 601 */ 602 typedef struct { 603 uint32_t lel_profile; /*!< H264 profile */ 604 uint32_t lel_level; /*!< H264 level */ 605 uint32_t lel_customMaxMBPS; /*!< max decoding speed (in macroblocks/s) */ 606 uint32_t lel_customMaxFS; /*!< max frame size (in macroblocks) */ 607 uint32_t lel_customMaxDPB; /*!< decoded picture buffering */ 608 uint32_t lel_customMaxBRandCPB; /*!< */ 609 } h264_VideoCapability_t; 610 611 typedef union { 612 h261_VideoCapability_t h261; 613 h263_VideoCapability_t h263; 614 h263P_VideoCapability_t h263P; /*!< Also known as Vieo */ 615 } videoCapabilityUnionV1_t; 616 617 /*! 618 * \brief SKINNY Video Capabilities Structure 619 */ 620 typedef struct { 621 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 622 uint32_t lel_transmitOrReceive; /*!< Transmit or Receive */ 623 //uint32_t lel_protocolDependentData; 624 //uint32_t lel_maxBitRate; 625 uint32_t lel_levelPreferenceCount; /*!< Level of Preference Count */ 626 levelPreference_t levelPreference[MAX_LEVEL_PREFERENCE]; /*!< Level Preference */ 627 videoCapabilityUnionV1_t capability; 628 } videoCapV1_t; /*!< SKINNY Video Capabilities Structure */ 629 630 typedef union { 631 h261_VideoCapability_t h261; 632 h263_VideoCapability_t h263; 633 h263P_VideoCapability_t h263P; /*!< Also known as Vieo */ 634 h264_VideoCapability_t h264; 635 } videoCapabilityUnionV2_t; 636 /*! 637 * \brief SKINNY Video Capabilities Structure 638 */ 639 typedef struct { 640 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 641 uint32_t lel_transmitOrReceive; /*!< Transmit or Receive */ 642 uint32_t lel_levelPreferenceCount; /*!< Level of Preference Count */ 643 644 levelPreference_t levelPreference[MAX_LEVEL_PREFERENCE]; /*!< Level Preference */ 645 videoCapabilityUnionV2_t capability; 646 } videoCapV2_t; /*!< SKINNY Video Capabilities Structure */ 647 648 649 /*! 650 * \brief SKINNY Video Capabilities Structure 651 */ 652 typedef struct { 653 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 654 uint32_t lel_transmitOrReceive; /*!< Transmit or Receive */ 655 uint32_t lel_levelPreferenceCount; /*!< Level of Preference Count */ 656 657 levelPreference_t levelPreference[MAX_LEVEL_PREFERENCE]; /*!< Level Preference */ 658 uint32_t lel_encryptionCapability; /*!< Encryption Capability. ENUM(NotEncrCapable:0x00, EncrCapable: 0x01) */ 659 videoCapabilityUnionV2_t capability; 660 uint32_t lel_ipv46; /*!< Enum ModeIPv4: 0x00 / ModeIPv6: 0x01 / Both: 0x02 */ 661 } videoCapV3_t; /*!< SKINNY Video Capabilities Structure */ 662 663 /*! 664 * \brief SKINNY Data Capabilities Structure V1 665 */ 666 typedef struct { 667 uint32_t lel_payloadCapability; /*!< Payload Capability */ 668 uint32_t lel_transmitOrReceive; /*!< Transmit or Receive */ 669 uint32_t lel_protocolDependentData; /*!< Protocol Dependent Data */ 670 uint32_t lel_maxBitRate; /*!< Maximum BitRate */ 671 } dataCapV1_t; /*!< SKINNY Data Capabilities Structure */ 672 673 /*! 674 * \brief SKINNY Data Capabilities Structure V2 675 */ 676 typedef struct { 677 uint32_t lel_payloadCapability; /*!< Payload Capability */ 678 uint32_t lel_transmitOrReceive; /*!< Transmit or Receive */ 679 uint32_t lel_protocolDependentData; /*!< Protocol Dependent Data */ 680 uint32_t lel_maxBitRate; /*!< Maximum BitRate */ 681 uint32_t lel_encryptionCapability; /*!< Encryption Capability. ENUM(NotEncrCapable:0x00, EncrCapable: 0x01) */ 682 } dataCapV2_t; /*!< SKINNY Data Capabilities Structure */ 683 684 /*! 685 * \brief SKINNY Data Parameter Structure 686 */ 687 typedef struct { 688 uint32_t lel_protocolDependentData; /*!< Protocol Dependent Data */ 689 uint32_t lel_maxBitRate; /*!< Maximum BitRate */ 690 } dataParameter_t; /*!< SKINNY Data Parameter Structure */ 691 692 /*! 693 * \brief SKINNY Video Parameter Structure 694 * \since 20110718 695 */ 696 typedef struct { 697 uint32_t bitRate; /*!< BitRate (default 384) */ 698 uint32_t pictureFormatCount; /*!< Picture Format Count (default 0) */ 699 pictureFormat_t pictureFormat[5]; /*!< Picture Format Array */ 700 uint32_t confServiceNum; /*!< Conf Service Number */ 701 uint32_t profile; 702 uint32_t level; 703 uint32_t macroblockspersec; 704 uint32_t macroblocksperframe; 705 uint32_t decpicbuf; 706 uint32_t brandcpb; 707 uint16_t dummy1; 708 uint16_t dummy2; 709 uint32_t dummy3; 710 uint32_t dummy4; 711 uint32_t dummy5; 712 uint32_t dummy6; 713 uint32_t dummy7; 714 uint32_t dummy8; 715 } videoParameter_t; /*!< SKINNY Video Parameter Structure */ 716 717 /*! 718 * \brief SKINNY AnnouncementList Structure 719 */ 720 typedef struct { 721 uint32_t lel_local; 722 uint32_t lel_country; 723 uint32_t lel_deviceTone; 724 } skinny_announcementList_t; /*!< SKINNY AnnouncementList Structure */ 725 726 typedef struct { 727 uint32_t lel_active; 728 struct { 729 uint32_t lel_capsAndVersion; 730 uint32_t lel_2833Support; 731 } modemRelay; 732 struct { 733 uint16_t lel_chan0MaxPayload; 734 uint16_t lel_chan2MaxPayload; 735 uint16_t lel_chan3MaxPayload; 736 uint16_t lel_chan2MaxWindow; 737 } sptrPayload; 738 struct { 739 uint32_t lel_standardSupportField; 740 uint32_t lel_vendorSupportField; 741 } sse; 742 struct { 743 uint8_t nse; 744 uint8_t rfc2833; 745 uint8_t sse; 746 uint8_t v150sptr; 747 uint8_t noaudio; 748 uint8_t FutureUse1; 749 uint8_t FutureUse2; 750 uint8_t FutureUse3; 751 } dynamicPayload; 752 } skinny_latentCapsInfo_t; 753 754 755 /* 756 ======================================== 757 Begin OpenMultiMediaChannelMessageNew 758 ---------------------------------------- 759 */ 760 typedef struct 761 { 762 skinny_echoCancellaton_t ecValue; 763 union { 764 skinny_g723BitRate_t g723BitRate; 765 CodecParameters_t codecParams; 766 } codecParamsUnion; 767 } skinny_MediaQualifierIncoming_t; 768 769 typedef struct 770 { 771 uint32_t lel_millisecondPacketSize; 772 skinny_MediaQualifierIncoming_t qualifierIn; 773 } skinny_MediaAudioIncomingParameters_t; 774 775 typedef union 776 { 777 h261_VideoCapability_t h261; 778 h263_VideoCapability_t h263; 779 h263P_VideoCapability_t h263P; 780 h264_VideoCapability_t h264; 781 } skinny_ChannelVideoParametersUnion_t; 782 783 typedef struct 784 { 785 uint32_t lel_bitRate; 786 uint32_t lel_pictureFormatCount; 787 pictureFormat_t pictureFormat[5]; 788 uint32_t lel_confServiceNum; 789 skinny_ChannelVideoParametersUnion_t capability; 790 } skinny_ChannelVideoParameters_t; 791 792 typedef union 793 { 794 skinny_MediaAudioIncomingParameters_t audioParameters; 795 skinny_ChannelVideoParameters_t vidParameters; 796 dataParameter_t dataParameters; 797 } skinny_OpenMultiMediaReceiveChannelUnion_t; 798 799 typedef struct 800 { 801 uint32_t lel_payload_rfc_number; 802 uint32_t lel_payloadType; 803 } skinny_RTPPayloadType_t; 804 /* 805 ======================================== 806 End OpenMultiMediaChannelMessageNew 807 ---------------------------------------- 808 */ 809 810 /*! 811 * \brief SKINNY Protocol Message Data Union 812 */ 813 typedef union { 814 815 /* 0x0048 is phone call list update (comes from phone 7921 816 * phones when you press the dial button without a number. 817 * It looks like this: 818 * 819 * 00000000 - 00 00 00 00 01 00 00 00 4B 0D 00 00 34 30 30 30 ........K...4000 820 * 00000010 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 821 * 00000020 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 822 * 00000030 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 823 * 00000040 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 824 * 00000050 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 825 * 00000060 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 826 * 00000070 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 827 * 00000080 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 828 * 00000090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 829 * 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 830 * 000000B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 831 * 000000C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 832 * 000000D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 833 * 000000E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 834 * 000000F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 835 * 00000100 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 836 * First DWORD is Index shifted of 4 bits (i think the 4 bits param is something) 837 * Second DWORD is line instance related to the call 838 * Third DWORD is unknown, Next there is the phone number [260 bytes] 839 */ 840 struct { 841 uint32_t lel_transactionID; /*!< TransactionID */ /*Number Index (this must be shifted 4 bits right) */ 842 uint32_t lel_featureID; /*!< LineInstance / BLF: 0x0001 */ 843 uint32_t lel_timer; /*!< Timer */ 844 char subscriptionID[256]; /*!< SubscriptionID */ 845 } SubscriptionStatReqMessage; /*!< SubscriptionStatReqMessage Message Structure */ 846 847 struct { 848 uint32_t lel_transactionID; /*!< TransactionID */ /*!< Number Index (this must be shifted 4 bits right) */ 849 uint32_t lel_featureID; /*!< LineInstance / BLF: 0x00001 */ 850 uint32_t lel_timer; /*!< Timer */ 851 uint32_t lel_cause; /*!< Cause (Enum): OK: 0x00, RouteFail:0x01, AuthFail:0x02, Timeout:0x03, TrunkTerm:0x04, TrunkForbidden:0x05, Throttle:0x06 */ 852 } SubscriptionStatMessage; /*!< SubscriptionStatMessage */ 853 854 struct { 855 uint32_t lel_transactionID; /*!< TransactionID */ /*!< Number Index (this must be shifted 4 bits right) */ 856 uint32_t lel_featureID; /*!< LineInstance / BLF: 0x01*/ 857 uint32_t lel_status; /*!< Status */ 858 char text[100]; /*!< Text */ 859 } NotificationMessage; /*!< NotificationMessage / CallListStatusUpdate */ 860 861 struct { 862 uint32_t lel_appID; 863 uint32_t lel_lineInstance; 864 uint32_t lel_callReference; 865 uint32_t lel_transactionID; 866 uint32_t lel_dataLength; 867 char data[StationMaxXMLMessage]; 868 } UserToDeviceDataMessage; /*!< User to Device Message Structure */ 869 870 struct { 871 uint32_t lel_appID; 872 uint32_t lel_lineInstance; 873 uint32_t lel_callReference; 874 uint32_t lel_transactionID; 875 uint32_t lel_dataLength; 876 uint32_t lel_sequenceFlag; 877 uint32_t lel_displayPriority; 878 uint32_t lel_conferenceID; 879 uint32_t lel_appInstanceID; 880 uint32_t lel_routing; 881 //char data[StationMaxXMLMessage]; // dummy char for variable length message (Causes issues on 7960, needs further research) 882 char data[1]; // dummy char for variable length message (Revert) 883 } UserToDeviceDataVersion1Message; /*!< User to Device Version1 Message Structure */ 884 885 struct { 886 uint32_t lel_appID; 887 uint32_t lel_lineInstance; 888 uint32_t lel_callReference; 889 uint32_t lel_transactionID; 890 uint32_t lel_dataLength; 891 char data[StationMaxXMLMessage]; 892 } DeviceToUserDataMessage; /*!< Device to User Message Structure */ 893 894 struct { 895 uint32_t lel_appID; 896 uint32_t lel_lineInstance; 897 uint32_t lel_callReference; 898 uint32_t lel_transactionID; 899 uint32_t lel_dataLength; 900 char data[StationMaxXMLMessage]; 901 } DeviceToUserDataResponseMessage; /*!< Device to User Response Message Structure */ 902 903 struct { 904 uint32_t lel_appID; 905 uint32_t lel_lineInstance; 906 uint32_t lel_callReference; 907 uint32_t lel_transactionID; 908 uint32_t lel_dataLength; 909 uint32_t lel_sequenceFlag; 910 uint32_t lel_displayPriority; 911 uint32_t lel_conferenceID; 912 uint32_t lel_appInstanceID; 913 uint32_t lel_routing; 914 char data[StationMaxXMLMessage]; 915 } DeviceToUserDataVersion1Message; /*!< Device to User Version1 Message Structure */ 916 917 struct { 918 uint32_t lel_appID; 919 uint32_t lel_lineInstance; 920 uint32_t lel_callReference; 921 uint32_t lel_transactionID; 922 uint32_t lel_dataLength; 923 uint32_t lel_sequenceFlag; 924 uint32_t lel_displayPriority; 925 uint32_t lel_conferenceID; 926 uint32_t lel_appInstanceID; 927 uint32_t lel_routing; 928 char data[StationMaxXMLMessage]; 929 } DeviceToUserDataResponseVersion1Message; 930 931 /* 932 [Jan 6 17:05:50] WARNING[29993]: sccp_actions.c:59 sccp_handle_unknown_message: 933 Unhandled SCCP Message: 48 - UpdateCapabilitiesMessage with length 1844 934 935 This is from a 7970 with no video caps 936 00000000 - 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 937 00000010 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 938 00000020 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 939 00000030 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 940 00000040 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 941 00000050 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 942 00000060 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 943 00000070 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 944 00000080 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 945 00000090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 946 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 947 000000B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 948 000000C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 949 000000D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 950 000000E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 951 000000F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 952 00000100 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 953 00000110 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 954 00000120 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 955 00000130 - 00 00 00 00 00 00 00 00 19 00 00 00 28 00 00 00 ............(... 956 00000140 - 00 00 00 00 00 00 00 00 04 00 00 00 28 00 00 00 ............(... 957 00000150 - 00 00 00 00 00 00 00 00 02 00 00 00 28 00 00 00 ............(... 958 00000160 - 00 00 00 00 00 00 00 00 0F 00 00 00 3C 00 00 00 ............<... 959 00000170 - 00 00 00 00 00 00 00 00 10 00 00 00 3C 00 00 00 ............<... 960 00000180 - 00 00 00 00 00 00 00 00 0B 00 00 00 3C 00 00 00 ............<... 961 00000190 - 00 00 00 00 00 00 00 00 0C 00 00 00 3C 00 00 00 ............<... 962 000001A0 - 00 00 00 00 00 00 00 00 01 01 00 00 01 00 00 00 ................ 963 000001B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 964 000001C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 965 000001D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 966 000001E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 967 000001F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 968 00000200 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 969 00000210 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 970 00000220 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 971 00000230 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 972 00000240 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 973 00000250 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 974 00000260 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 975 00000270 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 976 00000280 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 977 00000290 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 978 000002A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 979 000002B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 980 000002C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 981 000002D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 982 000002E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 983 000002F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 984 00000300 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 985 00000310 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 986 00000320 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 987 00000330 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 988 00000340 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 989 00000350 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 990 00000360 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 991 00000370 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 992 00000380 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 993 00000390 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 994 000003A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 995 000003B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 996 000003C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 997 000003D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 998 000003E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 999 000003F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1000 00000400 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1001 00000410 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1002 00000420 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1003 00000430 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1004 00000440 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1005 00000450 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1006 00000460 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1007 00000470 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1008 00000480 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1009 00000490 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1010 000004A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1011 000004B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1012 000004C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1013 000004D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1014 000004E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1015 000004F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1016 00000500 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1017 00000510 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1018 00000520 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1019 00000530 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1020 00000540 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1021 00000550 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1022 00000560 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1023 00000570 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1024 00000580 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1025 00000590 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1026 000005A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1027 000005B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1028 000005C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1029 000005D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1030 000005E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1031 000005F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1032 00000600 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1033 00000610 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1034 00000620 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1035 00000630 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1036 00000640 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1037 00000650 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1038 00000660 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1039 00000670 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1040 00000680 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1041 00000690 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1042 000006A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1043 000006B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1044 000006C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1045 000006D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1046 000006E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1047 000006F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1048 00000700 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1049 00000710 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1050 00000720 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1051 00000730 - 00 00 00 00 .... 1052 1053 this is from a 7940 with Video Advantage on PC Port 1054 00000000 - 08 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ 1055 00000010 - 00 00 00 00 22 4B 01 00 0C CC CC CC 00 11 21 F1 ...."K.......... 1056 00000020 - 22 4B 00 74 AA AA 03 00 00 0C 20 00 02 B4 B8 67 "K.t...... ....g 1057 00000030 - 00 01 00 13 53 45 50 30 30 31 31 32 31 46 31 32 ....SEP001122334 1058 00000040 - 32 34 42 00 02 00 11 00 00 00 01 01 01 CC 00 04 455............. 1059 00000050 - 0A 0A 0A D2 00 03 00 0A 50 6F 72 74 20 31 00 04 ........Port 1.. 1060 00000060 - 00 08 00 00 00 90 00 05 00 10 50 30 30 33 30 38 ..........P00308 1061 00000070 - 30 30 31 30 30 30 00 06 00 17 43 69 73 63 6F 20 001000....Cisco 1062 00000080 - 49 50 20 50 68 6F 6E 65 20 37 39 34 00 00 00 00 IP Phone 794.... 1063 00000090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1064 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1065 000000B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1066 000000C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1067 000000D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1068 000000E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1069 000000F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1070 00000100 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1071 00000110 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1072 00000120 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1073 00000130 - 00 00 00 00 00 00 00 00 19 00 00 00 78 00 00 00 ............x... 1074 00000140 - 00 00 00 00 00 00 00 00 04 00 00 00 28 00 00 00 ............(... 1075 00000150 - 00 00 00 00 00 00 00 00 02 00 00 00 28 00 00 00 ............(... 1076 00000160 - 00 00 00 00 00 00 00 00 0F 00 00 00 3C 00 00 00 ............<... 1077 00000170 - 00 00 00 00 00 00 00 00 10 00 00 00 3C 00 00 00 ............<... 1078 00000180 - 00 00 00 00 00 00 00 00 0B 00 00 00 3C 00 00 00 ............<... 1079 00000190 - 00 00 00 00 00 00 00 00 0C 00 00 00 3C 00 00 00 ............<... 1080 000001A0 - 00 00 00 00 00 00 00 00 01 01 00 00 04 00 00 00 ................ 1081 000001B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1082 000001C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1083 000001D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1084 000001E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1085 000001F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1086 00000200 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1087 00000210 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1088 00000220 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1089 00000230 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1090 00000240 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1091 00000250 - 00 00 00 00 00 00 00 00 65 00 00 00 03 00 00 00 ........e....... 1092 00000260 - 02 00 00 00 32 00 00 00 02 00 00 00 98 3A 00 00 ....2........:.. 1093 00000270 - F4 01 00 00 01 00 00 00 00 00 00 00 33 00 00 00 ............3... 1094 00000280 - 03 00 00 00 98 3A 00 00 F4 01 00 00 01 00 00 00 .....:.......... 1095 00000290 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1096 000002A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1097 000002B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1098 000002C0 - 00 00 00 00 00 00 00 00 00 00 00 00 67 00 00 00 ............g... 1099 000002D0 - 03 00 00 00 01 00 00 00 34 00 00 00 03 00 00 00 ........4....... 1100 000002E0 - 98 3A 00 00 F4 01 00 00 01 00 00 00 00 00 00 00 .:.............. 1101 000002F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1102 00000300 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1103 00000310 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1104 00000320 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1105 00000330 - 00 00 00 00 00 00 00 00 40 00 00 00 32 00 00 00 ........@...2... 1106 00000340 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1107 00000350 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1108 00000360 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1109 00000370 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1110 00000380 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1111 00000390 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1112 000003A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1113 000003B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1114 000003C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1115 000003D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1116 000003E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1117 000003F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1118 00000400 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1119 00000410 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1120 00000420 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1121 00000430 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1122 00000440 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1123 00000450 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1124 00000460 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1125 00000470 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1126 00000480 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1127 00000490 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1128 000004A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1129 000004B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1130 000004C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1131 000004D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1132 000004E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1133 000004F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1134 00000500 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1135 00000510 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1136 00000520 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1137 00000530 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1138 00000540 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1139 00000550 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1140 00000560 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1141 00000570 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1142 00000580 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1143 00000590 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1144 000005A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1145 000005B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1146 000005C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1147 000005D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1148 000005E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1149 000005F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1150 00000600 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1151 00000610 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1152 00000620 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1153 00000630 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1154 00000640 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1155 00000650 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1156 00000660 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1157 00000670 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1158 00000680 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1159 00000690 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1160 000006A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1161 000006B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1162 000006C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1163 000006D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1164 000006E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1165 000006F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1166 00000700 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1167 00000710 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1168 00000720 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1169 00000730 - 00 00 00 00 .... 1170 1171 diff: 1172 > 00000000 - 08 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ 1173 > 00000010 - 00 00 00 00 22 4B 01 00 0C CC CC CC 00 11 21 F1 ...."K.......... 1174 > 00000020 - 22 4B 00 74 AA AA 03 00 00 0C 20 00 02 B4 B8 67 "K.t...... ....g 1175 > 00000030 - 00 01 00 13 53 45 50 30 30 31 31 32 31 46 31 32 ....SEP001122334 1176 > 00000040 - 32 34 42 00 02 00 11 00 00 00 01 01 01 CC 00 04 455............. 1177 > 00000050 - 0A 0A 0A D2 00 03 00 0A 50 6F 72 74 20 31 00 04 ........Port 1.. 1178 > 00000060 - 00 08 00 00 00 90 00 05 00 10 50 30 30 33 30 38 ..........P00308 1179 > 00000070 - 30 30 31 30 30 30 00 06 00 17 43 69 73 63 6F 20 001000....Cisco 1180 > 00000080 - 49 50 20 50 68 6F 6E 65 20 37 39 34 00 00 00 00 IP Phone 794.... 1181 > 00000130 - 00 00 00 00 00 00 00 00 19 00 00 00 78 00 00 00 ............x... 1182 > 000001A0 - 00 00 00 00 00 00 00 00 01 01 00 00 04 00 00 00 ................ 1183 > 00000250 - 00 00 00 00 00 00 00 00 65 00 00 00 03 00 00 00 ........e....... 1184 > 00000260 - 02 00 00 00 32 00 00 00 02 00 00 00 98 3A 00 00 ....2........:.. 1185 > 00000270 - F4 01 00 00 01 00 00 00 00 00 00 00 33 00 00 00 ............3... 1186 > 00000280 - 03 00 00 00 98 3A 00 00 F4 01 00 00 01 00 00 00 .....:.......... 1187 > 000002C0 - 00 00 00 00 00 00 00 00 00 00 00 00 67 00 00 00 ............g... 1188 > 000002D0 - 03 00 00 00 01 00 00 00 34 00 00 00 03 00 00 00 ........4....... 1189 > 000002E0 - 98 3A 00 00 F4 01 00 00 01 00 00 00 00 00 00 00 .:.............. 1190 > 00000330 - 00 00 00 00 00 00 00 00 40 00 00 00 32 00 00 00 ........@...2... 1191 */ 1192 /* 7960 with video advantage on PC Port*/ 1193 /* 1194 00000000 - 34 07 00 00 00 00 00 00 30 00 00 00 08 00 00 00 - 4.......0....... audioCapCount 1195 00000010 - 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ VideoCap, dataCap, RTPPayload, customPictureFormatCount 1196 00000020 - 00 00 01 00 0C CC CC CC 00 1B 54 CA 49 9B 00 7B - ..........T.I..{ 1197 00000030 - AA AA 03 00 00 0C 20 00 02 B4 85 F7 00 01 00 13 - ...... ......... 1198 00000040 - 53 45 50 30 30 31 42 35 34 43 41 34 39 39 42 00 - SEP001B54CA499B. 1199 00000050 - 02 00 11 00 00 00 01 01 01 CC 00 04 0A 0F 0F 8B - ................ 1200 00000060 - 00 03 00 0A 50 6F 72 74 20 31 00 04 00 08 00 00 - ....Port 1...... 1201 00000070 - 04 90 00 05 00 10 50 30 30 33 30 38 30 31 30 32 - ......P003080102 1202 00000080 - 30 30 00 06 00 17 43 69 73 63 6F 20 49 50 20 50 - 00....Cisco IP P 1203 00000090 - 68 6F 6E 65 20 37 39 36 00 00 00 00 00 00 00 00 - hone 796........ 1204 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1205 000000B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1206 000000C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1207 000000D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1208 000000E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1209 000000F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1210 00000100 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1211 00000110 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1212 00000120 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1213 00000130 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1214 00000140 - 00 00 00 00 19 00 00 00 78 00 00 00 00 00 00 00 - ........x....... 1215 00000150 - 00 00 00 00 04 00 00 00 28 00 00 00 00 00 00 00 - ........(....... 1216 00000160 - 00 00 00 00 02 00 00 00 28 00 00 00 00 00 00 00 - ........(....... 1217 00000170 - 00 00 00 00 0F 00 00 00 3C 00 00 00 00 00 00 00 - ........<....... 1218 00000180 - 00 00 00 00 10 00 00 00 3C 00 00 00 00 00 00 00 - ........<....... 1219 00000190 - 00 00 00 00 0B 00 00 00 3C 00 00 00 00 00 00 00 - ........<....... 1220 000001A0 - 00 00 00 00 0C 00 00 00 3C 00 00 00 00 00 00 00 - ........<....... 1221 000001B0 - 00 00 00 00 01 01 00 00 04 00 00 00 00 00 00 00 - ................ 1222 000001C0 - 00 00 00 00 00 00 00 00 00 00 00 00 2D 43 69 73 - ............-Cis 1223 000001D0 - 63 6F 49 50 50 68 6F 6E 65 53 44 4B 56 65 72 73 - coIPPhoneSDKVers 1224 000001E0 - 69 6F 6E 3A 20 34 2E 30 2E 31 0D 0A 78 2D 43 69 - ion: 4.0.1..x-Ci 1225 000001F0 - 73 63 6F 49 50 50 68 6F 6E 65 44 69 73 70 6C 61 - scoIPPhoneDispla 1226 00000200 - 79 3A 20 31 33 33 2C 36 35 2C 32 2C 47 0D 0A 0D - y: 133,65,2,G... 1227 00000210 - 0A 6F 6E 65 44 69 73 70 6C 61 79 3A 20 31 33 33 - .oneDisplay: 133 1228 00000220 - 2C 36 35 2C 32 2C 47 0D 0A 43 6F 6F 6B 69 65 3A - ,65,2,G..Cookie: 1229 00000230 - 20 50 48 50 53 45 53 53 49 44 3D 6D 30 70 34 65 - PHPSESSID=m0p4e 1230 00000240 - 72 66 6C 69 32 72 30 70 34 6A 71 76 64 69 31 72 - rfli2r0p4jqvdi1r 1231 00000250 - 6B 32 74 66 36 0D 0A 0D 0A 00 00 00 00 00 00 00 - k2tf6........... 1232 00000260 - 00 00 00 00 65 00 00 00 03 00 00 00 02 00 00 00 - ....e........... 1233 00000270 - 32 00 00 00 02 00 00 00 98 3A 00 00 F4 01 00 00 - 2........:...... 1234 00000280 - 01 00 00 00 00 00 00 00 33 00 00 00 03 00 00 00 - ........3....... 1235 00000290 - 98 3A 00 00 F4 01 00 00 01 00 00 00 00 00 00 00 - .:.............. 1236 000002A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1237 000002B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1238 000002C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1239 000002D0 - 00 00 00 00 00 00 00 00 67 00 00 00 03 00 00 00 - ........g....... 1240 000002E0 - 01 00 00 00 34 00 00 00 03 00 00 00 98 3A 00 00 - ....4........:.. 1241 000002F0 - F4 01 00 00 01 00 00 00 00 00 00 00 00 00 00 00 - ................ 1242 00000300 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1243 00000310 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1244 00000320 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1245 00000330 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1246 00000340 - 00 00 00 00 40 00 00 00 32 00 00 00 40 00 00 00 - ....@...2...@... 1247 00000350 - 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 2............... 1248 00000360 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1249 00000370 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1250 00000380 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1251 00000390 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1252 000003A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1253 000003B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1254 000003C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1255 000003D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1256 000003E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1257 000003F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1258 00000400 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1259 00000410 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1260 00000420 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1261 00000430 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1262 00000440 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1263 00000450 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1264 00000460 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1265 00000470 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1266 00000480 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1267 00000490 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1268 000004A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1269 000004B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1270 000004C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1271 000004D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1272 000004E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1273 000004F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1274 00000500 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1275 00000510 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1276 00000520 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1277 00000530 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1278 00000540 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1279 00000550 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1280 00000560 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1281 00000570 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1282 00000580 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1283 00000590 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1284 000005A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1285 000005B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1286 000005C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1287 000005D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1288 000005E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1289 000005F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1290 00000600 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1291 00000610 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1292 00000620 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1293 00000630 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1294 00000640 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1295 00000650 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1296 00000660 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1297 00000670 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1298 00000680 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1299 00000690 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1300 000006A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1301 000006B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1302 000006C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1303 000006D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1304 000006E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1305 000006F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1306 00000700 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1307 00000710 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1308 00000720 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1309 00000730 - 00 00 00 00 00 00 00 00 00 00 00 00 - ............ 1310 */ 1311 struct { 1312 union { 1313 struct { 1314 uint32_t lel_audioCapCount; /*!< Audio Capability Count */ 1315 uint32_t lel_videoCapCount; /*!< Video Capability Count */ 1316 uint32_t lel_dataCapCount; /*!< Data Capability Count */ 1317 uint32_t lel_RTPPayloadFormat; /*!< RTP Payload Format */ 1318 uint32_t lel_customPictureFormatCount; /*!< Custom Picture Format Count */ 1319 customPictureFormat_t customPictureFormat[MAX_CUSTOM_PICTURES]; /*!< Custom Picture Format */ 1320 confResource_t confResources; 1321 audioCap_t audioCaps[SKINNY_MAX_CAPABILITIES]; /*!< Audio Capabilities */ 1322 videoCapV1_t videoCaps[SKINNY_MAX_VIDEO_CAPABILITIES]; /*!< Video Capabilities */ 1323 dataCapV1_t dataCaps[SKINNY_MAX_DATA_CAPABILITIES]; /*!< Data Capabilities */ 1324 } v3; 1325 struct { 1326 uint32_t lel_audioCapCount; /*!< Audio Capability Count */ 1327 uint32_t lel_videoCapCount; /*!< Video Capability Count */ 1328 uint32_t lel_dataCapCount; /*!< Data Capability Count */ 1329 uint32_t lel_RTPPayloadFormat; /*!< RTP Payload Format */ 1330 uint32_t lel_customPictureFormatCount; /*!< Custom Picture Format Count */ 1331 customPictureFormat_t customPictureFormat[MAX_CUSTOM_PICTURES]; /*!< Custom Picture Format */ 1332 confResource_t confResources; 1333 audioCap_t audioCaps[SKINNY_MAX_CAPABILITIES]; /*!< Audio Capabilities */ 1334 videoCapV2_t videoCaps[SKINNY_MAX_VIDEO_CAPABILITIES]; /*!< Video Capabilities V2 */ 1335 dataCapV1_t dataCaps[SKINNY_MAX_DATA_CAPABILITIES]; /*!< Data Capabilities */ 1336 } v16; 1337 }; 1338 } UpdateCapabilitiesMessage; /*!< Update Capabilities Message Structure */ 1339 1340 struct { 1341 uint32_t lel_audioCapCount; /*!< Audio Capability Count */ 1342 uint32_t lel_videoCapCount; /*!< Video Capability Count */ 1343 uint32_t lel_dataCapCount; /*!< Data Capability Count */ 1344 uint32_t lel_RTPPayloadFormat; /*!< RTP Payload Format */ 1345 uint32_t lel_customPictureFormatCount; /*!< Custom Picture Format Count */ 1346 customPictureFormat_t customPictureFormat[MAX_CUSTOM_PICTURES]; /*!< Custom Picture Format */ 1347 confResource_t confResources; 1348 audioCap_t audioCaps[SKINNY_MAX_CAPABILITIES]; /*!< Audio Capabilities */ 1349 videoCapV2_t videoCaps[SKINNY_MAX_VIDEO_CAPABILITIES]; /*!< Video Capabilities V2 */ 1350 dataCapV1_t dataCaps[SKINNY_MAX_DATA_CAPABILITIES]; /*!< Data Capabilities */ 1351 } UpdateCapabilitiesV2Message; /*!< */ 1352 1353 struct { 1354 uint32_t lel_audioCapCount; /*!< Audio Capability Count */ 1355 uint32_t lel_videoCapCount; /*!< Video Capability Count */ 1356 uint32_t lel_dataCapCount; /*!< Data Capability Count */ 1357 uint32_t lel_RTPPayloadFormat; /*!< RTP Payload Format */ 1358 uint32_t lel_customPictureFormatCount; /*!< Custom Picture Format Count */ 1359 customPictureFormat_t customPictureFormat[MAX_CUSTOM_PICTURES]; /*!< Custom Picture Format */ 1360 confResource_t confResources; 1361 audioCap_t audioCaps[SKINNY_MAX_CAPABILITIES]; /*!< Audio Capabilities */ 1362 videoCapV3_t videoCaps[SKINNY_MAX_VIDEO_CAPABILITIES]; /*!< Video Capabilities V3 */ 1363 dataCapV2_t dataCaps[SKINNY_MAX_DATA_CAPABILITIES]; /*!< Data Capabilities */ 1364 uint32_t unknown[70]; /*!< Hmmm */ 1365 } UpdateCapabilitiesV3Message; /*!< @see https://sourceforge.net/p/chan-sccp-b/bugs/181 */ 1366 1367 /* AccessoryStatusMessage (0x0073): 1368 * This indicates the phone headset, handset or speaker status. 1369 * 1370 * FIRST DWORD: 0x0001 = HEADSET, 0x0002 = HANDSET, 0x0003 = SPEAKERMODE 1371 * SECOND DWORD: 0x0001 = OFFHOOK, 0x0002 = ONHOOK 1372 * THIRD DWORD: ALWAYS 0x0000 UNKNOWN 1373 */ 1374 struct { 1375 uint32_t lel_AccessoryID; /*!< Accessory ID (0x1=HeadSet, 0x2=HandSet, 0x3=Speaker) (MediaPathID) */ 1376 uint32_t lel_AccessoryStatus; /*!< Accessory Status (0x1=On, 0x2=Off) (MediaPathEvent) */ 1377 } AccessoryStatusMessage; /*!< Accessory Status Message Structure (MediaPathEventMessage) */ 1378 1379 // Message 0x4A len 12 (cisco ip communicator uses it) 1380 // 00000000 - 0C 00 00 00 16 00 00 00 4A 00 00 00 03 00 00 00 - ........J....... 1381 // 00000010 - 01 00 00 00 - .... 1382 struct { 1383 uint32_t lel_MediaPathID; /*!< mediaPathID (0x1=HeadSet, 0x2=HandSet, 0x3=Speaker) */ 1384 uint32_t lel_MediaPathCapabilities; /*!< mediaPathCapabilities (0x1=Enable, 0x2=Disable, 0x3=Monitor) */ 1385 } MediaPathCapabilityMessage; /*!< \todo MediaPath Capability Message Structure */ 1386 1387 struct { 1388 uint32_t lel_conferenceID; 1389 uint32_t lel_callReference; 1390 uint32_t lel_layout; /* index of layoutConfig_t */ 1391 } VideoDisplayCommandMessage; 1392 1393 struct { // INCOMPLETE 1394 uint32_t lel_conferenceID; /*!< Conference ID */ 1395 uint32_t lel_passThruPartyId; 1396 uint32_t lel_callReference; /*!< Call Reference */ 1397 uint32_t lel_maxBitRate; /*!< maxBitRate */ 1398 } FlowControlNotifyMessage; /*!< \todo FlowControlNotify Message Structure */ 1399 1400 struct { 1401 uint32_t lel_lineInstance; /*!< Instance */ 1402 uint32_t lel_buttonType; /*!< always 0x15 */ 1403 union { 1404 struct FeatureStateValue { 1405 uint8_t rythm; /*!< 0:off, 1:on, 2-7:different speeds */ 1406 uint8_t color; /*!< 0:off, 1:green, 2:red, 3:orange */ 1407 uint8_t icon; /*!< 0:open, 1:closed, 2:boxes */ 1408 uint8_t oldval; /*!< old implementation open/closed */ 1409 } strct; 1410 uint32_t lel_uint32; 1411 } stateVal; 1412 char textLabel[StationDynamicNameSize]; /*!< SpeedDial Display Name \todo shoud be dynamic - readMessage - OVERRUN remaining bytes=29 messageType=0x146 */ 1413 } FeatureStatDynamicMessage; /*!< Speed Dial Stat Dynamic Message Structure */ 1414 1415 struct { 1416 uint32_t lel_Number; 1417 char DirNumber[StationMaxDirnumSize]; 1418 char DisplayName[StationMaxNameSize]; 1419 } SpeedDialStatDynamicMessage; /*!< Speed Dial Stat Dynamic Message Structure */ 1420 1421 struct { 1422 uint32_t lel_conferenceID; 1423 uint32_t lel_serviceNum; 1424 } ClearConferenceMessage; 1425 1426 struct { 1427 uint32_t lel_lineNumber; /*!< Line Number */ 1428 uint32_t lel_lineType; /*!< Line Type: Bit-field: 1-Original Dialed 2-Redirected Dialed, 4-Calling line ID, 8-Calling name ID */ 1429 char dummy[1]; /*!< Dummy (25+141+141) + 3 terminators */ 1430 //char lineDirNumber[25]; 1431 //char lineFullyQualifiedDisplayName[40]; 1432 //char lineTextLabel[40]; 1433 //uint32_t lel_lineDisplayOptions; 1434 } LineStatDynamicMessage; /*!< Line Stat Dynmic Message Structure */ 1435 1436 struct { 1437 uint32_t lel_lineInstance; /*!< Line Instance */ 1438 uint32_t lel_callReference; /*!< Call Reference */ 1439 uint32_t lel_callType; /*!< Call Type (INBOUND=1, OUTBOUND=2, FORWARD=3) */ 1440 uint32_t lel_originalCdpnRedirectReason; /*!< Original CalledParty Redirect Reason */ 1441 uint32_t lel_lastRedirectingReason; /*!< Last Redirecting Reason (=1, =2, =3, FOR=4, PICKUP=5) */ 1442 uint32_t lel_callInstance; /*!< Call Instance */ 1443 uint32_t lel_callSecurityStatus; /*!< Call Security Status */ 1444 uint32_t partyPIRestrictionBits; /*!< Party PI Restriction Bits Structure 1445 0 RestrictCallingPartyName 1446 1 RestrictCallingPartyNumber 1447 2 RestrictCalledPartyName 1448 3 RestrictCalledPartyNumber 1449 4 RestrictOriginalCalledPartyName 1450 5 RestrictOriginalCalledPartyNumber 1451 6 RestrictLastRedirectPartyName 1452 7 RestrictLastRedirectPartyNumber */ 1453 uint32_t dummy[1]; /*!< Dummy */ 1454 /* Dummy: Consists of: // v3 - >v18 1455 char callingParty[StationDynamicDirnumSize]; // 24 - 25 1456 char calledParty[StationDynamicDirnumSize]; // 24 - 25 1457 char originalCalledParty[StationDynamicDirnumSize]; // 24 - 25 1458 char lastRedirectingParty[StationDynamicDirnumSize]; // 24 - 25 1459 char cgpnVoiceMailbox[StationDynamicDirnumSize]; // 24 - 25 1460 char cdpnVoiceMailbox[StationDynamicDirnumSize]; // 24 - 25 1461 char originalCdpnVoiceMailbox[StationDynamicDirnumSize]; // 24 - 25 1462 char lastRedirectingVoiceMailbox[StationDynamicDirnumSize]; // 24 - 25 1463 char callingPartyName[StationDynamicNameSize]; // 40 - 121 1464 char calledPartyName[StationDynamicNameSize]; // 40 - 121 1465 char originalCalledPartyName[StationDynamicNameSize]; // 40 - 121 1466 char lastRedirectingPartyName[StationDynamicNameSize]; // 40 - 121 1467 char HuntPilotNumber[StationDynamicDirnumSize]; // 24 - 25 1468 char HuntPilotName[StationDynamicNameSize]; // 40 - 121 1469 */ 1470 1471 /* V2 (XML) 1472 char callingParty[25]; 1473 char AlternateCallingParty[25]; 1474 char calledParty[25]; 1475 char originalCalledParty[25]; 1476 char lastRedirectingParty[25]; 1477 char cgpnVoiceMailbox[25]; 1478 char cdpnVoiceMailbox[25]; 1479 char originalCdpnVoiceMailbox[25]; 1480 char lastRedirectingVoiceMailbox[25]; 1481 char callingPartyName[121]; 1482 char calledPartyName[121]; 1483 char originalCalledPartyName[121]; 1484 char lastRedirectingPartyName[121]; 1485 char HuntPilotNumber[25]; 1486 char HuntPilotName[121]; 1487 */ 1488 } CallInfoDynamicMessage; /*!< Call Information Dynamic Message Structure */ 1489 1490 struct { 1491 union { 1492 /* this is from a 7941 1493 Unhandled SCCP Message: unknown(0x0154) 44 bytes length 1494 00000000 - 03 00 00 00 FC FF FF FF 03 00 00 00 00 00 00 00 ................ 1495 00000010 - C0 A8 09 24 00 00 00 00 00 00 00 00 00 00 00 00 ...$............ 1496 00000020 - 00 00 00 00 03 00 00 00 00 00 00 00 ............ 1497 */ 1498 struct { 1499 uint32_t lel_callReference; /*!< Call Reference */ 1500 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 1501 uint32_t lel_callReference1; /*!< Call Reference1 */ 1502 uint32_t bel_ipAddr; /*!< Ip Address Array (This field is apparently in big-endian format, even though most other fields are in little-endian format.) */ 1503 uint32_t lel_portNumber; /*!< Port Number */ 1504 skinny_mediastatus_t lel_mediastatus; /*!< Start Media Transmission Status */ 1505 } v3; 1506 1507 /* this is from a 6911 1508 StartMediaTransmissionAck_v17(0x0154) 1509 0040 26 00 00 00 11 00 00 00 54 01 00 00 00 00 00 00 ...... ..T..... ; lel_reserved = 17 (11), message_id 0x154, callreference = 0 1510 0050 00 00 00 00 15 00 00 00 00 00 00 00 c0 a8 11 7b ...... .......{ ; passthrupartyid=0, callreference1=21 (15), unknown=0, [ip-address=c0a8117b 1511 0060 00 00 00 00 00 00 00 00 00 00 00 00 98 2b 00 00 ...... .......+ ; portnumber=982b0000 1512 0070 00 00 00 00 ...... ; smtStatus=0 1513 */ 1514 struct { 1515 uint32_t lel_callReference; /*!< Call Reference */ 1516 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 1517 uint32_t lel_callReference1; /*!< Call Reference 1 */ 1518 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 1519 char bel_ipAddr[16]; /*!< This field is apparently in big-endian format, even though most other fields are in little-endian format. */ 1520 uint32_t lel_portNumber; /*!< Port Number */ 1521 skinny_mediastatus_t lel_mediastatus; /*!< startmediatransmission status */ 1522 } v17; 1523 1524 /* this is from a 6901 during transfer (notice missing passThruPartyId) 1525 StartMediaTransmissionAck_v20(0x0154) 1526 0000 - 34 00 00 00 14 00 00 00 54 01 00 00 00 00 00 00 - 4.......T....... ; Call Reference(EMPTY) 1527 0010 - 00 00 00 00 12 00 00 00 00 00 00 00 0A 01 02 2C - ..............., ; Pass Through Party ID = EMPTY, CallReference1 (18), ipb46(0), [Ip-Address 1528 0020 - 00 00 00 00 00 00 00 00 00 00 00 00 F4 2F 00 00 - ............./.. ; ....] PortNumber 1529 0030 - 00 00 00 00 00 00 00 00 00 00 00 00 - ............ ; mediaStatus, Unkown, Unknown 1530 */ 1531 }; 1532 } StartMediaTransmissionAck; /*!< Start Media Transmission Acknowledgement Structure */ 1533 1534 // No struct 1535 1536 struct { 1537 uint8_t dummy; 1538 } StationKeepAliveMessage; /*!< Station Keep Alive Message */ 1539 1540 /* this is register message from 7940 with load 8.1.1 (protocol 0) 1541 * 00000010 - 00 00 00 00 01 00 00 00 0A 0A 0A D2 07 00 00 00 ................ 1542 * 00000020 - 00 00 00 00 00 00 00 00 0B 00 60 85 00 00 00 00 ................ 1543 * 00000030 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1544 * 00000040 - 00 00 00 00 .... 1545 */ 1546 1547 /* this is register message from 7936 with load (protocol 0) 1548 * 00000000 - 30 00 00 00 00 00 00 00 01 00 00 00 53 45 50 30 0...........SEP0 1549 * 00000010 - 30 30 34 46 32 45 32 34 30 41 33 00 00 00 00 00 004F2E240A3..... 1550 * 00000020 - 01 00 00 00 c0 a8 04 c8 43 75 00 00 00 00 00 00 ........Cu...... 1551 * 00000030 - 00 00 00 01 04 00 00 00 ........ 1552 */ 1553 1554 /* Register message from Cisco 7941 with load v8.5.3 (protocol 17) 1555 * 1556 * 00000000 53 45 50 30 30 31 46 39 45 32 36 36 33 36 39 00 SEP001F9E266369. 1557 * 00000010 00 00 00 00 00 00 00 00 c0 a8 09 24 73 00 00 00 ...........$s... 1558 * 00000020 05 00 00 00 00 00 00 00 11 00 72 85 01 00 00 00 ..........r..... 1559 * 00000030 00 00 00 00 00 1f 9e 26 63 69 00 00 00 00 00 00 .......&ci...... 1560 * 00000040 03 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ 1561 * 00000050 00 00 00 00 00 00 00 00 00 00 00 00 53 43 43 50 ............SCCP 1562 * 00000060 34 31 2e 38 2d 35 2d 33 53 00 00 00 00 00 00 00 41.8-5-3S....... 1563 * 00000070 00 00 00 00 00 00 00 00 00 00 00 00 ............ 1564 */ 1565 1566 /* Register message from Cisco 6961 with load v8.5.3 (protocol 15) 1567 * 00000000 - 53 45 50 30 30 31 31 32 31 46 46 38 41 33 45 00 SEP001121FF8A3 1568 * 00000010 - 00 00 00 00 01 00 00 00 53 DA 5E 14 F1 01 00 00 ........S.^... 1569 * 00000020 - 28 00 00 00 00 00 00 00 0F 20 70 85 00 00 00 00 (........ p... 1570 * 00000030 - 00 00 00 00 30 30 31 31 32 31 46 46 38 41 33 45 ....001121FF8A 1571 * 00000040 - 00 00 00 00 1572 */ 1573 1574 /* Register message from Cisco 7960 with v8.1.2 (protocol 11) 1575 * 00000000 - 53 45 50 30 30 31 42 35 33 35 43 44 33 44 36 00 SEP001B535CD3D6. 1576 * 00000010 - 00 00 00 00 01 00 00 00 0A 0F 0F B2 07 00 00 00 ................ 1577 * 00000020 - 00 00 00 00 00 00 00 00 0B 00 60 85 00 00 00 00 ................ 1578 * 00000030 - 00 00 00 00 00 00 00 00 00 00 00 00 52 49 4E 47 ............RING 1579 * 00000040 - 00 00 00 00 .... 1580 */ 1581 struct { 1582 StationIdentifier sId; /*!< Station Identifier */ 1583 uint32_t stationIpAddr; /*c0:a8:09:24=192.168.9.36 *//*!< Station IP Address */ 1584 skinny_devicetype_t lel_deviceType; /*73:00:00:00=115 *//*!< Device Type as part of SKINNY_DEVICETYPE_* */ 1585 uint32_t lel_maxStreams; /*05:00:00:00=5 *//*!< Max Streams */ 1586 uint32_t lel_activeStreams; /*00:00:00:00=0 *//*!< number of active streams */ 1587 StationProtocolFeatures_t protocolFeatures; 1588 uint32_t lel_maxConferences; 1589 uint32_t lel_activeConferences; /*00:00:00:00 *//*!< Unknown */ 1590 uint8_t macAddress[12]; /* *//*!< byte array */ 1591 uint32_t lel_ipV4AddressScope; 1592 uint32_t lel_maxNumberOfLines; 1593 char ipv6Address[16]; 1594 uint32_t lel_ipV6AddressScope; 1595 char loadInfo[32]; 1596 char configVersionStamp[48]; /* New since 11.5 */ 1597 1598 /* 7910: 1599 02 00 00 00 // protocolVer (1st bit) 1600 08 00 00 00 == 8 1601 00 00 00 00 1602 02 00 00 00 == 2 1603 ce f1 00 00 // == (61092 / 206 / 241) 1668 dn-size 420 1604 */ 1605 } RegisterMessage; /*!< Register Message Structure */ 1606 1607 struct { 1608 // All char arrays are in multiples of 32bit 1609 struct { 1610 char deviceName[StationMaxDeviceNameSize]; /*!< Device Name */ 1611 uint32_t lel_stationUserId; /*!< Station User ID (Not In Use) */ 1612 uint32_t lel_stationInstance; /*!< Station Instance */ 1613 } station_identifier; /*!< Station Identifier */ 1614 char userName[StationMaxNameSize]; /*!< User Name */ 1615 char serverName[StationMaxNameSize]; /*!< Server Name */ 1616 uint32_t lel_numberLines; /*!< Number of Lines configured */ 1617 uint32_t lel_numberSpeedDials; /*!< Number of SpeedDials configured */ 1618 } ConfigStatMessage; /*!< Configuration Status Message - Server -> Client */ 1619 1620 struct { 1621 // All char arrays are in multiples of 32bit 1622 struct { 1623 char deviceName[StationMaxDeviceNameSize]; /*!< Device Name */ 1624 uint32_t lel_stationUserId; /*!< Station User ID (Not In Use) */ 1625 uint32_t lel_stationInstance; /*!< Station Instance */ 1626 } station_identifier; /*!< Station Identifier */ 1627 char userName[StationDynamicNameSize]; /*!< User Name */ 1628 char serverName[StationDynamicNameSize]; /*!< Server Name */ 1629 uint32_t lel_numberLines; /*!< Number of Lines configured */ 1630 uint32_t lel_numberSpeedDials; /*!< Number of SpeedDials configured */ 1631 } ConfigStatDynamicMessage; /*!< Configuration Status Message - Server -> Client */ 1632 1633 struct { 1634 uint32_t lel_rtpMediaPort; /*!< RTP Media Port */ 1635 } IpPortMessage; /*!< Ip Port Message - Superseded by including the IP Port info in the OpenReceiveChannelAck Message */ 1636 1637 /* 1638 struct { 1639 ' uint32_t lel_kpButton; //!< KeyPad Button 1640 union { 1641 struct { 1642 uint32_t lel_buttonIndex; //!< Button Indexn on device 1643 } v3; 1644 struct { 1645 uint32_t lel_lineInstance; //!< Line Instance on device 1646 uint32_t lel_callReference; //!< Call Reference - current channel identifier 1647 } v11; 1648 } 1649 uint32_t lel_unknown1; 1650 uint32_t lel_unknown2; 1651 } KeypadButtonMessage; //!< KeyPad Button Message - Client -> Server 1652 */ 1653 struct { 1654 uint32_t lel_kpButton; /*!< KeyPad Button */ 1655 uint32_t lel_lineInstance; /*!< Line Instance on device */ 1656 uint32_t lel_callReference; /*!< Call Reference - current channel identifier */ 1657 uint32_t lel_unknown1; 1658 uint32_t lel_unknown2; 1659 } KeypadButtonMessage; /*!< KeyPad Button Message - Client -> Server */ 1660 1661 /* 8945 v22 unpacked */ 1662 // 00000000 - 24 00 00 00 16 00 00 00 04 00 00 00 39 38 30 31 - $...........9801 1663 // 00000010 - 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 1............... 1664 // 00000020 - 00 00 00 00 00 00 00 00 01 00 00 00 - ............ 1665 1666 /* 7970 v22 packed*/ 1667 // 00000000 - 24 00 00 00 16 00 00 00 04 00 00 00 39 38 30 31 - $...........9801 1668 // 00000010 - 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 1............... 1669 // 00000020 - 00 00 00 00 00 01 00 00 00 00 00 00 - ............ 1670 1671 struct { 1672 union { 1673 struct { 1674 char calledParty[StationMaxDirnumSize]; /*!< Called Party */ 1675 } v3; 1676 struct { 1677 char calledParty[StationMaxDirnumSize]; /*!< Called Party */ 1678 uint32_t lel_lineInstance; 1679 } v17; 1680 /* 8945 */ 1681 struct { /* packing needed because of char[25] */ 1682 char calledParty[25]; /*!< Called Party */ 1683 uint32_t lel_lineInstance; 1684 } v18u; 1685 /* 7970 */ 1686 struct __attribute__ ((__packed__)) { /* packing needed because of char[25] */ 1687 char calledParty[25]; /*!< Called Party */ 1688 uint32_t lel_lineInstance; 1689 } v18p; 1690 }; 1691 } EnblocCallMessage; /*!< Enbloc Call Message - Client -> Server */ 1692 1693 struct { 1694 uint32_t lel_stimulus; /*!< Stimulus (ENUM: skinny_stimulus) */ 1695 uint32_t lel_stimulusInstance; /*!< Stimulus Instance (normally set to 1 (except speed dial and line)) */ 1696 uint32_t lel_callReference; /*!< Call Reference - current channel identifier */ 1697 uint32_t lel_stimulusStatus; /*!< Stimulus Status */ 1698 } StimulusMessage; /*!< Stimulus Message - Client -> Server */ 1699 1700 /* 1701 * 7960: 00000000 - 0C 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 - ................ 1702 * 00000010 - 00 00 00 00 - .... 1703 * 1704 * 7962: 00000000 - 0C 00 00 00 16 00 00 00 06 00 00 00 00 00 00 00 - ................ 1705 * 00000010 - 00 00 00 00 - .... 1706 */ 1707 struct { 1708 uint32_t lel_lineInstance; 1709 uint32_t lel_callReference; 1710 } OffHookMessage; /*!< Off Hook Message Structure */ 1711 1712 struct { 1713 char callingPartyNumber[StationMaxDirnumSize]; /*!< Calling Party Number */ 1714 } OffHookMessageWithCallingPartyMessage; /*!< Off Hook With Calling Party Number Message Structure 1715 Goes Off Hook and provides a Calling Party Number 1716 to the PBX used by multiline Devices */ 1717 /* 1718 * 7960: 00000000 - 0C 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 - ................ 1719 * 00000010 - 00 00 00 00 - .... 1720 * 1721 * 7962: 00000000 - 0C 00 00 00 16 00 00 00 07 00 00 00 00 00 00 00 - ................ 1722 * 00000010 - 00 00 00 00 - .... 1723 */ 1724 struct { 1725 uint32_t lel_buttonIndex; /*!< Button Index instead of lineInstance */ 1726 uint32_t lel_callReference; 1727 } OnHookMessage; /*!< On Hook Message Structure */ 1728 1729 struct { 1730 uint32_t lel_lineInstance; 1731 uint32_t lel_callReference; 1732 } HookFlashMessage; /*!< Hook Flash Message Structure */ 1733 1734 struct { 1735 skinny_devicetype_t lel_deviceType; /*!< Device Type as part of SKINNY_DEVICETYPE_* */ 1736 uint32_t lel_numberOfInServiceStreams; /*!< Number Of In-Service Streams */ 1737 uint32_t lel_maxStreamsPerConf; /*!< Maximum Streams Per Configuration */ 1738 uint32_t lel_numberOfOutOfServiceStreams; /*!< Number of Out-Of_Service Streams */ 1739 } MediaResourceNotification; /*!< Media Resource Notification - Client -> Server */ 1740 1741 struct { 1742 uint32_t lel_lineNumber; /*!< lineNumber for which Forward should be set */ 1743 } ForwardStatReqMessage; /*!< Forward Status Request Message - Client -> Server */ 1744 1745 struct { 1746 uint32_t lel_speedDialNumber; /*!< instance on device */ 1747 } SpeedDialStatReqMessage; /*!< Speed Dial Status Request Message - Client -> Server */ 1748 1749 struct { 1750 uint32_t lel_lineNumber; /*!< instance on device */ 1751 } LineStatReqMessage; /*!< Line Status Request Message - Client -> Server */ 1752 1753 struct { 1754 uint8_t dummy; 1755 } ConfigStatReqMessage; /*!< Configuration Status Request Message - Client -> Server */ 1756 1757 struct { 1758 uint8_t dummy; 1759 } TimeDateReqMessage; /*!< Time Date Request Message - Client -> Server */ 1760 1761 struct { 1762 uint32_t lel_totalButtonCount; /*!< number of available buttons */ 1763 } ButtonTemplateReqMessage; /*!< Button Template Request Message - Client -> Server */ 1764 1765 struct { 1766 uint8_t dummy; 1767 } VersionReqMessage; /*!< Version Request Message - Client -> Server */ 1768 1769 struct { 1770 uint32_t lel_count; /*!< Count */ 1771 MediaCapabilityStructure caps[SKINNY_MAX_CAPABILITIES]; /*!< MediaCapabilities */ 1772 } CapabilitiesResMessage; /*!< Capabilities Resource Message - Client -> Server */ 1773 1774 struct { 1775 uint32_t portCount; /*!< portCount contains the total number of RTP ports supported by the device. */ 1776 uint32_t rtpMediaPort[StationMaxPorts]; /*!< RtpMediaPort contains the list of RTP port numbers. */ 1777 } MediaPortListMessage; /*!< Media Port List Message Structure 1778 Used instead of the StationIpPort message for Devices which have multiple RTP stream ports. 1779 Devices like media bridges */ 1780 1781 struct { 1782 uint8_t dummy; 1783 } ServerReqMessage; /*!< Server Request Message - Client -> Server */ 1784 1785 struct { 1786 skinny_alarm_t lel_alarmSeverity; /*!< Alarm Severity Level */ 1787 char text[StationMaxAlarmMessage]; /*!< Alarm Text */ 1788 uint32_t lel_parm1; /*!< Alarm Parameter 1 */ 1789 uint32_t lel_parm2; /*!< Alarm Parameter 2 */ 1790 } AlarmMessage; /*!< Alarm Message - Client -> Server */ 1791 1792 /* 0x34 FeatureStatReqMessage */ 1793 struct { 1794 uint32_t lel_featureIndex; /*!< index on device */ 1795 uint32_t lel_featureCapabilities; /*!< feature capabilities */ 1796 } FeatureStatReqMessage; /*!< Feature Stat Request Message - Client -> Server */ 1797 1798 struct { 1799 uint32_t lel_serviceURLIndex; /*!< instance on device */ 1800 } ServiceURLStatReqMessage; /*!< Service URL Stat Request Message - Client -> Server */ 1801 1802 1803 struct { 1804 uint32_t receptionStatus; /*!< Reception Status */ 1805 uint32_t passThruPartyID; /*!< Pass Through Party ID */ 1806 } MulticastMediaReceptionAck; /*!< Multicast Media Reception Acknowledgement Message - Client -> Server */ 1807 1808 struct { 1809 union { 1810 struct { 1811 skinny_mediastatus_t lel_mediastatus; /*!< receiveChanStatus (OK:0x00 / Error: 0x01)*/ 1812 uint32_t bel_ipAddr; /*!< This field is apparently in big-endian format, 1813 even though most other fields are in 1814 little-endian format. */ 1815 uint32_t lel_portNumber; /*!< Port Number */ 1816 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 1817 uint32_t lel_callReference; /*!< Call Reference */ 1818 } v3; 1819 struct { 1820 skinny_mediastatus_t lel_mediastatus; /*!< Receive Channel Status (OK:0x00 / Error: 0x01)*/ 1821 uint32_t lel_ipv46; /*!< ipv4 (0)/ ipv6 (1) */ 1822 char bel_ipAddr[16]; /*!< This field is apparently in big-endian format, 1823 even though most other fields are in 1824 little-endian format. */ 1825 uint32_t lel_portNumber; /*!< Port Number */ 1826 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 1827 uint32_t lel_callReference; /*!< Call Reference */ 1828 } v17; 1829 }; 1830 } OpenReceiveChannelAck; /*!< Open Receive Channel Acknowledgement */ 1831 1832 struct { 1833 union { 1834 struct { 1835 skinny_mediastatus_t lel_mediastatus; /*!< receiveChanStatus (OK:0x00 / Error: 0x01)*/ 1836 uint32_t bel_ipAddr; /*!< This field is apparently in big-endian format, 1837 even though most other fields are in 1838 little-endian format. */ 1839 uint32_t lel_portNumber; 1840 uint32_t lel_passThruPartyId; 1841 uint32_t lel_callReference; 1842 } v3; 1843 1844 struct { 1845 skinny_mediastatus_t lel_mediastatus; /*!< status (OK:0x00 / Error: 0x01)*/ 1846 uint32_t lel_ipv46; /*!< ipv4 (0)/ ipv6 (1) */ 1847 char bel_ipAddr[16]; /*!< This field is apparently in big-endian format, 1848 even though most other fields are in 1849 little-endian format. */ 1850 uint32_t lel_portNumber; 1851 uint32_t lel_passThruPartyId; 1852 uint32_t lel_callReference; 1853 } v17; 1854 }; 1855 } OpenMultiMediaReceiveChannelAckMessage; 1856 1857 struct { 1858 union { 1859 1860 /* 1861 00000000 - 9C 02 00 00 00 00 00 00 23 00 00 00 39 38 30 33 - ........#...9803 1862 00000010 - 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 1............... 1863 00000020 - 00 00 00 00 04 00 00 00 00 00 00 00 2F 00 00 00 - ............/... 1864 00000030 - 94 1F 00 00 30 00 00 00 40 20 00 00 00 00 00 00 - ....0...@ ...... 1865 00000040 - 00 00 00 00 00 00 00 00 6F 00 00 00 4D 4C 51 4B - ........o...MLQK 1866 00000050 - 3D 30 2E 30 30 30 30 3B 4D 4C 51 4B 61 76 3D 30 - =0.0000;MLQKav=0 1867 00000060 - 2E 30 30 30 30 3B 4D 4C 51 4B 6D 6E 3D 30 2E 30 - .0000;MLQKmn=0.0 1868 00000070 - 30 30 30 3B 4D 4C 51 4B 6D 78 3D 30 2E 30 30 30 - 000;MLQKmx=0.000 1869 00000080 - 30 3B 4D 4C 51 4B 76 72 3D 30 2E 39 35 3B 43 43 - 0;MLQKvr=0.95;CC 1870 00000090 - 52 3D 30 2E 30 30 30 30 3B 49 43 52 3D 30 2E 30 - R=0.0000;ICR=0.0 1871 000000A0 - 30 30 30 3B 49 43 52 6D 78 3D 30 2E 30 30 30 30 - 000;ICRmx=0.0000 1872 000000B0 - 3B 43 53 3D 30 3B 53 43 53 3D 30 00 00 00 00 00 - ;CS=0;SCS=0..... 1873 000000C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1874 000000D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1875 000000E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1876 000000F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1877 00000100 - 00 00 00 00 00 00 00 00 00 00 00 00 00 48 54 54 - .............HTT 1878 00000110 - 50 5F 31 32 36 36 32 5F 31 32 37 33 35 00 00 00 - P_12662_12735... 1879 00000120 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1880 00000130 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1881 00000140 - 00 00 00 00 00 00 00 00 8F 12 00 00 00 80 00 00 - ................ 1882 00000150 - A4 1C 48 00 0A 0F 0F C3 08 00 03 00 94 29 41 00 - ..H..........)A. 1883 00000160 - 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ............... 1884 00000170 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1885 00000180 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1886 00000190 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1887 000001A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1888 000001B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1889 000001C0 - 00 00 00 00 74 18 4C 76 0A 0F 0F C3 00 00 00 00 - ....t.Lv........ 1890 000001D0 - 69 96 B8 00 CC 42 48 00 00 00 82 07 0A 00 00 00 - i....BH......... 1891 000001E0 - 24 3D 41 00 00 00 01 03 01 00 00 00 0C 00 00 00 - $=A............. 1892 000001F0 - 44 97 41 00 84 02 00 00 01 02 00 00 77 B9 94 37 - D.A.........w..7 1893 00000200 - 04 00 00 00 03 00 00 00 08 00 00 00 03 01 01 01 - ................ 1894 00000210 - 01 01 01 01 01 01 01 01 01 01 06 01 01 01 01 01 - ................ 1895 00000220 - 01 01 01 01 01 01 01 01 01 01 03 00 00 00 00 00 - ................ 1896 00000230 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1897 00000240 - 00 00 00 00 00 00 00 00 00 00 00 00 4C 49 53 54 - ............LIST 1898 00000250 - 2E 58 4D 4C 00 00 00 00 00 00 00 00 00 00 00 00 - .XML............ 1899 00000260 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1900 00000270 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1901 00000280 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1902 00000290 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1903 000002A0 - 00 00 00 00 - .... 1904 */ 1905 struct { 1906 char DirectoryNumber[StationMaxDirnumSize]; /*!< Directory Number */ 1907 uint32_t lel_CallIdentifier; /*!< Call Identifier */ 1908 uint32_t lel_StatsProcessingType; /*!< Stats Processing Type */ 1909 uint32_t lel_SentPackets; /*!< Sent Packets */ 1910 uint32_t lel_SentOctets; /*!< Sent Octets */ 1911 uint32_t lel_RecvdPackets; /*!< Received Packets */ 1912 uint32_t lel_RecvdOctets; /*!< Received Octets */ 1913 uint32_t lel_LostPkts; /*!< Lost Packets */ 1914 uint32_t lel_Jitter; /*!< Jitter */ 1915 uint32_t lel_latency; /*!< Latency */ 1916 uint32_t lel_QualityStatsSize; 1917 char QualityStats[600]; /*!< QualityStatistics */ 1918 } v3; /*!< Connection Statistics Response Message - Server -> Client */ 1919 /* 1920 00000000 - A0 02 00 00 14 00 00 00 23 00 00 00 31 33 37 00 - ........#...137. 1921 00000010 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1922 00000020 - 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 - ................ // unknown1=0, callIdentifier=3, StatsProcessingType=0, 1923 00000030 - 99 00 00 00 A0 5F 00 00 91 00 00 00 A0 5A 00 00 - ....._.......Z.. // sendPackets=99=153,sendOctets=A05F=41055, RecvdPackets=91=145, RecvdOctets=A05A=41050 1924 00000040 - 00 00 00 00 00 00 00 00 00 00 00 00 74 00 00 00 - ............t... // lostPkts=0, Jitter=0, Latency=0, unknown2=74 1925 00000050 - 4C 6F 67 20 34 37 36 3A 20 6D 6F 73 20 30 2E 30 - Log 476: mos 0.0 // 1926 00000060 - 30 30 30 2C 20 61 76 67 4D 6F 73 20 30 2E 30 30 - 000, avgMos 0.00 1927 00000070 - 30 30 2C 20 6D 61 78 4D 6F 73 20 30 2E 30 30 30 - 00, maxMos 0.000 1928 00000080 - 30 2C 20 6D 69 6E 4D 6F 73 20 30 2E 30 30 30 30 - 0, minMos 0.0000 1929 00000090 - 2C 20 43 53 20 30 2C 20 53 43 53 20 30 2C 20 43 - , CS 0, SCS 0, C 1930 000000A0 - 43 52 20 30 2E 30 30 30 30 2C 20 49 43 52 20 30 - CR 0.0000, ICR 0 1931 000000B0 - 2E 30 30 30 30 2C 20 6D 61 78 43 52 20 30 2E 30 - .0000, maxCR 0.0 1932 000000C0 - 30 30 30 0A 00 00 00 00 00 00 00 00 00 00 00 00 - 000............. 1933 000000D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1934 000000E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1935 000000F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1936 00000100 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1937 00000110 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1938 00000120 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1939 00000130 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1940 00000140 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1941 00000150 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1942 00000160 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1943 00000170 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1944 00000180 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1945 00000190 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1946 000001A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1947 000001B0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1948 000001C0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1949 000001D0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1950 000001E0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1951 000001F0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1952 00000200 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1953 00000210 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1954 00000220 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1955 00000230 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1956 00000240 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1957 00000250 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1958 00000260 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1959 00000270 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1960 00000280 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1961 00000290 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 1962 000002A0 - 00 00 00 00 00 00 00 00 - ........ 1963 */ 1964 struct { 1965 char DirectoryNumber[StationMaxDirnumSize]; /*!< Directory Number */ 1966 uint32_t lel_padding; 1967 uint32_t lel_CallIdentifier; /*!< Call Identifier */ 1968 uint32_t lel_StatsProcessingType; /*!< Stats Processing Type */ 1969 uint32_t lel_SentPackets; /*!< Sent Packets */ 1970 uint32_t lel_SentOctets; /*!< Sent Octets */ 1971 uint32_t lel_RecvdPackets; /*!< Received Packets */ 1972 uint32_t lel_RecvdOctets; /*!< Received Octets */ 1973 uint32_t lel_LostPkts; /*!< Lost Packets */ 1974 uint32_t lel_Jitter; /*!< Jitter */ 1975 uint32_t lel_latency; /*!< Latency */ 1976 uint32_t lel_QualityStatsSize; 1977 char QualityStats[600]; /*!< QualityStatistics */ 1978 } v20; /*!< Connection Statistics Response Message - Client -> Server (used when protocol version >= 19) */ 1979 1980 /* 1981 00000000 - B4 00 00 00 16 00 00 00 23 00 00 00 39 38 30 31 - ........#...9801 // DirectoryNumber= 98031 1982 00000010 - 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 1............... 1983 00000020 - 00 00 00 00 00 00 00 00 01 00 00 00 00 5C 00 00 - .............\.. // callIdentifier=1, StatsProcessingType= 0, sendPackets=5c=92 1984 00000030 - 00 D0 3D 00 00 59 00 00 00 CC 3B 00 00 00 00 00 - ..=..Y....;..... // sendOctets=D03D=53309, RecvdPackets=59=89, RecvdOctets=cc3b=52283 1985 00000040 - 00 00 00 00 00 00 00 00 00 6F 00 00 00 4D 4C 51 - .........o...MLQ // lostPkts=0, Jitter=0, Latency=0, unknown2=6F000000 1986 00000050 - 4B 3D 30 2E 30 30 30 30 3B 4D 4C 51 4B 61 76 3D - K=0.0000;MLQKav= 1987 00000060 - 30 2E 30 30 30 30 3B 4D 4C 51 4B 6D 6E 3D 30 2E - 0.0000;MLQKmn=0. 1988 00000070 - 30 30 30 30 3B 4D 4C 51 4B 6D 78 3D 30 2E 30 30 - 0000;MLQKmx=0.00 1989 00000080 - 30 30 3B 49 43 52 3D 30 2E 30 30 30 30 3B 43 43 - 00;ICR=0.0000;CC 1990 00000090 - 52 3D 30 2E 30 30 30 30 3B 49 43 52 6D 78 3D 30 - R=0.0000;ICRmx=0 1991 000000A0 - 2E 30 30 30 30 3B 43 53 3D 30 3B 53 43 53 3D 30 - .0000;CS=0;SCS=0 1992 000000B0 - 3B 4D 4C 51 4B 76 72 3D 30 2E 39 35 - ;MLQKvr=0.95 1993 */ 1994 1995 #pragma pack(push) 1996 #pragma pack(1) 1997 struct { 1998 //char DirectoryNumber[25]; 1999 char DirectoryNumber[28]; 2000 uint32_t lel_CallIdentifier; /*!< Call Identifier */ 2001 uint8_t lel_StatsProcessingType; /*!< Stats Processing Type */ 2002 uint32_t lel_SentPackets; /*!< Sent Packets */ 2003 uint32_t lel_SentOctets; /*!< Sent Octets */ 2004 uint32_t lel_RecvdPackets; /*!< Received Packets */ 2005 uint32_t lel_RecvdOctets; /*!< Received Octets */ 2006 uint32_t lel_LostPkts; /*!< Lost Packets */ 2007 uint32_t lel_Jitter; /*!< Jitter */ 2008 uint32_t lel_latency; /*!< Latency */ 2009 uint32_t lel_QualityStatsSize; 2010 char QualityStats[600]; /*!< QualityStatistics */ 2011 } v22; /*!< Connection Statistics Response Message - Client -> Server (used when protocol version >= 22) */ 2012 #pragma pack(pop) 2013 }; 2014 } ConnectionStatisticsRes; 2015 2016 struct { 2017 uint8_t dummy; 2018 } SoftKeySetReqMessage; /*!< Soft Key Set Request Message Structure */ 2019 2020 struct { 2021 uint32_t lel_softKeyEvent; /*!< Soft Key Event */ 2022 uint32_t lel_lineInstance; /*!< Line Instance on device (indicated callplane) */ 2023 uint32_t lel_callReference; /*!< Call Reference ID */ 2024 } SoftKeyEventMessage; 2025 2026 struct { 2027 uint32_t lel_UnregisterReason; 2028 } UnregisterMessage; /*!< Unregister Message Structure */ 2029 2030 struct { 2031 uint8_t dummy; 2032 } SoftKeyTemplateReqMessage; /*!< Soft Key Template Request Message Structure */ 2033 2034 struct { 2035 StationIdentifier sId; /*!< Station Identifier */ 2036 uint32_t lel_stationIpAddr; /*!< Station IP Address */ 2037 skinny_devicetype_t lel_deviceType; /*!< Device Type as part of SKINNY_DEVICETYPE_* */ 2038 char ipv6Address[16]; 2039 uint32_t unknown; /*!< Active Call ?? */ 2040 } RegisterTokenRequest; /*!< Register Token Request */ 2041 2042 struct { 2043 union{ 2044 struct { 2045 uint32_t lel_conferenceId; /*!< Conference ID */ 2046 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2047 uint32_t bel_remoteIpAddr; /*!< This field is apparently in big-endian */ 2048 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ 2049 uint32_t lel_callRef; /*!< Call Reference */ 2050 } v3; 2051 struct { 2052 uint32_t lel_conferenceId; /*!< Conference ID */ 2053 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2054 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2055 char bel_ipAddr[16]; /*!< This field is apparently in big-endian format, even though most other fields are in little-endian format. */ 2056 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ 2057 uint32_t lel_callRef; /*!< Call Reference */ 2058 } v16; 2059 }; 2060 } MediaTransmissionFailure; 2061 2062 struct { 2063 uint32_t lel_hsMode; /*!< Head Set Mode */ 2064 } HeadsetStatusMessage; /*!< Headset Status Message Structure */ 2065 2066 struct { 2067 uint32_t lel_keepAliveInterval; /*!< Keep Alive Interval to the Primary Server */ 2068 char dateTemplate[StationDateTemplateSize]; /*!< Date Template */ 2069 uint8_t alignmentPadding; /*!< Filler 1 */ 2070 uint32_t lel_secondaryKeepAliveInterval; /*!< Keep Alive Interval to the Secundairy Server */ 2071 StationProtocolFeatures_t protocolFeatures; 2072 } RegisterAckMessage; /*!< Register Acknowledgement Message Structure */ 2073 2074 struct { 2075 uint32_t lel_tone; /*!< Tone (SKINNY_TONE ENUM)*/ 2076 uint32_t lel_toneDirection; /*!< Tone Direction (0 = User, 1=Network, 2=Both) */ 2077 uint32_t lel_lineInstance; /*!< Line Instance */ 2078 uint32_t lel_callReference; /*!< Call Reference */ 2079 } StartToneMessage; /*!< Start Tone Message Structure */ 2080 2081 struct { 2082 /* protocol v3 */ 2083 uint32_t lel_lineInstance; /*!< Line Instance */ 2084 uint32_t lel_callReference; /*!< Call Reference */ 2085 /* protocol > v11 */ 2086 uint32_t lel_tone; /*!< Tone (SKINNY_TONE ENUM)*/ 2087 } StopToneMessage; 2088 2089 struct { 2090 uint32_t lel_ringMode; /*!< Ring Mode */ 2091 uint32_t lel_ringDuration; /*!< Ring Duration (Normal:0x01 /Single:0x02) */ 2092 uint32_t lel_lineInstance; /*!< Line Instance */ 2093 uint32_t lel_callReference; /*!< Call Reference */ 2094 } SetRingerMessage; /*!< Set Ringer Message Structure */ 2095 2096 struct { 2097 uint32_t lel_stimulus; /*!< Stimulus */ 2098 uint32_t lel_stimulusInstance; /*!< Stimulus Instance */ 2099 uint32_t lel_lampMode; /*!< Lamp Mode (MWI) */ 2100 } SetLampMessage; /*!< Set Lamp Message Structure */ 2101 2102 struct { 2103 uint8_t dummy; 2104 } SetHookFlashDetectMessage; /*!< Set Hkf Detect Message Structure */ 2105 2106 struct { 2107 uint32_t lel_speakerMode; /*!< Spreaker Mode */ 2108 } SetSpeakerModeMessage; /*!< Set Speaker Mode Message Structure */ 2109 2110 struct { 2111 uint32_t lel_micMode; /*!< Microphone Mode */ 2112 } SetMicroModeMessage; /*!< Set Microphone Mode Message Structure */ 2113 2114 struct { 2115 union { 2116 struct { 2117 uint32_t lel_conferenceId; /*!< Conference ID */ 2118 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2119 uint32_t bel_remoteIpAddr; /*!< This field is apparently in big-endian 2120 format, even though most other fields are 2121 little-endian. */ 2122 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ 2123 uint32_t lel_millisecondPacketSize; /*!< Packet Size per MilliSecond */ 2124 //uint32_t lel_payloadType; /*!< Media_PayloadType */ 2125 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ 2126 uint32_t lel_precedenceValue; /*!< Precedence Value */ 2127 uint32_t lel_ssValue; /*!< Silence Suppression Value */ 2128 uint32_t lel_maxFramesPerPacket; /*!< Maximum Frames per Packet */ 2129 uint32_t lel_g723BitRate; /*!< only used with G.723 payload */ 2130 uint32_t lel_callReference; /*!< Conference ID 1 */ 2131 EncryptionInfo encryptioninfo; 2132 /* protocol v11 mods */ 2133 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2134 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2135 uint32_t lel_RFC2833Type; /*!< RTP DTMF PayLoad (this is often set to 0x65 (101)) */ 2136 uint32_t lel_dtmfType; /*!< RTP Type */ 2137 /* protocol v11 fields */ 2138 uint32_t lel_mixingMode; 2139 uint32_t lel_direction; 2140 } v3; 2141 2142 /* StartMediaTransmission v17 2143 * 0000 88 00 00 00 11 00 00 00 8a 00 00 00 54 ae 9d 01 ............T... 2144 * 0010 53 00 00 01 00 00 00 00 c0 a8 09 2c 00 00 00 00 S..........,.... 2145 * 0020 00 00 00 00 00 00 00 00 c6 4c 00 00 14 00 00 00 .........L...... 2146 * 0030 04 00 00 00 b8 00 00 00 00 00 00 00 00 00 00 00 ................ 2147 * 0040 00 00 00 00 54 ae 9d 01 00 00 00 00 00 00 00 00 ....T........... 2148 * 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2149 * 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2150 * 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2151 * 0080 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 ................ 2152 */ 2153 struct { 2154 uint32_t lel_conferenceId; /*!< Conference ID */ 2155 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2156 uint32_t lel_ipv46; /*!< ipv4 (0)/ ipv6 (1) */ 2157 char bel_remoteIpAddr[16]; /*!< This field is apparently in big-endian 2158 format, even though most other fields are 2159 little-endian. */ 2160 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ 2161 uint32_t lel_millisecondPacketSize; /*!< Packet Size per Millisecond */ 2162 //uint32_t lel_payloadType; /*!< Media_PayloadType */ 2163 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ 2164 uint32_t lel_precedenceValue; /*!< Precedence Value */ 2165 uint32_t lel_ssValue; /*!< Silence Suppression Value */ 2166 uint32_t lel_maxFramesPerPacket; /*!< Maximum Frames per Packet */ 2167 uint32_t lel_g723BitRate; /*!< G.723 BitRate (only used with G.723 payload) */ 2168 uint32_t lel_callReference; /*!< Conference ID 1 */ 2169 EncryptionInfo encryptioninfo; 2170 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2171 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2172 uint32_t lel_RFC2833Type; /*!< RTP DTMP PayLoad (this is often set to 0x65 (101)) */ 2173 uint32_t lel_dtmfType; /*!< RTP Timeout (this is set to 0x0A) */ 2174 uint32_t lel_mixingMode; 2175 uint32_t lel_direction; 2176 } v17; 2177 2178 struct { 2179 uint32_t lel_conferenceId; /*!< Conference ID */ 2180 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2181 uint32_t lel_ipv46; /*!< ipv4 (0)/ ipv6 (1) */ 2182 char bel_remoteIpAddr[16]; /*!< This field is apparently in big-endian 2183 format, even though most other fields are 2184 little-endian. */ 2185 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ 2186 uint32_t lel_millisecondPacketSize; /*!< Packet Size per Millisecond */ 2187 //uint32_t lel_payloadType; /*!< Media_PayloadType */ 2188 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ 2189 uint32_t lel_precedenceValue; /*!< Precedence Value */ 2190 uint32_t lel_ssValue; /*!< Silence Suppression Value */ 2191 uint32_t lel_maxFramesPerPacket; /*!< Maximum Frames per Packet */ 2192 uint32_t lel_g723BitRate; /*!< G.723 BitRate (only used with G.723 payload) */ 2193 uint32_t lel_callReference; /*!< Conference ID 1 */ 2194 EncryptionInfo encryptioninfo; 2195 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2196 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2197 uint32_t lel_RFC2833Type; /*!< RTP DTMP PayLoad (this is often set to 0x65 (101)) */ 2198 uint32_t lel_dtmfType; /*!< RTP Timeout (this is set to 0x0A) */ 2199 uint32_t lel_mixingMode; 2200 uint32_t lel_direction; 2201 skinny_latentCapsInfo_t latentCapsInfo; 2202 } v22; 2203 }; 2204 } StartMediaTransmission; /*!< Start Media Transmission Structure */ 2205 2206 struct { 2207 uint32_t lel_conferenceId; /*!< Conference ID */ 2208 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2209 uint32_t lel_callReference; /*!< Conference ID 1 */ 2210 uint32_t lel_portHandlingFlag; /*!< 0 = Close Port, 1 = Keep Port Open */ 2211 } StopMediaTransmission; /*!< Stop Media Transmission Structure */ 2212 2213 struct { 2214 uint32_t lel_conferenceId; /*!< Conference ID */ 2215 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2216 uint32_t lel_callReference; /*!< Conference ID 1 */ 2217 uint32_t lel_portHandlingFlag; /*!< 0 = Close Port, 1 = Keep Port Open */ 2218 } StopMultiMediaTransmission; 2219 2220 struct { 2221 uint8_t dummy; 2222 } StartMediaReception; 2223 2224 struct { 2225 uint32_t lel_conferenceId; /*!< Conference ID 1 */ 2226 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2227 } StopMediaReception; /*!< Stop Media Reception Structure */ 2228 2229 struct { 2230 char callingPartyName[StationMaxNameSize]; /*!< Calling Party Name */ 2231 char callingParty[StationMaxDirnumSize]; /*!< Calling Party ID */ 2232 char calledPartyName[StationMaxNameSize]; /*!< Called Party Name */ 2233 char calledParty[StationMaxDirnumSize]; /*!< Called Party ID */ 2234 uint32_t lel_lineInstance; /*!< Line Instance */ 2235 uint32_t lel_callReference; /*!< Call Reference */ 2236 uint32_t lel_callType; /*!< Call Type (INBOUND=1, OUTBOUND=2, FORWARD=3) */ 2237 char originalCalledPartyName[StationMaxNameSize]; /*!< Original Calling Party Name */ 2238 char originalCalledParty[StationMaxDirnumSize]; /*!< Original Calling Party ID */ 2239 char lastRedirectingPartyName[StationMaxNameSize]; /*!< Original Called Party Name */ 2240 char lastRedirectingParty[StationMaxDirnumSize]; /*!< Original Called Party ID */ 2241 uint32_t lel_originalCdpnRedirectReason; /*!< Original Called Party Redirect Reason */ 2242 uint32_t lel_lastRedirectingReason; /*!< Last Redirecting Reason */ 2243 char cgpnVoiceMailbox[StationMaxDirnumSize]; /*!< Calling Party Voicemail Box */ 2244 char cdpnVoiceMailbox[StationMaxDirnumSize]; /*!< Called Party Voicemail Box */ 2245 char originalCdpnVoiceMailbox[StationMaxDirnumSize]; /*!< Original Called Party VoiceMail Box */ 2246 char lastRedirectingVoiceMailbox[StationMaxDirnumSize]; /*!< Last Redirecting VoiceMail Box */ 2247 uint32_t lel_callInstance; /*!< Call Instance */ 2248 uint32_t lel_callSecurityStatus; /*!< Call Security Status */ 2249 uint32_t partyPIRestrictionBits; /*!< Party PI Restriction Bits ( 2250 0 RestrictCallingPartyName 2251 1 RestrictCallingPartyNumber 2252 2 RestrictCalledPartyName 2253 3 RestrictCalledPartyNumber 2254 4 RestrictOriginalCalledPartyName 2255 5 RestrictOriginalCalledPartyNumber 2256 6 RestrictLastRedirectPartyName 2257 7 RestrictLastRedirectPartyNumber) */ 2258 } CallInfoMessage; /*!< Call Info Message Structure */ 2259 2260 struct { 2261 union { 2262 struct { 2263 char calledParty[StationMaxDirnumSize]; /*!< Called Party */ 2264 uint32_t lel_lineInstance; /*!< Line Instance */ 2265 uint32_t lel_callReference; /*!< Call Reference */ 2266 } v3; 2267 #pragma pack(push) 2268 #pragma pack(1) 2269 struct { 2270 char calledParty[StationDynamicDirnumSize]; /*!< Called Party */ 2271 uint32_t lel_lineInstance; /*!< Line Instance */ 2272 uint32_t lel_callReference; /*!< Call Reference */ 2273 } v18; 2274 #pragma pack(pop) 2275 }; 2276 } DialedNumberMessage; /*!< Dialed Number Message Structure */ 2277 2278 struct { 2279 union { 2280 struct { 2281 uint32_t lel_activeForward; /*!< Status (0=inactive, 1=active, 4=cm ??) */ 2282 uint32_t lel_lineNumber; /*!< Line Number */ 2283 uint32_t lel_forwardAllActive; /*!< Call Forward All Status */ 2284 char cfwdallnumber[StationMaxDirnumSize]; /*!< Call Forward All Number */ 2285 uint32_t lel_forwardBusyActive; /*!< Call Forward on Busy Status */ 2286 char cfwdbusynumber[StationMaxDirnumSize]; /*!< Call Forward on Busy Number */ 2287 uint32_t lel_forwardNoAnswerActive; /*!< Call Forward on No-Answer Status */ 2288 char cfwdnoanswernumber[StationMaxDirnumSize]; /*!< Call Forward on No-Answer Number */ 2289 } v3; 2290 #pragma pack(push) 2291 #pragma pack(1) 2292 struct { 2293 uint32_t lel_activeForward; /*!< Status (0=inactive, 1=active, 4=cm ??) */ 2294 uint32_t lel_lineNumber; /*!< Line Number */ 2295 uint32_t lel_forwardAllActive; /*!< Call Forward All Status */ 2296 char cfwdallnumber[StationDynamicDirnumSize]; /*!< Call Forward All Number */ 2297 uint32_t lel_forwardBusyActive; /*!< Call Forward on Busy Status */ 2298 char cfwdbusynumber[StationDynamicDirnumSize]; /*!< Call Forward on Busy Number */ 2299 uint32_t lel_forwardNoAnswerActive; /*!< Call Forward on No-Answer Status */ 2300 char cfwdnoanswernumber[StationDynamicDirnumSize]; /*!< Call Forward on No-Answer Number */ 2301 } v18; 2302 #pragma pack(pop) 2303 }; 2304 } ForwardStatMessage; /*!< Forward Status Message Structure */ 2305 2306 struct { 2307 uint32_t lel_speedDialNumber; /*!< SpeedDial Number */ 2308 char speedDialDirNumber[StationMaxDirnumSize]; /*!< SpeedDial Dir Number */ 2309 char speedDialDisplayName[StationMaxNameSize]; /*!< SpeedDial Display Name */ 2310 } SpeedDialStatMessage; /*!< SpeedDial Status Message Structure */ 2311 2312 struct { 2313 uint32_t lel_lineNumber; /*!< Line Number */ 2314 char lineDirNumber[StationMaxDirnumSize]; /*!< Line Dir Number */ 2315 char lineFullyQualifiedDisplayName[StationMaxNameSize]; /*!< Line Fully Qualified Display Name */ 2316 //char lineDisplayName[StationMaxButtonTemplateNameSize]; /*!< Line Display Name */ 2317 char lineDisplayName[StationMaxNameSize]; 2318 uint32_t lel_lineDisplayOptions; 2319 } LineStatMessage; /*!< Line Status Messages Structure */ 2320 2321 struct { 2322 uint32_t lel_year; /*!< Year */ 2323 uint32_t lel_month; /*!< Month */ 2324 uint32_t lel_dayOfWeek; /*!< Day of the Week (\todo Starting su=0|1) */ 2325 uint32_t lel_day; /*!< Day */ 2326 uint32_t lel_hour; /*!< Hour */ 2327 uint32_t lel_minute; /*!< Minute */ 2328 uint32_t lel_seconds; /*!< Seconds */ 2329 uint32_t lel_milliseconds; /*!< MilliSeconds */ 2330 uint32_t lel_systemTime; /*!< System Time */ 2331 } DefineTimeDate; /*!< Definition of Date/Time Structure */ 2332 2333 struct { 2334 union { 2335 struct { 2336 uint32_t bel_ipAddr; 2337 uint32_t lel_sessionType; /*!< SKINNY SESSION TYPE: 2338 Chat:0x01, 2339 Whiteboard:0x02, 2340 ApplicationSharing: 0x04, 2341 FileTransfer:0x08, 2342 Video:0x10 // 10 !??! 2343 */ 2344 } v3; 2345 struct { 2346 uint32_t lel_ipv46; 2347 char bel_ipAddr[16]; 2348 uint32_t lel_sessionType; /*!< SKINNY SESSION TYPE: Chat:0x01, Whiteboard:0x02, ApplicationSharing: 0x04, FileTransfer:0x08, Video:0x10 */ 2349 } v16; 2350 }; 2351 } StartSessionTransmission; /*!< Start Session Transmission Structure */ 2352 2353 struct { 2354 union { 2355 struct { 2356 uint32_t bel_ipAddr; 2357 uint32_t lel_sessionType; /*!< SKINNY SESSION TYPE: 2358 Chat:0x01, 2359 Whiteboard:0x02, 2360 ApplicationSharing: 0x04, 2361 FileTransfer:0x08, 2362 Video:0x10 // 10 !??! 2363 */ 2364 } v3; 2365 struct { 2366 uint32_t lel_ipv46; 2367 char bel_ipAddr[16]; 2368 uint32_t lel_sessionType; /*!< SKINNY SESSION TYPE: Chat:0x01, Whiteboard:0x02, ApplicationSharing: 0x04, FileTransfer:0x08, Video:0x10 */ 2369 } v16; 2370 }; 2371 } StopSessionTransmission; /*!< Stop Session Transmission Structure */ 2372 2373 struct { 2374 uint32_t lel_buttonOffset; /*!< Button OffSet */ 2375 uint32_t lel_buttonCount; /*!< Button Count */ 2376 uint32_t lel_totalButtonCount; /*!< Total Number of Buttons */ 2377 StationButtonDefinition definition[StationMaxButtonTemplateSize]; /*!< Station Button Definition */ 2378 } ButtonTemplateMessage; /*!< Button Template Message Structure */ 2379 2380 struct { 2381 uint32_t lel_buttonOffset; /*!< Button OffSet */ 2382 uint32_t lel_buttonCount; /*!< Button Count */ 2383 uint32_t lel_totalButtonCount; /*!< Total Number of Buttons */ 2384 uint32_t dummy[1]; /*!< Station Button Definition */ 2385 } ButtonTemplateMessageDynamic; /*!< Identical to ButtonTemplateMessage */ 2386 2387 struct { 2388 char requiredVersion[StationMaxVersionSize]; /*!< Required Version */ 2389 } VersionMessage; /*!< Version Message Structure */ 2390 2391 struct { 2392 char displayMessage[StationMaxDisplayTextSize]; /*!< Display Message */ 2393 /* uint32_t lel_displayTimeout; *//*!< Display Timeout */ 2394 } DisplayTextMessage; /*!< Display Text Message */ 2395 2396 struct { 2397 uint32_t unknown; 2398 } ClearDisplay; 2399 2400 struct { 2401 uint8_t dummy; 2402 } CapabilitiesReqMessage; /*!< Capabilities Reqest Message Structure */ 2403 2404 struct { 2405 uint8_t dummy; 2406 } EnunciatorCommandMessage; /*!< Enunciator Command Message Structure */ 2407 2408 struct { 2409 char text[StationMaxDisplayTextSize]; /*!< Rejection Text */ 2410 } RegisterRejectMessage; /*!< Register Reject Message Structure */ 2411 2412 struct { 2413 union { 2414 struct { 2415 ServerIdentifier server[StationMaxServers]; /*!< Server Identifier */ 2416 uint32_t serverListenPort[StationMaxServers]; /*!< Server is Listening on Port */ 2417 uint32_t serverIpAddr[StationMaxServers]; /*!< Server IP Port */ 2418 } v3; 2419 struct { 2420 ServerIdentifier server[StationMaxServers]; /*!< Server Identifier */ 2421 uint32_t serverListenPort[StationMaxServers]; /*!< Server is Listening on Port */ 2422 struct { 2423 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2424 char bel_ipAddr[16]; /*!< Multicast IP Address */ 2425 } serverIpAddr[StationMaxServers]; 2426 } v17; 2427 }; 2428 } ServerResMessage; /*!< Server Result Message Structure */ 2429 2430 struct { 2431 uint32_t lel_resetType; /*!< Reset Type (1=Reset, 2=Restart, 3=ApplyConfig) */ 2432 } Reset; /*!< Reset Message Structure */ 2433 2434 struct { 2435 uint8_t dummy; 2436 } KeepAliveAckMessage; /*!< Keep Aliver Acknowledgement Message Structure */ 2437 2438 struct { 2439 union { 2440 struct { 2441 uint32_t lel_conferenceID; /*!< Conference ID */ 2442 uint32_t lel_passThruPartyID; /*!< Pass Through Party ID */ 2443 uint32_t bel_ipAddr; /*!< Multicast IP Address */ 2444 uint32_t lel_Port; /*!< Multicast Port */ 2445 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2446 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 2447 uint32_t lel_echoCancelType; /*!< Echo Cancelation Type */ 2448 uint32_t lel_g723BitRate; /*!< G.723 Bit Rate (only applies to G.723 */ 2449 } v3; 2450 struct { 2451 uint32_t lel_conferenceID; /*!< Conference ID */ 2452 uint32_t lel_passThruPartyID; /*!< Pass Through Party ID */ 2453 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2454 char bel_ipAddr[16]; /*!< Multicast IP Address */ 2455 uint32_t lel_Port; /*!< Multicast Port */ 2456 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2457 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 2458 uint32_t lel_echoCancelType; /*!< Echo Cancelation Type */ 2459 uint32_t lel_g723BitRate; /*!< G.723 Bit Rate (only applies to G.723 */ 2460 } v16; 2461 }; 2462 } StartMulticastMediaReception; /*!< Start Multicast Media Reception Message Structure */ 2463 2464 struct { 2465 union { 2466 struct { 2467 uint32_t lel_conferenceID; /*!< Conference ID */ 2468 uint32_t lel_passThruPartyID; /*!< Pass Through Party ID */ 2469 uint32_t bel_ipAddr; /*!< Multicast IP Address */ 2470 uint32_t lel_Port; /*!< Multicast Port */ 2471 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2472 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 2473 uint32_t lel_precedenceValue; /*!< Precedence Value */ 2474 uint32_t lel_silenceSuppression; /*!< Silence Suppression */ 2475 uint32_t lel_maxFramesPerPacket; /*!< Max Frames Per Packet */ 2476 uint32_t lel_g723BitRate; /*!< G.723 Bit Rate (only applies to G.723 */ 2477 } v3; 2478 struct { 2479 uint32_t lel_conferenceID; /*!< Conference ID */ 2480 uint32_t lel_passThruPartyID; /*!< Pass Through Party ID */ 2481 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2482 char bel_ipAddr[16]; /*!< Multicast IP Address */ 2483 uint32_t lel_Port; /*!< Multicast Port */ 2484 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2485 skinny_codec_t lel_payloadCapability; /*!< PayLoad Capability */ 2486 uint32_t lel_precedenceValue; /*!< Precedence Value */ 2487 uint32_t lel_silenceSuppression; /*!< Silence Suppression */ 2488 uint32_t lel_maxFramesPerPacket; /*!< Max Frames Per Packet */ 2489 uint32_t lel_g723BitRate; /*!< G.723 Bit Rate (only applies to G.723 */ 2490 } v16; 2491 }; 2492 } StartMulticastMediaTransmission; /*!< Start Multicast Media Transmission Message Structure */ 2493 2494 /* 2495 * based on miscCommandType we have other struct 2496 * following the Miscellaneous Command Message 2497 */ 2498 2499 struct { 2500 uint32_t lel_conferenceId; /*!< Conference ID */ 2501 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2502 uint32_t lel_callReference; /*!< Call Reference */ 2503 skinny_miscCommandType_t lel_miscCommandType; /*!< Miscellaneous Command Type 2504 videoFreezePicture: 0x00 2505 videoFastUpdatePicture: 0x01 2506 videoFastUpdateGOB: 0x02 2507 videoFastUpdateMB: 0x03 2508 lostPicture: 0x04 2509 lostPartialPicture: 0x05 2510 recoveryReferencePicture: 0x06 2511 temporalSpatialTradeOff: 0x07 2512 */ 2513 union { 2514 uint32_t lel_none; 2515 2516 struct { /* this one seems to be empty */ 2517 } videoFastUpdatePicture; 2518 2519 struct { 2520 uint32_t lel_firstGOB; /* GOB: Group of Pictures */ 2521 uint32_t lel_numberOfGOBs; 2522 } videoFastUpdateGOB; 2523 2524 struct { 2525 uint32_t lel_firstGOB; 2526 uint32_t lel_firstMB; 2527 uint32_t lel_numberOfMBs; 2528 } videoFastUpdateMB; 2529 2530 struct { 2531 uint32_t lel_pictureNumber; 2532 uint32_t lel_longTermPictureIndex; 2533 } lostPicture; 2534 2535 struct { 2536 struct { 2537 uint32_t lel_pictureNumber; 2538 uint32_t lel_longTermPictureIndex; 2539 } pictureReference; 2540 uint32_t lel_firstMB; 2541 uint32_t lel_numberOfMBs; 2542 } lostPartialPicture; 2543 2544 struct { 2545 uint32_t lel_PictureCount; 2546 struct { 2547 uint32_t lel_pictureNumber; 2548 uint32_t lel_longTermPictureIndex; 2549 } pictureReference[4]; 2550 } recoveryReferencePicture; 2551 2552 uint32_t lel_temporalSpatialTradeOff; 2553 } data; 2554 } MiscellaneousCommandMessage; /*!< Miscellaneous Command Message Structure */ 2555 2556 struct { 2557 uint32_t lel_conferenceID; /*!< Conference ID */ 2558 uint32_t lel_passThruPartyID; /*!< Pass Through Party ID */ 2559 uint32_t lel_callReference; 2560 } StopMulticastMediaReception; /*!< Stop Multicast Media Reception Message Structure */ 2561 2562 struct { 2563 uint32_t lel_conferenceID; /*!< Conference ID */ 2564 uint32_t lel_passThruPartyID; /*!< Pass Through Party ID */ 2565 uint32_t lel_callReference; 2566 } StopMulticastMediaTransmission; /*!< Stop Multicast Media Transmission Message Structure */ 2567 2568 struct { 2569 union { 2570 /* this is v11 message from ccm7 2571 * 0000 60 00 00 00 00 00 00 00 05 01 00 00 5b ae 9d 01 `...........[... 2572 * 0010 5a 00 00 01 14 00 00 00 04 00 00 00 00 00 00 00 Z............... 2573 * 0020 00 00 00 00 5b ae 9d 01 00 00 00 00 00 00 00 00 ....[........... 2574 * 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2575 * 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2576 * 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2577 * 0060 00 00 00 00 0a 00 00 00 ........ 2578 */ 2579 struct { 2580 uint32_t lel_conferenceId; /*!< Conference ID */ 2581 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2582 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2583 //uint32_t lel_payloadType; /*!< Media_Payload Type */ 2584 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ 2585 uint32_t lel_vadValue; /*!< Voice Activity Detection Value */ 2586 uint32_t lel_g723BitRate; /*!< G.723 Payload (Only applies to G.723) */ 2587 /* protocol version 5 fields */ 2588 uint32_t lel_callReference; /*!< Conference ID */ 2589 EncryptionInfo encryptioninfo; 2590 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2591 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2592 uint32_t lel_RFC2833Type; /*!< RTP DTMF PayLoad (this is often set to 0x65 (101)) */ 2593 uint32_t lel_dtmfType; /*!< RTP Timeout (this is always 0x0A) */ 2594 /* protocol version 15 fields */ 2595 uint32_t lel_mixingMode; 2596 uint32_t lel_direction; 2597 uint32_t bel_remoteIpAddr; /*!< Ipv4 Address */ 2598 uint32_t lel_remotePortNumber; /*!< this is always 0xFA0 */ 2599 } v3; 2600 2601 /* OpenReceiveChannel v17 2602 * 0000 84 00 00 00 11 00 00 00 05 01 00 00 ec bc 68 01 ..............h. 2603 * 0010 07 00 00 01 14 00 00 00 04 00 00 00 00 00 00 00 ................ 2604 * 0020 00 00 00 00 ec bc 68 01 00 00 00 00 00 00 00 00 ......h......... 2605 * 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2606 * 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2607 * 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2608 * 0060 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 ................ 2609 * 0070 00 00 00 00 c0 a8 09 2c 00 00 00 00 00 00 00 00 .......,........ 2610 * 0080 00 00 00 00 a0 0f 00 00 00 00 00 00 ............ 2611 */ 2612 struct { 2613 uint32_t lel_conferenceId; /*!< Conference ID */ 2614 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2615 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2616 //uint32_t lel_payloadType; /*!< Media_Payload Type */ 2617 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ 2618 uint32_t lel_vadValue; /*!< Voice Activity Detection Value */ 2619 uint32_t lel_g723BitRate; /*!< G.723 Payload (Only applies to G.723) */ 2620 /* protocol version 5 fields */ 2621 uint32_t lel_callReference; /*!< Conference ID */ 2622 EncryptionInfo encryptioninfo; 2623 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2624 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2625 uint32_t lel_RFC2833Type; /*!< RTP DTMF PayLoad (this is often set to 0x65 (101)) */ 2626 uint32_t lel_dtmfType; /*!< RTP Timeout (this is always 0x0A) */ 2627 /* protocol version 15 fields */ 2628 uint32_t lel_mixingMode; 2629 uint32_t lel_direction; 2630 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2631 char bel_remoteIpAddr[16]; 2632 uint32_t lel_remotePortNumber; /*!< this is always 0xFA0 */ 2633 skinny_ipAddr_t lel_requestedIpAddrType; /*!< Unknown */ 2634 } v17; 2635 2636 struct { 2637 uint32_t lel_conferenceId; /*!< Conference ID */ 2638 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2639 uint32_t lel_millisecondPacketSize; /*!< Millisecond Packet Size */ 2640 //uint32_t lel_payloadType; /*!< Media_Payload Type */ 2641 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ 2642 uint32_t lel_vadValue; /*!< Voice Activity Detection Value */ 2643 uint32_t lel_g723BitRate; /*!< G.723 Payload (Only applies to G.723) */ 2644 /* protocol version 5 fields */ 2645 uint32_t lel_callReference; /*!< Conference ID */ 2646 EncryptionInfo encryptioninfo; 2647 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2648 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2649 uint32_t lel_RFC2833Type; /*!< RTP DTMF PayLoad (this is often set to 0x65 (101)) */ 2650 uint32_t lel_dtmfType; /*!< RTP Timeout (this is always 0x0A) */ 2651 /* protocol version 15 fields */ 2652 uint32_t lel_mixingMode; 2653 uint32_t lel_direction; 2654 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2655 char bel_remoteIpAddr[16]; 2656 uint32_t lel_remotePortNumber; /*!< this is always 0xFA0 */ 2657 skinny_ipAddr_t lel_requestedIpAddrType; /*!< Unknown */ 2658 uint32_t lel_audioLevelAdjustment; 2659 skinny_latentCapsInfo_t latentCapsInfo; 2660 } v22; 2661 }; 2662 } OpenReceiveChannel; /*!< Open Receive Channel Message Structure */ 2663 2664 struct { 2665 uint32_t lel_conferenceId; /*!< Conference ID */ 2666 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2667 /* version 5 fields */ 2668 uint32_t lel_callReference; /*!< Conference ID 1 */ 2669 uint32_t lel_portHandlingFlag; /*!< 0 = Close Port, 1 = Keep Port Open */ 2670 } CloseReceiveChannel; /*!< Close Receive Channel */ 2671 2672 struct { 2673 uint32_t lel_conferenceId; /*!< Conference ID */ 2674 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2675 /* version 5 fields */ 2676 uint32_t lel_callReference; /*!< Conference ID 1 */ 2677 uint32_t lel_portHandlingFlag; /*!< 0 = Close Port, 1 = Keep Port Open */ 2678 } CloseMultiMediaReceiveChannel; 2679 2680 struct { // Request Statistics from Phone 2681 union { 2682 struct { 2683 char DirectoryNumber[StationMaxDirnumSize]; /*!< Directory Number */ 2684 uint32_t lel_callReference; /*!< Call Reference */ 2685 uint32_t lel_StatsProcessing; /*!< Statistics Processing */ 2686 } v3; 2687 struct { 2688 char DirectoryNumber[25]; /*!< Directory Number */ 2689 uint32_t lel_callReference; /*!< Call Reference */ 2690 uint32_t lel_StatsProcessing; /*!< Statistics Processing */ 2691 } v19; 2692 }; 2693 } ConnectionStatisticsReq; /*!< Connection Statistics Request Message Structure */ 2694 2695 struct { 2696 uint32_t lel_softKeyOffset; /*!< Soft Key Off Set */ 2697 uint32_t lel_softKeyCount; /*!< Soft Key Count */ 2698 uint32_t lel_totalSoftKeyCount; /*!< Total Number of Soft Keys */ 2699 StationSoftKeyDefinition definition[StationMaxSoftKeyDefinition]; /*!< Station Soft Key Definition: Max:32 */ 2700 } SoftKeyTemplateResMessage; /*!< Soft Key Template Result Message Structure */ 2701 2702 struct { 2703 uint32_t lel_softKeySetOffset; /*!< Soft Key Off Set */ 2704 uint32_t lel_softKeySetCount; /*!< Soft Key Count */ 2705 uint32_t lel_totalSoftKeySetCount; /*!< Total Number of Soft Keys */ 2706 StationSoftKeySetDefinition definition[StationMaxSoftKeySetDefinition]; /*!< Station Soft Key Definition: Max:16*/ 2707 } SoftKeySetResMessage; /*!< Soft Key Set Result Message Structure */ 2708 2709 struct { 2710 uint32_t lel_lineInstance; /*!< Line Instance */ 2711 uint32_t lel_callReference; /*!< Call Reference */ 2712 uint32_t lel_softKeySetIndex; /*!< Soft Key Set Index */ 2713 uint32_t les_validKeyMask; /*!< Valid Key Mask */ 2714 } SelectSoftKeysMessage; /*!< Select Soft Keys Message Structure */ 2715 2716 struct { 2717 uint32_t lel_callState; /*!< Call State: ENUM: skinny_callstate_ */ 2718 uint32_t lel_lineInstance; /*!< Line Instance */ 2719 uint32_t lel_callReference; /*!< Call Reference */ 2720 skinny_callinfo_visibility_t lel_visibility; /*!< Visibility / Privacy: ENUM : none, limited, full */ 2721 struct { 2722 uint32_t lel_level; /*!< Level */ 2723 uint32_t lel_domain; /*!< Domain */ 2724 } precedence; /*!< Precedency / Priority */ 2725 } CallStateMessage; /*!< Call State Message Structure */ 2726 2727 /* display prompt */ 2728 struct { 2729 uint32_t lel_messageTimeout; /*!< Message Timeout */ 2730 char promptMessage[32]; /*!< Prompt Message (Max Lenght 32) */ 2731 uint32_t lel_lineInstance; /*!< Line Instance */ 2732 uint32_t lel_callReference; /*!< Call Reference */ 2733 } DisplayPromptStatusMessage; /*!< Display Prompt Status Message Structure */ 2734 2735 struct { 2736 uint32_t lel_messageTimeout; /*!< Message Timeout */ 2737 uint32_t lel_lineInstance; /*!< Line Instance */ 2738 uint32_t lel_callReference; /*!< Call Reference */ 2739 /* here follow the message string 2740 * take care rest of size should 2741 * be calculated with string 2742 * size + 1 (NULL TERMINATION) 2743 * padded by 4 2744 */ 2745 uint32_t dummy[1]; /*!< Dummy, this is just for addressing 2746 MaxLength:97 */ 2747 } DisplayDynamicPromptStatusMessage; /*!< Display Dynamic Prompt Status Message Structure */ 2748 2749 struct { 2750 uint32_t lel_lineInstance; /*!< Line Instance */ 2751 uint32_t lel_callReference; /*!< Call Reference */ 2752 } ClearPromptStatusMessage; /*!< Clear Prompt Status Message Structure */ 2753 2754 /* display notify */ 2755 struct { 2756 uint32_t lel_displayTimeout; /*!< Display Timeout */ 2757 char displayMessage[StationMaxDisplayNotifySize]; /*!< Display Message */ 2758 } DisplayNotifyMessage; /*!< Display Notify Message Structure */ 2759 2760 struct { // OK 2761 uint32_t lel_displayTimeout; 2762 uint32_t dummy[1]; 2763 } DisplayDynamicNotifyMessage; // 0x0143 2764 2765 struct { 2766 uint8_t dummy; 2767 } ClearNotifyMessage; /*!< Clear Notify Message Structure */ 2768 2769 /* display pri notify */ 2770 struct { 2771 uint32_t lel_displayTimeout; /*!< Display Timeout */ 2772 uint32_t lel_priority; /*!< Priority */ 2773 char displayMessage[StationMaxDisplayNotifySize]; /*!< Display Message */ 2774 } DisplayPriNotifyMessage; /*!< Display Priority Notify Message Structure */ 2775 2776 struct { // OK 2777 uint32_t lel_displayTimeout; 2778 uint32_t lel_priority; 2779 uint32_t dummy[1]; 2780 } DisplayDynamicPriNotifyMessage; // 0x0144; 2781 2782 struct { 2783 uint32_t lel_priority; /*!< Priority */ 2784 } ClearPriNotifyMessage; /*!< Clear Priority Notify Message Structure */ 2785 2786 /* 0x11F FeatureStatMessage */ 2787 struct { 2788 uint32_t lel_lineInstance; /*!< Instance */ 2789 uint32_t lel_buttonType; /*!< always 0x15 */ 2790 char textLabel[StationMaxNameSize]; /*!< Feature Text Label */ 2791 uint32_t lel_stateValue; /*!< Feature Status */ 2792 } FeatureStatMessage; /*!< Feature Status Message Structure */ 2793 2794 struct { 2795 uint32_t lel_serviceURLIndex; /*!< Service URL Index */ 2796 char URL[StationMaxServiceURLSize]; /*!< Actual URL */ 2797 char label[StationMaxNameSize]; /*!< Label */ 2798 } ServiceURLStatMessage; /*!< Service URL Stat Message Structure */ 2799 2800 struct { // Used Above Protocol 7 */ 2801 uint32_t lel_serviceURLIndex; /*!< Service URL Index */ 2802 uint32_t dummy[1]; /*!< Dummy */ 2803 } ServiceURLStatDynamicMessage; /*!< Service URL Stat Message Structure */ 2804 2805 struct { 2806 uint32_t lel_status; /*!< Status */ 2807 uint32_t lel_callReference; /*!< Call Reference */ 2808 uint32_t lel_lineInstance; /*!< Line Instance */ 2809 } CallSelectStatMessage; /*!< Call Select Status Message Structure */ 2810 2811 struct { 2812 union { 2813 struct { 2814 uint32_t lel_conferenceID; 2815 uint32_t lel_passThruPartyID; 2816 skinny_codec_t lel_codecType; 2817 uint32_t lel_lineInstance; 2818 uint32_t lel_callReference; 2819 skinny_RTPPayloadType_t payloadType; 2820 uint32_t lel_isConferenceCreator; 2821 skinny_OpenMultiMediaReceiveChannelUnion_t capability; 2822 EncryptionInfo RxEncryptionInfo; 2823 uint32_t lel_streamPassThroughID; 2824 uint32_t lel_associatedStreamID; 2825 } v3; 2826 struct { 2827 uint32_t lel_conferenceID; 2828 uint32_t lel_passThruPartyID; 2829 skinny_codec_t lel_codecType; 2830 uint32_t lel_lineInstance; 2831 uint32_t lel_callReference; 2832 skinny_RTPPayloadType_t payloadType; 2833 uint32_t lel_isConferenceCreator; 2834 skinny_OpenMultiMediaReceiveChannelUnion_t capability; 2835 EncryptionInfo RxEncryptionInfo; 2836 uint32_t lel_streamPassThroughID; 2837 uint32_t lel_associatedStreamID; 2838 uint32_t bel_sourceIpAddr; 2839 uint32_t lel_sourcePortNumber; 2840 } v12; 2841 struct { 2842 uint32_t lel_conferenceID; 2843 uint32_t lel_passThruPartyID; 2844 skinny_codec_t lel_codecType; 2845 uint32_t lel_lineInstance; 2846 uint32_t lel_callReference; 2847 skinny_RTPPayloadType_t payloadType; 2848 uint32_t lel_isConferenceCreator; 2849 skinny_OpenMultiMediaReceiveChannelUnion_t capability; 2850 EncryptionInfo RxEncryptionInfo; 2851 uint32_t lel_streamPassThroughID; 2852 uint32_t lel_associatedStreamID; 2853 skinny_ipAddress_t sourceIpAddr; 2854 uint32_t lel_sourcePortNumber; 2855 skinny_ipAddr_t lel_requestedIpAddrType; 2856 } v17; 2857 }; 2858 } OpenMultiMediaChannelMessage; 2859 2860 struct { 2861 union { 2862 /*! 2863 * \since 20100104 -MC 2864 * \note update 20100722 2865 * 0000 ac 00 00 00 00 00 00 00 32 01 00 00 0b 00 00 01 2866 0010 82 00 00 01 67 00 00 00 ac 11 01 66 45 15 00 00 2867 0020 0b 00 00 01 00 00 00 00 61 00 00 00 88 00 00 00 2868 0030 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2869 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2870 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2871 0060 00 00 00 00 40 00 00 00 32 00 00 00 5b 52 3a 4c 2872 0070 50 20 2d 20 48 50 3a 20 30 2c 20 4e f8 15 24 00 2873 0080 c4 02 89 09 9c ee 5a 0a 88 06 18 00 54 ef 5a 0a 2874 0090 64 7e fb 77 58 31 f8 77 ff ff ff ff 64 ef 5a 0a 2875 00a0 c2 b7 fc 77 78 07 18 00 20 16 24 00 40 16 24 00 2876 00b0 20 16 24 00 2877 * 2878 * 2879 */ 2880 struct { 2881 uint32_t lel_conferenceID; /*!< Conference ID */ // 0b 00 00 01 2882 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ // 82 00 00 01 2883 //skinny_codec_t lel_payloadCapability; /*!< payload capability */ // 67 00 00 00 = codec 103 2884 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ // 67 00 00 00 = codec 103 = H264 2885 uint32_t bel_remoteIpAddr; /*!< This field is apparently in big-endian 2886 format, even though most other fields are 2887 little-endian. */ // ac 11 01 66 2888 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ // 45 15 00 00 2889 uint32_t lel_callReference; /*!< Call Reference */ // 0b 00 00 01 2890 uint32_t lel_payload_rfc_number; /*!< Payload RFC Number */ // 00 00 00 00 2891 uint32_t lel_payloadType; /*!< payload type */ // 61 00 00 00 = payload 97 == rtpmap 2892 uint32_t lel_DSCPValue; /*!< DSCP Value */ // 88 00 00 00 2893 videoParameter_t videoParameter; /*!< Video Parameter */ 2894 } v3; 2895 2896 struct { 2897 uint32_t lel_conferenceID; /*!< Conference ID */ 2898 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2899 //skinny_codec_t lel_payloadCapability; /*!< payload capability */ 2900 skinny_codec_t lel_codecType; /*!< Skinny Codec Type / Compression Type */ // 67 00 00 00 = codec 103 = H264 2901 uint32_t lel_ipv46; /*!< */ 2902 2903 char bel_remoteIpAddr[16]; /*!< This field is apparently in big-endian 2904 format, even though most other fields are 2905 little-endian. */ 2906 uint32_t lel_remotePortNumber; /*!< Remote Port Number */ 2907 uint32_t lel_callReference; /*!< Call Reference */ 2908 uint32_t lel_payload_rfc_number; /*!< Payload RFC Number */ 2909 uint32_t lel_payloadType; /*!< payload type */ 2910 uint32_t lel_DSCPValue; /*!< DSCP Value */ 2911 2912 videoParameter_t videoParameter; /*!< Data Parameter */ 2913 EncryptionInfo encryptionInfo; 2914 uint32_t lel_streamPassThroughID; /*!< Stream Pass-Through ID */ 2915 uint32_t lel_assocStreamID; /*!< Associated Stream ID */ 2916 } v17; 2917 }; 2918 } StartMultiMediaTransmission; /*!< Start MultiMedia Transmission Message Structure */ 2919 2920 struct { 2921 union { 2922 struct { 2923 uint32_t lel_callReference; /*!< Call Reference */ 2924 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2925 uint32_t lel_callReference1; /*!< Call Reference1 */ 2926 uint32_t bel_ipAddr; /*!< This field is apparently in big-endian format, even though most other fields are little-endian. */ 2927 uint32_t lel_portNumber; /*!< Port Number */ 2928 skinny_mediastatus_t lel_mediastatus; /*!< Start Media Transmission Status */ 2929 uint32_t lel_unknown; /*!< Unknown (Does this actually Exist) */ 2930 } v3; 2931 2932 struct { 2933 uint32_t lel_callReference; /*!< Call Reference */ 2934 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2935 uint32_t lel_callReference1; /*!< Call Reference 1 */ 2936 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 2937 char bel_ipAddr[16]; /*!< This field is apparently in big-endian format, even though most other fields are in little-endian format. */ 2938 uint32_t lel_portNumber; /*!< Port Number */ 2939 skinny_mediastatus_t lel_mediastatus; /*!< startmediatransmission status */ 2940 uint32_t lel_unknown; /*!< Unknown (Does this actually Exist)*/ 2941 } v17; 2942 }; 2943 } StartMultiMediaTransmissionAck; /*!< Start Media Transmission Acknowledgement Structure */ 2944 2945 struct { 2946 uint32_t lel_lineInstance; /*!< Line Instance */ 2947 } ActivateCallPlaneMessage; /*!< Activate Call Plane Message Structure */ 2948 2949 struct { 2950 uint8_t dummy; 2951 } DeactivateCallPlaneMessage; /*!< Deactivate Call Plane Message Structure */ 2952 2953 struct { 2954 uint32_t lel_status; /*!< Status */ 2955 } UnregisterAckMessage; /*!< Unregister Ackknowledge Message Structure */ 2956 2957 struct { 2958 uint32_t lel_lineInstance; /*!< Line Instance */ 2959 uint32_t lel_callReference; /*!< Call Reference */ 2960 } BackSpaceResMessage; /*!< Back Space Request Message Message Structure */ 2961 2962 struct { 2963 uint8_t dummy; 2964 } RegisterTokenAck; /*!< Register Token Ackknowledge Message Structure */ 2965 2966 struct { 2967 uint32_t lel_tokenRejWaitTime; /*!< Back Off Time */ 2968 } RegisterTokenReject; /*!< Register Token Reject Message Structure */ 2969 2970 /*! 2971 * 2972 * \since 20100103 -MC 2973 */ 2974 struct { 2975 uint32_t lel_conferenceID; /*!< Conference ID */ 2976 uint32_t lel_passThruPartyId; /*!< Pass Through Party ID */ 2977 uint32_t lel_callReference; /*!< Call Reference */ 2978 uint32_t maxBitRate; /*!< Maximum BitRate */ 2979 } FlowControlCommandMessage; 2980 2981 /* SCCP Firmware version > 9.1 */ 2982 struct { 2983 char le_data[StationMaxXMLAlarmMessage]; /*!< XML Alarm Message Data */ 2984 } XMLAlarmMessage; /*!< XML Alarm Message Structure */ 2985 2986 struct { 2987 uint32_t lel_unknown; 2988 } CallCountReqMessage; /*!< CallCount Request Message Structure (@see https://sourceforge.net/p/chan-sccp-b/bugs/173/?page=1) */ 2989 2990 /* SPA */ 2991 struct { 2992 StationIdentifier sId; /*!< Station Identifier */ 2993 uint32_t lel_stationIpAddr; /*!< Station IP Address */ 2994 skinny_devicetype_t lel_deviceType; /*!< Device Type as part of SKINNY_DEVICETYPE_* */ 2995 uint32_t maxStreams; /*!< Max Streams */ 2996 } SPCPRegisterTokenRequest; 2997 2998 struct { 2999 uint32_t lel_features; 3000 } SPCPRegisterTokenAck; 3001 3002 struct { 3003 uint32_t lel_features; 3004 } SPCPRegisterTokenReject; 3005 3006 /* 3007 * This was sent by a single 7970 with one CP-7914 attached. 3008 * Message is related to Addons and i suppose it notifies their 3009 * number, capacity and index. 3010 * Unhandled SCCP Message: unknown(0x0159) 168 bytes length 3011 00000000 - A8 00 00 00 00 00 00 00 59 01 00 00 01 00 00 00 - ........Y....... 3012 00000010 - 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 - ................ 3013 00000020 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3014 00000030 - 6D 61 78 2D 63 68 61 69 6E 65 64 3D 32 20 64 65 - max-chained=2 de 3015 00000040 - 76 69 63 65 4C 69 6E 65 3D 31 34 00 00 00 00 00 - viceLine=14..... 3016 00000050 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3017 00000060 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3018 00000070 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3019 00000080 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3020 00000090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3021 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3022 * 3023 * This was sent by a single 7970 with one CP-7914 attached. 3024 * Message is related to Addons and i suppose it notifies their 3025 * number, capacity and index. 3026 00000000 - B0 00 00 00 00 00 00 00 59 01 00 00 01 00 00 00 - ........Y....... 3027 00000010 - 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 - ................ 3028 00000020 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3029 00000030 - 6D 61 78 2D 63 68 61 69 6E 65 64 3D 32 20 64 65 - max-chained=2 de 3030 00000040 - 76 69 63 65 4C 69 6E 65 3D 32 34 00 00 00 00 00 - viceLine=24..... 3031 00000050 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3032 00000060 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3033 00000070 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3034 00000080 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3035 00000090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3036 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3037 000000B0 - 00 00 00 00 00 00 00 00 - ........ 3038 * This was sent by a single 7962 with one CP-7915 attached. 3039 * Message is related to Addons and i suppose it notifies their 3040 * number, capacity and index. 3041 * 3042 00000000 - a8 00 00 00 00 00 00 00 59 01 00 00 01 00 00 00 - ........Y....... 3043 00000010 - 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 - ................ 3044 00000020 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3045 00000030 - 6d 61 78 2d 63 68 61 69 6e 65 64 3d 32 20 64 65 - max-chained=2 de 3046 00000040 - 76 69 63 65 4c 69 6e 65 3d 32 34 00 00 00 00 00 - viceLine=24..... 3047 00000050 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3048 00000060 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3049 00000070 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3050 00000080 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3051 00000090 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3052 000000a0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3053 */ 3054 struct { 3055 uint32_t lel_instance; 3056 uint32_t lel_type; 3057 uint32_t lel_maxAllowed; 3058 uint32_t lel_unknowns[6]; 3059 char text[128]; 3060 } ExtensionDeviceCaps; 3061 3062 struct { 3063 uint32_t lel_disposition; /*!< Call History Disposition Enum */ 3064 uint32_t lel_lineInstance; 3065 uint32_t lel_callReference; 3066 } CallHistoryDispositionMessage; 3067 3068 /* 3069 * Fixed Size XML Message 3070 * 00000000 - 68 09 00 00 00 00 00 00 57 01 00 00 3C 49 6E 74 - h.......W...<Int 3071 * 00000010 - 65 72 66 61 63 65 31 3E 3C 77 69 66 69 3E 3C 42 - erface1><wifi><B 3072 * 00000020 - 53 53 49 44 3E 45 38 3A 45 44 3A 46 33 3A 31 30 - SSID>E8:ED:F3:10 3073 * 00000030 - 3A 32 39 3A 46 44 3C 2F 42 53 53 49 44 3E 3C 53 - :29:FD</BSSID><S 3074 * 00000040 - 53 49 44 3E 77 70 61 5F 70 68 79 3C 2F 53 53 49 - SID>wpa_phy</SSI 3075 * 00000050 - 44 3E 3C 41 50 4E 61 6D 65 3E 4D 6F 73 5F 41 50 - D><APName>Mos_AP 3076 * 00000060 - 33 5F 37 63 36 39 2E 66 36 3C 2F 41 50 4E 61 6D - 3_7c69.f6</APNam 3077 * 00000070 - 65 3E 3C 2F 77 69 66 69 3E 3C 4F 66 66 50 72 65 - e></wifi><OffPre 3078 * 00000080 - 6D 3E 3C 2F 4F 66 66 50 72 65 6D 3E 3C 2F 49 6E - m></OffPrem></In 3079 * 00000090 - 74 65 72 66 61 63 65 31 3E 00 00 00 00 00 00 00 - terface1>....... 3080 * 000000A0 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3081 * ... 3082 * 00000960 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 3083 */ 3084 struct { 3085 char xmldata[2404]; 3086 } LocationInfoMessage; 3087 3088 // empty / unresearched structs 3089 // 00000000 - 08 00 00 00 00 00 00 00 2D 00 00 00 00 00 00 00 // 7960 -- 6 buttons 3090 // 00000000 - 08 00 00 00 16 00 00 00 2D 00 00 00 02 00 00 00 // 7962 -- 6 buttons 3091 // 00000000 - 08 00 00 00 16 00 00 00 2D 00 00 00 02 00 00 00 // 7970 -- 8 buttons 3092 struct { 3093 uint32_t maxAvailLines; 3094 } RegisterAvailableLinesMessage; 3095 3096 struct { 3097 uint8_t dummy; 3098 } StartMediaFailureDetection; 3099 3100 struct { 3101 uint8_t dummy; 3102 } NotifyDtmfToneMessage; 3103 3104 struct { 3105 uint8_t dummy; 3106 } SendDtmfToneMessage; 3107 3108 struct { 3109 uint8_t dummy; 3110 } SubscribeDtmfPayloadReqMessage; 3111 3112 struct { 3113 uint8_t dummy; 3114 } SubscribeDtmfPayloadResMessage; 3115 3116 struct { 3117 uint8_t dummy; 3118 } SubscribeDtmfPayloadErrMessage; 3119 3120 struct { 3121 uint8_t dummy; 3122 } UnSubscribeDtmfPayloadReqMessage; 3123 3124 struct { 3125 uint8_t dummy; 3126 } UnSubscribeDtmfPayloadResMessage; 3127 3128 struct { 3129 uint8_t dummy; 3130 } UnSubscribeDtmfPayloadErrMessage; 3131 3132 struct { 3133 uint32_t lel_conferenceID; /*!< Conference ID */ 3134 uint32_t lel_numberOfReservedParticipants; /*!< Number of Reserved Participants */ 3135 uint32_t lel_resourceType; /*!< Resource Type: Conf:0x00, IVR:0x01 */ 3136 uint32_t lel_appID; /*!< Application ID */ 3137 char appConfID[32]; /*!< Application ConfID */ 3138 char lel_appData[24]; /*!< Application Data */ 3139 uint32_t lel_dataLength; /*!< Application DataLength */ 3140 char lel_passThruData[]; /*!< Pass Through Data (variable size / max 2000)*/ 3141 } CreateConferenceReqMessage; /*!< Create Conference Request Message Structure */ 3142 3143 struct { 3144 uint32_t lel_conferenceID; /*!< Conference ID */ 3145 uint32_t lel_result; /*!< Result ENUM(OK:0x00, ResourceNotAvailable: 0x01, ConferenceAlreadyExists: 0x02, SystemErr:0x03) */ 3146 uint32_t lel_dataLength; /*!< Application DataLength */ 3147 char lel_passThruData[]; /*!< Pass Through Data (variable size / max 2000)*/ 3148 } CreateConferenceResMessage; 3149 3150 struct { 3151 uint32_t lel_conferenceID; /*!< Conference ID */ 3152 } DeleteConferenceReqMessage; /*!< Delete Conference Request Message Structure */ 3153 3154 struct { 3155 uint32_t lel_conferenceID; /*!< Conference ID */ 3156 uint32_t lel_result; /*!< Result ENUM(OK:0x00, ConferenceDoesNotExist: 0x01, SystemErr: 0x02)*/ 3157 } DeleteConferenceResMessage; 3158 3159 struct { 3160 uint32_t lel_conferenceID; /*!< Conference ID */ 3161 uint32_t lel_numberOfReservedParticipants; /*!< Number of Participants to be reserved */ 3162 uint32_t lel_appID; /*!< App ID */ 3163 char appConfID[StationMaxDisplayTextSize]; /*!< app Conf ID */ 3164 char appData[StationMaxDirnumSize]; /*!< Add Data */ 3165 uint32_t lel_dataLength; /*!< Application DataLength */ 3166 char lel_passThruData[]; /*!< Pass Through Data (variable size / max 2000)*/ 3167 } ModifyConferenceReqMessage; 3168 3169 struct { 3170 uint32_t lel_conferenceID; /*!< Conference ID */ 3171 uint32_t lel_result; /*!< Result ENUM(OK:0x00, ResourceNotAvailable: 0x01, ConferenceDoesNotExist: 0x02, InvalidParameter: 0x03, MoreActiveCallsThanReserved: 0x04, InvalidResourceType:0x05, SystemErr:0x06) */ 3172 uint32_t lel_dataLength; /*!< Application DataLength */ 3173 char lel_passThruData[]; /*!< Pass Through Data (variable size / max 2000)*/ 3174 } ModifyConferenceResMessage; 3175 3176 struct { 3177 uint32_t lel_conferenceID; /*!< Conference ID */ 3178 uint32_t lel_callReference; /*!< Call Reference */ 3179 uint32_t partyPIRestrictionBits; /*!< Party PI Restriction Bits Structure 3180 0 RestrictCallingPartyName 3181 1 RestrictCallingPartyNumber 3182 2 RestrictCalledPartyName 3183 3 RestrictCalledPartyNumber 3184 4 RestrictOriginalCalledPartyName 3185 5 RestrictOriginalCalledPartyNumber 3186 6 RestrictLastRedirectPartyName 3187 7 RestrictLastRedirectPartyNumber */ 3188 char participantName[StationMaxNameSize]; /*!< Participant Name */ 3189 char participantNumber[StationMaxDirnumSize]; /*!< Participant Number */ 3190 char conferenceName[StationMaxDisplayTextSize]; /*!< Conference Name*/ 3191 } AddParticipantReqMessage; /*!< Add Participent to Conference Request Message*/ 3192 3193 struct { 3194 uint32_t lel_conferenceID; /*!< Conference ID */ 3195 uint32_t lel_callReference; /*!< Call Reference */ 3196 uint32_t lel_result; /*!< Result ENUM(OK:0x00, ResourceNotAvailable: 0x01, ConferenceDoesNotExist: 0x02, DeplicateCallReference:0x03, SystemErr:0x04) */ 3197 uint32_t lel_bridgeParticipantID; /*!< Birdge Participant ID */ 3198 } AddParticipantResMessage; 3199 3200 struct { 3201 uint8_t dummy; 3202 } AuditConferenceReqMessage; 3203 3204 struct { 3205 uint32_t lel_last; /*!< last */ 3206 uint32_t lel_numberOfEntries; /*!< Number Of Entries */ 3207 struct { 3208 uint32_t lel_conferenceID; /*!< Conference ID */ 3209 uint32_t lel_resourceType; /*!< Resource Type. Enum(Conf:0x00, IVR:0x01) */ 3210 uint32_t lel_numberOfReservedParticipants; /*!< Number of Reserved Participants */ 3211 uint32_t lel_numberOfActiveParticipants; /*!< Number of Active Participants */ 3212 uint32_t lel_appID; /*!< App ID */ 3213 char appConfID[StationMaxDisplayTextSize]; /*!< app Conf ID */ 3214 char appData[StationMaxDirnumSize]; /*!< Add Data */ 3215 } conferenceEntry[]; /*!< variable size / max 32*/ 3216 } AuditConferenceResMessage; 3217 3218 struct { 3219 uint32_t lel_conferenceID; /*!< Conference ID */ 3220 } AuditParticipantReqMessage; 3221 3222 struct { 3223 uint32_t lel_result; /*!< Result. Enum(OK:0x00, ConferenceDoesNotExist:0x01) */ 3224 uint32_t lel_last; /*!< last */ 3225 uint32_t lel_conferenceID; /*!< Conference ID */ 3226 uint32_t lel_numberOfEntries; /*!< Number Of Entries */ 3227 char participantEntry[]; /*!< variable size: max 256 */ 3228 } AuditParticipantResMessage; 3229 3230 struct { 3231 uint32_t lel_conferenceID; /*!< Conference ID */ 3232 uint32_t lel_callReference; /*!< Call Reference */ 3233 uint32_t partyPIRestrictionBits; /*!< Party PI Restriction Bits Structure 3234 0 RestrictCallingPartyName 3235 1 RestrictCallingPartyNumber 3236 2 RestrictCalledPartyName 3237 3 RestrictCalledPartyNumber 3238 4 RestrictOriginalCalledPartyName 3239 5 RestrictOriginalCalledPartyNumber 3240 6 RestrictLastRedirectPartyName 3241 7 RestrictLastRedirectPartyNumber */ 3242 char participantName[StationMaxNameSize]; /*!< Participant Name */ 3243 char participantNumber[StationMaxDirnumSize]; /*!< Participant Number */ 3244 char conferenceName[StationMaxDisplayTextSize]; /*!< Conference Name*/ 3245 } ChangeParticipantReqMessage; 3246 3247 struct { 3248 uint32_t lel_conferenceID; /*!< Conference ID */ 3249 uint32_t lel_callReference; /*!< Call Reference */ 3250 } DropParticipantReqMessage; 3251 3252 struct { 3253 skinny_announcementList_t announcements[SKINNY_MaxAnnouncementList]; 3254 uint32_t lel_endOfAnnAck; 3255 uint32_t lel_conferenceID; 3256 uint32_t lel_matrixConfPartyID[SKINNY_StationMaxMonitorParties]; 3257 uint32_t lel_hearingConfPartyMask; 3258 uint32_t lel_annPlayMode; 3259 } StartAnnouncementMessage; 3260 3261 struct { 3262 uint32_t lel_conferenceID; 3263 } StopAnnouncementMessage; 3264 3265 struct { 3266 uint32_t lel_conferenceID; 3267 uint32_t lel_annPlayStatus; 3268 } AnnouncementFinishMessage; 3269 3270 struct { 3271 uint32_t lel_conferenceId; /*!< Conference ID */ 3272 uint32_t lel_callReference; /*!< Call Reference */ 3273 uint32_t lel_passThruPartyId; /*!< Pass Through ID*/ 3274 uint32_t lel_mediaTransportType; /*!< Skinny mediaTransportType Enum */ 3275 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 3276 skinny_mediaType_t lel_mediaType; /*!< Skinny mediaType Enum */ 3277 } PortRequestMessage; /*!< Port Request Message Structure */ 3278 3279 struct { 3280 union { 3281 struct { 3282 uint32_t lel_conferenceId; /*!< Conference ID */ 3283 uint32_t lel_callReference; /*!< Call Reference */ 3284 uint32_t lel_passThruPartyId; /*!< Pass Through ID*/ 3285 uint32_t bel_ipAddr; /*!< Ip Address Array (This field is apparently in big-endian format, even though most other fields are in little-endian format.) */ 3286 uint32_t lel_portNumber; /*!< Port Number */ 3287 uint32_t lel_RTCPPortNumber; /*!< RTCP Port Number */ 3288 } v3; 3289 struct { 3290 uint32_t lel_conferenceId; /*!< Conference ID */ 3291 uint32_t lel_callReference; /*!< Call Reference */ 3292 uint32_t lel_passThruPartyId; /*!< Pass Through ID*/ 3293 uint32_t lel_ipv46; /*!< ipv4 / ipv6 */ 3294 char bel_ipAddr[16]; /*!< This field is apparently in big-endian format, even though most other fields are in little-endian format. */ 3295 uint32_t lel_portNumber; /*!< Port Number */ 3296 uint32_t lel_RTCPPortNumber; /*!< RTCP Port Number */ 3297 skinny_mediaType_t lel_mediaType; /*!< Skinny Media Type (Enum) */ 3298 } v19; 3299 }; 3300 } PortResponseMessage; /*!< Port Response Message Structure */ 3301 3302 struct { 3303 uint32_t lel_conferenceId; /*!< Conference ID */ 3304 uint32_t lel_callReference; /*!< Call Reference */ 3305 uint32_t lel_passThruPartyId; /*!< Pass Through ID*/ 3306 skinny_mediaType_t lel_mediaType; /*!< Skinny Media Type (Enum) */ 3307 } PortCloseMessage; /*!< Port Close Message Structure */ 3308 3309 struct { 3310 uint8_t dummy; 3311 } QoSResvNotifyMessage; /*!< QoS Resv Notify Message Structure */ 3312 3313 struct { 3314 uint8_t dummy; 3315 } QoSErrorNotifyMessage; /*!< QoS Error Notify Message Structure */ 3316 3317 3318 struct { 3319 uint8_t dummy; 3320 } QoSListenMessage; /*!< QoS Listen Message Structure */ 3321 3322 struct { 3323 uint8_t dummy; 3324 } QoSPathMessage; /*!< QoS Path Message Structure */ 3325 3326 struct { 3327 uint8_t dummy; 3328 } QoSTeardownMessage; /*!< QoS Teardown Message Structure */ 3329 3330 struct { 3331 uint8_t dummy; 3332 } UpdateDSCPMessage; /*!< Update DSCP Message Structure */ 3333 3334 struct { 3335 uint8_t dummy; 3336 } QoSModifyMessage; /*!< QoS Modify Message Structure */ 3337 3338 struct { 3339 uint8_t dummy; 3340 } MwiResponseMessage; /*!< Mwi Response Message Structure */ 3341 3342 struct { 3343 uint8_t dummy; 3344 } CallCountRespMessage; /*!< CallCount Response Message Structure */ 3345 3346 struct { 3347 uint32_t lel_callReference; 3348 uint32_t lel_status; 3349 } RecordingStatusMessage; /*!< Recording Status Message Structure */ 3350 3351 //struct { 3352 //} UnknownVGMessage; 3353 } sccp_data_t; /*!< SKINNY Data Structure */ 3354 3355 /*! 3356 * \brief SKINNY Message Header Structure 3357 */ 3358 struct sccp_header { 3359 uint32_t length; /*!< Message Length */ 3360 uint32_t lel_protocolVer; /*!< Protocol Version Message */ 3361 sccp_mid_t lel_messageId; /*!< Message ID, the messageId is not part of the skinny header, so it is counted in length */ 3362 }; 3363 3364 /*! 3365 * \brief SKINNY Message Structure 3366 */ 3367 struct sccp_msg { 3368 sccp_header_t header; /*!< Message Header */ 3369 sccp_data_t data; /*!< Message [SCCP Data] */ 3370 }; 3371 3372 //#define messagePtr sccp_msg_t * const 3373 //#define constMessagePtr const sccp_msg_t * const 3374 3375 /* So in theory, a message should never be bigger than this. 3376 * If it is, we abort the connection */ 3377 #define SCCP_MAX_PACKET sizeof(sccp_msg_t) 3378 #define SCCP_PACKET_HEADER sizeof(sccp_header_t) 3379 3380 /*! 3381 * \brief SCCP Message Type Structure 3382 */ 3383 #define offsize(TYPE, MEMBER) sizeof(((TYPE *)0)->MEMBER) 3384 struct messageinfo { 3385 sccp_mid_t messageId; 3386 const char *const text; 3387 const size_t size; 3388 skinny_msgType_t type; 3389 skinny_msgDirection_t direction; 3390 }; 3391 3392 extern const struct messageinfo sccp_messageinfo[]; 3393 extern const struct messageinfo spcp_messageinfo[]; 3394 SCCP_INLINE struct messageinfo * SCCP_CALL lookupMsgInfoStruct(uint32_t messageId); 3395 SCCP_INLINE const char * SCCP_CALL msginfo2str(sccp_mid_t msgId); 3396 3397 /*! 3398 * \brief SCCP Device Protocol Callback Structure 3399 * 3400 * Connect Specific CallBack-Functions to Particular SCCP Protocol Versions 3401 */ 3402 typedef struct { 3403 //const char *name; /*! protocol name ( SCCP | SPCP ) */ 3404 const uint16_t type; /*! (SCCP_PROTOCOL | SPCP_PROTOCOL) */ 3405 const uint8_t version; /*! the protocol version number */ 3406 const uint16_t registrationFinishedMessageId; /*! use this message id to determine that the device is fully registered */ 3407 3408 /* protocol callbacks */ 3409 /* send messages */ 3410 void (*const sendCallInfo) (const sccp_callinfo_t * const ci, const uint32_t callid, const skinny_calltype_t calltype, const uint8_t lineInstance, const uint8_t callInstance, const skinny_callsecuritystate_t callsecurityState, constDevicePtr device); 3411 void (*const sendDialedNumber) (constDevicePtr device, const uint8_t lineInstance, const uint32_t callid, const char dialedNumber[SCCP_MAX_EXTENSION]); 3412 void (*const sendRegisterAck) (constDevicePtr device, uint8_t keepAliveInterval, uint8_t secondaryKeepAlive, char *dateformat); 3413 void (*const displayPrompt) (constDevicePtr device, uint8_t lineInstance, uint32_t callid, uint8_t timeout, const char *message); 3414 void (*const displayNotify) (constDevicePtr device, uint8_t timeout, const char *message); 3415 void (*const displayPriNotify) (constDevicePtr device, uint8_t priority, uint8_t timeout, const char *message); 3416 void (*const sendCallForwardStatus)(constDevicePtr device, const sccp_linedevice_t * ld); 3417 void (*const sendUserToDeviceDataVersionMessage) (constDevicePtr device, uint32_t appID, uint32_t lineInstance, uint32_t callReference, uint32_t transactionID, const char *xmlData, uint8_t priority); 3418 void (*const sendMultiMediaCommand) (constDevicePtr device, constChannelPtr channel, skinny_miscCommandType_t command); 3419 void (*const sendOpenReceiveChannel)(constDevicePtr device, constChannelPtr channel); 3420 void (*const sendOpenMultiMediaChannel)(constDevicePtr device, constChannelPtr channel, skinny_codec_t skinnyFormat, int payloadType, uint8_t linInstance, int bitrate); 3421 void (*const sendStartMultiMediaTransmission) (constDevicePtr device, constChannelPtr channel, int payloadType, int bitRate); 3422 void (*const sendStartMediaTransmission) (constDevicePtr device, constChannelPtr channel); 3423 void (*const sendConnectionStatisticsReq) (constDevicePtr device, constChannelPtr channel, uint8_t clear); 3424 void (*const sendPortRequest) (constDevicePtr device, constChannelPtr channel, skinny_mediaTransportType_t mediaTransportType, skinny_mediaType_t mediaType); 3425 void (*const sendPortClose) (constDevicePtr device, constChannelPtr channel, skinny_mediaType_t mediaType); 3426 void (*const sendLineStatResp) (constDevicePtr device, uint32_t lineNumber, char *dirNumber, char *fullyQualifiedDisplayName, char *displayName); 3427 3428 /* parse received messages */ 3429 void (*const parseOpenReceiveChannelAck) (constMessagePtr msg, skinny_mediastatus_t * mediastatus, struct sockaddr_storage * ss, uint32_t * passthrupartyid, uint32_t * callReference); 3430 void (*const parseOpenMultiMediaReceiveChannelAck) (constMessagePtr msg, skinny_mediastatus_t * mediastatus, struct sockaddr_storage * ss, uint32_t * passthrupartyid, uint32_t * callReference); 3431 void (*const parseStartMediaTransmissionAck) (constMessagePtr msg, uint32_t * partyID, uint32_t * callID, uint32_t * callID1, skinny_mediastatus_t * mediastatus, struct sockaddr_storage * ss); 3432 void (*const parseStartMultiMediaTransmissionAck) (constMessagePtr msg, uint32_t * partyID, uint32_t * callID, uint32_t * callID1, skinny_mediastatus_t * mediastatus, struct sockaddr_storage * ss); 3433 void (*const parseEnblocCall) (constMessagePtr msg, char *calledParty, uint32_t * lineInstance); 3434 void (*const parsePortResponse) (constMessagePtr msg, uint32_t *conferenceId, uint32_t *callReference, uint32_t *passThruPartyId, struct sockaddr_storage *ss, uint32_t * RTCPPortNumber, skinny_mediaType_t *mediaType); 3435 } sccp_deviceProtocol_t; /*!< SCCP Device Protocol Callback Structure */ 3436 3437 #define REQ(_x, _y) _x = sccp_build_packet((_y), sizeof((_x)->data._y)) 3438 #define REQCMD(_x, _y) _x = sccp_build_packet((_y), 0) 3439 SCCP_API messagePtr SCCP_CALL sccp_build_packet(sccp_mid_t t, size_t pkt_len); 3440 SCCP_API boolean_t SCCP_CALL sccp_protocol_isProtocolSupported(uint8_t type, uint8_t version); 3441 SCCP_API uint8_t __CONST__ SCCP_CALL sccp_protocol_getMaxSupportedVersionNumber(int type); 3442 SCCP_API const sccp_deviceProtocol_t * SCCP_CALL sccp_protocol_getDeviceProtocol(constDevicePtr device, int type); 3443 SCCP_API const char * const __CONST__ SCCP_CALL skinny_keymode2longstr(skinny_keymode_t keymode); 3444 __END_C_EXTERN__ 3445 // kate: indent-width 8; replace-tabs off; indent-mode cstyle; auto-insert-doxygen on; line-numbers on; tab-indents on; keep-extra-spaces off; auto-brackets off; 3446