blob: 6b77efc227f728d949192a3d8ba9eb46dec4f0b9 [file] [log] [blame]
/*
* Copyright 2023 Linaro.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <stdio.h>
#include <stdlib.h>
#include <zephyr/shell/shell.h>
#include <zephyr/drivers/ipm.h>
#include <zephyr/kernel.h>
static void ipm_receive_callback(const struct device *ipmdev, void *user_data,
uint32_t id, volatile void *data)
{
ARG_UNUSED(ipmdev);
ARG_UNUSED(user_data);
printf("Received IPM notification over IVSHMEM\n");
}
int main(void)
{
const struct device *ipm_dev = DEVICE_DT_GET(DT_NODELABEL(ipm_ivshmem0));
ipm_register_callback(ipm_dev, ipm_receive_callback, NULL);
return 0;
}
static int cmd_ipm_send(const struct shell *sh,
size_t argc, char **argv)
{
const struct device *ipm_dev = DEVICE_DT_GET(DT_NODELABEL(ipm_ivshmem0));
int peer_id = strtol(argv[1], NULL, 10);
return ipm_send(ipm_dev, 0, peer_id, NULL, 0);
}
SHELL_STATIC_SUBCMD_SET_CREATE(sub_ivshmem_ipm,
SHELL_CMD_ARG(ivshmem_ipm_send, NULL,
"Send notification to other side using IPM",
cmd_ipm_send, 2, 0),
SHELL_SUBCMD_SET_END);
SHELL_CMD_ARG_REGISTER(ivshmem_ipm_send,
&sub_ivshmem_ipm,
"Send notification to other side using IPM",
cmd_ipm_send, 2, 0);