Event Feed » History » Version 2
laforge, 06/22/2018 05:03 PM
formatting
1 | 1 | laforge | {{>toc}} |
---|---|---|---|
2 | 2 | laforge | |
3 | 1 | laforge | h1. Event Feed |
4 | |||
5 | General idea: Feed of events pushed out from [each] Osmocom program |
||
6 | |||
7 | h2. Events |
||
8 | |||
9 | h3. FSM creation |
||
10 | |||
11 | * timestamp |
||
12 | * source file (string) |
||
13 | * source line (u32) |
||
14 | * ptr (u32/u64) |
||
15 | * fsm class (string) |
||
16 | * ID (string) |
||
17 | * parent ptr (if any) |
||
18 | |||
19 | h3. FSM event |
||
20 | |||
21 | * timestamp |
||
22 | * source file (string) |
||
23 | * source line (u32) |
||
24 | * ptr (u32/64) |
||
25 | * event number (u8/32) |
||
26 | * state number (u8/32) |
||
27 | * decoded/interpreted event payload? tlv? |
||
28 | |||
29 | h3. FSM state change |
||
30 | |||
31 | * timestamp |
||
32 | * source file (string) |
||
33 | * source line (u32) |
||
34 | * ptr (u32/64) |
||
35 | * old state number (u8/32) |
||
36 | * new state number (u8/32) |
||
37 | * timer number (int) |
||
38 | * timer timeout (u32) |
||
39 | ** optional. old timer could also remain running! |
||
40 | |||
41 | h3. FSM termination |
||
42 | |||
43 | * timestamp |
||
44 | * source file (string) |
||
45 | * source line (u32) |
||
46 | * ptr (u32/u64) |
||
47 | * termination cause |
||
48 | |||
49 | h3. FSM rename |
||
50 | |||
51 | * timestamp |
||
52 | * source file (string) |
||
53 | * source line (u32) |
||
54 | * ptr (u32/u64) |
||
55 | * old id (string) ? |
||
56 | * new id (string) |
||
57 | |||
58 | h3. FSM reparent (change or unlink) |
||
59 | |||
60 | * timestamp |
||
61 | * ptr (u32/u64) |
||
62 | * old parent ptr (u32/u64) |
||
63 | * new parent ptr (u32/u64) |
||
64 | |||
65 | h3. non-FSM events |
||
66 | |||
67 | * measurement reports (bts/bsc) |
||
68 | * "jolly fsm" like LAPDm, CC FSMs -> maybe convert them? |
||
69 | * OsmoPCU: TBF / resoure block allocations per frame number |
||
70 | ** probably needs some quite different handling? |
||
71 | |||
72 | |||
73 | h2. filtering |
||
74 | |||
75 | * ability to enable/disable generation of events per FSM class [or instance?] |
||
76 | * ability to do retroactive filtering in the visualization tool |
||
77 | |||
78 | h2. format / encoding |
||
79 | |||
80 | * don't generate JSON directly, let's avoid all the string encoding |
||
81 | * use CTRL or other interface to query string tables of FSM events and FSM states at runtime |
||
82 | * external program can use string tables + binary protocol to generate JSON feed for browser |
||
83 | * external program can collect/aggregate feeds from multiple osmocom programs |
||
84 | |||
85 | h2. visual representation |
||
86 | |||
87 | * list of instances per FSM class |
||
88 | ** sort it by "most recent", "ID" or "will expire soonest" |
||
89 | * history / time line for each FSM instance |
||
90 | * relationship of parent/child FSMs, maybe some kind of tree structure? |
||
91 | * show FSMs of different osmocom network elements in one view, i.e. BTS+BSC+MSC |
||
92 | |||
93 | |||
94 | h2. misc ideas |
||
95 | |||
96 | * pass out ptr/addr as u32/u64 to uniquely identify FSM |
||
97 | ** string ID would then only be needed during creation and rename |
||
98 | ** FSM class would then only be needed during creation |
||
99 | ** u32/u64 would be unique identifier for all FSM instances inside one osmo-* program |
||
100 | * generate "FSM create" events with current state at start-up (optionally?) |