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