comparison gsm-fw/L1/stand/README @ 616:4d40f9a99445

gsm-fw/L1/stand: plan to use L1IF forwarder entity
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 30 Aug 2014 22:52:35 +0000
parents 9e605ec89ed0
children
comparison
equal deleted inserted replaced
615:13e55e310eea 616:4d40f9a99445
29 29
30 Because our standalone L1 build is a specially stripped-down version of the 30 Because our standalone L1 build is a specially stripped-down version of the
31 regular fw build, and not at all like TI's standalone L1, we do NOT define 31 regular fw build, and not at all like TI's standalone L1, we do NOT define
32 OP_L1_STANDALONE. Instead we have a different preprocessor symbol: 32 OP_L1_STANDALONE. Instead we have a different preprocessor symbol:
33 CONFIG_L1_STANDALONE. 33 CONFIG_L1_STANDALONE.
34
35 The standard version of l1_pei calls vsi_c_open() to get queue handles of
36 several G23 stack entities; it connects by name to "PL", "MMI", and if GPRS is
37 enabled, also to "GRR", "LLC" and "SND". If we leave these connect-by-name
38 calls unchanged in our L1 standalone version, our pei_init() will always return
39 PEI_ERROR and never successfully initialize, which would not be very useful.
40 If we removed these vsi_c_open() calls and the associated OSX queue setup, the
41 first osx_send_prim() addressed to the queue in question will crash, so that
42 approach wouldn't be useful either.
43
44 What we would like to do is redirect all outbound messages emitted by our
45 standalone L1 to the debug serial interface, using GPF's TST entity, just as if
46 an L1 REDIRECT or DUPLICATE command was given to a complete GSM fw image.
47 However, simply connecting our queues to TST won't work, as TST is not designed
48 to receive "internal" protocol stack primitives directly. When the routing
49 facility is used to DUPLICATE or REDIRECT a prim to an external entity, the
50 code in gpf/frame/route.c sends a special "wrapper" prim to TST, and we need to
51 replicate this wrapping in order to achieve the same effect.
52
53 Our solution: we are going to construct a special forwarder entity called L1IF,
54 and the connect-by-name calls in l1_pei which normally point to PL, MMI etc
55 will point to L1IF instead. L1IF will run in the passive body variant, and its
56 pei_primitive() function will replicate the routing facility's logic for
57 forwarding PS primitives to TST. Whew!