Add function to encode classmark

The code is based on Osmocom-BB implementation.

Change-Id: I78f6968edaa3ed535673411fb2a80060a472290f
diff --git a/src/gsm/gsm48.c b/src/gsm/gsm48.c
index b58e9e2..d9a5527 100644
--- a/src/gsm/gsm48.c
+++ b/src/gsm/gsm48.c
@@ -508,6 +508,22 @@
 	lai48->lac = osmo_htons(lac);
 }
 
+/*! Encode TS 24.008 §10.5.1.5 Mobile Station Classmark 1
+ *  \param[out] cm caller-provided memory for output
+ *  \param[in] rev_lv Revision level
+ *  \param[in] es_ind ES IND "Controlled Early Classmark Sending" option
+ *  \param[in] a5_1 A5/1 algorithm supported
+ *  \param[in] pwr_lv RF power capability
+ */
+void gsm48_encode_classmark1(struct gsm48_classmark1 *cm, uint8_t rev_lv, bool es_ind, bool a5_1, uint8_t rf_pwr)
+{
+	memset(cm, 0, sizeof(*cm));
+	cm->rev_lev = rev_lv;
+	cm->es_ind = es_ind;
+	cm->a5_1 = !a5_1;
+	cm->pwr_lev = rf_pwr;
+}
+
 /*! Decode TS 04.08 Location Area Identifier
  *  \param[in] Location Area Identifier (encoded)
  *  \param[out] mcc Mobile Country Code
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 7a74718..b6152ce 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -245,6 +245,7 @@
 gsm48_encode_signal;
 gsm48_encode_ssversion;
 gsm48_encode_useruser;
+gsm48_encode_classmark1;
 gsm48_generate_lai;
 gsm48_generate_mid;
 gsm48_generate_mid_from_imsi;