| Mock-ril: |
| |
| Install: |
| |
| The protoc is now part of the Android build but its |
| called "aprotoc" so it doesn't conflict with versions |
| already installed. If you wish to install it permanetly |
| see external/protobuf/INSTALL.txt and |
| external/protobuf/python/README.txt. 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. Also Makefile needs to know the device being |
| used as this determines the directory where files are found |
| and stored. ANDROID_DEVICE is an environment variable and |
| maybe either exported: |
| $ export ANDROID_DEVICE=stingray |
| |
| or it can be passed on the command line: |
| $ make clean ANDROID_DEVICE=stingray |
| |
| If it's not set "passion" is the default. |
| |
| 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. |
| and there are 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 |
| |
| or |
| |
| $ adb shell setprop ctl.restart ril-daemon |
| |
| 5) Make modifications, go to step 3. |