OSDN Git Service

Port Mock Ril from master branch to GB. DO NOT MERGE
[android-x86/hardware-ril.git] / mock-ril / README.txt
diff --git a/mock-ril/README.txt b/mock-ril/README.txt
new file mode 100644 (file)
index 0000000..32abdd8
--- /dev/null
@@ -0,0 +1,133 @@
+Mock-ril:
+
+Install:
+
+Install protoc see the external/protobuf/INSTALL.txt and
+external/protobuf/python/README.txt. The short answer is:
+
+    $ cd external/protobuf
+    $ ./configure
+    $ make
+    $ make check
+    $ make install
+    $ cd python
+    $ python setup.py install
+
+If you get "from google.protobuf import xxxx" statements
+that google.protobuf is not found you didn't install the
+python support for protobuf. Also on Mac OSX I got an
+error running the protoc tests but installing was fine.
+
+Running/testing:
+
+See "Testing a new ril:" below for general instructions but
+for the mock-ril I've added some targets to the Makefile to
+ease testing.
+
+Execute the "first" target first to setup appropriate
+environment:
+  $ cd hardware/ril/mock-ril
+  $ make first
+
+If changes made to ".proto" files run make with the default
+"all" target:
+  $ make
+
+If changes are made to "c++" file create a new library and
+run the "test" target:
+  $ mm
+  $ make test
+
+If changes to only the execute "js" target:
+  $ make js
+
+To run the test control server:
+  $ make tcs
+
+Implementation:
+
+The mock-ril is a library where the ril is implemented primarily
+in javascript, mock-ril.js. In addition it can be controlled by
+sending messages from another computer to port 54312 (TODO make
+programmable) to the ctrlServer, a Worker in In mock-ril.js.
+
+See mock_ril.js for additional documentation.
+
+files:
+  ctrl.proto                    Protobuf messages for the control server
+  ctrl.*                        Protobuf generated files.
+  ctrl_pb2.py                   Python files generated from ctrl.proto
+  ctrl_server.*                 Cpp interface routines between ctrlServer
+                                in javascript and the controller.
+  experiments.*                 Early experiments
+  js_support.*                  Java script support methods. Exposes various
+                                routines to javascript, such as print, readFile
+                                and include.
+  logging.h                     LOG_TAG and include utils/log.h
+  mock_ril.[cpp|h]              Main module inteface code.
+  mock_ril.js                   The mock ril
+  node_buffer.*                 A Buffer for communicating between c++ and js.
+                                This was ported from nodejs.org.
+  node_object.*                 An object wrapper to make it easier to expose
+                                c++ code to js. Ported from nodejs.org.
+  node_util.*                   Some utilities ported from nodejs.org.
+  protobuf_v8.*                 Protobuf code for javascript ported from
+                                http://code.google.com/p/protobuf-for-node/.
+  requests.*                    Interface code for handling framework requests.
+  responses*                    Interface code for handling framework responses.
+  ril.proto                     The protobuf version of ril.h
+  ril_vars.js                   Some additional variables defined for enums in
+                                ril.h.
+  ril_pb2.py                    Python files generated from ril.proto.
+  status.h                      STATUS constants.
+  tcs.py                        Test the ctrlServer.
+  util.*                        Utility routines
+  worker.*                      Define WorkerThread and WorkerQueue.
+  worker_v8.*                   Expose WorkerQueue to js.
+
+
+TODO: more documentation.
+
+
+Testing a new ril:
+
+The Makefile is used to generate files and make testing easier.
+I has several targets:
+
+all         runs protoc and generates files, ril.desc ril.pb.*
+
+clean       target removes generated files.
+
+first       changes to root, remounts r/w and copies some files.
+
+test        copies the latest libmock_ril.so and kills rild
+            to run the new mockril
+
+General instructions for testing ril's:
+
+1) On the device login in as root and remount file system so it's read/write:
+     $ adb root
+     restarting adbd as root
+
+     $ adb remount
+     remount succeeded
+
+2) Set rild.libpath to the name of the ril:
+     adb shell setprop rild.libpath /system/lib/libmock_ril.so
+
+  Using setprop makes the change temporary and the old ril will be
+  used after rebooting. (Another option is to set rild.libpath in
+  /data/local.prop, but don't forget to reboot for it to take effect).
+
+3) Compile and copy the ril to /system/lib/:
+   adb push out/target/product/passion/system/lib/libmock_ril.so /system/lib/
+
+4) To restart the ril, kill the currently running ril and the new one
+   will automatically be restarted. You can use the ps command to find
+   /system/bin/rild PID, 3212 below and kill it:
+     $ adb shell ps | grep rild
+     radio     3212  1     3224   628   ffffffff afd0e4fc S /system/bin/rild
+
+     $ adb shell kill 3212
+
+5) Make modifications, go to step 3.