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