Bluetooth: Mesh: shell: Add raw network PDU sending support
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
b0393caeb5
commit
e80881d0b9
1 changed files with 49 additions and 0 deletions
|
@ -17,6 +17,12 @@
|
||||||
#include <bluetooth/bluetooth.h>
|
#include <bluetooth/bluetooth.h>
|
||||||
#include <bluetooth/mesh.h>
|
#include <bluetooth/mesh.h>
|
||||||
|
|
||||||
|
/* Private includes for raw Network & Transport layer access */
|
||||||
|
#include "mesh.h"
|
||||||
|
#include "net.h"
|
||||||
|
#include "transport.h"
|
||||||
|
#include "foundation.h"
|
||||||
|
|
||||||
#define CID_NVAL 0xffff
|
#define CID_NVAL 0xffff
|
||||||
#define CID_LOCAL 0x0002
|
#define CID_LOCAL 0x0002
|
||||||
|
|
||||||
|
@ -613,6 +619,47 @@ static int cmd_appidx(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cmd_net_send(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
struct net_buf_simple *msg = NET_BUF_SIMPLE(32);
|
||||||
|
struct bt_mesh_msg_ctx ctx = {
|
||||||
|
.send_ttl = BT_MESH_TTL_DEFAULT,
|
||||||
|
.net_idx = net.net_idx,
|
||||||
|
.addr = net.dst,
|
||||||
|
.app_idx = net.app_idx,
|
||||||
|
|
||||||
|
};
|
||||||
|
struct bt_mesh_net_tx tx = {
|
||||||
|
.ctx = &ctx,
|
||||||
|
.src = net.local,
|
||||||
|
.xmit = bt_mesh_net_transmit_get(),
|
||||||
|
.sub = bt_mesh_subnet_get(net.net_idx),
|
||||||
|
};
|
||||||
|
size_t len;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tx.sub) {
|
||||||
|
printk("No matching subnet for NetKey Index 0x%04x\n",
|
||||||
|
net.net_idx);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
net_buf_simple_init(msg, 0);
|
||||||
|
len = hex2bin(argv[1], msg->data, net_buf_simple_tailroom(msg) - 4);
|
||||||
|
net_buf_simple_add(msg, len);
|
||||||
|
|
||||||
|
err = bt_mesh_trans_send(&tx, msg, NULL, NULL);
|
||||||
|
if (err) {
|
||||||
|
printk("Failed to send (err %d)\n", err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int cmd_beacon(int argc, char *argv[])
|
static int cmd_beacon(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
u8_t status;
|
u8_t status;
|
||||||
|
@ -1620,6 +1667,8 @@ static const struct shell_cmd mesh_commands[] = {
|
||||||
{ "netidx", cmd_netidx, "[NetIdx]" },
|
{ "netidx", cmd_netidx, "[NetIdx]" },
|
||||||
{ "appidx", cmd_appidx, "[AppIdx]" },
|
{ "appidx", cmd_appidx, "[AppIdx]" },
|
||||||
|
|
||||||
|
{ "net-send", cmd_net_send, "<hex string>" },
|
||||||
|
|
||||||
/* Configuration Client Model operations */
|
/* Configuration Client Model operations */
|
||||||
{ "get-comp", cmd_get_comp, "[page]" },
|
{ "get-comp", cmd_get_comp, "[page]" },
|
||||||
{ "beacon", cmd_beacon, "[val: off, on]" },
|
{ "beacon", cmd_beacon, "[val: off, on]" },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue