While the QCDM and DIAG_NV are the same, in reality they shouldn't be and there should be a mapping between them. That wasn't happening, so fix that up and add a few missing modes to the NV item defines.
119 lines
3.5 KiB
C
119 lines
3.5 KiB
C
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* Copyright (C) 2010 Red Hat, Inc.
|
|
*
|
|
* This program is free software: you can redistribute it and/or
|
|
* modify it under the terms of version 2 of the GNU General Public
|
|
* License as published by the Free Software Foundation
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef LIBQCDM_NV_ITEMS_H
|
|
#define LIBQCDM_NV_ITEMS_H
|
|
|
|
#include <sys/types.h>
|
|
|
|
/* NV read/write status codes */
|
|
typedef enum {
|
|
DIAG_NV_STATUS_OK = 0,
|
|
DIAG_NV_STATUS_BUSY = 1,
|
|
DIAG_NV_STATUS_BAD_COMMAND = 2,
|
|
DIAG_NV_STATUS_MEMORY_FULL = 3,
|
|
DIAG_NV_STATUS_FAILED = 4,
|
|
DIAG_NV_STATUS_INACTIVE = 5, /* NV location not active */
|
|
DIAG_NV_STATUS_BAD_PARAMETER = 6,
|
|
DIAG_NV_STATUS_READ_ONLY = 7, /* NV location is read-only */
|
|
} DMNVStatus;
|
|
|
|
enum {
|
|
DIAG_NV_MODE_PREF = 10, /* Mode preference: 1x, HDR, auto */
|
|
DIAG_NV_DIR_NUMBER = 178, /* Mobile Directory Number (MDN) */
|
|
DIAG_NV_ROAM_PREF = 442, /* Roaming preference */
|
|
DIAG_NV_HYBRID_PREF = 562, /* Hybrid 1x + HDR preference */
|
|
DIAG_NV_HDR_REV_PREF = 4964, /* HDR mode preference(?): rev0, revA, eHRPD */
|
|
};
|
|
|
|
|
|
/* Mode preference values */
|
|
enum {
|
|
DIAG_NV_MODE_PREF_DIGITAL = 0x00,
|
|
DIAG_NV_MODE_PREF_DIGITAL_ONLY = 0x01,
|
|
DIAG_NV_MODE_PREF_ANALOG = 0x02,
|
|
DIAG_NV_MODE_PREF_ANALOG_ONLY = 0x03,
|
|
DIAG_NV_MODE_PREF_AUTO = 0x04,
|
|
DIAG_NV_MODE_PREF_E911 = 0x05,
|
|
DIAG_NV_MODE_PREF_HOME_ONLY = 0x06,
|
|
DIAG_NV_MODE_PREF_1X_ONLY = 0x09,
|
|
DIAG_NV_MODE_PREF_HDR_ONLY = 0x0A,
|
|
DIAG_NV_MODE_PREF_GPRS_ONLY = 0x0D,
|
|
DIAG_NV_MODE_PREF_UMTS_ONLY = 0x0E,
|
|
DIAG_NV_MODE_PREF_GSM_UMTS_ONLY = 0x11,
|
|
DIAG_NV_MODE_PREF_1X_HDR_ONLY = 0x13,
|
|
DIAG_NV_MODE_PREF_LTE_ONLY = 0x1E,
|
|
DIAG_NV_MODE_PREF_GSM_UMTS_LTE_ONLY = 0x1F,
|
|
DIAG_NV_MODE_PREF_1X_HDR_LTE_ONLY = 0x24,
|
|
};
|
|
|
|
/* DIAG_NV_MODE_PREF */
|
|
struct DMNVItemModePref {
|
|
u_int8_t profile;
|
|
u_int8_t mode_pref;
|
|
} __attribute__ ((packed));
|
|
typedef struct DMNVItemModePref DMNVItemModePref;
|
|
|
|
/* DIAG_NV_DIR_NUMBER */
|
|
struct DMNVItemMdn {
|
|
u_int8_t profile;
|
|
u_int8_t mdn[10];
|
|
} __attribute__ ((packed));
|
|
typedef struct DMNVItemMdn DMNVItemMdn;
|
|
|
|
/* Roam preference values */
|
|
enum {
|
|
DIAG_NV_ROAM_PREF_HOME_ONLY = 0x01,
|
|
DIAG_NV_ROAM_PREF_ROAM_ONLY = 0x06,
|
|
DIAG_NV_ROAM_PREF_AUTO = 0xFF,
|
|
};
|
|
|
|
/* DIAG_NV_ROAM_PREF */
|
|
struct DMNVItemRoamPref {
|
|
u_int8_t profile;
|
|
u_int8_t roam_pref;
|
|
} __attribute__ ((packed));
|
|
typedef struct DMNVItemRoamPref DMNVItemRoamPref;
|
|
|
|
/* HDR Revision preference values (?) */
|
|
enum {
|
|
DIAG_NV_HDR_REV_PREF_0 = 0x00,
|
|
DIAG_NV_HDR_REV_PREF_A = 0x01,
|
|
DIAG_NV_HDR_REV_PREF_EHRPD = 0x04,
|
|
};
|
|
|
|
/* DIAG_NV_HDR_REV_PREF */
|
|
struct DMNVItemHdrRevPref {
|
|
u_int8_t rev_pref;
|
|
} __attribute__ ((packed));
|
|
typedef struct DMNVItemHdrRevPref DMNVItemHdrRevPref;
|
|
|
|
/* Hybrid pref */
|
|
enum {
|
|
DIAG_NV_HYBRID_PREF_OFF = 0x00,
|
|
DIAG_NV_HYBRID_PREF_ON = 0x01,
|
|
};
|
|
|
|
/* DIAG_NV_HYBRID_PREF */
|
|
struct DMNVItemHybridPref {
|
|
u_int8_t hybrid_pref;
|
|
} __attribute__ ((packed));
|
|
typedef struct DMNVItemHybridPref DMNVItemHybridPref;
|
|
|
|
#endif /* LIBQCDM_NV_ITEMS_H */
|
|
|