Introduce BS and MS power control related functions

* add bts->band field plus corresponding VTY and commandline argument
* add trx->nominal_power and trx->max_power_red fields
* add rsl_chan_bs_power_ctrl() to control TRX RF power for a given TS
* add rsl_chan_ms_power_ctrl() to control MS RF power for a given lchan.
diff --git a/openbsc/include/openbsc/abis_rsl.h b/openbsc/include/openbsc/abis_rsl.h
index 532595b..c928ffa 100644
--- a/openbsc/include/openbsc/abis_rsl.h
+++ b/openbsc/include/openbsc/abis_rsl.h
@@ -411,5 +411,8 @@
 int rsl_ccch_conf_to_bs_ccch_sdcch_comb(int ccch_conf);
 int rsl_number_of_paging_subchannels(struct gsm_bts *bts);
 
+int rsl_chan_bs_power_ctrl(struct gsm_lchan *lchan, unsigned int fpc, int db);
+int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan, unsigned int fpc, int dbm);
+
 #endif /* RSL_MT_H */
 
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index a401a47..8c44ba5 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -3,6 +3,14 @@
 
 #include <sys/types.h>
 
+enum gsm_band {
+	GSM_BAND_400,
+	GSM_BAND_850,
+	GSM_BAND_900,
+	GSM_BAND_1800,
+	GSM_BAND_1900,
+};
+
 enum gsm_phys_chan_config {
 	GSM_PCHAN_NONE,
 	GSM_PCHAN_CCCH,
@@ -223,6 +231,8 @@
 	} bb_transc;
 
 	u_int16_t arfcn;
+	int nominal_power;		/* in dBm */
+	unsigned int max_power_red;	/* in actual dB */
 
 	union {
 		struct {
@@ -301,6 +311,7 @@
 	u_int8_t bsic;
 	/* type of BTS */
 	enum gsm_bts_type type;
+	enum gsm_band band;
 	/* how do we talk OML with this TRX? */
 	struct e1inp_sign_link *oml_link;
 
@@ -396,6 +407,9 @@
 struct gsm_bts *gsm_bts_by_lac(struct gsm_network *net, unsigned int lac,
 				struct gsm_bts *start_bts);
 
+char *gsm_band_name(enum gsm_band band);
+enum gsm_band gsm_band_parse(int mhz);
+
 static inline int is_ipaccess_bts(struct gsm_bts *bts)
 {
 	switch (bts->type) {