FreeCalypso > hg > freecalypso-sw
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! |