* [PATCH 1/7] android/client: Omit length parameter for hex string data
@ 2014-11-25 10:13 Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 2/7] android/client: Add support for gattc set_adv_data cmd Grzegorz Kolodziejczyk
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
There is no need to pass length parameter to functions. Length of hex
strings is automatically calculated from string in GET_VERIFY_HEX_STRING
macro.
---
android/client/if-gatt.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 2b874c3..112a49d 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1729,10 +1729,8 @@ static void scan_filter_add_remove_p(int argc, const char **argv)
VERIFY_UUID(9, &p_uuid_mask);
VERIFY_ADDR_ARG(10, &bd_addr);
VERIFY_ADDR_TYPE(11, addr_type);
- VERIFY_DATA_LEN(12, data_len);
- GET_VERIFY_HEX_STRING(13, p_data, data_len);
- VERIFY_MASK_LEN(14, mask_len);
- GET_VERIFY_HEX_STRING(15, p_mask, mask_len);
+ GET_VERIFY_HEX_STRING(12, p_data, data_len);
+ GET_VERIFY_HEX_STRING(13, p_mask, mask_len);
EXEC(if_gatt->client->scan_filter_add_remove, client_if, action,
filt_type, filt_index, company_id, company_id_mask,
@@ -1862,7 +1860,7 @@ static struct method client_methods[] = {
STD_METHODCH(scan_filter_add_remove, "<client_if> <action> <filt_type>"
" <filt_index> <company_id> <company_id_mask>"
" [<p_uuid>] <p_uuid_mask> <addr> <addr_type>"
- " <data_len> [<p_data>] <mask_len> [<p_mask>]"),
+ " [<p_data>] [<p_mask>]"),
STD_METHODCH(scan_filter_clear, "<client_if> <filt_index>"),
STD_METHODCH(scan_filter_enable, "<client_if> [<enable>]"),
#else
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/7] android/client: Add support for gattc set_adv_data cmd
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
@ 2014-11-25 10:13 ` Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 3/7] android/client: Add support for gattc configure_mtu cmd Grzegorz Kolodziejczyk
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
---
android/client/if-gatt.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 112a49d..42dd119 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1784,6 +1784,57 @@ static void scan_filter_enable_p(int argc, const char **argv)
EXEC(if_gatt->client->scan_filter_clear, client_if, enable);
}
+
+/* set advertising data */
+static void set_adv_data_c(int argc, const char **argv,
+ enum_func *enum_func, void **user)
+{
+ if (argc == 2) {
+ *user = client_if_str;
+ *enum_func = enum_one_string;
+ }
+}
+
+static void set_adv_data_p(int argc, const char **argv)
+{
+ int client_if;
+ bool set_scan_rsp;
+ bool include_name, include_txpower;
+ int min_interval, max_interval;
+ int appearance;
+ uint16_t manufacturer_len;
+ uint8_t manufacturer_data[100];
+ uint16_t service_data_len;
+ uint8_t service_data[100];
+ uint16_t service_uuid_len;
+ uint8_t service_uuid[100];
+
+ RETURN_IF_NULL(if_gatt);
+ VERIFY_CLIENT_IF(2, client_if);
+
+ /* set scan response */
+ if (argc >= 4)
+ set_scan_rsp = atoi(argv[3]);
+ /* include name */
+ if (argc >= 5)
+ include_name = atoi(argv[4]);
+ /* include txpower */
+ if (argc >= 6)
+ include_txpower = atoi(argv[5]);
+
+ VERIFY_MIN_INTERVAL(6, min_interval);
+ VERIFY_MAX_INTERVAL(7, max_interval);
+ VERIFY_APPEARANCE(8, appearance);
+ GET_VERIFY_HEX_STRING(9, manufacturer_data, manufacturer_len);
+ GET_VERIFY_HEX_STRING(10, service_data, service_data_len);
+ GET_VERIFY_HEX_STRING(11, service_uuid, service_uuid_len);
+
+ EXEC(if_gatt->client->set_adv_data, client_if, set_scan_rsp,
+ include_name, include_txpower, min_interval, max_interval,
+ appearance, manufacturer_len, (char *) manufacturer_data,
+ service_data_len, (char *) service_data, service_uuid_len,
+ (char *) service_uuid);
+}
#endif
/* get_device_type */
@@ -1863,6 +1914,10 @@ static struct method client_methods[] = {
" [<p_data>] [<p_mask>]"),
STD_METHODCH(scan_filter_clear, "<client_if> <filt_index>"),
STD_METHODCH(scan_filter_enable, "<client_if> [<enable>]"),
+ STD_METHODCH(set_adv_data, "<client_if> [<set_scan_rsp>] <include_name>"
+ " [<include_txpower>] <min_interval> <max_interval>"
+ " <appearance> [<manufacturer_data>] [<service_data>]"
+ " [<service_uuid>]"),
#else
STD_METHODCH(scan, "<client_if> [1|0]"),
STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/7] android/client: Add support for gattc configure_mtu cmd
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 2/7] android/client: Add support for gattc set_adv_data cmd Grzegorz Kolodziejczyk
@ 2014-11-25 10:13 ` Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 4/7] android/client: Add support for gattc conn_parameter_update cmd Grzegorz Kolodziejczyk
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
---
android/client/if-gatt.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 42dd119..9681bc2 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1835,6 +1835,28 @@ static void set_adv_data_p(int argc, const char **argv)
service_data_len, (char *) service_data, service_uuid_len,
(char *) service_uuid);
}
+
+/* configure mtu */
+static void configure_mtu_c(int argc, const char **argv,
+ enum_func *enum_func, void **user)
+{
+ if (argc == 2) {
+ *user = conn_id_str;
+ *enum_func = enum_one_string;
+ }
+}
+
+static void configure_mtu_p(int argc, const char **argv)
+{
+ int conn_id;
+ int mtu;
+
+ RETURN_IF_NULL(if_gatt);
+ VERIFY_CONN_ID(2, conn_id);
+ VERIFY_MTU(3, mtu);
+
+ EXEC(if_gatt->client->configure_mtu, conn_id, mtu);
+}
#endif
/* get_device_type */
@@ -1918,6 +1940,7 @@ static struct method client_methods[] = {
" [<include_txpower>] <min_interval> <max_interval>"
" <appearance> [<manufacturer_data>] [<service_data>]"
" [<service_uuid>]"),
+ STD_METHODCH(configure_mtu, "<conn_id> <mtu>"),
#else
STD_METHODCH(scan, "<client_if> [1|0]"),
STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/7] android/client: Add support for gattc conn_parameter_update cmd
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 2/7] android/client: Add support for gattc set_adv_data cmd Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 3/7] android/client: Add support for gattc configure_mtu cmd Grzegorz Kolodziejczyk
@ 2014-11-25 10:13 ` Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 5/7] android/client: Add support for gattc set_scan_parameters cmd Grzegorz Kolodziejczyk
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
---
android/client/if-gatt.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 9681bc2..eb54ddd 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1857,6 +1857,34 @@ static void configure_mtu_p(int argc, const char **argv)
EXEC(if_gatt->client->configure_mtu, conn_id, mtu);
}
+
+/* con parameter update */
+static void conn_parameter_update_c(int argc, const char **argv,
+ enum_func *enum_func, void **user)
+{
+ if (argc == 2) {
+ *user = last_addr;
+ *enum_func = enum_one_string;
+ }
+}
+
+static void conn_parameter_update_p(int argc, const char **argv)
+{
+ bt_bdaddr_t bd_addr;
+ int min_interval, max_interval;
+ int latency;
+ int timeout;
+
+ RETURN_IF_NULL(if_gatt);
+ VERIFY_ADDR_ARG(2, &bd_addr);
+ VERIFY_MIN_INTERVAL(3, min_interval);
+ VERIFY_MAX_INTERVAL(4, max_interval);
+ VERIFY_LATENCY(5, latency);
+ VERIFY_TIMEOUT(6, timeout);
+
+ EXEC(if_gatt->client->conn_parameter_update, &bd_addr, min_interval,
+ max_interval, latency, timeout);
+}
#endif
/* get_device_type */
@@ -1941,6 +1969,8 @@ static struct method client_methods[] = {
" <appearance> [<manufacturer_data>] [<service_data>]"
" [<service_uuid>]"),
STD_METHODCH(configure_mtu, "<conn_id> <mtu>"),
+ STD_METHODCH(conn_parameter_update, "<bd_addr> <min_interval>"
+ " <max_interval> <latency> <timeout>"),
#else
STD_METHODCH(scan, "<client_if> [1|0]"),
STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/7] android/client: Add support for gattc set_scan_parameters cmd
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
` (2 preceding siblings ...)
2014-11-25 10:13 ` [PATCH 4/7] android/client: Add support for gattc conn_parameter_update cmd Grzegorz Kolodziejczyk
@ 2014-11-25 10:13 ` Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 6/7] android/client: Add support for gattc multi_adv_enable cmd Grzegorz Kolodziejczyk
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
---
android/client/if-gatt.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index eb54ddd..920b243 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1885,6 +1885,19 @@ static void conn_parameter_update_p(int argc, const char **argv)
EXEC(if_gatt->client->conn_parameter_update, &bd_addr, min_interval,
max_interval, latency, timeout);
}
+
+/* set scan parameters */
+static void set_scan_parameters_p(int argc, const char **argv)
+{
+ int scan_interval;
+ int scan_window;
+
+ RETURN_IF_NULL(if_gatt);
+ VERIFY_SCAN_INTERVAL(2, scan_interval);
+ VERIFY_SCAN_WINDOW(3, scan_window);
+
+ EXEC(if_gatt->client->set_scan_parameters, scan_interval, scan_window);
+}
#endif
/* get_device_type */
@@ -1971,6 +1984,7 @@ static struct method client_methods[] = {
STD_METHODCH(configure_mtu, "<conn_id> <mtu>"),
STD_METHODCH(conn_parameter_update, "<bd_addr> <min_interval>"
" <max_interval> <latency> <timeout>"),
+ STD_METHODH(set_scan_parameters, "<scan_inverval> <scan_window>"),
#else
STD_METHODCH(scan, "<client_if> [1|0]"),
STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 6/7] android/client: Add support for gattc multi_adv_enable cmd
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
` (3 preceding siblings ...)
2014-11-25 10:13 ` [PATCH 5/7] android/client: Add support for gattc set_scan_parameters cmd Grzegorz Kolodziejczyk
@ 2014-11-25 10:13 ` Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 7/7] android/client: Add support for gattc multi_adv_update cmd Grzegorz Kolodziejczyk
2014-11-27 17:25 ` [PATCH 1/7] android/client: Omit length parameter for hex string data Szymon Janc
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
---
android/client/if-gatt.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 920b243..c94aaea 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1898,6 +1898,38 @@ static void set_scan_parameters_p(int argc, const char **argv)
EXEC(if_gatt->client->set_scan_parameters, scan_interval, scan_window);
}
+
+/* enable multi advertising */
+static void multi_adv_enable_c(int argc, const char **argv,
+ enum_func *enum_func, void **user)
+{
+ if (argc == 2) {
+ *user = client_if_str;
+ *enum_func = enum_one_string;
+ }
+}
+
+static void multi_adv_enable_p(int argc, const char **argv)
+{
+ int client_if;
+ int min_interval, max_interval;
+ int adv_type;
+ int chnl_map;
+ int tx_power;
+ int timeout_s;
+
+ RETURN_IF_NULL(if_gatt);
+ VERIFY_CLIENT_IF(2, client_if);
+ VERIFY_MIN_INTERVAL(3, min_interval);
+ VERIFY_MAX_INTERVAL(4, max_interval);
+ VERIFY_ADV_TYPE(5, adv_type);
+ VERIFY_CHNL_MAP(6, chnl_map);
+ VERIFY_TX_POWER(7, tx_power);
+ VERIFY_TIMEOUT_S(8, timeout_s);
+
+ EXEC(if_gatt->client->multi_adv_enable, client_if, min_interval,
+ max_interval, adv_type, chnl_map, tx_power, timeout_s);
+}
#endif
/* get_device_type */
@@ -1985,6 +2017,9 @@ static struct method client_methods[] = {
STD_METHODCH(conn_parameter_update, "<bd_addr> <min_interval>"
" <max_interval> <latency> <timeout>"),
STD_METHODH(set_scan_parameters, "<scan_inverval> <scan_window>"),
+ STD_METHODCH(multi_adv_enable, "<client_if> <min_interval>"
+ " <max_interval> <adv_type> <chnl_map> <tx_power>"
+ " <timeout_s>"),
#else
STD_METHODCH(scan, "<client_if> [1|0]"),
STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 7/7] android/client: Add support for gattc multi_adv_update cmd
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
` (4 preceding siblings ...)
2014-11-25 10:13 ` [PATCH 6/7] android/client: Add support for gattc multi_adv_enable cmd Grzegorz Kolodziejczyk
@ 2014-11-25 10:13 ` Grzegorz Kolodziejczyk
2014-11-27 17:25 ` [PATCH 1/7] android/client: Omit length parameter for hex string data Szymon Janc
6 siblings, 0 replies; 8+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-25 10:13 UTC (permalink / raw)
To: linux-bluetooth
---
android/client/if-gatt.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index c94aaea..fa17eb2 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1930,6 +1930,38 @@ static void multi_adv_enable_p(int argc, const char **argv)
EXEC(if_gatt->client->multi_adv_enable, client_if, min_interval,
max_interval, adv_type, chnl_map, tx_power, timeout_s);
}
+
+/* update multi advertiser */
+static void multi_adv_update_c(int argc, const char **argv,
+ enum_func *enum_func, void **user)
+{
+ if (argc == 2) {
+ *user = client_if_str;
+ *enum_func = enum_one_string;
+ }
+}
+
+static void multi_adv_update_p(int argc, const char **argv)
+{
+ int client_if;
+ int min_interval, max_interval;
+ int adv_type;
+ int chnl_map;
+ int tx_power;
+ int timeout_s;
+
+ RETURN_IF_NULL(if_gatt);
+ VERIFY_CLIENT_IF(2, client_if);
+ VERIFY_MIN_INTERVAL(3, min_interval);
+ VERIFY_MAX_INTERVAL(4, max_interval);
+ VERIFY_ADV_TYPE(5, adv_type);
+ VERIFY_CHNL_MAP(6, chnl_map);
+ VERIFY_TX_POWER(7, tx_power);
+ VERIFY_TIMEOUT_S(8, timeout_s);
+
+ EXEC(if_gatt->client->multi_adv_update, client_if, min_interval,
+ max_interval, adv_type, chnl_map, tx_power, timeout_s);
+}
#endif
/* get_device_type */
@@ -2020,6 +2052,9 @@ static struct method client_methods[] = {
STD_METHODCH(multi_adv_enable, "<client_if> <min_interval>"
" <max_interval> <adv_type> <chnl_map> <tx_power>"
" <timeout_s>"),
+ STD_METHODCH(multi_adv_update, "<client_if> <min_interval>"
+ " <max_interval> <adv_type> <chnl_map> <tx_power>"
+ " <timeout_s>"),
#else
STD_METHODCH(scan, "<client_if> [1|0]"),
STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
--
1.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/7] android/client: Omit length parameter for hex string data
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
` (5 preceding siblings ...)
2014-11-25 10:13 ` [PATCH 7/7] android/client: Add support for gattc multi_adv_update cmd Grzegorz Kolodziejczyk
@ 2014-11-27 17:25 ` Szymon Janc
6 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2014-11-27 17:25 UTC (permalink / raw)
To: Grzegorz Kolodziejczyk; +Cc: linux-bluetooth
Hi Grzegorz,
On Tuesday 25 of November 2014 11:13:10 Grzegorz Kolodziejczyk wrote:
> There is no need to pass length parameter to functions. Length of hex
> strings is automatically calculated from string in GET_VERIFY_HEX_STRING
> macro.
> ---
> android/client/if-gatt.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
> index 2b874c3..112a49d 100644
> --- a/android/client/if-gatt.c
> +++ b/android/client/if-gatt.c
> @@ -1729,10 +1729,8 @@ static void scan_filter_add_remove_p(int argc, const char **argv)
> VERIFY_UUID(9, &p_uuid_mask);
> VERIFY_ADDR_ARG(10, &bd_addr);
> VERIFY_ADDR_TYPE(11, addr_type);
> - VERIFY_DATA_LEN(12, data_len);
> - GET_VERIFY_HEX_STRING(13, p_data, data_len);
> - VERIFY_MASK_LEN(14, mask_len);
> - GET_VERIFY_HEX_STRING(15, p_mask, mask_len);
> + GET_VERIFY_HEX_STRING(12, p_data, data_len);
> + GET_VERIFY_HEX_STRING(13, p_mask, mask_len);
>
> EXEC(if_gatt->client->scan_filter_add_remove, client_if, action,
> filt_type, filt_index, company_id, company_id_mask,
> @@ -1862,7 +1860,7 @@ static struct method client_methods[] = {
> STD_METHODCH(scan_filter_add_remove, "<client_if> <action> <filt_type>"
> " <filt_index> <company_id> <company_id_mask>"
> " [<p_uuid>] <p_uuid_mask> <addr> <addr_type>"
> - " <data_len> [<p_data>] <mask_len> [<p_mask>]"),
> + " [<p_data>] [<p_mask>]"),
> STD_METHODCH(scan_filter_clear, "<client_if> <filt_index>"),
> STD_METHODCH(scan_filter_enable, "<client_if> [<enable>]"),
> #else
All patches applied, thanks.
--
Best regards,
Szymon Janc
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-11-27 17:25 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-25 10:13 [PATCH 1/7] android/client: Omit length parameter for hex string data Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 2/7] android/client: Add support for gattc set_adv_data cmd Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 3/7] android/client: Add support for gattc configure_mtu cmd Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 4/7] android/client: Add support for gattc conn_parameter_update cmd Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 5/7] android/client: Add support for gattc set_scan_parameters cmd Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 6/7] android/client: Add support for gattc multi_adv_enable cmd Grzegorz Kolodziejczyk
2014-11-25 10:13 ` [PATCH 7/7] android/client: Add support for gattc multi_adv_update cmd Grzegorz Kolodziejczyk
2014-11-27 17:25 ` [PATCH 1/7] android/client: Omit length parameter for hex string data Szymon Janc
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox