Home | History | Annotate | only in /hardware/ril/mock-ril
Up to higher level directory
NameDateSize
.gitignore19-Dec-201013
Android.mk19-Dec-20102.3K
Makefile19-Dec-20106.8K
MODULE_LICENSE_APACHE219-Dec-20100
NOTICE19-Dec-201011.9K
README.txt19-Dec-20104.7K
src/19-Dec-2010

README.txt

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