On Sun, Dec 08, 2013 at 07:57:44PM +0100, Andreas Eversberg wrote:
"range512->form_id" points to the upper 7
bits of chan_list[0]. when
you do that, you would write 0x44 to chan_list[0] instead of the
required 0x88. use "chan_list[0] = 0x88" instead.
thanks, so
diff --git a/openbsc/src/libbsc/arfcn_range_encode.c
b/openbsc/src/libbsc/arfcn_range_encode.c
index 02a75a5..8ed4711 100644
--- a/openbsc/src/libbsc/arfcn_range_encode.c
+++ b/openbsc/src/libbsc/arfcn_range_encode.c
@@ -210,10 +210,11 @@ int range_enc_range256(uint8_t *chan_list, int f0, int *w)
int range_enc_range512(uint8_t *chan_list, int f0, int *w)
{
struct gsm48_range_512 *range512;
+
+ chan_list[0] = 0x88;
write_orig_arfcn(chan_list, f0);
range512 = (struct gsm48_range_512 *) &chan_list[0];
- range512->form_id = chan_list[0] = 0x44;
/* W(1) */
range512->w1_hi = HIGH_BITS(w, 1, 9, 7);
will do the job. I will create a testcase and then include a patch.