1 1.2 skrll /* $NetBSD: if_umbreg.h,v 1.2 2020/03/21 06:54:32 skrll Exp $ */ 2 1.1 khorben /* $OpenBSD: if_umb.h,v 1.4 2017/04/18 13:27:55 gerhard Exp $ */ 3 1.1 khorben 4 1.1 khorben /* 5 1.1 khorben * Copyright (c) 2016 genua mbH 6 1.1 khorben * All rights reserved. 7 1.1 khorben * 8 1.1 khorben * Permission to use, copy, modify, and distribute this software for any 9 1.1 khorben * purpose with or without fee is hereby granted, provided that the above 10 1.1 khorben * copyright notice and this permission notice appear in all copies. 11 1.1 khorben * 12 1.1 khorben * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13 1.1 khorben * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14 1.1 khorben * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 15 1.1 khorben * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16 1.1 khorben * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17 1.1 khorben * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18 1.1 khorben * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 1.1 khorben */ 20 1.1 khorben 21 1.1 khorben /* 22 1.1 khorben * Mobile Broadband Interface Model 23 1.1 khorben * http://www.usb.org/developers/docs/devclass_docs/MBIM-Compliance-1.0.pdf 24 1.1 khorben */ 25 1.1 khorben #ifndef _IF_UMBREG_H_ 26 1.1 khorben #define _IF_UMBREG_H_ 27 1.1 khorben 28 1.1 khorben struct umb_valdescr { 29 1.1 khorben int val; 30 1.1 khorben char const *descr; 31 1.1 khorben }; 32 1.1 khorben 33 1.1 khorben static const char * 34 1.1 khorben umb_val2descr(const struct umb_valdescr *vdp, int val) 35 1.1 khorben { 36 1.1 khorben static char sval[32]; 37 1.1 khorben 38 1.1 khorben while (vdp->descr != NULL) { 39 1.1 khorben if (vdp->val == val) 40 1.1 khorben return vdp->descr; 41 1.1 khorben vdp++; 42 1.1 khorben } 43 1.2 skrll snprintf(sval, sizeof(sval), "#%d", val); 44 1.1 khorben return sval; 45 1.1 khorben } 46 1.1 khorben 47 1.1 khorben #define MBIM_REGSTATE_DESCRIPTIONS { \ 48 1.1 khorben { MBIM_REGSTATE_UNKNOWN, "unknown" }, \ 49 1.1 khorben { MBIM_REGSTATE_DEREGISTERED, "not registered" }, \ 50 1.1 khorben { MBIM_REGSTATE_SEARCHING, "searching" }, \ 51 1.1 khorben { MBIM_REGSTATE_HOME, "home network" }, \ 52 1.1 khorben { MBIM_REGSTATE_ROAMING, "roaming network" }, \ 53 1.1 khorben { MBIM_REGSTATE_PARTNER, "partner network" }, \ 54 1.1 khorben { MBIM_REGSTATE_DENIED, "access denied" }, \ 55 1.1 khorben { 0, NULL } } 56 1.1 khorben 57 1.1 khorben #define MBIM_DATACLASS_DESCRIPTIONS { \ 58 1.1 khorben { MBIM_DATACLASS_NONE, "none" }, \ 59 1.1 khorben { MBIM_DATACLASS_GPRS, "GPRS" }, \ 60 1.1 khorben { MBIM_DATACLASS_EDGE, "EDGE" }, \ 61 1.1 khorben { MBIM_DATACLASS_UMTS, "UMTS" }, \ 62 1.1 khorben { MBIM_DATACLASS_HSDPA, "HSDPA" }, \ 63 1.1 khorben { MBIM_DATACLASS_HSUPA, "HSUPA" }, \ 64 1.1 khorben { MBIM_DATACLASS_HSDPA|MBIM_DATACLASS_HSUPA, "HSPA" }, \ 65 1.1 khorben { MBIM_DATACLASS_LTE, "LTE" }, \ 66 1.1 khorben { MBIM_DATACLASS_1XRTT, "CDMA2000" }, \ 67 1.1 khorben { MBIM_DATACLASS_1XEVDO, "CDMA2000" }, \ 68 1.1 khorben { MBIM_DATACLASS_1XEVDO_REV_A, "CDMA2000" }, \ 69 1.1 khorben { MBIM_DATACLASS_1XEVDV, "CDMA2000" }, \ 70 1.1 khorben { MBIM_DATACLASS_3XRTT, "CDMA2000" }, \ 71 1.1 khorben { MBIM_DATACLASS_1XEVDO_REV_B, "CDMA2000" }, \ 72 1.1 khorben { MBIM_DATACLASS_UMB, "CDMA2000" }, \ 73 1.1 khorben { MBIM_DATACLASS_CUSTOM, "custom" }, \ 74 1.1 khorben { 0, NULL } } 75 1.1 khorben 76 1.1 khorben #define MBIM_1TO1_DESCRIPTION(m) { (m), #m } 77 1.1 khorben #define MBIM_MESSAGES_DESCRIPTIONS { \ 78 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_OPEN_MSG), \ 79 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CLOSE_MSG), \ 80 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_COMMAND_MSG), \ 81 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_HOST_ERROR_MSG), \ 82 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_OPEN_DONE), \ 83 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CLOSE_DONE), \ 84 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_COMMAND_DONE), \ 85 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_FUNCTION_ERROR_MSG), \ 86 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_INDICATE_STATUS_MSG), \ 87 1.1 khorben { 0, NULL } } 88 1.1 khorben 89 1.1 khorben #define MBIM_STATUS_DESCRIPTION(m) { MBIM_STATUS_ ## m, #m } 90 1.1 khorben #define MBIM_STATUS_DESCRIPTIONS { \ 91 1.1 khorben MBIM_STATUS_DESCRIPTION(SUCCESS), \ 92 1.1 khorben MBIM_STATUS_DESCRIPTION(BUSY), \ 93 1.1 khorben MBIM_STATUS_DESCRIPTION(FAILURE), \ 94 1.1 khorben MBIM_STATUS_DESCRIPTION(SIM_NOT_INSERTED), \ 95 1.1 khorben MBIM_STATUS_DESCRIPTION(BAD_SIM), \ 96 1.1 khorben MBIM_STATUS_DESCRIPTION(PIN_REQUIRED), \ 97 1.1 khorben MBIM_STATUS_DESCRIPTION(PIN_DISABLED), \ 98 1.1 khorben MBIM_STATUS_DESCRIPTION(NOT_REGISTERED), \ 99 1.1 khorben MBIM_STATUS_DESCRIPTION(PROVIDERS_NOT_FOUND), \ 100 1.1 khorben MBIM_STATUS_DESCRIPTION(NO_DEVICE_SUPPORT), \ 101 1.1 khorben MBIM_STATUS_DESCRIPTION(PROVIDER_NOT_VISIBLE), \ 102 1.1 khorben MBIM_STATUS_DESCRIPTION(DATA_CLASS_NOT_AVAILABLE), \ 103 1.1 khorben MBIM_STATUS_DESCRIPTION(PACKET_SERVICE_DETACHED), \ 104 1.1 khorben MBIM_STATUS_DESCRIPTION(MAX_ACTIVATED_CONTEXTS), \ 105 1.1 khorben MBIM_STATUS_DESCRIPTION(NOT_INITIALIZED), \ 106 1.1 khorben MBIM_STATUS_DESCRIPTION(VOICE_CALL_IN_PROGRESS), \ 107 1.1 khorben MBIM_STATUS_DESCRIPTION(CONTEXT_NOT_ACTIVATED), \ 108 1.1 khorben MBIM_STATUS_DESCRIPTION(SERVICE_NOT_ACTIVATED), \ 109 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_ACCESS_STRING), \ 110 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_USER_NAME_PWD), \ 111 1.1 khorben MBIM_STATUS_DESCRIPTION(RADIO_POWER_OFF), \ 112 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_PARAMETERS), \ 113 1.1 khorben MBIM_STATUS_DESCRIPTION(READ_FAILURE), \ 114 1.1 khorben MBIM_STATUS_DESCRIPTION(WRITE_FAILURE), \ 115 1.1 khorben MBIM_STATUS_DESCRIPTION(NO_PHONEBOOK), \ 116 1.1 khorben MBIM_STATUS_DESCRIPTION(PARAMETER_TOO_LONG), \ 117 1.1 khorben MBIM_STATUS_DESCRIPTION(STK_BUSY), \ 118 1.1 khorben MBIM_STATUS_DESCRIPTION(OPERATION_NOT_ALLOWED), \ 119 1.1 khorben MBIM_STATUS_DESCRIPTION(MEMORY_FAILURE), \ 120 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_MEMORY_INDEX), \ 121 1.1 khorben MBIM_STATUS_DESCRIPTION(MEMORY_FULL), \ 122 1.1 khorben MBIM_STATUS_DESCRIPTION(FILTER_NOT_SUPPORTED), \ 123 1.1 khorben MBIM_STATUS_DESCRIPTION(DSS_INSTANCE_LIMIT), \ 124 1.1 khorben MBIM_STATUS_DESCRIPTION(INVALID_DEVICE_SERVICE_OPERATION), \ 125 1.1 khorben MBIM_STATUS_DESCRIPTION(AUTH_INCORRECT_AUTN), \ 126 1.1 khorben MBIM_STATUS_DESCRIPTION(AUTH_SYNC_FAILURE), \ 127 1.1 khorben MBIM_STATUS_DESCRIPTION(AUTH_AMF_NOT_SET), \ 128 1.1 khorben MBIM_STATUS_DESCRIPTION(CONTEXT_NOT_SUPPORTED), \ 129 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_UNKNOWN_SMSC_ADDRESS), \ 130 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_NETWORK_TIMEOUT), \ 131 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_LANG_NOT_SUPPORTED), \ 132 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_ENCODING_NOT_SUPPORTED), \ 133 1.1 khorben MBIM_STATUS_DESCRIPTION(SMS_FORMAT_NOT_SUPPORTED), \ 134 1.1 khorben { 0, NULL } } 135 1.1 khorben 136 1.1 khorben #define MBIM_ERROR_DESCRIPTION(m) { MBIM_ERROR_ ## m, #m } 137 1.1 khorben #define MBIM_ERROR_DESCRIPTIONS { \ 138 1.1 khorben MBIM_ERROR_DESCRIPTION(TIMEOUT_FRAGMENT), \ 139 1.1 khorben MBIM_ERROR_DESCRIPTION(FRAGMENT_OUT_OF_SEQUENCE), \ 140 1.1 khorben MBIM_ERROR_DESCRIPTION(LENGTH_MISMATCH), \ 141 1.1 khorben MBIM_ERROR_DESCRIPTION(DUPLICATED_TID), \ 142 1.1 khorben MBIM_ERROR_DESCRIPTION(NOT_OPENED), \ 143 1.1 khorben MBIM_ERROR_DESCRIPTION(UNKNOWN), \ 144 1.1 khorben MBIM_ERROR_DESCRIPTION(CANCEL), \ 145 1.1 khorben MBIM_ERROR_DESCRIPTION(MAX_TRANSFER), \ 146 1.1 khorben { 0, NULL } } 147 1.1 khorben 148 1.1 khorben #define MBIM_CID_DESCRIPTIONS { \ 149 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_DEVICE_CAPS), \ 150 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_SUBSCRIBER_READY_STATUS), \ 151 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_RADIO_STATE), \ 152 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PIN), \ 153 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PIN_LIST), \ 154 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_HOME_PROVIDER), \ 155 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PREFERRED_PROVIDERS), \ 156 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_VISIBLE_PROVIDERS), \ 157 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_REGISTER_STATE), \ 158 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PACKET_SERVICE), \ 159 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_SIGNAL_STATE), \ 160 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_CONNECT), \ 161 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PROVISIONED_CONTEXTS), \ 162 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_SERVICE_ACTIVATION), \ 163 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_IP_CONFIGURATION), \ 164 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_DEVICE_SERVICES), \ 165 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_DEVICE_SERVICE_SUBSCRIBE_LIST), \ 166 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_PACKET_STATISTICS), \ 167 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_NETWORK_IDLE_HINT), \ 168 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_EMERGENCY_MODE), \ 169 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_IP_PACKET_FILTERS), \ 170 1.1 khorben MBIM_1TO1_DESCRIPTION(MBIM_CID_MULTICARRIER_PROVIDERS), \ 171 1.1 khorben { 0, NULL } } 172 1.1 khorben 173 1.1 khorben #define MBIM_SIMSTATE_DESCRIPTIONS { \ 174 1.1 khorben { MBIM_SIMSTATE_NOTINITIALIZED, "not initialized" }, \ 175 1.1 khorben { MBIM_SIMSTATE_INITIALIZED, "initialized" }, \ 176 1.1 khorben { MBIM_SIMSTATE_NOTINSERTED, "not inserted" }, \ 177 1.1 khorben { MBIM_SIMSTATE_BADSIM, "bad type" }, \ 178 1.1 khorben { MBIM_SIMSTATE_FAILURE, "failed" }, \ 179 1.1 khorben { MBIM_SIMSTATE_NOTACTIVATED, "not activated" }, \ 180 1.1 khorben { MBIM_SIMSTATE_LOCKED, "locked" }, \ 181 1.1 khorben { 0, NULL } } 182 1.1 khorben 183 1.1 khorben #define MBIM_PINTYPE_DESCRIPTIONS { \ 184 1.1 khorben { MBIM_PIN_TYPE_NONE, "none" }, \ 185 1.1 khorben { MBIM_PIN_TYPE_CUSTOM, "custom" }, \ 186 1.1 khorben { MBIM_PIN_TYPE_PIN1, "PIN1" }, \ 187 1.1 khorben { MBIM_PIN_TYPE_PIN2, "PIN2" }, \ 188 1.1 khorben { MBIM_PIN_TYPE_DEV_SIM_PIN, "device PIN" }, \ 189 1.1 khorben { MBIM_PIN_TYPE_DEV_FIRST_SIM_PIN, "device 1st PIN" }, \ 190 1.1 khorben { MBIM_PIN_TYPE_NETWORK_PIN, "network PIN" }, \ 191 1.1 khorben { MBIM_PIN_TYPE_NETWORK_SUBSET_PIN, "network subset PIN" }, \ 192 1.1 khorben { MBIM_PIN_TYPE_SERVICE_PROVIDER_PIN, "provider PIN" }, \ 193 1.1 khorben { MBIM_PIN_TYPE_CORPORATE_PIN, "corporate PIN" }, \ 194 1.1 khorben { MBIM_PIN_TYPE_SUBSIDY_LOCK, "subsidy lock" }, \ 195 1.1 khorben { MBIM_PIN_TYPE_PUK1, "PUK" }, \ 196 1.1 khorben { MBIM_PIN_TYPE_PUK2, "PUK2" }, \ 197 1.1 khorben { MBIM_PIN_TYPE_DEV_FIRST_SIM_PUK, "device 1st PUK" }, \ 198 1.1 khorben { MBIM_PIN_TYPE_NETWORK_PUK, "network PUK" }, \ 199 1.1 khorben { MBIM_PIN_TYPE_NETWORK_SUBSET_PUK, "network subset PUK" }, \ 200 1.1 khorben { MBIM_PIN_TYPE_SERVICE_PROVIDER_PUK, "provider PUK" }, \ 201 1.1 khorben { MBIM_PIN_TYPE_CORPORATE_PUK, "corporate PUK" }, \ 202 1.1 khorben { 0, NULL } } 203 1.1 khorben 204 1.1 khorben #define MBIM_PKTSRV_STATE_DESCRIPTIONS { \ 205 1.1 khorben { MBIM_PKTSERVICE_STATE_UNKNOWN, "unknown" }, \ 206 1.1 khorben { MBIM_PKTSERVICE_STATE_ATTACHING, "attaching" }, \ 207 1.1 khorben { MBIM_PKTSERVICE_STATE_ATTACHED, "attached" }, \ 208 1.1 khorben { MBIM_PKTSERVICE_STATE_DETACHING, "detaching" }, \ 209 1.1 khorben { MBIM_PKTSERVICE_STATE_DETACHED, "detached" }, \ 210 1.1 khorben { 0, NULL } } 211 1.1 khorben 212 1.1 khorben #define MBIM_ACTIVATION_STATE_DESCRIPTIONS { \ 213 1.1 khorben { MBIM_ACTIVATION_STATE_UNKNOWN, "unknown" }, \ 214 1.1 khorben { MBIM_ACTIVATION_STATE_ACTIVATED, "activated" }, \ 215 1.1 khorben { MBIM_ACTIVATION_STATE_ACTIVATING, "activating" }, \ 216 1.1 khorben { MBIM_ACTIVATION_STATE_DEACTIVATED, "deactivated" }, \ 217 1.1 khorben { MBIM_ACTIVATION_STATE_DEACTIVATING, "deactivating" }, \ 218 1.1 khorben { 0, NULL } } 219 1.1 khorben 220 1.1 khorben /* 221 1.1 khorben * Driver internal state 222 1.1 khorben */ 223 1.1 khorben enum umb_state { 224 1.1 khorben UMB_S_DOWN = 0, /* interface down */ 225 1.1 khorben UMB_S_OPEN, /* MBIM device has been opened */ 226 1.1 khorben UMB_S_CID, /* QMI client id allocated */ 227 1.1 khorben UMB_S_RADIO, /* radio is on */ 228 1.1 khorben UMB_S_SIMREADY, /* SIM is ready */ 229 1.1 khorben UMB_S_ATTACHED, /* packet service is attached */ 230 1.1 khorben UMB_S_CONNECTED, /* connected to provider */ 231 1.1 khorben UMB_S_UP, /* have IP configuration */ 232 1.1 khorben }; 233 1.1 khorben 234 1.1 khorben #define UMB_INTERNAL_STATE_DESCRIPTIONS { \ 235 1.1 khorben { UMB_S_DOWN, "down" }, \ 236 1.1 khorben { UMB_S_OPEN, "open" }, \ 237 1.1 khorben { UMB_S_CID, "CID allocated" }, \ 238 1.1 khorben { UMB_S_RADIO, "radio on" }, \ 239 1.1 khorben { UMB_S_SIMREADY, "SIM is ready" }, \ 240 1.1 khorben { UMB_S_ATTACHED, "attached" }, \ 241 1.1 khorben { UMB_S_CONNECTED, "connected" }, \ 242 1.1 khorben { UMB_S_UP, "up" }, \ 243 1.1 khorben { 0, NULL } } 244 1.1 khorben 245 1.1 khorben /* 246 1.1 khorben * UMB parameters (SIOC[GS]UMBPARAM ioctls) 247 1.1 khorben */ 248 1.1 khorben struct umb_parameter { 249 1.1 khorben int op; 250 1.1 khorben int is_puk; 251 1.1 khorben uint16_t pin[MBIM_PIN_MAXLEN]; 252 1.1 khorben int pinlen; 253 1.1 khorben 254 1.1 khorben char newpin[MBIM_PIN_MAXLEN]; 255 1.1 khorben int newpinlen; 256 1.1 khorben 257 1.1 khorben #define UMB_APN_MAXLEN 100 258 1.1 khorben uint16_t apn[UMB_APN_MAXLEN]; 259 1.1 khorben int apnlen; 260 1.1 khorben 261 1.1 khorben #define UMB_USERNAME_MAXLEN 205 262 1.1 khorben uint16_t username[UMB_USERNAME_MAXLEN]; 263 1.1 khorben int usernamelen; 264 1.1 khorben 265 1.1 khorben #define UMB_PASSWORD_MAXLEN 205 266 1.1 khorben uint16_t password[UMB_PASSWORD_MAXLEN]; 267 1.1 khorben int passwordlen; 268 1.1 khorben 269 1.1 khorben int roaming; 270 1.1 khorben uint32_t preferredclasses; 271 1.1 khorben }; 272 1.1 khorben 273 1.1 khorben /* 274 1.1 khorben * UMB device status info (SIOCGUMBINFO ioctl) 275 1.1 khorben */ 276 1.1 khorben struct umb_info { 277 1.1 khorben enum umb_state state; 278 1.1 khorben int enable_roaming; 279 1.1 khorben #define UMB_PIN_REQUIRED 0 280 1.1 khorben #define UMB_PIN_UNLOCKED 1 281 1.1 khorben #define UMB_PUK_REQUIRED 2 282 1.1 khorben int pin_state; 283 1.1 khorben int pin_attempts_left; 284 1.1 khorben int activation; 285 1.1 khorben int sim_state; 286 1.1 khorben int regstate; 287 1.1 khorben int regmode; 288 1.1 khorben int nwerror; 289 1.1 khorben int packetstate; 290 1.1 khorben uint32_t supportedclasses; /* what the hw supports */ 291 1.1 khorben uint32_t preferredclasses; /* what the user prefers */ 292 1.1 khorben uint32_t highestclass; /* what the network offers */ 293 1.1 khorben uint32_t cellclass; 294 1.1 khorben #define UMB_PROVIDERNAME_MAXLEN 20 295 1.1 khorben uint16_t provider[UMB_PROVIDERNAME_MAXLEN]; 296 1.1 khorben #define UMB_PHONENR_MAXLEN 22 297 1.1 khorben uint16_t pn[UMB_PHONENR_MAXLEN]; 298 1.1 khorben #define UMB_SUBSCRIBERID_MAXLEN 15 299 1.1 khorben uint16_t sid[UMB_SUBSCRIBERID_MAXLEN]; 300 1.1 khorben #define UMB_ICCID_MAXLEN 20 301 1.1 khorben uint16_t iccid[UMB_ICCID_MAXLEN]; 302 1.1 khorben #define UMB_ROAMINGTEXT_MAXLEN 63 303 1.1 khorben uint16_t roamingtxt[UMB_ROAMINGTEXT_MAXLEN]; 304 1.1 khorben 305 1.1 khorben #define UMB_DEVID_MAXLEN 18 306 1.1 khorben uint16_t devid[UMB_DEVID_MAXLEN]; 307 1.1 khorben #define UMB_FWINFO_MAXLEN 30 308 1.1 khorben uint16_t fwinfo[UMB_FWINFO_MAXLEN]; 309 1.1 khorben #define UMB_HWINFO_MAXLEN 30 310 1.1 khorben uint16_t hwinfo[UMB_HWINFO_MAXLEN]; 311 1.1 khorben 312 1.1 khorben uint16_t apn[UMB_APN_MAXLEN]; 313 1.1 khorben int apnlen; 314 1.1 khorben 315 1.1 khorben uint16_t username[UMB_USERNAME_MAXLEN]; 316 1.1 khorben int usernamelen; 317 1.1 khorben 318 1.1 khorben uint16_t password[UMB_PASSWORD_MAXLEN]; 319 1.1 khorben int passwordlen; 320 1.1 khorben 321 1.1 khorben #define UMB_VALUE_UNKNOWN -999 322 1.1 khorben int rssi; 323 1.1 khorben #define UMB_BER_EXCELLENT 0 324 1.1 khorben #define UMB_BER_VERYGOOD 1 325 1.1 khorben #define UMB_BER_GOOD 2 326 1.1 khorben #define UMB_BER_OK 3 327 1.1 khorben #define UMB_BER_MEDIUM 4 328 1.1 khorben #define UMB_BER_BAD 5 329 1.1 khorben #define UMB_BER_VERYBAD 6 330 1.1 khorben #define UMB_BER_EXTREMELYBAD 7 331 1.1 khorben int ber; 332 1.1 khorben 333 1.1 khorben int hw_radio_on; 334 1.1 khorben int sw_radio_on; 335 1.1 khorben 336 1.1 khorben uint64_t uplink_speed; 337 1.1 khorben uint64_t downlink_speed; 338 1.1 khorben 339 1.1 khorben #define UMB_MAX_DNSSRV 2 340 1.1 khorben u_int32_t ipv4dns[UMB_MAX_DNSSRV]; 341 1.1 khorben }; 342 1.1 khorben 343 1.1 khorben #if !defined(ifr_mtu) 344 1.1 khorben #define ifr_mtu ifr_ifru.ifru_metric 345 1.1 khorben #endif 346 1.1 khorben 347 1.1 khorben #ifdef _KERNEL 348 1.1 khorben /* 349 1.1 khorben * UMB device 350 1.1 khorben */ 351 1.1 khorben struct umb_softc { 352 1.1 khorben device_t sc_dev; 353 1.1 khorben struct ifnet sc_if; 354 1.1 khorben #define GET_IFP(sc) (&(sc)->sc_if) 355 1.1 khorben struct ifmedia sc_im; 356 1.1 khorben krndsource_t sc_rnd_source; 357 1.1 khorben struct usbd_device *sc_udev; 358 1.1 khorben 359 1.1 khorben int sc_ver_maj; 360 1.1 khorben int sc_ver_min; 361 1.1 khorben int sc_ctrl_len; 362 1.1 khorben int sc_maxpktlen; 363 1.1 khorben int sc_maxsessions; 364 1.1 khorben 365 1.1 khorben #define UMBFLG_FCC_AUTH_REQUIRED 0x0001 366 1.1 khorben uint32_t sc_flags; 367 1.1 khorben int sc_cid; 368 1.1 khorben 369 1.1 khorben struct usb_task sc_umb_task; 370 1.1 khorben struct usb_task sc_get_response_task; 371 1.1 khorben int sc_nresp; 372 1.1 khorben callout_t sc_statechg_timer; 373 1.1 khorben char sc_dying; 374 1.1 khorben char sc_attached; 375 1.1 khorben 376 1.1 khorben uint8_t sc_ctrl_ifaceno; 377 1.1 khorben struct usbd_pipe *sc_ctrl_pipe; 378 1.1 khorben usb_cdc_notification_t sc_intr_msg; 379 1.1 khorben struct usbd_interface *sc_data_iface; 380 1.1 khorben 381 1.1 khorben void *sc_resp_buf; 382 1.1 khorben void *sc_ctrl_msg; 383 1.1 khorben 384 1.1 khorben int sc_rx_ep; 385 1.1 khorben struct usbd_xfer *sc_rx_xfer; 386 1.1 khorben char *sc_rx_buf; 387 1.1 khorben int sc_rx_bufsz; 388 1.1 khorben struct usbd_pipe *sc_rx_pipe; 389 1.1 khorben unsigned sc_rx_nerr; 390 1.1 khorben 391 1.1 khorben int sc_tx_ep; 392 1.1 khorben struct usbd_xfer *sc_tx_xfer; 393 1.1 khorben char *sc_tx_buf; 394 1.1 khorben int sc_tx_bufsz; 395 1.1 khorben struct usbd_pipe *sc_tx_pipe; 396 1.1 khorben struct mbuf *sc_tx_m; 397 1.1 khorben uint32_t sc_tx_seq; 398 1.1 khorben 399 1.1 khorben uint32_t sc_tid; 400 1.1 khorben 401 1.1 khorben #define sc_state sc_info.state 402 1.1 khorben #define sc_roaming sc_info.enable_roaming 403 1.1 khorben struct umb_info sc_info; 404 1.1 khorben }; 405 1.1 khorben #endif /* _KERNEL */ 406 1.1 khorben 407 1.1 khorben #endif /* _IF_UMBREG_H_ */ 408