Skip to content

Commit

Permalink
samples/rpmsg: add support for multiple instances
Browse files Browse the repository at this point in the history
The current rpmsg_client_sample is a very simple example and
is not designed to handle multiple instances. Add support for
multiple instances, so that the same number of pings are sent
to each instance. The instances can be on one or multiple
remote processors.

Signed-off-by: Suman Anna <[email protected]>
Signed-off-by: Bjorn Andersson <[email protected]>
  • Loading branch information
sumananna authored and andersson committed Aug 13, 2016
1 parent 211e3a9 commit a138c88
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions samples/rpmsg/rpmsg_client_sample.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,24 @@
#define MSG "hello world!"
#define MSG_LIMIT 100

struct instance_data {
int rx_count;
};

static void rpmsg_sample_cb(struct rpmsg_channel *rpdev, void *data, int len,
void *priv, u32 src)
{
int ret;
static int rx_count;
struct instance_data *idata = dev_get_drvdata(&rpdev->dev);

dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n", ++rx_count, src);
dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n",
++idata->rx_count, src);

print_hex_dump(KERN_DEBUG, __func__, DUMP_PREFIX_NONE, 16, 1,
data, len, true);

/* samples should not live forever */
if (rx_count >= MSG_LIMIT) {
if (idata->rx_count >= MSG_LIMIT) {
dev_info(&rpdev->dev, "goodbye!\n");
return;
}
Expand All @@ -50,10 +55,17 @@ static void rpmsg_sample_cb(struct rpmsg_channel *rpdev, void *data, int len,
static int rpmsg_sample_probe(struct rpmsg_channel *rpdev)
{
int ret;
struct instance_data *idata;

dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n",
rpdev->src, rpdev->dst);

idata = devm_kzalloc(&rpdev->dev, sizeof(*idata), GFP_KERNEL);
if (!idata)
return -ENOMEM;

dev_set_drvdata(&rpdev->dev, idata);

/* send a message to our remote processor */
ret = rpmsg_send(rpdev, MSG, strlen(MSG));
if (ret) {
Expand Down

0 comments on commit a138c88

Please sign in to comment.