fixeria has submitted this change. (
https://gerrit.osmocom.org/c/libosmo-gprs/+/29207 )
Change subject: rlcmac: make logging category configurable
......................................................................
rlcmac: make logging category configurable
Change-Id: Icfef6de126304da81120f1d7b212992ead3409aa
---
M include/osmocom/gprs/rlcmac/gprs_rlcmac.h
M src/rlcmac/Makefile.am
M src/rlcmac/gprs_rlcmac.c
A src/rlcmac/misc.c
4 files changed, 79 insertions(+), 52 deletions(-)
Approvals:
Jenkins Builder: Verified
neels: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/include/osmocom/gprs/rlcmac/gprs_rlcmac.h
b/include/osmocom/gprs/rlcmac/gprs_rlcmac.h
index f83a3f9..7163b7e 100644
--- a/include/osmocom/gprs/rlcmac/gprs_rlcmac.h
+++ b/include/osmocom/gprs/rlcmac/gprs_rlcmac.h
@@ -5376,3 +5376,5 @@
int osmo_gprs_rlcmac_decode_ms_ra_cap(struct bitvec *vector,
MS_Radio_Access_capability_t * data);
int osmo_gprs_rlcmac_encode_ms_ra_cap(struct bitvec *vector,
MS_Radio_Access_capability_t * data);
int osmo_gprs_rlcmac_decode_egprs_pkt_ch_req(guint16 ra, EGPRS_PacketChannelRequest_t
*data);
+
+void osmo_gprs_rlcmac_set_log_cat(int cat);
diff --git a/src/rlcmac/Makefile.am b/src/rlcmac/Makefile.am
index 51e9ec1..d484a6f 100644
--- a/src/rlcmac/Makefile.am
+++ b/src/rlcmac/Makefile.am
@@ -23,6 +23,7 @@
libosmo_gprs_rlcmac_la_SOURCES = \
gprs_rlcmac.c \
+ misc.c \
$(NULL)
libosmo_gprs_rlcmac_la_LDFLAGS = \
diff --git a/src/rlcmac/gprs_rlcmac.c b/src/rlcmac/gprs_rlcmac.c
index 80b399b..b0b7ca8 100644
--- a/src/rlcmac/gprs_rlcmac.c
+++ b/src/rlcmac/gprs_rlcmac.c
@@ -35,8 +35,7 @@
#include <osmocom/csn1/csn1.h>
#include <osmocom/gprs/rlcmac/gprs_rlcmac.h>
-/* FIXME: configurable logging category */
-#define DRLCMACDATA DLGLOBAL
+extern int g_log_cat;
/* Payload type as defined in TS 44.060 / 10.4.7 */
#define PAYLOAD_TYPE_DATA 0
@@ -5377,12 +5376,12 @@
if (payload_type == PAYLOAD_TYPE_DATA)
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: DATA (0), not
implemented\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: DATA (0), not implemented\n");
return CSN_ERROR_GENERAL;
}
else if (payload_type == PAYLOAD_TYPE_RESERVED)
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
return CSN_ERROR_GENERAL;
}
@@ -5484,7 +5483,7 @@
LOGPC(DLCSN1, LOGL_INFO, "\n");
if (ret > 0) {
- LOGP(DRLCMACDATA, LOGL_NOTICE, "%s: Got %d remaining bits unhandled by decoder
at the end of bitvec\n", msg_type_name, ret);
+ LOGP(g_log_cat, LOGL_NOTICE, "%s: Got %d remaining bits unhandled by decoder at
the end of bitvec\n", msg_type_name, ret);
ret = 0;
}
@@ -5509,12 +5508,12 @@
if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_DATA)
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: DATA (0), not
implemented\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: DATA (0), not implemented\n");
return CSN_ERROR_GENERAL;
}
else if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_RESERVED)
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
return CSN_ERROR_GENERAL;
}
/* We can decode the message */
@@ -5696,7 +5695,7 @@
LOGPC(DLCSN1, LOGL_INFO, "\n");
if (ret > 0) {
- LOGP(DRLCMACDATA, LOGL_NOTICE, "%s: Got %d remaining bits unhandled by decoder
at the end of bitvec\n", msg_type_name, ret);
+ LOGP(g_log_cat, LOGL_NOTICE, "%s: Got %d remaining bits unhandled by decoder at
the end of bitvec\n", msg_type_name, ret);
ret = 0;
}
@@ -5807,8 +5806,8 @@
LOGPC(DLCSN1, LOGL_INFO, "\n");
if (ret > 0 || ret == CSN_ERROR_NEED_MORE_BITS_TO_UNPACK) {
- LOGP(DRLCMACDATA, LOGL_ERROR, "Failed to encode an Uplink block: not enough bits
"
- "in the output buffer (rc=%d)\n", ret);
+ LOGP(g_log_cat, LOGL_ERROR, "Failed to encode an Uplink block: not enough bits
"
+ "in the output buffer (rc=%d)\n", ret);
ret = CSN_ERROR_NEED_MORE_BITS_TO_UNPACK;
}
@@ -5828,12 +5827,12 @@
if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_DATA)
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: DATA (0), not
implemented\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: DATA (0), not implemented\n");
return CSN_ERROR_GENERAL;
}
else if (data->PAYLOAD_TYPE == PAYLOAD_TYPE_RESERVED)
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
return CSN_ERROR_GENERAL;
}
/* We can encode the message */
@@ -6017,8 +6016,8 @@
LOGPC(DLCSN1, LOGL_INFO, "\n");
if (ret > 0 || ret == CSN_ERROR_NEED_MORE_BITS_TO_UNPACK) {
- LOGP(DRLCMACDATA, LOGL_ERROR, "Failed to encode a Downlink block: not enough
bits "
- "in the output buffer (rc=%d)\n", ret);
+ LOGP(g_log_cat, LOGL_ERROR, "Failed to encode a Downlink block: not enough bits
"
+ "in the output buffer (rc=%d)\n", ret);
ret = CSN_ERROR_NEED_MORE_BITS_TO_UNPACK;
}
@@ -6039,25 +6038,25 @@
data->CV = bitvec_read_field(vector, &readIndex, 4);
data->SI = bitvec_read_field(vector, &readIndex, 1);
data->R = bitvec_read_field(vector, &readIndex, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "PAYLOAD_TYPE = %u ",
(unsigned)(data->PAYLOAD_TYPE));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "CV = %u ", (unsigned)(data->CV));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "SI = %u ", (unsigned)(data->SI));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "R = %u ", (unsigned)(data->R));
+ LOGPC(g_log_cat, LOGL_NOTICE, "PAYLOAD_TYPE = %u ",
(unsigned)(data->PAYLOAD_TYPE));
+ LOGPC(g_log_cat, LOGL_NOTICE, "CV = %u ", (unsigned)(data->CV));
+ LOGPC(g_log_cat, LOGL_NOTICE, "SI = %u ", (unsigned)(data->SI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "R = %u ", (unsigned)(data->R));
// Octet 1
data->spare = bitvec_read_field(vector, &readIndex, 1);
data->PI = bitvec_read_field(vector, &readIndex, 1);
data->TFI = bitvec_read_field(vector, &readIndex, 5);
data->TI = bitvec_read_field(vector, &readIndex, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "spare = %u ",
(unsigned)(data->spare));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "PI = %u ", (unsigned)(data->PI));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "TFI = %u ", (unsigned)(data->TFI));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "TI = %u ", (unsigned)(data->TI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "spare = %u ", (unsigned)(data->spare));
+ LOGPC(g_log_cat, LOGL_NOTICE, "PI = %u ", (unsigned)(data->PI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "TFI = %u ", (unsigned)(data->TFI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "TI = %u ", (unsigned)(data->TI));
// Octet 2
data->BSN = bitvec_read_field(vector, &readIndex, 7);
data->E_1 = bitvec_read_field(vector, &readIndex, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "BSN = %u ", (unsigned)(data->BSN));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "E_1 = %u ", (unsigned)(data->E_1));
+ LOGPC(g_log_cat, LOGL_NOTICE, "BSN = %u ", (unsigned)(data->BSN));
+ LOGPC(g_log_cat, LOGL_NOTICE, "E_1 = %u ", (unsigned)(data->E_1));
if (data->E_1 == 0) // Extension octet follows immediately
@@ -6069,37 +6068,37 @@
data->LENGTH_INDICATOR[i] = bitvec_read_field(vector, &readIndex, 6);
data->M[i] = bitvec_read_field(vector, &readIndex, 1);
data->E[i] = bitvec_read_field(vector, &readIndex, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "LENGTH_INDICATOR[%u] = %u ", i,
(unsigned)(data->LENGTH_INDICATOR[i]));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "M[%u] = %u ", i,
(unsigned)(data->M[i]));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "E[%u] = %u ", i,
(unsigned)(data->E[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "LENGTH_INDICATOR[%u] = %u ", i,
(unsigned)(data->LENGTH_INDICATOR[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "M[%u] = %u ", i,
(unsigned)(data->M[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "E[%u] = %u ", i,
(unsigned)(data->E[i]));
i++;
} while((data->M[i-1] == 1)&&(data->E[i-1] == 0));
}
if (data->TI == 1) // TLLI field is present
{
data->TLLI = bitvec_read_field(vector, &readIndex, 32);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "TLLI = %08x ", data->TLLI);
+ LOGPC(g_log_cat, LOGL_NOTICE, "TLLI = %08x ", data->TLLI);
if (data->PI == 1) // PFI is present if TI field indicates presence of TLLI
{
data->PFI = bitvec_read_field(vector, &readIndex, 7);
data->E_2 = bitvec_read_field(vector, &readIndex, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "PFI = %u ",
(unsigned)(data->PFI));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "E_2 = %u ",
(unsigned)(data->E_2));
+ LOGPC(g_log_cat, LOGL_NOTICE, "PFI = %u ", (unsigned)(data->PFI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "E_2 = %u ", (unsigned)(data->E_2));
}
}
unsigned dataLen = 23 - readIndex/8;
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "DATA[%u] = ", dataLen);
+ LOGPC(g_log_cat, LOGL_NOTICE, "DATA[%u] = ", dataLen);
assert(dataLen <= 20);
for (i = 0; i < dataLen; i++)
{
data->RLC_DATA[i] = bitvec_read_field(vector, &readIndex, 8);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "%02x",
(unsigned)(data->RLC_DATA[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "%02x", (unsigned)(data->RLC_DATA[i]));
}
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "\n");
+ LOGPC(g_log_cat, LOGL_NOTICE, "\n");
}
else
{
- LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
+ LOGP(g_log_cat, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
return;
}
}
@@ -6116,24 +6115,24 @@
bitvec_write_field(vector, &writeIndex, data->RRBP, 2);
bitvec_write_field(vector, &writeIndex, data->SP, 1);
bitvec_write_field(vector, &writeIndex, data->USF, 3);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "PAYLOAD_TYPE = %u ",
(unsigned)(data->PAYLOAD_TYPE));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "RRBP = %u ", (unsigned)(data->RRBP));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "SP = %u ", (unsigned)(data->SP));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "USF = %u ", (unsigned)(data->USF));
+ LOGPC(g_log_cat, LOGL_NOTICE, "PAYLOAD_TYPE = %u ",
(unsigned)(data->PAYLOAD_TYPE));
+ LOGPC(g_log_cat, LOGL_NOTICE, "RRBP = %u ", (unsigned)(data->RRBP));
+ LOGPC(g_log_cat, LOGL_NOTICE, "SP = %u ", (unsigned)(data->SP));
+ LOGPC(g_log_cat, LOGL_NOTICE, "USF = %u ", (unsigned)(data->USF));
// Octet 1
bitvec_write_field(vector, &writeIndex, data->PR, 2);
bitvec_write_field(vector, &writeIndex, data->TFI, 5);
bitvec_write_field(vector, &writeIndex, data->FBI, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "PR = %u ", (unsigned)(data->PR));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "TFI = %u ", (unsigned)(data->TFI));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "FBI = %u ", (unsigned)(data->FBI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "PR = %u ", (unsigned)(data->PR));
+ LOGPC(g_log_cat, LOGL_NOTICE, "TFI = %u ", (unsigned)(data->TFI));
+ LOGPC(g_log_cat, LOGL_NOTICE, "FBI = %u ", (unsigned)(data->FBI));
// Octet 2
bitvec_write_field(vector, &writeIndex, data->BSN, 7);
bitvec_write_field(vector, &writeIndex, data->E_1, 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "BSN = %u ", (unsigned)(data->BSN));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "E_1 = %u ", (unsigned)(data->E_1));
+ LOGPC(g_log_cat, LOGL_NOTICE, "BSN = %u ", (unsigned)(data->BSN));
+ LOGPC(g_log_cat, LOGL_NOTICE, "E_1 = %u ", (unsigned)(data->E_1));
// Octet 3 (optional)
if (data->E_1 == 0)
@@ -6144,22 +6143,22 @@
bitvec_write_field(vector, &writeIndex, data->LENGTH_INDICATOR[i], 6);
bitvec_write_field(vector, &writeIndex, data->M[i], 1);
bitvec_write_field(vector, &writeIndex, data->E[i], 1);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "LENGTH_INDICATOR[%u] = %u ", i,
(unsigned)(data->LENGTH_INDICATOR[i]));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "M[%u] = %u ", i,
(unsigned)(data->M[i]));
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "E[%u] = %u ", i,
(unsigned)(data->E[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "LENGTH_INDICATOR[%u] = %u ", i,
(unsigned)(data->LENGTH_INDICATOR[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "M[%u] = %u ", i,
(unsigned)(data->M[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "E[%u] = %u ", i,
(unsigned)(data->E[i]));
i++;
}
while ((data->M[i-1] == 1) && (data->E[i-1] == 0));
}
unsigned dataNumOctets = 23 - writeIndex/8;
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "DATA[%u] = ", dataNumOctets);
+ LOGPC(g_log_cat, LOGL_NOTICE, "DATA[%u] = ", dataNumOctets);
assert(dataNumOctets <= 20);
for (i = 0; i < dataNumOctets; i++)
{
bitvec_write_field(vector, &writeIndex, data->RLC_DATA[i], 8);
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "%02x",
(unsigned)(data->RLC_DATA[i]));
+ LOGPC(g_log_cat, LOGL_NOTICE, "%02x", (unsigned)(data->RLC_DATA[i]));
}
- LOGPC(DRLCMACDATA, LOGL_NOTICE, "\n");
+ LOGPC(g_log_cat, LOGL_NOTICE, "\n");
}
}
@@ -6180,7 +6179,7 @@
LOGPC(DLCSN1, LOGL_INFO, "\n");
if (ret > 0) {
- LOGP(DRLCMACDATA, LOGL_NOTICE, "RAcap: Got %d remaining bits unhandled by
decoder at the end of bitvec\n", ret);
+ LOGP(g_log_cat, LOGL_NOTICE, "RAcap: Got %d remaining bits unhandled by decoder
at the end of bitvec\n", ret);
ret = 0;
}
return ret;
@@ -6200,8 +6199,8 @@
LOGPC(DLCSN1, LOGL_INFO, "\n");
if (ret > 0 || ret == CSN_ERROR_NEED_MORE_BITS_TO_UNPACK) {
- LOGP(DRLCMACDATA, LOGL_ERROR, "Failed to encode MS RA Capability IE: not enough
bits "
- "in the output buffer (rc=%d)\n", ret);
+ LOGP(g_log_cat, LOGL_ERROR, "Failed to encode MS RA Capability IE: not enough
bits "
+ "in the output buffer (rc=%d)\n", ret);
ret = CSN_ERROR_NEED_MORE_BITS_TO_UNPACK;
}
diff --git a/src/rlcmac/misc.c b/src/rlcmac/misc.c
new file mode 100644
index 0000000..0aecbfd
--- /dev/null
+++ b/src/rlcmac/misc.c
@@ -0,0 +1,25 @@
+/*
+ * (C) 2022 by sysmocom - s.f.m.c. GmbH <info(a)sysmocom.de>
+ * Author: Vadim Yanitskiy <vyanitskiy(a)sysmocom.de>
+ *
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <osmocom/core/logging.h>
+
+int g_log_cat = DLGLOBAL;
+
+void osmo_gprs_rlcmac_set_log_cat(int cat)
+{
+ g_log_cat = cat;
+}
--
To view, visit
https://gerrit.osmocom.org/c/libosmo-gprs/+/29207
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-gprs
Gerrit-Branch: master
Gerrit-Change-Id: Icfef6de126304da81120f1d7b212992ead3409aa
Gerrit-Change-Number: 29207
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged