[mynewt-core] 01/01: Merge pull request #1510 from mkiiskila/ls_dev
This is an automated email from the ASF dual-hosted git repository. marko pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git commit 606bba5372f049fd96fe64cf98306b5ec950d16f Merge: 91b3b74 958bc45 Author: mkiiskila AuthorDate: Wed Nov 14 13:12:06 2018 +0200 Merge pull request #1510 from mkiiskila/ls_dev shell; add ls_dev command to list OS devices. kernel/os/include/os/os_dev.h | 8 kernel/os/src/os_dev.c| 12 sys/shell/src/shell_os.c | 27 +++ 3 files changed, 47 insertions(+)
[GitHub] mkiiskila closed pull request #1510: shell; add ls_dev command to list OS devices.
mkiiskila closed pull request #1510: shell; add ls_dev command to list OS devices. URL: https://github.com/apache/mynewt-core/pull/1510 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/kernel/os/include/os/os_dev.h b/kernel/os/include/os/os_dev.h index c05f6f251f..1dc8f27cea 100644 --- a/kernel/os/include/os/os_dev.h +++ b/kernel/os/include/os/os_dev.h @@ -253,6 +253,14 @@ int os_dev_close(struct os_dev *dev); */ void os_dev_reset(void); +/** + * Walk through all devices, calling callback for every device. + * + * @param walk_func Function to call + * @aparm arg Argument to pass to walk_func + */ +void os_dev_walk(int (*walk_func)(struct os_dev *, void *), void *arg); + #ifdef __cplusplus } #endif diff --git a/kernel/os/src/os_dev.c b/kernel/os/src/os_dev.c index 9c10ed160f..1c8db39ad2 100644 --- a/kernel/os/src/os_dev.c +++ b/kernel/os/src/os_dev.c @@ -320,3 +320,15 @@ os_dev_reset(void) STAILQ_INIT(_os_dev_list); } +void +os_dev_walk(int (*walk_func)(struct os_dev *, void *), void *arg) +{ +struct os_dev *dev; + +STAILQ_FOREACH(dev, _os_dev_list, od_next) { +if (walk_func(dev, arg)) { +break; +} +} +} + diff --git a/sys/shell/src/shell_os.c b/sys/shell/src/shell_os.c index 08a5fde23e..3c325f8e00 100644 --- a/sys/shell/src/shell_os.c +++ b/sys/shell/src/shell_os.c @@ -174,6 +174,22 @@ shell_os_reset_cmd(int argc, char **argv) return 0; } +static int +shell_os_ls_dev(struct os_dev *dev, void *arg) +{ +console_printf("%4d %3x %s\n", + dev->od_open_ref, dev->od_flags, dev->od_name); +return 0; +} + +int +shell_os_ls_dev_cmd(int argc, char **argv) +{ +console_printf("%4s %3s %s\n", "ref", "flg", "name"); +os_dev_walk(shell_os_ls_dev, NULL); +return 0; +} + #if MYNEWT_VAL(SHELL_CMD_HELP) static const struct shell_param tasks_params[] = { {"", "task name"}, @@ -220,6 +236,10 @@ static const struct shell_cmd_help reset_help = { .usage = NULL, .params = reset_params, }; + +static const struct shell_cmd_help ls_dev_help = { +.summary = "list OS devices" +}; #endif static const struct shell_cmd os_commands[] = { @@ -249,6 +269,13 @@ static const struct shell_cmd os_commands[] = { .sc_cmd_func = shell_os_reset_cmd, #if MYNEWT_VAL(SHELL_CMD_HELP) .help = _help, +#endif +}, +{ +.sc_cmd = "lsdev", +.sc_cmd_func = shell_os_ls_dev_cmd, +#if MYNEWT_VAL(SHELL_CMD_HELP) +.help = _dev_help, #endif }, { NULL, NULL, NULL }, This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[mynewt-core] branch master updated (91b3b74 -> 606bba5)
This is an automated email from the ASF dual-hosted git repository. marko pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git. from 91b3b74 Merge pull request #1503 from wes3/nrf_hfxo_request add fce872a shell; add ls_dev command to list OS devices. add 2d04af9 os; add void * argument and breakout option for device walk. add 958bc45 shell; change "ls_dev" command to "lsdev". new 606bba5 Merge pull request #1510 from mkiiskila/ls_dev The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: kernel/os/include/os/os_dev.h | 8 kernel/os/src/os_dev.c| 12 sys/shell/src/shell_os.c | 27 +++ 3 files changed, 47 insertions(+)
[GitHub] vrahane commented on issue #1394: hw/drivers/lis2dh12: Add sensor notifications support to LIS2DH12 driver
vrahane commented on issue #1394: hw/drivers/lis2dh12: Add sensor notifications support to LIS2DH12 driver URL: https://github.com/apache/mynewt-core/pull/1394#issuecomment-438877111 This was merged as part of https://github.com/apache/mynewt-core/pull/1520 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] vrahane closed pull request #1394: hw/drivers/lis2dh12: Add sensor notifications support to LIS2DH12 driver
vrahane closed pull request #1394: hw/drivers/lis2dh12: Add sensor notifications support to LIS2DH12 driver URL: https://github.com/apache/mynewt-core/pull/1394 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h index 82a1e1dd30..9340869da3 100644 --- a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h +++ b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h @@ -77,18 +77,186 @@ extern "C" { #define LIS2DH12_FS_8G 0x20 #define LIS2DH12_FS_16G 0x30 +#define LIS2DH12_CLICK_SRC_IA (1 << 6) +#define LIS2DH12_CLICK_SRC_DCLICK (1 << 5) +#define LIS2DH12_CLICK_SRC_SCLICK (1 << 4) +#define LIS2DH12_CLICK_SRC_SIGN (1 << 3) +#define LIS2DH12_CLICK_SRC_Z(1 << 2) +#define LIS2DH12_CLICK_SRC_Y(1 << 1) +#define LIS2DH12_CLICK_SRC_X(1 << 0) + +#define LIS2DH12_CTRL_REG6_I2_CLICK (1 << 7) +#define LIS2DH12_CTRL_REG6_I2_IA1 (1 << 6) +#define LIS2DH12_CTRL_REG6_I2_IA2 (1 << 5) +#define LIS2DH12_CTRL_REG6_I2_BOOT (1 << 4) +#define LIS2DH12_CTRL_REG6_I2_ACT (1 << 3) +#define LIS2DH12_CTRL_REG6_INT_POLARITY (1 << 1) + +#define LIS2DH12_INT1_IA(1 << 6) +#define LIS2DH12_INT1_ZH(1 << 5) +#define LIS2DH12_INT1_ZL(1 << 4) +#define LIS2DH12_INT1_YH(1 << 3) +#define LIS2DH12_INT1_YL(1 << 2) +#define LIS2DH12_INT1_XH(1 << 1) +#define LIS2DH12_INT1_XL(1 << 0) + +#define LIS2DH12_INT2_IA(1 << 6) +#define LIS2DH12_INT2_ZH(1 << 5) +#define LIS2DH12_INT2_ZL(1 << 4) +#define LIS2DH12_INT2_YH(1 << 3) +#define LIS2DH12_INT2_YL(1 << 2) +#define LIS2DH12_INT2_XH(1 << 1) +#define LIS2DH12_INT2_XL(1 << 0) + +#define LIS2DH12_NOTIF_SRC_INT1_IA (LIS2DH12_INT1_IA) +#define LIS2DH12_NOTIF_SRC_INT1_ZH (LIS2DH12_INT1_ZH) +#define LIS2DH12_NOTIF_SRC_INT1_ZL (LIS2DH12_INT1_ZL) +#define LIS2DH12_NOTIF_SRC_INT1_YH (LIS2DH12_INT1_YH) +#define LIS2DH12_NOTIF_SRC_INT1_YL (LIS2DH12_INT1_YL) +#define LIS2DH12_NOTIF_SRC_INT1_XH (LIS2DH12_INT1_XH) +#define LIS2DH12_NOTIF_SRC_INT1_XL (LIS2DH12_INT1_XL) +#define LIS2DH12_NOTIF_SRC_INT2_IA (LIS2DH12_INT2_IA << 8) +#define LIS2DH12_NOTIF_SRC_INT2_ZH (LIS2DH12_INT2_ZH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_ZL (LIS2DH12_INT2_ZL << 8) +#define LIS2DH12_NOTIF_SRC_INT2_YH (LIS2DH12_INT2_YH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_YL (LIS2DH12_INT2_YL << 8) +#define LIS2DH12_NOTIF_SRC_INT2_XH (LIS2DH12_INT2_XH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_XL (LIS2DH12_INT2_XL << 8) + +#define LIS2DH12_CTRL_REG3_I1_CLICK (1 << 7) +#define LIS2DH12_CTRL_REG3_I1_IA1 (1 << 6) +#define LIS2DH12_CTRL_REG3_I1_IA2 (1 << 5) +#define LIS2DH12_CTRL_REG3_I1_ZYXDA (1 << 4) +#define LIS2DH12_CTRL_REG3_I1_WTM (1 << 2) +#define LIS2DH12_CTRL_REG3_I1_OVERRUN (1 << 1) + +enum lis2dh12_read_mode { +LIS2DH12_READ_M_POLL = 0, +LIS2DH12_READ_M_STREAM = 1, +}; + +struct lis2dh12_notif_cfg { +sensor_event_type_t event; +uint8_t int_num; +uint16_t notif_src; +uint8_t int_cfg; +}; + +struct lis2dh12_tap_settings { +uint8_t en_xs : 1; // Interrupt on X single tap +uint8_t en_ys : 1; // Interrupt on Y single tap +uint8_t en_zs : 1; // Interrupt on Z single tap +uint8_t en_xd : 1; // Interrupt on X double tap +uint8_t en_yd : 1; // Interrupt on Y double tap +uint8_t en_zd : 1; // Interrupt on Z double tap +uint8_t hpf: 1; // High pass filter enable + +/* ths data is 7 bits, fs = +-2g */ +int8_t click_ths; +/* shock is maximum time data can be over threshold to register as tap + LSB = 1/ODR */ +int8_t time_limit; + +/* latency is time between taps in double tap, LSB = 1/ODR */ +uint8_t time_latency; +/* quiet is time after tap data is just below threshold + LSB = 1/ODR */ +uint8_t time_window; +}; + +struct lis2dh12_int_cfg { + uint8_t cfg; + uint8_t ths; + uint8_t dur; +}; + +/* Read mode configuration */ +struct lis2dh12_read_mode_cfg { +enum lis2dh12_read_mode mode; +uint8_t int_num:1; +uint8_t int_cfg; +}; + struct lis2dh12_cfg { uint8_t lc_rate; uint8_t lc_fs; + +uint8_t reference; +/* Tap config */
[GitHub] vrahane closed pull request #1520: Lis2dh12 driver
vrahane closed pull request #1520: Lis2dh12 driver URL: https://github.com/apache/mynewt-core/pull/1520 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h index 7e13fcb9fd..ab4b807148 100644 --- a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h +++ b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h @@ -77,18 +77,191 @@ extern "C" { #define LIS2DH12_FS_8G 0x20 #define LIS2DH12_FS_16G 0x30 +#define LIS2DH12_CLICK_SRC_IA (1 << 6) +#define LIS2DH12_CLICK_SRC_DCLICK (1 << 5) +#define LIS2DH12_CLICK_SRC_SCLICK (1 << 4) +#define LIS2DH12_CLICK_SRC_SIGN (1 << 3) +#define LIS2DH12_CLICK_SRC_Z(1 << 2) +#define LIS2DH12_CLICK_SRC_Y(1 << 1) +#define LIS2DH12_CLICK_SRC_X(1 << 0) + +#define LIS2DH12_CTRL_REG6_I2_CLICK (1 << 7) +#define LIS2DH12_CTRL_REG6_I2_IA1 (1 << 6) +#define LIS2DH12_CTRL_REG6_I2_IA2 (1 << 5) +#define LIS2DH12_CTRL_REG6_I2_BOOT (1 << 4) +#define LIS2DH12_CTRL_REG6_I2_ACT (1 << 3) +#define LIS2DH12_CTRL_REG6_INT_POLARITY (1 << 1) + +/* int1_src */ +#define LIS2DH12_INT1_IA(1 << 6) +#define LIS2DH12_INT1_ZH(1 << 5) +#define LIS2DH12_INT1_ZL(1 << 4) +#define LIS2DH12_INT1_YH(1 << 3) +#define LIS2DH12_INT1_YL(1 << 2) +#define LIS2DH12_INT1_XH(1 << 1) +#define LIS2DH12_INT1_XL(1 << 0) + +/* int2_src */ +#define LIS2DH12_INT2_IA(1 << 6) +#define LIS2DH12_INT2_ZH(1 << 5) +#define LIS2DH12_INT2_ZL(1 << 4) +#define LIS2DH12_INT2_YH(1 << 3) +#define LIS2DH12_INT2_YL(1 << 2) +#define LIS2DH12_INT2_XH(1 << 1) +#define LIS2DH12_INT2_XL(1 << 0) + +/* int_src */ +#define LIS2DH12_NOTIF_SRC_INT1_IA (LIS2DH12_INT1_IA) +#define LIS2DH12_NOTIF_SRC_INT1_ZH (LIS2DH12_INT1_ZH) +#define LIS2DH12_NOTIF_SRC_INT1_ZL (LIS2DH12_INT1_ZL) +#define LIS2DH12_NOTIF_SRC_INT1_YH (LIS2DH12_INT1_YH) +#define LIS2DH12_NOTIF_SRC_INT1_YL (LIS2DH12_INT1_YL) +#define LIS2DH12_NOTIF_SRC_INT1_XH (LIS2DH12_INT1_XH) +#define LIS2DH12_NOTIF_SRC_INT1_XL (LIS2DH12_INT1_XL) +#define LIS2DH12_NOTIF_SRC_INT2_IA (LIS2DH12_INT2_IA << 8) +#define LIS2DH12_NOTIF_SRC_INT2_ZH (LIS2DH12_INT2_ZH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_ZL (LIS2DH12_INT2_ZL << 8) +#define LIS2DH12_NOTIF_SRC_INT2_YH (LIS2DH12_INT2_YH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_YL (LIS2DH12_INT2_YL << 8) +#define LIS2DH12_NOTIF_SRC_INT2_XH (LIS2DH12_INT2_XH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_XL (LIS2DH12_INT2_XL << 8) + +/* int1 pin config - generate either data ready or in */ +#define LIS2DH12_CTRL_REG3_I1_CLICK (1 << 7) +#define LIS2DH12_CTRL_REG3_I1_IA1 (1 << 6) +#define LIS2DH12_CTRL_REG3_I1_IA2 (1 << 5) +#define LIS2DH12_CTRL_REG3_I1_ZYXDA (1 << 4) +#define LIS2DH12_CTRL_REG3_I1_WTM (1 << 2) +#define LIS2DH12_CTRL_REG3_I1_OVERRUN (1 << 1) + +enum lis2dh12_read_mode { +LIS2DH12_READ_M_POLL = 0, +LIS2DH12_READ_M_STREAM = 1, +}; + +struct lis2dh12_notif_cfg { +sensor_event_type_t event; +uint8_t int_num; +uint16_t notif_src; +uint8_t int_cfg; +}; + +struct lis2dh12_tap_settings { +uint8_t en_xs : 1; // Interrupt on X single tap +uint8_t en_ys : 1; // Interrupt on Y single tap +uint8_t en_zs : 1; // Interrupt on Z single tap +uint8_t en_xd : 1; // Interrupt on X double tap +uint8_t en_yd : 1; // Interrupt on Y double tap +uint8_t en_zd : 1; // Interrupt on Z double tap +uint8_t hpf: 1; // High pass filter enable + +/* ths data is 7 bits, fs = +-2g */ +int8_t click_ths; +/* shock is maximum time data can be over threshold to register as tap + LSB = 1/ODR */ +int8_t time_limit; + +/* latency is time between taps in double tap, LSB = 1/ODR */ +uint8_t time_latency; +/* quiet is time after tap data is just below threshold + LSB = 1/ODR */ +uint8_t time_window; +}; + +struct lis2dh12_int_cfg { +uint8_t cfg; +uint8_t ths; +uint8_t dur; +}; + +/* Read mode configuration */ +struct lis2dh12_read_mode_cfg { +enum lis2dh12_read_mode mode; +uint8_t int_num:1; +uint8_t int_cfg; +}; + struct lis2dh12_cfg { uint8_t lc_rate; uint8_t lc_fs; + +
[mynewt-core] branch master updated: Lis2dh12 driver (#1520)
This is an automated email from the ASF dual-hosted git repository. vipulrahane pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git The following commit(s) were added to refs/heads/master by this push: new 151bb20 Lis2dh12 driver (#1520) 151bb20 is described below commit 151bb202f317409319c1ca10ca11ca32d03f866a Author: JustineKH <35044800+justin...@users.noreply.github.com> AuthorDate: Wed Nov 14 16:59:18 2018 -0800 Lis2dh12 driver (#1520) - Add notifications support and various fixes --- .../sensors/lis2dh12/include/lis2dh12/lis2dh12.h | 316 - hw/drivers/sensors/lis2dh12/src/lis2dh12.c | 1472 ++-- hw/drivers/sensors/lis2dh12/src/lis2dh12_priv.h| 37 +- hw/drivers/sensors/lis2dh12/src/lis2dh12_shell.c | 387 + hw/drivers/sensors/lis2dh12/syscfg.yml | 37 +- 5 files changed, 2092 insertions(+), 157 deletions(-) diff --git a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h index 7e13fcb..ab4b807 100644 --- a/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h +++ b/hw/drivers/sensors/lis2dh12/include/lis2dh12/lis2dh12.h @@ -77,18 +77,191 @@ extern "C" { #define LIS2DH12_FS_8G 0x20 #define LIS2DH12_FS_16G 0x30 +#define LIS2DH12_CLICK_SRC_IA (1 << 6) +#define LIS2DH12_CLICK_SRC_DCLICK (1 << 5) +#define LIS2DH12_CLICK_SRC_SCLICK (1 << 4) +#define LIS2DH12_CLICK_SRC_SIGN (1 << 3) +#define LIS2DH12_CLICK_SRC_Z(1 << 2) +#define LIS2DH12_CLICK_SRC_Y(1 << 1) +#define LIS2DH12_CLICK_SRC_X(1 << 0) + +#define LIS2DH12_CTRL_REG6_I2_CLICK (1 << 7) +#define LIS2DH12_CTRL_REG6_I2_IA1 (1 << 6) +#define LIS2DH12_CTRL_REG6_I2_IA2 (1 << 5) +#define LIS2DH12_CTRL_REG6_I2_BOOT (1 << 4) +#define LIS2DH12_CTRL_REG6_I2_ACT (1 << 3) +#define LIS2DH12_CTRL_REG6_INT_POLARITY (1 << 1) + +/* int1_src */ +#define LIS2DH12_INT1_IA(1 << 6) +#define LIS2DH12_INT1_ZH(1 << 5) +#define LIS2DH12_INT1_ZL(1 << 4) +#define LIS2DH12_INT1_YH(1 << 3) +#define LIS2DH12_INT1_YL(1 << 2) +#define LIS2DH12_INT1_XH(1 << 1) +#define LIS2DH12_INT1_XL(1 << 0) + +/* int2_src */ +#define LIS2DH12_INT2_IA(1 << 6) +#define LIS2DH12_INT2_ZH(1 << 5) +#define LIS2DH12_INT2_ZL(1 << 4) +#define LIS2DH12_INT2_YH(1 << 3) +#define LIS2DH12_INT2_YL(1 << 2) +#define LIS2DH12_INT2_XH(1 << 1) +#define LIS2DH12_INT2_XL(1 << 0) + +/* int_src */ +#define LIS2DH12_NOTIF_SRC_INT1_IA (LIS2DH12_INT1_IA) +#define LIS2DH12_NOTIF_SRC_INT1_ZH (LIS2DH12_INT1_ZH) +#define LIS2DH12_NOTIF_SRC_INT1_ZL (LIS2DH12_INT1_ZL) +#define LIS2DH12_NOTIF_SRC_INT1_YH (LIS2DH12_INT1_YH) +#define LIS2DH12_NOTIF_SRC_INT1_YL (LIS2DH12_INT1_YL) +#define LIS2DH12_NOTIF_SRC_INT1_XH (LIS2DH12_INT1_XH) +#define LIS2DH12_NOTIF_SRC_INT1_XL (LIS2DH12_INT1_XL) +#define LIS2DH12_NOTIF_SRC_INT2_IA (LIS2DH12_INT2_IA << 8) +#define LIS2DH12_NOTIF_SRC_INT2_ZH (LIS2DH12_INT2_ZH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_ZL (LIS2DH12_INT2_ZL << 8) +#define LIS2DH12_NOTIF_SRC_INT2_YH (LIS2DH12_INT2_YH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_YL (LIS2DH12_INT2_YL << 8) +#define LIS2DH12_NOTIF_SRC_INT2_XH (LIS2DH12_INT2_XH << 8) +#define LIS2DH12_NOTIF_SRC_INT2_XL (LIS2DH12_INT2_XL << 8) + +/* int1 pin config - generate either data ready or in */ +#define LIS2DH12_CTRL_REG3_I1_CLICK (1 << 7) +#define LIS2DH12_CTRL_REG3_I1_IA1 (1 << 6) +#define LIS2DH12_CTRL_REG3_I1_IA2 (1 << 5) +#define LIS2DH12_CTRL_REG3_I1_ZYXDA (1 << 4) +#define LIS2DH12_CTRL_REG3_I1_WTM (1 << 2) +#define LIS2DH12_CTRL_REG3_I1_OVERRUN (1 << 1) + +enum lis2dh12_read_mode { +LIS2DH12_READ_M_POLL = 0, +LIS2DH12_READ_M_STREAM = 1, +}; + +struct lis2dh12_notif_cfg { +sensor_event_type_t event; +uint8_t int_num; +uint16_t notif_src; +uint8_t int_cfg; +}; + +struct lis2dh12_tap_settings { +uint8_t en_xs : 1; // Interrupt on X single tap +uint8_t en_ys : 1; // Interrupt on Y single tap +uint8_t en_zs : 1; // Interrupt on Z single tap +uint8_t en_xd : 1; // Interrupt on X double tap +uint8_t en_yd : 1; // Interrupt on Y double tap +uint8_t en_zd : 1; // Interrupt on Z double tap +uint8_t hpf: 1; // High pass filter enable + +/* ths data is 7 bits, fs = +-2g */ +int8_t click_ths; +/* shock is maximum time data can be over threshold to register as tap +
[GitHub] vrahane commented on issue #1520: Lis2dh12 driver
vrahane commented on issue #1520: Lis2dh12 driver URL: https://github.com/apache/mynewt-core/pull/1520#issuecomment-438891104 @kasjer and @andrzej-kaczmarek Sorry guys since I squashed and merged, the committers for intermittent commits are not shown. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] mkiiskila opened a new pull request #239: docs; give examples about how to use extrajtagcmd to debug multiple b…
mkiiskila opened a new pull request #239: docs; give examples about how to use extrajtagcmd to debug multiple b… URL: https://github.com/apache/mynewt-newt/pull/239 …oards simultaneously. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] mkiiskila opened a new pull request #1521: hw/scripts; if port was passed as last parameter in --extrajtagcmd,
mkiiskila opened a new pull request #1521: hw/scripts; if port was passed as last parameter in --extrajtagcmd, URL: https://github.com/apache/mynewt-core/pull/1521 and the target uses openocd, PORT was extracted incorrectly. E.g ``` newt target show blinky_stm32f3 targets/blinky_stm32f3 app=apps/blinky bsp=@apache-mynewt-core/hw/bsp/stm32f3discovery build_profile=debug ``` And then: ``` newt debug blinky_stm32f3 --extrajtagcmd="-port 3334" ``` This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[mynewt-nimble] 02/05: [porting][linux] Added required APIs to build glue.c for BLE Mesh app
This is an automated email from the ASF dual-hosted git repository. rymek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git commit 55e2c86357202927d48c5a3b7d437a462030b3cb Author: Mehul Hirpara AuthorDate: Wed Oct 24 17:31:27 2018 +0530 [porting][linux] Added required APIs to build glue.c for BLE Mesh app --- porting/npl/linux/src/os_callout.c | 27 +++ porting/npl/linux/src/os_eventq.cc | 12 porting/npl/linux/src/os_time.c| 7 +++ 3 files changed, 46 insertions(+) diff --git a/porting/npl/linux/src/os_callout.c b/porting/npl/linux/src/os_callout.c index 1804705..d3091fa 100644 --- a/porting/npl/linux/src/os_callout.c +++ b/porting/npl/linux/src/os_callout.c @@ -129,3 +129,30 @@ ble_npl_callout_get_ticks(struct ble_npl_callout *co) { return co->c_ticks; } + +void +ble_npl_callout_set_arg(struct ble_npl_callout *co, void *arg) +{ +co->c_ev.ev_arg = arg; +} + +uint32_t +ble_npl_callout_remaining_ticks(struct ble_npl_callout *co, +ble_npl_time_t now) +{ +ble_npl_time_t rt; +uint32_t exp; + +struct itimerspec its; +timer_gettime(co->c_timer, ); + +exp = its.it_value.tv_sec * 1000; + +if (exp > now) { +rt = exp - now; +} else { +rt = 0; +} + +return rt; +} diff --git a/porting/npl/linux/src/os_eventq.cc b/porting/npl/linux/src/os_eventq.cc index 0415836..2ede70b 100644 --- a/porting/npl/linux/src/os_eventq.cc +++ b/porting/npl/linux/src/os_eventq.cc @@ -46,6 +46,18 @@ ble_npl_eventq_init(struct ble_npl_eventq *evq) evq->q = new wqueue_t(); } +bool +ble_npl_eventq_is_empty(struct ble_npl_eventq *evq) +{ +wqueue_t *q = static_cast(evq->q); + +if (q->size()) { +return 1; +} else { +return 0; +} +} + int ble_npl_eventq_inited(const struct ble_npl_eventq *evq) { diff --git a/porting/npl/linux/src/os_time.c b/porting/npl/linux/src/os_time.c index 613e299..6df2e25 100644 --- a/porting/npl/linux/src/os_time.c +++ b/porting/npl/linux/src/os_time.c @@ -23,6 +23,7 @@ #include "os/os.h" #include "nimble/nimble_npl.h" +#include #include /** @@ -63,3 +64,9 @@ uint32_t ble_npl_time_ticks_to_ms32(ble_npl_time_t ticks) { return ticks; } + +void +ble_npl_time_delay(ble_npl_time_t ticks) +{ +sleep(ble_npl_time_ticks_to_ms32(ticks)/1000); +}
[mynewt-nimble] 04/05: [porting][linux] Added timeout support to Eventq Get API
This is an automated email from the ASF dual-hosted git repository. rymek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git commit 4b5c5ef468ba0840ba22e3bc13e55c6e1736d0b1 Author: Mehul Hirpara AuthorDate: Wed Oct 24 17:56:11 2018 +0530 [porting][linux] Added timeout support to Eventq Get API This change helps to get event from eventq with 0 timeout period. --- porting/npl/linux/src/os_eventq.cc | 7 +-- porting/npl/linux/src/wqueue.h | 18 +- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/porting/npl/linux/src/os_eventq.cc b/porting/npl/linux/src/os_eventq.cc index 2ede70b..a3c4b96 100644 --- a/porting/npl/linux/src/os_eventq.cc +++ b/porting/npl/linux/src/os_eventq.cc @@ -83,8 +83,11 @@ struct ble_npl_event *ble_npl_eventq_get(struct ble_npl_eventq *evq, struct ble_npl_event *ev; wqueue_t *q = static_cast(evq->q); -ev = q->get(); -ev->ev_queued = 0; +ev = q->get(tmo); + +if (ev) { +ev->ev_queued = 0; +} return ev; } diff --git a/porting/npl/linux/src/wqueue.h b/porting/npl/linux/src/wqueue.h index 8eb23b7..0a1e7cc 100644 --- a/porting/npl/linux/src/wqueue.h +++ b/porting/npl/linux/src/wqueue.h @@ -54,13 +54,21 @@ public: pthread_mutex_unlock(_mutex); } -T get() { +T get(uint32_t tmo) { pthread_mutex_lock(_mutex); -while (m_queue.size() == 0) { -pthread_cond_wait(_condv, _mutex); +if (tmo) { +while (m_queue.size() == 0) { +pthread_cond_wait(_condv, _mutex); +} } -T item = m_queue.front(); -m_queue.pop_front(); + +T item = NULL; + +if (m_queue.size() != 0) { +item = m_queue.front(); +m_queue.pop_front(); +} + pthread_mutex_unlock(_mutex); return item; }
[mynewt-newt] branch master updated (4353b71 -> 88ad5de)
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git. from 4353b71 Update newt version: 1.4. --> 1.5.9900 new a1d3d27 resolve: Maintain reverse dependency list per-pkg new 88ad5de resolve: Prune orphan packages during dep resolutn The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: newt/resolve/resolve.go | 158 +++- 1 file changed, 115 insertions(+), 43 deletions(-)
[mynewt-newt] 01/02: resolve: Maintain reverse dependency list per-pkg
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git commit a1d3d2722a36e76779a929fb9c3074dfd9ea26f1 Author: Christopher Collins AuthorDate: Wed Nov 7 09:46:18 2018 -0800 resolve: Maintain reverse dependency list per-pkg Replace `ResolvePackage`'s reference count with a reverse dependency list (implemented as map). This is less error prone, and it allows for package removal to be more efficient. --- newt/resolve/resolve.go | 34 ++ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/newt/resolve/resolve.go b/newt/resolve/resolve.go index a85c97e..02d69f9 100644 --- a/newt/resolve/resolve.go +++ b/newt/resolve/resolve.go @@ -89,9 +89,9 @@ type ResolvePackage struct { depsResolved bool - // Tracks this package's number of dependents. If this number reaches 0, - // this package can be deleted from the resolver. - refCount int + // Tracks this package's dependents (things that depend on us). If this + // map becomes empty, this package can be deleted from the resolver. + revDeps map[*ResolvePackage]struct{} } type ResolveSet struct { @@ -169,6 +169,7 @@ func NewResolvePkg(lpkg *pkg.LocalPackage) *ResolvePackage { Lpkg: lpkg, reqApiMap: map[string]resolveReqApi{}, Deps: map[*ResolvePackage]*ResolveDep{}, + revDeps: map[*ResolvePackage]struct{}{}, } } @@ -187,17 +188,17 @@ func (r *Resolver) resolveDep(dep *pkg.Dependency, depender string) (*pkg.LocalP // @return true if the package's dependency list was // modified. func (rpkg *ResolvePackage) AddDep( - apiPkg *ResolvePackage, api string, expr string) bool { + depPkg *ResolvePackage, api string, expr string) bool { - if dep := rpkg.Deps[apiPkg]; dep != nil { + if dep := rpkg.Deps[depPkg]; dep != nil { if dep.Api != "" && api == "" { dep.Api = api } else { return false } } else { - rpkg.Deps[apiPkg] = { - Rpkg: apiPkg, + rpkg.Deps[depPkg] = { + Rpkg: depPkg, Api: api, Expr: expr, } @@ -212,7 +213,8 @@ func (rpkg *ResolvePackage) AddDep( rpkg.reqApiMap[api] = apiReq } - apiPkg.refCount++ + depPkg.revDeps[rpkg] = struct{}{} + return true } @@ -339,16 +341,16 @@ func (r *Resolver) deletePkg(rpkg *ResolvePackage) error { r.cfg.DeletePkg(rpkg.Lpkg) // If the deleted package is the only depender for any other packages - // (i.e., if any of its dependencies have a reference count of one), delete - // them as well. + // (i.e., if any of its dependencies have only one reverse dependency), + // delete them as well. for rdep, _ := range rpkg.Deps { - if rdep.refCount <= 0 { + if len(rdep.revDeps) == 0 { return util.FmtNewtError( - "package %s unexpectedly has refcount <= 0", + "package %s unexpectedly has 0 reverse dependencies", rdep.Lpkg.FullName()) } - rdep.refCount-- - if rdep.refCount == 0 { + delete(rdep.revDeps, rpkg) + if len(rdep.revDeps) == 0 { if err := r.deletePkg(rdep); err != nil { return nil } @@ -406,12 +408,12 @@ func (r *Resolver) loadDepsForPkg(rpkg *ResolvePackage) (bool, error) { for rdep, _ := range rpkg.Deps { if _, ok := seen[rdep]; !ok { delete(rpkg.Deps, rdep) - rdep.refCount-- + delete(rdep.revDeps, rpkg) changed = true // If we just deleted the last reference to a package, remove the // package entirely from the resolver and syscfg. - if rdep.refCount == 0 { + if len(rdep.revDeps) == 0 { if err := r.deletePkg(rdep); err != nil { return true, err }
[GitHub] ccollins476ad closed issue #233: Circular dependencies may cause extraneous packages to get pulled into build
ccollins476ad closed issue #233: Circular dependencies may cause extraneous packages to get pulled into build URL: https://github.com/apache/mynewt-newt/issues/233 This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[GitHub] ccollins476ad closed pull request #235: resolve: Prune orphan packages during dependency resolution
ccollins476ad closed pull request #235: resolve: Prune orphan packages during dependency resolution URL: https://github.com/apache/mynewt-newt/pull/235 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/newt/resolve/resolve.go b/newt/resolve/resolve.go index a85c97e5..ef13e6a4 100644 --- a/newt/resolve/resolve.go +++ b/newt/resolve/resolve.go @@ -58,6 +58,7 @@ type resolveReqApi struct { type Resolver struct { apis map[string]resolveApi pkgMap map[*pkg.LocalPackage]*ResolvePackage + seedPkgs []*pkg.LocalPackage injectedSettings map[string]string flashMap flash.FlashMap cfg syscfg.Cfg @@ -89,9 +90,9 @@ type ResolvePackage struct { depsResolved bool - // Tracks this package's number of dependents. If this number reaches 0, - // this package can be deleted from the resolver. - refCount int + // Tracks this package's dependents (things that depend on us). If this + // map becomes empty, this package can be deleted from the resolver. + revDeps map[*ResolvePackage]struct{} } type ResolveSet struct { @@ -134,6 +135,7 @@ func newResolver( r := { apis: map[string]resolveApi{}, pkgMap: map[*pkg.LocalPackage]*ResolvePackage{}, + seedPkgs: seedPkgs, injectedSettings: injectedSettings, flashMap: flashMap, cfg: syscfg.NewCfg(), @@ -169,6 +171,7 @@ func NewResolvePkg(lpkg *pkg.LocalPackage) *ResolvePackage { Lpkg: lpkg, reqApiMap: map[string]resolveReqApi{}, Deps: map[*ResolvePackage]*ResolveDep{}, + revDeps: map[*ResolvePackage]struct{}{}, } } @@ -187,17 +190,17 @@ func (r *Resolver) resolveDep(dep *pkg.Dependency, depender string) (*pkg.LocalP // @return true if the package's dependency list was // modified. func (rpkg *ResolvePackage) AddDep( - apiPkg *ResolvePackage, api string, expr string) bool { + depPkg *ResolvePackage, api string, expr string) bool { - if dep := rpkg.Deps[apiPkg]; dep != nil { + if dep := rpkg.Deps[depPkg]; dep != nil { if dep.Api != "" && api == "" { dep.Api = api } else { return false } } else { - rpkg.Deps[apiPkg] = { - Rpkg: apiPkg, + rpkg.Deps[depPkg] = { + Rpkg: depPkg, Api: api, Expr: expr, } @@ -212,7 +215,8 @@ func (rpkg *ResolvePackage) AddDep( rpkg.reqApiMap[api] = apiReq } - apiPkg.refCount++ + depPkg.revDeps[rpkg] = struct{}{} + return true } @@ -338,19 +342,25 @@ func (r *Resolver) deletePkg(rpkg *ResolvePackage) error { // Delete the package from syscfg. r.cfg.DeletePkg(rpkg.Lpkg) - // If the deleted package is the only depender for any other packages - // (i.e., if any of its dependencies have a reference count of one), delete - // them as well. - for rdep, _ := range rpkg.Deps { - if rdep.refCount <= 0 { + // Remove all dependencies on the deleted package. + for revdep, _ := range rpkg.revDeps { + delete(revdep.Deps, rpkg) + } + + // Remove all reverse dependencies pointing to the deleted package. If the + // deleted package is the only depender for any other packages (i.e., if + // any of its dependencies have only one reverse dependency), + // delete them as well. + for dep, _ := range rpkg.Deps { + if len(dep.revDeps) == 0 { return util.FmtNewtError( - "package %s unexpectedly has refcount <= 0", - rdep.Lpkg.FullName()) + "package %s unexpectedly has 0 reverse dependencies", + dep.Lpkg.FullName()) } - rdep.refCount-- - if rdep.refCount == 0 { - if err := r.deletePkg(rdep); err != nil { - return nil + delete(dep.revDeps, rpkg) + if len(dep.revDeps) == 0 { + if err := r.deletePkg(dep); err != nil { + return err } } } @@ -406,12 +416,12 @@ func (r *Resolver) loadDepsForPkg(rpkg *ResolvePackage)
[mynewt-newt] 02/02: resolve: Prune orphan packages during dep resolutn
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git commit 88ad5de6f0826c71f961adba6c907e27e18755b4 Author: Christopher Collins AuthorDate: Tue Nov 6 17:18:02 2018 -0800 resolve: Prune orphan packages during dep resolutn This fixes #233. Detect orphan packages as follows: starting from each seed package, recursively traverse the package's dependency list, keeping track of which packages were visited. After the traversal is complete, any non-visited package in the resolver are orphans and can be removed. --- newt/resolve/resolve.go | 132 1 file changed, 101 insertions(+), 31 deletions(-) diff --git a/newt/resolve/resolve.go b/newt/resolve/resolve.go index 02d69f9..ef13e6a 100644 --- a/newt/resolve/resolve.go +++ b/newt/resolve/resolve.go @@ -58,6 +58,7 @@ type resolveReqApi struct { type Resolver struct { apis map[string]resolveApi pkgMap map[*pkg.LocalPackage]*ResolvePackage + seedPkgs []*pkg.LocalPackage injectedSettings map[string]string flashMap flash.FlashMap cfg syscfg.Cfg @@ -134,6 +135,7 @@ func newResolver( r := { apis: map[string]resolveApi{}, pkgMap: map[*pkg.LocalPackage]*ResolvePackage{}, + seedPkgs: seedPkgs, injectedSettings: injectedSettings, flashMap: flashMap, cfg: syscfg.NewCfg(), @@ -340,19 +342,25 @@ func (r *Resolver) deletePkg(rpkg *ResolvePackage) error { // Delete the package from syscfg. r.cfg.DeletePkg(rpkg.Lpkg) - // If the deleted package is the only depender for any other packages - // (i.e., if any of its dependencies have only one reverse dependency), + // Remove all dependencies on the deleted package. + for revdep, _ := range rpkg.revDeps { + delete(revdep.Deps, rpkg) + } + + // Remove all reverse dependencies pointing to the deleted package. If the + // deleted package is the only depender for any other packages (i.e., if + // any of its dependencies have only one reverse dependency), // delete them as well. - for rdep, _ := range rpkg.Deps { - if len(rdep.revDeps) == 0 { + for dep, _ := range rpkg.Deps { + if len(dep.revDeps) == 0 { return util.FmtNewtError( "package %s unexpectedly has 0 reverse dependencies", - rdep.Lpkg.FullName()) + dep.Lpkg.FullName()) } - delete(rdep.revDeps, rpkg) - if len(rdep.revDeps) == 0 { - if err := r.deletePkg(rdep); err != nil { - return nil + delete(dep.revDeps, rpkg) + if len(dep.revDeps) == 0 { + if err := r.deletePkg(dep); err != nil { + return err } } } @@ -478,31 +486,94 @@ func (r *Resolver) reloadCfg() (bool, error) { return false, nil } -func (r *Resolver) resolveDepsOnce() (bool, error) { - // Circularly resolve dependencies, APIs, and required APIs until no new - // ones exist. - newDeps := false - for { - reprocess := false - for _, rpkg := range r.pkgMap { - newDeps, err := r.resolvePkg(rpkg) - if err != nil { +// @return bool True if any packages were pruned, false +// otherwise. +// @return err Error +func (r *Resolver) pruneOrphans() (bool, error) { + seenMap := map[*ResolvePackage]struct{}{} + + // This function traverses the specified package's dependency list, + // recording each visited packges in `seenMap`. + var visit func(rpkg *ResolvePackage) + visit = func(rpkg *ResolvePackage) { + if _, ok := seenMap[rpkg]; ok { + return + } + + seenMap[rpkg] = struct{}{} + for dep, _ := range rpkg.Deps { + visit(dep) + } + } + + // Starting from each seed package, recursively traverse the package's + // dependency list, keeping track of which packages were visited. + for _, lpkg := range r.seedPkgs { + rpkg := r.pkgMap[lpkg] + if rpkg == nil { + panic("Resolver lacks mapping for seed package " + lpkg.FullName()) + } + + visit(rpkg) + } + + // Any non-visited packages in the resolver are
[GitHub] rymanluk closed pull request #230: [porting][linux] Add support for BLE Mesh app on linux platform
rymanluk closed pull request #230: [porting][linux] Add support for BLE Mesh app on linux platform URL: https://github.com/apache/mynewt-nimble/pull/230 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/nimble/host/mesh/src/adv.h b/nimble/host/mesh/src/adv.h index d37e0d41..8e76e419 100644 --- a/nimble/host/mesh/src/adv.h +++ b/nimble/host/mesh/src/adv.h @@ -17,7 +17,7 @@ #define BT_MESH_ADV_DATA_SIZE 31 /* The user data is a pointer (4 bytes) to struct bt_mesh_adv */ -#define BT_MESH_ADV_USER_DATA_SIZE 4 +#define BT_MESH_ADV_USER_DATA_SIZE (sizeof(struct bt_mesh_adv *)) #define BT_MESH_MBUF_HEADER_SIZE (sizeof(struct os_mbuf_pkthdr) + \ BT_MESH_ADV_USER_DATA_SIZE +\ diff --git a/nimble/host/mesh/src/testing.c b/nimble/host/mesh/src/testing.c index 096cff63..4a0f1da2 100644 --- a/nimble/host/mesh/src/testing.c +++ b/nimble/host/mesh/src/testing.c @@ -97,7 +97,7 @@ void bt_test_print_credentials(void) struct bt_mesh_subnet *sub; struct bt_mesh_app_key *app_key; - console_printf("IV Index: %08lx\n", bt_mesh.iv_index); + console_printf("IV Index: %08lx\n", (long) bt_mesh.iv_index); console_printf("Dev key: %s\n", bt_hex(bt_mesh.dev_key, 16)); for (i = 0; i < MYNEWT_VAL(BLE_MESH_SUBNET_COUNT); ++i) @@ -157,7 +157,11 @@ void bt_test_print_credentials(void) int bt_test_shell_init(void) { +#if MYNEWT_VAL(BLE_MESH_SHELL) return cmd_mesh_init(0, NULL); +#else + return -ENOTSUP; +#endif } int bt_test_bind_app_key_to_model(struct bt_mesh_model *model, u16_t key_idx, u16_t id) diff --git a/porting/npl/linux/include/console/console.h b/porting/npl/linux/include/console/console.h new file mode 100644 index ..ccbfc015 --- /dev/null +++ b/porting/npl/linux/include/console/console.h @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef __CONSOLE_H__ +#define __CONSOLE_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define console_printf(_fmt, ...) printf(_fmt, ##__VA_ARGS__) + +#ifdef __cplusplus +} +#endif + +#endif /* __CONSOLE_H__ */ diff --git a/porting/npl/linux/src/os_callout.c b/porting/npl/linux/src/os_callout.c index ead7ff1d..2d77c9e1 100644 --- a/porting/npl/linux/src/os_callout.c +++ b/porting/npl/linux/src/os_callout.c @@ -130,3 +130,30 @@ ble_npl_callout_get_ticks(struct ble_npl_callout *co) { return co->c_ticks; } + +void +ble_npl_callout_set_arg(struct ble_npl_callout *co, void *arg) +{ +co->c_ev.ev_arg = arg; +} + +uint32_t +ble_npl_callout_remaining_ticks(struct ble_npl_callout *co, +ble_npl_time_t now) +{ +ble_npl_time_t rt; +uint32_t exp; + +struct itimerspec its; +timer_gettime(co->c_timer, ); + +exp = its.it_value.tv_sec * 1000; + +if (exp > now) { +rt = exp - now; +} else { +rt = 0; +} + +return rt; +} diff --git a/porting/npl/linux/src/os_eventq.cc b/porting/npl/linux/src/os_eventq.cc index a1459bdf..15ec4ef6 100644 --- a/porting/npl/linux/src/os_eventq.cc +++ b/porting/npl/linux/src/os_eventq.cc @@ -46,6 +46,18 @@ ble_npl_eventq_init(struct ble_npl_eventq *evq) evq->q = new wqueue_t(); } +bool +ble_npl_eventq_is_empty(struct ble_npl_eventq *evq) +{ +wqueue_t *q = static_cast(evq->q); + +if (q->size()) { +return 1; +} else { +return 0; +} +} + int ble_npl_eventq_inited(const struct ble_npl_eventq *evq) { @@ -71,8 +83,11 @@ struct ble_npl_event *ble_npl_eventq_get(struct ble_npl_eventq *evq, struct ble_npl_event *ev; wqueue_t *q = static_cast(evq->q); -ev = q->get(); -ev->ev_queued = 0; +ev = q->get(tmo); + +if (ev) { +ev->ev_queued = 0; +} return ev; } diff --git a/porting/npl/linux/src/os_time.c b/porting/npl/linux/src/os_time.c index 55cbb61a..3c2e4faa 100644 --- a/porting/npl/linux/src/os_time.c +++ b/porting/npl/linux/src/os_time.c @@ -22,6 +22,7 @@
[mynewt-nimble] branch master updated (dc9fb25 -> ba6ce7d)
This is an automated email from the ASF dual-hosted git repository. rymek pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git. from dc9fb25 Merge pull request #237 from wes3/nrf_hfxo_request new dfe8035 [porting][linux] Fixed build errors when BLE Mesh Shell is disabled new 55e2c86 [porting][linux] Added required APIs to build glue.c for BLE Mesh app new e6fd6e9 Dynamically considering pointer size to support multiple platforms new 4b5c5ef [porting][linux] Added timeout support to Eventq Get API new ba6ce7d Fixed build error of Mesh stack for 64-bit machine The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: nimble/host/mesh/src/adv.h | 2 +- nimble/host/mesh/src/testing.c | 6 - .../npl/linux/include/console/console.h| 10 porting/npl/linux/src/os_callout.c | 27 ++ porting/npl/linux/src/os_eventq.cc | 19 +-- porting/npl/linux/src/os_time.c| 7 ++ porting/npl/linux/src/wqueue.h | 18 +++ 7 files changed, 75 insertions(+), 14 deletions(-) copy nimble/transport/ram/include/transport/ram/ble_hci_ram.h => porting/npl/linux/include/console/console.h (85%)
[mynewt-nimble] 03/05: Dynamically considering pointer size to support multiple platforms
This is an automated email from the ASF dual-hosted git repository. rymek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git commit e6fd6e948a4d49263d280127241680b636ed344a Author: Mehul Hirpara AuthorDate: Wed Oct 24 17:48:07 2018 +0530 Dynamically considering pointer size to support multiple platforms This change helps filling bt_mesh_adv buffer correctly while sending secure beacons (on Linux platform). --- nimble/host/mesh/src/adv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nimble/host/mesh/src/adv.h b/nimble/host/mesh/src/adv.h index d37e0d4..8e76e41 100644 --- a/nimble/host/mesh/src/adv.h +++ b/nimble/host/mesh/src/adv.h @@ -17,7 +17,7 @@ #define BT_MESH_ADV_DATA_SIZE 31 /* The user data is a pointer (4 bytes) to struct bt_mesh_adv */ -#define BT_MESH_ADV_USER_DATA_SIZE 4 +#define BT_MESH_ADV_USER_DATA_SIZE (sizeof(struct bt_mesh_adv *)) #define BT_MESH_MBUF_HEADER_SIZE (sizeof(struct os_mbuf_pkthdr) + \ BT_MESH_ADV_USER_DATA_SIZE +\
[mynewt-nimble] 05/05: Fixed build error of Mesh stack for 64-bit machine
This is an automated email from the ASF dual-hosted git repository. rymek pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git commit ba6ce7dfddd55da4b82e48de9b194357eb63f753 Author: Mehul Hirpara AuthorDate: Thu Nov 1 09:20:47 2018 +0530 Fixed build error of Mesh stack for 64-bit machine --- nimble/host/mesh/src/testing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nimble/host/mesh/src/testing.c b/nimble/host/mesh/src/testing.c index caf55dd..4a0f1da 100644 --- a/nimble/host/mesh/src/testing.c +++ b/nimble/host/mesh/src/testing.c @@ -97,7 +97,7 @@ void bt_test_print_credentials(void) struct bt_mesh_subnet *sub; struct bt_mesh_app_key *app_key; - console_printf("IV Index: %08lx\n", bt_mesh.iv_index); + console_printf("IV Index: %08lx\n", (long) bt_mesh.iv_index); console_printf("Dev key: %s\n", bt_hex(bt_mesh.dev_key, 16)); for (i = 0; i < MYNEWT_VAL(BLE_MESH_SUBNET_COUNT); ++i)
[GitHub] saulpw commented on a change in pull request #239: docs; give examples about how to use extrajtagcmd to debug multiple b…
saulpw commented on a change in pull request #239: docs; give examples about how to use extrajtagcmd to debug multiple b… URL: https://github.com/apache/mynewt-newt/pull/239#discussion_r233559093 ## File path: docs/newt_ops.rst ## @@ -67,3 +67,13 @@ through the ``-h`` or ``--help`` options. -v, --verbose Enable verbose output when executing commands Use "newt target [command] --help" for more information about a command. + + +It is possible to use *newt* to debug multiple boards simultaneously. To do that, you'll need to select TCP port gdb uses to talk with JTAG adapter software, and also pick the JTAG adapter to use. Selected TCP ports should be unique, and available for use. These can be passed within parameter ``-extrajtagcmd`` wnen invoking ``newt load``, ``newt debug`` or ``newt run``. + +Here are few examples: + +.. code-block:: console + +newt debug blinky_nrf52 --extrajtagcmd="-port 3338 -select usb=682223238" + newt run slinky_zero 4.0 --extrajtagcmd="cmsis_dap_serial AZE01422 -port 3400" Review comment: Note that `` is the gdb port, but `+1` is also used as the telnet port, making it unavailable. This bit me when I chose consecutive ports for the two sessions. I also had to add ` ; tcl_port ` and specify a third port, which is not auto-specified by newt like the telnet port is, and will collide if not specified (defaults to ). Note also the spaces around the `;`, which seem to be necessary for openocd. Finally, maybe a mention of how to get the serial of the device? On Linux, I used `lsusb -v` and found the `iSerial` property on the adapter. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[mynewt-newt] 03/03: Allow key list to be specified in `newt run`.
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git commit 9041b05ac66832d5ad617bcc667d269087ab1c6a Author: Christopher Collins AuthorDate: Mon Nov 12 12:45:50 2018 -0800 Allow key list to be specified in `newt run`. --- newt/cli/run_cmds.go | 15 +-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/newt/cli/run_cmds.go b/newt/cli/run_cmds.go index 49a2e4d..d3f3ed9 100644 --- a/newt/cli/run_cmds.go +++ b/newt/cli/run_cmds.go @@ -88,11 +88,20 @@ func runRunCmd(cmd *cobra.Command, args []string) { } if len(version) > 0 { - _, _, err = b.CreateImages(version, "", 0) + var keystrs []string + var keyId uint8 + + if len(args) > 2 { + keystrs, keyId, err = parseKeyArgs(args[2:]) + if err != nil { + NewtUsage(cmd, err) + } + } + + _, _, err = b.CreateImages(version, keystrs, keyId) if err != nil { NewtUsage(cmd, err) } - } if err := b.Load(extraJtagCmd); err != nil { @@ -113,6 +122,8 @@ func AddRunCommands(cmd *cobra.Command) { " - debug \n\n" + "Note if version number is omitted, create-image step is skipped\n" runHelpEx := " newt run []\n" + runHelpEx += + " newt run -2 my_target1 1.3.0.3 private-1.pem private-2.pem\n" runCmd := { Use: "run",
[mynewt-newt] 01/03: Some cosmetic changes
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git commit 1831dd3621cc0a3dbae22d23a7f43c61992c5209 Author: Christopher Collins AuthorDate: Mon Nov 12 12:54:38 2018 -0800 Some cosmetic changes Run gofmt, use `FmtNewtError()` instead of `NewNewtError(fmt.Sprintf())`, etc. --- newt/builder/build.go | 5 +- newt/image/image.go | 189 -- 2 files changed, 94 insertions(+), 100 deletions(-) diff --git a/newt/builder/build.go b/newt/builder/build.go index ff6d505..9336465 100644 --- a/newt/builder/build.go +++ b/newt/builder/build.go @@ -285,7 +285,7 @@ func (b *Builder) newCompiler(bpkg *BuildPackage, return nil, err } - log.Warnf("Unsupported build profile for package, using default build profile " + + log.Warnf("Unsupported build profile for package, using default build profile "+ "(pkg=\"%s\" build_profile=\"%s\" OS=\"%s\")", bpkg.rpkg.Lpkg.FullName(), buildProfile, runtime.GOOS) @@ -814,8 +814,7 @@ func (b *Builder) CreateImage(version string, } img.HeaderSize = uint(b.targetBuilder.target.HeaderSize) - err = img.Generate(loaderImg) - if err != nil { + if err := img.Generate(loaderImg); err != nil { return nil, err } diff --git a/newt/image/image.go b/newt/image/image.go index bbc6b5a..557448b 100644 --- a/newt/image/image.go +++ b/newt/image/image.go @@ -327,8 +327,8 @@ func ParsePrivateKey(keyBytes []byte) (interface{}, error) { */ privKey, err = x509.ParsePKCS1PrivateKey(block.Bytes) if err != nil { - return nil, util.NewNewtError(fmt.Sprintf("Private key parsing "+ - "failed: %s", err)) + return nil, util.FmtNewtError( + "Private key parsing failed: %s", err) } } if block != nil && block.Type == "EC PRIVATE KEY" { @@ -337,8 +337,8 @@ func ParsePrivateKey(keyBytes []byte) (interface{}, error) { */ privKey, err = x509.ParseECPrivateKey(block.Bytes) if err != nil { - return nil, util.NewNewtError(fmt.Sprintf("Private key parsing "+ - "failed: %s", err)) + return nil, util.FmtNewtError( + "Private key parsing failed: %s", err) } } if block != nil && block.Type == "PRIVATE KEY" { @@ -347,8 +347,8 @@ func ParsePrivateKey(keyBytes []byte) (interface{}, error) { // the key itself. privKey, err = x509.ParsePKCS8PrivateKey(block.Bytes) if err != nil { - return nil, util.NewNewtError(fmt.Sprintf("Private key parsing "+ - "failed: %s", err)) + return nil, util.FmtNewtError( + "Private key parsing failed: %s", err) } } if block != nil && block.Type == "ENCRYPTED PRIVATE KEY" { @@ -487,14 +487,14 @@ func (image *Image) sigTlvType() uint8 { func (image *Image) ReSign() error { srcImg, err := os.Open(image.SourceImg) if err != nil { - return util.NewNewtError(fmt.Sprintf("Can't open image file %s: %s", - image.SourceImg, err.Error())) + return util.FmtNewtError("Can't open image file %s: %s", + image.SourceImg, err.Error()) } srcInfo, err := srcImg.Stat() if err != nil { - return util.NewNewtError(fmt.Sprintf("Can't stat image file %s: %s", - image.SourceImg, err.Error())) + return util.FmtNewtError("Can't stat image file %s: %s", + image.SourceImg, err.Error()) } var hdr1 ImageHdrV1 @@ -508,15 +508,15 @@ func (image *Image) ReSign() error { err = binary.Read(srcImg, binary.LittleEndian, ) } if err != nil { - return util.NewNewtError(fmt.Sprintf("Failing to access image %s: %s", - image.SourceImg, err.Error())) + return util.FmtNewtError("Failing to access image %s: %s", + image.SourceImg, err.Error()) } if hdr1.Magic == IMAGEv1_MAGIC { if uint32(srcInfo.Size()) != uint32(hdr1.HdrSz)+hdr1.ImgSz+uint32(hdr1.TlvSz) { - return util.NewNewtError(fmt.Sprintf("File %s is not an image\n", - image.SourceImg)) + return util.FmtNewtError("File %s is not an image\n", +
[mynewt-newt] branch master updated (88ad5de -> 9041b05)
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git. from 88ad5de resolve: Prune orphan packages during dep resolutn new 1831dd3 Some cosmetic changes new 426c006 Support arbitrary lists of signing keys new 9041b05 Allow key list to be specified in `newt run`. The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: newt/builder/build.go | 17 +- newt/builder/targetbuild.go | 6 +- newt/cli/image_cmds.go | 49 ++-- newt/cli/run_cmds.go| 15 +- newt/image/image.go | 702 +++- 5 files changed, 425 insertions(+), 364 deletions(-)
[GitHub] ccollins476ad closed pull request #238: Support arbitrary lists of signing keys
ccollins476ad closed pull request #238: Support arbitrary lists of signing keys URL: https://github.com/apache/mynewt-newt/pull/238 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/newt/builder/build.go b/newt/builder/build.go index ff6d5054..9db22135 100644 --- a/newt/builder/build.go +++ b/newt/builder/build.go @@ -285,7 +285,7 @@ func (b *Builder) newCompiler(bpkg *BuildPackage, return nil, err } - log.Warnf("Unsupported build profile for package, using default build profile " + + log.Warnf("Unsupported build profile for package, using default build profile "+ "(pkg=\"%s\" build_profile=\"%s\" OS=\"%s\")", bpkg.rpkg.Lpkg.FullName(), buildProfile, runtime.GOOS) @@ -794,7 +794,8 @@ func (b *Builder) buildRomElf(common *symbol.SymbolMap) error { } func (b *Builder) CreateImage(version string, - keystr string, keyId uint8, loaderImg *image.Image) (*image.Image, error) { + keystrs []string, keyId uint8, + loaderImg *image.Image) (*image.Image, error) { img, err := image.NewImage(b.AppBinPath(), b.AppImgPath()) if err != nil { @@ -806,16 +807,18 @@ func (b *Builder) CreateImage(version string, return nil, err } - if keystr != "" { - err = img.SetSigningKey(keystr, keyId) - if err != nil { + if len(keystrs) == 1 { + if err := img.SetKeyV1(keystrs[0], keyId); err != nil { + return nil, err + } + } else { + if err := img.SetKeys(keystrs); err != nil { return nil, err } } img.HeaderSize = uint(b.targetBuilder.target.HeaderSize) - err = img.Generate(loaderImg) - if err != nil { + if err := img.Generate(loaderImg); err != nil { return nil, err } diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go index 9ee7317d..f5fa8e64 100644 --- a/newt/builder/targetbuild.go +++ b/newt/builder/targetbuild.go @@ -867,7 +867,7 @@ func (t *TargetBuilder) verifyImgSizes(li *image.Image, ai *image.Image) error { // @return app-image, loader-image, error func (t *TargetBuilder) CreateImages(version string, - keystr string, keyId uint8) (*image.Image, *image.Image, error) { + keystrs []string, keyId uint8) (*image.Image, *image.Image, error) { if err := t.Build(); err != nil { return nil, nil, err @@ -883,7 +883,7 @@ func (t *TargetBuilder) CreateImages(version string, } if t.LoaderBuilder != nil { - loaderImg, err = t.LoaderBuilder.CreateImage(version, keystr, keyId, + loaderImg, err = t.LoaderBuilder.CreateImage(version, keystrs, keyId, nil) if err != nil { return nil, nil, err @@ -900,7 +900,7 @@ func (t *TargetBuilder) CreateImages(version string, } } - appImg, err = t.AppBuilder.CreateImage(version, keystr, keyId, loaderImg) + appImg, err = t.AppBuilder.CreateImage(version, keystrs, keyId, loaderImg) if err != nil { return nil, nil, err } diff --git a/newt/cli/image_cmds.go b/newt/cli/image_cmds.go index 3063d3e7..73459ed4 100644 --- a/newt/cli/image_cmds.go +++ b/newt/cli/image_cmds.go @@ -32,9 +32,28 @@ import ( var useV1 bool var useV2 bool +func parseKeyArgs(args []string) ([]string, uint8, error) { + if len(args) == 0 { + return nil, 0, nil + } + + if len(args) == 1 { + return args, 0, nil + } + + if image.UseV1 { + keyId64, err := strconv.ParseUint(args[1], 10, 8) + if err != nil { + return nil, 0, util.NewNewtError("Key ID must be between 0-255") + } + return args[:1], uint8(keyId64), nil + } + + return args, 0, nil +} + func createImageRunCmd(cmd *cobra.Command, args []string) { var keyId uint8 - var keystr string if len(args) < 2 { NewtUsage(cmd, util.NewNewtError("Must specify target and version")) @@ -59,26 +78,18 @@ func createImageRunCmd(cmd *cobra.Command, args []string) { version := args[1] - if len(args) > 2 { - if len(args) > 3 { - keyId64, err := strconv.ParseUint(args[3], 10, 8) - if err != nil { - NewtUsage(cmd, - util.NewNewtError("Key ID must be between 0-255")) -
[mynewt-newt] 02/03: Support arbitrary lists of signing keys
This is an automated email from the ASF dual-hosted git repository. ccollins pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git commit 426c006c3b9229f3cda4a84605f112e10f1e1458 Author: Christopher Collins AuthorDate: Mon Nov 12 12:41:02 2018 -0800 Support arbitrary lists of signing keys Prior to this commit, newt allowed one RSA key and / or one ECC key per image. This commit allows images to be signed by an arbitrary list of keys (e.g., 3 RSA keys and 2 ECC keys). --- newt/builder/build.go | 12 +- newt/builder/targetbuild.go | 6 +- newt/cli/image_cmds.go | 49 +++-- newt/image/image.go | 513 4 files changed, 318 insertions(+), 262 deletions(-) diff --git a/newt/builder/build.go b/newt/builder/build.go index 9336465..9db2213 100644 --- a/newt/builder/build.go +++ b/newt/builder/build.go @@ -794,7 +794,8 @@ func (b *Builder) buildRomElf(common *symbol.SymbolMap) error { } func (b *Builder) CreateImage(version string, - keystr string, keyId uint8, loaderImg *image.Image) (*image.Image, error) { + keystrs []string, keyId uint8, + loaderImg *image.Image) (*image.Image, error) { img, err := image.NewImage(b.AppBinPath(), b.AppImgPath()) if err != nil { @@ -806,9 +807,12 @@ func (b *Builder) CreateImage(version string, return nil, err } - if keystr != "" { - err = img.SetSigningKey(keystr, keyId) - if err != nil { + if len(keystrs) == 1 { + if err := img.SetKeyV1(keystrs[0], keyId); err != nil { + return nil, err + } + } else { + if err := img.SetKeys(keystrs); err != nil { return nil, err } } diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go index 9ee7317..f5fa8e6 100644 --- a/newt/builder/targetbuild.go +++ b/newt/builder/targetbuild.go @@ -867,7 +867,7 @@ func (t *TargetBuilder) verifyImgSizes(li *image.Image, ai *image.Image) error { // @return app-image, loader-image, error func (t *TargetBuilder) CreateImages(version string, - keystr string, keyId uint8) (*image.Image, *image.Image, error) { + keystrs []string, keyId uint8) (*image.Image, *image.Image, error) { if err := t.Build(); err != nil { return nil, nil, err @@ -883,7 +883,7 @@ func (t *TargetBuilder) CreateImages(version string, } if t.LoaderBuilder != nil { - loaderImg, err = t.LoaderBuilder.CreateImage(version, keystr, keyId, + loaderImg, err = t.LoaderBuilder.CreateImage(version, keystrs, keyId, nil) if err != nil { return nil, nil, err @@ -900,7 +900,7 @@ func (t *TargetBuilder) CreateImages(version string, } } - appImg, err = t.AppBuilder.CreateImage(version, keystr, keyId, loaderImg) + appImg, err = t.AppBuilder.CreateImage(version, keystrs, keyId, loaderImg) if err != nil { return nil, nil, err } diff --git a/newt/cli/image_cmds.go b/newt/cli/image_cmds.go index 3063d3e..73459ed 100644 --- a/newt/cli/image_cmds.go +++ b/newt/cli/image_cmds.go @@ -32,9 +32,28 @@ import ( var useV1 bool var useV2 bool +func parseKeyArgs(args []string) ([]string, uint8, error) { + if len(args) == 0 { + return nil, 0, nil + } + + if len(args) == 1 { + return args, 0, nil + } + + if image.UseV1 { + keyId64, err := strconv.ParseUint(args[1], 10, 8) + if err != nil { + return nil, 0, util.NewNewtError("Key ID must be between 0-255") + } + return args[:1], uint8(keyId64), nil + } + + return args, 0, nil +} + func createImageRunCmd(cmd *cobra.Command, args []string) { var keyId uint8 - var keystr string if len(args) < 2 { NewtUsage(cmd, util.NewNewtError("Must specify target and version")) @@ -59,26 +78,18 @@ func createImageRunCmd(cmd *cobra.Command, args []string) { version := args[1] - if len(args) > 2 { - if len(args) > 3 { - keyId64, err := strconv.ParseUint(args[3], 10, 8) - if err != nil { - NewtUsage(cmd, - util.NewNewtError("Key ID must be between 0-255")) - } - keyId = uint8(keyId64) - } - keystr = args[2] - } - b, err := builder.NewTargetBuilder(t) if err != nil { NewtUsage(nil, err) } - if _, _, err := b.CreateImages(version, keystr, keyId); err != nil { +