bringup and order sensors
This commit is contained in:
2
BRINGUP_22APR2026_1452.txt
Normal file
2
BRINGUP_22APR2026_1452.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
14:52:22.629 == Flashing COM3 ==
|
||||
14:52:22.631 erase_flash @ COM3
|
||||
9
BRINGUP_22APR2026_1454.txt
Normal file
9
BRINGUP_22APR2026_1454.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
14:54:20.812 == Flashing COM3 ==
|
||||
14:54:20.814 erase_flash @ COM3
|
||||
14:54:23.260 flashing from D:\SC\SC-F001\build
|
||||
14:54:23.261 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
14:54:48.002 == Flash complete ==
|
||||
14:54:49.503 Connecting to COM3 @ 115200 ...
|
||||
14:54:49.507 -> BU.BEGIN
|
||||
14:55:24.216 -> BU.FLASH
|
||||
14:55:50.514 -> BU.END
|
||||
8
BRINGUP_22APR2026_1503.txt
Normal file
8
BRINGUP_22APR2026_1503.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
15:03:29.132 == Flashing COM3 ==
|
||||
15:03:29.134 erase_flash @ COM3
|
||||
15:03:32.409 flashing from D:\SC\SC-F001\build
|
||||
15:03:32.410 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
15:03:57.500 == Flash complete ==
|
||||
15:03:59.001 Connecting to COM3 @ 115200 ...
|
||||
15:03:59.005 -> BU.BEGIN
|
||||
15:06:09.840 -> BU.END
|
||||
27
BRINGUP_22APR2026_1508.txt
Normal file
27
BRINGUP_22APR2026_1508.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
15:08:35.387 == Flashing COM3 ==
|
||||
15:08:35.388 erase_flash @ COM3
|
||||
15:08:38.996 flashing from D:\SC\SC-F001\build
|
||||
15:08:38.998 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
15:09:04.125 == Flash complete ==
|
||||
15:09:05.626 Connecting to COM3 @ 115200 ...
|
||||
15:09:05.631 -> BU.BEGIN
|
||||
15:09:07.138 -> BU.BEGIN
|
||||
15:09:08.643 -> BU.BEGIN
|
||||
15:09:10.151 -> BU.BEGIN
|
||||
15:09:11.659 -> BU.BEGIN
|
||||
15:09:13.170 -> BU.BEGIN
|
||||
15:09:14.679 -> BU.BEGIN
|
||||
15:09:16.166 -> BU.BEGIN
|
||||
15:09:17.668 -> BU.BEGIN
|
||||
15:09:19.177 -> BU.BEGIN
|
||||
15:09:20.683 -> BU.BEGIN
|
||||
15:09:22.186 -> BU.BEGIN
|
||||
15:09:23.708 -> BU.BEGIN
|
||||
15:09:25.209 -> BU.BEGIN
|
||||
15:09:26.712 -> BU.BEGIN
|
||||
15:09:28.237 -> BU.BEGIN
|
||||
15:09:29.729 -> BU.BEGIN
|
||||
15:09:31.242 -> BU.BEGIN
|
||||
15:09:32.729 -> BU.BEGIN
|
||||
15:09:34.243 -> BU.BEGIN
|
||||
15:52:17.070 -> BU.END
|
||||
154154
BRINGUP_22APR2026_1552.txt
Normal file
154154
BRINGUP_22APR2026_1552.txt
Normal file
File diff suppressed because it is too large
Load Diff
26
BRINGUP_22APR2026_1554.txt
Normal file
26
BRINGUP_22APR2026_1554.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
15:54:04.593 == Flashing COM3 ==
|
||||
15:54:04.596 flashing from D:\SC\SC-F001\build
|
||||
15:54:04.596 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
15:54:29.689 == Flash complete ==
|
||||
15:54:31.190 Connecting to COM3 @ 115200 ...
|
||||
15:54:31.194 -> BU.BEGIN
|
||||
15:54:32.689 -> BU.BEGIN
|
||||
15:54:34.195 -> BU.BEGIN
|
||||
15:54:35.694 -> BU.BEGIN
|
||||
15:54:37.184 -> BU.BEGIN
|
||||
15:54:38.702 -> BU.BEGIN
|
||||
15:54:40.202 -> BU.BEGIN
|
||||
15:54:41.705 -> BU.BEGIN
|
||||
15:54:43.205 -> BU.BEGIN
|
||||
15:54:44.723 -> BU.BEGIN
|
||||
15:54:46.221 -> BU.BEGIN
|
||||
15:54:47.736 -> BU.BEGIN
|
||||
15:54:49.243 -> BU.BEGIN
|
||||
15:54:50.737 -> BU.BEGIN
|
||||
15:54:52.244 -> BU.BEGIN
|
||||
15:54:53.755 -> BU.BEGIN
|
||||
15:54:55.253 -> BU.BEGIN
|
||||
15:54:56.748 -> BU.BEGIN
|
||||
15:54:58.262 -> BU.BEGIN
|
||||
15:54:59.769 -> BU.BEGIN
|
||||
15:55:09.125 -> BU.END
|
||||
BIN
BRINGUP_22APR2026_1557.txt
Normal file
BIN
BRINGUP_22APR2026_1557.txt
Normal file
Binary file not shown.
3081
BRINGUP_22APR2026_1616.txt
Normal file
3081
BRINGUP_22APR2026_1616.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
BRINGUP_22APR2026_1638.txt
Normal file
BIN
BRINGUP_22APR2026_1638.txt
Normal file
Binary file not shown.
565
BRINGUP_22APR2026_1640.txt
Normal file
565
BRINGUP_22APR2026_1640.txt
Normal file
@@ -0,0 +1,565 @@
|
||||
16:40:50.654 Connecting to COM3 @ 115200 ...
|
||||
16:40:50.659 -> BU.BEGIN
|
||||
16:40:50.660 <-
|
||||
16:40:50.660 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.661 <-
|
||||
16:40:50.661 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.661 <-
|
||||
16:40:50.661 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.662 <-
|
||||
16:40:50.662 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.663 <-
|
||||
16:40:50.664 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.664 <-
|
||||
16:40:50.664 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.664 <-
|
||||
16:40:50.664 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.676 <-
|
||||
16:40:50.676 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.676 <-
|
||||
16:40:50.677 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.678 <-
|
||||
16:40:50.678 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.679 <-
|
||||
16:40:50.679 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.680 <-
|
||||
16:40:50.680 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.680 <-
|
||||
16:40:50.680 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.681 <-
|
||||
16:40:50.682 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.682 <-
|
||||
16:40:50.682 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.682 <-
|
||||
16:40:50.682 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.683 <-
|
||||
16:40:50.683 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.684 <-
|
||||
16:40:50.684 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.685 <-
|
||||
16:40:50.685 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.686 <-
|
||||
16:40:50.686 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.688 <-
|
||||
16:40:50.688 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.689 <-
|
||||
16:40:50.689 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.690 <-
|
||||
16:40:50.691 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.692 <-
|
||||
16:40:50.692 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.693 <-
|
||||
16:40:50.693 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.694 <-
|
||||
16:40:50.694 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.694 <-
|
||||
16:40:50.695 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.695 <-
|
||||
16:40:50.695 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.695 <-
|
||||
16:40:50.696 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.697 <-
|
||||
16:40:50.697 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.697 <-
|
||||
16:40:50.697 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.698 <-
|
||||
16:40:50.698 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.699 <-
|
||||
16:40:50.699 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.699 <-
|
||||
16:40:50.699 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.700 <-
|
||||
16:40:50.700 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.701 <-
|
||||
16:40:50.701 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.701 <-
|
||||
16:40:50.701 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.702 <-
|
||||
16:40:50.702 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.703 <-
|
||||
16:40:50.703 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.706 <-
|
||||
16:40:50.706 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.707 <-
|
||||
16:40:50.708 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.708 <-
|
||||
16:40:50.708 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.709 <-
|
||||
16:40:50.709 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.709 <-
|
||||
16:40:50.709 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.710 <-
|
||||
16:40:50.711 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.711 <-
|
||||
16:40:50.711 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.712 <-
|
||||
16:40:50.712 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.712 <-
|
||||
16:40:50.712 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.713 <-
|
||||
16:40:50.713 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.713 <-
|
||||
16:40:50.714 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.714 <-
|
||||
16:40:50.714 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.715 <-
|
||||
16:40:50.715 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.715 <-
|
||||
16:40:50.715 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.716 <-
|
||||
16:40:50.717 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.717 <-
|
||||
16:40:50.717 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.717 <-
|
||||
16:40:50.718 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.718 <-
|
||||
16:40:50.718 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.719 <-
|
||||
16:40:50.719 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.721 <-
|
||||
16:40:50.722 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.723 <-
|
||||
16:40:50.723 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.724 <-
|
||||
16:40:50.724 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.725 <-
|
||||
16:40:50.725 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.725 <-
|
||||
16:40:50.726 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.726 <-
|
||||
16:40:50.726 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.727 <-
|
||||
16:40:50.727 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.728 <-
|
||||
16:40:50.728 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.728 <-
|
||||
16:40:50.728 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.729 <-
|
||||
16:40:50.730 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.730 <-
|
||||
16:40:50.730 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.731 <-
|
||||
16:40:50.731 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.731 <-
|
||||
16:40:50.731 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.732 <-
|
||||
16:40:50.732 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.732 <-
|
||||
16:40:50.733 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.733 <-
|
||||
16:40:50.733 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.733 <-
|
||||
16:40:50.733 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.734 <-
|
||||
16:40:50.734 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.734 <-
|
||||
16:40:50.735 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.736 <-
|
||||
16:40:50.736 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.737 <-
|
||||
16:40:50.737 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.739 <-
|
||||
16:40:50.739 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.739 <-
|
||||
16:40:50.740 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.740 <-
|
||||
16:40:50.740 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.741 <-
|
||||
16:40:50.741 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.742 <-
|
||||
16:40:50.742 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.742 <-
|
||||
16:40:50.742 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.743 <-
|
||||
16:40:50.744 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.744 <-
|
||||
16:40:50.744 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.744 <-
|
||||
16:40:50.744 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.745 <-
|
||||
16:40:50.745 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:50.746 <-
|
||||
16:40:51.249 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:51.249 <- BU.BEGIN
|
||||
|
||||
16:40:51.251 <-
|
||||
|
||||
16:40:51.251 <- BU.OK begin fw=a775999-dirty board=V5 t=0.00
|
||||
|
||||
16:40:51.254 -> BU.INFO
|
||||
16:40:51.254 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:51.254 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:51.763 <- BU.OK info reset=SW heap=68572 min_heap=68072 fw=a775999-dirty build=2026-04-22 21:25:54
|
||||
|
||||
16:40:53.500 -> BU.FLASH
|
||||
16:40:53.500 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.500 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.501 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.501 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.501 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.501 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- [0;32mI (24479) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
16:40:53.502 <- [0;32mI (24479) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.503 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.503 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.503 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.503 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.503 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.527 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.527 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.527 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:53.527 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.028 <- BU.OK flash post_part=roundtrip log_head=131 log_tail=0 partitions_size=4128768
|
||||
|
||||
16:40:54.796 -> BU.I2C
|
||||
16:40:54.796 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.796 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.796 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.820 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.820 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.820 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:54.820 <- [0;32mI (26479) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
16:40:55.300 <- [0;32mI (26849) I2C: POST: TCA9555 OK (port0=0x01E3)[0m
|
||||
|
||||
16:40:55.300 <- BU.OK i2c tca9555=ack
|
||||
|
||||
16:40:55.303 -> BU.LED 0
|
||||
16:40:55.303 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:55.303 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:55.303 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:55.820 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:55.820 <- BU.OK led mask=0
|
||||
|
||||
16:40:56.070 -> BU.LED 1
|
||||
16:40:56.316 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.316 <- BU.OK led mask=1
|
||||
|
||||
16:40:56.567 -> BU.LED 3
|
||||
16:40:56.567 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.567 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.567 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.659 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.659 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.659 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.659 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.659 <- BU.OK led mask=3
|
||||
|
||||
16:40:56.910 -> BU.LED 7
|
||||
16:40:56.929 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.930 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.930 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.930 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:56.930 <- BU.OK led mask=7
|
||||
|
||||
16:40:57.180 -> BU.LED 6
|
||||
16:40:57.296 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.296 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.296 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.296 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.296 <- BU.OK led mask=6
|
||||
|
||||
16:40:57.547 -> BU.LED 4
|
||||
16:40:57.547 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.547 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.547 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.547 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.547 <- [0;32mI (29489) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
16:40:57.884 <- [0;32mI (29489) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
16:40:57.884 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:57.884 <- BU.OK led mask=4
|
||||
|
||||
16:40:58.134 -> BU.LED 0
|
||||
16:40:58.134 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:58.134 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:58.556 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:58.556 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:58.556 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:58.556 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:58.556 <- BU.OK led mask=0
|
||||
|
||||
16:40:58.807 -> BU.LED 1
|
||||
16:40:59.313 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.313 <- BU.OK led mask=1
|
||||
|
||||
16:40:59.564 -> BU.LED 3
|
||||
16:40:59.564 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.564 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.564 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.564 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.564 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.564 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.565 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.565 <- [0;32mI (31489) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
16:40:59.932 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:40:59.932 <- BU.OK led mask=3
|
||||
|
||||
16:41:00.183 -> BU.LED 7
|
||||
16:41:00.183 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.183 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.183 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:00.690 <- BU.OK led mask=7
|
||||
|
||||
16:41:00.941 -> BU.LED 6
|
||||
16:41:01.255 <- BU.OK led mask=6
|
||||
|
||||
16:41:01.506 -> BU.LED 4
|
||||
16:41:01.506 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.506 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.506 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.506 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.507 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.507 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.507 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.507 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.849 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:01.849 <- BU.OK led mask=4
|
||||
|
||||
16:41:02.100 -> BU.LED 0
|
||||
16:41:02.100 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.100 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.100 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.100 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.476 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.476 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.476 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:02.476 <- BU.OK led mask=0
|
||||
|
||||
16:41:02.727 -> BU.LED 1
|
||||
16:41:02.727 <- [0;32mI (34499) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
16:41:03.105 <- [0;32mI (34499) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
16:41:03.105 <- BU.OK led mask=1
|
||||
|
||||
16:41:03.356 -> BU.LED 3
|
||||
16:41:03.356 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.356 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.356 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.363 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.363 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.363 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.363 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.697 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.697 <- BU.OK led mask=3
|
||||
|
||||
16:41:03.948 -> BU.LED 7
|
||||
16:41:03.948 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.948 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.948 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.948 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.948 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
16:41:03.949 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
367
BRINGUP_22APR2026_1713.txt
Normal file
367
BRINGUP_22APR2026_1713.txt
Normal file
@@ -0,0 +1,367 @@
|
||||
17:13:09.734 == Flashing COM3 ==
|
||||
17:13:09.736 flashing from D:\SC\SC-F001\build
|
||||
17:13:09.737 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
17:13:34.882 == Flash complete ==
|
||||
17:13:36.383 Connecting to COM3 @ 115200 ...
|
||||
17:13:36.389 -> BU.BEGIN
|
||||
17:13:36.895 <- BU.BEGIN
|
||||
|
||||
17:13:36.895 <-
|
||||
|
||||
17:13:36.895 <- BU.OK begin fw=a775999-dirty board=V5 t=0.00
|
||||
|
||||
17:13:36.897 -> BU.INFO
|
||||
17:13:36.897 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:36.897 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:36.897 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:37.412 <- BU.OK info reset=POWERON heap=68276 min_heap=67772 fw=a775999-dirty build=2026-04-22 21:25:54
|
||||
|
||||
17:13:50.053 -> BU.FLASH
|
||||
17:13:50.053 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.054 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.054 <- [0;32mI (4419) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:13:50.054 <- [0;32mI (4419) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
17:13:50.054 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.055 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.055 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.055 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.055 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- [0;32mI (6419) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.056 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.057 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.057 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.057 <- [0;32mI (9429) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:13:50.057 <- [0;32mI (9429) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
17:13:50.057 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- [0;32mI (11429) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.058 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.059 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.059 <- [0;32mI (14439) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:13:50.059 <- [0;32mI (14439) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
17:13:50.059 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.085 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.085 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.085 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.086 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:50.593 <- BU.OK flash post_part=roundtrip log_head=164 log_tail=0 partitions_size=4128768
|
||||
|
||||
17:13:52.197 -> BU.I2C
|
||||
17:13:52.198 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:52.198 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:52.709 <- [0;32mI (16439) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
17:13:52.709 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:52.709 <- [0;32mI (17459) I2C: POST: TCA9555 OK (port0=0x0123)[0m
|
||||
|
||||
17:13:52.709 <- BU.OK i2c tca9555=ack
|
||||
|
||||
17:13:52.710 -> BU.LED 0
|
||||
17:13:53.226 <- BU.OK led mask=0
|
||||
|
||||
17:13:53.477 -> BU.LED 1
|
||||
17:13:53.477 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:53.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:53.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:53.983 <- BU.OK led mask=1
|
||||
|
||||
17:13:54.233 -> BU.LED 3
|
||||
17:13:54.233 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:54.439 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:54.439 <- [0;32mI (19449) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:13:54.439 <- [0;32mI (19449) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
17:13:54.439 <- BU.OK led mask=3
|
||||
|
||||
17:13:54.690 -> BU.LED 7
|
||||
17:13:54.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:55.193 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:55.193 <- BU.OK led mask=7
|
||||
|
||||
17:13:55.444 -> BU.LED 6
|
||||
17:13:55.444 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:55.959 <- BU.OK led mask=6
|
||||
|
||||
17:13:56.209 -> BU.LED 4
|
||||
17:13:56.209 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:56.535 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:56.536 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:56.536 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:56.536 <- [0;32mI (21449) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
17:13:56.536 <- BU.OK led mask=4
|
||||
|
||||
17:13:56.787 -> BU.LED 0
|
||||
17:13:57.251 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.251 <- BU.OK led mask=0
|
||||
|
||||
17:13:57.502 -> BU.LED 1
|
||||
17:13:57.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.502 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:57.984 <- BU.OK led mask=1
|
||||
|
||||
17:13:58.234 -> BU.LED 3
|
||||
17:13:58.234 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:58.744 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:13:58.744 <- BU.OK led mask=3
|
||||
|
||||
17:13:58.994 -> BU.LED 7
|
||||
17:13:59.509 <- BU.OK led mask=7
|
||||
|
||||
17:13:59.760 -> BU.LED 6
|
||||
17:13:59.760 <- [0;32mI (24459) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:13:59.760 <- [0;32mI (24459) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
17:14:00.261 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:00.261 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:00.261 <- BU.OK led mask=6
|
||||
|
||||
17:14:00.512 -> BU.LED 4
|
||||
17:14:00.512 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:01.014 <- BU.OK led mask=4
|
||||
|
||||
17:14:01.264 -> BU.LED 0
|
||||
17:14:01.465 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:01.465 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:01.465 <- [0;32mI (26459) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
17:14:01.465 <- BU.OK led mask=0
|
||||
|
||||
17:14:01.716 -> BU.LED 1
|
||||
17:14:01.716 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.084 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.084 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.084 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.084 <- BU.OK led mask=1
|
||||
|
||||
17:14:02.335 -> BU.LED 3
|
||||
17:14:02.335 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.849 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.849 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.849 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:02.849 <- BU.OK led mask=3
|
||||
|
||||
17:14:03.099 -> BU.LED 7
|
||||
17:14:03.099 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:03.602 <- BU.OK led mask=7
|
||||
|
||||
17:14:03.852 -> BU.LED 6
|
||||
17:14:03.852 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:03.852 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:04.237 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:04.237 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:04.237 <- BU.OK led mask=6
|
||||
|
||||
17:14:04.489 -> BU.LED 4
|
||||
17:14:04.489 <- [0;32mI (29469) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:14:04.489 <- [0;32mI (29469) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
17:14:04.839 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:04.839 <- BU.OK led mask=4
|
||||
|
||||
17:14:05.090 -> BU.LED 0
|
||||
17:14:05.090 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:05.090 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:05.090 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:05.596 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:05.596 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:05.596 <- BU.OK led mask=0
|
||||
|
||||
17:14:05.847 -> BU.LED 1
|
||||
17:14:05.847 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:05.847 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:06.360 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:06.360 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:06.360 <- BU.OK led mask=1
|
||||
|
||||
17:14:06.612 -> BU.LED 3
|
||||
17:14:06.612 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:06.612 <- [0;32mI (31469) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
17:14:07.125 <- BU.OK led mask=3
|
||||
|
||||
17:14:07.376 -> BU.LED 7
|
||||
17:14:07.878 <- BU.OK led mask=7
|
||||
|
||||
17:14:08.128 -> BU.LED 0
|
||||
17:14:08.128 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:08.623 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:08.623 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:08.623 <- BU.OK led mask=0
|
||||
|
||||
17:14:12.509 -> BU.ADC
|
||||
17:14:12.510 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.510 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.510 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.511 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.511 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.511 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.511 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.511 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.511 <- [0;32mI (34479) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
17:14:12.511 <- [0;32mI (34479) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
17:14:12.511 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.512 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.512 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.512 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.512 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.513 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.514 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.514 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.514 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.514 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:14:12.514 <- E rmt: hw buffer too small, received symbols truncated
|
||||
375
BRINGUP_22APR2026_1718.txt
Normal file
375
BRINGUP_22APR2026_1718.txt
Normal file
@@ -0,0 +1,375 @@
|
||||
17:18:21.245 Connecting to COM3 @ 115200 ...
|
||||
17:18:21.251 -> BU.BEGIN
|
||||
17:18:21.252 <- symbols truncated
|
||||
|
||||
17:18:21.252 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.253 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.254 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.255 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.255 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.258 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.258 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.260 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.260 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.261 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.262 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.263 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.275 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.275 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.276 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.278 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.278 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.278 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.279 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.280 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.280 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.281 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.282 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.283 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.283 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.285 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.286 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.288 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.289 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.290 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.291 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.292 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.409 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.409 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.410 <- E rmt: hsbu<62>symbols truncated
|
||||
|
||||
17:18:21.412 <- E rmt: hsbu<62>ɲ<EFBFBD><C9B2><EFBFBD> small, received symbols truncated
|
||||
|
||||
17:18:21.413 <- BU.BEGIN
|
||||
|
||||
17:18:21.413 <-
|
||||
|
||||
17:18:21.413 <- BU.OK begin fw=a775999-dirty board=V5 t=0.00
|
||||
|
||||
17:18:21.414 -> BU.INFO
|
||||
17:18:21.414 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:21.637 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:21.637 <- BU.OK info reset=SW heap=84048 min_heap=67828 fw=a775999-dirty build=2026-04-22 21:25:54
|
||||
|
||||
17:18:23.380 -> BU.FLASH
|
||||
17:18:23.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.382 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.382 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.382 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.382 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.382 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.383 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.384 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.384 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.384 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.384 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.434 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.434 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.434 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.434 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:23.434 <- BU.OK flash post_part=roundtrip log_head=175 log_tail=0 partitions_size=4128768
|
||||
|
||||
17:18:27.978 -> BU.SENSORS.WATCH 0
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.979 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.980 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.980 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.980 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.980 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.981 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.982 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.982 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.982 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.982 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.982 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.983 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.984 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.985 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.986 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.986 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.986 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.986 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:27.986 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.033 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.033 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.033 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.033 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.457 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.457 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.457 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.457 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.457 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.973 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:28.973 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:29.485 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:29.485 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:29.885 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:29.885 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:29.885 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:29.885 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.395 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.395 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.395 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.395 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.395 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.910 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:30.910 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.405 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.405 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.405 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.405 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.911 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.911 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.911 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:31.911 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.414 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.414 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.414 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.753 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.753 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.753 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:32.753 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.082 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.082 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.082 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.082 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.082 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.228 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.228 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.228 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.228 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.741 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.741 <- BU.EVENT sensor name=SAFETY edge=make t=12.01
|
||||
|
||||
17:18:33.741 <- BU.EVENT sensor name=SAFETY edge=break t=12.19
|
||||
|
||||
17:18:33.742 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:33.742 <- BU.EVENT sensor name=SAFETY edge=make t=12.40
|
||||
|
||||
17:18:34.199 <- BU.EVENT sensor name=SAFETY edge=break t=12.52
|
||||
|
||||
17:18:34.199 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:34.200 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:34.200 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:34.707 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:34.707 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:34.707 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
17:18:34.893 ->
|
||||
17:18:35.222 <- BU.OK sensors.watch sec=-1 SAFETY=both DRIVE=none JACK=none AUX=none
|
||||
|
||||
17:18:39.477 -> BU.RELAY SENSORS ON 200
|
||||
17:18:39.478 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
3171
BRINGUP_22APR2026_1719.txt
Normal file
3171
BRINGUP_22APR2026_1719.txt
Normal file
File diff suppressed because it is too large
Load Diff
17646
BRINGUP_22APR2026_1725.txt
Normal file
17646
BRINGUP_22APR2026_1725.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
BRINGUP_22APR2026_1730.txt
Normal file
BIN
BRINGUP_22APR2026_1730.txt
Normal file
Binary file not shown.
BIN
BRINGUP_22APR2026_1742.txt
Normal file
BIN
BRINGUP_22APR2026_1742.txt
Normal file
Binary file not shown.
BIN
BRINGUP_22APR2026_1747.txt
Normal file
BIN
BRINGUP_22APR2026_1747.txt
Normal file
Binary file not shown.
BIN
BRINGUP_22APR2026_1800.txt
Normal file
BIN
BRINGUP_22APR2026_1800.txt
Normal file
Binary file not shown.
460
BRINGUP_22APR2026_1806.txt
Normal file
460
BRINGUP_22APR2026_1806.txt
Normal file
@@ -0,0 +1,460 @@
|
||||
18:06:05.925 == Flashing COM3 ==
|
||||
18:06:05.927 flashing from D:\SC\SC-F001\build
|
||||
18:06:05.928 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
18:06:30.772 == Flash complete ==
|
||||
18:06:32.274 Connecting to COM3 @ 115200 ...
|
||||
18:06:32.279 -> BU.BEGIN
|
||||
18:06:32.473 <- BU.BEGIN
|
||||
|
||||
18:06:32.473 <-
|
||||
|
||||
18:06:32.473 <- BU.OK begin fw=a775999-dirty board=V5 t=0.00
|
||||
|
||||
18:06:32.474 -> BU.INFO
|
||||
18:06:32.475 <- [0;32mI (1699) SENS: SAFETY BREAK - Relays disabled[0m
|
||||
|
||||
18:06:32.475 <- [0;32mI (1809) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:06:32.475 <- [0;32mI (1809) BT_HID: BLE HID host initialised[0m
|
||||
|
||||
18:06:32.492 <- [0;32mI (1809) WEBSERVER: Initializing webserver...[0m
|
||||
|
||||
18:06:32.492 <- [0;32mI (1809) WEBSERVER: AP LAUNCHING[0m
|
||||
|
||||
18:06:32.492 <- I (1829) wifi:wifi driver task: 3ffe2828, prio:23, stack:6656, core=0
|
||||
|
||||
18:06:32.492 <- I (1829) wifi:wifi firmware version: ccaebfa
|
||||
|
||||
18:06:32.492 <- I (1829) wifi:wifi certification version: v7.0
|
||||
|
||||
18:06:32.514 <- I (1829) wifi:config NVS flash: enabled
|
||||
|
||||
18:06:32.514 <- I (1829) wifi:config nano formating: disabled
|
||||
|
||||
18:06:32.514 <- I (1839) wifi:Init data frame dynamic rx buffer num: 32
|
||||
|
||||
18:06:32.514 <- I (1839) wifi:Init static rx mgmt buffer num: 5
|
||||
|
||||
18:06:32.540 <- I (1849) wifi:BU.OK info reset=POWERON heap=111764 min_heap=111764 fw=a775999-dirty build=2026-04-22 21:25:54
|
||||
|
||||
18:06:32.541 <- Init management short buffer num: 32
|
||||
|
||||
18:06:32.541 <- I (1859) wifi:Init dynamic tx buffer num: 32
|
||||
|
||||
18:06:32.541 <- I (1859) wifi:Init static rx buffer size: 1600
|
||||
|
||||
18:06:32.541 <- I (1869) wifi:Init static rx buffer num: 10
|
||||
|
||||
18:06:32.562 <- I (1869) wifi:Init dynamic rx buffer num: 32
|
||||
|
||||
18:06:32.562 <- [0;32mI (1879) wifi_init: rx ba win: 6[0m
|
||||
|
||||
18:06:32.562 <- [0;32mI (1879) wifi_init: accept mbox: 6[0m
|
||||
|
||||
18:06:32.562 <- [0;32mI (1879) wifi_init: tcpip mbox: 32[0m
|
||||
|
||||
18:06:32.562 <- [0;32mI (1889) wifi_init: udp mbox: 6[0m
|
||||
|
||||
18:06:32.562 <- [0;32mI (1889) wifi_init: tcp mbox: 6[0m
|
||||
|
||||
18:06:32.861 <- [0;32mI (1889) wifi_init: tcp tx win: 5760[0m
|
||||
|
||||
18:06:32.861 <- [0;32mI (1899) wifi_init: tcp rx win: 5760[0m
|
||||
|
||||
18:06:32.861 <- [0;32mI (1899) wifi_init: tcp mss: 1440[0m
|
||||
|
||||
18:06:32.861 <- I (2189) wifi:mode : softAP (80:f3:da:65:25:f9)
|
||||
|
||||
18:06:32.861 <- I (2199) wifi:Total power save buffer number: 16
|
||||
|
||||
18:06:32.882 <- I (2199) wifi:Init max length of beacon: 752/752
|
||||
|
||||
18:06:32.882 <- I (2199) wifi:Init max length of beacon: 752/752
|
||||
|
||||
18:06:32.882 <- [0;32mI (2209) esp_netif_lwip: DHCP server started on interface WIFI_AP_DEF with IP: 192.168.4.1[0m
|
||||
|
||||
18:06:32.882 <- [0;32mI (2209) DNS_SERVER: DNS server started on port 53[0m
|
||||
|
||||
18:06:32.903 <- [0;32mI (2219) mdns_mem: mDNS task will be created from internal RAM[0m
|
||||
|
||||
18:06:32.903 <- [0;32mI (2219) WEBSERVER: SoftAP ready. SSID: sc.local, Channel: 6, Password: password[0m
|
||||
|
||||
18:06:32.904 <- [0;32mI (2229) WEBSERVER: Access at: http://sc.local.local or http://192.168.4.1[0m
|
||||
|
||||
18:06:32.925 <- [0;32mI (2239) WEBSERVER: STARTING HTTP[0m
|
||||
|
||||
18:06:32.925 <- [0;32mI (2249) WEBSERVER: HTTP server started successfully[0m
|
||||
|
||||
18:06:32.925 <- [0;32mI (2249) WEBSERVER: Registered URI handler: /[0m
|
||||
|
||||
18:06:32.925 <- [0;32mI (2249) WEBSERVER: Registered URI handler: /get[0m
|
||||
|
||||
18:06:33.431 <- [0;32mI (2259) WEBSERVER: Registered URI handler: /post[0m
|
||||
|
||||
18:06:33.431 <- [0;32mI (2259) WEBSERVER: Registered URI handler: /log[0m
|
||||
|
||||
18:06:33.431 <- [0;32mI (2269) WEBSERVER: Registered URI handler: /ota[0m
|
||||
|
||||
18:06:33.431 <- [0;32mI (2269) WEBSERVER: Registered URI handler: /*[0m
|
||||
|
||||
18:06:33.431 <- [0;32mI (2279) WEBSERVER: Webserver initialization complete[0m
|
||||
|
||||
18:06:35.470 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:35.976 <- [0;32mI (4819) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:06:35.976 <- [0;32mI (4819) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:06:36.482 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:45.048 -> BU.BEGIN
|
||||
18:06:45.049 <- [0;32mI (6819) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:06:45.049 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:45.050 <- [0;32mI (9829) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:06:45.052 <- [0;32mI (9829) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:06:45.492 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:45.492 <- [0;32mI (11829) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:06:45.493 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:45.496 <- BU.OK begin fw=a775999-dirty board=V5 t=0.00
|
||||
|
||||
18:06:45.496 -> BU.INFO
|
||||
18:06:45.997 <- [0;32mI (14839) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:06:45.997 <- [0;32mI (14839) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:06:45.997 <- BU.OK info reset=POWERON heap=68372 min_heap=67540 fw=a775999-dirty build=2026-04-22 21:25:54
|
||||
|
||||
18:06:49.092 -> BU.FLASH
|
||||
18:06:49.120 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:49.120 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:49.120 <- [0;32mI (16839) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:06:49.120 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:49.622 <- BU.OK flash post_part=roundtrip log_head=11 log_tail=0 partitions_size=4128768
|
||||
|
||||
18:06:51.076 -> BU.I2C
|
||||
18:06:51.589 <- [0;32mI (19849) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:06:51.589 <- [0;32mI (19849) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:06:51.589 <- [0;32mI (20449) I2C: POST: TCA9555 OK (port0=0x0123)[0m
|
||||
|
||||
18:06:51.589 <- BU.OK i2c tca9555=ack
|
||||
|
||||
18:06:51.590 -> BU.LED 0
|
||||
18:06:52.091 <- BU.OK led mask=0
|
||||
|
||||
18:06:52.344 -> BU.LED 1
|
||||
18:06:52.845 <- BU.OK led mask=1
|
||||
|
||||
18:06:53.098 -> BU.LED 3
|
||||
18:06:53.098 <- [0;32mI (21849) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:06:53.098 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:53.599 <- BU.OK led mask=3
|
||||
|
||||
18:06:53.850 -> BU.LED 7
|
||||
18:06:54.353 <- BU.OK led mask=7
|
||||
|
||||
18:06:54.604 -> BU.LED 6
|
||||
18:06:55.117 <- BU.OK led mask=6
|
||||
|
||||
18:06:55.117 -> BU.LED 0
|
||||
18:06:55.633 <- BU.OK led mask=0
|
||||
|
||||
18:06:57.108 -> BU.ADC
|
||||
18:06:57.108 <- [0;32mI (24859) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:06:57.108 <- [0;32mI (24859) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:06:57.613 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:06:57.613 <- BU.OK adc bat_mv=1642 bat_V=13.003 isens_mv=1666 isens_A=-1.21 voc_mv=3150 fault=1
|
||||
|
||||
18:07:01.579 -> BU.SENSORS.WATCH 0
|
||||
18:07:01.579 <- [0;32mI (26859) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:07:01.580 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:01.580 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:01.580 <- [0;32mI (29869) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:07:01.580 <- [0;32mI (29869) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:07:02.011 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:02.011 <- BU.EVENT state t=16.53 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:02.011 <- BU.EVENT state t=16.79 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:02.519 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:02.519 <- BU.EVENT state t=17.04 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:02.519 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:02.519 <- BU.EVENT state t=17.29 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:03.034 <- [0;32mI (31869) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:07:03.034 <- BU.EVENT state t=17.54 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:03.034 <- BU.EVENT state t=17.79 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:03.536 <- BU.EVENT state t=18.05 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:03.536 <- BU.EVENT state t=18.30 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:04.038 <- BU.EVENT state t=18.55 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:04.038 <- BU.EVENT state t=18.80 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:04.540 <- BU.EVENT state t=19.05 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:04.540 <- BU.EVENT state t=19.30 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:05.055 <- BU.EVENT state t=19.55 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:05.055 <- BU.EVENT state t=19.80 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:05.537 <- BU.EVENT state t=20.05 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:05.537 <- BU.EVENT state t=20.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:05.537 <- [0;32mI (34879) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:07:06.038 <- [0;32mI (34879) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:07:06.038 <- BU.EVENT state t=20.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:06.038 <- BU.EVENT state t=20.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:06.383 <- BU.EVENT state t=21.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:06.383 <- BU.EVENT sensor name=SAFETY edge=make t=21.25
|
||||
|
||||
18:07:06.384 <- BU.EVENT sensor name=SAFETY edge=break t=21.26
|
||||
|
||||
18:07:06.882 <- BU.EVENT state t=21.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=2 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:06.882 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:06.882 <- BU.EVENT sensor name=SAFETY edge=make t=21.46
|
||||
|
||||
18:07:06.885 <- BU.EVENT state t=21.56 SAFETY=1 DRIVE=0 JACK=0 AUX=0 isr_s=3 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:07.381 <- BU.EVENT state t=21.81 SAFETY=1 DRIVE=0 JACK=0 AUX=0 isr_s=3 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:07.381 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:07.381 <- BU.EVENT state t=22.06 SAFETY=1 DRIVE=0 JACK=0 AUX=0 isr_s=3 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:07.381 <- BU.EVENT sensor name=SAFETY edge=break t=22.20
|
||||
|
||||
18:07:07.881 <- BU.EVENT state t=22.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:07.882 <- [0;32mI (36879) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:07:07.882 <- BU.EVENT state t=22.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:07.882 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:08.383 <- BU.EVENT state t=22.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:08.383 <- BU.EVENT state t=23.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:08.890 <- BU.EVENT state t=23.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:08.890 <- BU.EVENT state t=23.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:08.890 <- BU.EVENT state t=23.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:09.396 <- BU.EVENT state t=24.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:09.396 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:09.396 <- BU.EVENT state t=24.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:09.896 <- BU.EVENT state t=24.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:09.896 <- BU.EVENT state t=24.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:10.397 <- BU.EVENT state t=25.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:10.397 <- BU.EVENT state t=25.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:10.643 <- [0;32mI (39889) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:07:10.643 <- [0;32mI (39889) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:07:10.643 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:11.151 <- BU.EVENT state t=25.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:11.151 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:11.151 <- BU.EVENT state t=25.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:11.151 <- BU.EVENT state t=26.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:11.667 <- BU.EVENT state t=26.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:11.667 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:11.667 <- BU.EVENT state t=26.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:12.182 <- BU.EVENT state t=26.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:12.182 <- BU.EVENT state t=27.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:12.641 <- BU.EVENT state t=27.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:12.641 <- [0;32mI (41889) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:07:12.641 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:13.144 <- BU.EVENT state t=27.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:13.144 <- BU.EVENT state t=27.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:13.144 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:13.654 <- BU.EVENT state t=28.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:13.654 <- BU.EVENT state t=28.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:13.654 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:13.654 <- BU.EVENT state t=28.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:14.157 <- BU.EVENT state t=28.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:14.157 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:14.157 <- BU.EVENT state t=29.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:14.662 <- BU.EVENT state t=29.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:14.662 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:14.662 <- BU.EVENT state t=29.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:15.164 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:15.164 <- BU.EVENT state t=29.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:15.164 <- BU.EVENT state t=30.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:15.557 <- BU.EVENT state t=30.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:15.557 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:15.557 <- [0;32mI (44899) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:07:16.067 <- [0;32mI (44899) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:07:16.067 <- BU.EVENT state t=30.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:16.067 <- BU.EVENT state t=30.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:16.574 <- BU.EVENT state t=31.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:16.574 <- BU.EVENT state t=31.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:16.574 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:17.076 <- BU.EVENT state t=31.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:17.076 <- BU.EVENT state t=31.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:17.551 <- BU.EVENT state t=32.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:17.551 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:17.551 <- BU.EVENT state t=32.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:18.060 <- [0;32mI (46899) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:07:18.060 <- BU.EVENT state t=32.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:18.060 <- BU.EVENT state t=32.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:18.575 <- BU.EVENT state t=33.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:18.575 <- BU.EVENT state t=33.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:19.090 <- BU.EVENT state t=33.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:19.090 <- BU.EVENT state t=33.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:19.595 <- BU.EVENT state t=34.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:19.595 <- BU.EVENT state t=34.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:20.097 <- BU.EVENT state t=34.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:20.097 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:20.097 <- BU.EVENT state t=34.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:20.567 <- BU.EVENT state t=35.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:20.567 <- BU.EVENT state t=35.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:20.567 <- [0;32mI (49909) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:07:20.986 <- [0;32mI (49909) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:07:20.986 <- BU.EVENT state t=35.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:20.986 <- BU.EVENT state t=35.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:21.143 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:21.143 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:21.143 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:21.143 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:21.645 <- BU.EVENT state t=36.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:21.645 <- BU.EVENT state t=36.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:21.645 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:21.645 <- BU.EVENT state t=36.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:22.160 <- BU.EVENT state t=36.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:22.160 <- BU.EVENT state t=37.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:22.641 <- BU.EVENT state t=37.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:22.641 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:22.641 <- [0;32mI (51909) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:07:23.143 <- BU.EVENT state t=37.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:23.143 <- BU.EVENT state t=37.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:23.143 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:07:23.648 <- BU.EVENT state t=38.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:23.648 <- BU.EVENT state t=38.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=4 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:07:23.648 <- E rmt: hw buffer too small, received symbols truncated
|
||||
2324
BRINGUP_22APR2026_1808.txt
Normal file
2324
BRINGUP_22APR2026_1808.txt
Normal file
File diff suppressed because it is too large
Load Diff
753
BRINGUP_22APR2026_1817.txt
Normal file
753
BRINGUP_22APR2026_1817.txt
Normal file
@@ -0,0 +1,753 @@
|
||||
18:17:18.258 == Flashing COM3 ==
|
||||
18:17:18.261 flashing from D:\SC\SC-F001\build
|
||||
18:17:18.262 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
18:17:43.243 == Flash complete ==
|
||||
18:17:44.744 Connecting to COM3 @ 115200 ...
|
||||
18:17:44.749 -> BU.BEGIN
|
||||
18:17:44.962 <- BU.BEGIN
|
||||
|
||||
18:17:44.962 <-
|
||||
|
||||
18:17:44.962 <- BU.OK begin fw=a775999-dirty board=V5 t=0.00
|
||||
|
||||
18:17:44.963 -> BU.INFO
|
||||
18:17:44.963 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:44.963 <- [0;32mI (1819) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:17:44.963 <- [0;32mI (1829) BT_HID: BLE HID host initialised[0m
|
||||
|
||||
18:17:44.986 <- [0;32mI (1829) WEBSERVER: Initializing webserver...[0m
|
||||
|
||||
18:17:44.986 <- [0;32mI (1829) WEBSERVER: AP LAUNCHING[0m
|
||||
|
||||
18:17:44.986 <- I (1849) wifi:wifi driver task: 3ffe2884, prio:23, stack:6656, core=0
|
||||
|
||||
18:17:44.986 <- I (1849) wifi:wifi firmware version: ccaebfa
|
||||
|
||||
18:17:44.986 <- I (1849) wifi:wifi certification version: v7.0
|
||||
|
||||
18:17:45.008 <- I (1849) wifi:config NVS flash: enabled
|
||||
|
||||
18:17:45.008 <- I (1859) wifi:config nano formating: disabled
|
||||
|
||||
18:17:45.008 <- BU.OK info reset=POWERON heap=115124 min_heap=114096 fw=a775999-dirty build=2026-04-22 21:25:54
|
||||
|
||||
18:17:53.122 -> BU.FLASH
|
||||
18:17:53.122 <- I (1859) wifi:Init data frame dynamic rx buffer num: 32
|
||||
|
||||
18:17:53.123 <- I (1869) wifi:Init static rx mgmt buffer num: 5
|
||||
|
||||
18:17:53.123 <- I (1879) wifi:Init management short buffer num: 32
|
||||
|
||||
18:17:53.123 <- I (1879) wifi:Init dynamic tx buffer num: 32
|
||||
|
||||
18:17:53.123 <- I (1889) wifi:Init static rx buffer size: 1600
|
||||
|
||||
18:17:53.123 <- I (1889) wifi:Init static rx buffer num: 10
|
||||
|
||||
18:17:53.123 <- I (1889) wifi:Init dynamic rx buffer num: 32
|
||||
|
||||
18:17:53.123 <- [0;32mI (1899) wifi_init: rx ba win: 6[0m
|
||||
|
||||
18:17:53.123 <- [0;32mI (1899) wifi_init: accept mbox: 6[0m
|
||||
|
||||
18:17:53.123 <- [0;32mI (1909) wifi_init: tcpip mbox: 32[0m
|
||||
|
||||
18:17:53.123 <- [0;32mI (1909) wifi_init: udp mbox: 6[0m
|
||||
|
||||
18:17:53.123 <- [0;32mI (1909) wifi_init: tcp mbox: 6[0m
|
||||
|
||||
18:17:53.124 <- [0;32mI (1919) wifi_init: tcp tx win: 5760[0m
|
||||
|
||||
18:17:53.124 <- [0;32mI (1919) wifi_init: tcp rx win: 5760[0m
|
||||
|
||||
18:17:53.124 <- [0;32mI (1929) wifi_init: tcp mss: 1440[0m
|
||||
|
||||
18:17:53.124 <- I (1939) wifi:mode : softAP (80:f3:da:65:25:f9)
|
||||
|
||||
18:17:53.124 <- I (1949) wifi:Total power save buffer number: 16
|
||||
|
||||
18:17:53.124 <- I (1949) wifi:Init max length of beacon: 752/752
|
||||
|
||||
18:17:53.124 <- I (1949) wifi:Init max length of beacon: 752/752
|
||||
|
||||
18:17:53.124 <- [0;32mI (1949) esp_netif_lwip: DHCP server started on interface WIFI_AP_DEF with IP: 192.168.4.1[0m
|
||||
|
||||
18:17:53.124 <- [0;32mI (1959) DNS_SERVER: DNS server started on port 53[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1969) mdns_mem: mDNS task will be created from internal RAM[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1969) WEBSERVER: SoftAP ready. SSID: sc.local, Channel: 6, Password: password[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1979) WEBSERVER: Access at: http://sc.local.local or http://192.168.4.1[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1979) WEBSERVER: STARTING HTTP[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1989) WEBSERVER: HTTP server started successfully[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1989) WEBSERVER: Registered URI handler: /[0m
|
||||
|
||||
18:17:53.125 <- [0;32mI (1999) WEBSERVER: Registered URI handler: /get[0m
|
||||
|
||||
18:17:53.126 <- [0;32mI (2009) WEBSERVER: Registered URI handler: /post[0m
|
||||
|
||||
18:17:53.126 <- [0;32mI (2009) WEBSERVER: Registered URI handler: /log[0m
|
||||
|
||||
18:17:53.126 <- [0;32mI (2019) WEBSERVER: Registered URI handler: /ota[0m
|
||||
|
||||
18:17:53.126 <- [0;32mI (2019) WEBSERVER: Registered URI handler: /*[0m
|
||||
|
||||
18:17:53.126 <- [0;32mI (2029) WEBSERVER: Webserver initialization complete[0m
|
||||
|
||||
18:17:53.126 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.126 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.126 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.126 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.127 <- [0;32mI (4839) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:17:53.127 <- [0;32mI (4839) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:17:53.127 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.127 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.127 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.127 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.127 <- [0;32mI (6839) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:17:53.127 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.127 <- [0;32mI (9849) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:17:53.639 <- [0;32mI (9849) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:17:53.639 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:53.639 <- BU.OK flash post_part=roundtrip log_head=33 log_tail=0 partitions_size=4128768
|
||||
|
||||
18:17:55.202 -> BU.I2C
|
||||
18:17:55.717 <- [0;32mI (11849) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:17:55.717 <- [0;32mI (12099) I2C: POST: TCA9555 OK (port0=0x0123)[0m
|
||||
|
||||
18:17:55.717 <- BU.OK i2c tca9555=ack
|
||||
|
||||
18:17:55.719 -> BU.LED 0
|
||||
18:17:56.221 <- BU.OK led mask=0
|
||||
|
||||
18:17:56.473 -> BU.LED 1
|
||||
18:17:56.975 <- BU.OK led mask=1
|
||||
|
||||
18:17:57.227 -> BU.LED 3
|
||||
18:17:57.740 <- BU.OK led mask=3
|
||||
|
||||
18:17:57.740 -> BU.LED 0
|
||||
18:17:58.244 <- BU.OK led mask=0
|
||||
|
||||
18:17:59.458 -> BU.ADC
|
||||
18:17:59.458 <- [0;32mI (14859) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:17:59.459 <- [0;32mI (14859) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:17:59.459 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:59.972 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:59.972 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:17:59.972 <- BU.OK adc bat_mv=1640 bat_V=12.974 isens_mv=1666 isens_A=-1.21 voc_mv=3150 fault=1
|
||||
|
||||
18:18:03.690 -> BU.SENSORS.WATCH 0
|
||||
18:18:03.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:03.690 <- [0;32mI (16859) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:03.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:03.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:03.690 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:03.974 <- [0;32mI (19869) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:03.974 <- [0;32mI (19869) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:03.974 <- BU.EVENT state t=18.94 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:04.490 <- BU.EVENT state t=19.20 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:04.490 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:04.490 <- BU.EVENT state t=19.45 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:04.490 <- BU.EVENT state t=19.70 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:05.004 <- BU.EVENT state t=19.95 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:05.004 <- BU.EVENT state t=20.20 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:05.004 <- [0;32mI (21869) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:05.504 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:05.504 <- BU.EVENT state t=20.45 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:05.504 <- BU.EVENT state t=20.70 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:06.005 <- BU.EVENT state t=20.95 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:06.005 <- BU.EVENT state t=21.20 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:06.511 <- BU.EVENT state t=21.45 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:06.511 <- BU.EVENT state t=21.70 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:07.026 <- BU.EVENT state t=21.95 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:07.026 <- BU.EVENT state t=22.20 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:07.541 <- BU.EVENT state t=22.46 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:07.541 <- BU.EVENT state t=22.71 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:08.008 <- BU.EVENT state t=22.96 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:08.008 <- BU.EVENT state t=23.21 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:08.008 <- [0;32mI (24879) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:08.517 <- [0;32mI (24879) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:08.517 <- BU.EVENT state t=23.47 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:08.517 <- BU.EVENT state t=23.72 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:09.032 <- BU.EVENT state t=23.98 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:09.032 <- BU.EVENT state t=24.23 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:09.536 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:09.536 <- BU.EVENT state t=24.48 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:09.536 <- BU.EVENT state t=24.73 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:10.038 <- BU.EVENT state t=24.98 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:10.038 <- [0;32mI (26879) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:10.038 <- BU.EVENT state t=25.23 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:10.542 <- BU.EVENT state t=25.48 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:10.542 <- BU.EVENT state t=25.74 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:11.048 <- BU.EVENT state t=25.99 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:11.048 <- BU.EVENT state t=26.24 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:11.048 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:11.555 <- BU.EVENT state t=26.49 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:11.555 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:11.555 <- BU.EVENT state t=26.74 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:12.057 <- BU.EVENT state t=26.99 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:12.057 <- BU.EVENT state t=27.24 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:12.562 <- BU.EVENT state t=27.49 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:12.562 <- BU.EVENT state t=27.74 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:13.022 <- BU.EVENT state t=27.99 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:13.022 <- BU.EVENT state t=28.24 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:13.022 <- [0;32mI (29889) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:13.529 <- [0;32mI (29889) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:13.529 <- BU.EVENT state t=28.50 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:13.529 <- BU.EVENT state t=28.75 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:14.030 <- BU.EVENT state t=29.00 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:14.030 <- BU.EVENT state t=29.25 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:14.531 <- BU.EVENT state t=29.50 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:14.531 <- BU.EVENT state t=29.75 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:15.033 <- BU.EVENT state t=30.00 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:15.033 <- [0;32mI (31889) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:15.549 <- BU.EVENT state t=30.26 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:15.549 <- BU.EVENT state t=30.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:15.549 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:15.549 <- BU.EVENT state t=30.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:16.065 <- BU.EVENT state t=31.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:16.065 <- BU.EVENT state t=31.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:16.577 <- BU.EVENT state t=31.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:16.577 <- BU.EVENT state t=31.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:17.041 <- BU.EVENT state t=32.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:17.042 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:17.042 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:17.544 <- BU.EVENT state t=32.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:17.544 <- BU.EVENT state t=32.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:17.545 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:17.545 <- BU.EVENT state t=32.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:18.042 <- BU.EVENT state t=33.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:18.042 <- [0;32mI (34899) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:18.042 <- [0;32mI (34899) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:18.543 <- BU.EVENT state t=33.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:18.543 <- BU.EVENT state t=33.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:19.046 <- BU.EVENT state t=33.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:19.046 <- BU.EVENT state t=34.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:19.046 <- BU.EVENT state t=34.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:19.547 <- BU.EVENT state t=34.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:19.547 <- BU.EVENT state t=34.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:20.053 <- BU.EVENT state t=35.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:20.053 <- [0;32mI (36899) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:20.053 <- BU.EVENT state t=35.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:20.569 <- BU.EVENT state t=35.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:20.569 <- BU.EVENT state t=35.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:21.073 <- BU.EVENT state t=36.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:21.073 <- BU.EVENT state t=36.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:21.575 <- BU.EVENT state t=36.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:21.575 <- BU.EVENT state t=36.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:22.089 <- BU.EVENT state t=37.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:22.089 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:22.089 <- BU.EVENT state t=37.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:22.591 <- BU.EVENT state t=37.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:22.591 <- BU.EVENT state t=37.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:23.043 <- BU.EVENT state t=38.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:23.043 <- [0;32mI (39909) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:23.043 <- [0;32mI (39909) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:23.549 <- BU.EVENT state t=38.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:23.549 <- BU.EVENT state t=38.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:23.549 <- BU.EVENT state t=38.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:24.050 <- BU.EVENT state t=39.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:24.050 <- BU.EVENT state t=39.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:24.563 <- BU.EVENT state t=39.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:24.563 <- BU.EVENT state t=39.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:25.064 <- BU.EVENT state t=40.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:25.064 <- [0;32mI (41909) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:25.064 <- BU.EVENT state t=40.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:25.576 <- BU.EVENT state t=40.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:25.576 <- BU.EVENT state t=40.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:26.076 <- BU.EVENT state t=41.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:26.076 <- BU.EVENT state t=41.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:26.577 <- BU.EVENT state t=41.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:26.577 <- BU.EVENT state t=41.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:27.079 <- BU.EVENT state t=42.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:27.085 <- BU.EVENT state t=42.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:27.594 <- BU.EVENT state t=42.52 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:27.594 <- BU.EVENT state t=42.77 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:28.052 <- BU.EVENT state t=43.02 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:28.052 <- BU.EVENT state t=43.27 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:28.052 <- [0;32mI (44919) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:28.553 <- [0;32mI (44919) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:28.553 <- BU.EVENT state t=43.53 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:28.553 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:29.063 <- BU.EVENT state t=43.78 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:29.063 <- BU.EVENT state t=44.03 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:29.063 <- BU.EVENT state t=44.28 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:29.579 <- BU.EVENT state t=44.53 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:29.579 <- BU.EVENT state t=44.78 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:30.083 <- BU.EVENT state t=45.03 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:30.083 <- [0;32mI (46919) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:30.083 <- BU.EVENT state t=45.28 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:30.585 <- BU.EVENT state t=45.53 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:30.585 <- BU.EVENT state t=45.78 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:30.585 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:31.089 <- BU.EVENT state t=46.03 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:31.089 <- BU.EVENT state t=46.28 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:31.591 <- BU.EVENT state t=46.53 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:31.591 <- BU.EVENT state t=46.78 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:31.591 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:32.051 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:32.051 <- BU.EVENT state t=47.03 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:32.051 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:32.559 <- BU.EVENT state t=47.28 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:32.559 <- BU.EVENT state t=47.53 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:32.559 <- BU.EVENT state t=47.78 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:33.061 <- BU.EVENT state t=48.03 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:33.061 <- BU.EVENT state t=48.28 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:33.562 <- [0;32mI (49929) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:33.562 <- [0;32mI (49929) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:33.562 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:33.562 <- BU.EVENT state t=48.54 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:34.075 <- BU.EVENT state t=48.79 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:34.075 <- BU.EVENT state t=49.04 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:34.075 <- BU.EVENT state t=49.29 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:34.577 <- BU.EVENT state t=49.54 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:34.577 <- BU.EVENT state t=49.79 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:35.088 <- BU.EVENT state t=50.04 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:35.088 <- [0;32mI (51929) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:35.088 <- BU.EVENT state t=50.29 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:35.591 <- BU.EVENT state t=50.54 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:35.591 <- BU.EVENT state t=50.79 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:36.095 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:36.095 <- BU.EVENT state t=51.04 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:36.095 <- BU.EVENT state t=51.29 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:36.608 <- BU.EVENT state t=51.54 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:36.608 <- BU.EVENT state t=51.79 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:37.109 <- BU.EVENT state t=52.04 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:37.109 <- BU.EVENT state t=52.29 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:37.614 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:37.614 <- BU.EVENT state t=52.54 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:37.614 <- BU.EVENT state t=52.80 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:38.073 <- BU.EVENT state t=53.05 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:38.073 <- [0;32mI (54939) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:38.073 <- [0;32mI (54939) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:38.584 <- BU.EVENT state t=53.30 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:38.584 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:38.584 <- BU.EVENT state t=53.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:39.085 <- BU.EVENT state t=53.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:39.085 <- BU.EVENT state t=54.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:39.085 <- BU.EVENT state t=54.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:39.598 <- BU.EVENT state t=54.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:39.598 <- BU.EVENT state t=54.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:40.112 <- BU.EVENT state t=55.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:40.112 <- [0;32mI (56939) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:40.112 <- BU.EVENT state t=55.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:40.626 <- BU.EVENT state t=55.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:40.626 <- BU.EVENT state t=55.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:41.139 <- BU.EVENT state t=56.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:41.139 <- BU.EVENT state t=56.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:41.655 <- BU.EVENT state t=56.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:41.655 <- BU.EVENT state t=56.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:42.169 <- BU.EVENT state t=57.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:42.169 <- BU.EVENT state t=57.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:42.670 <- BU.EVENT state t=57.56 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:42.670 <- BU.EVENT state t=57.81 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:43.083 <- BU.EVENT state t=58.06 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:43.083 <- [0;32mI (59949) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:43.083 <- [0;32mI (59949) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:43.593 <- BU.EVENT state t=58.31 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:43.593 <- BU.EVENT state t=58.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:44.096 <- BU.EVENT state t=58.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:44.096 <- BU.EVENT state t=59.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:44.096 <- BU.EVENT state t=59.32 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:44.601 <- BU.EVENT state t=59.57 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:44.601 <- BU.EVENT state t=59.82 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:45.106 <- BU.EVENT state t=60.07 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:45.106 <- [0;32mI (61949) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:45.106 <- BU.EVENT state t=60.33 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:45.620 <- BU.EVENT state t=60.58 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:45.620 <- BU.EVENT state t=60.83 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:46.122 <- BU.EVENT state t=61.08 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:46.122 <- BU.EVENT state t=61.33 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:46.637 <- BU.EVENT state t=61.58 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:46.637 <- BU.EVENT state t=61.83 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:47.139 <- BU.EVENT state t=62.08 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:47.139 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:47.139 <- BU.EVENT state t=62.33 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:47.641 <- BU.EVENT state t=62.58 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:47.641 <- BU.EVENT state t=62.83 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:48.111 <- BU.EVENT state t=63.08 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:48.111 <- [0;32mI (64959) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:48.111 <- [0;32mI (64959) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:48.622 <- BU.EVENT state t=63.34 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:48.622 <- BU.EVENT state t=63.59 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:49.137 <- BU.EVENT state t=63.85 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:49.137 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:49.137 <- BU.EVENT state t=64.10 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:49.137 <- BU.EVENT state t=64.35 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:49.651 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:49.651 <- BU.EVENT state t=64.60 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:49.651 <- BU.EVENT state t=64.85 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:50.163 <- BU.EVENT state t=65.10 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:50.163 <- [0;32mI (66959) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:50.163 <- BU.EVENT state t=65.35 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:50.677 <- BU.EVENT state t=65.60 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:50.677 <- BU.EVENT state t=65.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:51.188 <- BU.EVENT state t=66.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:51.188 <- BU.EVENT state t=66.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:51.693 <- BU.EVENT state t=66.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:51.693 <- BU.EVENT state t=66.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:52.194 <- BU.EVENT state t=67.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:52.194 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:52.194 <- BU.EVENT state t=67.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:52.697 <- BU.EVENT state t=67.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:52.697 <- BU.EVENT state t=67.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:53.097 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:53.097 <- BU.EVENT state t=68.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:53.097 <- [0;32mI (69969) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:53.607 <- [0;32mI (69969) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:53.607 <- BU.EVENT state t=68.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:53.607 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:53.607 <- BU.EVENT state t=68.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:53.900 <- BU.EVENT state t=68.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:53.900 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:53.900 <- BU.EVENT state t=69.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:54.405 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:54.405 <- BU.EVENT state t=69.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:54.405 <- BU.EVENT state t=69.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:54.920 <- BU.EVENT state t=69.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:54.920 <- BU.EVENT state t=70.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=0 isr_a=0
|
||||
|
||||
18:18:55.422 <- [0;32mI (71969) BT_HID: Scanning for HID devices (3s)...[0m
|
||||
|
||||
18:18:55.422 <- BU.EVENT state t=70.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:55.422 <- BU.EVENT state t=70.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:55.923 <- BU.EVENT state t=70.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:55.923 <- BU.EVENT state t=71.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:56.438 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:56.438 <- BU.EVENT state t=71.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:56.438 <- BU.EVENT state t=71.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:56.940 <- BU.EVENT state t=71.86 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:56.940 <- BU.EVENT state t=72.11 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:57.456 <- BU.EVENT state t=72.36 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:57.456 <- BU.EVENT state t=72.61 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:57.970 <- E rmt: hw buffer too small, received symbols truncated
|
||||
|
||||
18:18:57.970 <- BU.EVENT state t=72.87 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:57.970 <- BU.EVENT state t=73.12 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:58.392 <- [0;32mI (74979) BT_HID: Found 0 HID device(s)[0m
|
||||
|
||||
18:18:58.392 <- [0;32mI (74979) BT_HID: No HID devices found, retrying in 2000ms...[0m
|
||||
|
||||
18:18:58.392 <- BU.EVENT state t=73.37 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:58.907 <- BU.EVENT state t=73.62 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:58.907 <- BU.EVENT state t=73.87 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:58.907 <- BU.EVENT state t=74.12 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:59.421 <- BU.EVENT state t=74.37 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:59.421 <- BU.EVENT state t=74.62 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
18:18:59.936 <- BU.EVENT state t=74.87 SAFETY=0 DRIVE=0 JACK=0 AUX=0 isr_s=0 isr_d=0 isr_j=1 isr_a=0
|
||||
|
||||
3
BRINGUP_22APR2026_1824.txt
Normal file
3
BRINGUP_22APR2026_1824.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
18:24:39.175 == Flashing COM3 ==
|
||||
18:24:39.177 flashing from D:\SC\SC-F001\build
|
||||
18:24:39.177 files: [('0x1000', 'bootloader/bootloader.bin'), ('0x10000', 'SC-F001.bin'), ('0x8000', 'partition_table/partition-table.bin'), ('0xd000', 'ota_data_initial.bin')]
|
||||
BIN
BRINGUP_22APR2026_1825.txt
Normal file
BIN
BRINGUP_22APR2026_1825.txt
Normal file
Binary file not shown.
BIN
bringup/__pycache__/calibrate.cpython-311.pyc
Normal file
BIN
bringup/__pycache__/calibrate.cpython-311.pyc
Normal file
Binary file not shown.
BIN
bringup/__pycache__/flash.cpython-311.pyc
Normal file
BIN
bringup/__pycache__/flash.cpython-311.pyc
Normal file
Binary file not shown.
BIN
bringup/__pycache__/flash.cpython-313.pyc
Normal file
BIN
bringup/__pycache__/flash.cpython-313.pyc
Normal file
Binary file not shown.
BIN
bringup/__pycache__/protocol.cpython-311.pyc
Normal file
BIN
bringup/__pycache__/protocol.cpython-311.pyc
Normal file
Binary file not shown.
BIN
bringup/__pycache__/protocol.cpython-313.pyc
Normal file
BIN
bringup/__pycache__/protocol.cpython-313.pyc
Normal file
Binary file not shown.
BIN
bringup/__pycache__/stages.cpython-311.pyc
Normal file
BIN
bringup/__pycache__/stages.cpython-311.pyc
Normal file
Binary file not shown.
BIN
bringup/__pycache__/stages.cpython-313.pyc
Normal file
BIN
bringup/__pycache__/stages.cpython-313.pyc
Normal file
Binary file not shown.
168
bringup/bringup.py
Normal file
168
bringup/bringup.py
Normal file
@@ -0,0 +1,168 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
SC-F001 Bring-up Tool
|
||||
|
||||
Flashes the firmware (optional) and then walks the operator through the
|
||||
bring-up procedure documented in docs/SC-F001/BRINGUP.md.
|
||||
|
||||
Usage:
|
||||
bringup.py --port <COMx | /dev/ttyUSB0> [options]
|
||||
|
||||
Options:
|
||||
--port <p> Serial port (required)
|
||||
--baud <n> Baud rate for UART protocol (default: 115200)
|
||||
--out <basename> Transcript basename (default: dated)
|
||||
|
||||
Flashing (optional):
|
||||
--flash Flash the firmware before running tests
|
||||
--build-dir <p> Build directory containing flasher_args.json
|
||||
(default: ../build/ relative to this script)
|
||||
--flash-baud <n> Baud for esptool (default: 460800)
|
||||
--erase `esptool erase_flash` before writing (slow)
|
||||
--flash-only Flash and exit (no bring-up tests)
|
||||
|
||||
Testing:
|
||||
--skip-relays Skip the live relay pulse stage
|
||||
--no-calibrate Skip battery-voltage calibration prompt
|
||||
--no-transcript Do not write a .txt transcript file
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
import time
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).parent))
|
||||
|
||||
from protocol import Link # noqa: E402
|
||||
from stages import all_stages, Tally # noqa: E402
|
||||
import flash as flasher # noqa: E402
|
||||
|
||||
|
||||
def _default_basename() -> str:
|
||||
return "BRINGUP_" + datetime.now().strftime("%d%b%Y_%H%M").upper()
|
||||
|
||||
|
||||
def _do_flash(args, log_fn) -> None:
|
||||
build_dir = Path(args.build_dir) if args.build_dir else None
|
||||
try:
|
||||
flasher.flash(
|
||||
port=args.port,
|
||||
build_dir=build_dir,
|
||||
baud=args.flash_baud,
|
||||
erase_all=args.erase,
|
||||
log=log_fn,
|
||||
)
|
||||
except flasher.FlashError as e:
|
||||
log_fn(f"FLASH FAILED: {e}")
|
||||
raise SystemExit(2)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser(description="SC-F001 bring-up tool (flash + test)")
|
||||
ap.add_argument("--port", required=True, help="serial port (COM5, /dev/ttyUSB0, ...)")
|
||||
ap.add_argument("--baud", type=int, default=115200)
|
||||
ap.add_argument("--out", default=None, help="transcript basename")
|
||||
|
||||
ap.add_argument("--flash", action="store_true",
|
||||
help="flash firmware before tests")
|
||||
ap.add_argument("--build-dir", default=None,
|
||||
help="build dir with flasher_args.json (default: ../build)")
|
||||
ap.add_argument("--flash-baud", type=int, default=460800)
|
||||
ap.add_argument("--erase", action="store_true",
|
||||
help="erase_flash before writing")
|
||||
ap.add_argument("--flash-only", action="store_true",
|
||||
help="flash and exit; skip tests")
|
||||
|
||||
ap.add_argument("--skip-relays", action="store_true")
|
||||
ap.add_argument("--no-calibrate", action="store_true")
|
||||
ap.add_argument("--no-transcript", action="store_true")
|
||||
args = ap.parse_args()
|
||||
|
||||
basename = args.out or _default_basename()
|
||||
transcript_path = None if args.no_transcript else Path(basename + ".txt")
|
||||
transcript_file = None
|
||||
transcript_cb = None
|
||||
|
||||
if transcript_path:
|
||||
transcript_file = transcript_path.open("w", encoding="utf-8")
|
||||
def _tx(line: str) -> None:
|
||||
ts = datetime.now().strftime("%H:%M:%S.%f")[:-3]
|
||||
transcript_file.write(f"{ts} {line}\n")
|
||||
transcript_file.flush()
|
||||
transcript_cb = _tx
|
||||
print(f"Transcript → {transcript_path}")
|
||||
|
||||
def _log(msg: str) -> None:
|
||||
print(msg)
|
||||
if transcript_cb:
|
||||
transcript_cb(msg)
|
||||
|
||||
# Phase 1: optional flash
|
||||
if args.flash or args.flash_only:
|
||||
_log(f"== Flashing {args.port} ==")
|
||||
_do_flash(args, _log)
|
||||
_log("== Flash complete ==")
|
||||
if args.flash_only:
|
||||
if transcript_file:
|
||||
transcript_file.close()
|
||||
return 0
|
||||
# Give the chip a moment to finish hard_reset before we open the port
|
||||
time.sleep(1.5)
|
||||
|
||||
# Phase 2: connect and walk bring-up stages
|
||||
_log(f"Connecting to {args.port} @ {args.baud} ...")
|
||||
link = Link(args.port, baud=args.baud, transcript=transcript_cb)
|
||||
link.ser.reset_input_buffer()
|
||||
|
||||
tally = Tally()
|
||||
stages = all_stages(skip_relays=args.skip_relays,
|
||||
no_calibrate=args.no_calibrate)
|
||||
|
||||
def _snapshot(t: Tally) -> tuple[int, int, int, int]:
|
||||
return (t.passed, t.failed, t.warnings, t.skipped)
|
||||
|
||||
def _restore(t: Tally, snap: tuple[int, int, int, int]) -> None:
|
||||
t.passed, t.failed, t.warnings, t.skipped = snap
|
||||
|
||||
try:
|
||||
for stage in stages:
|
||||
while True:
|
||||
snap = _snapshot(tally)
|
||||
try:
|
||||
stage(link, tally)
|
||||
except TimeoutError as e:
|
||||
print(f" TIMEOUT: {e}")
|
||||
tally.note_fail()
|
||||
except Exception as e:
|
||||
print(f" EXCEPTION in stage: {e!r}")
|
||||
tally.note_fail()
|
||||
if tally.failed > snap[1]:
|
||||
ans = input(" Stage had FAILs — retry? [y/n]: ").strip().lower()
|
||||
if ans.startswith("y"):
|
||||
_restore(tally, snap)
|
||||
continue
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
print("\nAborted by operator")
|
||||
try:
|
||||
link.send("BU.END")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
print("\n==== Bring-up summary ====")
|
||||
print(f" pass={tally.passed} fail={tally.failed} "
|
||||
f"warn={tally.warnings} skip={tally.skipped}")
|
||||
|
||||
link.close()
|
||||
if transcript_file:
|
||||
transcript_file.close()
|
||||
|
||||
return 0 if tally.failed == 0 else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
39
bringup/calibrate.py
Normal file
39
bringup/calibrate.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""Battery voltage calibration math.
|
||||
|
||||
Firmware model (power_mgmt.c:278):
|
||||
V_bat = mV * V_SENS_K + V_SENS_OFFSET
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class CalResult:
|
||||
k: float
|
||||
offset: float
|
||||
note: str
|
||||
|
||||
|
||||
def single_point_offset(bat_mv: float, v_true: float, k: float) -> CalResult:
|
||||
"""Fix K, solve for OFFSET so that V_bat(bat_mv) == v_true."""
|
||||
offset = v_true - bat_mv * k
|
||||
return CalResult(k=k, offset=offset, note="single-point offset")
|
||||
|
||||
|
||||
def two_point(
|
||||
bat_mv_1: float, v_true_1: float,
|
||||
bat_mv_2: float, v_true_2: float,
|
||||
) -> CalResult:
|
||||
"""Solve for K and OFFSET from two (mV, V) pairs."""
|
||||
dmv = bat_mv_2 - bat_mv_1
|
||||
if abs(dmv) < 1e-3:
|
||||
raise ValueError("Two calibration points are too close — pick wider V")
|
||||
k = (v_true_2 - v_true_1) / dmv
|
||||
offset = v_true_1 - bat_mv_1 * k
|
||||
return CalResult(k=k, offset=offset, note="two-point")
|
||||
|
||||
|
||||
def verify(bat_mv: float, cal: CalResult) -> float:
|
||||
return bat_mv * cal.k + cal.offset
|
||||
108
bringup/flash.py
Normal file
108
bringup/flash.py
Normal file
@@ -0,0 +1,108 @@
|
||||
"""Wrap esptool to flash the SC-F001 firmware from a build directory.
|
||||
|
||||
Reads `build/flasher_args.json` (produced by `idf.py build`) to get the
|
||||
authoritative list of offsets + binaries, then invokes esptool once with all
|
||||
of them — no hardcoded offsets here.
|
||||
|
||||
Requires esptool reachable either as a Python module (`pip install esptool`)
|
||||
or as `esptool.py` on PATH (e.g., from an ESP-IDF activation).
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
import json
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class FlashError(RuntimeError):
|
||||
pass
|
||||
|
||||
|
||||
def _default_build_dir() -> Path:
|
||||
# bringup dir sits at SC-F001/bringup; build sits at SC-F001/build
|
||||
return Path(__file__).resolve().parent.parent / "build"
|
||||
|
||||
|
||||
def _resolve_esptool_invocation() -> list[str]:
|
||||
"""Return the command prefix to run esptool, preferring the installed
|
||||
module in the current interpreter, falling back to esptool.py on PATH.
|
||||
|
||||
Raises FlashError with an actionable message if neither is available.
|
||||
"""
|
||||
if importlib.util.find_spec("esptool") is not None:
|
||||
return [sys.executable, "-m", "esptool"]
|
||||
fallback = shutil.which("esptool.py") or shutil.which("esptool")
|
||||
if fallback:
|
||||
return [fallback]
|
||||
raise FlashError(
|
||||
"esptool is not installed in this Python and not on PATH.\n"
|
||||
" Install with: "
|
||||
f"{sys.executable} -m pip install -r "
|
||||
f"{Path(__file__).parent / 'requirements.txt'}\n"
|
||||
" Or activate an ESP-IDF shell that provides esptool.py."
|
||||
)
|
||||
|
||||
|
||||
def _load_manifest(build_dir: Path) -> dict:
|
||||
manifest = build_dir / "flasher_args.json"
|
||||
if not manifest.exists():
|
||||
raise FlashError(
|
||||
f"Build manifest not found: {manifest}\n"
|
||||
f"Run `idf.py build` from SC-F001/ first, or pass --build-dir."
|
||||
)
|
||||
return json.loads(manifest.read_text())
|
||||
|
||||
|
||||
def _resolve_flash_args(build_dir: Path, manifest: dict) -> list[str]:
|
||||
"""Expand manifest into a (offset, abs-path) list suitable for esptool."""
|
||||
args: list[str] = []
|
||||
# flasher_args.json's flash_files is {offset_hex: relpath}.
|
||||
for offset_hex, rel in manifest["flash_files"].items():
|
||||
p = (build_dir / rel).resolve()
|
||||
if not p.exists():
|
||||
raise FlashError(f"Missing firmware binary: {p}")
|
||||
args.append(offset_hex)
|
||||
args.append(str(p))
|
||||
return args
|
||||
|
||||
|
||||
def flash(
|
||||
port: str,
|
||||
build_dir: Path | None = None,
|
||||
baud: int = 460800,
|
||||
erase_all: bool = False,
|
||||
log: callable = print,
|
||||
) -> None:
|
||||
build_dir = (build_dir or _default_build_dir()).resolve()
|
||||
manifest = _load_manifest(build_dir)
|
||||
|
||||
chip = manifest.get("extra_esptool_args", {}).get("chip", "esp32")
|
||||
before = manifest.get("extra_esptool_args", {}).get("before", "default_reset")
|
||||
after = manifest.get("extra_esptool_args", {}).get("after", "hard_reset")
|
||||
|
||||
esptool_cmd = _resolve_esptool_invocation()
|
||||
base_cmd = esptool_cmd + [
|
||||
"--chip", chip,
|
||||
"--port", port,
|
||||
"--baud", str(baud),
|
||||
"--before", before,
|
||||
"--after", after,
|
||||
]
|
||||
|
||||
if erase_all:
|
||||
log(f" erase_flash @ {port}")
|
||||
subprocess.check_call(base_cmd + ["erase_flash"])
|
||||
|
||||
write_args = manifest.get("write_flash_args", [])
|
||||
cmd = base_cmd + ["write_flash"] + write_args + _resolve_flash_args(build_dir, manifest)
|
||||
|
||||
log(f" flashing from {build_dir}")
|
||||
log(f" files: {list(manifest['flash_files'].items())}")
|
||||
try:
|
||||
subprocess.check_call(cmd)
|
||||
except subprocess.CalledProcessError as e:
|
||||
raise FlashError(f"esptool failed (exit {e.returncode})") from e
|
||||
209
bringup/protocol.py
Normal file
209
bringup/protocol.py
Normal file
@@ -0,0 +1,209 @@
|
||||
"""Line-oriented protocol over UART for the SC-F001 bring-up procedure.
|
||||
|
||||
The firmware side is specified in docs/SC-F001/BRINGUP.md §3.
|
||||
Commands are prefixed `BU.`; responses are `BU.OK`, `BU.ERR`, `BU.SKIP`,
|
||||
or streamed `BU.EVENT` lines.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
import time
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Callable, Iterator
|
||||
|
||||
import serial
|
||||
|
||||
|
||||
LINE_TIMEOUT_S = 2.0
|
||||
|
||||
|
||||
@dataclass
|
||||
class Response:
|
||||
status: str # "OK" | "ERR" | "SKIP"
|
||||
cmd: str
|
||||
fields: dict[str, str] = field(default_factory=dict)
|
||||
raw: str = ""
|
||||
|
||||
def get(self, key: str, default: str | None = None) -> str | None:
|
||||
return self.fields.get(key, default)
|
||||
|
||||
def getf(self, key: str, default: float = float("nan")) -> float:
|
||||
v = self.fields.get(key)
|
||||
if v is None:
|
||||
return default
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return default
|
||||
|
||||
def geti(self, key: str, default: int = 0) -> int:
|
||||
v = self.fields.get(key)
|
||||
if v is None:
|
||||
return default
|
||||
try:
|
||||
return int(v, 0)
|
||||
except ValueError:
|
||||
return default
|
||||
|
||||
|
||||
@dataclass
|
||||
class Event:
|
||||
cmd: str
|
||||
fields: dict[str, str] = field(default_factory=dict)
|
||||
raw: str = ""
|
||||
|
||||
|
||||
_KV_RE = re.compile(r'(\w[\w.]*)=("[^"]*"|\S+)')
|
||||
|
||||
|
||||
def _parse_kv(rest: str) -> dict[str, str]:
|
||||
out: dict[str, str] = {}
|
||||
for m in _KV_RE.finditer(rest):
|
||||
k = m.group(1)
|
||||
v = m.group(2)
|
||||
if v.startswith('"') and v.endswith('"'):
|
||||
v = v[1:-1]
|
||||
out[k] = v
|
||||
return out
|
||||
|
||||
|
||||
def parse_line(line: str) -> Response | Event | None:
|
||||
"""Returns None for lines that aren't bring-up protocol (boot chatter etc.)."""
|
||||
line = line.rstrip("\r\n")
|
||||
if not line.startswith("BU."):
|
||||
return None
|
||||
tokens = line.split(None, 2)
|
||||
tag = tokens[0] # BU.OK | BU.ERR | BU.EVENT | BU.SKIP
|
||||
if len(tokens) < 2:
|
||||
return None
|
||||
cmd = tokens[1]
|
||||
rest = tokens[2] if len(tokens) >= 3 else ""
|
||||
fields = _parse_kv(rest)
|
||||
if tag == "BU.EVENT":
|
||||
return Event(cmd=cmd, fields=fields, raw=line)
|
||||
status = tag.removeprefix("BU.")
|
||||
if status in ("OK", "ERR", "SKIP"):
|
||||
return Response(status=status, cmd=cmd, fields=fields, raw=line)
|
||||
return None
|
||||
|
||||
|
||||
class Link:
|
||||
"""Wraps a serial.Serial with line I/O + protocol parsing."""
|
||||
|
||||
def __init__(self, port: str, baud: int = 115200, transcript: Callable[[str], None] | None = None):
|
||||
# Don't let pyserial auto-assert DTR/RTS on open. ESP32 dev boards
|
||||
# tie those into the BOOT/EN transistor pair — default-asserted lines
|
||||
# hold the chip in reset for as long as the port is open, which
|
||||
# silently blocks every command we send.
|
||||
self.ser = serial.Serial()
|
||||
self.ser.port = port
|
||||
self.ser.baudrate = baud
|
||||
self.ser.timeout = LINE_TIMEOUT_S
|
||||
self.ser.dtr = False
|
||||
self.ser.rts = False
|
||||
self.ser.open()
|
||||
# After open, re-assert False (some platforms override on open).
|
||||
self.ser.dtr = False
|
||||
self.ser.rts = False
|
||||
self.transcript = transcript or (lambda _s: None)
|
||||
self._buf = b""
|
||||
|
||||
def close(self) -> None:
|
||||
try:
|
||||
self.ser.close()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _readline(self, deadline: float) -> str | None:
|
||||
while True:
|
||||
remaining = deadline - time.monotonic()
|
||||
if remaining <= 0:
|
||||
return None
|
||||
if b"\n" in self._buf:
|
||||
line, _, self._buf = self._buf.partition(b"\n")
|
||||
s = line.decode("utf-8", errors="replace")
|
||||
self.transcript(f"<- {s}")
|
||||
return s
|
||||
self.ser.timeout = min(remaining, 0.5)
|
||||
chunk = self.ser.read(256)
|
||||
if chunk:
|
||||
self._buf += chunk
|
||||
|
||||
def send(self, cmd: str) -> None:
|
||||
if not cmd.endswith("\n"):
|
||||
cmd = cmd + "\n"
|
||||
self.transcript(f"-> {cmd.rstrip()}")
|
||||
self.ser.write(cmd.encode("utf-8"))
|
||||
self.ser.flush()
|
||||
|
||||
def request(self, cmd: str, overall_timeout_s: float = 5.0) -> Response:
|
||||
"""Send a command and collect lines until a terminating OK/ERR/SKIP."""
|
||||
self.send(cmd)
|
||||
deadline = time.monotonic() + overall_timeout_s
|
||||
while True:
|
||||
line = self._readline(deadline)
|
||||
if line is None:
|
||||
raise TimeoutError(f"No terminating response to {cmd!r}")
|
||||
parsed = parse_line(line)
|
||||
if isinstance(parsed, Response):
|
||||
return parsed
|
||||
# Events during a non-streaming command are unexpected but not fatal
|
||||
# — swallow them and keep reading.
|
||||
|
||||
def wait_ready(self, cmd: str = "BU.BEGIN",
|
||||
per_attempt_s: float = 1.5,
|
||||
overall_timeout_s: float = 30.0,
|
||||
show_boot_chatter: bool = True) -> "Response":
|
||||
"""Send `cmd` repeatedly until we get a Response back.
|
||||
|
||||
Used once at the start of a session to ride out the boot/init time
|
||||
before uart_comms installs the UART driver — bytes sent earlier are
|
||||
dropped by the hardware FIFO and never reach the firmware.
|
||||
|
||||
When `show_boot_chatter` is True (default), non-protocol lines
|
||||
(ESP_LOG output, boot banner) are printed to stdout so the operator
|
||||
can see what the device is actually doing while we wait.
|
||||
"""
|
||||
deadline = time.monotonic() + overall_timeout_s
|
||||
last_err: Exception | None = None
|
||||
attempt = 0
|
||||
while time.monotonic() < deadline:
|
||||
attempt += 1
|
||||
remaining = deadline - time.monotonic()
|
||||
print(f" [wait_ready] attempt {attempt}, {remaining:.0f}s left")
|
||||
self.send(cmd)
|
||||
per_deadline = time.monotonic() + per_attempt_s
|
||||
while True:
|
||||
line = self._readline(per_deadline)
|
||||
if line is None:
|
||||
last_err = TimeoutError(f"no response to {cmd!r}")
|
||||
break
|
||||
parsed = parse_line(line)
|
||||
if isinstance(parsed, Response):
|
||||
return parsed
|
||||
if parsed is None and show_boot_chatter:
|
||||
stripped = line.rstrip("\r\n")
|
||||
if stripped:
|
||||
print(f" [uart] {stripped}")
|
||||
raise TimeoutError(
|
||||
f"Device never answered {cmd!r} within {overall_timeout_s:.0f}s "
|
||||
f"(last: {last_err})"
|
||||
)
|
||||
|
||||
def request_stream(
|
||||
self, cmd: str, overall_timeout_s: float
|
||||
) -> Iterator[Event | Response]:
|
||||
"""Yield each Event, then the terminating Response."""
|
||||
self.send(cmd)
|
||||
deadline = time.monotonic() + overall_timeout_s
|
||||
while True:
|
||||
line = self._readline(deadline)
|
||||
if line is None:
|
||||
raise TimeoutError(f"Timed out during streaming {cmd!r}")
|
||||
parsed = parse_line(line)
|
||||
if parsed is None:
|
||||
continue
|
||||
yield parsed
|
||||
if isinstance(parsed, Response):
|
||||
return
|
||||
2
bringup/requirements.txt
Normal file
2
bringup/requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
pyserial>=3.5
|
||||
esptool>=4.6
|
||||
474
bringup/stages.py
Normal file
474
bringup/stages.py
Normal file
@@ -0,0 +1,474 @@
|
||||
"""One function per bring-up stage. Each is explicit and independently
|
||||
runnable from the operator prompt — no implicit sequencing between them."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Callable
|
||||
|
||||
from protocol import Link, Response, Event
|
||||
|
||||
|
||||
@dataclass
|
||||
class Tally:
|
||||
passed: int = 0
|
||||
failed: int = 0
|
||||
skipped: int = 0
|
||||
warnings: int = 0
|
||||
|
||||
def note_pass(self) -> None: self.passed += 1
|
||||
def note_fail(self) -> None: self.failed += 1
|
||||
def note_skip(self) -> None: self.skipped += 1
|
||||
def note_warn(self) -> None: self.warnings += 1
|
||||
|
||||
|
||||
def _prompt(msg: str, accept_skip: bool = True) -> str:
|
||||
"""Block for operator input. Returns 'run', 'skip', or 'quit'."""
|
||||
hint = " [Enter=run" + (", s=skip" if accept_skip else "") + ", q=quit]"
|
||||
ans = input(msg + hint + ": ").strip().lower()
|
||||
if ans in ("", "y", "yes", "r", "run"):
|
||||
return "run"
|
||||
if ans in ("s", "skip") and accept_skip:
|
||||
return "skip"
|
||||
if ans in ("q", "quit", "exit"):
|
||||
return "quit"
|
||||
# anything else — treat as run, operator can always quit with Ctrl-C
|
||||
return "run"
|
||||
|
||||
|
||||
def _show_response(label: str, r: Response) -> None:
|
||||
bag = " ".join(f"{k}={v}" for k, v in r.fields.items())
|
||||
print(f" [{r.status}] {label} {bag}")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 0 — Begin + identify
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stage_begin(link: Link, t: Tally) -> None:
|
||||
print("\n== Stage 0 — Begin ==")
|
||||
print(" Waiting for device to finish booting ...")
|
||||
r = link.wait_ready("BU.BEGIN", per_attempt_s=1.5, overall_timeout_s=30.0)
|
||||
_show_response("begin", r)
|
||||
if r.status != "OK":
|
||||
t.note_fail(); raise SystemExit("Device did not enter bring-up mode")
|
||||
r = link.request("BU.INFO")
|
||||
_show_response("info", r)
|
||||
(t.note_pass if r.status == "OK" else t.note_fail)()
|
||||
print(f" -> fw={r.get('fw')} board={r.get('board', '?')} reset={r.get('reset')} "
|
||||
f"heap={r.get('heap')}")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 1 — Flash & persistence
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stage_flash(link: Link, t: Tally) -> None:
|
||||
print("\n== Stage 1 — Flash & storage ==")
|
||||
if _prompt(" Run flash roundtrip + log head/tail check") != "run":
|
||||
t.note_skip(); return
|
||||
r = link.request("BU.FLASH", overall_timeout_s=10)
|
||||
_show_response("flash", r)
|
||||
(t.note_pass if r.status == "OK" else t.note_fail)()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 2 — I2C + LEDs
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stage_i2c_led(link: Link, t: Tally) -> None:
|
||||
import threading
|
||||
import time
|
||||
|
||||
print("\n== Stage 2 — I2C / TCA9555 / LEDs ==")
|
||||
if _prompt(" Probe TCA9555 and run LED waterfall") != "run":
|
||||
t.note_skip(); return
|
||||
|
||||
r = link.request("BU.I2C")
|
||||
_show_response("i2c", r)
|
||||
if r.status != "OK":
|
||||
t.note_fail(); return
|
||||
t.note_pass()
|
||||
|
||||
# Waterfall: 000 → 001 → 011 → 111 → 110 → 100 → 000, looped.
|
||||
pattern = [0b000, 0b001, 0b011, 0b111, 0b110, 0b100]
|
||||
step_s = 0.25
|
||||
|
||||
stop = threading.Event()
|
||||
|
||||
def driver() -> None:
|
||||
i = 0
|
||||
while not stop.is_set():
|
||||
try:
|
||||
link.request(f"BU.LED {pattern[i % len(pattern)]}",
|
||||
overall_timeout_s=2.0)
|
||||
except Exception as e:
|
||||
print(f" [led] {e!r}")
|
||||
break
|
||||
i += 1
|
||||
# Sleep in small chunks so we can stop promptly.
|
||||
for _ in range(int(step_s * 20)):
|
||||
if stop.is_set():
|
||||
return
|
||||
time.sleep(0.05)
|
||||
|
||||
th = threading.Thread(target=driver, daemon=True)
|
||||
th.start()
|
||||
|
||||
print(" LED waterfall running — watch the board.")
|
||||
try:
|
||||
while True:
|
||||
ans = input(" Did the waterfall look correct? [y/n]: ").strip().lower()
|
||||
if ans.startswith("y"):
|
||||
verdict = "pass"; break
|
||||
if ans.startswith("n"):
|
||||
verdict = "fail"; break
|
||||
finally:
|
||||
stop.set()
|
||||
th.join(timeout=3)
|
||||
try:
|
||||
link.request("BU.LED 0", overall_timeout_s=2.0)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if verdict == "pass":
|
||||
t.note_pass()
|
||||
else:
|
||||
print(" LED visual check FAILED")
|
||||
t.note_fail()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 3 — ADC + battery calibration
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stage_adc(link: Link, t: Tally, calibrate: bool = True) -> None:
|
||||
print("\n== Stage 3 — Analog front-end ==")
|
||||
if _prompt(" Read ADC snapshot (battery / current / FAULT / VOC)") != "run":
|
||||
t.note_skip(); return
|
||||
|
||||
r = link.request("BU.ADC")
|
||||
_show_response("adc", r)
|
||||
if r.status != "OK":
|
||||
t.note_fail(); return
|
||||
t.note_pass()
|
||||
|
||||
bat_V = r.getf("bat_V", 0.0)
|
||||
print(f" -> battery reports {bat_V:.3f} V")
|
||||
|
||||
# V5-specific checks — INFORMATIONAL only on the current V5 boards,
|
||||
# because both VOC and FAULT are wired straight to the ESP32 with no
|
||||
# external resistors. Without a pull-down on VOC the pin floats at VDD
|
||||
# (IC has a ~10 µA internal current source toward VDD, needs an
|
||||
# external RL_VOC to GND to set the OC threshold). Without a pull-up
|
||||
# on FAULT (open-drain, active-low) the line is undefined. Neither
|
||||
# reading is actionable in firmware until the board is respun —
|
||||
# GPIO36/39 are input-only on ESP32 and don't have internal pulls.
|
||||
# See docs/SC-F001/README.md "V5 hardware caveats".
|
||||
if "voc_mv" in r.fields:
|
||||
voc_mv = r.geti("voc_mv")
|
||||
in_range = 330 <= voc_mv <= 660
|
||||
print(f" INFO: VOC={voc_mv} mV "
|
||||
f"({'in' if in_range else 'out of'} datasheet linear range 330–660 mV)")
|
||||
if "fault" in r.fields:
|
||||
if r.geti("fault") == 1:
|
||||
print(" INFO: FAULT pin reads LOW — expected on V5 boards without "
|
||||
"an external pull-up on the FAULT trace")
|
||||
|
||||
if not calibrate:
|
||||
return
|
||||
_run_battery_cal(link, t)
|
||||
|
||||
|
||||
def _run_battery_cal(link: Link, t: Tally) -> None:
|
||||
from calibrate import single_point_offset, verify
|
||||
|
||||
print("\n-- Battery voltage calibration --")
|
||||
while True:
|
||||
ans = input(" Run calibration now? [y/n]: ").strip().lower()
|
||||
if ans.startswith("n"):
|
||||
t.note_skip(); return
|
||||
if ans.startswith("y"):
|
||||
break
|
||||
|
||||
# Read current K and raw mV.
|
||||
k_r = link.request("BU.PARAM GET V_SENS_K")
|
||||
if k_r.status != "OK":
|
||||
print(" Could not read V_SENS_K"); t.note_fail(); return
|
||||
k = k_r.getf("value")
|
||||
|
||||
adc_r = link.request("BU.ADC")
|
||||
bat_mv = adc_r.getf("bat_mv")
|
||||
if bat_mv == 0.0:
|
||||
print(" ADC read looks bogus (mv=0)"); t.note_fail(); return
|
||||
|
||||
raw_ans = input(" Measure the battery at the board terminals with a DMM.\n"
|
||||
" Enter true voltage (V): ").strip()
|
||||
try:
|
||||
v_true = float(raw_ans)
|
||||
except ValueError:
|
||||
print(" Not a number — skipping cal"); t.note_skip(); return
|
||||
|
||||
cal = single_point_offset(bat_mv, v_true, k)
|
||||
predicted = verify(bat_mv, cal)
|
||||
print(f" bat_mv={bat_mv:.0f} K={k:.10f} new OFFSET={cal.offset:+.6f} V")
|
||||
print(f" predicted V_bat after cal = {predicted:.3f} (true = {v_true:.3f})")
|
||||
|
||||
if input(" Write this to the device? [y/n]: ").strip().lower().startswith("y"):
|
||||
wr = link.request(f"BU.PARAM SET V_SENS_OFFSET {cal.offset:.6f}")
|
||||
_show_response("param.set", wr)
|
||||
if wr.status != "OK":
|
||||
t.note_fail(); return
|
||||
# Verify by re-reading the ADC
|
||||
check = link.request("BU.ADC")
|
||||
new_V = check.getf("bat_V")
|
||||
err = new_V - v_true
|
||||
print(f" Post-cal bat_V = {new_V:.3f} (err {err*1000:+.1f} mV)")
|
||||
if abs(err) < 0.05:
|
||||
t.note_pass()
|
||||
else:
|
||||
print(" WARN: residual error > 50 mV")
|
||||
t.note_warn()
|
||||
else:
|
||||
print(" Calibration not written (operator declined)")
|
||||
t.note_skip()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 4 — Discrete sensors (mandatory edges)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
SENSOR_NAMES = ["SAFETY"] # JACK and DRIVE are checked via the relay pulse stage.
|
||||
|
||||
|
||||
def stage_sensors(link: Link, t: Tally) -> None:
|
||||
"""Live-print safety-sensor edges until operator presses Enter.
|
||||
|
||||
Drive and jack sensors are encoder-style and only trip while the motor
|
||||
runs — they're verified as a side effect of Stage 5 relay pulses.
|
||||
"""
|
||||
import threading
|
||||
|
||||
print("\n== Stage 4 — Sensor live view ==")
|
||||
print(" Live state of all 4 sensor pins is printed below when any one")
|
||||
print(" changes. Per-edge events also print as they arrive.")
|
||||
print(" Poke each sensor by hand / magnet / jumper to verify it responds.")
|
||||
print(" SAFETY must show both break and make to pass; the others are")
|
||||
print(" diagnostic only (drive/jack are properly tested in Stage 5).")
|
||||
print(" Press Enter when you're satisfied.")
|
||||
|
||||
state = {"make": False, "break": False}
|
||||
|
||||
last_state_line = {"v": ""}
|
||||
|
||||
def reader() -> None:
|
||||
try:
|
||||
for item in link.request_stream("BU.SENSORS.WATCH 0",
|
||||
overall_timeout_s=3600):
|
||||
if isinstance(item, Event):
|
||||
if item.cmd == "sensor":
|
||||
name = item.fields.get("name")
|
||||
edge = item.fields.get("edge")
|
||||
if name == "SAFETY" and edge in state:
|
||||
state[edge] = True
|
||||
print(f" [{name}] {edge}")
|
||||
elif item.cmd == "state":
|
||||
# Live snapshot of all four sensors. Only print when
|
||||
# the level line changes, so steady state doesn't spam.
|
||||
f = item.fields
|
||||
line = (f"SAFETY={f.get('SAFETY','?')} "
|
||||
f"DRIVE={f.get('DRIVE','?')} "
|
||||
f"JACK={f.get('JACK','?')} "
|
||||
f"AUX={f.get('AUX','?')} "
|
||||
f"isr=(s={f.get('isr_s','?')} "
|
||||
f"d={f.get('isr_d','?')} "
|
||||
f"j={f.get('isr_j','?')} "
|
||||
f"a={f.get('isr_a','?')})")
|
||||
if line != last_state_line["v"]:
|
||||
print(f" [state] {line}")
|
||||
last_state_line["v"] = line
|
||||
elif isinstance(item, Response):
|
||||
# terminating OK after we aborted
|
||||
return
|
||||
except Exception as e: # pragma: no cover — defensive
|
||||
print(f" [reader] {e!r}")
|
||||
|
||||
th = threading.Thread(target=reader, daemon=True)
|
||||
th.start()
|
||||
|
||||
input(" Press Enter when SAFETY has been actuated: ")
|
||||
|
||||
# Kick the firmware out of its watch loop: any byte aborts.
|
||||
link.send("") # just the \n
|
||||
th.join(timeout=3)
|
||||
|
||||
if state["make"] and state["break"]:
|
||||
print(" SAFETY: PASS (saw break and make)")
|
||||
t.note_pass()
|
||||
else:
|
||||
missing = [k for k, v in state.items() if not v]
|
||||
print(f" SAFETY: FAIL — missed {missing}")
|
||||
t.note_fail()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 5 — Relay bridges
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# (bridge, dir, ms, (dI_min, dI_max), check_edges)
|
||||
# check_edges → bridge has an encoder-style sensor; pulse must produce
|
||||
# at least one edge on it.
|
||||
RELAY_TESTS = [
|
||||
("SENSORS", "ON", 200, (0.0, 0.0), False),
|
||||
("DRIVE", "FWD", 1000, (0.5, 25.0), True),
|
||||
("DRIVE", "REV", 1000, (0.5, 25.0), True),
|
||||
("JACK", "UP", 500, (0.2, 25.0), True),
|
||||
("JACK", "DOWN", 500, (0.2, 25.0), True),
|
||||
("AUX", "FWD", 150, (0.1, 25.0), False),
|
||||
]
|
||||
|
||||
|
||||
def stage_relays(link: Link, t: Tally) -> None:
|
||||
print("\n== Stage 5 — Relay bridges ==")
|
||||
print(" PRECONDITIONS:")
|
||||
print(" - Battery connected, fuse in place")
|
||||
print(" - Drive wheels off ground / disengaged")
|
||||
print(" - Safety interlock asserted (SAFETY sensor HIGH)")
|
||||
if _prompt(" Proceed with live relay tests", accept_skip=True) != "run":
|
||||
print(" Relay stage SKIPPED"); t.note_skip(); return
|
||||
|
||||
for bridge, direction, ms, (lo, hi), check_edges in RELAY_TESTS:
|
||||
prompt = f" Pulse {bridge} {direction} for {ms} ms"
|
||||
if _prompt(prompt) != "run":
|
||||
t.note_skip(); continue
|
||||
r = link.request(f"BU.RELAY {bridge} {direction} {ms}",
|
||||
overall_timeout_s=ms / 1000.0 + 5.0)
|
||||
_show_response(f"{bridge}/{direction}", r)
|
||||
if r.status == "SKIP":
|
||||
print(" Device refused (safety?)"); t.note_skip(); continue
|
||||
if r.status != "OK":
|
||||
t.note_fail(); continue
|
||||
if bridge == "SENSORS":
|
||||
t.note_pass(); continue
|
||||
|
||||
i_before = r.getf("I_before")
|
||||
i_mid = r.getf("I_mid")
|
||||
delta = abs(i_mid - i_before)
|
||||
tripped = r.geti("tripped") == 1
|
||||
edges = r.geti("edges")
|
||||
edge_str = f" edges={edges}" if check_edges else ""
|
||||
print(f" |ΔI| = {delta:.2f} A (expected {lo}-{hi}) "
|
||||
f"tripped={tripped}{edge_str}")
|
||||
|
||||
if tripped:
|
||||
print(" FAIL: efuse tripped"); t.note_fail(); continue
|
||||
if check_edges and edges <= 0:
|
||||
print(f" FAIL: {bridge} sensor saw no edges — motor not turning?")
|
||||
t.note_fail(); continue
|
||||
if lo <= delta <= hi:
|
||||
t.note_pass()
|
||||
else:
|
||||
print(f" WARN: ΔI outside nominal")
|
||||
t.note_warn()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stage 6 — Radio & connectivity
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stage_rf(link: Link, t: Tally) -> None:
|
||||
import threading
|
||||
|
||||
print("\n== Stage 6a — RF 433 MHz ==")
|
||||
if _prompt(" Watch for RF remote codes") != "run":
|
||||
t.note_skip(); return
|
||||
|
||||
print(" Press buttons on the RF remote. Codes will print live.")
|
||||
print(" Press Enter to stop.")
|
||||
|
||||
count = {"seen": 0}
|
||||
|
||||
def reader() -> None:
|
||||
try:
|
||||
for item in link.request_stream("BU.RF.WATCH 0",
|
||||
overall_timeout_s=3600):
|
||||
if isinstance(item, Event) and item.cmd == "rf":
|
||||
code = item.fields.get("code", "?")
|
||||
print(f" rf code={code}")
|
||||
count["seen"] += 1
|
||||
elif isinstance(item, Response):
|
||||
return
|
||||
except Exception as e: # pragma: no cover
|
||||
print(f" [reader] {e!r}")
|
||||
|
||||
th = threading.Thread(target=reader, daemon=True)
|
||||
th.start()
|
||||
|
||||
input(" Press Enter when done: ")
|
||||
link.send("") # abort the watch
|
||||
th.join(timeout=3)
|
||||
|
||||
print(f" -> {count['seen']} code(s) captured")
|
||||
(t.note_pass if count["seen"] > 0 else t.note_warn)()
|
||||
|
||||
|
||||
def stage_wifi(link: Link, t: Tally) -> None:
|
||||
print("\n== Stage 6b — WiFi + web UI ==")
|
||||
if _prompt(" Start SoftAP and wait for a client to load the web UI") != "run":
|
||||
t.note_skip(); return
|
||||
r = link.request("BU.WIFI.START", overall_timeout_s=20)
|
||||
_show_response("wifi.start", r)
|
||||
if r.status != "OK":
|
||||
t.note_fail(); return
|
||||
ssid = r.get("ssid", "?")
|
||||
print(f"\n Connect a device to WiFi SSID `{ssid}` and open http://192.168.4.1/")
|
||||
print(" Waiting for a client to associate and load the page... (Ctrl+C to abort)")
|
||||
try:
|
||||
for item in link.request_stream("BU.WIFI.WAIT", overall_timeout_s=3600):
|
||||
if isinstance(item, Event):
|
||||
print(f" {item.cmd} {' '.join(f'{k}={v}' for k,v in item.fields.items())}")
|
||||
elif isinstance(item, Response):
|
||||
_show_response("wifi.wait", item)
|
||||
(t.note_pass if item.status == "OK" else t.note_fail)()
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
print(" WiFi wait aborted by operator"); t.note_skip()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# End
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def stage_end(link: Link, t: Tally) -> None:
|
||||
print("\n== Stage — End ==")
|
||||
if _prompt(" Exit bring-up mode (device will reboot)") != "run":
|
||||
print(" Leaving device in bring-up mode — reset manually to resume normal firmware.")
|
||||
return
|
||||
r = link.request("BU.END", overall_timeout_s=5)
|
||||
_show_response("end", r)
|
||||
# Device reboots; no further response expected.
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Top-level driver
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Stage = Callable[[Link, Tally], None]
|
||||
|
||||
|
||||
def all_stages(skip_relays: bool = False, no_calibrate: bool = False) -> list[Stage]:
|
||||
stages: list[Stage] = [
|
||||
stage_begin,
|
||||
stage_flash,
|
||||
stage_i2c_led,
|
||||
lambda link, t: stage_adc(link, t, calibrate=not no_calibrate),
|
||||
stage_sensors,
|
||||
]
|
||||
if not skip_relays:
|
||||
stages.append(stage_relays)
|
||||
stages.extend([
|
||||
stage_rf,
|
||||
stage_wifi,
|
||||
stage_end,
|
||||
])
|
||||
return stages
|
||||
@@ -4,7 +4,7 @@
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/version.cmake)
|
||||
|
||||
idf_component_register(
|
||||
SRCS main.c log_test.c partition_test.c i2c.c rtc.c storage.c uart_comms.c control_fsm.c power_mgmt.c rf_433.c rtc.c sensors.c solar.c webserver.c simple_dns_server.c comms.c bt_hid.c # list the source files of this component
|
||||
SRCS main.c log_test.c partition_test.c i2c.c rtc.c storage.c uart_comms.c control_fsm.c power_mgmt.c bringup.c rf_433.c rtc.c sensors.c solar.c webserver.c simple_dns_server.c comms.c bt_hid.c # list the source files of this component
|
||||
INCLUDE_DIRS "." "${CMAKE_BINARY_DIR}"
|
||||
PRIV_INCLUDE_DIRS # optional, add here private include directories
|
||||
|
||||
|
||||
672
main/bringup.c
Normal file
672
main/bringup.c
Normal file
@@ -0,0 +1,672 @@
|
||||
/*
|
||||
* bringup.c — manufacturing / bench bring-up procedure over UART.
|
||||
*
|
||||
* Line protocol specified in docs/SC-F001/BRINGUP.md §3.
|
||||
* All responses are written with printf() so they share the UART stream
|
||||
* with uart_comms; keep every line short and grep-friendly.
|
||||
*
|
||||
* Distinct from the per-module POST routines (adc_post, i2c_post, ...) that
|
||||
* run on every boot — those are the actual power-on self-tests.
|
||||
*/
|
||||
|
||||
#include "bringup.h"
|
||||
#include "board_config.h"
|
||||
#include "control_fsm.h"
|
||||
#include "i2c.h"
|
||||
#include "power_mgmt.h"
|
||||
#include "rf_433.h"
|
||||
#include "sensors.h"
|
||||
#include "solar.h"
|
||||
#include "storage.h"
|
||||
#include "version.h"
|
||||
#include "webserver.h"
|
||||
|
||||
#include "esp_err.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_partition.h"
|
||||
#include "esp_system.h"
|
||||
#include "esp_task_wdt.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_wifi.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/uart.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#include <math.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
|
||||
#define TAG "BRINGUP"
|
||||
|
||||
static bool s_active = false;
|
||||
static int64_t s_start_us = 0;
|
||||
static volatile int s_http_reqs = 0;
|
||||
|
||||
/* -------- state helpers -------- */
|
||||
|
||||
bool bringup_mode_is_active(void) { return s_active; }
|
||||
|
||||
void bringup_notify_http_request(void) { s_http_reqs++; }
|
||||
|
||||
void bringup_mode_enter(void)
|
||||
{
|
||||
extern relay_port_t last_relay_state;
|
||||
s_active = true;
|
||||
s_start_us = esp_timer_get_time();
|
||||
s_http_reqs = 0;
|
||||
/* All bridges off, sensor rail (P10) up — system is still on. */
|
||||
relay_port_t idle = {.bridges = {.SENSORS = 1}};
|
||||
last_relay_state = idle;
|
||||
i2c_relays_idle();
|
||||
}
|
||||
|
||||
void bringup_mode_exit(void)
|
||||
{
|
||||
extern relay_port_t last_relay_state;
|
||||
s_active = false;
|
||||
relay_port_t idle = {.bridges = {.SENSORS = 1}};
|
||||
last_relay_state = idle;
|
||||
i2c_relays_idle();
|
||||
}
|
||||
|
||||
static float elapsed_s(void)
|
||||
{
|
||||
return (esp_timer_get_time() - s_start_us) / 1e6f;
|
||||
}
|
||||
|
||||
/* -------- output helpers -------- */
|
||||
|
||||
__attribute__((format(printf, 2, 3)))
|
||||
static void emit(const char *kind, const char *fmt, ...)
|
||||
{
|
||||
printf("BU.%s ", kind);
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
vprintf(fmt, ap);
|
||||
va_end(ap);
|
||||
printf("\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
#define OK(fmt, ...) emit("OK", fmt, ##__VA_ARGS__)
|
||||
#define ERR(fmt, ...) emit("ERR", fmt, ##__VA_ARGS__)
|
||||
#define SKIP(fmt, ...) emit("SKIP", fmt, ##__VA_ARGS__)
|
||||
#define EVT(fmt, ...) emit("EVENT", fmt, ##__VA_ARGS__)
|
||||
|
||||
/* -------- tokenizer -------- */
|
||||
|
||||
/* strsep-style: mutate s in place, return next token (no quotes handled). */
|
||||
static char *next_tok(char **s)
|
||||
{
|
||||
if (!s || !*s) return NULL;
|
||||
while (**s == ' ' || **s == '\t') (*s)++;
|
||||
if (**s == '\0') return NULL;
|
||||
char *start = *s;
|
||||
while (**s && **s != ' ' && **s != '\t') (*s)++;
|
||||
if (**s) { *(*s)++ = '\0'; }
|
||||
return start;
|
||||
}
|
||||
|
||||
static void str_upper(char *s)
|
||||
{
|
||||
for (; *s; s++) if (*s >= 'a' && *s <= 'z') *s -= 32;
|
||||
}
|
||||
|
||||
/* -------- parameter lookup by name -------- */
|
||||
|
||||
static int param_find(const char *name)
|
||||
{
|
||||
for (int i = 0; i < NUM_PARAMS; i++) {
|
||||
if (strcmp(name, get_param_name((param_idx_t)i)) == 0) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* -------- command handlers -------- */
|
||||
|
||||
static void cmd_begin(char *args)
|
||||
{
|
||||
(void)args;
|
||||
bringup_mode_enter();
|
||||
OK("begin fw=%s board=%s t=%.2f",
|
||||
FIRMWARE_VERSION,
|
||||
#ifdef BOARD_V5
|
||||
"V5",
|
||||
#else
|
||||
"V4",
|
||||
#endif
|
||||
elapsed_s());
|
||||
}
|
||||
|
||||
static void cmd_end(char *args)
|
||||
{
|
||||
(void)args;
|
||||
OK("end reboot t=%.2f", elapsed_s());
|
||||
fflush(stdout);
|
||||
vTaskDelay(pdMS_TO_TICKS(200));
|
||||
bringup_mode_exit();
|
||||
esp_restart();
|
||||
}
|
||||
|
||||
static void cmd_info(char *args)
|
||||
{
|
||||
(void)args;
|
||||
esp_reset_reason_t r = esp_reset_reason();
|
||||
const char *rname = "?";
|
||||
switch (r) {
|
||||
case ESP_RST_POWERON: rname = "POWERON"; break;
|
||||
case ESP_RST_EXT: rname = "EXT"; break;
|
||||
case ESP_RST_SW: rname = "SW"; break;
|
||||
case ESP_RST_PANIC: rname = "PANIC"; break;
|
||||
case ESP_RST_INT_WDT: rname = "INT_WDT"; break;
|
||||
case ESP_RST_TASK_WDT: rname = "TASK_WDT";break;
|
||||
case ESP_RST_WDT: rname = "WDT"; break;
|
||||
case ESP_RST_DEEPSLEEP:rname = "DEEPSLEEP";break;
|
||||
case ESP_RST_BROWNOUT: rname = "BROWNOUT";break;
|
||||
default: break;
|
||||
}
|
||||
OK("info reset=%s heap=%u min_heap=%u fw=%s build=%s",
|
||||
rname,
|
||||
(unsigned)esp_get_free_heap_size(),
|
||||
(unsigned)esp_get_minimum_free_heap_size(),
|
||||
FIRMWARE_VERSION, BUILD_DATE);
|
||||
}
|
||||
|
||||
static void cmd_flash(char *args)
|
||||
{
|
||||
(void)args;
|
||||
const esp_partition_t *p = esp_partition_find_first(
|
||||
ESP_PARTITION_TYPE_DATA, 0x42, "post_test");
|
||||
if (!p) { ERR("flash reason=\"no post_test partition\""); return; }
|
||||
|
||||
/* Erase, write pattern, read back, compare. */
|
||||
const size_t N = 64;
|
||||
uint8_t pattern[N], readback[N];
|
||||
for (size_t i = 0; i < N; i++) pattern[i] = (uint8_t)(i ^ 0xA5);
|
||||
|
||||
esp_err_t e = esp_partition_erase_range(p, 0, 4096);
|
||||
if (e != ESP_OK) { ERR("flash stage=erase err=%s", esp_err_to_name(e)); return; }
|
||||
e = esp_partition_write(p, 0, pattern, N);
|
||||
if (e != ESP_OK) { ERR("flash stage=write err=%s", esp_err_to_name(e)); return; }
|
||||
e = esp_partition_read(p, 0, readback, N);
|
||||
if (e != ESP_OK) { ERR("flash stage=read err=%s", esp_err_to_name(e)); return; }
|
||||
if (memcmp(pattern, readback, N) != 0) {
|
||||
ERR("flash stage=compare mismatch");
|
||||
return;
|
||||
}
|
||||
OK("flash post_part=roundtrip log_head=%u log_tail=%u partitions_size=%u",
|
||||
(unsigned)log_get_head(), (unsigned)log_get_tail(),
|
||||
(unsigned)(p->address));
|
||||
}
|
||||
|
||||
static void cmd_i2c(char *args)
|
||||
{
|
||||
(void)args;
|
||||
/* i2c_post re-probes TCA9555 by reading its input register. */
|
||||
esp_err_t e = i2c_post();
|
||||
if (e != ESP_OK) { ERR("i2c tca9555=nack err=%s", esp_err_to_name(e)); return; }
|
||||
OK("i2c tca9555=ack");
|
||||
}
|
||||
|
||||
static void cmd_led(char *args)
|
||||
{
|
||||
/* BU.LED <mask 0..7> [on|off] — just writes mask if given; ignores the
|
||||
* optional second token and uses it when present to set/clear. */
|
||||
char *s = args;
|
||||
char *tok = next_tok(&s);
|
||||
if (!tok) { ERR("led reason=\"missing mask\""); return; }
|
||||
unsigned mask = (unsigned)strtoul(tok, NULL, 0);
|
||||
if (mask > 7) mask = 7;
|
||||
i2c_set_led1((uint8_t)mask);
|
||||
OK("led mask=%u", mask);
|
||||
}
|
||||
|
||||
static void cmd_adc_once(void)
|
||||
{
|
||||
int bat_mv = get_bat_raw_mv();
|
||||
float bat_V = get_battery_V();
|
||||
#ifdef BOARD_V5
|
||||
int isens_mv = get_isens_raw_mv();
|
||||
float isens_A = -(isens_mv - 1650.0f) / 13.2f;
|
||||
int voc_mv = get_voc_raw_mv();
|
||||
int fault = get_hw_overcurrent_fault() ? 1 : 0;
|
||||
OK("adc bat_mv=%d bat_V=%.3f isens_mv=%d isens_A=%+.2f voc_mv=%d fault=%d",
|
||||
bat_mv, bat_V, isens_mv, isens_A, voc_mv, fault);
|
||||
#else
|
||||
OK("adc bat_mv=%d bat_V=%.3f", bat_mv, bat_V);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void cmd_adc(char *args)
|
||||
{
|
||||
(void)args;
|
||||
cmd_adc_once();
|
||||
}
|
||||
|
||||
static void cmd_adc_stream(char *args)
|
||||
{
|
||||
char *s = args;
|
||||
char *t = next_tok(&s);
|
||||
int sec = t ? atoi(t) : 5;
|
||||
if (sec < 1) sec = 1;
|
||||
if (sec > 60) sec = 60;
|
||||
|
||||
int64_t end_us = esp_timer_get_time() + (int64_t)sec * 1000000;
|
||||
while (esp_timer_get_time() < end_us) {
|
||||
#ifdef BOARD_V5
|
||||
int bat_mv = get_bat_raw_mv();
|
||||
int isens_mv = get_isens_raw_mv();
|
||||
EVT("adc t=%.2f bat_mv=%d isens_mv=%d", elapsed_s(), bat_mv, isens_mv);
|
||||
#else
|
||||
int bat_mv = get_bat_raw_mv();
|
||||
EVT("adc t=%.2f bat_mv=%d", elapsed_s(), bat_mv);
|
||||
#endif
|
||||
esp_task_wdt_reset();
|
||||
vTaskDelay(pdMS_TO_TICKS(200));
|
||||
}
|
||||
OK("adc.stream sec=%d", sec);
|
||||
}
|
||||
|
||||
static void cmd_sensors_watch(char *args)
|
||||
{
|
||||
/* BU.SENSORS.WATCH [sec]
|
||||
* sec omitted or 0 → watch indefinitely; exit when any byte arrives
|
||||
* on UART0 (operator hit Enter on the host side).
|
||||
* sec > 0 → watch for that many seconds, then return.
|
||||
*/
|
||||
char *s = args;
|
||||
char *t = next_tok(&s);
|
||||
int sec = t ? atoi(t) : 0;
|
||||
bool indefinite = (sec <= 0);
|
||||
if (!indefinite && sec > 600) sec = 600;
|
||||
|
||||
static const char *names[N_SENSORS] = {"SAFETY", "DRIVE", "JACK", "AUX"};
|
||||
bool last_state[N_SENSORS];
|
||||
bool make_seen[N_SENSORS] = {false};
|
||||
bool break_seen[N_SENSORS] = {false};
|
||||
/* Read the GPIO directly — the normal sensor pipeline runs in the FSM
|
||||
* task (sensors_check()), which is paused while bring-up is active, so
|
||||
* get_sensor() returns stale state. Active-low → inverted. */
|
||||
#define _SENS_RAW(i) (!gpio_get_level(sensor_pins[i]))
|
||||
extern uint8_t sensor_pins[N_SENSORS];
|
||||
for (int i = 0; i < N_SENSORS; i++) last_state[i] = _SENS_RAW(i);
|
||||
|
||||
int64_t end_us = esp_timer_get_time() + (int64_t)sec * 1000000;
|
||||
int64_t next_snapshot_us = esp_timer_get_time();
|
||||
while (indefinite || esp_timer_get_time() < end_us) {
|
||||
/* Abort on any UART input. */
|
||||
size_t available = 0;
|
||||
if (uart_get_buffered_data_len(UART_NUM_0, &available) == ESP_OK
|
||||
&& available > 0) {
|
||||
uint8_t drain[64];
|
||||
while (available > 0) {
|
||||
int n = uart_read_bytes(UART_NUM_0, drain, sizeof(drain), 0);
|
||||
if (n <= 0) break;
|
||||
available = (size_t)n < available ? available - (size_t)n : 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < N_SENSORS; i++) {
|
||||
bool now = _SENS_RAW(i);
|
||||
if (now != last_state[i]) {
|
||||
const char *edge = now ? "make" : "break";
|
||||
if (now) make_seen[i] = true; else break_seen[i] = true;
|
||||
EVT("sensor name=%s edge=%s t=%.2f",
|
||||
names[i], edge, elapsed_s());
|
||||
last_state[i] = now;
|
||||
}
|
||||
}
|
||||
|
||||
/* Periodic state snapshot of all four sensors — includes the
|
||||
* no-connect slot so a floating/misrouted pin is visible. */
|
||||
int64_t now_us = esp_timer_get_time();
|
||||
if (now_us >= next_snapshot_us) {
|
||||
next_snapshot_us = now_us + 250000; /* 250 ms */
|
||||
EVT("state t=%.2f SAFETY=%d DRIVE=%d JACK=%d AUX=%d "
|
||||
"isr_s=%u isr_d=%u isr_j=%u isr_a=%u",
|
||||
elapsed_s(),
|
||||
(int)_SENS_RAW(SENSOR_SAFETY),
|
||||
(int)_SENS_RAW(SENSOR_DRIVE),
|
||||
(int)_SENS_RAW(SENSOR_JACK),
|
||||
(int)_SENS_RAW(SENSOR_AUX2),
|
||||
(unsigned)get_sensor_isr_edges(SENSOR_SAFETY),
|
||||
(unsigned)get_sensor_isr_edges(SENSOR_DRIVE),
|
||||
(unsigned)get_sensor_isr_edges(SENSOR_JACK),
|
||||
(unsigned)get_sensor_isr_edges(SENSOR_AUX2));
|
||||
}
|
||||
|
||||
esp_task_wdt_reset();
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
}
|
||||
#undef _SENS_RAW
|
||||
|
||||
/* Summary: which sensors saw both edges. */
|
||||
char buf[128];
|
||||
size_t used = 0;
|
||||
for (int i = 0; i < N_SENSORS; i++) {
|
||||
const char *tag =
|
||||
(make_seen[i] && break_seen[i]) ? "both"
|
||||
: make_seen[i] ? "make_only"
|
||||
: break_seen[i] ? "break_only"
|
||||
: "none";
|
||||
int n = snprintf(buf + used, sizeof(buf) - used,
|
||||
"%s%s=%s", used ? " " : "", names[i], tag);
|
||||
if (n < 0 || (size_t)n >= sizeof(buf) - used) break;
|
||||
used += n;
|
||||
}
|
||||
OK("sensors.watch sec=%d %s", indefinite ? -1 : sec, buf);
|
||||
}
|
||||
|
||||
static bool parse_bridge(const char *s, bridge_t *out)
|
||||
{
|
||||
if (strcasecmp(s, "DRIVE") == 0) { *out = BRIDGE_DRIVE; return true; }
|
||||
if (strcasecmp(s, "JACK") == 0) { *out = BRIDGE_JACK; return true; }
|
||||
if (strcasecmp(s, "AUX") == 0) { *out = BRIDGE_AUX; return true; }
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool parse_dir(const char *s, uint8_t *out)
|
||||
{
|
||||
if (strcasecmp(s, "FWD") == 0 || strcasecmp(s, "UP") == 0)
|
||||
{ *out = BRIDGE_FWD; return true; }
|
||||
if (strcasecmp(s, "REV") == 0 || strcasecmp(s, "DOWN") == 0)
|
||||
{ *out = BRIDGE_REV; return true; }
|
||||
if (strcasecmp(s, "ON") == 0)
|
||||
{ *out = BRIDGE_ON; return true; }
|
||||
if (strcasecmp(s, "OFF") == 0)
|
||||
{ *out = BRIDGE_OFF; return true; }
|
||||
return false;
|
||||
}
|
||||
|
||||
static void cmd_relay(char *args)
|
||||
{
|
||||
char *s = args;
|
||||
char *t_bridge = next_tok(&s);
|
||||
char *t_dir = next_tok(&s);
|
||||
char *t_ms = next_tok(&s);
|
||||
if (!t_bridge || !t_dir) { ERR("relay reason=\"usage: <bridge> <dir> [ms]\""); return; }
|
||||
|
||||
int ms = t_ms ? atoi(t_ms) : 150;
|
||||
if (ms < 10) ms = 10;
|
||||
if (ms > 2000) ms = 2000;
|
||||
|
||||
if (!get_is_safe()) { SKIP("relay reason=\"safety open\""); return; }
|
||||
|
||||
/* P10 / sensor power rail. Default is ON; pulse it OFF to prove the line
|
||||
* can be driven, then restore. */
|
||||
if (strcasecmp(t_bridge, "SENSORS") == 0) {
|
||||
i2c_relays_sleep(); /* P10 low */
|
||||
vTaskDelay(pdMS_TO_TICKS(ms));
|
||||
i2c_relays_idle(); /* P10 high (restore) */
|
||||
OK("relay bridge=SENSORS ms=%d", ms);
|
||||
return;
|
||||
}
|
||||
|
||||
bridge_t b;
|
||||
uint8_t dir;
|
||||
if (!parse_bridge(t_bridge, &b)) { ERR("relay reason=\"bad bridge\""); return; }
|
||||
if (!parse_dir(t_dir, &dir)) { ERR("relay reason=\"bad dir\""); return; }
|
||||
|
||||
/* Sample current before, pulse, sample at midpoint, release, sample after.
|
||||
* FSM is paused during POST, so we drive process_bridge_current() ourselves
|
||||
* to refresh isens[].current before each read. We also mirror the relay
|
||||
* state into last_relay_state so V5's shared autozero gate (which looks at
|
||||
* last_relay_state to decide if bridges are powered) stays truthful. */
|
||||
extern volatile int64_t fsm_now;
|
||||
extern relay_port_t last_relay_state;
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(50)); /* let things settle */
|
||||
fsm_now = esp_timer_get_time();
|
||||
process_bridge_current(b);
|
||||
float I_before = get_bridge_A(b);
|
||||
|
||||
/* Which sensor to count edges on during the pulse — ISR-level counter,
|
||||
* doesn't depend on sensors_check() running. */
|
||||
sensor_t which_sensor = N_SENSORS;
|
||||
if (b == BRIDGE_DRIVE) which_sensor = SENSOR_DRIVE;
|
||||
else if (b == BRIDGE_JACK) which_sensor = SENSOR_JACK;
|
||||
uint32_t edges_before = (which_sensor < N_SENSORS)
|
||||
? get_sensor_isr_edges(which_sensor) : 0;
|
||||
|
||||
relay_port_t rs = {.raw = 0};
|
||||
switch (b) {
|
||||
case BRIDGE_DRIVE: rs.bridges.DRIVE = dir; break;
|
||||
case BRIDGE_JACK: rs.bridges.JACK = dir; break;
|
||||
case BRIDGE_AUX: rs.bridges.AUX = dir; break;
|
||||
default: ERR("relay reason=\"bad bridge idx\""); return;
|
||||
}
|
||||
rs.bridges.SENSORS = 1;
|
||||
last_relay_state = rs;
|
||||
i2c_set_relays(rs);
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(ms / 2));
|
||||
fsm_now = esp_timer_get_time();
|
||||
process_bridge_current(b);
|
||||
float I_mid = get_bridge_A(b);
|
||||
vTaskDelay(pdMS_TO_TICKS(ms - ms / 2));
|
||||
|
||||
relay_port_t idle = {.bridges = {.SENSORS = 1}};
|
||||
last_relay_state = idle;
|
||||
i2c_relays_idle();
|
||||
vTaskDelay(pdMS_TO_TICKS(50));
|
||||
fsm_now = esp_timer_get_time();
|
||||
process_bridge_current(b);
|
||||
float I_after = get_bridge_A(b);
|
||||
float heat = efuse_get_heat(b);
|
||||
int tripped = efuse_get(b) ? 1 : 0;
|
||||
uint32_t edges_after = (which_sensor < N_SENSORS)
|
||||
? get_sensor_isr_edges(which_sensor) : 0;
|
||||
uint32_t edges = edges_after - edges_before;
|
||||
|
||||
OK("relay bridge=%s dir=%s ms=%d I_before=%+.2f I_mid=%+.2f I_after=%+.2f heat=%.3f tripped=%d edges=%u",
|
||||
t_bridge, t_dir, ms, I_before, I_mid, I_after, heat, tripped, (unsigned)edges);
|
||||
}
|
||||
|
||||
static void cmd_rf_watch(char *args)
|
||||
{
|
||||
/* BU.RF.WATCH [sec]
|
||||
* sec omitted or 0 → watch indefinitely; exit when any byte arrives
|
||||
* on UART0 (operator hit Enter on the host side).
|
||||
*/
|
||||
char *s = args;
|
||||
char *t = next_tok(&s);
|
||||
int sec = t ? atoi(t) : 0;
|
||||
bool indefinite = (sec <= 0);
|
||||
if (!indefinite && sec > 600) sec = 600;
|
||||
|
||||
int64_t end_us = esp_timer_get_time() + (int64_t)sec * 1000000;
|
||||
int count = 0;
|
||||
/* Drain any stale code from before the watch started. */
|
||||
(void)rf_433_peek_latest();
|
||||
while (indefinite || esp_timer_get_time() < end_us) {
|
||||
/* Abort on any UART input. */
|
||||
size_t available = 0;
|
||||
if (uart_get_buffered_data_len(UART_NUM_0, &available) == ESP_OK
|
||||
&& available > 0) {
|
||||
uint8_t drain[64];
|
||||
while (available > 0) {
|
||||
int n = uart_read_bytes(UART_NUM_0, drain, sizeof(drain), 0);
|
||||
if (n <= 0) break;
|
||||
available = (size_t)n < available ? available - (size_t)n : 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
uint32_t code = rf_433_peek_latest();
|
||||
if (code) {
|
||||
EVT("rf code=0x%lX t=%.2f", (unsigned long)code, elapsed_s());
|
||||
count++;
|
||||
}
|
||||
esp_task_wdt_reset();
|
||||
vTaskDelay(pdMS_TO_TICKS(50));
|
||||
}
|
||||
OK("rf.watch sec=%d seen=%d", indefinite ? -1 : sec, count);
|
||||
}
|
||||
|
||||
static void cmd_wifi_start(char *args)
|
||||
{
|
||||
(void)args;
|
||||
esp_err_t e = webserver_init();
|
||||
if (e != ESP_OK) { ERR("wifi.start err=%s", esp_err_to_name(e)); return; }
|
||||
OK("wifi.start mode=AP ssid=\"%s\" ip=192.168.4.1",
|
||||
get_param_string(PARAM_WIFI_SSID));
|
||||
}
|
||||
|
||||
static void cmd_wifi_wait(char *args)
|
||||
{
|
||||
(void)args; /* no timeout — BRINGUP.md §4 Stage 6. Operator aborts via Ctrl+C. */
|
||||
wifi_sta_list_t sta = {0};
|
||||
int last_n = 0;
|
||||
while (1) {
|
||||
if (esp_wifi_ap_get_sta_list(&sta) == ESP_OK && sta.num > last_n) {
|
||||
EVT("wifi.assoc n=%d t=%.2f", sta.num, elapsed_s());
|
||||
last_n = sta.num;
|
||||
}
|
||||
/* Bail when at least one client is associated AND the web UI has
|
||||
* issued at least one request (notified by webserver). */
|
||||
if (last_n > 0 && s_http_reqs > 0) break;
|
||||
esp_task_wdt_reset();
|
||||
vTaskDelay(pdMS_TO_TICKS(200));
|
||||
}
|
||||
OK("wifi.wait clients=%d http_reqs=%d", last_n, s_http_reqs);
|
||||
}
|
||||
|
||||
static void cmd_fsm(char *args)
|
||||
{
|
||||
char *s = args;
|
||||
char *sub = next_tok(&s);
|
||||
if (!sub) sub = "INFO";
|
||||
str_upper(sub);
|
||||
if (strcmp(sub, "INFO") == 0) {
|
||||
OK("fsm state=%d err=%d idle=%d",
|
||||
(int)fsm_get_state(), (int)fsm_get_error(), fsm_is_idle() ? 1 : 0);
|
||||
} else {
|
||||
ERR("fsm reason=\"unknown subcommand\"");
|
||||
}
|
||||
}
|
||||
|
||||
static void cmd_solar_tick(char *args)
|
||||
{
|
||||
(void)args;
|
||||
(void)solar_run_fsm();
|
||||
OK("solar tick=ok chg_bulk=%d",
|
||||
gpio_get_level(GPIO_NUM_26));
|
||||
}
|
||||
|
||||
/* BU.PARAM GET <key> | BU.PARAM SET <key> <value> */
|
||||
static void cmd_param(char *args)
|
||||
{
|
||||
char *s = args;
|
||||
char *op = next_tok(&s);
|
||||
char *key = next_tok(&s);
|
||||
if (!op || !key) { ERR("param reason=\"usage: GET <k> | SET <k> <v>\""); return; }
|
||||
str_upper(op);
|
||||
int idx = param_find(key);
|
||||
if (idx < 0) { ERR("param reason=\"unknown key\" key=%s", key); return; }
|
||||
|
||||
param_type_e type = get_param_type((param_idx_t)idx);
|
||||
|
||||
if (strcmp(op, "GET") == 0) {
|
||||
param_value_t v = get_param_value_t((param_idx_t)idx);
|
||||
switch (type) {
|
||||
case PARAM_TYPE_u16: OK("param key=%s value=%u", key, v.u16); break;
|
||||
case PARAM_TYPE_i16: OK("param key=%s value=%d", key, v.i16); break;
|
||||
case PARAM_TYPE_u32: OK("param key=%s value=%u", key, (unsigned)v.u32); break;
|
||||
case PARAM_TYPE_i32: OK("param key=%s value=%d", key, (int)v.i32); break;
|
||||
case PARAM_TYPE_f32: OK("param key=%s value=%.9g", key, v.f32); break;
|
||||
case PARAM_TYPE_f64: OK("param key=%s value=%.17g",key, v.f64); break;
|
||||
case PARAM_TYPE_str: OK("param key=%s value=\"%s\"", key, get_param_string((param_idx_t)idx)); break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(op, "SET") == 0) {
|
||||
char *val = next_tok(&s);
|
||||
if (!val) { ERR("param reason=\"missing value\""); return; }
|
||||
esp_err_t e = ESP_OK;
|
||||
if (type == PARAM_TYPE_str) {
|
||||
e = set_param_string((param_idx_t)idx, val);
|
||||
} else {
|
||||
param_value_t v = {0};
|
||||
switch (type) {
|
||||
case PARAM_TYPE_u16: v.u16 = (uint16_t)strtoul(val, NULL, 0); break;
|
||||
case PARAM_TYPE_i16: v.i16 = (int16_t)strtol(val, NULL, 0); break;
|
||||
case PARAM_TYPE_u32: v.u32 = (uint32_t)strtoul(val, NULL, 0); break;
|
||||
case PARAM_TYPE_i32: v.i32 = (int32_t)strtol(val, NULL, 0); break;
|
||||
case PARAM_TYPE_f32: v.f32 = strtof(val, NULL); break;
|
||||
case PARAM_TYPE_f64: v.f64 = strtod(val, NULL); break;
|
||||
default: break;
|
||||
}
|
||||
e = set_param_value_t((param_idx_t)idx, v);
|
||||
}
|
||||
if (e != ESP_OK) { ERR("param reason=\"set failed\" err=%s", esp_err_to_name(e)); return; }
|
||||
e = commit_params();
|
||||
if (e != ESP_OK) { ERR("param reason=\"commit failed\" err=%s", esp_err_to_name(e)); return; }
|
||||
OK("param key=%s set=ok committed=yes", key);
|
||||
return;
|
||||
}
|
||||
|
||||
ERR("param reason=\"unknown op\" op=%s", op);
|
||||
}
|
||||
|
||||
/* -------- dispatcher -------- */
|
||||
|
||||
typedef void (*cmd_fn)(char *args);
|
||||
|
||||
struct cmd_entry {
|
||||
const char *name; /* uppercased, no BU. prefix */
|
||||
cmd_fn fn;
|
||||
};
|
||||
|
||||
static const struct cmd_entry CMDS[] = {
|
||||
{ "BEGIN", cmd_begin },
|
||||
{ "END", cmd_end },
|
||||
{ "INFO", cmd_info },
|
||||
{ "FLASH", cmd_flash },
|
||||
{ "I2C", cmd_i2c },
|
||||
{ "LED", cmd_led },
|
||||
{ "ADC", cmd_adc },
|
||||
{ "ADC.STREAM", cmd_adc_stream },
|
||||
{ "SENSORS.WATCH", cmd_sensors_watch},
|
||||
{ "RELAY", cmd_relay },
|
||||
{ "RF.WATCH", cmd_rf_watch },
|
||||
{ "WIFI.START", cmd_wifi_start },
|
||||
{ "WIFI.WAIT", cmd_wifi_wait },
|
||||
{ "FSM", cmd_fsm },
|
||||
{ "SOLAR.TICK", cmd_solar_tick },
|
||||
{ "PARAM", cmd_param },
|
||||
};
|
||||
|
||||
void bringup_handle_line(char *line)
|
||||
{
|
||||
/* Trim leading whitespace. */
|
||||
while (*line == ' ' || *line == '\t') line++;
|
||||
if (*line == '\0') return;
|
||||
|
||||
/* Expect "BU.<CMD> [args]" */
|
||||
if (strncasecmp(line, "BU.", 3) != 0) {
|
||||
ERR("dispatch reason=\"missing BU. prefix\"");
|
||||
return;
|
||||
}
|
||||
line += 3;
|
||||
|
||||
/* Split CMD token from args. */
|
||||
char *sp = line;
|
||||
while (*sp && *sp != ' ' && *sp != '\t') sp++;
|
||||
char *args = sp;
|
||||
if (*sp) { *sp = '\0'; args = sp + 1; }
|
||||
|
||||
str_upper(line);
|
||||
|
||||
for (size_t i = 0; i < sizeof(CMDS)/sizeof(CMDS[0]); i++) {
|
||||
if (strcmp(line, CMDS[i].name) == 0) {
|
||||
CMDS[i].fn(args);
|
||||
return;
|
||||
}
|
||||
}
|
||||
ERR("dispatch reason=\"unknown command\" cmd=%s", line);
|
||||
}
|
||||
35
main/bringup.h
Normal file
35
main/bringup.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* bringup.h — manufacturing / bench bring-up protocol over UART.
|
||||
*
|
||||
* See docs/SC-F001/BRINGUP.md for the line protocol and stage procedure.
|
||||
*
|
||||
* While bring-up mode is active:
|
||||
* - uart_comms routes every input line to bringup_handle_line() instead of
|
||||
* the JSON parser.
|
||||
* - control_fsm pauses (stays in STATE_IDLE, skips relay writes).
|
||||
* - BU.* commands drive the hardware directly via i2c_set_relays etc.
|
||||
*
|
||||
* Note: this is distinct from the per-module POST routines (adc_post,
|
||||
* i2c_post, storage_post) which run at normal boot and are genuinely
|
||||
* power-on self-tests.
|
||||
*/
|
||||
|
||||
#ifndef MAIN_BRINGUP_H_
|
||||
#define MAIN_BRINGUP_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
void bringup_mode_enter(void);
|
||||
void bringup_mode_exit(void);
|
||||
bool bringup_mode_is_active(void);
|
||||
|
||||
/* Called by uart_comms when a full line has been received in bring-up mode.
|
||||
* `line` is null-terminated, no trailing \r\n. Response is printed via
|
||||
* printf(); caller doesn't need to capture it. */
|
||||
void bringup_handle_line(char *line);
|
||||
|
||||
/* Counted by webserver when the root page is served. BU.WIFI.WAIT uses it
|
||||
* to confirm that an associated client actually loaded the UI. */
|
||||
void bringup_notify_http_request(void);
|
||||
|
||||
#endif /* MAIN_BRINGUP_H_ */
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "esp_timer.h"
|
||||
#include "i2c.h"
|
||||
#include "power_mgmt.h"
|
||||
#include "bringup.h"
|
||||
#include "rtc_wdt.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "sc_err.h"
|
||||
@@ -65,6 +66,10 @@ fsm_state_t fsm_get_state() {
|
||||
return current_state;
|
||||
}
|
||||
|
||||
bool fsm_is_idle(void) {
|
||||
return current_state == STATE_IDLE;
|
||||
}
|
||||
|
||||
static int64_t timer_end = 0;
|
||||
static int64_t timer_start = 0;
|
||||
static inline void set_timer(uint64_t us) {
|
||||
@@ -186,9 +191,15 @@ void control_task(void *param) {
|
||||
while (enabled) {
|
||||
vTaskDelayUntil(&xLastWakeTime, xFrequency);
|
||||
fsm_now = esp_timer_get_time();
|
||||
|
||||
|
||||
/* Bring-up tool owns the relays and ADCs while active — skip. */
|
||||
if (bringup_mode_is_active()) {
|
||||
esp_task_wdt_reset();
|
||||
continue;
|
||||
}
|
||||
|
||||
bool log = false;
|
||||
|
||||
|
||||
/**** READ INPUTS ****/
|
||||
for (uint8_t i = 0; i < N_BRIDGES; i++) {
|
||||
process_bridge_current(i);
|
||||
|
||||
@@ -104,6 +104,7 @@ void fsm_set_remaining_distance(float x);
|
||||
int8_t fsm_get_current_progress(int8_t remainder);
|
||||
|
||||
fsm_state_t fsm_get_state();
|
||||
bool fsm_is_idle(void);
|
||||
|
||||
int8_t get_bridge_state(bridge_t bridge);
|
||||
|
||||
|
||||
@@ -68,6 +68,14 @@ esp_err_t i2c_set_relays(relay_port_t states) {
|
||||
return tca_write_word_8(TCA_REG_OUTPUT1, states.raw);
|
||||
}
|
||||
|
||||
esp_err_t i2c_relays_idle(void) {
|
||||
return i2c_set_relays((relay_port_t){.bridges = {.SENSORS = 1}});
|
||||
}
|
||||
|
||||
esp_err_t i2c_relays_sleep(void) {
|
||||
return i2c_set_relays((relay_port_t){.raw = 0});
|
||||
}
|
||||
|
||||
esp_err_t i2c_set_led1(uint8_t state) {
|
||||
// push 3 LSB to top
|
||||
return tca_write_word_8(TCA_REG_OUTPUT0, state<<5);
|
||||
|
||||
@@ -55,6 +55,13 @@ esp_err_t i2c_stop(void);
|
||||
esp_err_t i2c_set_relays(relay_port_t states);
|
||||
esp_err_t i2c_set_led1(uint8_t state);
|
||||
|
||||
/* Normal run state: all bridges off, but P10 (sensor rail) held high.
|
||||
* Use whenever "everything off" is really "all motors off, system is still on". */
|
||||
esp_err_t i2c_relays_idle(void);
|
||||
|
||||
/* Sleep state: all bridges off AND P10 low, cutting power to the sensors. */
|
||||
esp_err_t i2c_relays_sleep(void);
|
||||
|
||||
esp_err_t i2c_poll_buttons();
|
||||
|
||||
bool i2c_get_button_tripped(uint8_t button);
|
||||
|
||||
13
main/main.c
13
main/main.c
@@ -18,6 +18,7 @@
|
||||
#include "rf_433.h"
|
||||
#include "bt_hid.h"
|
||||
#include "webserver.h"
|
||||
#include "bringup.h"
|
||||
#include "comms_events.h"
|
||||
#include "version.h"
|
||||
#include <string.h>
|
||||
@@ -160,7 +161,9 @@ void app_main(void) {esp_task_wdt_add(NULL);
|
||||
init_critical("I2C", i2c_init);
|
||||
drive_leds(LED_BOOTING); // LED on ASAP after I2C is up
|
||||
i2c_post(); // verify TCA9555 responds
|
||||
i2c_set_relays((relay_port_t){.raw=0});
|
||||
/* Sensors powered from boot; FSM will keep P10 high on every tick.
|
||||
* Drops back to 0 on soft_idle_enter() (sleep). */
|
||||
i2c_relays_idle();
|
||||
|
||||
if (rtc_xtal_init() != ESP_OK) ESP_LOGE(TAG, "RTC FAILED");
|
||||
|
||||
@@ -321,7 +324,13 @@ void app_main(void) {esp_task_wdt_add(NULL);
|
||||
|
||||
while(true) {
|
||||
vTaskDelayUntil(&xLastWakeTime, xFrequency);
|
||||
|
||||
|
||||
/* Bring-up tool owns the LEDs, buttons, and relays while active. */
|
||||
if (bringup_mode_is_active()) {
|
||||
esp_task_wdt_reset();
|
||||
continue;
|
||||
}
|
||||
|
||||
/* In soft idle: slow poll (5s) via direct GPIO, no I2C. */
|
||||
// TODO: Critique & confirm what we do in idle
|
||||
if (soft_idle_is_active()) {
|
||||
|
||||
@@ -584,6 +584,37 @@ bool get_hw_overcurrent_fault(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int read_mv_channel(adc_channel_t ch)
|
||||
{
|
||||
int raw = 0, mv = 0;
|
||||
if (adc_oneshot_read(adc1_handle, ch, &raw) != ESP_OK) return 0;
|
||||
if (adc_cali_raw_to_voltage(adc_cali_handle, raw, &mv) != ESP_OK) return 0;
|
||||
return mv;
|
||||
}
|
||||
|
||||
int get_bat_raw_mv(void)
|
||||
{
|
||||
return read_mv_channel(PIN_V_SENS_BAT);
|
||||
}
|
||||
|
||||
int get_isens_raw_mv(void)
|
||||
{
|
||||
#ifdef BOARD_V5
|
||||
return read_mv_channel(PIN_V_ISENS_MAIN);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
int get_voc_raw_mv(void)
|
||||
{
|
||||
#ifdef BOARD_V5
|
||||
return read_mv_channel(PIN_V_VOC);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
efuse_trip_t efuse_get(bridge_t bridge)
|
||||
{
|
||||
if (bridge >= N_BRIDGES) return false;
|
||||
|
||||
@@ -34,6 +34,11 @@ float get_battery_V();
|
||||
// Always false on V4.
|
||||
bool get_hw_overcurrent_fault(void);
|
||||
|
||||
// Raw, unfiltered ADC reads — used by POST. Return 0 on error.
|
||||
int get_bat_raw_mv(void);
|
||||
int get_isens_raw_mv(void); // V5 only — returns 0 on V4
|
||||
int get_voc_raw_mv(void); // V5 only — returns 0 on V4
|
||||
|
||||
void disable_autozero(bridge_t bridge);
|
||||
bool get_bridge_overcurrent(bridge_t bridge, float threshold);
|
||||
bool get_bridge_spike(bridge_t bridge, float threshold);
|
||||
|
||||
@@ -43,6 +43,15 @@ bool controls_enabled = true;
|
||||
// Temporary storage for learned keycodes (not committed to params yet)
|
||||
static int64_t temp_keycodes[NUM_RF_BUTTONS] = {0};
|
||||
|
||||
// Most recently decoded raw code, read-and-clear via rf_433_peek_latest().
|
||||
static volatile uint32_t latest_code = 0;
|
||||
|
||||
uint32_t rf_433_peek_latest(void) {
|
||||
uint32_t c = latest_code;
|
||||
latest_code = 0;
|
||||
return c;
|
||||
}
|
||||
|
||||
// For rmt_rx_register_event_callbacks
|
||||
static bool rfrx_done(rmt_channel_handle_t channel, const rmt_rx_done_event_data_t *edata, void *udata) {
|
||||
BaseType_t high_task_wakeup = pdFALSE;
|
||||
@@ -137,6 +146,7 @@ static void rf_433_receiver_task(void* param) {
|
||||
|
||||
// If we got a valid code, process it
|
||||
if (code) {
|
||||
latest_code = code;
|
||||
ESP_LOGI(TAG, "GOT KEYCODE 0x%lx [%d]", (long) code, len);
|
||||
|
||||
if (learn_flag >= 0) {
|
||||
|
||||
@@ -11,11 +11,14 @@
|
||||
|
||||
#define NUM_RF_BUTTONS 8
|
||||
|
||||
int64_t receive_keycode(void);
|
||||
|
||||
esp_err_t rf_433_init();
|
||||
esp_err_t rf_433_stop();
|
||||
|
||||
/* Consume-once peek of the most recently decoded raw code. Returns 0 if
|
||||
* none has arrived since the last call. Used by the bring-up RF.WATCH
|
||||
* stage; does not interfere with the normal decode/dispatch path. */
|
||||
uint32_t rf_433_peek_latest(void);
|
||||
|
||||
void rf_433_learn_keycode(uint8_t index);
|
||||
void rf_433_cancel_learn_keycode();
|
||||
|
||||
|
||||
@@ -81,10 +81,12 @@ void soft_idle_enter(void)
|
||||
{
|
||||
if (in_soft_idle) return;
|
||||
in_soft_idle = true;
|
||||
ESP_LOGI("RTC", "Entering soft idle (WiFi/BT off, LEDs off)");
|
||||
ESP_LOGI("RTC", "Entering soft idle (WiFi/BT off, LEDs off, sensors off)");
|
||||
webserver_stop();
|
||||
bt_hid_stop();
|
||||
i2c_set_led1(0);
|
||||
/* Drop P10 to kill sensor rail power while we're asleep. */
|
||||
i2c_relays_sleep();
|
||||
}
|
||||
|
||||
bool soft_idle_is_active(void) { return in_soft_idle; }
|
||||
@@ -95,6 +97,8 @@ void soft_idle_exit(void)
|
||||
if (!in_soft_idle) return;
|
||||
in_soft_idle = false;
|
||||
ESP_LOGI("RTC", "Exiting soft idle");
|
||||
/* Bring sensor rail back before anything else tries to read sensors. */
|
||||
i2c_relays_idle();
|
||||
webserver_restart_wifi();
|
||||
bt_hid_resume();
|
||||
rtc_reset_shutdown_timer();
|
||||
|
||||
@@ -17,14 +17,21 @@
|
||||
static const char* TAG = "SENS";
|
||||
|
||||
#ifdef BOARD_V5
|
||||
// V5 labels 2/3/4/1 → IO14/16/19/27 → SAFETY/JACK/DRIVE/nc
|
||||
// V5 physical connectors:
|
||||
// J1 = IO27 → SAFETY
|
||||
// J2 = IO14 → JACK
|
||||
// J3 = IO23 → n/c (AUX) (J3 unreliable on the V5 board, moved DRIVE off)
|
||||
// J4 = IO19 → DRIVE
|
||||
// Array order matches sensor_t: SAFETY, DRIVE, JACK, AUX2
|
||||
uint8_t sensor_pins[N_SENSORS] = {GPIO_NUM_14, GPIO_NUM_19, GPIO_NUM_16, GPIO_NUM_27};
|
||||
uint8_t sensor_pins[N_SENSORS] = {GPIO_NUM_27, GPIO_NUM_19, GPIO_NUM_14, GPIO_NUM_23};
|
||||
#else // BOARD_V4
|
||||
uint8_t sensor_pins[N_SENSORS] = {GPIO_NUM_27, GPIO_NUM_14, GPIO_NUM_16, GPIO_NUM_19};
|
||||
#endif
|
||||
|
||||
volatile int16_t sensor_count[N_SENSORS] = {0};
|
||||
/* Bumped directly in the ISR on every edge — does not require sensors_check()
|
||||
* to run, so it works even while bring-up pauses the FSM task. */
|
||||
volatile uint32_t sensor_isr_edge_count[N_SENSORS] = {0};
|
||||
static volatile uint64_t sensor_last_isr_time[N_SENSORS] = {0};
|
||||
static volatile bool sensor_stable_state[N_SENSORS] = {false};
|
||||
static QueueHandle_t sensor_event_queue = NULL;
|
||||
@@ -59,6 +66,8 @@ static void IRAM_ATTR sensor_isr_handler(void* arg) {
|
||||
uint64_t now = esp_timer_get_time();
|
||||
sensor_last_isr_time[i] = now;
|
||||
|
||||
sensor_isr_edge_count[i]++;
|
||||
|
||||
sensor_event_t evt = {.sensor_id = i, .level = !gpio_get_level(gpio_num)};
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xQueueSendFromISR(sensor_event_queue, &evt, &xHigherPriorityTaskWoken);
|
||||
@@ -69,6 +78,17 @@ esp_err_t sensors_init() {
|
||||
|
||||
uint64_t pin_mask = 0;
|
||||
for (uint8_t i = 0; i < N_SENSORS; i++) pin_mask |= (1ULL << sensor_pins[i]);
|
||||
|
||||
/* Belt-and-suspenders: force each sensor pin into digital-GPIO mode with
|
||||
* pull-up explicitly applied. gpio_config()'s pull_up_en is known to be
|
||||
* shadowed by RTC-subsystem settings on RTC-capable pins (IO27, 32, 33,
|
||||
* 34–39). gpio_reset_pin() detaches any lingering RTC/peripheral mux,
|
||||
* and the explicit gpio_set_pull_mode() call goes through the right
|
||||
* path regardless of which sub-block owns the pin. */
|
||||
for (uint8_t i = 0; i < N_SENSORS; i++) {
|
||||
gpio_reset_pin(sensor_pins[i]);
|
||||
}
|
||||
|
||||
gpio_config_t io_conf = {
|
||||
.pin_bit_mask = pin_mask,
|
||||
.mode = GPIO_MODE_INPUT,
|
||||
@@ -78,6 +98,10 @@ esp_err_t sensors_init() {
|
||||
};
|
||||
ESP_ERROR_CHECK(gpio_config(&io_conf));
|
||||
|
||||
for (uint8_t i = 0; i < N_SENSORS; i++) {
|
||||
ESP_ERROR_CHECK(gpio_set_pull_mode(sensor_pins[i], GPIO_PULLUP_ONLY));
|
||||
}
|
||||
|
||||
sensor_event_queue = xQueueCreate(16, sizeof(sensor_event_t));
|
||||
if (!sensor_event_queue) {
|
||||
ESP_LOGE(TAG, "Failed to create sensor queue");
|
||||
@@ -165,7 +189,9 @@ void sensors_check() {
|
||||
ESP_LOGI(TAG, "Safety sensor went HIGH, starting break timer");
|
||||
} else if (is_safe && (now - safety_high_start_time >= SAFETY_BREAK_DEBOUNCE_US)) {
|
||||
is_safe = false;
|
||||
i2c_set_relays((relay_port_t){.raw=0});
|
||||
/* Kill all bridges but leave the sensor rail up — we still
|
||||
* want to observe the safety input. */
|
||||
i2c_relays_idle();
|
||||
ESP_LOGI(TAG, "SAFETY BREAK - Relays disabled");
|
||||
}
|
||||
}
|
||||
@@ -198,4 +224,9 @@ int16_t get_sensor_counter(sensor_t i) {
|
||||
|
||||
void set_sensor_counter(sensor_t i, int16_t to) {
|
||||
sensor_count[i] = to;
|
||||
}
|
||||
|
||||
uint32_t get_sensor_isr_edges(sensor_t i) {
|
||||
if (i >= N_SENSORS) return 0;
|
||||
return sensor_isr_edge_count[i];
|
||||
}
|
||||
@@ -27,6 +27,11 @@ void reset_sensor_counter(sensor_t i);
|
||||
void set_sensor_counter(sensor_t i, int16_t to);
|
||||
int16_t get_sensor_counter(sensor_t i);
|
||||
|
||||
/* Raw ISR-level edge count. Bumped on every GPIO transition by the
|
||||
* sensor ISR regardless of whether sensors_check() is running; safe to
|
||||
* read during bring-up while the FSM task is paused. */
|
||||
uint32_t get_sensor_isr_edges(sensor_t i);
|
||||
|
||||
bool get_sensor(sensor_t i);
|
||||
bool get_is_safe(void);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "uart_comms.h"
|
||||
#include "comms.h"
|
||||
#include "bringup.h"
|
||||
#include "cJSON.h"
|
||||
#include "driver/uart.h"
|
||||
#include "esp_log.h"
|
||||
@@ -143,12 +144,20 @@ static void process_command(char *cmd) {
|
||||
while (*cmd == ' ' || *cmd == '\t') {
|
||||
cmd++;
|
||||
}
|
||||
|
||||
|
||||
// Ignore empty commands
|
||||
if (*cmd == '\0') {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Route bring-up traffic to the BU parser. BU.BEGIN flips the mode flag
|
||||
// so the subsequent lines in the same session come here too.
|
||||
if (bringup_mode_is_active() ||
|
||||
strncasecmp(cmd, "BU.", 3) == 0) {
|
||||
bringup_handle_line(cmd);
|
||||
return;
|
||||
}
|
||||
|
||||
// Convert to uppercase for command matching
|
||||
char command[16] = {0};
|
||||
int i = 0;
|
||||
@@ -208,36 +217,37 @@ void uart_event_task(void *pvParameters) {
|
||||
if (len > 0) {
|
||||
for (int i = 0; i < len; i++) {
|
||||
char c = (char)data[i];
|
||||
|
||||
// Echo character
|
||||
printf("%c", c);
|
||||
fflush(stdout);
|
||||
|
||||
bool quiet = bringup_mode_is_active();
|
||||
|
||||
// Echo character (suppressed in bring-up mode — machine-parseable output)
|
||||
if (!quiet) { printf("%c", c); fflush(stdout); }
|
||||
|
||||
// Handle backspace
|
||||
if (c == '\b' || c == 127) {
|
||||
if (cmd_pos > 0) {
|
||||
cmd_pos--;
|
||||
printf(" \b"); // Clear character on screen
|
||||
if (!quiet) { printf(" \b"); fflush(stdout); }
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// Handle newline/carriage return
|
||||
if (c == '\n' || c == '\r') {
|
||||
cmd_buffer[cmd_pos] = '\0';
|
||||
if (!quiet) printf("\n");
|
||||
|
||||
if (cmd_pos > 0) {
|
||||
process_command(cmd_buffer);
|
||||
}
|
||||
|
||||
cmd_pos = 0;
|
||||
if (!bringup_mode_is_active()) {
|
||||
printf("\n> ");
|
||||
fflush(stdout);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// Handle newline/carriage return
|
||||
if (c == '\n' || c == '\r') {
|
||||
cmd_buffer[cmd_pos] = '\0';
|
||||
printf("\n");
|
||||
|
||||
if (cmd_pos > 0) {
|
||||
process_command(cmd_buffer);
|
||||
}
|
||||
|
||||
cmd_pos = 0;
|
||||
printf("\n> ");
|
||||
fflush(stdout);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// Add to buffer if not full
|
||||
if (cmd_pos < CMD_MAX_LEN - 1) {
|
||||
cmd_buffer[cmd_pos++] = c;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4,7 +4,7 @@
|
||||
#include <Arduino.h>
|
||||
|
||||
const unsigned char PROGMEM html_content_gz[] = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0xb5, 0x89, 0xe7, 0x69, 0x02, 0xff, 0xed, 0x3d, 0xfd, 0x57, 0xdb, 0x48,
|
||||
0x1f, 0x8b, 0x08, 0x00, 0xe4, 0x3c, 0xe9, 0x69, 0x02, 0xff, 0xed, 0x3d, 0xfd, 0x57, 0xdb, 0x48,
|
||||
0x92, 0x3f, 0xef, 0xfc, 0x15, 0x4d, 0x92, 0x21, 0x52, 0x10, 0xc2, 0x86, 0x64, 0x66, 0xd6, 0x46,
|
||||
0x66, 0x09, 0x98, 0x0d, 0x93, 0x04, 0x78, 0xd8, 0x24, 0x33, 0xc7, 0xf1, 0x90, 0x6c, 0xb5, 0xb1,
|
||||
0x06, 0x59, 0xf2, 0x4a, 0x32, 0xc4, 0x6b, 0xfc, 0xbf, 0x5f, 0x55, 0x7f, 0x48, 0xad, 0x0f, 0x1b,
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "endian.h"
|
||||
#include "esp_ota_ops.h"
|
||||
#include "esp_timer.h"
|
||||
#include "bringup.h"
|
||||
#include "power_mgmt.h"
|
||||
#include "rf_433.h"
|
||||
#include "rtc.h"
|
||||
@@ -65,11 +66,13 @@ char http_buffer[4096];
|
||||
/* Handler to serve the HTML page */
|
||||
static esp_err_t root_get_handler(httpd_req_t *req) {
|
||||
//ESP_LOGI(TAG, "root_get_handler");
|
||||
|
||||
|
||||
if (req == NULL) {
|
||||
ESP_LOGE(TAG, "Null request pointer");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
bringup_notify_http_request();
|
||||
|
||||
// Send the HTML response
|
||||
esp_err_t err = httpd_resp_set_type(req, "text/html");
|
||||
|
||||
Reference in New Issue
Block a user