changeset 714:58bbee73c4b7

gsm-fw/L1/include/l1_confg.h: SEND_FN_TO_L2_IN_DCCH fix
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Fri, 03 Oct 2014 06:49:23 +0000
parents c0d95c32a99a
children 40a223937246
files gsm-fw/L1/include/l1_confg.h
diffstat 1 files changed, 24 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/gsm-fw/L1/include/l1_confg.h	Fri Oct 03 05:05:03 2014 +0000
+++ b/gsm-fw/L1/include/l1_confg.h	Fri Oct 03 06:49:23 2014 +0000
@@ -1129,8 +1129,30 @@
 // MAC-S status reporting to Layer 1
 #define MACS_STATUS     0   // MAC-S STATUS activated if set to 1
 
-// Possible choice for dll_dcch_downlink interface (with FN or without FN)
-#define SEND_FN_TO_L2_IN_DCCH 0
+/*
+ * Possible choice for dll_dcch_downlink interface (with FN or without FN)
+ * 0=without, 1=with FN parameter
+ *
+ * FreeCalypso note: the Leonardo version had this setting set to 1, i.e.,
+ * 3 arguments to dll_dcch_downlink(). We don't have any source or even
+ * header files for the Leonardo version of DL, but disassembly shows
+ * that dll_dcch_downlink() does expect the FN parameter. The source for
+ * DL from LoCosto also has a SEND_FN_TO_L2_IN_DCCH configurable setting,
+ * and it is set to 1 in the dl.h local header. But here is the kicker:
+ * the LoCosto version of this l1_confg.h header has the setting set to 0!
+ *
+ * I couldn't believe my eyes, so I disassembled the binary objects present
+ * in the copy of the LoCosto source from scottn.us: yes, indeed that
+ * code version contains an outright bug in that L1 does not pass the
+ * 3rd argument (in ARM register r2), but DL expects it to be there.
+ * (Thus DL is getting whatever "garbage" happens to be in r2 as the FN
+ * parameter. I did not take the time to investigate what the downstream
+ * effects are.)
+ *
+ * For FreeCalypso I'm setting SEND_FN_TO_L2_IN_DCCH to 1, both here
+ * in L1 and in DL, where it was already set.
+ */
+#define SEND_FN_TO_L2_IN_DCCH 1
 
 /*
  * FreeCalypso change: I'm disabling L1_CHECK_COMPATIBLE (a new "feature"