/*++ Copyright (c) 2007 Microsoft Corporation Module Name: wwan.h Abstract: Header file for WWAN structures Revision History: DATE DESCRIPTION ------------ ----------- 23-FEB-2007 V0.40 Driver Model Compliant 23-MAY-2007 V0.50 Driver Model Compliant 01-AUG-2007 V0.60 Driver Model Compliant 02-APR-2008 V1.00 Driver Model Compliant --*/ #ifndef __WWAN_DECL__ #define __WWAN_DECL__ #define WWAN_ERROR_UNSUPPORTED_FIRMWARE 0xf0f0f000 #define WWAN_ERROR_COM_PORT_CONFLICT 0xf0f0f001 #define WWAN_ERROR_RESOURCE_CONFLICT_OTHER 0xf0f0ffff typedef ULONG WWAN_STATUS; #define WWAN_STATUS_SUCCESS STATUS_SUCCESS #define WWAN_STATUS_BUSY 0xC0040002 #define WWAN_STATUS_FAILURE 0xC0040003 #define WWAN_STATUS_SIM_NOT_INSERTED 0xC0040004 #define WWAN_STATUS_BAD_SIM 0xC0040005 #define WWAN_STATUS_PIN_REQUIRED 0xC0040006 #define WWAN_STATUS_PIN_DISABLED 0x40040007 #define WWAN_STATUS_NOT_REGISTERED 0x40040008 #define WWAN_STATUS_PROVIDERS_NOT_FOUND 0x40040009 #define WWAN_STATUS_NO_DEVICE_SUPPORT 0xC004000a #define WWAN_STATUS_PROVIDER_NOT_VISIBLE 0x4004000b #define WWAN_STATUS_DATA_CLASS_NOT_AVAILABLE 0x4004000c #define WWAN_STATUS_PACKET_SVC_DETACHED 0xC004000d #define WWAN_STATUS_MAX_ACTIVATED_CONTEXTS 0xC004000e #define WWAN_STATUS_NOT_INITIALIZED 0xC004000f #define WWAN_STATUS_VOICE_CALL_IN_PROGRESS 0x40040010 #define WWAN_STATUS_CONTEXT_NOT_ACTIVATED 0xC0040011 #define WWAN_STATUS_SERVICE_NOT_ACTIVATED 0xC0040012 #define WWAN_STATUS_INVALID_ACCESS_STRING 0xC0040013 #define WWAN_STATUS_INVALID_USER_NAME_PWD 0xC0040014 #define WWAN_STATUS_RADIO_POWER_OFF 0xC0040015 #define WWAN_STATUS_INVALID_PARAMETERS 0xC0040016 #define WWAN_STATUS_READ_FAILURE 0xC0040017 #define WWAN_STATUS_WRITE_FAILURE 0xC0040018 //SMS specific error codes #define WWAN_STATUS_SMS_OPERATION_NOT_ALLOWED 0xC0040100 #define WWAN_STATUS_SMS_MEMORY_FAILURE 0xC0040101 #define WWAN_STATUS_SMS_INVALID_MEMORY_INDEX 0xC0040102 #define WWAN_STATUS_SMS_UNKNOWN_SMSC_ADDRESS 0xC0040103 #define WWAN_STATUS_SMS_NETWORK_TIMEOUT 0xC0040104 #define WWAN_STATUS_SMS_MEMORY_FULL 0xC0040105 #define WWAN_STATUS_SMS_UNKNOWN_ERROR 0xC0040106 #define WWAN_STATUS_SMS_FILTER_NOT_SUPPORTED 0xC0040107 #define WWAN_STATUS_SMS_MORE_DATA 0x40040108 #define WWAN_STATUS_SMS_LANG_NOT_SUPPORTED 0xC0040109 #define WWAN_STATUS_SMS_ENCODING_NOT_SUPPORTED 0xC004010A #define WWAN_STATUS_SMS_FORMAT_NOT_SUPPORTED 0xC004010B typedef enum _WWAN_STRUCT_TYPE { WwanStructTN = 0, WwanStructContext, WwanStructProvider, WwanStructSmsPdu, WwanStructReserved0, WwanStructReserved1, WwanStructReserved2, WwanStructSmsCdma, WwanStructReserved3, WwanStructMax } WWAN_STRUCT_TYPE, *PWWAN_STRUCT_TYPE; typedef struct _WWAN_LIST_HEADER { WWAN_STRUCT_TYPE ElementType; ULONG ElementCount; } WWAN_LIST_HEADER, *PWWAN_LIST_HEADER; #define WWAN_MANUFACTURER_LEN 32 #define WWAN_MODEL_LEN 32 #define WWAN_FIRMWARE_LEN 32 #define WWAN_DEVICEID_LEN 18 #define WWAN_CUSTOM_DATA_CLASS_LEN 12 #define WWAN_CUSTOM_BAND_CLASS_LEN 20 #define WWAN_PIN_LEN 12 #define WWAN_PROVIDERID_LEN 7 #define WWAN_PROVIDERNAME_LEN 21 #define WWAN_ROAMTEXT_LEN 64 #define WWAN_ACCESSSTRING_LEN 101 #define WWAN_USERNAME_LEN 256 #define WWAN_PASSWORD_LEN 256 #define WWAN_SUBSCRIBERID_LEN 16 #define WWAN_SIMICCID_LEN 21 #define WWAN_TN_LEN 16 #define WWAN_SCA_MAX_LEN 14 #define WWAN_SMS_ADDRESS_MAX_LEN 16 #define WWAN_SC_TIME_STAMP_MAX_LEN 20 #define WWAN_SMS_CDMA_ADDR_MAX_LEN 50 #define WWAN_SMS_CDMA_TIMESTAMP_MAX_LEN 20 #define WWAN_SMS_MSG_PDU_LEN 183 #define WWAN_SMS_RAW_PDU_LEN (WWAN_SMS_MSG_PDU_LEN - 12) #define WWAN_SMS_PDU_HEX_BUF_LEN (WWAN_SMS_MSG_PDU_LEN * 2) #define WWAN_CDMA_SHORT_MSG_SIZE_UNKNOWN 0 #define WWAN_CDMA_SHORT_MSG_SIZE_MAX 160 #define WWAN_SMS_CDMA_MAX_BUF_LEN 160 #define WWAN_SMS_CDMA_MAX_MSG_LEN WWAN_CDMA_SHORT_MSG_SIZE_MAX #define WWAN_CDMA_DEFAULT_PROVIDER_ID (0) typedef enum _WWAN_ASYNC_GETSET_TYPE { WwanAsyncGetDeviceCaps = 0, WwanAsyncGetReadyInfo, WwanAsyncGetRadioState, WwanAsyncSetRadioState, WwanAsyncGetPin, WwanAsyncSetPin, WwanAsyncGetPinList, WwanAsyncGetHomeProvider, WwanAsyncGetPreferredProviders, WwanAsyncSetPreferredProviders, WwanAsyncGetVisibleProviders, WwanAsyncGetRegisterState, WwanAsyncSetRegisterState, WwanAsyncGetPacketService, WwanAsyncSetPacketService, WwanAsyncGetSignalState, WwanAsyncSetSignalState, WwanAsyncGetConnect, WwanAsyncSetConnect, WwanAsyncGetProvisionedContexts, WwanAsyncSetProvisionedContext, WwanAsyncSetServiceActivation, WwanAsyncGetSmsConfiguration, WwanAsyncSetSmsConfiguration, WwanAsyncSmsRead, WwanAsyncSmsSend, WwanAsyncSmsDelete, WwanAsyncSmsStatus, WwanAsyncSetVendorSpecific, WWAN_ASYNC_GETSET_TYPE_MAX } WWAN_ASYNC_GETSET_TYPE, *PWWAN_ASYNC_GETSET_TYPE; #ifndef WWAN_MAJOR_VERSION #define WWAN_MAJOR_VERSION 1 #endif #ifndef WWAN_MINOR_VERSION #define WWAN_MINOR_VERSION 0 #endif #ifndef WWAN_CURRENT_VERSION #define WWAN_CURRENT_VERSION \ ((WWAN_MAJOR_VERSION << 16) | WWAN_MINOR_VERSION) #endif typedef ULONG WWAN_VERSION; /* A value specifies the version. */ /* bit[16:31]: major version */ /* bit[0:15]: minor version */ #define WWAN_DRIVER_CAPS_NONE 0x00000000 typedef struct _WWAN_DRIVER_CAPS { ULONG ulMajorVersion; ULONG ulMinorVersion; ULONG ulDriverCaps; } WWAN_DRIVER_CAPS, *PWWAN_DRIVER_CAPS; typedef enum _WWAN_DEVICE_TYPE { WwanDeviceTypeUnknown = 0, WwanDeviceTypeEmbedded, WwanDeviceTypeRemovable, WwanDeviceTypeRemote, WwanDeviceTypeMax } WWAN_DEVICE_TYPE, *PWWAN_DEVICE_TYPE; typedef enum _WWAN_CELLULAR_CLASS { WwanCellularClassUnknown = 0, WwanCellularClassGsm, WwanCellularClassCdma, WwanCellularClassMax } WWAN_CELLULAR_CLASS, *PWWAN_CELLULAR_CLASS; typedef enum _WWAN_VOICE_CLASS { WwanVoiceClassUnknown = 0, WwanVoiceClassNoVoice, WwanVoiceClassSeparateVoiceData, WwanVoiceClassSimultaneousVoiceData, WwanVoiceClassMax } WWAN_VOICE_CLASS, *PWWAN_VOICE_CLASS; typedef enum _WWAN_SIM_CLASS { WwanSimClassUnknown = 0, WwanSimClassSimLogical, WwanSimClassSimRemovable, WwanSimClassSimRemote, WwanSimClassMax } WWAN_SIM_CLASS, *PWWAN_SIM_CLASS; #define WWAN_DATA_CLASS_NONE 0x00000000 #define WWAN_DATA_CLASS_GPRS 0x00000001 #define WWAN_DATA_CLASS_EDGE 0x00000002 /* EGPRS */ #define WWAN_DATA_CLASS_UMTS 0x00000004 #define WWAN_DATA_CLASS_HSDPA 0x00000008 #define WWAN_DATA_CLASS_HSUPA 0x00000010 #define WWAN_DATA_CLASS_LTE 0x00000020 #define WWAN_DATA_CLASS_1XRTT 0x00010000 #define WWAN_DATA_CLASS_1XEVDO 0x00020000 #define WWAN_DATA_CLASS_1XEVDO_REVA 0x00040000 #define WWAN_DATA_CLASS_1XEVDV 0x00080000 #define WWAN_DATA_CLASS_3XRTT 0x00100000 #define WWAN_DATA_CLASS_1XEVDO_REVB 0x00200000 /* for future use */ #define WWAN_DATA_CLASS_UMB 0x00400000 #define WWAN_DATA_CLASS_CUSTOM 0x80000000 #define WWAN_BAND_CLASS_UNKNOWN 0x00000000 #define WWAN_BAND_CLASS_0 0x00000001 #define WWAN_BAND_CLASS_I 0x00000002 #define WWAN_BAND_CLASS_II 0x00000004 #define WWAN_BAND_CLASS_III 0x00000008 #define WWAN_BAND_CLASS_IV 0x00000010 #define WWAN_BAND_CLASS_V 0x00000020 #define WWAN_BAND_CLASS_VI 0x00000040 #define WWAN_BAND_CLASS_VII 0x00000080 #define WWAN_BAND_CLASS_VIII 0x00000100 #define WWAN_BAND_CLASS_IX 0x00000200 #define WWAN_BAND_CLASS_X 0x00000400 #define WWAN_BAND_CLASS_XI 0x00000800 #define WWAN_BAND_CLASS_XII 0x00001000 #define WWAN_BAND_CLASS_XIII 0x00002000 #define WWAN_BAND_CLASS_XIV 0x00004000 #define WWAN_BAND_CLASS_XV 0x00008000 #define WWAN_BAND_CLASS_XVI 0x00010000 #define WWAN_BAND_CLASS_XVII 0x00020000 #define WWAN_BAND_CLASS_CUSTOM 0x80000000 #define WWAN_CTRL_CAPS_NONE 0x00000000 #define WWAN_CTRL_CAPS_REG_MANUAL 0x00000001 #define WWAN_CTRL_CAPS_HW_RADIO_SWITCH 0x00000002 #define WWAN_CTRL_CAPS_CDMA_MOBILE_IP 0x00000004 #define WWAN_CTRL_CAPS_CDMA_SIMPLE_IP 0x00000008 #define WWAN_CTRL_CAPS_PROTECT_UNIQUEID 0x00000010 #define WWAN_SMS_CAPS_NONE 0x00000000 #define WWAN_SMS_CAPS_PDU_RECEIVE 0x00000001 #define WWAN_SMS_CAPS_PDU_SEND 0x00000002 #define WWAN_SMS_CAPS_TEXT_RECEIVE 0x00000004 #define WWAN_SMS_CAPS_TEXT_SEND 0x00000008 typedef struct _WWAN_DEVICE_CAPS { WWAN_DEVICE_TYPE WwanDeviceType; WWAN_CELLULAR_CLASS WwanCellularClass; WWAN_VOICE_CLASS WwanVoiceClass; WWAN_SIM_CLASS WwanSimClass; ULONG WwanDataClass; WCHAR CustomDataClass[WWAN_CUSTOM_DATA_CLASS_LEN]; ULONG WwanGsmBandClass; ULONG WwanCdmaBandClass; WCHAR CustomBandClass[WWAN_CUSTOM_BAND_CLASS_LEN]; ULONG WwanSmsCaps; ULONG WwanControlCaps; WCHAR DeviceId [WWAN_DEVICEID_LEN]; WCHAR Manufacturer [WWAN_MANUFACTURER_LEN]; WCHAR Model [WWAN_MODEL_LEN]; WCHAR FirmwareInfo [WWAN_FIRMWARE_LEN]; ULONG MaxActivatedContexts; } WWAN_DEVICE_CAPS, *PWWAN_DEVICE_CAPS; typedef enum _WWAN_READY_STATE { WwanReadyStateOff = 0, /* stack is off */ WwanReadyStateInitialized, /* ready to power up and register */ WwanReadyStateSimNotInserted, /* SIM not inserted */ WwanReadyStateBadSim, /* SIM is invalid */ WwanReadyStateFailure, /* Device failure */ WwanReadyStateNotActivated, /* Device not activated (CDMA) */ WwanReadyStateDeviceLocked /* Device is locked */ } WWAN_READY_STATE, *PWWAN_READY_STATE; typedef enum _WWAN_EMERGENCY_MODE { WwanEmergencyModeOff = 0, WwanEmergencyModeOn, WwanEmergencyModeMax }WWAN_EMERGENCY_MODE, *PWWAN_EMERGENCY_MODE; typedef struct _WWAN_READY_INFO { WWAN_READY_STATE ReadyState; WWAN_EMERGENCY_MODE EmergencyMode; WCHAR SubscriberId [WWAN_SUBSCRIBERID_LEN]; WCHAR SimIccId [WWAN_SIMICCID_LEN]; BYTE CdmaShortMsgSize; WWAN_LIST_HEADER TNListHeader; } WWAN_READY_INFO, *PWWAN_READY_INFO; typedef struct _WWAN_SERVICE_ACTIVATION { ULONG uVendorSpecificBufferSize; } WWAN_SERVICE_ACTIVATION, *PWWAN_SERVICE_ACTIVATION; typedef enum _WWAN_RADIO { WwanRadioOff = 0, WwanRadioOn } WWAN_RADIO, *PWWAN_RADIO; typedef struct _WWAN_RADIO_STATE { WWAN_RADIO HwRadioState; WWAN_RADIO SwRadioState; } WWAN_RADIO_STATE, *PWWAN_RADIO_STATE; typedef enum _WWAN_PIN_TYPE { WwanPinTypeNone = 0, WwanPinTypeCustom, WwanPinTypePin1, WwanPinTypePin2, WwanPinTypeDeviceSimPin, WwanPinTypeDeviceFirstSimPin, WwanPinTypeNetworkPin, WwanPinTypeNetworkSubsetPin, WwanPinTypeSvcProviderPin, WwanPinTypeCorporatePin, WwanPinTypeSubsidyLock, WwanPinTypePuk1, WwanPinTypePuk2, WwanPinTypeDeviceFirstSimPuk, WwanPinTypeNetworkPuk, WwanPinTypeNetworkSubsetPuk, WwanPinTypeSvcProviderPuk, WwanPinTypeCorporatePuk, WwanPinTypeMax } WWAN_PIN_TYPE, *PWWAN_PIN_TYPE; typedef enum _WWAN_PIN_STATE { WwanPinStateNone = 0, WwanPinStateEnter, WwanPinStateMax } WWAN_PIN_STATE, *PWWAN_PIN_STATE; #define WWAN_ATTEMPTS_REMAINING_UNKNOWN ~0 typedef struct _WWAN_PIN_INFO { WWAN_PIN_TYPE PinType; WWAN_PIN_STATE PinState; ULONG AttemptsRemaining; } WWAN_PIN_INFO, *PWWAN_PIN_INFO; typedef enum _WWAN_PIN_OPERATION { WwanPinOperationEnter = 0, WwanPinOperationEnable, WwanPinOperationDisable, WwanPinOperationChange, WwanPinOperationMax } WWAN_PIN_OPERATION, *PWWAN_PIN_OPERATION; typedef struct _WWAN_PIN_ACTION { WWAN_PIN_TYPE PinType; WWAN_PIN_OPERATION PinOperation; WCHAR Pin [WWAN_PIN_LEN]; WCHAR NewPin [WWAN_PIN_LEN]; } WWAN_PIN_ACTION, *PWWAN_PIN_ACTION; typedef enum _WWAN_PIN_FORMAT { WwanPinFormatUnknown = 0, WwanPinFormatNumeric, WwanPinFormatAlphaNumeric, WwanPinFormatMax } WWAN_PIN_FORMAT, *PWWAN_PIN_FORMAT; typedef enum _WWAN_PIN_MODE { WwanPinModeNotSupported = 0, WwanPinModeEnabled, WwanPinModeDisabled, WwanPinModeMax } WWAN_PIN_MODE, *PWWAN_PIN_MODE; #define WWAN_PIN_LENGTH_UNKNOWN ~0 typedef struct _WWAN_PIN_DESC { WWAN_PIN_MODE PinMode; WWAN_PIN_FORMAT PinFormat; ULONG PinLengthMin; ULONG PinLengthMax; } WWAN_PIN_DESC, *PWWAN_PIN_DESC; typedef struct _WWAN_PIN_LIST { WWAN_PIN_DESC WwanPinDescPin1; WWAN_PIN_DESC WwanPinDescPin2; WWAN_PIN_DESC WwanPinDescDeviceSimPin; WWAN_PIN_DESC WwanPinDescDeviceFirstSimPin; WWAN_PIN_DESC WwanPinDescNetworkPin; WWAN_PIN_DESC WwanPinDescNetworkSubsetPin; WWAN_PIN_DESC WwanPinDescSvcProviderPin; WWAN_PIN_DESC WwanPinDescCorporatePin; WWAN_PIN_DESC WwanPinDescSubsidyLock; WWAN_PIN_DESC WwanPinDescCustom; } WWAN_PIN_LIST, *PWWAN_PIN_LIST; #define WWAN_PROVIDER_STATE_UNKNOWN 0x00000000 #define WWAN_PROVIDER_STATE_HOME 0x00000001 #define WWAN_PROVIDER_STATE_FORBIDDEN 0x00000002 #define WWAN_PROVIDER_STATE_PREFERRED 0x00000004 #define WWAN_PROVIDER_STATE_VISIBLE 0x00000008 #define WWAN_PROVIDER_STATE_REGISTERED 0x00000010 typedef struct _WWAN_PROVIDER { WCHAR ProviderId [WWAN_PROVIDERID_LEN]; ULONG ProviderState; WCHAR ProviderName [WWAN_PROVIDERNAME_LEN]; ULONG WwanDataClass; } WWAN_PROVIDER, *PWWAN_PROVIDER; typedef enum _WWAN_REGISTER_ACTION { WwanRegisterActionAutomatic = 0, WwanRegisterActionManual, WwanRegisterActionMax } WWAN_REGISTER_ACTION, *PWWAN_REGISTER_ACTION; typedef struct _WWAN_SET_REGISTER_STATE { WCHAR ProviderId [WWAN_PROVIDERID_LEN]; WWAN_REGISTER_ACTION RegisterAction; ULONG WwanDataClass; } WWAN_SET_REGISTER_STATE, *PWWAN_SET_REGISTER_STATE; typedef enum _WWAN_REGISTER_STATE { WwanRegisterStateUnknown = 0, WwanRegisterStateDeregistered, WwanRegisterStateSearching, WwanRegisterStateHome, WwanRegisterStateRoaming, WwanRegisterStatePartner, WwanRegisterStateDenied, WwanRegisterStateMax } WWAN_REGISTER_STATE, *PWWAN_REGISTER_STATE; typedef enum _WWAN_REGISTER_MODE { WwanRegisterModeUnknown = 0, WwanRegisterModeAutomatic, WwanRegisterModeManual, WwanRegisterModeMax } WWAN_REGISTER_MODE, *PWWAN_REGISTER_MODE; typedef struct _WWAN_REGISTRATION_STATE { ULONG uNwError; WWAN_REGISTER_STATE RegisterState; WWAN_REGISTER_MODE RegisterMode; WCHAR ProviderId [WWAN_PROVIDERID_LEN]; WCHAR ProviderName [WWAN_PROVIDERNAME_LEN]; WCHAR RoamingText [WWAN_ROAMTEXT_LEN]; } WWAN_REGISTRATION_STATE, *PWWAN_REGISTRATION_STATE; typedef enum _WWAN_PACKET_SERVICE_ACTION { WwanPacketServiceActionAttach = 0, WwanPacketServiceActionDetach } WWAN_PACKET_SERVICE_ACTION, *PWWAN_PACKET_SERVICE_ACTION; typedef enum _WWAN_PACKET_SERVICE_STATE { WwanPacketServiceStateUnknown = 0, WwanPacketServiceStateAttaching, WwanPacketServiceStateAttached, WwanPacketServiceStateDetaching, WwanPacketServiceStateDetached } WWAN_PACKET_SERVICE_STATE, *PWWAN_PACKET_SERVICE_STATE; typedef struct _WWAN_PACKET_SERVICE { ULONG uNwError; WWAN_PACKET_SERVICE_STATE PacketServiceState; ULONG AvailableDataClass; ULONG CurrentDataClass; } WWAN_PACKET_SERVICE, *PWWAN_PACKET_SERVICE; #define WWAN_RSSI_UNKNOWN 99 #define WWAN_ERROR_RATE_UNKNOWN 99 typedef struct _WWAN_SIGNAL_STATE { ULONG Rssi; ULONG ErrorRate; ULONG RssiInterval; ULONG RssiThreshold; } WWAN_SIGNAL_STATE, *PWWAN_SIGNAL_STATE; #define WWAN_RSSI_DEFAULT 0xffffffff #define WWAN_RSSI_DISABLE 0 typedef struct _WWAN_SET_SIGNAL_INDICATION { ULONG RssiInterval; ULONG RssiThreshold; } WWAN_SET_SIGNAL_INDICATION, *PWWAN_SET_SIGNAL_INDICATION; typedef enum _WWAN_ACTIVATION_COMMAND { WwanActivationCommandDeactivate = 0, WwanActivationCommandActivate, WwanActivationCommandMax } WWAN_ACTIVATION_COMMAND, *PWWAN_ACTIVATION_COMMAND; typedef enum _WWAN_COMPRESSION { WwanCompressionNone = 0, WwanCompressionEnable, WwanCompressionMax } WWAN_COMPRESSION, *PWWAN_COMPRESSION; typedef enum _WWAN_AUTH_PROTOCOL { WwanAuthProtocolNone = 0, WwanAuthProtocolPap, WwanAuthProtocolChap, WwanAuthProtocolMsChapV2, WwanAuthProtocolMax } WWAN_AUTH_PROTOCOL, *PWWAN_AUTH_PROTOCOL; typedef struct _WWAN_SET_CONTEXT_STATE { ULONG ConnectionId; WWAN_ACTIVATION_COMMAND ActivationCommand; WCHAR AccessString [WWAN_ACCESSSTRING_LEN]; WCHAR UserName [WWAN_USERNAME_LEN]; WCHAR Password [WWAN_PASSWORD_LEN]; WWAN_COMPRESSION Compression; WWAN_AUTH_PROTOCOL AuthType; } WWAN_SET_CONTEXT_STATE, *PWWAN_SET_CONTEXT_STATE; typedef enum _WWAN_ACTIVATION_STATE { WwanActivationStateUnknown = 0, WwanActivationStateActivated, WwanActivationStateActivating, WwanActivationStateDeactivated, WwanActivationStateDeactivating, WwanActivationStateMax } WWAN_ACTIVATION_STATE, *PWWAN_ACTIVATION_STATE; typedef enum _WWAN_VOICE_CALL_STATE { WwanVoiceCallStateNone = 0, WwanVoiceCallStateInProgress, WwanVoiceCallStateHangUp, WwanVoiceCallStateMaximum } WWAN_VOICE_CALL_STATE, *PWWAN_VOICE_CALL_STATE; typedef struct _WWAN_CONTEXT_STATE { ULONG uNwError; ULONG ConnectionId; WWAN_ACTIVATION_STATE ActivationState; WWAN_VOICE_CALL_STATE VoiceCallState; } WWAN_CONTEXT_STATE, *PWWAN_CONTEXT_STATE; typedef enum _WWAN_CONTEXT_TYPE { WwanContextTypeNone = 0, WwanContextTypeInternet, WwanContextTypeVpn, WwanContextTypeVoice, WwanContextTypeVideoShare, WwanContextTypeCustom, WwanContextTypeMax } WWAN_CONTEXT_TYPE, *PWWAN_CONTEXT_TYPE; #define WWAN_CONTEXT_ID_APPEND 0xffffffff typedef struct _WWAN_CONTEXT { ULONG ContextId; WWAN_CONTEXT_TYPE ContextType; WCHAR AccessString [WWAN_ACCESSSTRING_LEN]; WCHAR UserName [WWAN_USERNAME_LEN]; WCHAR Password [WWAN_PASSWORD_LEN]; WWAN_COMPRESSION Compression; WWAN_AUTH_PROTOCOL AuthType; } WWAN_CONTEXT, *PWWAN_CONTEXT; typedef struct _WWAN_SET_CONTEXT { ULONG ContextId; WWAN_CONTEXT_TYPE ContextType; WCHAR AccessString[WWAN_ACCESSSTRING_LEN]; WCHAR UserName[WWAN_USERNAME_LEN]; WCHAR Password[WWAN_PASSWORD_LEN]; WWAN_COMPRESSION Compression; WWAN_AUTH_PROTOCOL AuthType; WCHAR ProviderId[WWAN_PROVIDERID_LEN]; } WWAN_SET_CONTEXT, *PWWAN_SET_CONTEXT; typedef enum _WWAN_SMS_FORMAT { WwanSmsFormatPdu = 0, WwanSmsFormatReserved0, WwanSmsFormatReserved1, WwanSmsFormatReserved2, WwanSmsFormatCdma, WwanSmsFormatMax } WWAN_SMS_FORMAT, *PWWAN_SMS_FORMAT; typedef struct _WWAN_SET_SMS_CONFIGURATION { CHAR ScAddress [WWAN_SMS_ADDRESS_MAX_LEN]; WWAN_SMS_FORMAT SmsFormat; } WWAN_SET_SMS_CONFIGURATION, *PWWAN_SET_SMS_CONFIGURATION; typedef struct _WWAN_SMS_CONFIGURATION { CHAR ScAddress [WWAN_SMS_ADDRESS_MAX_LEN]; WWAN_SMS_FORMAT SmsFormat; ULONG ulMaxMessageIndex; } WWAN_SMS_CONFIGURATION, *PWWAN_SMS_CONFIGURATION; typedef enum _WWAN_SMS_FLAG { WwanSmsFlagAll = 0, WwanSmsFlagIndex, WwanSmsFlagNew, WwanSmsFlagOld, WwanSmsFlagSent, WwanSmsFlagDraft, WwanSmsFlagMax } WWAN_SMS_FLAG, *PWWAN_SMS_FLAG; #define WWAN_MESSAGE_INDEX_NONE 0 typedef struct _WWAN_SMS_FILTER { WWAN_SMS_FLAG Flag; ULONG MessageIndex; } WWAN_SMS_FILTER, *PWWAN_SMS_FILTER; typedef struct _WWAN_SMS_READ { WWAN_SMS_FORMAT SmsFormat; WWAN_SMS_FILTER ReadFilter; } WWAN_SMS_READ, *PWWAN_SMS_READ; typedef enum _WWAN_MSG_STATUS { WwanMsgStatusNew = 0, WwanMsgStatusOld, WwanMsgStatusDraft, WwanMsgStatusSent, WwanMsgStatusMax } WWAN_MSG_STATUS, *PWWAN_MSG_STATUS; typedef enum _WWAN_SMS_CDMA_LANG { WwanSmsCdmaLangUnknown = 0, WwanSmsCdmaLangEnglish, WwanSmsCdmaLangFrench, WwanSmsCdmaLangSpanish, WwanSmsCdmaLangJapanese, WwanSmsCdmaLangKorean, WwanSmsCdmaLangChinese, WwanSmsCdmaLangHebrew, WwanSmsCdmaLangMax } WWAN_SMS_CDMA_LANG, *PWWAN_SMS_CDMA_LANG; typedef enum _WWAN_SMS_CDMA_ENCODING { WwanSmsCdmaEncodingOctet = 0, WwanSmsCdmaEncodingEpm, WwanSmsCdmaEncoding7BitAscii, WwanSmsCdmaEncodingIa5, WwanSmsCdmaEncodingUnicode, WwanSmsCdmaEncodingShiftJis, WwanSmsCdmaEncodingKorean, WwanSmsCdmaEncodingLatinHebrew, WwanSmsCdmaEncodingLatin, WwanSmsCdmaEncodingGsm7Bit, WwanSmsCdmaEncodingMax } WWAN_SMS_CDMA_ENCODING, *PWWAN_SMS_CDMA_ENCODING; typedef struct _WWAN_SMS_CDMA_RECORD { ULONG MessageIndex; WWAN_MSG_STATUS MsgStatus; CHAR Address[WWAN_SMS_CDMA_ADDR_MAX_LEN]; CHAR ScTimeStamp[WWAN_SMS_CDMA_TIMESTAMP_MAX_LEN]; WWAN_SMS_CDMA_ENCODING EncodingId; WWAN_SMS_CDMA_LANG LanguageId; USHORT SizeInBytes; BYTE SizeInCharacters; BYTE EncodedMsg [WWAN_SMS_CDMA_MAX_BUF_LEN]; } WWAN_SMS_CDMA_RECORD, *PWWAN_SMS_CDMA_RECORD; typedef struct _WWAN_SMS_PDU_RECORD { ULONG MessageIndex; WWAN_MSG_STATUS MsgStatus; BYTE Size; CHAR PduData [WWAN_SMS_PDU_HEX_BUF_LEN]; } WWAN_SMS_PDU_RECORD, *PWWAN_SMS_PDU_RECORD; typedef struct _WWAN_SMS_SEND_CDMA { WWAN_SMS_CDMA_ENCODING EncodingId; WWAN_SMS_CDMA_LANG LanguageId; CHAR Address [WWAN_SMS_CDMA_ADDR_MAX_LEN]; USHORT SizeInBytes; BYTE SizeInCharacters; BYTE EncodedMsg [WWAN_SMS_CDMA_MAX_BUF_LEN]; } WWAN_SMS_SEND_CDMA, *PWWAN_SMS_SEND_CDMA; typedef struct _WWAN_SMS_SEND_PDU { BYTE Size; CHAR PduData [WWAN_SMS_PDU_HEX_BUF_LEN]; } WWAN_SMS_SEND_PDU, *PWWAN_SMS_SEND_PDU; typedef struct _WWAN_SMS_SEND { WWAN_SMS_FORMAT SmsFormat; union { WWAN_SMS_SEND_PDU Pdu; WWAN_SMS_SEND_CDMA Cdma; } u; } WWAN_SMS_SEND, *PWWAN_SMS_SEND; #define WWAN_SMS_FLAG_NONE 0x00000000 #define WWAN_SMS_FLAG_MESSAGE_STORE_FULL 0x00000001 #define WWAN_SMS_FLAG_NEW_MESSAGE 0x00000002 typedef struct _WWAN_SMS_STATUS { ULONG uFlag; ULONG MessageIndex; } WWAN_SMS_STATUS, *PWWAN_SMS_STATUS; typedef struct _WWAN_SERVICE_ACTIVATION_STATUS { ULONG uNwError; ULONG uVendorSpecificBufferSize; } WWAN_SERVICE_ACTIVATION_STATUS,*PWWAN_SERVICE_ACTIVATION_STATUS; typedef struct _WWAN_VENDOR_SPECIFIC { ULONG uVendorSpecificBufferSize; } WWAN_VENDOR_SPECIFIC, *PWWAN_VENDOR_SPECIFIC; #endif