ms: sch: drop intermediate softvector

Change-Id: Iadc8f224f9e43282339197b11f388fc574656299
diff --git a/Transceiver52M/ms/ms.h b/Transceiver52M/ms/ms.h
index ad2d056..926031e 100644
--- a/Transceiver52M/ms/ms.h
+++ b/Transceiver52M/ms/ms.h
@@ -289,7 +289,7 @@
 
 	bool handle_sch_or_nb();
 	bool handle_sch(bool first = false);
-	bool decode_sch(float *bits, bool update_global_clock);
+	bool decode_sch(char *bits, bool update_global_clock);
 	SCH_STATE search_for_sch(dev_buf_t *rcd);
 	void grab_bursts(dev_buf_t *rcd);
 
diff --git a/Transceiver52M/ms/ms_rx_lower.cpp b/Transceiver52M/ms/ms_rx_lower.cpp
index 1872c6c..5a07df5 100644
--- a/Transceiver52M/ms/ms_rx_lower.cpp
+++ b/Transceiver52M/ms/ms_rx_lower.cpp
@@ -51,15 +51,16 @@
 #endif
 
 #define PRINT_Q_OVERFLOW
-bool ms_trx::decode_sch(float *bits, bool update_global_clock)
+
+bool ms_trx::decode_sch(char *bits, bool update_global_clock)
 {
 	int fn;
 	struct sch_info sch;
 	ubit_t info[GSM_SCH_INFO_LEN];
 	sbit_t data[GSM_SCH_CODED_LEN];
 
-	float_to_sbit(&bits[3], &data[0], 1, 39);
-	float_to_sbit(&bits[106], &data[39], 1, 39);
+	memcpy(&data[0], &bits[3], 39);
+	memcpy(&data[39], &bits[106], 39);
 
 	if (!gsm_sch_decode(info, data)) {
 		gsm_sch_parse(info, &sch);
@@ -171,12 +172,7 @@
 	}
 	detect_burst(&ss[start], &channel_imp_resp[0], 0, sch_demod_bits);
 
-	SoftVector bitss(148);
-	for (int i = 0; i < 148; i++) {
-		bitss[i] = (sch_demod_bits[i]);
-	}
-
-	auto sch_decode_success = decode_sch(bitss.begin(), is_first_sch_acq);
+	auto sch_decode_success = decode_sch(sch_demod_bits, is_first_sch_acq);
 
 	if (sch_decode_success) {
 		const auto ts_offset_symb = 0;