- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8.2k
bt: ipc: Add ipc multiendpoint #31115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bt: ipc: Add ipc multiendpoint #31115
Conversation
| The following projects have a revision update in this Pull Request: 
 Note: This message is automatically posted and updated by the Manifest GitHub Action. | 
279c8bd    to
    5cb78fe      
    Compare
  
    | Thanks @pszkotak for posting this PR! It's crucial to enable multiple services on nRF53 network core. Currently only HCI, or 802.15.4 serialization is available (not simultaneously), what is a limitation preventing many use-cases. I've noticed that apart from  It looks that this PR partially fixes #20419. The missing part are priorities of endpoints requested by @nordic-krch. But for the use-case described by @pszkotak (simultaneous HCI and 802.15.4 serialization) the priorities support is not required. Because of that I think it is worth to merge this PR and add extend this module with priorities support later. | 
5cb78fe    to
    eb115ac      
    Compare
  
    | @ioannisg, while clearing Compliance errors I've added you as a code owner for the new IPC service. I've chosen you, because you are already code owner of some IPM drivers. Based on that I've assumed you have expertise in IPC area. If I chose poorly, please advice us who would be a better candidate to own this module. | 
| Very interesting PR! this is something that was clearly missing... It would be interesting to split the rpmsg-service.c into 2 separate files 
 The reason of this suggestion is that there are 2 different topologies supported in Zephyr. 
 Splitting code in 2 files would allow to extend your dev in a next step to support the second topology and potentially new ones. | 
| 
 I've added a commit splitting the module. @arnopo, please have a look if this is what you had in mind. | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be interesting to split the rpmsg-service.c into 2 separate files
I've added a commit splitting the module. @arnopo, please have a look if this is what you had in mind.
It would be interesting to split the rpmsg-service.c into 2 separate files
I've added a commit splitting the module. @arnopo, please have a look if this is what you had in mind.
Thanks! Yes this is what i had in mind.
Perhaps something is missing regarding the IO struct that seems used uninitialized in rpmsg_init_vdev call...
| 
 Fixed, verifying order of execution using a simple flag. Returning  | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving as an intermediate step, As discussed with @hubertmis, I am hoping to see my review suggestions for API improvements implemented in the subsequent PRs.
| Looks much better now, one last minor request. Can you move rpmsg_service into subsys/ipc/rpmsg_service ? Subsystems need to be generic, rpmsg_service is an implementation of an IPC, and we will have others. | 
| 
 Sure. Just pushed changes. Should be ready for review. | 
b3471a1    to
    88a5418      
    Compare
  
    | Needs to get the right SHA for the nRF module | 
bd315a3    to
    c7e29d0      
    Compare
  
    c7e29d0    to
    9714ffb      
    Compare
  
    | This PR is now blocked by #31224 , because of hal_nordic dependency | 
This patch implements a service that adds multiendpoint capabilities to RPMsg. Multiple endpoints are intended to be used when multiple modules need services from a remote processor. Each module may register one or more RPMsg endpoints. The implementation separates backend from the service, what allows to extend this module to support other topologies like Linux <-> Zephyr. Co-authored-by: Piotr Szkotak <[email protected]> Signed-off-by: Hubert Miś <[email protected]>
This patch adds Kconfig entries to nRF5340-DK description that automatically configure RPMsg Service if it is enabled for the build. Co-authored-by: Piotr Szkotak <[email protected]> Signed-off-by: Hubert Miś <[email protected]>
This patch modifies Bluetooth HCI RPMsg drivers and samples to use RPMsg Service instead of configuring OpenAMP directly in the driver or the sample. Co-authored-by: Piotr Szkotak <[email protected]> Signed-off-by: Hubert Miś <[email protected]>
9714ffb    to
    834a500      
    Compare
  
    | 
 Thanks, that should be fine for now :) | 
This patch updates hal_nordic module revision to start using RPMsg Service for serialization of 802.15.4. The serialization module is implemented in the hal_nordic module. Signed-off-by: Hubert Miś <[email protected]>
This patch adds a new sample presenting usage of RPMsg Service subsystem. Signed-off-by: Hubert Miś <[email protected]>
834a500    to
    2c6d99d      
    Compare
  
    
Multiprotocol on the nRF53 requires multiple IPC channels to communicate
between the APP and the NET core. One way is to duplicate the entire openamp
instance, the other one is to use a single instance with multiple endpoints.
Aim of this PR is to achieve the goal using the simpler single instance
with the multiple endpoints.
At this point hci_rpmsg net core sample and peripheral_hr app core sample link with the new implementation.
To build:
For now we are aware of the following issues that may need addressing:
Signed-off-by: Piotr Szkotak [email protected]