Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[android] Fix handling optional values + UI fix. #19237

Merged
merged 3 commits into from
Jun 7, 2022

Conversation

Damian-Nordic
Copy link
Contributor

Problem

  1. Generated Java cluster code incorrectly handles Optional values. It only checks whether the java reference is not null rather than if the referenced Optional object is not empty.
  2. ClusterInfoMapping structure, that describes command parameter types, stores only Optional::class for optional parameters which is not enough for applications to properly convert such an argument from string.
  3. Some buttons in Android CHIPTool main fragment may not fit in the screen on low-resolution devices.

Change overview

Fix handling Optional values in both Java code and Android CHIPTool (fixes #18274).
Use ScrollView in the Android CHIPTool main screen.

Testing

Tested that sending a command with an optional argument (using Cluster Interaction Tool in Android CHIPTool) does not crash anymore.

@github-actions
Copy link

github-actions bot commented Jun 6, 2022

PR #19237: Size comparison from acd17c7 to ab8581d

Full report (41 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section acd17c7 ab8581d change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 651579 651579 0 0.0
(read/write) 158924 158924 0 0.0
.bss 74604 74604 0 0.0
.data 3404 3404 0 0.0
.rodata 85523 85523 0 0.0
.text 565824 565824 0 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 617595 617595 0 0.0
(read/write) 158080 158080 0 0.0
.bss 73820 73820 0 0.0
.data 3344 3344 0 0.0
.rodata 74955 74955 0 0.0
.text 542408 542408 0 0.0
lock-ftd LP_CC2652R7 (read only) 682943 682943 0 0.0
(read/write) 159888 159888 0 0.0
.bss 72612 72612 0 0.0
.data 3268 3268 0 0.0
.rodata 97647 97647 0 0.0
.text 584816 584816 0 0.0
lock-mtd LP_CC2652R7 (read only) 632343 632343 0 0.0
(read/write) 145732 145732 0 0.0
.bss 68348 68348 0 0.0
.data 3268 3268 0 0.0
.rodata 97527 97527 0 0.0
.text 534328 534328 0 0.0
pump-app LP_CC2652R7 (read only) 664079 664079 0 0.0
(read/write) 179656 179656 0 0.0
.bss 72748 72748 0 0.0
.data 3300 3300 0 0.0
.rodata 85847 85847 0 0.0
.text 577752 577752 0 0.0
pump-controller-app LP_CC2652R7 (read only) 655151 655151 0 0.0
(read/write) 188696 188696 0 0.0
.bss 72860 72860 0 0.0
.data 3264 3264 0 0.0
.rodata 83895 83895 0 0.0
.text 570776 570776 0 0.0
shell LP_CC2652R7 (read only) 644602 644602 0 0.0
(read/write) 154480 154480 0 0.0
.bss 76956 76956 0 0.0
.data 3408 3408 0 0.0
.rodata 82506 82506 0 0.0
.text 561860 561860 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 602110 602110 0 0.0
.app_xip_area 461136 461136 0 0.0
.bss 83912 83912 0 0.0
.data 744 744 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 599194 599194 0 0.0
.app_xip_area 458084 458084 0 0.0
.bss 84080 84080 0 0.0
.data 712 712 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 596890 596890 0 0.0
.app_xip_area 456912 456912 0 0.0
.bss 83044 83044 0 0.0
.data 620 620 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 916016 916016 0 0.0
(read/write) 133184 133184 0 0.0
.bss 131088 131088 0 0.0
.data 2096 2096 0 0.0
.text 916008 916008 0 0.0
BRD4161A+rpc (read only) 950244 950244 0 0.0
(read/write) 149876 149876 0 0.0
.bss 147576 147576 0 0.0
.data 2300 2300 0 0.0
.text 950236 950236 0 0.0
BRD4161A+rs911x (read only) 791228 791228 0 0.0
(read/write) 129460 129460 0 0.0
.bss 127356 127356 0 0.0
.data 2104 2104 0 0.0
.text 791220 791220 0 0.0
lock-app BRD4161A+wf200 (read only) 958068 958068 0 0.0
(read/write) 128252 128252 0 0.0
.bss 126180 126180 0 0.0
.data 2072 2072 0 0.0
.text 958060 958060 0 0.0
window-app BRD4161A (read only) 901056 901056 0 0.0
(read/write) 133272 133272 0 0.0
.bss 131176 131176 0 0.0
.data 2092 2092 0 0.0
.text 901048 901048 0 0.0
esp32 all-clusters-app c3devkit (read only) 1007688 1007688 0 0.0
(read/write) 1481482 1481482 0 0.0
.dram0.bss 69168 69168 0 0.0
.dram0.data 14656 14656 0 0.0
.flash.rodata 212232 212232 0 0.0
.flash.text 1007688 1007688 0 0.0
.iram0.text 62954 62954 0 0.0
m5stack (read only) 1062651 1062651 0 0.0
(read/write) 483652 483652 0 0.0
.dram0.bss 74680 74680 0 0.0
.dram0.data 34208 34208 0 0.0
.flash.rodata 242768 242768 0 0.0
.flash.text 1057267 1057267 0 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 653284 653284 0 0.0
.bss 69964 69964 0 0.0
.data 2012 2012 0 0.0
.text 575508 575508 0 0.0
lock k32w061+release (read/write) 714280 714280 0 0.0
.bss 70404 70404 0 0.0
.data 1984 1984 0 0.0
.text 636092 636092 0 0.0
linux all-clusters-app debug (read only) 2778041 2778041 0 0.0
(read/write) 178568 178568 0 0.0
.bss 86368 86368 0 0.0
.data 2032 2032 0 0.0
.data.rel.ro 83992 83992 0 0.0
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 1024 1024 0 0.0
.rodata 246205 246205 0 0.0
.text 2357954 2357954 0 0.0
all-clusters-minimal-app debug (read only) 2653601 2653601 0 0.0
(read/write) 170408 170408 0 0.0
.bss 85536 85536 0 0.0
.data 1904 1904 0 0.0
.data.rel.ro 76792 76792 0 0.0
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 1024 1024 0 0.0
.rodata 247837 247837 0 0.0
.text 2233058 2233058 0 0.0
bridge-app debug+rpc (read only) 2031129 2031129 0 0.0
(read/write) 147928 147928 0 0.0
.bss 72896 72896 0 0.0
.data 3936 3936 0 0.0
.data.rel.ro 65528 65528 0 0.0
.dynamic 592 592 0 0.0
.got 4272 4272 0 0.0
.init 27 27 0 0.0
.init_array 688 688 0 0.0
.rodata 169824 169824 0 0.0
.text 1704786 1704786 0 0.0
chip-tool debug (read only) 9670269 9670269 0 0.0
(read/write) 611152 611152 0 0.0
.bss 23968 23968 0 0.0
.data 1120 1120 0 0.0
.data.rel.ro 579760 579760 0 0.0
.dynamic 624 624 0 0.0
.got 5008 5008 0 0.0
.init 27 27 0 0.0
.init_array 648 648 0 0.0
.rodata 497021 497021 0 0.0
.text 7760613 7760613 0 0.0
chip-tool-no-interactive-ipv6only arm64 (read only) 9421684 9421684 0 0.0
(read/write) 677153 677153 0 0.0
.bss 42257 42257 0 0.0
.data 1176 1176 0 0.0
.data.rel.ro 614968 614968 0 0.0
.dynamic 528 528 0 0.0
.got 14936 14936 0 0.0
.init 24 24 0 0.0
.init_array 184 184 0 0.0
.rodata 460900 460900 0 0.0
.text 7413172 7413172 0 0.0
lighting-app debug+rpc (read only) 2321385 2321385 0 0.0
(read/write) 153568 153568 0 0.0
.bss 74752 74752 0 0.0
.data 2048 2048 0 0.0
.data.rel.ro 71016 71016 0 0.0
.dynamic 608 608 0 0.0
.got 4344 4344 0 0.0
.init 27 27 0 0.0
.init_array 792 792 0 0.0
.rodata 188744 188744 0 0.0
.text 1966866 1966866 0 0.0
lock-app debug (read only) 2264753 2264753 0 0.0
(read/write) 148736 148736 0 0.0
.bss 73472 73472 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 67976 67976 0 0.0
.dynamic 592 592 0 0.0
.got 4336 4336 0 0.0
.init 27 27 0 0.0
.init_array 760 760 0 0.0
.rodata 202920 202920 0 0.0
.text 1901346 1901346 0 0.0
ota-provider-app debug (read only) 2066897 2066897 0 0.0
(read/write) 141584 141584 0 0.0
.bss 73024 73024 0 0.0
.data 1768 1768 0 0.0
.data.rel.ro 61000 61000 0 0.0
.dynamic 608 608 0 0.0
.got 4504 4504 0 0.0
.init 27 27 0 0.0
.init_array 648 648 0 0.0
.rodata 181240 181240 0 0.0
.text 1726562 1726562 0 0.0
ota-requestor-app debug (read only) 2094705 2094705 0 0.0
(read/write) 144424 144424 0 0.0
.bss 73728 73728 0 0.0
.data 1960 1960 0 0.0
.data.rel.ro 63096 63096 0 0.0
.dynamic 592 592 0 0.0
.got 4344 4344 0 0.0
.init 27 27 0 0.0
.init_array 672 672 0 0.0
.rodata 177152 177152 0 0.0
.text 1756994 1756994 0 0.0
shell debug (read only) 2582881 2582881 0 0.0
(read/write) 201976 201976 0 0.0
.bss 117224 117224 0 0.0
.data 1376 1376 0 0.0
.data.rel.ro 77624 77624 0 0.0
.dynamic 608 608 0 0.0
.got 4192 4192 0 0.0
.init 27 27 0 0.0
.init_array 936 936 0 0.0
.rodata 226258 226258 0 0.0
.text 2197250 2197250 0 0.0
thermostat-no-ble arm64 (read only) 2367844 2367844 0 0.0
(read/write) 177505 177505 0 0.0
.bss 87921 87921 0 0.0
.data 1528 1528 0 0.0
.data.rel.ro 80264 80264 0 0.0
.dynamic 528 528 0 0.0
.got 4792 4792 0 0.0
.init 24 24 0 0.0
.init_array 376 376 0 0.0
.rodata 148820 148820 0 0.0
.text 1989344 1989344 0 0.0
tv-app debug (read only) 2879649 2879649 0 0.0
(read/write) 280208 280208 0 0.0
.bss 191048 191048 0 0.0
.data 4672 4672 0 0.0
.data.rel.ro 78224 78224 0 0.0
.dynamic 592 592 0 0.0
.got 4728 4728 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 223136 223136 0 0.0
.text 2473906 2473906 0 0.0
tv-casting-app debug (read only) 5329161 5329161 0 0.0
(read/write) 222672 222672 0 0.0
.bss 78632 78632 0 0.0
.data 2400 2400 0 0.0
.data.rel.ro 135432 135432 0 0.0
.dynamic 608 608 0 0.0
.got 4728 4728 0 0.0
.init 27 27 0 0.0
.init_array 864 864 0 0.0
.rodata 337536 337536 0 0.0
.text 4640434 4640434 0 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2427176 2427176 0 0.0
.bss 202628 202628 0 0.0
.data 5880 5880 0 0.0
.text 1389820 1389820 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1191407 1191407 0 0.0
bss 141297 141297 0 0.0
rodata 154232 154232 0 0.0
text 817008 817008 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1139127 1139127 0 0.0
bss 140514 140514 0 0.0
rodata 130744 130744 0 0.0
text 789056 789056 0 0.0
p6 all-clusters-app default (read/write) 2545624 2545624 0 0.0
.bss 137120 137120 0 0.0
.data 2808 2808 0 0.0
.text 1503888 1503888 0 0.0
all-clusters-minimal-app default (read/write) 2490488 2490488 0 0.0
.bss 136336 136336 0 0.0
.data 2752 2752 0 0.0
.text 1448752 1448752 0 0.0
light-app default (read/write) 2422368 2422368 0 0.0
.bss 129432 129432 0 0.0
.data 2600 2600 0 0.0
.text 1380632 1380632 0 0.0
lock-app default (read/write) 2442704 2442704 0 0.0
.bss 129256 129256 0 0.0
.data 2576 2576 0 0.0
.text 1400968 1400968 0 0.0
telink light-switch-app tlsr9518adk80d (read/write) 780916 780916 0 0.0
bss 70564 70564 0 0.0
noinit 40416 40416 0 0.0
text 552312 552312 0 0.0
lighting-app tlsr9518adk80d (read/write) 800960 800960 0 0.0
bss 70824 70824 0 0.0
noinit 40416 40416 0 0.0
text 569054 569054 0 0.0

Some buttons were not visible on low-resolution devices.

Signed-off-by: Damian Krolik <[email protected]>
Cluster Interaction Tool screen would crash when trying
to send a command that takes an optional argument. The
reason was that optional arguments were incorrectly
converted in the application and the underlying JNI layer.

Signed-off-by: Damian Krolik <[email protected]>
@github-actions
Copy link

github-actions bot commented Jun 7, 2022

PR #19237: Size comparison from 55ab764 to dd12a27

Full report (30 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 55ab764 dd12a27 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 689547 689547 0 0.0
(read/write) 162220 162220 0 0.0
.bss 74660 74660 0 0.0
.data 3404 3404 0 0.0
.rodata 111787 111787 0 0.0
.text 577444 577444 0 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 640171 640171 0 0.0
(read/write) 158136 158136 0 0.0
.bss 73876 73876 0 0.0
.data 3344 3344 0 0.0
.rodata 88827 88827 0 0.0
.text 551020 551020 0 0.0
lock-ftd LP_CC2652R7 (read only) 683027 683027 0 0.0
(read/write) 159804 159804 0 0.0
.bss 72612 72612 0 0.0
.data 3268 3268 0 0.0
.rodata 97651 97651 0 0.0
.text 584896 584896 0 0.0
lock-mtd LP_CC2652R7 (read only) 632435 632435 0 0.0
(read/write) 145732 145732 0 0.0
.bss 68348 68348 0 0.0
.data 3268 3268 0 0.0
.rodata 97531 97531 0 0.0
.text 534416 534416 0 0.0
pump-app LP_CC2652R7 (read only) 664099 664099 0 0.0
(read/write) 179636 179636 0 0.0
.bss 72748 72748 0 0.0
.data 3300 3300 0 0.0
.rodata 85851 85851 0 0.0
.text 577768 577768 0 0.0
pump-controller-app LP_CC2652R7 (read only) 655259 655259 0 0.0
(read/write) 188588 188588 0 0.0
.bss 72860 72860 0 0.0
.data 3264 3264 0 0.0
.rodata 83899 83899 0 0.0
.text 570880 570880 0 0.0
shell LP_CC2652R7 (read only) 681842 681842 0 0.0
(read/write) 165420 165420 0 0.0
.bss 76956 76956 0 0.0
.data 3408 3408 0 0.0
.rodata 108394 108394 0 0.0
.text 573132 573132 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 602242 602242 0 0.0
.app_xip_area 461268 461268 0 0.0
.bss 83912 83912 0 0.0
.data 744 744 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 599294 599294 0 0.0
.app_xip_area 458184 458184 0 0.0
.bss 84080 84080 0 0.0
.data 712 712 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 596910 596910 0 0.0
.app_xip_area 456932 456932 0 0.0
.bss 83044 83044 0 0.0
.data 620 620 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 916152 916152 0 0.0
(read/write) 133184 133184 0 0.0
.bss 131088 131088 0 0.0
.data 2096 2096 0 0.0
.text 916144 916144 0 0.0
BRD4161A+rpc (read only) 950380 950380 0 0.0
(read/write) 149876 149876 0 0.0
.bss 147576 147576 0 0.0
.data 2300 2300 0 0.0
.text 950372 950372 0 0.0
BRD4161A+rs911x (read only) 791364 791364 0 0.0
(read/write) 129460 129460 0 0.0
.bss 127356 127356 0 0.0
.data 2104 2104 0 0.0
.text 791356 791356 0 0.0
lock-app BRD4161A+wf200 (read only) 958152 958152 0 0.0
(read/write) 128252 128252 0 0.0
.bss 126180 126180 0 0.0
.data 2072 2072 0 0.0
.text 958144 958144 0 0.0
window-app BRD4161A (read only) 901208 901208 0 0.0
(read/write) 133272 133272 0 0.0
.bss 131176 131176 0 0.0
.data 2092 2092 0 0.0
.text 901200 901200 0 0.0
esp32 all-clusters-app c3devkit (read only) 1007798 1007798 0 0.0
(read/write) 1481490 1481490 0 0.0
.dram0.bss 69168 69168 0 0.0
.dram0.data 14656 14656 0 0.0
.flash.rodata 212240 212240 0 0.0
.flash.text 1007798 1007798 0 0.0
.iram0.text 62954 62954 0 0.0
m5stack (read only) 1062743 1062743 0 0.0
(read/write) 483660 483660 0 0.0
.dram0.bss 74680 74680 0 0.0
.dram0.data 34208 34208 0 0.0
.flash.rodata 242776 242776 0 0.0
.flash.text 1057359 1057359 0 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 653400 653400 0 0.0
.bss 69964 69964 0 0.0
.data 2012 2012 0 0.0
.text 575624 575624 0 0.0
lock k32w061+release (read/write) 714380 714380 0 0.0
.bss 70404 70404 0 0.0
.data 1984 1984 0 0.0
.text 636192 636192 0 0.0
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9409764 9409764 0 0.0
(read/write) 672401 672401 0 0.0
.bss 42257 42257 0 0.0
.data 1176 1176 0 0.0
.data.rel.ro 610256 610256 0 0.0
.dynamic 528 528 0 0.0
.got 14896 14896 0 0.0
.init 24 24 0 0.0
.init_array 184 184 0 0.0
.rodata 461172 461172 0 0.0
.text 7412116 7412116 0 0.0
thermostat-no-ble arm64 (read only) 2368932 2368932 0 0.0
(read/write) 177521 177521 0 0.0
.bss 87921 87921 0 0.0
.data 1528 1528 0 0.0
.data.rel.ro 80272 80272 0 0.0
.dynamic 528 528 0 0.0
.got 4792 4792 0 0.0
.init 24 24 0 0.0
.init_array 376 376 0 0.0
.rodata 148804 148804 0 0.0
.text 1990432 1990432 0 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2427240 2427240 0 0.0
.bss 202628 202628 0 0.0
.data 5880 5880 0 0.0
.text 1389884 1389884 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1191507 1191507 0 0.0
bss 141297 141297 0 0.0
rodata 154236 154236 0 0.0
text 817100 817100 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1139227 1139227 0 0.0
bss 140514 140514 0 0.0
rodata 130748 130748 0 0.0
text 789152 789152 0 0.0
p6 all-clusters-app default (read/write) 2545728 2545728 0 0.0
.bss 137120 137120 0 0.0
.data 2808 2808 0 0.0
.text 1503992 1503992 0 0.0
all-clusters-minimal-app default (read/write) 2490592 2490592 0 0.0
.bss 136336 136336 0 0.0
.data 2752 2752 0 0.0
.text 1448856 1448856 0 0.0
light-app default (read/write) 2422488 2422488 0 0.0
.bss 129432 129432 0 0.0
.data 2600 2600 0 0.0
.text 1380752 1380752 0 0.0
lock-app default (read/write) 2442808 2442808 0 0.0
.bss 129256 129256 0 0.0
.data 2576 2576 0 0.0
.text 1401072 1401072 0 0.0
telink light-switch-app tlsr9518adk80d (read/write) 781016 781016 0 0.0
bss 70564 70564 0 0.0
noinit 40416 40416 0 0.0
text 552406 552406 0 0.0
lighting-app tlsr9518adk80d (read/write) 801052 801052 0 0.0
bss 70824 70824 0 0.0
noinit 40416 40416 0 0.0
text 569148 569148 0 0.0

@andy31415 andy31415 merged commit c45d1a5 into project-chip:master Jun 7, 2022
@Damian-Nordic Damian-Nordic deleted the android-crash branch June 7, 2022 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Generated code for Android Clusters does not properly handle optional values
2 participants