# Update Service - [API reference](https://docs.qualcomm.com/doc/80-41102-2/topic/_doxygen_rst_file__doxygen_sources_taf_update_interface_h.html#file-taf-update-interface-h) [Plugin APIs for download agent](https://docs.qualcomm.com/doc/80-41102-2/topic/_doxygen_rst_file__doxygen_sources_include_plugin_tafPiDA_h.html#file-tafpida-h) [Plugin APIs for user agent](https://docs.qualcomm.com/doc/80-41102-2/topic/_doxygen_rst_file__doxygen_sources_include_plugin_tafPiUA_h.html#file-tafpiua-h) The Update Service supports OTA firmware (FOTA) and application (SOTA) updates using QOTA packages. Register a state handler to receive asynchronous update progress. **NOTE:** Firmware and application updates cannot run simultaneously. ## IPC interfaces binding The functions of this API are provided by the **tafUpdateSvc** service. bindings: { clientExe.clientComponent.taf_update -> tafUpdateSvc.taf_update } Copy to clipboard ## OTA functions - [taf\_update\_Download()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a5d649e47843847202ffd302dee929cac.html#Documentationa00728_1a5d649e47843847202ffd302dee929cac) / [taf\_update\_GetDownloadSession()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1aca218040236d6bfbf14522964f3d8fbd.html#Documentationa00728_1aca218040236d6bfbf14522964f3d8fbd) / [taf\_update\_StartDownload()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a4d72ec7ff028b40428c59958895d6c9b.html#Documentationa00728_1a4d72ec7ff028b40428c59958895d6c9b) / [taf\_update\_PauseDownload()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a22c33bcb92b58cc5bb5fb67a11755efb.html#Documentationa00728_1a22c33bcb92b58cc5bb5fb67a11755efb) / [taf\_update\_ResumeDownload()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1ab1c03df740fb1465ae2c18e0e684f816.html#Documentationa00728_1ab1c03df740fb1465ae2c18e0e684f816) / [taf\_update\_CancelDownload()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1ad78e33a0d834424d58071acda7a5b261.html#Documentationa00728_1ad78e33a0d834424d58071acda7a5b261) — Download APIs: Download() starts the legacy download flow; the others acquire and manage a session-based download. - [taf\_update\_GetInstallationSession()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a3a55d5c7aadcfde7ee0e8f55038741d0.html#Documentationa00728_1a3a55d5c7aadcfde7ee0e8f55038741d0) / [taf\_update\_Install()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a5a5be9802790502f46aa739bb206e420.html#Documentationa00728_1a5a5be9802790502f46aa739bb206e420) / [taf\_update\_StartInstall()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a78db123fe5db729434240bb269ddfb42.html#Documentationa00728_1a78db123fe5db729434240bb269ddfb42) / [taf\_update\_PauseInstall()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a1fd8ac14daf68811e6867ff393148c46.html#Documentationa00728_1a1fd8ac14daf68811e6867ff393148c46) / [taf\_update\_ResumeInstall()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1acb1d7dda40a3eb29cca7bf355c5e683e.html#Documentationa00728_1acb1d7dda40a3eb29cca7bf355c5e683e) / [taf\_update\_CancelInstall()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a79d35d2c335374f7ab5d231d31b0551f.html#Documentationa00728_1a79d35d2c335374f7ab5d231d31b0551f) — Installation APIs: GetInstallationSession() obtains a session for the given package type; Install() queues the install using the legacy flow; the others control a session-based install. - [taf\_update\_InstallPreCheck()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a27fa66ac9165ef55f88aae8ed8a81176.html#Documentationa00728_1a27fa66ac9165ef55f88aae8ed8a81176) / [taf\_update\_InstallPostCheck()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a74baf29fffa3e70078ec955ac51dadfc.html#Documentationa00728_1a74baf29fffa3e70078ec955ac51dadfc) — Optional pre/post-install checks. These APIs are optional and may be skipped if not required. - [taf\_update\_EraseBank()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a3e955e74ba3093e5928de9ea869317c8.html#Documentationa00728_1a3e955e74ba3093e5928de9ea869317c8) — Erases the inactive bank before flashing to ensure a clean target bank. Call this separately before starting installation if needed. - [taf\_update\_GetActiveBank()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a72fdae783862ad1ba739575a3cc2365a.html#Documentationa00728_1a72fdae783862ad1ba739575a3cc2365a) / [taf\_update\_VerifyActivation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a1820ea2d409a3e019997c4d7428a90e0.html#Documentationa00728_1a1820ea2d409a3e019997c4d7428a90e0) / [taf\_update\_PauseActivation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a777f6de4706dbe426c98bbea4a21eeae.html#Documentationa00728_1a777f6de4706dbe426c98bbea4a21eeae) / [taf\_update\_ResumeActivation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1ad7e305ed39c974504d19d928b07c1e10.html#Documentationa00728_1ad7e305ed39c974504d19d928b07c1e10) — Query the active bank and control the activation workflow. - [taf\_update\_Sync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1ab852dc5792879348ac3015a03ae392a3.html#Documentationa00728_1ab852dc5792879348ac3015a03ae392a3) / [taf\_update\_StartSync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1aae35b5b40292e8cc932bf2e697834108.html#Documentationa00728_1aae35b5b40292e8cc932bf2e697834108) / [taf\_update\_PauseSync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1acfaf9196259dd9f63c3eed9a3029587f.html#Documentationa00728_1acfaf9196259dd9f63c3eed9a3029587f) / [taf\_update\_ResumeSync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a53536190b182432e1c940a3f8b04c9a6.html#Documentationa00728_1a53536190b182432e1c940a3f8b04c9a6) / [taf\_update\_CancelSync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1aceebf7ab672930ca1a1b59f97e024f8c.html#Documentationa00728_1aceebf7ab672930ca1a1b59f97e024f8c) — Manages A/B bank synchronization. - [taf\_update\_Rollback()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1af5ff94ff9a3b61dbfb9198f799920951.html#Documentationa00728_1af5ff94ff9a3b61dbfb9198f799920951) — Starts rollback. - [taf\_update\_AddStateHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1a0a6d98201e743b396047f40121de073d.html#Documentationa00728_1a0a6d98201e743b396047f40121de073d) / [taf\_update\_RemoveStateHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00728_1aa263122ef7448194db14314e771b54c5.html#Documentationa00728_1aa263122ef7448194db14314e771b54c5) — Registers/Unregisters update state handler. void UpdateStateHandler(taf_update_StateInd_t* indication, void* contextPtr) { switch (indication->state) { case TAF_UPDATE_IDLE: taf_update_Download(); break; case TAF_UPDATE_DOWNLOADING: LE_INFO("Downloading %d%%.", indication->percent); break; case TAF_UPDATE_DOWNLOAD_FAIL: LE_ERROR("Download failed."); break; case TAF_UPDATE_DOWNLOAD_SUCCESS: if (indication->ota == TAF_UPDATE_PACKAGE_FOTA) { taf_update_Install(TAF_UPDATE_FOTA, indication->name); } else { taf_update_Install(TAF_UPDATE_SOTA, indication->name); } break; case TAF_UPDATE_INSTALLING: LE_INFO("Installing %d%%.", indication->percent); break; case TAF_UPDATE_INSTALL_SUCCESS: // Reboot to activate firmware, or start app probation. break; } } handlerRef = taf_update_AddStateHandler((taf_update_StateHandlerFunc_t)UpdateStateHandler, NULL); Copy to clipboard Last Published: Jul 29, 2026 [Previous Topic Update services](https://docs.qualcomm.com/bundle/publicresource/80-41102-2/topics/update_services.md) [Next Topic Firmware Update Service](https://docs.qualcomm.com/bundle/publicresource/80-41102-2/topics/page_c_tafFwUpdate.md)