diff --git a/mesh/config-client.c b/mesh/config-client.c
index be089a0..5490de3 100644
--- a/mesh/config-client.c
+++ b/mesh/config-client.c
bt_shell_printf("Bad unicast address %s: "
"expected format 4 digit hex\n", argv[1]);
target = UNASSIGNED_ADDRESS;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
} else {
bt_shell_printf("Configuring node %4.4x\n", dst);
target = dst;
set_menu_prompt("config", argv[1]);
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
}
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(opcode, msg);
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send command (opcode 0x%x)\n",
opcode);
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_composition_get(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
node = node_find_by_addr(target);
if (!node)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
n = mesh_opcode_set(OP_DEV_COMP_GET, msg);
/* By default, use page 0 */
msg[n++] = (read_input_parameters(argc, argv) == 1) ? parms[0] : 0;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"GET NODE COMPOSITION\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_net_key(int argc, char *argv[], uint32_t opcode)
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(opcode, msg);
if (read_input_parameters(argc, argv) != 1) {
bt_shell_printf("Bad arguments %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
node = node_find_by_addr(target);
if (!node) {
bt_shell_printf("Node %4.4x\n not found", target);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
net_idx = parms[0];
if (!key) {
bt_shell_printf("NetKey with index %4.4x not found\n",
net_idx);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
put_le16(net_idx, &msg[n]);
if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"%s NET KEY\"\n",
opcode == OP_NETKEY_ADD ? "ADD" : "DEL");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
if (opcode != OP_NETKEY_DELETE) {
"netKeys");
}
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_netkey_add(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
if (read_input_parameters(argc, argv) != 1) {
bt_shell_printf("Bad arguments %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
node = node_find_by_addr(target);
if (!node) {
bt_shell_printf("Node %4.4x\n not found", target);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(opcode, msg);
net_idx = keys_app_key_get_bound(app_idx);
if (net_idx == NET_IDX_INVALID) {
bt_shell_printf("AppKey with index %4.4x not found\n", app_idx);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
msg[n++] = net_idx & 0xf;
if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"ADD %s KEY\"\n",
opcode == OP_APPKEY_ADD ? "ADD" : "DEL");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
if (opcode != OP_APPKEY_DELETE) {
prov_db_node_keys(node, node_get_app_keys(node),
"appKeys");
}
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_appkey_add(int argc, char *argv[])
int parm_cnt;
if (!verify_config_target(target))
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 3 && parm_cnt != 4) {
bt_shell_printf("Bad arguments\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_MODEL_APP_BIND, msg);
n += 2;
}
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"MODEL APP BIND\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_ident_set(int argc, char *argv[])
int parm_cnt;
if (!verify_config_target(target))
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
n = mesh_opcode_set(OP_NODE_IDENTITY_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 2) {
bt_shell_printf("bad arguments\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
put_le16(parms[0], msg + n);
n += 2;
msg[n++] = parms[1];
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET IDENTITY\"\n");
+ return;
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_ident_get(int argc, char *argv[])
int parm_cnt;
if (!verify_config_target(target))
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
n = mesh_opcode_set(OP_NODE_IDENTITY_GET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 1) {
bt_shell_printf("bad arguments\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
put_le16(parms[0], msg + n);
n += 2;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"GET IDENTITY\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_proxy_set(int argc, char *argv[])
int parm_cnt;
if (!verify_config_target(target))
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
n = mesh_opcode_set(OP_CONFIG_PROXY_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 1) {
bt_shell_printf("bad arguments");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
msg[n++] = parms[0];
msg[n++] = parms[1];
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET PROXY\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_proxy_get(int argc, char *argv[])
int parm_cnt;
if (!verify_config_target(target))
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
n = mesh_opcode_set(OP_CONFIG_RELAY_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 3) {
bt_shell_printf("bad arguments\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
msg[n++] = parms[0];
msg[n++] = (parms[1] << 5) | parms[2];
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET RELAY\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_relay_get(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_CONFIG_DEFAULT_TTL_SET, msg);
msg[n++] = ttl;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET_DEFAULT TTL\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_pub_set(int argc, char *argv[])
int parm_cnt;
if (!verify_config_target(target))
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
n = mesh_opcode_set(OP_CONFIG_MODEL_PUB_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 6 && parm_cnt != 7) {
bt_shell_printf("Bad arguments\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
put_le16(parms[0], msg + n);
n += 2;
}
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET MODEL PUBLICATION\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_pub_get(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_CONFIG_MODEL_PUB_GET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 2 && parm_cnt != 3) {
bt_shell_printf("Bad arguments: %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* Element Address */
n += 2;
}
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"GET MODEL PUBLICATION\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_sub_add(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_CONFIG_MODEL_SUB_ADD, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 3) {
bt_shell_printf("Bad arguments: %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* Per Mesh Profile 4.3.2.19 */
put_le16(parms[2], msg + n);
n += 2;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"ADD SUBSCRIPTION\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_sub_get(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_CONFIG_MODEL_SUB_GET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 2) {
bt_shell_printf("Bad arguments: %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* Per Mesh Profile 4.3.2.27 */
put_le16(parms[1], msg + n);
n += 2;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"GET SUB GET\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_mod_appidx_get(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_MODEL_APP_GET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 2) {
bt_shell_printf("Bad arguments: %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* Per Mesh Profile 4.3.2.49 */
put_le16(parms[1], msg + n);
n += 2;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"GET APP GET\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_hb_pub_set(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_CONFIG_HEARTBEAT_PUB_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 5) {
bt_shell_printf("Bad arguments: %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* Per Mesh Profile 4.3.2.62 */
put_le16(parms[4], msg + n);
n += 2;
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET HEARTBEAT PUBLISH\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_hb_pub_get(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_CONFIG_HEARTBEAT_SUB_SET, msg);
parm_cnt = read_input_parameters(argc, argv);
if (parm_cnt != 3) {
bt_shell_printf("Bad arguments: %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* Per Mesh Profile 4.3.2.65 */
/* Period log */
msg[n++] = parms[2];
- if (!config_send(msg, n))
+ if (!config_send(msg, n)) {
bt_shell_printf("Failed to send \"SET HEARTBEAT SUBSCRIBE\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_hb_sub_get(int argc, char *argv[])
diff --git a/mesh/main.c b/mesh/main.c
index b5ec4bc..3a35fab 100644
--- a/mesh/main.c
+++ b/mesh/main.c
bt_shell_printf("Failed to connect: %s\n", error.name);
dbus_error_free(&error);
set_connected_device(NULL);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
bt_shell_printf("Connection successful\n");
set_connected_device(proxy);
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void update_device_info(GDBusProxy *proxy)
bt_shell_printf("Failed to %s discovery: %s\n",
enable == TRUE ? "start" : "stop", error.name);
dbus_error_free(&error);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
bt_shell_printf("Discovery %s\n", enable == TRUE ? "started" : "stopped");
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static struct mesh_device *find_device_by_proxy(GList *source,
struct adapter *adapter = list->data;
print_adapter(adapter->proxy, NULL);
}
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_show(int argc, char *argv[])
if (argc < 2 || !strlen(argv[1])) {
if (check_default_ctrl() == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
proxy = default_ctrl->proxy;
} else {
if (!adapter) {
bt_shell_printf("Controller %s not available\n",
argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
proxy = adapter->proxy;
}
if (g_dbus_proxy_get_property(proxy, "Address", &iter) == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
dbus_message_iter_get_basic(&iter, &address);
bt_shell_printf("Controller %s\n", address);
print_uuids(proxy);
print_property(proxy, "Modalias");
print_property(proxy, "Discovering");
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_select(int argc, char *argv[])
adapter = find_ctrl_by_address(ctrl_list, argv[1]);
if (!adapter) {
bt_shell_printf("Controller %s not available\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
if (default_ctrl && default_ctrl->proxy == adapter->proxy)
- return;
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
forget_mesh_devices();
default_ctrl = adapter;
print_adapter(adapter->proxy, NULL);
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void generic_callback(const DBusError *error, void *user_data)
{
char *str = user_data;
- if (dbus_error_is_set(error))
+ if (dbus_error_is_set(error)) {
bt_shell_printf("Failed to set %s: %s\n", str, error->name);
- else
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ } else {
bt_shell_printf("Changing %s succeeded\n", str);
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+ }
}
static void cmd_power(int argc, char *argv[])
char *str;
if (parse_argument_on_off(argc, argv, &powered) == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
if (check_default_ctrl() == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
str = g_strdup_printf("power %s", powered == TRUE ? "on" : "off");
return;
g_free(str);
+
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
static void append_variant(DBusMessageIter *iter, int type, void *val)
if (dbus_set_error_from_message(&error, message) == TRUE) {
bt_shell_printf("SetDiscoveryFilter failed: %s\n", error.name);
dbus_error_free(&error);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
bt_shell_printf("SetDiscoveryFilter success\n");
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static gint filtered_scan_rssi = DISTANCE_VAL_INVALID;
args.duplicate = TRUE;
if (check_default_ctrl() == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
if (g_dbus_proxy_method_call(default_ctrl->proxy, "SetDiscoveryFilter",
set_discovery_filter_setup, set_discovery_filter_reply,
&args, NULL) == FALSE) {
bt_shell_printf("Failed to set discovery filter\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
}
filtered_scan_uuids = g_strdupv(filters);
if (!filtered_scan_uuids) {
bt_shell_printf("Failed to parse input\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
filtered_scan_uuids_len = g_strv_length(filtered_scan_uuids);
const char *method;
if (parse_argument_on_off(argc, argv, &enable) == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
if (check_default_ctrl() == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
if (enable == TRUE) {
discover_mesh = false;
GUINT_TO_POINTER(enable), NULL) == FALSE) {
bt_shell_printf("Failed to %s discovery\n",
enable == TRUE ? "start" : "stop");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
}
proxy = connection.device;
if (!proxy)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
if (g_dbus_proxy_get_property(proxy, "Address", &iter) == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
dbus_message_iter_get_basic(&iter, &address);
bt_shell_printf("Device %s\n", address);
print_property(proxy, "ServiceData");
print_property(proxy, "RSSI");
print_property(proxy, "TxPower");
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static const char *security2str(uint8_t level)
level = strtol(argv[1], &end, 10);
if (end == argv[1] || !prov_set_sec_level(level)) {
bt_shell_printf("Invalid security level %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
done:
bt_shell_printf("Provision Security Level set to %u (%s)\n",
prov_get_sec_level(),
security2str(prov_get_sec_level()));
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_connect(int argc, char *argv[])
char *filters[] = { MESH_PROXY_SVC_UUID, NULL };
if (check_default_ctrl() == FALSE)
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
memset(&connection, 0, sizeof(connection));
if (end == argv[1]) {
connection.net_idx = NET_IDX_INVALID;
bt_shell_printf("Invalid network index %s\n", argv[1]);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
if (argc > 2)
if (g_dbus_proxy_method_call(default_ctrl->proxy,
"StartDiscovery", NULL, start_discovery_reply,
- GUINT_TO_POINTER(TRUE), NULL) == FALSE)
+ GUINT_TO_POINTER(TRUE), NULL) == FALSE) {
bt_shell_printf("Failed to start mesh proxy discovery\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
g_dbus_proxy_method_call(default_ctrl->proxy, "StartDiscovery",
NULL, NULL, NULL, NULL);
if (dbus_set_error_from_message(&error, message) == TRUE) {
bt_shell_printf("Failed to disconnect: %s\n", error.name);
dbus_error_free(&error);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
set_connected_device(NULL);
if (g_dbus_proxy_method_call(default_ctrl->proxy,
"StartDiscovery", NULL, start_discovery_reply,
- GUINT_TO_POINTER(TRUE), NULL) == FALSE)
+ GUINT_TO_POINTER(TRUE), NULL) == FALSE) {
bt_shell_printf("Failed to start mesh proxy discovery\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
}
if (dbus_set_error_from_message(&error, message) == TRUE) {
bt_shell_printf("Failed to disconnect: %s\n", error.name);
dbus_error_free(&error);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
bt_shell_printf("Successfully disconnected\n");
if (proxy != connection.device)
- return;
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
set_connected_device(NULL);
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_disconn(int argc, char *argv[])
}
disconnect_device(disconn_reply, connection.device);
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void mesh_prov_done(void *user_data, int status)
bt_shell_printf("Device with UUID %s not found.\n", argv[1]);
bt_shell_printf("Stale services? Remove device and "
"re-discover\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
/* TODO: add command to remove a node from mesh, i.e., "unprovision" */
if (node_is_provisioned(node)) {
bt_shell_printf("Already provisioned with unicast %4.4x\n",
node_get_primary(node));
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
dev = find_device_by_uuid(default_ctrl->mesh_devices,
if (!dev || !dev->proxy) {
bt_shell_printf("Could not find device proxy\n");
memset(connection.dev_uuid, 0, 16);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
proxy = dev->proxy;
proxy, NULL) == FALSE) {
bt_shell_printf("Failed to connect ");
print_device(proxy, NULL);
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
} else {
bt_shell_printf("Trying to connect ");
print_device(proxy, NULL);
static void cmd_print_mesh(int argc, char *argv[])
{
- if (!prov_db_show(mesh_prov_db_filename))
+ if (!prov_db_show(mesh_prov_db_filename)) {
bt_shell_printf("Unavailable\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_print_local(int argc, char *argv[])
{
- if (!prov_db_show(mesh_local_config_filename))
+ if (!prov_db_show(mesh_local_config_filename)) {
bt_shell_printf("Unavailable\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static const struct bt_shell_menu main_menu = {
diff --git a/mesh/onoff-model.c b/mesh/onoff-model.c
index dbbe697..016a6ea 100644
--- a/mesh/onoff-model.c
+++ b/mesh/onoff-model.c
bt_shell_printf("Bad unicast address %s: "
"expected format 4 digit hex\n", argv[1]);
target = UNASSIGNED_ADDRESS;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
} else {
bt_shell_printf("Controlling ON/OFF for node %4.4x\n", dst);
target = dst;
set_menu_prompt("on/off", argv[1]);
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
}
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
node = node_find_by_addr(target);
n = mesh_opcode_set(OP_GENERIC_ONOFF_GET, msg);
- if (!send_cmd(msg, n))
+ if (!send_cmd(msg, n)) {
bt_shell_printf("Failed to send \"GENERIC ON/OFF GET\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static void cmd_set(int argc, char *argv[])
if (IS_UNASSIGNED(target)) {
bt_shell_printf("Destination not set\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
node = node_find_by_addr(target);
if ((read_input_parameters(argc, argv) != 1) &&
parms[0] != 0 && parms[0] != 1) {
bt_shell_printf("Bad arguments: Expecting \"0\" or \"1\"\n");
- return;
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
n = mesh_opcode_set(OP_GENERIC_ONOFF_SET, msg);
msg[n++] = parms[0];
msg[n++] = trans_id++;
- if (!send_cmd(msg, n))
+ if (!send_cmd(msg, n)) {
bt_shell_printf("Failed to send \"GENERIC ON/OFF SET\"\n");
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
static const struct bt_shell_menu onoff_menu = {