blob: a748bbcae1f664eefee86ca658ef758302dae7bc [file] [log] [blame]
Harald Welte615bd542017-07-14 18:28:55 +02001module Osmocom_Types {
Harald Welteddeaa572017-07-14 18:58:07 +02002 type integer uint8_t (0..255) with { variant "unsigned 8 bit" };
Harald Welte615bd542017-07-14 18:28:55 +02003 type integer uint16_t (0..65535) with { variant "unsigned 16 bit" };
Harald Welte484160b2017-07-28 13:30:24 +02004 type integer uint24_t (0..16777215) with { variant "unsigned 24 bit" };
Harald Welteddeaa572017-07-14 18:58:07 +02005 type integer uint32_t (0..4294967295) with { variant "unsigned 32 bit" };
6
7 type integer int8_t (-128..127) with { variant "8 bit" };
8 type integer int16_t (-32768..32767) with { variant "16 bit" };
9
Harald Weltef6543322017-07-16 07:35:10 +020010 type integer uint1_t (0..1) with { variant "unsigned 1 bit" };
Harald Welte615bd542017-07-14 18:28:55 +020011 type integer uint2_t (0..3) with { variant "unsigned 2 bit" };
12 type integer uint3_t (0..7) with { variant "unsigned 3 bit" };
13 type integer uint4_t (0..15) with { variant "unsigned 4 bit" };
14 type integer uint5_t (0..31) with { variant "unsigned 5 bit" };
15 type integer uint6_t (0..63) with { variant "unsigned 6 bit" };
16 type integer uint7_t (0..127) with { variant "unsigned 7 bit" };
Harald Welte615bd542017-07-14 18:28:55 +020017 type integer uint9_t (0..511) with { variant "unsigned 9 bit" };
18 type integer uint10_t (0..1023) with { variant "unsigned 10 bit" };
19 type integer uint11_t (0..2047) with { variant "unsigned 11 bit" };
20 type integer uint12_t (0..4095) with { variant "unsigned 12 bit" };
Harald Welteddeaa572017-07-14 18:58:07 +020021 type integer uint13_t (0..8191) with { variant "unsigned 13 bit" };
22 type integer uint14_t (0..16383) with { variant "unsigned 14 bit" };
23 type integer uint15_t (0..32767) with { variant "unsigned 15 bit" };
24
25 type record Arfcn {
26 boolean pcs,
27 uint15_t arfcn
28 } with { variant "" };
29
Harald Welte91827042018-01-25 09:20:04 +010030 /* return random integer between 0 and max */
31 function f_rnd_int(integer max) return integer {
32 return float2int(rnd()*int2float(max));
33 }
34
35 /* return hexstring composed of random digits */
36 function f_rnd_hexstring(in integer len, in integer max := 15) return hexstring {
37 var integer i;
38 var hexstring ret := ''H;
39 for (i := 0; i < len; i := i + 1) {
40 ret := ret & int2hex(f_rnd_int(max), 1);
41 }
42 return ret;
43 }
44
45 /* return octetstring composed of random bytes */
46 function f_rnd_octstring(in integer len) return octetstring {
47 var integer i;
48 var octetstring ret := ''O;
49 for (i := 0; i < len; i := i + 1) {
50 ret := ret & int2oct(f_rnd_int(255), 1);
51 }
52 return ret;
53 }
54
55 function f_rnd_imsi(in hexstring prefix) return hexstring {
56 return prefix & f_rnd_hexstring(15 - lengthof(prefix), 9);
57 }
58
59 function f_rnd_msisdn(in octetstring prefix, integer len := 6) return octetstring {
60 return prefix & f_rnd_octstring(len - lengthof(prefix));
61 }
62
Harald Weltec2461d62018-01-26 18:55:00 +010063 function f_sleep(float seconds) {
64 timer T := seconds;
65 T.start;
66 T.timeout;
67 }
68
Harald Welte615bd542017-07-14 18:28:55 +020069} with { encode "RAW"; variant "FIELDORDER(msb)" }