aboutsummaryrefslogtreecommitdiffstats
path: root/src/nmt/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nmt/frame.c')
-rw-r--r--src/nmt/frame.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/nmt/frame.c b/src/nmt/frame.c
index 87a5e59..3f9b8c6 100644
--- a/src/nmt/frame.c
+++ b/src/nmt/frame.c
@@ -481,14 +481,18 @@ static const char *param_ta_450(uint64_t value, int ndigits, enum nmt_direction
return result;
}
-static const char *param_ta_900(uint64_t value, int __attribute__((unused)) ndigits, enum nmt_direction __attribute__((unused)) direction)
+static const char *param_ta_900(uint64_t value, int ndigits, enum nmt_direction __attribute__((unused)) direction)
{
- static char result[32];
+ static char result[64];
- if ((value & 0x80))
- sprintf(result, "%" PRIu64 " (Channel No. + 1024)", value & 0x7f);
- else
- sprintf(result, "%" PRIu64, value);
+ if ((value & 0x80)) {
+ nmt_value2digits(value & 0x7f, result, ndigits);
+ result[ndigits] = '\0';
+ strcat(result, " (Channel No. + 1024)");
+ } else {
+ nmt_value2digits(value, result, ndigits);
+ result[ndigits] = '\0';
+ }
return result;
}
@@ -722,16 +726,9 @@ enum nmt_mt decode_frame_mt(const uint8_t *digits, enum nmt_direction direction,
return NMT_MESSAGE_21b;
return NMT_MESSAGE_4;
case 4:
- switch((digits[13] << 8) + (digits[14] << 4) + digits[15]) {
- case 0x3f3:
- case 0x3f4:
- case 0x3f5:
- case 0x3f6:
- case 0x000:
+ if (digits[6] || digits[7] || digits[8] || digits[9] || digits[10] || digits[11] || digits[12])
return NMT_MESSAGE_2e;
- default:
- return NMT_MESSAGE_1b;
- }
+ return NMT_MESSAGE_1b;
case 5:
if (digits[6] == 15)
return NMT_MESSAGE_21c;