msuraev has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/31036 )
Change subject: Add SI10 support ......................................................................
Add SI10 support
Add data structures and checks for System information Type 10.
Related: OS#5783 Change-Id: I3a5da543f083f31e873c67b5ec1b5a439187d8f3 --- M include/osmocom/gsm/protocol/gsm_04_08.h M src/gsm/sysinfo.c 2 files changed, 15 insertions(+), 1 deletion(-)
Approvals: fixeria: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve msuraev: Looks good to me, approved Jenkins Builder: Verified
diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index ff9eb64..e494b58 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -1134,6 +1134,20 @@ #endif } __attribute__ ((packed));
+/* Section 9.1.50 System Information type 10 (ASCI) */ +struct gsm48_system_information_type_10 { +#if OSMO_IS_LITTLE_ENDIAN + uint8_t rr_short_pd:1, /* < RR short PD : bit > See 3GPP TS 24.007 §11.3.2 */ + msg_type:5, /* < message type : bit(5) > See 3GPP TS 44.018 Table 10.4.2 */ + l2_header:2; /* < short layer 2 header : bit(2) > See 3GPP TS 44.006 §6.4a */ + uint8_t rest_octets[0]; /* < SI10 Rest Octets : bit(160) > See 3GPP TS 44.018 §10.5.2.44 */ +#elif OSMO_IS_BIG_ENDIAN +/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */ + uint8_t l2_header:2, msg_type:5, rr_short_pd:1; + uint8_t rest_octets[0]; +#endif +} __attribute__ ((packed)); + /* Section 9.1.43a System Information type 13 */ struct gsm48_system_information_type_13 { struct gsm48_system_information_type_header header; diff --git a/src/gsm/sysinfo.c b/src/gsm/sysinfo.c index b615871..40e2652 100644 --- a/src/gsm/sysinfo.c +++ b/src/gsm/sysinfo.c @@ -46,7 +46,7 @@ /* bs11 forgot the l2 len, 0-6 rest octets */ osmo_static_assert(sizeof(struct gsm48_system_information_type_5) == 18, _si5_size); osmo_static_assert(sizeof(struct gsm48_system_information_type_6) == 11, _si6_size); - +osmo_static_assert(sizeof(struct gsm48_system_information_type_10) == 1, _si10_size); osmo_static_assert(sizeof(struct gsm48_system_information_type_13) == 3, _si13_size);
static const uint8_t sitype2rsl[_MAX_SYSINFO_TYPE] = {