--- /dev/null
+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.