libosmogsm  0.11.0-dirty
Osmocom GSM library
include/osmocom/gsm/protocol/gsm_12_21.h
Go to the documentation of this file.
00001 /*
00002  * (C) 2008-2009 by Harald Welte <laforge@gnumonks.org>
00003  * All Rights Reserved
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License along
00016  * with this program; if not, write to the Free Software Foundation, Inc.,
00017  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00018  *
00019  */
00020 
00021 #pragma once
00022 
00027 #include <stdint.h>
00028 #include <stdbool.h>
00029 #include <osmocom/gsm/tlv.h>
00030 
00032 struct abis_om_hdr {
00034         uint8_t mdisc;
00036         uint8_t placement;
00038         uint8_t sequence;
00040         uint8_t length;
00042         uint8_t data[0];
00043 } __attribute__ ((packed));
00044 
00045 #define ABIS_NM_MSG_SIZE        1024
00046 #define ABIS_NM_MSG_HEADROOM    128
00047 
00049 #define ABIS_OM_MDISC_FOM               0x80
00050 
00051 #define ABIS_OM_MDISC_MMI               0x40
00052 
00053 #define ABIS_OM_MDISC_TRAU              0x20
00054 
00055 #define ABIS_OM_MDISC_MANUF             0x10
00056 
00058 #define ABIS_OM_PLACEMENT_ONLY          0x80
00059 
00060 #define ABIS_OM_PLACEMENT_FIRST         0x40
00061 
00062 #define ABIS_OM_PLACEMENT_MIDDLE        0x20
00063 
00064 #define ABIS_OM_PLACEMENT_LAST          0x10
00065 
00067 struct abis_om_obj_inst {
00068         uint8_t bts_nr; 
00069         uint8_t trx_nr; 
00070         uint8_t ts_nr;  
00071 } __attribute__ ((packed));
00072 
00074 struct abis_om_fom_hdr {
00075         uint8_t msg_type;       
00076         uint8_t obj_class;      
00077         struct abis_om_obj_inst obj_inst; 
00078         uint8_t data[0];        
00079 } __attribute__ ((packed));
00080 
00082 #define ABIS_OM_FOM_HDR_SIZE    (sizeof(struct abis_om_hdr) + sizeof(struct abis_om_fom_hdr))
00083 
00085 enum abis_nm_msgtype {
00086         /* SW Download Management Messages */
00087         NM_MT_LOAD_INIT                 = 0x01,
00088         NM_MT_LOAD_INIT_ACK,
00089         NM_MT_LOAD_INIT_NACK,
00090         NM_MT_LOAD_SEG,
00091         NM_MT_LOAD_SEG_ACK,
00092         NM_MT_LOAD_ABORT,
00093         NM_MT_LOAD_END,
00094         NM_MT_LOAD_END_ACK,
00095         NM_MT_LOAD_END_NACK,
00096         NM_MT_SW_ACT_REQ,               /* BTS->BSC */
00097         NM_MT_SW_ACT_REQ_ACK,
00098         NM_MT_SW_ACT_REQ_NACK,
00099         NM_MT_ACTIVATE_SW,              /* BSC->BTS */
00100         NM_MT_ACTIVATE_SW_ACK,
00101         NM_MT_ACTIVATE_SW_NACK,
00102         NM_MT_SW_ACTIVATED_REP,         /* 0x10 */
00103         /* A-bis Interface Management Messages */
00104         NM_MT_ESTABLISH_TEI             = 0x21,
00105         NM_MT_ESTABLISH_TEI_ACK,
00106         NM_MT_ESTABLISH_TEI_NACK,
00107         NM_MT_CONN_TERR_SIGN,
00108         NM_MT_CONN_TERR_SIGN_ACK,
00109         NM_MT_CONN_TERR_SIGN_NACK,
00110         NM_MT_DISC_TERR_SIGN,
00111         NM_MT_DISC_TERR_SIGN_ACK,
00112         NM_MT_DISC_TERR_SIGN_NACK,
00113         NM_MT_CONN_TERR_TRAF,
00114         NM_MT_CONN_TERR_TRAF_ACK,
00115         NM_MT_CONN_TERR_TRAF_NACK,
00116         NM_MT_DISC_TERR_TRAF,
00117         NM_MT_DISC_TERR_TRAF_ACK,
00118         NM_MT_DISC_TERR_TRAF_NACK,
00119         /* Transmission Management Messages */
00120         NM_MT_CONN_MDROP_LINK           = 0x31,
00121         NM_MT_CONN_MDROP_LINK_ACK,
00122         NM_MT_CONN_MDROP_LINK_NACK,
00123         NM_MT_DISC_MDROP_LINK,
00124         NM_MT_DISC_MDROP_LINK_ACK,
00125         NM_MT_DISC_MDROP_LINK_NACK,
00126         /* Air Interface Management Messages */
00127         NM_MT_SET_BTS_ATTR              = 0x41,
00128         NM_MT_SET_BTS_ATTR_ACK,
00129         NM_MT_SET_BTS_ATTR_NACK,
00130         NM_MT_SET_RADIO_ATTR,
00131         NM_MT_SET_RADIO_ATTR_ACK,
00132         NM_MT_SET_RADIO_ATTR_NACK,
00133         NM_MT_SET_CHAN_ATTR,
00134         NM_MT_SET_CHAN_ATTR_ACK,
00135         NM_MT_SET_CHAN_ATTR_NACK,
00136         /* Test Management Messages */
00137         NM_MT_PERF_TEST                 = 0x51,
00138         NM_MT_PERF_TEST_ACK,
00139         NM_MT_PERF_TEST_NACK,
00140         NM_MT_TEST_REP,
00141         NM_MT_SEND_TEST_REP,
00142         NM_MT_SEND_TEST_REP_ACK,
00143         NM_MT_SEND_TEST_REP_NACK,
00144         NM_MT_STOP_TEST,
00145         NM_MT_STOP_TEST_ACK,
00146         NM_MT_STOP_TEST_NACK,
00147         /* State Management and Event Report Messages */
00148         NM_MT_STATECHG_EVENT_REP        = 0x61,
00149         NM_MT_FAILURE_EVENT_REP,
00150         NM_MT_STOP_EVENT_REP,
00151         NM_MT_STOP_EVENT_REP_ACK,
00152         NM_MT_STOP_EVENT_REP_NACK,
00153         NM_MT_REST_EVENT_REP,
00154         NM_MT_REST_EVENT_REP_ACK,
00155         NM_MT_REST_EVENT_REP_NACK,
00156         NM_MT_CHG_ADM_STATE,
00157         NM_MT_CHG_ADM_STATE_ACK,
00158         NM_MT_CHG_ADM_STATE_NACK,
00159         NM_MT_CHG_ADM_STATE_REQ,
00160         NM_MT_CHG_ADM_STATE_REQ_ACK,
00161         NM_MT_CHG_ADM_STATE_REQ_NACK,
00162         NM_MT_REP_OUTST_ALARMS          = 0x93,
00163         NM_MT_REP_OUTST_ALARMS_ACK,
00164         NM_MT_REP_OUTST_ALARMS_NACK,
00165         /* Equipment Management Messages */
00166         NM_MT_CHANGEOVER                = 0x71,
00167         NM_MT_CHANGEOVER_ACK,
00168         NM_MT_CHANGEOVER_NACK,
00169         NM_MT_OPSTART,
00170         NM_MT_OPSTART_ACK,
00171         NM_MT_OPSTART_NACK,
00172         NM_MT_REINIT,
00173         NM_MT_REINIT_ACK,
00174         NM_MT_REINIT_NACK,
00175         NM_MT_SET_SITE_OUT,             /* BS11: get alarm ?!? */
00176         NM_MT_SET_SITE_OUT_ACK,
00177         NM_MT_SET_SITE_OUT_NACK,
00178         NM_MT_CHG_HW_CONF               = 0x90,
00179         NM_MT_CHG_HW_CONF_ACK,
00180         NM_MT_CHG_HW_CONF_NACK,
00181         /* Measurement Management Messages */
00182         NM_MT_MEAS_RES_REQ              = 0x8a,
00183         NM_MT_MEAS_RES_RESP,
00184         NM_MT_STOP_MEAS,
00185         NM_MT_START_MEAS,
00186         /* Other Messages */
00187         NM_MT_GET_ATTR                  = 0x81,
00188         NM_MT_GET_ATTR_RESP,
00189         NM_MT_GET_ATTR_NACK,
00190         NM_MT_SET_ALARM_THRES,
00191         NM_MT_SET_ALARM_THRES_ACK,
00192         NM_MT_SET_ALARM_THRES_NACK,
00193 };
00194 
00196 enum abis_nm_msgtype_bs11 {
00197         NM_MT_BS11_RESET_RESOURCE       = 0x74,
00198 
00199         NM_MT_BS11_BEGIN_DB_TX          = 0xa3,
00200         NM_MT_BS11_BEGIN_DB_TX_ACK,
00201         NM_MT_BS11_BEGIN_DB_TX_NACK,
00202         NM_MT_BS11_END_DB_TX            = 0xa6,
00203         NM_MT_BS11_END_DB_TX_ACK,
00204         NM_MT_BS11_END_DB_TX_NACK,
00205         NM_MT_BS11_CREATE_OBJ           = 0xa9,
00206         NM_MT_BS11_CREATE_OBJ_ACK,
00207         NM_MT_BS11_CREATE_OBJ_NACK,
00208         NM_MT_BS11_DELETE_OBJ           = 0xac,
00209         NM_MT_BS11_DELETE_OBJ_ACK,
00210         NM_MT_BS11_DELETE_OBJ_NACK,
00211 
00212         NM_MT_BS11_SET_ATTR             = 0xd0,
00213         NM_MT_BS11_SET_ATTR_ACK,
00214         NM_MT_BS11_SET_ATTR_NACK,
00215         NM_MT_BS11_LMT_SESSION          = 0xdc,
00216 
00217         NM_MT_BS11_GET_STATE            = 0xe3,
00218         NM_MT_BS11_GET_STATE_ACK,
00219         NM_MT_BS11_LMT_LOGON            = 0xe5,
00220         NM_MT_BS11_LMT_LOGON_ACK,
00221         NM_MT_BS11_RESTART              = 0xe7,
00222         NM_MT_BS11_RESTART_ACK,
00223         NM_MT_BS11_DISCONNECT           = 0xe9,
00224         NM_MT_BS11_DISCONNECT_ACK,
00225         NM_MT_BS11_LMT_LOGOFF           = 0xec,
00226         NM_MT_BS11_LMT_LOGOFF_ACK,
00227         NM_MT_BS11_RECONNECT            = 0xf1,
00228         NM_MT_BS11_RECONNECT_ACK,
00229 };
00230 
00232 enum abis_nm_msgtype_ipacc {
00233         NM_MT_IPACC_RESTART             = 0x87,
00234         NM_MT_IPACC_RESTART_ACK,
00235         NM_MT_IPACC_RESTART_NACK,
00236         NM_MT_IPACC_RSL_CONNECT         = 0xe0,
00237         NM_MT_IPACC_RSL_CONNECT_ACK,
00238         NM_MT_IPACC_RSL_CONNECT_NACK,
00239         NM_MT_IPACC_RSL_DISCONNECT      = 0xe3,
00240         NM_MT_IPACC_RSL_DISCONNECT_ACK,
00241         NM_MT_IPACC_RSL_DISCONNECT_NACK,
00242         NM_MT_IPACC_CONN_TRAF           = 0xe6,
00243         NM_MT_IPACC_CONN_TRAF_ACK,
00244         NM_MT_IPACC_CONN_TRAF_NACK,
00245         NM_MT_IPACC_DEF_BOOT_SW         = 0xec,
00246         NM_MT_IPACC_DEF_BOOT_SW_ACK,
00247         MN_MT_IPACC_DEF_BOOT_SW_NACK,
00248         NM_MT_IPACC_SET_NVATTR          = 0xef,
00249         NM_MT_IPACC_SET_NVATTR_ACK,
00250         NM_MT_IPACC_SET_NVATTR_NACK,
00251         NM_MT_IPACC_GET_NVATTR          = 0xf2,
00252         NM_MT_IPACC_GET_NVATTR_ACK,
00253         NM_MT_IPACC_GET_NVATTR_NACK,
00254         NM_MT_IPACC_SET_ATTR            = 0xf5,
00255         NM_MT_IPACC_SET_ATTR_ACK,
00256         NM_MT_IPACC_SET_ATTR_NACK,
00257 };
00258 
00260 enum abis_mm_event_causes {
00261         /* Critical causes */
00262         OSMO_EVT_CRIT_SW_FATAL          = 0x0000,
00263         OSMO_EVT_CRIT_PROC_STOP         = 0x0002,
00264         OSMO_EVT_CRIT_RTP_TOUT          = 0x032c,
00265         OSMO_EVT_CRIT_BOOT_FAIL         = 0x0401,
00266         /* Major causes */
00267         OSMO_EVT_MAJ_UKWN_MSG           = 0x0002,
00268         OSMO_EVT_MAJ_RSL_FAIL           = 0x0309,
00269         OSMO_EVT_MAJ_UNSUP_ATTR         = 0x0318,
00270         OSMO_EVT_MAJ_NET_CONGEST        = 0x032b,
00271         /* Minor causes */
00272         OSMO_EVT_MIN_PAG_TAB_FULL       = 0x0401,
00273         /* Warning causes */
00274         OSMO_EVT_WARN_SW_WARN           = 0x0001,
00275         /* External causes */
00276         OSMO_EVT_EXT_ALARM              = 0xfeed,
00277         OSMO_EVT_PCU_VERS               = 0xface,
00278 };
00279 
00280 extern const struct value_string abis_mm_event_cause_names[];
00281 
00282 enum abis_nm_bs11_cell_alloc {
00283         NM_BS11_CANR_GSM        = 0x00,
00284         NM_BS11_CANR_DCS1800    = 0x01,
00285 };
00286 
00288 enum abis_nm_obj_class {
00289         NM_OC_SITE_MANAGER              = 0x00,
00290         NM_OC_BTS,
00291         NM_OC_RADIO_CARRIER,
00292         NM_OC_CHANNEL,
00293         NM_OC_BASEB_TRANSC,
00294         /* RFU: 05-FE */
00295 
00296         NM_OC_IPAC_E1_TRUNK             = 0x0e,
00297         NM_OC_IPAC_E1_PORT              = 0x0f,
00298         NM_OC_IPAC_E1_CHAN              = 0x10,
00299         NM_OC_IPAC_CLK_MODULE           = 0x22,
00300 
00301         NM_OC_BS11_ADJC                 = 0xa0,
00302         NM_OC_BS11_HANDOVER             = 0xa1,
00303         NM_OC_BS11_PWR_CTRL             = 0xa2,
00304         NM_OC_BS11_BTSE                 = 0xa3,         /* LMT? */
00305         NM_OC_BS11_RACK                 = 0xa4,
00306         NM_OC_BS11                      = 0xa5,         /* 01: ALCO */
00307         NM_OC_BS11_TEST                 = 0xa6,
00308         NM_OC_BS11_ENVABTSE             = 0xa8,
00309         NM_OC_BS11_BPORT                = 0xa9,
00310 
00311         NM_OC_GPRS_NSE                  = 0xf0,
00312         NM_OC_GPRS_CELL                 = 0xf1,
00313         NM_OC_GPRS_NSVC                 = 0xf2,
00314 
00315         NM_OC_NULL                      = 0xff,
00316 };
00317 
00319 enum abis_nm_attr {
00320         NM_ATT_ABIS_CHANNEL     = 0x01,
00321         NM_ATT_ADD_INFO,
00322         NM_ATT_ADD_TEXT,
00323         NM_ATT_ADM_STATE,
00324         NM_ATT_ARFCN_LIST,
00325         NM_ATT_AUTON_REPORT,
00326         NM_ATT_AVAIL_STATUS,
00327         NM_ATT_BCCH_ARFCN,
00328         NM_ATT_BSIC,
00329         NM_ATT_BTS_AIR_TIMER,
00330         NM_ATT_CCCH_L_I_P,
00331         NM_ATT_CCCH_L_T,
00332         NM_ATT_CHAN_COMB,
00333         NM_ATT_CONN_FAIL_CRIT,
00334         NM_ATT_DEST,
00335         /* res */
00336         NM_ATT_EVENT_TYPE       = 0x11, /* BS11: file data ?!? */
00337         NM_ATT_FILE_ID,
00338         NM_ATT_FILE_VERSION,
00339         NM_ATT_GSM_TIME,
00340         NM_ATT_HSN,
00341         NM_ATT_HW_CONFIG,
00342         NM_ATT_HW_DESC,
00343         NM_ATT_INTAVE_PARAM,
00344         NM_ATT_INTERF_BOUND,
00345         NM_ATT_LIST_REQ_ATTR,
00346         NM_ATT_MAIO,
00347         NM_ATT_MANUF_STATE,
00348         NM_ATT_MANUF_THRESH,
00349         NM_ATT_MANUF_ID,
00350         NM_ATT_MAX_TA,
00351         NM_ATT_MDROP_LINK,      /* 0x20 */
00352         NM_ATT_MDROP_NEXT,
00353         NM_ATT_NACK_CAUSES,
00354         NM_ATT_NY1,
00355         NM_ATT_OPER_STATE,
00356         NM_ATT_OVERL_PERIOD,
00357         NM_ATT_PHYS_CONF,
00358         NM_ATT_POWER_CLASS,
00359         NM_ATT_POWER_THRESH,
00360         NM_ATT_PROB_CAUSE,
00361         NM_ATT_RACH_B_THRESH,
00362         NM_ATT_LDAVG_SLOTS,
00363         NM_ATT_RAD_SUBC,
00364         NM_ATT_RF_MAXPOWR_R,
00365         NM_ATT_SITE_INPUTS,
00366         NM_ATT_SITE_OUTPUTS,
00367         NM_ATT_SOURCE,          /* 0x30 */
00368         NM_ATT_SPEC_PROB,
00369         NM_ATT_START_TIME,
00370         NM_ATT_T200,
00371         NM_ATT_TEI,
00372         NM_ATT_TEST_DUR,
00373         NM_ATT_TEST_NO,
00374         NM_ATT_TEST_REPORT,
00375         NM_ATT_VSWR_THRESH,
00376         NM_ATT_WINDOW_SIZE,
00377         /* Res  */
00378         NM_ATT_BS11_RSSI_OFFS   = 0x3d,
00379         NM_ATT_BS11_TXPWR       = 0x3e,
00380         NM_ATT_BS11_DIVERSITY   = 0x3f,
00381         /* Res  */
00382         NM_ATT_TSC              = 0x40,
00383         NM_ATT_SW_CONFIG,
00384         NM_ATT_SW_DESCR,
00385         NM_ATT_SEVERITY,
00386         NM_ATT_GET_ARI,
00387         NM_ATT_HW_CONF_CHG,
00388         NM_ATT_OUTST_ALARM,
00389         NM_ATT_FILE_DATA,
00390         NM_ATT_MEAS_RES,
00391         NM_ATT_MEAS_TYPE,
00392 
00393         NM_ATT_BS11_ESN_FW_CODE_NO      = 0x4c,
00394         NM_ATT_BS11_ESN_HW_CODE_NO      = 0x4f,
00395 
00396         NM_ATT_BS11_ESN_PCB_SERIAL      = 0x55,
00397         NM_ATT_BS11_EXCESSIVE_DISTANCE  = 0x58,
00398 
00399         NM_ATT_BS11_ALL_TEST_CATG       = 0x60,
00400         NM_ATT_BS11_BTSLS_HOPPING,
00401         NM_ATT_BS11_CELL_ALLOC_NR,
00402         NM_ATT_BS11_CELL_GLOBAL_ID,
00403         NM_ATT_BS11_ENA_INTERF_CLASS    = 0x66,
00404         NM_ATT_BS11_ENA_INT_INTEC_HANDO = 0x67,
00405         NM_ATT_BS11_ENA_INT_INTRC_HANDO = 0x68,
00406         NM_ATT_BS11_ENA_MS_PWR_CTRL     = 0x69,
00407         NM_ATT_BS11_ENA_PWR_BDGT_HO     = 0x6a,
00408         NM_ATT_BS11_ENA_PWR_CTRL_RLFW   = 0x6b,
00409         NM_ATT_BS11_ENA_RXLEV_HO        = 0x6c,
00410         NM_ATT_BS11_ENA_RXQUAL_HO       = 0x6d,
00411         NM_ATT_BS11_FACCH_QUAL          = 0x6e,
00412 
00413         NM_ATT_IPACC_DST_IP             = 0x80,
00414         NM_ATT_IPACC_DST_IP_PORT        = 0x81,
00415         NM_ATT_IPACC_SSRC               = 0x82,
00416         NM_ATT_IPACC_RTP_PAYLD_TYPE     = 0x83,
00417         NM_ATT_IPACC_BASEB_ID           = 0x84,
00418         NM_ATT_IPACC_STREAM_ID          = 0x85,
00419         NM_ATT_IPACC_NV_FLAGS           = 0x86,
00420         NM_ATT_IPACC_FREQ_CTRL          = 0x87,
00421         NM_ATT_IPACC_PRIM_OML_CFG       = 0x88,
00422         NM_ATT_IPACC_SEC_OML_CFG        = 0x89,
00423         NM_ATT_IPACC_IP_IF_CFG          = 0x8a,         /* IP interface */
00424         NM_ATT_IPACC_IP_GW_CFG          = 0x8b,         /* IP gateway */
00425         NM_ATT_IPACC_IN_SERV_TIME       = 0x8c,
00426         NM_ATT_IPACC_TRX_BTS_ASS        = 0x8d,
00427         NM_ATT_IPACC_LOCATION           = 0x8e,         /* string describing location */
00428         NM_ATT_IPACC_PAGING_CFG         = 0x8f,
00429         NM_ATT_IPACC_FILE_DATA          = 0x90,
00430         NM_ATT_IPACC_UNIT_ID            = 0x91,         /* Site/BTS/TRX */
00431         NM_ATT_IPACC_PARENT_UNIT_ID     = 0x92,
00432         NM_ATT_IPACC_UNIT_NAME          = 0x93,         /* default: nbts-<mac-as-string> */
00433         NM_ATT_IPACC_SNMP_CFG           = 0x94,
00434         NM_ATT_IPACC_PRIM_OML_CFG_LIST  = 0x95,
00435         NM_ATT_IPACC_PRIM_OML_FB_TOUT   = 0x96,
00436         NM_ATT_IPACC_CUR_SW_CFG         = 0x97,
00437         NM_ATT_IPACC_TIMING_BUS         = 0x98,
00438         NM_ATT_IPACC_CGI                = 0x99,
00439         NM_ATT_IPACC_RAC                = 0x9a,
00440         NM_ATT_IPACC_OBJ_VERSION        = 0x9b,
00441         NM_ATT_IPACC_GPRS_PAGING_CFG    = 0x9c,
00442         NM_ATT_IPACC_NSEI               = 0x9d,
00443         NM_ATT_IPACC_BVCI               = 0x9e,
00444         NM_ATT_IPACC_NSVCI              = 0x9f,
00445         NM_ATT_IPACC_NS_CFG             = 0xa0,
00446         NM_ATT_IPACC_BSSGP_CFG          = 0xa1,
00447         NM_ATT_IPACC_NS_LINK_CFG        = 0xa2,
00448         NM_ATT_IPACC_RLC_CFG            = 0xa3, 
00449         NM_ATT_IPACC_ALM_THRESH_LIST    = 0xa4,
00450         NM_ATT_IPACC_MONIT_VAL_LIST     = 0xa5,
00451         NM_ATT_IPACC_TIB_CONTROL        = 0xa6,
00452         NM_ATT_IPACC_SUPP_FEATURES      = 0xa7,
00453         NM_ATT_IPACC_CODING_SCHEMES     = 0xa8,
00454         NM_ATT_IPACC_RLC_CFG_2          = 0xa9,
00455         NM_ATT_IPACC_HEARTB_TOUT        = 0xaa,
00456         NM_ATT_IPACC_UPTIME             = 0xab,
00457         NM_ATT_IPACC_RLC_CFG_3          = 0xac,
00458         NM_ATT_IPACC_SSL_CFG            = 0xad,
00459         NM_ATT_IPACC_SEC_POSSIBLE       = 0xae,
00460         NM_ATT_IPACC_IML_SSL_STATE      = 0xaf,
00461         NM_ATT_IPACC_REVOC_DATE         = 0xb0,
00462 
00463 
00464         NM_ATT_BS11_RF_RES_IND_PER      = 0x8f,
00465         
00466         NM_ATT_BS11_RX_LEV_MIN_CELL     = 0x90,
00467         NM_ATT_BS11_ABIS_EXT_TIME       = 0x91,
00468         NM_ATT_BS11_TIMER_HO_REQUEST    = 0x92,
00469         NM_ATT_BS11_TIMER_NCELL         = 0x93,
00470         NM_ATT_BS11_TSYNC               = 0x94,
00471         NM_ATT_BS11_TTRAU               = 0x95,
00472         NM_ATT_BS11_EMRG_CFG_MEMBER     = 0x9b,
00473         NM_ATT_BS11_TRX_AREA            = 0x9f,
00474 
00475         NM_ATT_BS11_BCCH_RECONF         = 0xd7,
00476         NM_ATT_BS11_BIT_ERR_THESH       = 0xa0,
00477         NM_ATT_BS11_BOOT_SW_VERS        = 0xa1,
00478         NM_ATT_BS11_CCLK_ACCURACY       = 0xa3,
00479         NM_ATT_BS11_CCLK_TYPE           = 0xa4,
00480         NM_ATT_BS11_INP_IMPEDANCE       = 0xaa,
00481         NM_ATT_BS11_L1_PROT_TYPE        = 0xab,
00482         NM_ATT_BS11_LINE_CFG            = 0xac,
00483         NM_ATT_BS11_LI_PORT_1           = 0xad,
00484         NM_ATT_BS11_LI_PORT_2           = 0xae,
00485 
00486         NM_ATT_BS11_L1_REM_ALM_TYPE     = 0xb0,
00487         NM_ATT_BS11_SW_LOAD_INTENDED    = 0xbb,
00488         NM_ATT_BS11_SW_LOAD_SAFETY      = 0xbc,
00489         NM_ATT_BS11_SW_LOAD_STORED      = 0xbd,
00490 
00491         NM_ATT_BS11_VENDOR_NAME         = 0xc1,
00492         NM_ATT_BS11_HOPPING_MODE        = 0xc5,
00493         NM_ATT_BS11_LMT_LOGON_SESSION   = 0xc6,
00494         NM_ATT_BS11_LMT_LOGIN_TIME      = 0xc7,
00495         NM_ATT_BS11_LMT_USER_ACC_LEV    = 0xc8,
00496         NM_ATT_BS11_LMT_USER_NAME       = 0xc9,
00497 
00498         NM_ATT_BS11_L1_CONTROL_TS       = 0xd8,
00499         NM_ATT_BS11_RADIO_MEAS_GRAN     = 0xdc, /* in SACCH multiframes */
00500         NM_ATT_BS11_RADIO_MEAS_REP      = 0xdd,
00501 
00502         NM_ATT_BS11_SH_LAPD_INT_TIMER   = 0xe8,
00503 
00504         NM_ATT_BS11_BTS_STATE           = 0xf0,
00505         NM_ATT_BS11_E1_STATE            = 0xf1,
00506         NM_ATT_BS11_PLL                 = 0xf2,
00507         NM_ATT_BS11_RX_OFFSET           = 0xf3,
00508         NM_ATT_BS11_ANT_TYPE            = 0xf4,
00509         NM_ATT_BS11_PLL_MODE            = 0xfc,
00510         NM_ATT_BS11_PASSWORD            = 0xfd,
00511 
00512         /* osmocom (osmo-bts) specific attributes, used in combination
00513          * with the "org.osmocom" manufacturer identification */
00514         NM_ATT_OSMO_REDUCEPOWER         = 0xfe, /* TLV_TYPE_TV */
00515 };
00516 #define NM_ATT_BS11_FILE_DATA   NM_ATT_EVENT_TYPE
00517 
00519 enum abis_nm_adm_state {
00520         NM_STATE_LOCKED         = 0x01,
00521         NM_STATE_UNLOCKED       = 0x02,
00522         NM_STATE_SHUTDOWN       = 0x03,
00523         NM_STATE_NULL           = 0xff,
00524 };
00525 
00527 enum abis_nm_avail_state {
00528         NM_AVSTATE_IN_TEST      = 1,
00529         NM_AVSTATE_POWER_OFF    = 2,
00530         NM_AVSTATE_OFF_LINE     = 3,
00531         NM_AVSTATE_DEPENDENCY   = 5,
00532         NM_AVSTATE_DEGRADED     = 6,
00533         NM_AVSTATE_NOT_INSTALLED= 7,
00534         NM_AVSTATE_OK           = 0xff,
00535 };
00536 
00538 enum abis_nm_op_state {
00539         NM_OPSTATE_DISABLED     = 1,
00540         NM_OPSTATE_ENABLED      = 2,
00541         NM_OPSTATE_NULL         = 0xff,
00542 };
00543 
00544 /* Channel Combination (Section 9.4.13) */
00545 enum abis_nm_chan_comb {
00546         NM_CHANC_TCHFull        = 0x00, /* TCH/F + TCH/H + SACCH/TF */
00547         NM_CHANC_TCHHalf        = 0x01, /* TCH/H(0,1) + FACCH/H(0,1) +
00548                                            SACCH/TH(0,1) */
00549         NM_CHANC_TCHHalf2       = 0x02, /* TCH/H(0) + FACCH/H(0) + SACCH/TH(0) +
00550                                            TCH/H(1) */
00551         NM_CHANC_SDCCH          = 0x03, /* SDCCH/8 + SACCH/8 */
00552         NM_CHANC_mainBCCH       = 0x04, /* FCCH + SCH + BCCH + CCCH */
00553         NM_CHANC_BCCHComb       = 0x05, /* FCCH + SCH + BCCH + CCCH + SDCCH/4 +
00554                                            SACCH/C4 */
00555         NM_CHANC_BCCH           = 0x06, /* BCCH + CCCH */
00556         NM_CHANC_BCCH_CBCH      = 0x07, /* CHANC_BCCHComb + CBCH */
00557         NM_CHANC_SDCCH_CBCH     = 0x08, /* CHANC_SDCCH8 + CBCH */
00558         /* ip.access */
00559         NM_CHANC_IPAC_bPDCH     = 0x0b, /* PBCCH + PCCCH + PDTCH/F + PACCH/F +
00560                                            PTCCH/F */
00561         NM_CHANC_IPAC_cPDCH     = 0x0c, /* PBCCH + PDTCH/F + PACCH/F + PTCCH/F */
00562         NM_CHANC_IPAC_PDCH      = 0x0d, /* PDTCH/F + PACCH/F + PTCCH/F */
00563         NM_CHANC_IPAC_TCHFull_PDCH = 0x80,
00564         NM_CHANC_IPAC_TCHFull_TCHHalf = 0x81,
00565         /* osmocom */
00566         NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH = 0x90,
00567 };
00568 
00570 enum abis_nm_event_type {
00571         NM_EVT_COMM_FAIL        = 0x00,
00572         NM_EVT_QOS_FAIL         = 0x01,
00573         NM_EVT_PROC_FAIL        = 0x02,
00574         NM_EVT_EQUIP_FAIL       = 0x03,
00575         NM_EVT_ENV_FAIL         = 0x04,
00576 };
00577 
00579 enum abis_nm_severity {
00580         NM_SEVER_CEASED         = 0x00,
00581         NM_SEVER_CRITICAL       = 0x01,
00582         NM_SEVER_MAJOR          = 0x02,
00583         NM_SEVER_MINOR          = 0x03,
00584         NM_SEVER_WARNING        = 0x04,
00585         NM_SEVER_INDETERMINATE  = 0x05,
00586 };
00587 
00589 enum abis_nm_pcause_type {
00590         NM_PCAUSE_T_X721        = 0x01,
00591         NM_PCAUSE_T_GSM         = 0x02,
00592         NM_PCAUSE_T_MANUF       = 0x03,
00593 };
00594 
00595 extern const struct value_string abis_nm_pcause_type_names[];
00596 extern const struct value_string abis_nm_msgtype_names[];
00597 extern const struct value_string abis_nm_att_names[];
00598 
00600 enum abis_nm_nack_cause {
00601         /* General Nack Causes */
00602         NM_NACK_INCORR_STRUCT           = 0x01,
00603         NM_NACK_MSGTYPE_INVAL           = 0x02,
00604         NM_NACK_OBJCLASS_INVAL          = 0x05,
00605         NM_NACK_OBJCLASS_NOTSUPP        = 0x06,
00606         NM_NACK_BTSNR_UNKN              = 0x07,
00607         NM_NACK_TRXNR_UNKN              = 0x08,
00608         NM_NACK_OBJINST_UNKN            = 0x09,
00609         NM_NACK_ATTRID_INVAL            = 0x0c,
00610         NM_NACK_ATTRID_NOTSUPP          = 0x0d,
00611         NM_NACK_PARAM_RANGE             = 0x0e,
00612         NM_NACK_ATTRLIST_INCONSISTENT   = 0x0f,
00613         NM_NACK_SPEC_IMPL_NOTSUPP       = 0x10,
00614         NM_NACK_CANT_PERFORM            = 0x11,
00615         /* Specific Nack Causes */
00616         NM_NACK_RES_NOTIMPL             = 0x19,
00617         NM_NACK_RES_NOTAVAIL            = 0x1a,
00618         NM_NACK_FREQ_NOTAVAIL           = 0x1b,
00619         NM_NACK_TEST_NOTSUPP            = 0x1c,
00620         NM_NACK_CAPACITY_RESTR          = 0x1d,
00621         NM_NACK_PHYSCFG_NOTPERFORM      = 0x1e,
00622         NM_NACK_TEST_NOTINIT            = 0x1f,
00623         NM_NACK_PHYSCFG_NOTRESTORE      = 0x20,
00624         NM_NACK_TEST_NOSUCH             = 0x21,
00625         NM_NACK_TEST_NOSTOP             = 0x22,
00626         NM_NACK_MSGINCONSIST_PHYSCFG    = 0x23,
00627         NM_NACK_FILE_INCOMPLETE         = 0x25,
00628         NM_NACK_FILE_NOTAVAIL           = 0x26,
00629         NM_NACK_FILE_NOTACTIVATE        = 0x27,
00630         NM_NACK_REQ_NOT_GRANT           = 0x28,
00631         NM_NACK_WAIT                    = 0x29,
00632         NM_NACK_NOTH_REPORT_EXIST       = 0x2a,
00633         NM_NACK_MEAS_NOTSUPP            = 0x2b,
00634         NM_NACK_MEAS_NOTSTART           = 0x2c,
00635 };
00636 
00638 struct abis_nm_channel {
00639         uint8_t attrib;
00640         uint8_t bts_port;       
00641         uint8_t timeslot;       
00642         uint8_t subslot;        
00643 } __attribute__ ((packed));
00644 
00646 enum abis_nm_t200_idx {
00647         T200_SDCCH              = 0,
00648         T200_FACCH_F            = 1,
00649         T200_FACCH_H            = 2,
00650         T200_SACCH_TCH_SAPI0    = 3,
00651         T200_SACCH_SDCCH        = 4,
00652         T200_SDCCH_SAPI3        = 5,
00653         T200_SACCH_TCH_SAPI3    = 6
00654 };
00655 
00656 extern const uint8_t abis_nm_t200_ms[];
00657 
00659 enum abis_bs11_objtype {
00660         BS11_OBJ_ALCO           = 0x01,
00661         BS11_OBJ_BBSIG          = 0x02, /* obj_class: 0,1 */
00662         BS11_OBJ_TRX1           = 0x03, /* only DEACTIVATE TRX1 */
00663         BS11_OBJ_CCLK           = 0x04,
00664         BS11_OBJ_GPSU           = 0x06,
00665         BS11_OBJ_LI             = 0x07,
00666         BS11_OBJ_PA             = 0x09, /* obj_class: 0, 1*/
00667 };
00668 
00670 enum abis_bs11_trx_power {
00671         BS11_TRX_POWER_GSM_2W   = 0x06,
00672         BS11_TRX_POWER_GSM_250mW= 0x07,
00673         BS11_TRX_POWER_GSM_80mW = 0x08,
00674         BS11_TRX_POWER_GSM_30mW = 0x09,
00675         BS11_TRX_POWER_DCS_3W   = 0x0a,
00676         BS11_TRX_POWER_DCS_1W6  = 0x0b,
00677         BS11_TRX_POWER_DCS_500mW= 0x0c,
00678         BS11_TRX_POWER_DCS_160mW= 0x0d,
00679 };
00680 
00682 enum abis_bs11_li_pll_mode {
00683         BS11_LI_PLL_LOCKED      = 2,
00684         BS11_LI_PLL_STANDALONE  = 3,
00685 };
00686 
00688 enum abis_bs11_line_cfg {
00689         BS11_LINE_CFG_STAR      = 0x00,
00690         BS11_LINE_CFG_MULTIDROP = 0x01,
00691         BS11_LINE_CFG_LOOP      = 0x02,
00692 };
00693 
00695 enum abis_bs11_phase {
00696         BS11_STATE_SOFTWARE_RQD         = 0x01,
00697         BS11_STATE_LOAD_SMU_INTENDED    = 0x11,
00698         BS11_STATE_LOAD_SMU_SAFETY      = 0x21,
00699         BS11_STATE_LOAD_FAILED          = 0x31,
00700         BS11_STATE_LOAD_DIAGNOSTIC      = 0x41,
00701         BS11_STATE_WARM_UP              = 0x51,
00702         BS11_STATE_WARM_UP_2            = 0x52,
00703         BS11_STATE_WAIT_MIN_CFG         = 0x62,
00704         BS11_STATE_MAINTENANCE          = 0x72,
00705         BS11_STATE_LOAD_MBCCU           = 0x92,
00706         BS11_STATE_WAIT_MIN_CFG_2       = 0xA2,
00707         BS11_STATE_NORMAL               = 0x03,
00708         BS11_STATE_ABIS_LOAD            = 0x13,
00709 };
00710 
00712 enum abis_nm_ipacc_test_no {
00713         NM_IPACC_TESTNO_RLOOP_ANT       = 0x01,
00714         NM_IPACC_TESTNO_RLOOP_XCVR      = 0x02,
00715         NM_IPACC_TESTNO_FUNC_OBJ        = 0x03,
00716         NM_IPACC_TESTNO_CHAN_USAGE      = 0x40,
00717         NM_IPACC_TESTNO_BCCH_CHAN_USAGE = 0x41,
00718         NM_IPACC_TESTNO_FREQ_SYNC       = 0x42,
00719         NM_IPACC_TESTNO_BCCH_INFO       = 0x43,
00720         NM_IPACC_TESTNO_TX_BEACON       = 0x44,
00721         NM_IPACC_TESTNO_SYSINFO_MONITOR = 0x45,
00722         NM_IPACC_TESTNO_BCCCH_MONITOR   = 0x46,
00723 };
00724 
00726 enum abis_nm_ipacc_test_res {
00727         NM_IPACC_TESTRES_SUCCESS        = 0,
00728         NM_IPACC_TESTRES_TIMEOUT        = 1,
00729         NM_IPACC_TESTRES_NO_CHANS       = 2,
00730         NM_IPACC_TESTRES_PARTIAL        = 3,
00731         NM_IPACC_TESTRES_STOPPED        = 4,
00732 };
00733 
00735 enum abis_nm_ipacc_testres_ie {
00736         NM_IPACC_TR_IE_FREQ_ERR_LIST    = 3,
00737         NM_IPACC_TR_IE_CHAN_USAGE       = 4,
00738         NM_IPACC_TR_IE_BCCH_INFO        = 6,
00739         NM_IPACC_TR_IE_RESULT_DETAILS   = 8,
00740         NM_IPACC_TR_IE_FREQ_ERR         = 18,
00741 };
00742 
00744 enum ipac_eie {
00745         NM_IPAC_EIE_ARFCN_WHITE         = 0x01,
00746         NM_IPAC_EIE_ARFCH_BLACK         = 0x02,
00747         NM_IPAC_EIE_FREQ_ERR_LIST       = 0x03,
00748         NM_IPAC_EIE_CHAN_USE_LIST       = 0x04,
00749         NM_IPAC_EIE_BCCH_INFO_TYPE      = 0x05,
00750         NM_IPAC_EIE_BCCH_INFO           = 0x06,
00751         NM_IPAC_EIE_CONFIG              = 0x07,
00752         NM_IPAC_EIE_RES_DETAILS         = 0x08,
00753         NM_IPAC_EIE_RXLEV_THRESH        = 0x09,
00754         NM_IPAC_EIE_FREQ_SYNC_OPTS      = 0x0a,
00755         NM_IPAC_EIE_MAC_ADDR            = 0x0b,
00756         NM_IPAC_EIE_HW_SW_COMPAT_NR     = 0x0c,
00757         NM_IPAC_EIE_MANUF_SER_NR        = 0x0d,
00758         NM_IPAC_EIE_OEM_ID              = 0x0e,
00759         NM_IPAC_EIE_DATE_TIME_MANUF     = 0x0f,
00760         NM_IPAC_EIE_DATE_TIME_CALIB     = 0x10,
00761         NM_IPAC_EIE_BEACON_INFO         = 0x11,
00762         NM_IPAC_EIE_FREQ_ERR            = 0x12,
00763         /* FIXME */
00764         NM_IPAC_EIE_FREQ_BANDS          = 0x1c,
00765         NM_IPAC_EIE_MAX_TA              = 0x1d,
00766         NM_IPAC_EIE_CIPH_ALGOS          = 0x1e,
00767         NM_IPAC_EIE_CHAN_TYPES          = 0x1f,
00768         NM_IPAC_EIE_CHAN_MODES          = 0x20,
00769         NM_IPAC_EIE_GPRS_CODING         = 0x21,
00770         NM_IPAC_EIE_RTP_FEATURES        = 0x22,
00771         NM_IPAC_EIE_RSL_FEATURES        = 0x23,
00772         NM_IPAC_EIE_BTS_HW_CLASS        = 0x24,
00773         NM_IPAC_EIE_BTS_ID              = 0x25,
00774 };
00775 
00777 enum ipac_bcch_info_type {
00778         IPAC_BINF_RXLEV                 = (1 << 8),
00779         IPAC_BINF_RXQUAL                = (1 << 9),
00780         IPAC_BINF_FREQ_ERR_QUAL         = (1 << 10),
00781         IPAC_BINF_FRAME_OFFSET          = (1 << 11),
00782         IPAC_BINF_FRAME_NR_OFFSET       = (1 << 12),
00783         IPAC_BINF_BSIC                  = (1 << 13),
00784         IPAC_BINF_CGI                   = (1 << 14),
00785         IPAC_BINF_NEIGH_BA_SI2          = (1 << 15),
00786         IPAC_BINF_NEIGH_BA_SI2bis       = (1 << 0),
00787         IPAC_BINF_NEIGH_BA_SI2ter       = (1 << 1),
00788         IPAC_BINF_CELL_ALLOC            = (1 << 2),
00789 };
00790 
00792 struct abis_nm_sw_desc {
00793         uint8_t file_id[UINT8_MAX];
00794         uint8_t file_id_len;
00795 
00796         uint8_t file_version[UINT8_MAX];
00797         uint8_t file_version_len;
00798 };
00799 
00800 uint16_t abis_nm_sw_desc_len(const struct abis_nm_sw_desc *sw, bool put_sw_descr);
00801 uint16_t abis_nm_put_sw_desc(struct msgb *msg, const struct abis_nm_sw_desc *sw, bool put_sw_descr);
00802 uint16_t abis_nm_put_sw_file(struct msgb *msg, const char *id, const char *ver, bool put_sw_desc);
00803 uint32_t abis_nm_get_sw_desc_len(const uint8_t * buf, size_t len);
00804 int abis_nm_get_sw_conf(const uint8_t * buf, size_t buf_len, struct abis_nm_sw_desc *sw, uint16_t sw_len);
00805 
00806 struct msgb *abis_nm_fail_evt_rep(enum abis_nm_event_type t,
00807                                   enum abis_nm_severity s,
00808                                   enum abis_nm_pcause_type ct,
00809                                   uint16_t cause_value, const char *fmt, ...);
00810 struct msgb *abis_nm_fail_evt_vrep(enum abis_nm_event_type t,
00811                                    enum abis_nm_severity s,
00812                                    enum abis_nm_pcause_type ct,
00813                                    uint16_t cause_value, const char *fmt,
00814                                    va_list ap);
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines