-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
nRF RPC IPC Service transport #7510
nRF RPC IPC Service transport #7510
Conversation
The following west manifest projects have been modified in this Pull Request:
Note: This message is automatically posted and updated by the Manifest GitHub Action. |
09ed215
to
e75c358
Compare
e75c358
to
c7aed8a
Compare
You can find the documentation preview for this PR at this link. It will be updated about 10 minutes after the documentation build succeeds. Note: This comment is automatically posted by the Documentation Publishing GitHub Action. |
Integration test specification
Detailed information of selected test modules Note: This message is automatically posted and updated by the CI |
c7aed8a
to
66787cd
Compare
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.
Please add alignment for internal
files in Bluetooth RPC.
Running the entropy sample, from time to time there is a issue with memory allocation: |
66787cd
to
c3ae2ae
Compare
I totally forgot about this part of the API. Thanks, done. |
It is fixed now |
c3ae2ae
to
f8b2f00
Compare
subsys/nrf_rpc/nrf_rpc_ipc.c
Outdated
LOG_ERR("ipc_service_send_nocpy returned err: %d", err); | ||
LOG_ERR("Dropping Tx buffer"); | ||
|
||
err2 = ipc_service_drop_tx_buffer(&endpoint->ept, data); |
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.
Currently ipc_rpmsg_static_vrings
backend does not support drop the buffer: https://github.com/zephyrproject-rtos/zephyr/blob/main/subsys/ipc/ipc_service/backends/ipc_rpmsg_static_vrings.c#L577-L582
Doesn't this cause a potential issue?
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 might be. It looks like there is outgoing work on adding support for it in the OpenAMP: OpenAMP/open-amp#361
f8b2f00
to
0cfd801
Compare
@maje-emb I switched back to use IPC Service without nocopy functionality. When the missed API will be added to OpenAMP then I will use the nocopy mechanism |
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.
Looks good to me.
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.
Please find a couple of comments.
@@ -777,6 +777,11 @@ Other libraries | |||
|
|||
* Fixed a bug where the random key would not be deleted from RAM after being generated and written. | |||
|
|||
* :ref:`lib_nrf_rpc`: | |||
|
|||
* This library can use different transports for the nRF RPC group. |
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.
* This library can use different transports for the nRF RPC group. | |
* This library can use different transport implementation for each nRF RPC group. |
or something similar to make it clearer.
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.
Sure, I like your proposition here
include/nrf_rpc/nrf_rpc_ipc.h
Outdated
/** @brief Extern nRF RPC IPC Service transport declaration. | ||
* | ||
* Can be used in header files. It is useful when several nRF RPC group | ||
* are defined amongst different source file but they can share the same |
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.
* are defined amongst different source file but they can share the same | |
* are defined amongst different source files but they can share the same |
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.
Fixed
|
||
/** @brief Sent response to a command as a void. */ | ||
void ser_rsp_send_void(void); | ||
/** @brief Sent response to a command as a void. |
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.
/** @brief Sent response to a command as a void. | |
/** @brief Send response to a command as a void. |
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.
Fixed in all places
@@ -1318,14 +1345,15 @@ NRF_RPC_CBOR_CMD_DECODER(bt_rpc_grp, bt_conn_auth_cb_register_on_remote, | |||
BT_CONN_AUTH_CB_REGISTER_ON_REMOTE_RPC_CMD, | |||
bt_conn_auth_cb_register_on_remote_rpc_handler, NULL); | |||
|
|||
|
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.
Is this blank line needed?
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.
Yes removed
subsys/nrf_rpc/Kconfig
Outdated
range 1 1000 | ||
default 100 | ||
help | ||
Miliseconds to wait for endpoint binding. |
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.
Miliseconds to wait for endpoint binding. | |
Time in miliseconds to wait for endpoint binding. |
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.
Done
subsys/nrf_rpc/Kconfig
Outdated
help | ||
Miliseconds to wait for endpoint binding. | ||
This timeout depends on the time to initialize all the cores | ||
the nRF RPC is going to communicate. |
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.
the nRF RPC is going to communicate. | |
the nRF RPC is going to communicate with. |
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.
Done
subsys/nrf_rpc/Kconfig
Outdated
default 100 | ||
help | ||
Miliseconds to wait for endpoint binding. | ||
This timeout depends on the time to initialize all the cores |
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.
How about saying "remote devices" instead of "cores"?
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.
Done
subsys/nrf_rpc/nrf_rpc_ipc.c
Outdated
ipc_config->used = false; | ||
|
||
LOG_ERR("IPC endpoint bond timeout"); | ||
return translate_error(-NRF_EPIPE); |
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 doesn't look like this error code needed translation (looks like native nRF RPC code).
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.
Good catch. Fixed
include/nrf_rpc/nrf_rpc_ipc.h
Outdated
* NRF_RPC_GROUP_DEFINE(group_2, "Group_2", &nrf_rpc_2, NULL, NULL, NULL); | ||
* | ||
* @param[in] _name nRF RPC IPC Service transport instance name. | ||
* @param[in] _ipc The instance used for the IPC Service to transfer data between cores. |
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.
Shall we say "CPUs" maybe?
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.
Sure. Done
0cfd801
to
d4552c3
Compare
9e4321b
to
73c42c1
Compare
west.yml
Outdated
@@ -109,7 +109,7 @@ manifest: | |||
- name: nrfxlib | |||
repo-path: sdk-nrfxlib | |||
path: nrfxlib | |||
revision: 53e83abe25d1e07443e7179e1cd012bc0238e11a | |||
revision: pull/728/head |
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.
Please update SHA: a5d317a62db9a57d19a1d580346c0cb233cfb7e6
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.
Done
It aligns the nRF RPC IPC Service transport and nRF RPC porting layer to use multi-instance transport instead of single tranport basing on the template. NCSDK-15026 Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
It updates the entropy sample to use the nRF RPC multi-instance transport. NCSDK-15026 Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
This alignes the Bluetooth serialization with changes in the nRF RPC. NCSDK-15026 Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
It adds a documentation for the nRF RPC IPC Service transport. NCSDK-15026 Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
Update changelog with the new nRF RPC IPC transport and support for different transports per each group. NCSDK-15026 Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
Updates nrfxlib version with changes in the nRF RPC library. NCSDK-15026 Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
73c42c1
to
58727cc
Compare
It adds nRF RPC IPC Service no-copy transport. Also it alignes the nRF RPC library port and all client libraries or samples with introduced multi-instance transport. It means that each nRF RPC group can use different transport.