Feature/ #253 Extend the Broadcast HAL to cover DVB-TCS and ATSC1.0 - #258
Feature/ #253 Extend the Broadcast HAL to cover DVB-TCS and ATSC1.0#258japsen73 wants to merge 33 commits into
Conversation
9f49eae to
77e625e
Compare
There was a problem hiding this comment.
Pull Request Overview
This pull request enhances the broadcast HAL API with satellite (DVB-S) and LNB control support, adds new signal information properties, and improves API consistency.
- Adds DVB-S standard support with new enumerations (DvbSStandard, RollOff, SignalDetectMode)
- Introduces LNB (Low-Noise Block) controller interface with voltage and tone control
- Refactors demux architecture to use a provider/controller pattern with improved resource management
Reviewed Changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| TuneStatus.aidl, TransmissionMode.aidl, Modulation.aidl, etc. | Added @Backing(type="int") annotation for enum stability |
| SignalInfoValue.aidl | Added dvbTStandard and dvbSStandard union members |
| SignalInfoProperty.aidl | Added DVB_T_STANDARD and DVB_S_STANDARD properties, fixed typos in comments |
| SignalDetectMode.aidl, RollOff.aidl | New enumerations for signal detection modes and roll-off values |
| LnbVoltage.aidl, LnbTone.aidl | New enumerations for LNB control parameters |
| ILnbController.aidl | New interface for controlling satellite LNB equipment |
| IFrontend.aidl | Added methods for ID retrieval, open status check, data provider acquisition, and LNB control |
| IDemuxDataProvider.aidl, IDemuxController.aidl | New interfaces for demux provider/controller pattern |
| IDemux.aidl | Refactored from direct filter management to connect/disconnect pattern with capabilities |
| DemuxCapabilities.aidl | New parcelable for demux capability reporting |
| IBroadcastManager.aidl | Added version methods and getDemux/getDemuxIds methods |
| DvbSStandard.aidl | New enumeration for DVB-S/S2/S2X standards |
| Version.aidl, ImplementationVersion.aidl | New parcelables for version reporting |
| CMakeLists.txt | Added new files to build, fixed typos and formatting |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@japsen73 any action on this one. |
77e625e to
c655704
Compare
…DVB-S, and ATSC 1.0 standards. Aligining naming conventions better with the specific standards.
There was a problem hiding this comment.
🟡 Changes recommended
Critical build-install failures and Binder/AIDL compatibility issues remain unresolved.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (43)
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:49
- This replaces the existing broadcast-manager method set/order with new version, ID-list, and lookup methods. Since AIDL transaction IDs are positional, existing generated clients will call incompatible transactions rather than the methods they were built for. Preserve the existing API and append compatible methods, or publish this manager redesign under a new interface version.
ImplementationVersion getImplementationVersion();
/**
* Gets the platform list of frontend IDs.
*
broadcast/current/com/rdk/hal/broadcast/ImplementationVersion.aidl:45
- The article is incorrect in this public interface documentation; use
an implementation(and the standard compound adjectiveimplementation-specific).
* This is a implementation specific string, that has no semantics attached to it. The only requirements are that it
broadcast/current/com/rdk/hal/broadcast/demux/FilterParameters.aidl:21
FilterParametersis used byIDemuxController.openFilter()and contains demux filter parameter unions, but its class documentation describes tuner tuning parameters. This misleading description can cause consumers to misunderstand the purpose of the union; document it as demux filter-specific parameters.
/**
* Tuner-specific tuning parameters.
broadcast/current/com/rdk/hal/broadcast/demux/FilterType.aidl:38
- Renaming/replacing the existing
MPEG2TSenum value withMPEG2TS_DATAreuses its backing value for a different public symbol and removes the old name. Existing clients may send the old value, so retain the old member/value and append new filter types, or version the API.
/** Mpeg2 transport stream data packets */
MPEG2TS_DATA,
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:72
- The failure contract is contradictory: an already-connected demux is documented to throw
EX_ILLEGAL_STATE, but the nullable return is also documented asnullfor that same condition. Choose one error mechanism and make the nullability/exception documentation consistent so clients know whether to inspect the return value or catch the Binder exception.
* @exception ::android::binder::Status::EX_ILLEGAL_ARGUMENT The DemuxDataProvider is already connected to another
* Demux.
* @exception ::android::binder::Status::EX_ILLEGAL_STATE isConnected() is true.
*
* @param[in] provider The DemuxDataProvider to connect the Demux to.
*
* @returns IDemuxController or null on failure (e.g. already connected).
*/
@nullable IDemuxController connect(in IDemuxDataProvider provider);
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:49
getId()andisConnected()are inserted ahead of the demux operations and the old source/filter lifecycle is replaced by different methods. Because AIDL transaction IDs are positional, existing clients cannot interoperate with thiscurrentinterface after these changes. Retain the old method order/signatures and append additions, or move the redesign to a new interface version.
/** Get the ID of this demux. */
Id getId();
/**
* Check whether this demux is already connected.
broadcast/current/com/rdk/hal/broadcast/demux/IMpeg2TsDataFilter.aidl:56
ananogouslyis a spelling error in the filter behaviour documentation; useanalogously.
* though, ananogously to setPids(). One practical use-case for this is if the list of PIDs becomes larger than
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendCapabilities.aidl:59
- Adding
atscbefore the existing specific-capability alternatives shifts the union tag for every prior frontend type. Existing Binder clients will therefore decode a DVB-C/S/T capability as the wrong alternative. Preserve the existing order and append ATSC, or version the parcelable/interface.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:32 - This changes the backing values and removes previously exposed frontend types, so the same integer sent over Binder is now decoded as a different type (and old enum values become unavailable). A current AIDL interface must retain existing enum values and append new ones; keep the old members or introduce a versioned replacement.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:51 getId()andisOpen()are inserted before the existing frontend methods, whileopen()/close()later use a different lifecycle and signature. AIDL transaction IDs are positional, so old clients will invoke the wrong transactions against this interface. Preserve the existing method order/signatures and append compatible methods, or expose this redesign under a new interface version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:27uninterferredis a spelling error in this public interface documentation.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:30- The possessive pronoun is misspelled in this public API documentation.
broadcast/current/com/rdk/hal/broadcast/frontend/ILnbController.aidl:24 - LNB controllers are obtained through
IFrontend.openLnb(), but the cross-reference points toIFrontendController, which contains no LNB lifecycle details. Link toIFrontendso the public documentation leads clients to the actual factory method.
broadcast/current/com/rdk/hal/broadcast/frontend/Modulation.aidl:38 - Adding
atscbefore the existing modulation alternatives changes the discriminator of every existing DVB modulation. Existing Binder clients will decode the same union tag as a different modulation type. Preserve the prior order and append ATSC, or version the union/interface.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:37 FRONTEND_TYPEis inserted before the existing signal-property members, which changes the backing integer of every following property. For example, existing clients expectingDEMOD_LOCKat its previous value will decode the new value as a different property. Preserve the existing numeric assignments and append additions, or publish this as a new interface version.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoValue.aidl:47- Adding this union member at the front shifts the ordinal/tag of every existing
SignalInfoValuemember, and the reworked member names also prevent old generated clients from matching the same union alternatives. Binder union alternatives are wire data, so preserve the existing order and names and append new alternatives, or version the interface.
broadcast/current/com/rdk/hal/broadcast/frontend/TuneParameters.aidl:35 - Adding
atscat the front of this union changes the discriminator of the existing DVB tune-parameter alternatives. Existing clients and services will no longer agree on the type carried over Binder. Append new alternatives after the existing members or version the union/interface.
broadcast/current/docs/broadcast.md:63 - This documentation says functions do not return booleans, but the public API adds
IFrontend.isOpen()andIDemux.isConnected()as boolean methods. Rewrite this principle to describe the actual rule, otherwise clients may treat those state-query methods as inconsistent or deprecated.
broadcast/current/docs/broadcast.md:32 it'sis the contraction ofit is; the possessive form required here isits.
broadcast/current/docs/broadcast.md:53- The capability type is
FrontendCapabilities, and its fields areminFrequency/maxFrequency; there is nofrontend.Capabilities.minFrequencyHzormaxFrequencyHzin the AIDL. This guidance points implementers to nonexistent symbols.
broadcast/current/interface.yaml:7 build_modules.shonly recognises a top-levelimports:at two spaces and its entries at four spaces (build_modules.sh:357-364). With this four/eight-space indentation,ringbuffer@currentis omitted from the dependency graph, so manifest builds can schedule Broadcast before ringbuffer. Please use the repository's two/four-space indentation.
broadcast/current/interface.yaml:2- These new current interfaces are not listed in either root build manifest.
build_modules.sh manifest --file versions_current.yamland the smoke test derive the expected component set from*/current/interface.yaml, sobroadcastandringbufferwill be omitted from manifest builds; add both components atcurrenttoversions_current.yamlandversions_released.yaml.
broadcast/metadata.yaml:45 acquissionis a spelling error in the metadata scope; useacquisitionso the published component description is correct.
format_aidl.sh:8- The formatting script only traverses
broadcast, so none of the new ringbuffer AIDL files are formatted when this script is run. Add the new module to the directory list so the repository-wide formatter covers all AIDL introduced by this PR.
ringbuffer/current/CMakeLists.txt:110 ringbufferdeclares no HAL imports and does not link any dependency library, but this unconditional check makes the documented standalone configure fail unless an unrelatedHALIF_LIB_DIRis supplied. Make the dependency link-directory setup optional, as this component has no HAL dependencies.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:33- This public documentation refers to a
waitForDatamethod, but both interfaces exposeacquire()instead. Consumers following the description will look for an operation that does not exist; update the reference toacquire.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:40 - This second occurrence also names the nonexistent
waitForDataoperation. The seek offsets are supplied byacquire()for both producer and consumer sides.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:85 - The repository's Doxygen guideline requires
@returnsfor return-value documentation, not@return. Use the project-standard tag here so generated API documentation is consistent.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:104 - The repository's Doxygen guideline requires
@returnsfor return-value documentation, not@return. Use the project-standard tag here so generated API documentation is consistent.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:48 IRingBufferis never returned by any of the new AIDL interfaces and has no service-name constant, so a client has no defined way to obtain an object on which to callsetSize()or register a producer/consumer. Expose it through a factory/registered service (and define its service name), or keep this implementation-facing contract out of the public AIDL module.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:71- The repository's Doxygen guideline requires
@returnsfor return-value documentation, not@return. Use the project-standard tag here so generated API documentation is consistent.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:64 - When the requested size exceeds the ring buffer capacity, this says
acquire()returns that full size, butRingBufferAcquireResultexposes only one offset into the fixed-size mapping and cannot describe a contiguous region larger than the buffer. A producer following this contract could write past the mapped ring buffer. Define and enforce a maximum request (or specify a safe wrapping/chunking protocol) instead of promising the unbounded requested size.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSinkListener.aidl:55 - No operation on
IRingBufferSourceorIRingBufferrequests a flush, so this callback has no possible trigger in the published API. Either expose the consumer flush operation and define its ordering, or remove this callback before the interface is frozen.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:67 RingBufferAcquireResulthas nooverflowmember; overflow is represented byRingBufferErrorCode/the listener callbacks. This documentation directs clients to consume a field that cannot be generated or read, so remove the nonexistent-field reference.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:74- The repository's Doxygen guideline requires
@returnsfor return-value documentation, not@return; the article beforeRingBufferAcquireResultis also incorrect. Use the project-standard wording here.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSourceListener.aidl:45 - This callback is for the consumer, and the surrounding documentation consistently describes readable data, but this parameter says writing. Consumers may interpret the callback value in the wrong direction; document it as bytes available for reading.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:30 typesafeis misspelled/grammatically incorrect here. Use the established compound adjectivetype-safeand the correct article.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:37acquiryis not the operation name used by this API and is a spelling error in the error-code documentation; useacquire resultto match theacquire()methods andRingBufferAcquireResulttype.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:40overlowis a spelling error in this public field description.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:22- The article is incorrect before
IRingBuffer(pronounced as an initial vowel sound) in this public type description.
ringbuffer/current/mkdocs.yml:1 - The root
mkdocs.ymlincludesbroadcast/current/mkdocs.ymlbut has no include for this new component, so the ringbuffer documentation will not be published or reachable from the site navigation. Add the ringbuffer configuration to the root navigation.
ringbuffer/metadata.yaml:27 generate_rag_report.shonly classifies metadata types equal toSOCorOEM(scripts/generate_rag_report.sh:179-191).SOC/OEMis therefore an unrecognised value and will be omitted from the corresponding report; choose one supported type or update the metadata schema/tooling to support a third value.
ringbuffer/metadata.yaml:62- The reviewer key is misspelled as
Broadcsast_Team, but the canonical mapping isBroadcast_Team(scripts/team_mapping.yaml:10). As written, this reviewed status will not map to the Broadcast team.
- Files reviewed: 101/101 changed files
- Comments generated: 8
- Review effort level: Lite
|
|
||
| include(GNUInstallDirs) | ||
| install(TARGETS ${LIB_NAME} | ||
| LIBRARY DESTINATION lib/halif |
|
|
||
| include(GNUInstallDirs) | ||
| install(TARGETS ${LIB_NAME} | ||
| LIBRARY DESTINATION lib/halif |
There was a problem hiding this comment.
🔵 Needs a closer look
Unresolved critical build integration and Binder API compatibility issues make this high-risk for automated approval.
Review details
Suppressed comments (38)
broadcast/current/CMakeLists.txt:136
- This standalone target installs to
lib/halif, whilebuild_modules.shand the other standalone module CMake files uselib/rdk-halif-aidlas the SDK library directory. A direct install will place this library outside the directory consumed by the repository's build and packaging flow. Use the standard configurable install destination with alib/rdk-halif-aidldefault.
include(GNUInstallDirs)
install(TARGETS ${LIB_NAME}
LIBRARY DESTINATION lib/halif
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
broadcast/current/CMakeLists.txt:129
- This target adds SDK/dependency link directories but does not disable CMake's build RPATH. The generated
.socan therefore contain absolute build-machine paths, which is rejected by Yocto package QA and is not usable as a portable deployed library. Apply the sameSKIP_BUILD_RPATH/BUILD_WITH_INSTALL_RPATH/INSTALL_RPATHhandling used byaudiodecoder/current/CMakeLists.txt:133-148.
target_link_libraries(${LIB_NAME} PRIVATE binder utils ringbuffer-vcurrent-cpp)
set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME "${LIB_NAME}")
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:52
- This new method is inserted before the existing frontend methods, which changes every subsequent Binder transaction code; the same interface also removes the previous demux-opening API. Existing AIDL clients will therefore dispatch to the wrong methods or lose an API. Preserve the existing method order and signatures, append additions at the end, or introduce a new version/interface for the incompatible redesign.
ImplementationVersion getImplementationVersion();
/**
* Gets the platform list of frontend IDs.
*
* @returns Array of IFrontend.Id values for all frontends on this platform.
*/
IFrontend.Id[] getFrontendIds();
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:98
- The declaration returns
@nullable IDemuxSoftwareInput.Id, but the@returnstext promises anIDemuxSoftwareInputinterface. This can mislead clients about whether they can call methods directly or must acquire the ID first. Document the actual return type.
* @returns IDemuxSoftwareInput or null on failure (e.g. maximum number of DemuxSoftwareInput instances has been
* reached).
*/
@nullable IDemuxSoftwareInput.Id createSoftwareInput();
broadcast/current/com/rdk/hal/broadcast/demux/IMpeg2TsDataFilter.aidl:56
ananogouslyis misspelled in the public filter documentation; correct it toanalogously.
* though, ananogously to setPids(). One practical use-case for this is if the list of PIDs becomes larger than
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTCapabilities.aidl:49
DvbTCodeRatesis a parcelable containing the coupledlowPriorityandhighPriorityvalues, but this field exposes onlyValue[]and loses that pairing. A client cannot determine which HP/LP combinations the tuner accepts; expose supported combinations asDvbTCodeRates[], or explicitly define independent-rate semantics.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTHierarchy.aidl:13- This type is
DvbTHierarchy, but its file-level description says MISO modes. The description is swapped withDvbTMiso.aidland misleads users of the DVB-T tuning API.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTMiso.aidl:14 - The enum values are spatial-stream modes (
SISO,MISO), not hierarchical transmission modes. This description misleads clients about what the capability controls; describe it as DVB-T MISO modes.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:33 - The existing frontend enum values were removed and the remaining values now receive different implicit ordinals. AIDL enum ordinals are part of the serialized contract, so old clients and servers can interpret the same value differently. Retain every existing value and ordinal, appending new values only, or use a new enum/interface version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:73 - These methods are inserted ahead of the existing frontend operations, while the old listener/state operations and the old
opencontract were removed or changed. That changes the Binder transaction table and breaks clients compiled against the existing interface. Keep the old methods in their original order and append compatible additions, or publish a new interface/version for this lifecycle redesign.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:51 - The controller's existing
closeoperation has been removed and the remaining operations were reordered sotunebecomes transaction 0. That is a Binder ABI break independent of the manager/frontend changes: an older client callingclosewill invoke a different operation on this interface. Preserve the old method sequence and append new operations, or expose this redesign under a new interface/version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:28 uninterferredis misspelled in the controller contract documentation; correct it touninterrupted.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:83Capabilitiesis no longer the type exposed by this API; the method returns data fromFrontendCapabilities. This parameter documentation therefore names a type clients cannot find.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:53- This enum both inserts new members before existing ones and renames existing members such as
RFLEVEL/UNC. That changes serialized ordinals and source/API names, so clients using the previous signal-property contract will not interoperate. Preserve the old members and ordinals and append new properties, or introduce a new version.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoValue.aidl:63 - This union changes existing signal members' names/types (for example lock booleans become enum values and RF level changes type) instead of preserving the prior wire layout. AIDL union discriminants and payload types are serialized over Binder, so old clients can decode a different member or type. Preserve the existing members/order and add a compatible extension, or publish this as a new interface/version.
broadcast/current/com/rdk/hal/broadcast/frontend/TuneParameters.aidl:38 - The union member names/order no longer preserve the existing
TuneParameterswire layout, whiledvbSis inserted in the middle. Union member ordinals are serialized over Binder, so existing clients can send a value that the new server decodes as a different member. Keep the old members in order and append the new member, or version the union/interface.
broadcast/current/docs/broadcast.md:32 By it's natureis grammatically incorrect in this public documentation; use the possessiveits.
broadcast/current/docs/broadcast.md:55- The example references
frontend.Capabilities.minFrequencyHz/maxFrequencyHz, but the AIDL exposesfrontend.FrontendCapabilities.minFrequency/maxFrequency. Readers following this requirement will look up fields that do not exist. Update the example to the current type and field names.
broadcast/current/interface.yaml:7 build_modules.shparsesimports:only at two-space indentation and dependency entries at four spaces (seebuild_modules.sh:357-364). With the four/eight-space indentation here,ringbufferis omitted from the dependency graph, so a manifest build can compilebroadcastbefore its ringbuffer library and fail at link time. Match the repository's manifest indentation or make the parser YAML-aware.
broadcast/current/interface.yaml:7- The new
broadcastandringbuffercomponents are absent fromversions_current.yaml, which is the manifest used for the in-development cohort. Consequently,./build_modules.sh manifest --file versions_current.yamlsilently omits this feature and never builds either module; add both components to the manifest.
broadcast/metadata.yaml:45 acquissionis misspelled in the component scope metadata, so the published description contains an incorrect term.
format_aidl.sh:14- Because
clang-formatis the left side of an&&list, its failure is ignored for that iteration; if a later file formats successfully, thewhilepipeline exits successfully and this script reports success while leaving the failed file unchanged. Check the formatter result explicitly and abort/clean up the temporary file on failure.
ringbuffer/current/CMakeLists.txt:113 ringbufferhas no HAL dependencies and links onlybinderandutils, so requiringHALIF_LIB_DIRmakes its standalone configure fail unless callers provide an unrelated variable. Remove this dependency check and the correspondingtarget_link_directoriesblock; keep only the Binder SDK inputs.
ringbuffer/current/CMakeLists.txt:117- The ringbuffer standalone target also adds the Binder SDK link directory without disabling build RPATH, so its build artifact can embed an absolute SDK path. This violates the portable-library/Yocto packaging behaviour used by the other module CMake files. Add the same configurable no-RPATH target-property block used by
audiodecoder/current/CMakeLists.txt:133-148.
ringbuffer/current/CMakeLists.txt:124 - This standalone target installs to
lib/halif, but the repository's build and packaging flow consumesout/target/lib/rdk-halif-aidl(build_modules.sh:739-741; see the existing module CMake defaults). Installing ringbuffer here therefore puts the library outside the expected SDK directory. Use the standard configurable install destination with alib/rdk-halif-aidldefault.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:33 IRingBufferSinkandIRingBufferSourceexposeacquire(), notwaitForData(). This public documentation therefore points implementers to a nonexistent API and makes the shared-memory access contract ambiguous. Replace this reference with the actualacquireoperations (and update the repeated reference in the following paragraph).
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:41- This second description also refers to the nonexistent
waitForDatamethod, so consumers following the documented file-descriptor semantics cannot map it to the actual API. Useacquirehere as well.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:85 - The repository's Doxygen convention uses
@returns, not@return; rename this tag so the generated API documentation recognises it.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:104 - The repository's Doxygen convention uses
@returns, not@return; rename this tag so the generated API documentation recognises it.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:71 - The repository's Doxygen convention uses
@returns, not@return; this tag is rendered inconsistently by the documentation tooling. Rename the tag to@returns.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:67 - The overflow contract says discontinuity will be reported through
RingBufferAcquireResult.overflow, but that parcelable has nooverflowmember. Consumers therefore have no way to detect the condition as documented. Add a defined result field and serialization semantics, or change this documentation to describe the actualOVERFLOWerror/callback behaviour.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:74 - The repository's Doxygen convention uses
@returns, not@return; rename this tag so the generated API documentation recognises it.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSourceListener.aidl:45 - This callback is for readable data, but its parameter is documented as bytes available for writing. That reverses the meaning of the value presented to consumers and conflicts with the threshold description above. Document it as bytes available for reading.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:30 - The public documentation says
An typesafe ID; the article and compound adjective should be corrected for generated API documentation.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:37 acquiryis not the intended term in this public error-code documentation; useacquire/acquisitionconsistently with the API method name.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:40overlowis a spelling error in the public parcelable documentation and does not match thesetOverflowing/isOverflowingAPI names.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:22- The article is incorrect in this public type description; use
an IRingBuffer.
ringbuffer/metadata.yaml:62 - The reviewer key is misspelled as
Broadcsast_Team, whilescripts/team_mapping.yamldefinesBroadcast_Team. Review automation cannot map this entry to the broadcast reviewer team, so the recorded sign-off can be ignored.
- Files reviewed: 101/101 changed files
- Comments generated: 2
- Review effort level: Lite
| # cmake -S <component>/current -B build/<component> \ | ||
| # -DBINDER_SDK_DIR=/path/to/out/target \ | ||
| # -DBINDER_SDK_INCLUDE_DIR=/path/to/out/build \ | ||
| # -DHALIF_LIB_DIR=/path/to/out/target/lib/halif \ |
There was a problem hiding this comment.
🔵 Needs a closer look
Unresolved API compatibility, build integration, and contract issues require changes and human review.
Review details
Suppressed comments (37)
broadcast/current/CMakeLists.txt:133
- The standalone install destination is
lib/halif, while the repository's build and Yocto consumers expect HAL libraries underlib/rdk-halif-aidl. A direct install of Broadcast therefore puts the library outside the directory downstream consumers search.
LIBRARY DESTINATION lib/halif
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:45
- Adding
getImplementationVersion()before the existing methods changes every subsequent Binder transaction code. An older client will send the code forgetFrontendIds()and the new service will decode it asgetImplementationVersion(), so the current interface is not wire-compatible. Append new methods after the existing declarations or introduce a versioned interface instead.
ImplementationVersion getImplementationVersion();
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:69
- The manager no longer exposes the previous demux-opening operation and instead only enumerates and retrieves IDs. This removes functionality from the existing manager contract for clients that need to create/open a demux; retain the old operation or publish this redesign under a new version.
IDemux.Id[] getDemuxIds();
/**
* Get the demux interface for the given ID.
*
* @exception ::android::binder::Status::EX_ILLEGAL_ARGUMENT if the ID is invalid.
*/
IDemux getDemux(in IDemux.Id demuxId);
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:70
- The contract is internally ambiguous: the exceptions above say
connect()must throw when the provider or demux is already connected, while this return documentation lists “already connected” as a case that returns null. Clients cannot implement reliable error handling until this is made one consistent mechanism.
* @returns IDemuxController or null on failure (e.g. already connected).
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:49
- The demux interface similarly replaces the existing source/filter lifecycle with a different set of methods. Existing clients will continue to use the old transaction numbers, which now map to different operations or no longer exist. Preserve the current declarations and append compatible additions, or publish this redesign as a new interface/version.
/** Get the ID of this demux. */
Id getId();
/**
* Check whether this demux is already connected.
broadcast/current/com/rdk/hal/broadcast/demux/IMpeg2TsDataFilter.aidl:56
- Correct the spelling in this analogy reference.
* though, ananogously to setPids(). One practical use-case for this is if the list of PIDs becomes larger than
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSTuneParameters.aidl:73
- This
intfield uses an enum member (ConstantInt.INVALID_PLS_CODE) as its default. The AIDL default expression is not anint, so generation fails type checking; use a typed integer constant or the literal-1.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:33 - This enum no longer preserves the existing backing values: entries such as
ANALOG,ATSC3,ISDB_S,ISDB_T,DTMB, andIPTVwere removed, so retained values such asATSCandDVB_Cnow receive different implicit integers. Existing clients serialising those values will be decoded as different frontend types. Preserve the old values explicitly and append new values, or version the interface.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:50 - This replaces the existing
IFrontendmethod contract, including the prior lifecycle/listener/state operations, rather than extending it. Removing or reordering methods changes Binder transaction codes and breaks clients compiled against the current interface. Keep the old methods in their original order and append additions, or expose this redesign under a new interface/version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:27 - Use the standard word “uninterrupted” here.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:41 FRONTEND_TYPEis inserted before the existing properties while all later members remain implicitly numbered. That shifts the serialized integer for every existing property (for example,DEMOD_LOCK), so old clients and new services will request/return different signal properties. Keep the existing ordinals explicit and append newly introduced properties.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:49- These renamed property members also remove the old source-level names and can change their implicit numeric positions. This breaks clients compiled against the previous signal-info contract; retain aliases/ordinals or expose the redesign under a new version.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoValue.aidl:51 - The union's existing members have been renamed/retyped and the discriminator order has changed. A client compiled against the previous
SignalInfoValuewill use the old union tag and decode a different type or field, which is a Binder API break; preserve the old union layout or publish this as a new version.
broadcast/current/com/rdk/hal/broadcast/frontend/TuneParameters.aidl:38 - The union declaration reorders the existing
dvbC/dvbTmembers and insertsdvbSbetween them. AIDL union tags are declaration-order based, so an old peer can deserialize advbTordvbCpayload as the wrong type. Preserve the existing member order and append the new member, or define a versioned union.
broadcast/current/docs/broadcast.md:52 - The example refers to
frontend.Capabilities.minFrequencyHzandmaxFrequencyHz, but the AIDL type isFrontendCapabilitieswith fields namedminFrequencyandmaxFrequency. Following this guidance leads clients to nonexistent API members.
broadcast/current/docs/broadcast.md:63 - This design rule is contradicted by the new API:
ILnbController.isOverloaded()returnsboolean. The current wording tells clients that boolean-returning functions do not exist, so it should describe the common operation/error pattern without prohibiting state-returning methods.
broadcast/current/docs/broadcast.md:32 - Use the possessive pronoun without an apostrophe.
broadcast/current/interface.yaml:7 build_modules.shparses imports with the exact^ imports:/^ -indentation (seebuild_modules.sh:357-364). With four/eight spaces here,ringbufferis omitted from the dependency graph, so manifest builds can configure Broadcast before its headers and library are available. Use the repository's two-space YAML indentation for this block.
broadcast/metadata.yaml:45- The metadata uses the misspelling
acquission; useacquisitionso the component scope is machine-reviewable and readable.
broadcast/metadata.yaml:24 - The broadcast AIDL changes remove/rename members, change signatures and reorder union fields, which the repository's versioning guide classifies as a breaking surface change (
docs/standards/versioning-guide.md:135-167). The metadata still declares0.1.0.0; either preserve compatibility or bump the major component version before release.
format_aidl.sh:9 - The formatter added by this PR only traverses
broadcast, so none of the new ringbuffer AIDL files are formatted when the repository's formatting script is run. Add the ringbuffer directory to the list of formatted roots.
ringbuffer/current/CMakeLists.txt:110 - Ringbuffer has no HAL imports and links only
binderandutils, but this standalone CMake unconditionally fails unless the caller supplies an unusedHALIF_LIB_DIR. That prevents the documented single-module build from working with only the Binder SDK; make this dependency-directory setup conditional, as inbootreason/current/CMakeLists.txt:111-113.
ringbuffer/current/CMakeLists.txt:121 - The standalone install destination is
lib/halif, but this repository's build and Yocto consumers stage HAL libraries underlib/rdk-halif-aidl(for example,build_modules.shand the other current CMakeLists). Installing this module here leaves the new library outside the directory downstream consumers search.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:32 waitForDatais referenced here, but neither ring-buffer endpoint declares that method; the API exposesacquire()instead. This leaves the public documentation describing a callable operation that does not exist.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:85- The new public documentation uses
@return, while this repository's AIDL documentation standard requires@returns. Update the tag so generated API documentation handles this return description consistently.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:71 - The new public documentation uses
@return, while this repository's AIDL documentation standard requires@returns. Update the tag so generated API documentation handles this return description consistently.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:62 - Use the repository's UK spelling “behaviour” in this new public interface documentation.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:64 - The overflow contract says
acquire()returns the full requested size immediately, but a request larger than the configured ring-buffer size cannot be represented by the documented contiguousoffset/bytesresult without writing past the mapped buffer. Define a maximum-size check/cap (and its error or partial-result behavior) before exposing this API.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:66 - The documentation promises an
overflowflag onRingBufferAcquireResult, but that parcelable only definesid,offset,bytes, andremaining. A consumer therefore has no way to observe the promised discontinuity indicator. Add the field at the end of the parcelable or revise this contract to specify how overflow is reported.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:74 - The new public documentation uses
@return, while this repository's AIDL documentation standard requires@returns. Update the tag so generated API documentation handles this return description consistently.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSourceListener.aidl:45 - This callback is for readable data, but its parameter is documented as bytes available for writing. Consumers implementing the callback from this description can interpret the value in the wrong direction.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:30 - The new comment has a grammatical error (
An typesafe ID). Use the standard hyphenated adjective and article.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:31 - The repository uses UK English in interface documentation; use “initialised” here (and consistently in the new broadcast enum comments) rather than the US spelling.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:37 - The error-code documentation uses the nonstandard misspelling
acquiry; useacquisitionto describe the result that has not yet been released.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:40 - Correct the typo in the overflow description.
ringbuffer/current/mkdocs.yml:2 - Adding a module-local MkDocs configuration is not enough to publish these new ringbuffer docs: the root
mkdocs.ymlhas noringbufferentry in its navigation, so this page will be omitted from the generated documentation site. Add the module to the root navigation alongside the other HAL modules.
ringbuffer/metadata.yaml:62 - Correct the typo in the metadata reviewer key.
- Files reviewed: 101/101 changed files
- Comments generated: 3
- Review effort level: Lite
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved AIDL compatibility, generation, and build-integration issues block approval.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (41)
Previously missed (6) — in code that hasn't changed since the last review.
broadcast/current/CMakeLists.txt:129
- This target also adds absolute Binder/dependency directories with
target_link_directoriesbut never disables the build RPATH, so the installed broadcast.socan contain absolute build paths and fail Yocto package QA. Match the RPATH handling used by the other current-module CMake files.
ringbuffer/current/CMakeLists.txt:117 - Because this target adds absolute Binder/dependency directories with
target_link_directories, the current CMake properties cause those build paths to be emitted as RPATH/RUNPATH in the shipped.so. This fails the same Yocto packaging check addressed inavclock/current/CMakeLists.txt:133-148; apply the no-build-RPATH properties here as well.
broadcast/current/docs/broadcast.md:63 - This new API declares boolean query methods (
isOpen,isConnected, andisOverloaded), so the blanket statement that functions do not return boolean is false and conflicts with the interfaces documented by this page. Narrow the rule to mutating operations or document the query-method exception.
format_aidl.sh:9 - The formatter only visits
broadcast, so the newly added ringbuffer AIDL files are excluded from the repository's formatting check. Include the ringbuffer directory inFORMAT_DIRSso both components are formatted consistently.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:67 - This text claims overflow is reported through
RingBufferAcquireResult.overflow, but that parcelable has nooverflowfield; it only containsid,offset,bytes, andremaining. Document the existingIRingBufferSourceListener.onError/RingBufferErrorCode.OVERFLOWpath instead, or add the missing field to the API.
ringbuffer/current/mkdocs.yml:1 - This adds a ringbuffer documentation site, but the root
mkdocs.ymlhas no!include ringbuffer/current/mkdocs.ymlentry. Consequently these pages are not reachable from the generated documentation navigation; add the component to the root navigation.
broadcast/current/CMakeLists.txt:133
- This target is installed under
lib/halif, but the repository's staging/Yocto contract and dependent CMake files uselib/rdk-halif-aidl. The broadcast library will therefore be placed outside the standard package/staging location; use the standard configurable install directory.
LIBRARY DESTINATION lib/halif
broadcast/current/CMakeLists.txt:31
- The standalone invocation example points
HALIF_LIB_DIRatlib/halif, but this repository stages HAL libraries underlib/rdk-halif-aidl. Following this command leaves the ringbuffer dependency undiscoverable; update the example (and matching diagnostics below) to the standard path.
# -DHALIF_LIB_DIR=/path/to/out/target/lib/halif \
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:45
getImplementationVersion()is inserted before the existinggetFrontendIds()method. AIDL transaction IDs are positional, so this shifts every following method and makes existing clients and servers dispatch different calls. Preserve the existing order and append additions at the end, or introduce a new versioned interface.
ImplementationVersion getImplementationVersion();
broadcast/current/com/rdk/hal/broadcast/ImplementationVersion.aidl:45
- The new public documentation uses the ungrammatical phrase
a implementation specific; correct the article and compound adjective.
* This is a implementation specific string, that has no semantics attached to it. The only requirements are that it
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:49
getId()andisConnected()are inserted before the existing demux methods, and the old demux lifecycle/filter contract is replaced below. This changes positional AIDL transaction IDs and removes operations needed by existing clients. Keep the old interface intact and append compatible additions, or create a new versioned interface.
/** Get the ID of this demux. */
Id getId();
/**
* Check whether this demux is already connected.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSTuneParameters.aidl:67
ConstantInt.INVALID_INPUT_STREAM_IDis an enum value assigned as the default of anintfield, rather than an integer constant. This is rejected by the AIDL type checker; use anintconstant or the literal-1.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTTuneParameters.aidl:75ConstantIntis an enum, soConstantInt.INVALID_PLP_IDis enum-typed while this field isint; AIDL's parcelable default type must match the field and this prevents interface generation. Use an integer constant/literal (or redefine the shared constants asconst int) here.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:33- Existing enum members are removed/reordered here without explicit numeric assignments. Because AIDL encodes enum values by their ordinal, old values will be interpreted as different frontend types by this version. Preserve every existing member with its original numeric value and append new values, or use a new version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:50 - These new methods are inserted before the existing frontend operations, while this interface also changes/removes lifecycle and listener methods below. That is not a backward-compatible AIDL evolution: old transaction IDs and method signatures must remain unchanged. Append new methods after the existing contract or publish a new interface version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:45 - The controller interface now starts with
tune()and no longer preserves the previous controller operations/listener contract. Removing or moving existing AIDL methods changes transaction IDs and breaks old clients; retain the old methods in their original order and append additions, or use a new versioned interface.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:41 - This enum's existing values are reordered and renamed without explicit numeric assignments. That changes the wire value associated with existing signal properties, so old clients can request one property and receive another. Retain the original names/ordinals and append new properties, or publish a new version.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoValue.aidl:49 - The union members have been renamed/removed and their types changed in this update. Union alternatives are identified by their serialized tag, so changing this layout makes values produced by an older client decode as a different type or fail. Preserve the old alternatives and tags and append new ones, or introduce a new parcelable version.
broadcast/current/com/rdk/hal/broadcast/frontend/TuneParameters.aidl:34 - The tuning union's alternatives and types have been changed in place. Stable AIDL unions use serialized alternative tags, so this is incompatible with clients using the previous
TuneParameterslayout. Keep the existing alternatives/tags and append compatible alternatives, or define a new versioned union.
broadcast/current/docs/broadcast.md:52 - The capability type and field names in this rule no longer exist. The API exposes
FrontendCapabilities.minFrequencyandmaxFrequency, so clients following this documentation will look up invalid members.
broadcast/current/docs/broadcast.md:32 - The phrase uses the possessive contraction
it'swhere the pronounitsis required.
broadcast/current/interface.yaml:7 - The supported manifest builds enumerate only components listed in
versions_current.yaml/versions_released.yaml; neitherbroadcastnor its newringbufferdependency is listed, sobuild_modules.sh manifestsilently omits this entire feature. Add the new components to the development manifest (and define the intended released-cohort behaviour) or update manifest discovery before relying on this import.
broadcast/current/interface.yaml:7 - The new Broadcast interface imports ringbuffer and adds frontend, demux, and CA functionality, but the feature profile still declares only
interfaceVersion. This leaves the machine-readable HFP unable to describe the capabilities introduced by this PR, contrary to the repository's HFP contract; add the corresponding static capability declarations or explicitly define why this profile is intentionally empty.
broadcast/metadata.yaml:45 acquissionis a spelling error in the component scope description; useacquisitionso the metadata is machine-readable and professionally documented.
broadcast/metadata.yaml:44- The metadata says tuning and state changes are delivered to registered listeners, but the updated frontend API contains no tuning/state listener registration or callback interface. This makes the component scope inaccurate; remove the listener claim or add the corresponding API.
format_aidl.sh:14 - A failed
clang-formatis the first command in an&&list inside the loop, soset -edoes not necessarily terminate that iteration; if a later file succeeds, the loop can finish successfully while leaving the failed file unformatted. Run the formatter andmvas separate commands (or explicitly propagate the failure).
ringbuffer/current/CMakeLists.txt:109 - Ringbuffer has no HAL dependency and links only
binderandutils, but this block makes every standalone build fail unless an unrelatedHALIF_LIB_DIRis supplied. Keep this search path optional, as the no-dependency module CMake files do.
ringbuffer/current/CMakeLists.txt:121 - The standalone target is installed under
lib/halif, while the repository's staging/Yocto contract and dependent CMake files uselib/rdk-halif-aidl. A ringbuffer built and staged by this rule will not be found throughHALIF_LIB_DIR, so broadcast cannot link against it; use the standard configurable install directory.
ringbuffer/current/CMakeLists.txt:31 - The standalone invocation example points
HALIF_LIB_DIRatlib/halif, but this repository stages HAL libraries underlib/rdk-halif-aidl. Following this command leaves the dependency undiscoverable; update the example (and matching diagnostics below) to the standard path.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:32 waitForDatais not part of either interface; both sides exposeacquire(). This stale method name makes the shared-memory access contract point clients to an API they cannot call.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:85- The repository documentation rule requires
@returns, but this new method uses the deprecated@returntag. The generated API documentation will therefore be inconsistent with the project standard.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:104 - The repository documentation rule requires
@returns, but this new method uses the deprecated@returntag. Replace the tag to keep generated API documentation consistent with the rest of the interface.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:71 - The repository documentation rule requires
@returns, but this new method uses@return; replace the tag and the incorrect article in the acquire contract.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:64 - In an overflowing ring buffer, reaching the physical end of the contiguous region can still make
RingBufferAcquireResult.bytessmaller than the requested amount. The acquire-result contract explicitly permits that, so clients must not assume this call always returns the requested byte count.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:74 - The repository documentation rule requires
@returns, but this new method uses@return; replace the tag and the incorrect article in the acquire contract.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSourceListener.aidl:45 - This callback belongs to the consumer/source side, so the parameter description should report bytes available for reading. As written it tells implementers and generated documentation the opposite direction.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:30 - The public type documentation has a grammar/wording error: the article before
typesafeis incorrect and the standard term istype-safe.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:37 acquiryis not the term used by the surrounding API (acquire/acquired); this typo makes the overflow condition harder to understand in the error contract.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:40overlowis a typo in the public parcelable field documentation; it should sayoverflowso generated API documentation describes the setting correctly.
ringbuffer/current/docs/ringbuffer.md:24- Unlike the existing HAL documentation, this new public interface has an empty requirement row and placeholder sections for lifecycle, memory, buffer ownership, and mapping semantics. Those details are essential to implement the shared ring-buffer contract, so the component is not sufficiently specified for clients or vendors to interoperate.
ringbuffer/metadata.yaml:62 - The reviewer key is misspelled as
Broadcsast_Team, so it does not match theBroadcast_Teamowner/team key used above and will not be recognised by metadata consumers.
- Files reviewed: 101/101 changed files
- Comments generated: 2
- Review effort level: Lite
| message(FATAL_ERROR "No sources under src/. Run ./build_interfaces.sh ringbuffer first to regenerate.") | ||
| endif() | ||
|
|
||
| add_library(${LIB_NAME} SHARED ${SRCS}) |
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved critical and moderate AIDL, API-compatibility, build, manifest, and documentation issues remain.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (22)
broadcast/current/CMakeLists.txt:136
- This installs the library under
lib/halif, but the repository's standalone CMakeLists andbuild_modules.shcontract uselib/rdk-halif-aidl(for example,avclock/current/CMakeLists.txt:156andbuild_modules.sh:655). Downstream packaging and dependency resolution will not find this artifact at the documented location; use the common, overridable install directory.
LIBRARY DESTINATION lib/halif
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:45
getImplementationVersion()is inserted before the existing methods, so every following AIDL transaction code changes. A client built against the previouscurrentinterface will dispatchgetFrontendIds()as this new method and the remaining calls to the wrong transactions; preserve the existing order and append additions, or publish a new interface version.
ImplementationVersion getImplementationVersion();
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:32
- Removing the old enum members renumbers the values on the wire: the previous
ATSCvalue was 2, but it is now 1, while oldDVB_C/DVB_S/DVB_Tvalues also shift. Existing clients and services will therefore decode the same value as a different frontend type; retain the existing members/assignments and append new values, or version the API.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:64 - This changes the existing
getCapabilities()return type from nullableCapabilitiesto non-nullFrontendCapabilities, which is a wire/API-breaking signature change; the oldopen/closecontract is also replaced rather than extended. Keep the existing interface contract and append compatible methods, or move this redesign to a new version/interface.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:37 - Inserting
FRONTEND_TYPEandACTUAL_FREQUENCYbefore the existing properties shifts every existing enum value (for example, oldDEMOD_LOCK = 1becomes 3); renaming/removingRFLEVELandUNCis also source incompatible. Existing clients will request or decode the wrong property, so preserve the old numeric assignments and names or version the interface.
broadcast/current/docs/broadcast.md:32 - The possessive is incorrect here; the sentence needs the contraction-free possessive form.
broadcast/current/docs/broadcast.md:53 - This example still refers to the removed
frontend.Capabilitiestype and its oldminFrequencyHz/maxFrequencyHzfields, while the API now exposesFrontendCapabilities.minFrequencyandmaxFrequency. The published guidance will lead clients to nonexistent symbols.
broadcast/current/interface.yaml:1 - These new
interface.yamlfiles are not represented in either version manifest. The smoke test counts every*/current/interface.yamlbut manifest mode builds only explicit entries, so the current cohort will expect 23 libraries while building 21, and the released-cohort coverage check also fails. Addbroadcastandringbufferto the manifests, pinning them tocurrentuntil snapshots exist.
broadcast/metadata.yaml:45 - The scope entry contains a spelling error.
format_aidl.sh:9 - The new
ringbufferAIDL files are not included inFORMAT_DIRS, so running this formatter leaves the new module out while formattingbroadcast. Add the new module directory to keep the formatting script covering all AIDL introduced by this change.
ringbuffer/current/CMakeLists.txt:109 ringbuffer/current/interface.yamldeclares no imports and this target links only Binder, but configuration still aborts unlessHALIF_LIB_DIRis supplied. A dependency-free ringbuffer standalone build therefore fails unless callers provide an unused variable; make this dependency path optional or remove it.
ringbuffer/current/CMakeLists.txt:124- This installs the library under
lib/halif, while the repository's standalone CMakeLists andbuild_modules.shcontract uselib/rdk-halif-aidl(for example,avclock/current/CMakeLists.txt:156andbuild_modules.sh:655). Downstream packaging and dependency resolution will not find this artifact at the documented location; use the common, overridable install directory.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:33 - Both references in this description name
waitForData, but neither ring-buffer side defines such a method; the available operation isacquire. This makes the core memory-access contract point clients to a nonexistent API.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:85 - The project documentation standard uses
@returnsfor return-value documentation; this new AIDL comment uses the prohibited@returntag.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:104 - The project documentation standard uses
@returnsfor return-value documentation; this new AIDL comment uses the prohibited@returntag.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:48 IRingBufferis the module's main interface but does not declare the requiredserviceNameconstant. Without it, implementations have no interface-defined Binder registration name; add the module's service name, following the main-interface pattern used throughout the repository.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:71- The project documentation standard uses
@returnsfor return-value documentation; this new AIDL comment uses the prohibited@returntag.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSinkListener.aidl:55 - There is no consumer-facing method on
IRingBufferSourceorIRingBufferthat requests a flush, so this callback cannot be triggered through the public API. Add an explicit flush-request operation (and define its lifecycle) or remove this callback and its documentation.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSourceListener.aidl:45 - The source callback reports readable data, but this parameter is documented as bytes available for writing. That description can cause a consumer to use the notification with the wrong meaning.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:30 - This comment is grammatically incorrect: use “A type-safe ID” rather than “An typesafe ID”.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:40 overlowis misspelled in this public field description.
ringbuffer/metadata.yaml:62- The reviewer team name is misspelled, so metadata consumers will see a different stakeholder key from the declared
Broadcast_Teamowner.
- Files reviewed: 101/101 changed files
- Comments generated: 6
- Review effort level: Lite
| import com.rdk.hal.broadcast.frontend.Bandwidth; | ||
| import com.rdk.hal.broadcast.frontend.CodingRate; | ||
|
|
||
| import com.rdk.hal.broadcast.frontend.DvbCAnnex; |
|
|
||
| target_link_libraries(${LIB_NAME} PRIVATE binder utils ringbuffer-vcurrent-cpp) | ||
|
|
||
| set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME "${LIB_NAME}") |
|
|
||
| target_link_libraries(${LIB_NAME} PRIVATE binder utils) | ||
|
|
||
| set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME "${LIB_NAME}") |
| * that the data acquired is contiguous or in order. Note though, that an overflow will be signalled through the | ||
| * RingBufferAcquireResult.overflow flag. |
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved API compatibility, build integration, and AIDL contract issues remain.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (36)
broadcast/current/CMakeLists.txt:136
- This standalone target installs to
lib/halif, but the repository staging contract and downstream build scripts useout/target/lib/rdk-halif-aidl(seecmake_stage_modules.cmake:52andavbuffer/current/CMakeLists.txt:157-162). A successful install here therefore leaves the library outside the SDK path consumed by dependants. Use the standardHALIF_INSTALL_LIBDIRdefault and update thelib/halifexamples in this file as well.
install(TARGETS ${LIB_NAME}
LIBRARY DESTINATION lib/halif
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
broadcast/current/CMakeLists.txt:129
- The target links through
${BINDER_SDK_DIR}and${HALIF_LIB_DIR}but leaves CMake's build RPATH enabled. The Yocto recipe copies the build-tree.sodirectly, so this embeds absolute SDK/staging paths in the shipped broadcast library and can fail package QA; clear the build/install RPATH as done inavclock/current/CMakeLists.txt:133-148.
set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME "${LIB_NAME}")
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:59
- This changes an existing VINTF interface:
getFrontendis now non-nullable and the prior demux-opening operation has been removed. Existing generated clients and implementations cannot remain source/API compatible with that contract. Preserve the old declarations and append additions, or introduce a new version/interface for the redesign.
IFrontend getFrontend(in IFrontend.Id frontendId);
broadcast/current/com/rdk/hal/broadcast/ImplementationVersion.aidl:45
- The article should be
anbeforeimplementation-specific.
* This is a implementation specific string, that has no semantics attached to it. The only requirements are that it
broadcast/current/com/rdk/hal/broadcast/demux/IDemuxSoftwareInput.aidl:80
- The normal lifecycle is
acquireDataProvider()→IDemux.connect()→IDemux.disconnect()→releaseDataProvider(). At release time the software input is no longer connected, so this exception description is inverted and makes the documented cleanup sequence appear invalid.
* @exception ::android::binder::Status::EX_ILLEGAL_STATE The software input is not connected to a Demux.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSTuneParameters.aidl:67
ConstantIntis an AIDL enum, but these fields are declared asint; an enum member is not an integer literal/const intfor a parcelable default and will not type-check as anintdefault. Use an integer default (or define actual integer constants) instead.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSTuneParameters.aidl:73ConstantIntis an AIDL enum, but this field is declared asint; an enum member is not an integer literal/const intfor a parcelable default and will not type-check as anintdefault. Use an integer default (or define an actual integer constant) instead.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTTuneParameters.aidl:75ConstantIntis an AIDL enum, but this field is declared asint; an enum member is not an integer literal/const intfor a parcelable default and will not type-check as anintdefault. Use an integer default (or define an actual integer constant) instead.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:32- The updated enum no longer contains the previous frontend-type values. Removing or renumbering enum members changes the wire values seen by existing clients and can make previously valid values unknown. Preserve the existing members/ordinals and append new types instead.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:100 - The normal lifecycle is
acquireDataProvider()→IDemux.connect()→IDemux.disconnect()→releaseDataProvider(). At release time the frontend is no longer connected, so this exception description is inverted and makes the documented cleanup sequence appear invalid.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:73 - This replaces the existing
open(listener)contract withopen()and drops the frontend state/listener notification path. That is a breaking change to an existing VINTF interface, not a backward-compatible extension. Retain the old method or publish a new interface version.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:87 - Changing
close()to require anIFrontendControllerparameter changes the existing AIDL method signature and transaction contract. Existing clients cannot call this updated interface. Keep the old method and append a new operation, or version the interface.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:45 - The controller contract removes existing lifecycle/state/listener operations and starts with a different method set. Removing methods from a VINTF-stable AIDL interface breaks generated clients and servers; retain the old methods and append additions, or create a new interface/version.
broadcast/current/com/rdk/hal/broadcast/frontend/TransmissionMode.aidl:30 - This changes the existing
TransmissionModetype from an enum to a union while keeping the same fully qualified name. That changes both the generated API type and parcel encoding, so existing VINTF clients cannot interoperate with it. Keep the enum and add a new type, or publish a new interface version.
broadcast/current/docs/broadcast.md:32 - The possessive pronoun is misspelled in this documentation sentence.
broadcast/current/interface.yaml:7 - This adds a
ringbuffer@currentdependency, but the current-component manifest does not list eitherbroadcastorringbuffer, so manifest builds cannot stage this dependency. Add both modules toversions_current.yaml(with the dependency ordering expected by the build) so the broadcast target is buildable in the supported manifest workflow.
broadcast/metadata.yaml:45 - The scope description contains a misspelling in the name of the data acquisition responsibility.
broadcast/metadata.yaml:44 - This metadata claims that frontend state changes are delivered to registered listeners, but the new Broadcast API contains no listener interface or listener-registration method. Remove this scope item or restore the event-delivery API so the component metadata matches the contract.
format_aidl.sh:9 - The formatter only traverses
broadcast, so the newly added ringbuffer AIDL files are excluded from the repository's formatting check/workflow. Add the ringbuffer directory toFORMAT_DIRSso both new interfaces are formatted consistently.
ringbuffer/current/CMakeLists.txt:124 - This standalone target installs to
lib/halif, but the repository staging contract and downstream build scripts useout/target/lib/rdk-halif-aidl(seecmake_stage_modules.cmake:52andavbuffer/current/CMakeLists.txt:157-162). A successful install here therefore leaves the library outside the SDK path consumed by dependants. Use the standardHALIF_INSTALL_LIBDIRdefault and update thelib/halifexamples in this file as well.
ringbuffer/current/CMakeLists.txt:117 - The target links through
${BINDER_SDK_DIR}but leaves CMake's build RPATH enabled. The Yocto recipe copies the build-tree.sodirectly, so this embeds an absolute SDK path in the shipped ringbuffer library and can fail package QA; clear the build/install RPATH as done inavclock/current/CMakeLists.txt:133-148.
ringbuffer/current/CMakeLists.txt:113 ringbuffer/interface.yamldeclaresimports: [], and this target links onlybinderandutils, so requiringHALIF_LIB_DIRmakes a standalone RingBuffer configure fail unless an unrelated HAL library directory is supplied. Remove this mandatory check and the dependency link-directory setup for this dependency-free component.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:33- These lines refer to
waitForData, but neitherIRingBufferSinknorIRingBufferSourcedefines that method; both exposeacquire(). This makes the core memory-access contract point clients at an API that does not exist.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:41 - This paragraph repeats the nonexistent
waitForDatamethod even though the only access method isacquire(), so clients following the documented file-descriptor semantics cannot map the description to the API.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:71 - The non-overflowing behavior is documented here as blocking the producer, but
IRingBufferSink.acquire()below is documented to return null when the buffer is full. These are incompatible client contracts; describe the non-overflowing case in terms of the null acquire result.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:85 - The project documentation standard requires
@returnsrather than@returnfor Doxygen return descriptions.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:104 - The project documentation standard requires
@returnsrather than@returnfor Doxygen return descriptions.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:48 - Unlike the other main HAL interfaces (for example
broadcast/.../IBroadcastManager.aidl:36),IRingBufferhas noserviceNameconstant. This leaves service registration without the contract-defined name required by the repository's AIDL interface convention. Add the constant with the agreed lowercase service name.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:64 - This says an overflowing buffer's acquire returns the requested byte count, but
RingBufferAcquireResult.bytesis explicitly allowed to be smaller than the request andremainingexists for the wrapped/contiguous case. Producers must be told to use the returned byte count rather than assume the request was granted.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:71 - The project documentation standard requires
@returns, not@return, and the article beforeRingBufferAcquireResultis incorrect.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:67 RingBufferAcquireResulthas nooverflowfield. Overflow is represented byRingBufferErrorCode.OVERFLOWdelivered through the listener, so this documentation directs consumers to inspect a value that cannot be compiled or read.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:30- This description has an incorrect article and spelling for the type-safe ID.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:37 - The error-code documentation uses the non-word
acquiryinstead of the API termacquire.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferInfo.aidl:40 - The field documentation misspells
overflow, which is the public setting represented by this field.
ringbuffer/current/interface.yaml:1 - The new
ringbuffercomponent is not present inversions_current.yaml, sobuild_modules.sh manifest --file versions_current.yamlwill not build or stage it. That manifest mode is the repository's dev cohort and the smoke test expects one library for everycurrent/interface.yaml; it also means thebroadcastimport ofringbuffer@currenthas no dependency library in that build. Add both current components to the manifest.
ringbuffer/metadata.yaml:62 - The reviewer team key is misspelled, so the recorded
reviewedstatus will not match theBroadcast_Teamowner key used above and may be ignored by metadata tooling.
- Files reviewed: 101/101 changed files
- Comments generated: 11
- Review effort level: Lite
| /** Minimum frequency range of the tuner. */ | ||
| long minFrequency; | ||
|
|
||
| /** Maximum frequency range of the tuner. */ | ||
| long maxFrequency; |
| union GuardInterval { | ||
| DvbTGuardInterval dvbT = DvbTGuardInterval.UNDEFINED; | ||
| // Reserved for future use. | ||
| } |
| union Modulation { | ||
| AtscModulation atsc = AtscModulation.UNDEFINED; | ||
| DvbCModulation dvbC; | ||
| DvbSModulation dvbS; | ||
| DvbTConstellation dvbT; |
| * Called when the consumer side has requested a flush of the ring buffer. | ||
| * | ||
| * This can be used by the producer to flush any internal buffers or data sources to ensure no stale data will be | ||
| * written to the ring buffer going forward. | ||
| */ | ||
| void onFlushRequested(); |
| `::android::binder::Status::EX_ILLEGAL_ARGUMENT` error in this case. The client should refrain from providing values | ||
| outside of the defined range for these variables. | ||
| 3. For variables with a range that can be queried through the API itself (e.g. `frequency`, which can be queried through | ||
| `frontend.Capabilities.minFrequencyHz` and `frontend.Capabilities.maxFrequencyHz`), providing a value outside of this |
| site_name: ringbuffer | ||
| docs_dir: docs |
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved API compatibility, AIDL validity, build integration, and documentation issues remain.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (56)
broadcast/current/CMakeLists.txt:136
- This installs the library under
lib/halif, while the repository's staging/build scripts and sibling module CMake files uselib/rdk-halif-aidl(for example,deepsleep/current/CMakeLists.txt:144). A direct install therefore places the broadcast library outside the SDK/Yocto package path; use the configurableHALIF_INSTALL_LIBDIRwith the repository default.
install(TARGETS ${LIB_NAME}
LIBRARY DESTINATION lib/halif
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
broadcast/current/CMakeLists.txt:129
- Because this target uses
target_link_directories()with absolute Binder and HALIF paths, the default CMake build RPATH embeds local SDK/build directories into the shipped.so. The sibling module CMake files disable this (SKIP_BUILD_RPATH) to satisfy Yocto packaging and keep runtime lookup under the integrator's control; apply the same RPATH configuration here.
set_target_properties(${LIB_NAME} PROPERTIES OUTPUT_NAME "${LIB_NAME}")
broadcast/current/CMakeLists.txt:31
- The standalone build example points
HALIF_LIB_DIRatout/target/lib/halif, while the repository's dependency libraries are staged underout/target/lib/rdk-halif-aidl. Following this command makes the broadcast link step unable to find the ringbuffer library. Keep the example aligned with the standard install destination.
# -DHALIF_LIB_DIR=/path/to/out/target/lib/halif \
broadcast/current/CMakeLists.txt:121
- The configure error still directs users to the obsolete
lib/halifdirectory. When the standard staging path is used, this message gives an invalid recovery command and can leaveHALIF_LIB_DIRpointing at the wrong location; update it tolib/rdk-halif-aidlalong with the install and example paths.
"Set it to the directory holding dependency lib*-cpp.so (e.g. out/target/lib/halif).")
broadcast/current/com/rdk/hal/broadcast/IBroadcastManager.aidl:45
getImplementationVersion()is added before the existing frontend-manager methods, and the old demux-opening API is removed/replaced. That changes the transaction numbers and reply contract ofIBroadcastManager, so clients generated against the previous interface will call the wrong operation. Keep the old method order/signatures and append compatible additions, or publish this as a new interface version.
ImplementationVersion getImplementationVersion();
broadcast/current/com/rdk/hal/broadcast/ca/PowerControl.aidl:27
- Use the UK spelling
initialisedin this new documentation comment.
/** Clean value when default initialized. */
broadcast/current/com/rdk/hal/broadcast/demux/FilterType.aidl:35
- Use the UK spelling
initialisedin this new documentation comment.
/** Clean value when default initialized */
broadcast/current/com/rdk/hal/broadcast/demux/IDemux.aidl:46
- The existing demux contract is replaced here: the prior source/filter lifecycle is removed in favour of
getId(),isConnected(), provider connections, and software inputs. Since this is the same VINTF interface, old generated clients will use the old transaction numbers against unrelated new methods. PreserveIDemuxand add a versioned interface for the new lifecycle instead of changing it in place.
/** Get the ID of this demux. */
Id getId();
broadcast/current/com/rdk/hal/broadcast/frontend/AtscModulation.aidl:27
- Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbCAnnex.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbCBandwidth.aidl:31 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbCModulation.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSModulation.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSRollOff.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSStandard.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSTuneParameters.aidl:73 ConstantInt.INVALID_PLS_CODEis an enum member, but this field is anint. AIDL does not use a typed enum member as a primitive parcelable default, so this declaration will fail type checking or generate an invalid assignment; use the numeric-1default or expose a realconst intinstead.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbSTuneParameters.aidl:67ConstantInt.INVALID_INPUT_STREAM_IDis an enum member, but this field is anint. AIDL does not use a typed enum member as a primitive parcelable default, so this declaration will fail type checking or generate an invalid assignment; use the numeric-1default or expose a realconst intinstead.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTBandwidth.aidl:27- Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTConstellation.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTGuardInterval.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTHierarchy.aidl:18 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTMiso.aidl:18 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTStandard.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTTransmissionMode.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/DvbTTuneParameters.aidl:75 ConstantInt.INVALID_PLP_IDis an enum member, but this field is anint. AIDL does not use a typed enum member as a primitive parcelable default, so this declaration will fail type checking or generate an invalid assignment; use the numeric-2default or expose a realconst intinstead.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendCapabilities.aidl:41- Use the UK spelling
centrein this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/FrontendType.aidl:32 - This replaces the existing
FrontendTypeenum values and renumbers the retained DVB values while removing previously supported types such as ATSC3, ISDB, and DTMB. Because the enum backing integers cross the AIDL boundary, old clients can interpret a returned value as the wrong frontend type. Preserve the old values and append new types, or expose the reduced set under a new version/interface.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontend.aidl:50 - This is a breaking rewrite of an existing VINTF interface:
getId()andisOpen()are inserted beforegetFrontendTypes(), while the capability return type and the open/close and listener APIs are changed below. AIDL transaction codes follow declaration order, so existing generated clients will dispatch to different methods or fail to decode replies. Preserve the existing interface and append only compatible methods, or expose this contract as a new version/interface.
broadcast/current/com/rdk/hal/broadcast/frontend/IFrontendController.aidl:60 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/LnbTone.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/LnbVoltage.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalDetectMode.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:31 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoProperty.aidl:41 - Adding
FRONTEND_TYPEandACTUAL_FREQUENCYbefore the existing values renumbers every pre-existingSignalInfoPropertyvalue; several existing names are also changed (RFLEVEL/UNC). These backing integers are serialized across Binder, so old clients will request/read different properties. Keep the old numeric assignments and names, append new values, or version the API.
broadcast/current/com/rdk/hal/broadcast/frontend/SignalInfoValue.aidl:51 - This changes the existing
SignalInfoValueunion's wire contract by reordering/renaming members and changing payload types (for example,actualFrequencyHztoactualFrequency, lock booleans to enums, and RF level tofloat). Existing clients will decode the old union tags with the wrong type or meaning. Preserve the old members/tags and append new representations, or introduce a versioned union.
broadcast/current/com/rdk/hal/broadcast/frontend/SpectralInversion.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/com/rdk/hal/broadcast/frontend/TuneParameters.aidl:34 - These union members rename the existing DVB-T/C fields and insert DVB-S in the middle of the union. Union member tags are part of the AIDL wire format, so existing clients serializing
dvbTTuneParametersordvbCTuneParameterswill be decoded as a different member/type. Preserve the existing members and tags, append DVB-S, or publish a new versioned union/interface.
broadcast/current/com/rdk/hal/broadcast/frontend/TuneStatus.aidl:27 - Use the UK spelling
initialisedin this new documentation comment.
broadcast/current/docs/broadcast.md:52 - The new frontend API defines
FrontendCapabilities.minFrequencyandmaxFrequency, but this example still points readers to the removedfrontend.Capabilities.minFrequencyHzandmaxFrequencyHzsymbols. Following this documentation leads clients to types and fields that do not exist.
broadcast/current/docs/broadcast.md:32 it'sis the contraction of “it is”; the possessive form needed here isits.
broadcast/current/interface.yaml:2- Adding this interface without registering
broadcastinversions_current.yamlmeans the manifest-mode development build will omit it, while the smoke test still counts it as a current interface. Add the component to the manifest so the new library is built and the expected-count check remains consistent.
broadcast/metadata.yaml:45 - The metadata uses the misspelling
acquission, which makes the public component description unclear.
format_aidl.sh:8 - This new formatter only traverses
broadcast, so running the repository formatting command leaves every AIDL file added underringbufferuntouched. Add the new module toFORMAT_DIRSso the formatter covers all AIDL trees introduced by this change.
ringbuffer/current/CMakeLists.txt:117 - Because this target uses
target_link_directories()with absolute Binder paths, the default CMake build RPATH embeds the local SDK/build directory into the shipped.so. The sibling module CMake files disable this (SKIP_BUILD_RPATH) to satisfy Yocto packaging and keep runtime lookup under the integrator's control; apply the same RPATH configuration here.
ringbuffer/current/CMakeLists.txt:124 - This installs the library under
lib/halif, while the repository's staging/build scripts and sibling module CMake files uselib/rdk-halif-aidl(for example,deepsleep/current/CMakeLists.txt:144). A direct install therefore places this library outside the SDK/Yocto package path; use the configurableHALIF_INSTALL_LIBDIRwith the repository default.
ringbuffer/current/CMakeLists.txt:113 ringbuffer/current/interface.yamldeclares no HAL imports and this target links onlybinder/utils, so there is no HALIF dependency to locate here. MakingHALIF_LIB_DIRmandatory causes a standalone ringbuffer configure to fail unless callers provide an unrelated directory, even though the component has no dependency library. Remove this requirement and the conditional link-directory block for ringbuffer.
ringbuffer/current/CMakeLists.txt:31- The standalone build example points
HALIF_LIB_DIRatlib/halif, but this repository stages dependencies underlib/rdk-halif-aidl. Following the documented command leaves the linker unable to find the dependency libraries; update the example to the standard path.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:63 - Use the UK spelling
behaviourin this new documentation comment.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBuffer.aidl:48 IRingBufferis the module's main service interface, but it has noserviceNameconstant for service-manager registration. Add the standard constant so clients and implementations have a stable registration name.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSink.aidl:62- Use the UK spelling
behaviourin this new documentation comment.
ringbuffer/current/com/rdk/hal/ringbuffer/IRingBufferSource.aidl:67 - The documentation says overflow is reported through
RingBufferAcquireResult.overflow, but that parcelable only declaresid,offset,bytes, andremaining; there is no such field for a consumer to inspect. Either add and define the missing flag or update this contract to describe the actualOVERFLOWerror notification.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferAcquireResult.aidl:58 IRingBufferSource.acquire()documents that callers must inspectRingBufferAcquireResult.overflowto detect discontinuous data, but this parcelable has no such field. Consumers therefore cannot implement the overflow handling promised by the source contract. Add the indicator as a new trailing field, or remove and rewrite the overflow semantics inIRingBufferSource.
ringbuffer/current/com/rdk/hal/ringbuffer/RingBufferErrorCode.aidl:31- Use the UK spelling
initialisedin this new documentation comment.
ringbuffer/current/interface.yaml:2 - The manifest-based builds only process components listed in
versions_current.yaml/versions_released.yaml, but neither manifest includesringbufferorbroadcast. As a result this new dependency and the broadcast library are skipped by those builds (and the smoke test's component count becomes inconsistent); add both components to the manifests with the appropriatecurrent/release entries.
ringbuffer/current/mkdocs.yml:1 - This new component-level MkDocs file is not referenced by the root
mkdocs.yml, unlike the other component entries, so the ringbuffer documentation will not appear in the published site. Add a root navigation/include entry forringbuffer/current/mkdocs.yml.
- Files reviewed: 101/101 changed files
- Comments generated: 1
- Review effort level: Lite
| * ::android::binder::Status::EX_ILLEGAL_STATE will be thrown. | ||
| * | ||
| * @param listener The listener that will receive callbacks for the consumer. | ||
| * @return An IRingBufferSource interface for the consumer to read data from the ring buffer. |
No description provided.