• Home
Name Date Size #Lines LOC

..--

src/03-May-2024-14,0127,402

.gitignoreD03-May-202413 32

Android.mkD03-May-20241.9 KiB8757

MODULE_LICENSE_APACHE2D03-May-20240

MakefileD03-May-20245.1 KiB155116

NOTICED03-May-202411.9 KiB222184

README.txtD03-May-20245 KiB141105

README.txt

1Mock-ril:
2
3Install:
4
5The protoc is now part of the Android build but its
6called "aprotoc" so it doesn't conflict with versions
7already installed. If you wish to install it permanetly
8see external/protobuf/INSTALL.txt and
9external/protobuf/python/README.txt.  If you get
10"from google.protobuf import xxxx" statements that
11google.protobuf is not found, you didn't install the
12python support for protobuf. Also on Mac OSX I got an
13error running the protoc tests but installing was fine.
14
15Running/testing:
16
17See "Testing a new ril:" below for general instructions but
18for the mock-ril I've added some targets to the Makefile to
19ease testing. Also Makefile needs to know the device being
20used as this determines the directory where files are found
21and stored. ANDROID_DEVICE is an environment variable and
22maybe either exported:
23   $ export ANDROID_DEVICE=stingray
24
25or it can be passed on the command line:
26   $ make clean ANDROID_DEVICE=stingray
27
28If it's not set "passion" is the default.
29
30Execute the "first" target first to setup appropriate
31environment:
32  $ cd hardware/ril/mock-ril
33  $ make first
34
35If changes made to ".proto" files run make with the default
36"all" target:
37  $ make
38
39If changes are made to "c++" file create a new library and
40run the "test" target:
41  $ mm
42  $ make test
43
44If changes to only the execute "js" target:
45  $ make js
46
47To run the test control server:
48  $ make tcs
49
50Implementation:
51
52The mock-ril is a library where the ril is implemented primarily
53in javascript, mock-ril.js. In addition it can be controlled by
54sending messages from another computer to port 54312 (TODO make
55programmable) to the ctrlServer, a Worker in In mock-ril.js.
56
57See mock_ril.js for additional documentation.
58
59files:
60  ctrl.proto                    Protobuf messages for the control server
61  ctrl.*                        Protobuf generated files.
62  ctrl_pb2.py                   Python files generated from ctrl.proto
63  ctrl_server.*                 Cpp interface routines between ctrlServer
64                                in javascript and the controller.
65  experiments.*                 Early experiments
66  js_support.*                  Java script support methods. Exposes various
67                                routines to javascript, such as print, readFile
68                                and include.
69  logging.h                     LOG_TAG and include utils/log.h
70  mock_ril.[cpp|h]              Main module inteface code.
71  mock_ril.js                   The mock ril
72  node_buffer.*                 A Buffer for communicating between c++ and js.
73                                This was ported from nodejs.org.
74  node_object.*                 An object wrapper to make it easier to expose
75                                c++ code to js. Ported from nodejs.org.
76  node_util.*                   Some utilities ported from nodejs.org.
77  protobuf_v8.*                 Protobuf code for javascript ported from
78                                http://code.google.com/p/protobuf-for-node/.
79  requests.*                    Interface code for handling framework requests.
80  responses*                    Interface code for handling framework responses.
81  ril.proto                     The protobuf version of ril.h
82  ril_vars.js                   Some additional variables defined for enums in
83                                ril.h.
84  ril_pb2.py                    Python files generated from ril.proto.
85  status.h                      STATUS constants.
86  tcs.py                        Test the ctrlServer.
87  util.*                        Utility routines
88  worker.*                      Define WorkerThread and WorkerQueue.
89  worker_v8.*                   Expose WorkerQueue to js.
90
91
92TODO: more documentation.
93
94
95Testing a new ril:
96
97The Makefile is used to generate files and make testing easier.
98and there are has several targets:
99
100all         runs protoc and generates files, ril.desc ril.pb.*
101
102clean       target removes generated files.
103
104first       changes to root, remounts r/w and copies some files.
105
106test        copies the latest libmock_ril.so and kills rild
107            to run the new mockril
108
109General instructions for testing ril's:
110
1111) On the device login in as root and remount file system so it's read/write:
112     $ adb root
113     restarting adbd as root
114
115     $ adb remount
116     remount succeeded
117
1182) Set rild.libpath to the name of the ril:
119     adb shell setprop rild.libpath /system/lib/libmock_ril.so
120
121  Using setprop makes the change temporary and the old ril will be
122  used after rebooting. (Another option is to set rild.libpath in
123  /data/local.prop, but don't forget to reboot for it to take effect).
124
1253) Compile and copy the ril to /system/lib/:
126   adb push out/target/product/passion/system/lib/libmock_ril.so /system/lib/
127
1284) To restart the ril, kill the currently running ril and the new one
129   will automatically be restarted. You can use the ps command to find
130   /system/bin/rild PID, 3212 below and kill it:
131     $ adb shell ps | grep rild
132     radio     3212  1     3224   628   ffffffff afd0e4fc S /system/bin/rild
133
134     $ adb shell kill 3212
135
136   or
137
138     $ adb shell setprop ctl.restart ril-daemon
139
1405) Make modifications, go to step 3.
141