aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmo-bts/oml.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/osmo-bts/oml.h')
-rw-r--r--include/osmo-bts/oml.h45
1 files changed, 42 insertions, 3 deletions
diff --git a/include/osmo-bts/oml.h b/include/osmo-bts/oml.h
index b92a9745..41cdaf50 100644
--- a/include/osmo-bts/oml.h
+++ b/include/osmo-bts/oml.h
@@ -8,8 +8,35 @@ struct gsm_abis_mo;
struct msgb;
struct gsm_lchan;
+/* Network Management State */
+struct gsm_nm_state {
+ enum abis_nm_op_state operational;
+ enum abis_nm_adm_state administrative;
+ enum abis_nm_avail_state availability;
+};
-int oml_init(struct gsm_abis_mo *mo);
+struct gsm_abis_mo {
+ /* A-bis OML Object Class */
+ uint8_t obj_class;
+ /* is there still some procedure pending? */
+ uint8_t procedure_pending;
+ /* A-bis OML Object Instance */
+ struct abis_om_obj_inst obj_inst;
+ /* human-readable name */
+ const char *name;
+ /* NM State */
+ struct gsm_nm_state nm_state;
+ /* Attributes configured in this MO */
+ struct tlv_parsed *nm_attr;
+ /* BTS to which this MO belongs */
+ struct gsm_bts *bts;
+ /* NM BTS Site Manager FSM */
+ struct osmo_fsm_inst *fi;
+ bool setattr_success;
+ bool opstart_success;
+};
+
+int oml_init(void);
int down_oml(struct gsm_bts *bts, struct msgb *msg);
struct msgb *oml_msgb_alloc(void);
@@ -21,7 +48,7 @@ int oml_mo_statechg_ack(const struct gsm_abis_mo *mo);
int oml_mo_statechg_nack(const struct gsm_abis_mo *mo, uint8_t nack_cause);
/* Change the state and send STATE CHG REP */
-int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state);
+int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state, int adm_state);
/* First initialization of MO, does _not_ generate state changes */
void oml_mo_state_init(struct gsm_abis_mo *mo, int op_state, int avail_state);
@@ -36,14 +63,26 @@ int oml_tx_state_changed(const struct gsm_abis_mo *mo);
int oml_mo_tx_sw_act_rep(const struct gsm_abis_mo *mo);
int oml_fom_ack_nack(struct msgb *old_msg, uint8_t cause);
+int oml_fom_ack_nack_copy_msg(const struct msgb *old_msg, uint8_t cause);
int oml_mo_fom_ack_nack(const struct gsm_abis_mo *mo, uint8_t orig_msg_type,
uint8_t cause);
-extern const unsigned int oml_default_t200_ms[7];
+extern const uint32_t oml_default_t200_fn[7];
/* Transmit failure event report */
int oml_tx_failure_event_rep(const struct gsm_abis_mo *mo, enum abis_nm_severity severity,
uint16_t cause_value, const char *fmt, ...);
+void gsm_mo_init(struct gsm_abis_mo *mo, struct gsm_bts *bts,
+ uint8_t obj_class, uint8_t p1, uint8_t p2, uint8_t p3);
+
+struct gsm_abis_mo *gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
+ const struct abis_om_obj_inst *obj_inst,
+ enum abis_nm_nack_cause *c);
+
+void *gsm_objclass2obj(struct gsm_bts *bts, uint8_t obj_class,
+ const struct abis_om_obj_inst *obj_inst,
+ enum abis_nm_nack_cause *c);
+
#endif // _OML_H */