Fix trailing newline mess with LOGP(C) in rlcmac/csn1

Output was incorrect before this patch. LOPC was being called without
having any initial LOGP, and trailing newline was usually missing at the
end.

Since csnDecoder/encoder functions are recursive, it's difficult to
handle logging state in a coherent way inside them. Let's better simply
control start/end of logging related topics in the callers of those
functions, and simply use LOGPC everywhere in csn1.cpp.

Change-Id: I50da7560939fac360b7545e2a6bfaf45ed0c4832
This commit is contained in:
Pau Espin 2020-02-03 18:58:24 +01:00 committed by laforge
parent 3ff1a3c6d5
commit ac2b866426
2 changed files with 38 additions and 1 deletions

View File

@ -114,8 +114,9 @@ static const struct value_string csn1_error_names[] = {
static gint16 ProcessError_impl(const char *file, int line, unsigned readIndex,
const char* sz, gint16 err, const CSN_DESCR* pDescr)
{
/* Don't add trailing newline, top caller is responsible for appending it */
if (err != CSN_OK)
LOGPSRC(DCSN1, LOGL_ERROR, file, line, "%s: error %s (%d) at %s (idx %d)\n",
LOGPSRC(DCSN1, LOGL_ERROR, file, line, "%s: error %s (%d) at %s (idx %d)",
sz, get_value_string(csn1_error_names, err), err,
pDescr ? pDescr->sz : "-", readIndex);
return err;

View File

@ -4825,11 +4825,15 @@ int decode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data)
LOGP(DRLCMACDATA, LOGL_NOTICE, "Payload Type: RESERVED (3)\n");
return CSN_ERROR_GENERAL;
}
data->NrOfBits = 23 * 8;
csnStreamInit(&ar, 0, data->NrOfBits);
readIndex += 6;
data->u.MESSAGE_TYPE = bitvec_read_field(vector, &readIndex, 6);
readIndex = 0;
/* recursive csnStreamDecoder call uses LOGPC everywhere, so we need to start the log somewhere... */
LOGP(DCSN1, LOGL_INFO, "csnStreamDecoder (type=%d): ", data->u.MESSAGE_TYPE);
switch (data->u.MESSAGE_TYPE)
{
case MT_PACKET_CELL_CHANGE_FAILURE:
@ -4913,6 +4917,10 @@ int decode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data)
break;
}
/* recursive csnStreamDecoder call uses LOGPC everywhere without trailing
newline, so as a caller we are responisble for submitting it */
LOGPC(DCSN1, LOGL_INFO, "\n");
if (ret > 0) {
LOGP(DRLCMACDATA, LOGL_NOTICE, "Got %d remaining bits unhandled by decoder at the end of bitvec\n", ret);
ret = 0;
@ -4983,6 +4991,9 @@ int decode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data)
csnStreamInit(&ar, bit_offset, bit_length);
/* recursive csnStreamDecoder call uses LOGPC everywhere, so we need to start the log somewhere... */
LOGP(DCSN1, LOGL_INFO, "csnStreamDecoder (type=%d): ", data->u.MESSAGE_TYPE);
switch (data->u.MESSAGE_TYPE)
{
case MT_PACKET_ACCESS_REJECT:
@ -5115,6 +5126,10 @@ int decode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data)
break;
}
/* recursive csnStreamDecoder call uses LOGPC everywhere without trailing
newline, so as a caller we are responisble for submitting it */
LOGPC(DCSN1, LOGL_INFO, "\n");
if (ret > 0) {
LOGP(DRLCMACDATA, LOGL_NOTICE, "Got %d remaining bits unhandled by decoder at the end of bitvec\n", ret);
ret = 0;
@ -5133,6 +5148,9 @@ int encode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data)
data->NrOfBits = 23 * 8;
csnStreamInit(&ar, 0, data->NrOfBits);
writeIndex = 0;
/* recursive csnStreamEncoder call uses LOGPC everywhere, so we need to start the log somewhere... */
LOGP(DCSN1, LOGL_INFO, "csnStreamEncoder (type=%d): ", data->u.MESSAGE_TYPE);
switch (data->u.MESSAGE_TYPE)
{
case MT_PACKET_CELL_CHANGE_FAILURE:
@ -5216,6 +5234,10 @@ int encode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data)
break;
}
/* recursive csnStreamDecoder call uses LOGPC everywhere without trailing
newline, so as a caller we are responisble for submitting it */
LOGPC(DCSN1, LOGL_INFO, "\n");
if (ret > 0) {
LOGP(DRLCMACDATA, LOGL_NOTICE, "Got %d remaining bits unhandled by encoder at the end of bitvec\n", ret);
ret = 0;
@ -5283,6 +5305,9 @@ int encode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data)
csnStreamInit(&ar, bit_offset, bit_length);
/* recursive csnStreamEncoder call uses LOGPC everywhere, so we need to start the log somewhere... */
LOGP(DCSN1, LOGL_INFO, "csnStreamEncoder (type=%d): ", data->u.MESSAGE_TYPE);
switch (data->u.MESSAGE_TYPE)
{
case MT_PACKET_ACCESS_REJECT:
@ -5415,6 +5440,10 @@ int encode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data)
break;
}
/* recursive csnStreamDecoder call uses LOGPC everywhere without trailing
newline, so as a caller we are responisble for submitting it */
LOGPC(DCSN1, LOGL_INFO, "\n");
if (ret > 0) {
LOGP(DRLCMACDATA, LOGL_NOTICE, "Got %d remaining bits unhandled by encoder at the end of bitvec\n", ret);
ret = 0;
@ -5566,8 +5595,15 @@ int decode_gsm_ra_cap(bitvec * vector, MS_Radio_Access_capability_t *data)
unsigned readIndex = 0;
csnStreamInit(&ar, 0, 8 * vector->data_len);
/* recursive csnStreamEncoder call uses LOGPC everywhere, so we need to start the log somewhere... */
LOGP(DCSN1, LOGL_INFO, "csnStreamEncoder (RAcap): ");
ret = csnStreamDecoder(&ar, CSNDESCR(MS_Radio_Access_capability_t), vector, readIndex, data);
/* recursive csnStreamDecoder call uses LOGPC everywhere without trailing
newline, so as a caller we are responisble for submitting it */
LOGPC(DCSN1, LOGL_INFO, "\n");
if (ret > 0) {
LOGP(DRLCMACDATA, LOGL_NOTICE, "Got %d remaining bits unhandled by decoder at the end of bitvec\n", ret);
ret = 0;