# Assemble the Platform Development Kit (PDK)
# (TODO) Figure out why $(ACP) builds with target ndk but not pdk_docs
-# (TODO) Build doxygen (depend on latest version) -> line 25 </div> error
pdk:
@echo "Package: $@ has targets ndk, pdk_docs and pdk_all"
pdk_doxy_docsfiles_dir := $(pdk_docs_intermediates)/docsfiles
# Doxygen version to use, so we can override it on the command line
-# doxygen 1.4.6 working, the latest version get-apt installable on goobuntu.
-# (TODO) doxygen 1.5.6 generated source files not displayable
-# doxygen_version='~pubengdocs/shared/doxy/doxygen.1.5.6.kcc'
-# for latest version of doxygen on linux
+# doxygen 1.5.6 working, the latest version get-apt installable on ghardy.
+# with bug fix for </div> error.
doxygen_version = doxygen
#-------------------------------------------------------------------------------
@echo "PDK: $@"
$(copy-file-to-target-with-cp)
-# Copy appengine server files
-$(pdk_docs_intermediates)/app.yaml: $(pdk_hosting_dir)/app.yaml
- @echo "PDK: $@"
- $(copy-file-to-target-with-cp)
-
-$(pdk_docs_intermediates)/pdk.py: $(pdk_hosting_dir)/pdk.py
- @echo "PDK: $@"
- $(copy-file-to-target-with-cp)
-
-# Copy appengine server files for new system
-$(OUT_DOCS)/app.yaml: $(pdk_hosting_dir)/app.yaml
- @echo "PDK: $@"
- $(copy-file-to-target-with-cp)
-
-$(OUT_DOCS)/pdk.py: $(pdk_hosting_dir)/pdk.py
- @echo "PDK: $@"
- $(copy-file-to-target-with-cp)
-
# All the files that we depend upon
all_pdk_docs_files := $(pdk_doxygen_config_override_file) \
$(pdk_doxygen_config_file) $(pdk_docs_intermediates)/header.html \
$(pdk_docs_intermediates)/footer.html $(pdk_doxy_docsfiles_dir)/groups.dox \
- $(pdk_doxy_docsfiles_dir)/main.dox all_copied_pdk_templates
+ $(pdk_doxy_docsfiles_dir)/main.dox all_copied_pdk_templates \
+ all_copied_pdk_headers
# Run doxygen and copy all output and templates to the final destination
# We replace index.html with a template file so don't use the generated one
@mkdir -p $(pdk_docs_dest_dir)
@cd $(pdk_generated_source_dir) && chmod ug+rx *
@rm -f $(pdk_generated_source_dir)/index.html
+ # Fix a doxygen bug: in *-source.html file insert '</div>\n' after line 25
+ @$(pdk_hosting_dir)/edoxfix.sh $(pdk_generated_source_dir)
@cp -fp $(pdk_generated_source_dir)/* $(pdk_docs_dest_dir)
+ @rm $(pdk_generated_source_dir)/*
# ==== docs for the web (on the google app engine server) =======================
# Run javadoc/droiddoc/clearsilver to get the formatting right
# make droiddocs run after we make our doxygen docs
-$(pdk_docs_intermediates)/pdk-timestamp: pdk_doxygen
+$(pdk_docs_intermediates)/pdk-timestamp: pdk_doxygen all_copied_pdk_templates
@touch $(pdk_docs_intermediates)/pdk-timestamp
$(LOCAL_PATH)/pdk-timestamp: $(pdk_docs_intermediates)/pdk-timestamp
LOCAL_MODULE := online-pdk
LOCAL_DROIDDOC_OPTIONS := \
- $(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
- $(web_docs_sample_code_flags) \
-toroot /online-pdk/ \
-hdf android.whichdoc online-pdk
# The docs output dir is: out/target/common/docs/online-pdk
DOCS_OUT_DIR := $(OUT_DOCS)/$(LOCAL_MODULE)
+# Copy appengine server files for new system
+$(OUT_DOCS)/app.yaml: $(pdk_hosting_dir)/app.yaml
+ @echo "PDK: $@"
+ $(copy-file-to-target-with-cp)
+
+$(OUT_DOCS)/pdk.py: $(pdk_hosting_dir)/pdk.py
+ @echo "PDK: $@"
+ $(copy-file-to-target-with-cp)
+
# Name the tar files
name := android_pdk_docs-$(REQUESTED_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)-$(BUILD_NUMBER)
pdk_docs_tarfile := $(pdk_docs_intermediates)/$(name).tar
pdk_docs_tarfile_zipped := $(pdk_docs_tarfile).gz
-new_pdk_docs_tarfile := $(pdk_docs_intermediates)/new-$(name).tar
-new_pdk_docs_tarfile_zipped := $(new_pdk_docs_tarfile).gz
.PHONY: pdk pdk_docs pdk_doxygen all_copied_pdk_headers all_copied_pdk_templates pdk-timestamp
-pdk_docs: $(pdk_docs_tarfile_zipped) $(new_pdk_docs_tarfile)
+pdk_docs: $(pdk_docs_tarfile_zipped) $(pdk_docs_tarfile)
@echo "PDK: Docs tarred and zipped"
# Put the pdk_docs zip files in the distribution directory
$(call dist-for-goals,pdk_docs,$(pdk_docs_tarfile_zipped))
-$(call dist-for-goals,pdk_docs,$(new_pdk_docs_tarfile_zipped))
# zip up tar files
%.tar.gz: %.tar
$(hide) gzip -cf $< > $@
# tar up all the files to make the pdk docs.
-# old version
-$(pdk_docs_tarfile): pdk_doxygen all_copied_pdk_templates \
- $(pdk_docs_intermediates)/pdk.py $(pdk_docs_intermediates)/app.yaml
- @echo "PDK: $@"
- @mkdir -p $(dir $@)
- @rm -f $@
- $(hide) tar rf $@ -C $(pdk_docs_intermediates) docs pdk.py app.yaml
-
-# new version
-$(new_pdk_docs_tarfile): $(DOCS_OUT_DIR)-timestamp
+$(pdk_docs_tarfile): $(DOCS_OUT_DIR)-timestamp $(OUT_DOCS)/app.yaml $(OUT_DOCS)/pdk.py
@echo "PDK docs: $@"
@mkdir -p $(dir $@)
@rm -f $@
- $(hide) tar rf $@ -C $(OUT_DOCS) $(LOCAL_MODULE)
+ $(hide) tar rf $@ -C $(OUT_DOCS) $(LOCAL_MODULE) pdk.py app.yaml
# Debugging reporting can go here, add it as a target to get output.
pdk_debug:
so you can have a record of the build commands in the logs directory.
-5) the pdk tar file is put in the dist directory.
+5) the pdk and ndk tar file is put in the dist directory.
6) the pdk-docs are in
- out/target
+ out/target/common/docs/online-pdk
+--------------------------------------------------------------------------------
+# Build Notes
+
The build target 'pdk' brings in the pdk/ndk make files into the build system.
Then there are three targets:
pdk_docs - which builds just the pdk documentation
ndk - which builds the native development kit (native compiler, linker, etc.)
pdk_all - which builds the above two targets
-To chnage which version of doxygen runs you can pass in the variable:
+To change which version of doxygen runs you can pass in the variable:
doxygen_version='<path/name_of_doxygen_executable>'
on the make line.
+
--------------------------------------------------------------------------------
# Testing
+
You must install google appengine. See: http://code.google.com/appengine/downloads.html
Here's the command to run the pdk-docs server locally:
python <path_to_appengine_installation>/dev_appserver.py --address 0.0.0.0 \
- <path_to_cupcake_code>/android/out/target/common/docs/online-pdk
+ <path_to_cupcake_code>/android/out/target/common/docs
To verify it is working you can access it with a browser loacally on port 8080:
http://localhost:8080/index.html
-TODO: index.html needs correct links.
-TODO: app.yaml not working for redirecting, getting extra '.' in html names...
+
+NOTE: If you are trying to get to the appengine local testing instance remotely
+you will have to ssh tunnel into your linux box as appengine only serves the web
+host locally.
+
+On a Windows machine to check your current port forwarding settings:
+
+1. Start putty.
+2. Click on your session in the list and hit load (this loads the settings so you can edit them)
+3. Go to SSH -> tunnels and look at the Forwarded ports box
+
+L8080 localhost:8080
+
+Means that you can point your webbrowser on your laptop to http://localhost:8080/ and it will show you the same thing as on your workstation for http://localhost:8080/
+
+To add port forwarding
+
+1. Start putty.
+2. Click on your session in the list and hit load (this loads the settings so you can edit them)
+3. Go to SSH -> tunnels.
+4. Pick an unused port on your laptop (8080, 8888, something like that) and put it in the "source port box"
+5. In the destination box, put localhost:8888 (replace with the actual port number the service is running on)
+6. Hit add.
+7. Go back to "Session" and save your new settings so this configuration will happen everytime you login.
- --------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
# Deployment
+
To host the pdk docs on the interanl appengine run:
/home/build/static/projects/apphosting/devtools/appcfg.py update <path_to_cupcake_src>/out/common/docs
where the docs directory contains: pdk.py, app.yaml, and the online-pdk directory,
all of which are tarred up by the Pdk.mk file when using the target pdk_docs.
-# Deployment
To host the pdk docs on the external appengine run:
/home/build/static/projects/apphosting/devtools/appcfg.py -s pdk-docs.appspot.com update <path_to_cupcake_src>/out/common/docs
where the docs directory contains: pdk.py, app.yaml, and the online-pdk directory,
+V 0.9 MWR Apr 6, 2009
+#####################
+
+* New files for new css files using droiddoc/clearsilver
+
V 0.3 - June 9, 2008\r
####################\r
\r
* Updated Build System (build_system.html): Switched Device code options 1 & 2 to emphasize that \r
the new first option yields more consistent results. \r
\r
-* Updated Bring Up (bring_up.html): removed "hotplugd" from step 7.
\ No newline at end of file
+* Updated Bring Up (bring_up.html): removed "hotplugd" from step 7.
<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="audio_sub_system.html">click here</a>.</p>
-<iframe onLoad="resizeHeight();" src="_audio_hardware_interface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
+<iframe onLoad="resizeDoxFrameHeight();" src="_audio_hardware_interface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
page.title=Bluetooth
+pdk.version=1.0
@jd:body
-<div id="qv-wrapper">
-<div id="qv">
<a name="toc"/>
+<div style="padding:10px">
+<a href="#androidBluetoothIntro">Introduction</a><br/>
+<a href="#androidBluetoothPorting">Porting</a><br/><div style="padding-left:40px">
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#androidBluetoothIntro">Introduction</a></li>
-<li><a href="#androidBluetoothPorting">Porting</a>
- <ol>
- <li><a href="#androidBluetoothPortingDriver">UART Driver</a></li>
- <li><a href="#androidBluetoothPortingPowerOnOff">Bluetooth Power On / Off</a></li>
- </ol>
-</li>
-<li><a href="#androidBluetoothTools">Tools</a></li>
-</ol>
-
-</div>
-</div>
+<a href="#androidBluetoothPortingDriver">UART Driver</a><br/>
+<a href="#androidBluetoothPortingPowerOnOff">Bluetooth Power On / Off</a><br/></div>
+<a href="#androidBluetoothTools">Tools</a><br/></div></font></div>
<a name="androidBluetoothIntro"></a><h2>Introduction</h2>
<li><code>dbus-monitor</code></li>
</ul>
</p>
-
-
-
page.title=Bring Up
+pdk.version=1.0
@jd:body
<p>Once your code is built and you have verified that all necessary directories exist, power on and test your device with basic bring up, as described below. Bring up tests are typically designed to stress certain aspects of your system and allow you to characterize the device's behavior. </p>
<h3>1. Confirm a Clean Installation of a Basic Linux Kernel </h3>
<p>Before considering Android-specific modifications to the Linux kernel, verify that you can build, deploy, and boot a core Linux kernel on your target hardware. </p>
<p> </p>
-
<h3>2. Modify Your Kernel Configuration to Accommodate Android Drivers</h3>
<p>Your kernel configuration file should include the following:</p>
<pre class="prettyprint">
disabled
user akmd
group akmd
-</pre>
-
-
+</pre>
\ No newline at end of file
PRODUCT_NAME := <first_product_name>
PRODUCT_DEVICE := <board_name></pre></li>
<li>In the <code>products</code> directory, create an <code>AndroidProducts.mk</code> file that point to (and is responsible for finding) the individual product make files.<BR>
- <pre class="prettyprint">
+ <pre class="prettypring">
#
# This file should set PRODUCT_MAKEFILES to a list of product makefiles
# to expose to the build system. LOCAL_DIR will already be set to
</ul>
</ul>
</ul>
-</p>
+</p>
\ No newline at end of file
<p>To build the kernel, execute:</p>
<pre class="prettyprint">
% make -j4
-</pre>
+</pre>
\ No newline at end of file
-page.title=Camera Subsystem
+page.title=Camera
+pdk.version=1.0
@jd:body
-<div id="qv-wrapper">
-<div id="qv">
<a name="toc"/>
+<div style="padding:10px">
+<a href="#androidCameraIntroduction">Introduction</a><br/>
+<a href="#androidCameraBuildingDriver">Building a Camera Library</a><br/>
+<a href="#androidCameraSequenceDiagrams">Sequence Diagrams</a><br/><div style="padding-left:40px">
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#androidCameraIntroduction">Introduction</a></li>
-<li><a href="#androidCameraBuildingDriver">Building a Camera Library</a></li>
-<li><a href="#androidCameraSequenceDiagrams">Sequence Diagrams</a>
- <ol>
- <li><a href="#androidCameraSequenceDiagramsPreview">Preview</a></li>
- <li><a href="#androidCameraSequenceDiagramsTakePic">Taking a Picture</a></li>
- </ol>
-</li>
-<li><a href="#androidCameraInterfaceIntro">Interface</a></li>
-</ol>
-
-</div>
-</div>
+<a href="#androidCameraSequenceDiagramsPreview">Preview</a><br/>
+<a href="#androidCameraSequenceDiagramsTakePic">Taking a Picture</a><br/></div>
+<a href="#androidCameraInterfaceIntro">Interface</a><br/></div></font></div>
<a name="androidCameraIntroduction"></a><h2>Introduction</h2>
<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="camera.html">click here</a>.</p>
-<iframe onLoad="resizeDoxFrameHeight();" src="CameraHardwareInterface_8h.html " scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
-
-
+<iframe onLoad="resizeDoxFrameHeight();" src="_camera_hardware_interface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
page.title=Display Drivers
+pdk.version=1.0
@jd:body
+
+
<a name="toc"/>
<div style="padding:10px">
<a href="#androidDisplayDriverIntroduction">Introduction</a><br/>
<a href="#androidDisplayDriverFunctionality">Functionality</a><br/>
<a href="#androidDisplayDriversSourceTemplate">Implementing Your Own Driver (Driver Template)</a><br/>
-<a href="#androidDisplayDriversTroubleshooting">Troubleshooting</a><br/></div></font>
+<a href="#androidDisplayDriversTroubleshooting">Troubleshooting</a><br/></div></font></div>
<a name="androidDisplayDriverIntroduction"></a><h2>Introduction</h2>
<li><strong>Arrow keys</strong>: When an arrow key is pressed, the desired icon doesn't get highlighted. For example, if you browse through icons in the Applications menu, you might notice that icons aren't highlighted as expected when you use the arrow key to navigate between options.</li>
</ul>
<p>Both problems are caused by an incorrect implementation of the frame buffer's page flipping. Key events are captured, but the graphical interface appears to drop every other frame. </p>
-<p>Android relies on a double buffer to smoothly render page flips (please see <a href="androidDisplayDriverFunctionality">Functionality</a> for details).
-
-
+<p>Android relies on a double buffer to smoothly render page flips (please see <a href="androidDisplayDriverFunctionality">Functionality</a> for details).</p>
\ No newline at end of file
page.title=GPS
+pdk.version=1.0
@jd:body
<a name="toc"/>
<div style="padding:10px">
<a href="#androidGpsIntroduction">Introduction</a><br/>
<a href="#androidGPSBuildingDriver">Building a GPS Library</a><br/>
-<a href="#androidGPSInterface">Interface</a><br/></div>
+<a href="#androidGPSInterface">Interface</a><br/></div></font></div>
<a name="androidGpsIntroduction"></a><h2>Introduction</h2>
+<p><span class="lh2"><a name="androidDoxygenNote"></a></span>
+
+<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="gps.html">click here</a>.</p>
+
+
+<iframe onLoad="resizeDoxFrameHeight();" src="gps_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
-home=true
page.title=Welcome to the Android Porting Guide
pdk.version=1.0
@jd:body
<dt><a href="bring_up.html">Basic Bring up </a></dt>
<dd>Establish core components necessary to your device, such as keymaps / keyboard input and display drivers. </dd>
<dt> </dt>
-</dl>
+</dl>
\ No newline at end of file
page.title=Instrumentation Testing
+pdk.version=1.0
@jd:body
<a name="toc"/>
<a href="#androidTestingLocationFiles">Location of Files</a><br/>
<a href="#androidTestingContentMakefile">Contents of makefile</a><br/>
<a href="#androidTestingContentManifest">Content of Manifest</a><br/>
-<a href="#androidInstrumentationTestingCreatingTestRunner">New InstrumentationTestRunner</a><br/>
+<a href="#androidInstrumentationTestingCreatingTestRunner">New Instrumentation TestRunner</a><br/>
<a href="#androidInstrumentationTestingCreatingTestCase">New InstrumentationTestCase</a><br/>
<a href="#androidInstrumentationFrameworkTestCase">Exploring a Test Case</a><br/>
<a href="#androidTestingKindsofTests">Deciding Kinds of Tests to Write</a><br/></div>
-<a href="#androidInstrumentationFrameworkTroubleshooting">Troubleshooting</a><br/></div>
+<a href="#androidInstrumentationFrameworkTroubleshooting">Troubleshooting</a><br/></div></font></div>
<a name="androidInstrumentationFrameworkIntro"></a><h2>Introduction</h2>
<a name="androidTestingContentManifest"></a><h3>Content of Manifest</h3>
-<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied InstrumentationTestRunner targets the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
+<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied Instrumentation TestRunner targest the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
<pre>
# Add appropriate copyright banner here
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.android.apis.tests">
-
- <!-- We add an application tag here just so that we can indicate that
- this package needs to link against the android.test library,
- which is needed when building test cases. -->
- <application>
- <uses-library android:name="android.test.runner" />
- </application>
-
+ package="com.android.samples.tests">
+
+ <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
+
<!--
This declares that this app uses the instrumentation test runner targeting
- the package of com.example.android.apis. To run the tests use the command:
- "adb shell am instrument -w com.example.android.apis.tests/android.test.InstrumentationTestRunner"
- -->
+ the package of com.android.samples. To run the tests use the command:
+ "adb shell am instrument -w com.android.samples.tests/android.test.InstrumentationTestRunner"
+ -->
<instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.example.android.apis"
- android:label="Tests for Api Demos."/>
-
+ android:targetPackage="com.android.samples"
+ android:label="Tests for Api Demos."/>
+
</manifest>
</pre>
<p> </p>
</pre>
-<a name="androidInstrumentationTestingCreatingTestRunner"></a><h3>New InstrumentationTestRunner</h3>
+<a name="androidInstrumentationTestingCreatingTestRunner"></a><h3>New Instrumentation TestRunner</h3>
<p>Create a class that derives from this class. You must override two abstract methods; one that returns the class loader of the target package, and another that defines all of the tests within the package. For example, the snippet below displays the test runner for the framework tests.</p>
<pre class="prettify">
</pre>
<p> Next, in an appropriate <code>AndroidManifest.xml</code>, define the instrumentation for the derived class with the appropriate <code>android:targetPackage</code> set. For example, the snippet below defines the instrumentation runner for the framework tests.</p>
<pre class="prettify">
+<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
+
<instrumentation android:name="android.tests.FrameworkInstrumentationTestRunner"
android:targetPackage="com.google.android.frameworktest"
android:label="framework instrumentation test runner" />
D/AndroidRuntime( 688): Shutting down VM
E/AndroidRuntime( 688): ERROR: thread attach failed
</pre>
-<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
-
+<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
\ No newline at end of file
page.title=Keymaps and Keyboard Input
+pdk.version=1.0
@jd:body
+
<a name="toc"/>
<div style="padding:10px">
<a href="#androidKeymapIntro">Introduction</a><br/>
<a href="#androidKeymapKeyCharMapExample">Example of a Key Character Map File</a><br/>
<a href="#androidKeymapKeyCharMapResourceBinaryFileFormat">Resource Binary File Format</a><br/></div>
<a href="#androidKeymapDriverTemplate">Implementing Your Own Driver (Driver Template)</a><br/>
-<a href="#androidKeymapKeyCharMapSampleImplementation">Sample Implementation</a><br/></div>
+<a href="#androidKeymapKeyCharMapSampleImplementation">Sample Implementation</a><br/></div></font></div>
<a name="androidKeymapIntro"></a><h2>Introduction</h2>
I/KeyInputQueue( 1548): Device added: id=0x10000, name=partnerxx_keypad, classes=1
I/KeyInputQueue( 1548): Keymap: partnerxx_keypad.kl
</pre>
-<p>The snippet above contains artificial line breaks to maintain a print-friendly document.</p>
-
-
+<p>The snippet above contains artificial line breaks to maintain a print-friendly document.</p>
\ No newline at end of file
page.title=Power Management
+pdk.version=1.0
@jd:body
+
+
+
<a name="toc"/>
<div style="padding:10px">
<a href="#androidPowerIntro">Introduction</a><br/>
<a href="#androidPowerWakeLocksDefinitions">Types of Wake Locks</a><br/>
<a href="#androidPowerWakeLockExample">Exploring a Wake Lock Example</a><br/></div>
<a href="#androidPowerPowerManagerClass">PowerManager class</a><br/>
-<a href="#androidPowerKernelRegistration">Registering Drivers with the PM Driver</a><br/></div>
+<a href="#androidPowerKernelRegistration">Registering Drivers with the PM Driver</a><br/></div></font></div>
<a name="androidPowerIntro"></a><h2>Introduction</h2>
<p>The image below illustrates the Android power management architecture. </p>
<p><img src='androidPMArchitecture.gif'></p>
-<p>Solid elements represent Android blocks and dashed elements represent partner-specific blocks.</p>
+Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
android_register_early_suspend(android_early_suspend_t *handler)
android_register_early_resume(android_early_resume_t *handler)
</pre>
-<p>It is critical in a drive to return immediately and not wait for anything to happen in the call back.</p>
-
-
-
+<p>It is critical in a drive to return immediately and not wait for anything to happen in the call back.</p>
\ No newline at end of file
@jd:body
<p>While Android is designed to support a wide variety of hardware platforms and configurations, this section provides recommended minimum device requirements.</p>
-
<table border=1 cellpadding=2 cellspacing=0>
<tbody><tr>
<th scope="col">Feature</th>
<li>QWERTY keyboard</li>
<li>WiFi</li>
<li>GPS</li>
-</ul>
-
-
-
+</ul>
\ No newline at end of file
page.title=Radio Layer Interface
+pdk.version=1.0
@jd:body
<a name="toc"/>
<a href="#androidTelephonyRILFunctions">RIL Functions</a><br/><div style="padding-left:40px">
<a href="#androidRilFunctionsSolicited">RIL Solicited Command Requests</a><br/>
-<a href="#androidRilFunctionsUnsolicited">RIL Unsolicited Commands</a><br/></div></div>
+<a href="#androidRilFunctionsUnsolicited">RIL Unsolicited Commands</a><br/></div></div></font></div>
<a name="androidTelephonyIntro"></a><h2>Introduction</h2>
</ul></td>
</tr>
</table></p>
-
+++ /dev/null
-<div id="footer">
-
-<?cs if:reference||guide ?>
- <div id="copyright">
- <?cs call:custom_copyright() ?>
- </div>
- <div id="build_info">
- <?cs call:custom_buildinfo() ?>
- </div>
-<?cs elif:!hide_license_footer ?>
- <div id="copyright">
- <?cs call:custom_cc_copyright() ?>
- </div>
-<?cs /if ?>
- <div id="footerlinks">
- <?cs call:custom_footerlinks() ?>
- </div>
-
-</div> <!-- end footer -->
+++ /dev/null
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>favicon.ico" />
-<title><?cs
- if:page.title ?><?cs
- var:page.title ?><?cs
- if:sdk.version ?> (<?cs
- var:sdk.version ?>)<?cs
- /if ?> | <?cs
- /if ?>Android Developers</title><?cs
-if:guide||sdk ?>
-<link href="<?cs var:toroot ?>assets/android-developer-docs-devguide.css" rel="stylesheet" type="text/css" /><?cs
-else ?>
-<link href="<?cs var:toroot ?>assets/android-developer-docs.css" rel="stylesheet" type="text/css" /><?cs
-/if ?>
-<script src="<?cs var:toroot ?>assets/search_autocomplete.js" type="text/javascript"></script>
-<script src="<?cs var:toroot ?>reference/lists.js" type="text/javascript"></script>
-<script src="<?cs var:toroot ?>assets/jquery-resizable.min.js" type="text/javascript"></script>
-<script src="<?cs var:toroot ?>assets/android-developer-docs.js" type="text/javascript"></script>
-<script type="text/javascript">
- setToRoot("<?cs var:toroot ?>");
-</script><?cs
-if:reference ?>
-<script src="<?cs var:toroot ?>navtree_data.js" type="text/javascript"></script>
-<script src="<?cs var:toroot ?>assets/navtree.js" type="text/javascript"></script><?cs
-/if ?>
-<noscript>
- <style type="text/css">
- body{overflow:auto;}
- #body-content{position:relative; top:0;}
- #doc-content{overflow:visible;border-left:3px solid #666;}
- #side-nav{padding:0;}
- #side-nav .toggle-list ul {display:block;}
- #resize-packages-nav{border-bottom:3px solid #666;}
- </style>
-</noscript>
-</head>
+++ /dev/null
-<?cs call:custom_masthead() ?>
-<?cs call:custom_left_nav() ?>
-
+++ /dev/null
-<html>
-<head>
-<meta http-equiv="refresh" content="0;url=packages.html">
-</head>
-<body>
-<?cs include:"analytics.cs" ?>
-</body>
-</html>
\ No newline at end of file
+++ /dev/null
-</div> <!-- end body-content --> <?cs # normally opened by header.cs ?>
-
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-var pageTracker = _gat._getTracker("UA-5831155-1");
-pageTracker._trackPageview();
-</script>
\ No newline at end of file
page.title=Wi-Fi
+pdk.version=1.0
@jd:body
<a name="toc"/>
<div style="padding:10px">
<a href="#androidWifiIntroduction">Introduction</a><br/>
<a href="#androidWifiBuildingDriver">Building a Wi-Fi Library</a><br/>
-<a href="#androidWifiInterface">Interface</a><br/></div>
+<a href="#androidWifiInterface">Interface</a><br/></div></font></div>
<a name="androidWifiIntroduction"></a><h2>Introduction</h2>
<pre class="prettify">
LOCAL_SHARED_LIBRARIES += libnetutils
-ifeq ($(TARGET_DEVICE),acme)
+ifeq ($(TARGET_PRODUCT),acme)
LOCAL_SRC_FILES += wifi/wifi_mywifi.c
else
LOCAL_SRC_FILES += wifi/wifi.c
<iframe onLoad="resizeDoxFrameHeight();" src="wifi_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
-
-
-
--- /dev/null
+#!/bin/bash
+# $1 = output directory of generated docs: out/target/product/generic/obj/PACKAGING/pdkdocs_intermediates/generatedDocs/html
+# fix a bug in doxygen 1.5.6 and higher...
+# insert the line: '</div>\n' after line 25 in each generated source file:
+echo \</div\> > $1/div.tmp
+for f in `find $1 -name '*-source.html' -print`
+do
+ head -n 25 $f > $f.head.tmp
+ let count=$(wc -l $f | cut -d\ -f 1 )
+ count=$(($count-25))
+ tail -n $count $f > $f.tail.tmp
+ cat $f.head.tmp $1/div.tmp $f.tail.tmp > $f
+done
+rm $1/*.tmp