1.. _mcumgr_smp_group_0: 2 3Default/OS Management Group 4########################### 5 6OS management group defines following commands: 7 8.. table:: 9 :align: center 10 11 +-------------------+-----------------------------------------------+ 12 | ``Command ID`` | Command description | 13 +===================+===============================================+ 14 | ``0`` | Echo | 15 +-------------------+-----------------------------------------------+ 16 | ``1`` | Console/Terminal echo control; | 17 | | unimplemented by Zephyr | 18 +-------------------+-----------------------------------------------+ 19 | ``2`` | Task Statistics | 20 +-------------------+-----------------------------------------------+ 21 | ``3`` | Memory pool statistics | 22 +-------------------+-----------------------------------------------+ 23 | ``4`` | Date-time string; unimplemented by Zephyr | 24 +-------------------+-----------------------------------------------+ 25 | ``5`` | System reset | 26 +-------------------+-----------------------------------------------+ 27 | ``6`` | MCUMGR parameters | 28 +-------------------+-----------------------------------------------+ 29 | ``7`` | OS/Application info | 30 +-------------------+-----------------------------------------------+ 31 | ``8`` | Bootloader information | 32 +-------------------+-----------------------------------------------+ 33 34Echo command 35************ 36 37Echo command responses by sending back string that it has received. 38 39Echo request 40============ 41 42Echo request header fields: 43 44.. table:: 45 :align: center 46 47 +--------------------+--------------+----------------+ 48 | ``OP`` | ``Group ID`` | ``Command ID`` | 49 +====================+==============+================+ 50 | ``0`` or ``2`` | ``0`` | ``0`` | 51 +--------------------+--------------+----------------+ 52 53CBOR data of request: 54 55.. code-block:: none 56 57 { 58 (str)"d" : (str) 59 } 60 61where: 62 63.. table:: 64 :align: center 65 66 +-----------------------+---------------------------------------------------+ 67 | "d" | string to be replied by echo service. | 68 +-----------------------+---------------------------------------------------+ 69 70Echo response 71============= 72 73Echo response header fields: 74 75.. table:: 76 :align: center 77 78 +--------+--------------+----------------+----------------------------------+ 79 | ``OP`` | ``Group ID`` | ``Command ID`` | Note | 80 +========+==============+================+==================================+ 81 | ``1`` | ``0`` | ``0`` | When request ``OP`` was ``0`` | 82 +--------+--------------+----------------+----------------------------------+ 83 | ``3`` | ``0`` | ``0`` | When request ``OP`` was ``2`` | 84 +--------+--------------+----------------+----------------------------------+ 85 86CBOR data of successful response: 87 88.. code-block:: none 89 90 { 91 (str)"r" : (str) 92 } 93 94In case of error the CBOR data takes the form: 95 96.. tabs:: 97 98 .. group-tab:: SMP version 2 99 100 .. code-block:: none 101 102 { 103 (str)"err" : { 104 (str)"group" : (uint) 105 (str)"rc" : (uint) 106 } 107 } 108 109 .. group-tab:: SMP version 1 (and non-group SMP version 2) 110 111 .. code-block:: none 112 113 { 114 (str)"rc" : (int) 115 } 116 117where: 118 119.. table:: 120 :align: center 121 122 +------------------+-------------------------------------------------------------------------+ 123 | "r" | replying echo string. | 124 +------------------+-------------------------------------------------------------------------+ 125 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 126 | | appears if an error is returned when using SMP version 2. | 127 +------------------+-------------------------------------------------------------------------+ 128 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 129 | | non-zero (error condition) when using SMP version 2. | 130 +------------------+-------------------------------------------------------------------------+ 131 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 132 | | using SMP version 1 or for SMP errors when using SMP version 2. | 133 +------------------+-------------------------------------------------------------------------+ 134 135Task statistics command 136*********************** 137 138The command responds with some system statistics. 139 140Task statistics request 141======================= 142 143Task statistics request header fields: 144 145.. table:: 146 :align: center 147 148 +--------+--------------+----------------+ 149 | ``OP`` | ``Group ID`` | ``Command ID`` | 150 +========+==============+================+ 151 | ``0`` | ``0`` | ``2`` | 152 +--------+--------------+----------------+ 153 154The command sends an empty CBOR map as data. 155 156 157Task statistics response 158======================== 159 160Task statistics response header fields: 161 162.. table:: 163 :align: center 164 165 +--------+--------------+----------------+ 166 | ``OP`` | ``Group ID`` | ``Command ID`` | 167 +========+==============+================+ 168 | ``1`` | ``0`` | ``2`` | 169 +--------+--------------+----------------+ 170 171CBOR data of successful response: 172 173.. code-block:: none 174 175 { 176 (str)"tasks" : { 177 (str)<task_name> : { 178 (str)"prio" : (uint) 179 (str)"tid" : (uint) 180 (str)"state" : (uint) 181 (str)"stkuse" : (uint) 182 (str)"stksiz" : (uint) 183 (str)"cswcnt" : (uint) 184 (str)"runtime" : (uint) 185 (str)"last_checkin" : (uint) 186 (str)"next_checkin" : (uint) 187 } 188 ... 189 } 190 } 191 192In case of error the CBOR data takes the form: 193 194.. tabs:: 195 196 .. group-tab:: SMP version 2 197 198 .. code-block:: none 199 200 { 201 (str)"err" : { 202 (str)"group" : (uint) 203 (str)"rc" : (uint) 204 } 205 } 206 207 .. group-tab:: SMP version 1 (and non-group SMP version 2) 208 209 .. code-block:: none 210 211 { 212 (str)"rc" : (int) 213 } 214 215where: 216 217.. table:: 218 :align: center 219 220 +------------------+-------------------------------------------------------------------------+ 221 | <task_name> | string identifying task. | 222 +------------------+-------------------------------------------------------------------------+ 223 | "prio" | task priority. | 224 +------------------+-------------------------------------------------------------------------+ 225 | "tid" | numeric task ID. | 226 +------------------+-------------------------------------------------------------------------+ 227 | "state" | numeric task state. | 228 +------------------+-------------------------------------------------------------------------+ 229 | "stkuse" | task's/thread's stack usage. | 230 +------------------+-------------------------------------------------------------------------+ 231 | "stksiz" | task's/thread's stack size. | 232 +------------------+-------------------------------------------------------------------------+ 233 | "cswcnt" | task's/thread's context switches. | 234 +------------------+-------------------------------------------------------------------------+ 235 | "runtime" | task's/thread's runtime in "ticks". | 236 +------------------+-------------------------------------------------------------------------+ 237 | "last_checkin" | set to 0 by Zephyr. | 238 +------------------+-------------------------------------------------------------------------+ 239 | "next_checkin" | set to 0 by Zephyr. | 240 +------------------+-------------------------------------------------------------------------+ 241 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 242 | | appears if an error is returned when using SMP version 2. | 243 +------------------+-------------------------------------------------------------------------+ 244 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 245 | | non-zero (error condition) when using SMP version 2. | 246 +------------------+-------------------------------------------------------------------------+ 247 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 248 | | using SMP version 1 or for SMP errors when using SMP version 2. | 249 +------------------+-------------------------------------------------------------------------+ 250 251.. note:: 252 The unit for "stkuse" and "stksiz" is system dependent and in case of Zephyr 253 this is number of 4 byte words. 254 255Memory pool statistics 256********************** 257 258The command is used to obtain information on memory pools active in running 259system. 260 261Memory pool statistic request 262============================= 263 264Memory pool statistics request header fields: 265 266.. table:: 267 :align: center 268 269 +--------+--------------+----------------+ 270 | ``OP`` | ``Group ID`` | ``Command ID`` | 271 +========+==============+================+ 272 | ``0`` | ``0`` | ``3`` | 273 +--------+--------------+----------------+ 274 275The command sends an empty CBOR map as data. 276 277Memory pool statistics response 278=============================== 279 280Memory pool statistics response header fields: 281 282.. table:: 283 :align: center 284 285 +--------+--------------+----------------+ 286 | ``OP`` | ``Group ID`` | ``Command ID`` | 287 +========+==============+================+ 288 | ``1`` | ``0`` | ``3`` | 289 +--------+--------------+----------------+ 290 291CBOR data of successful response: 292 293.. code-block:: none 294 295 { 296 (str)<pool_name> { 297 (str)"blksiz" : (int) 298 (str)"nblks" : (int) 299 (str)"nfree" : (int) 300 (str)"min' : (int) 301 } 302 ... 303 } 304 305In case of error the CBOR data takes the form: 306 307.. tabs:: 308 309 .. group-tab:: SMP version 2 310 311 .. code-block:: none 312 313 { 314 (str)"err" : { 315 (str)"group" : (uint) 316 (str)"rc" : (uint) 317 } 318 } 319 320 .. group-tab:: SMP version 1 (and non-group SMP version 2) 321 322 .. code-block:: none 323 324 { 325 (str)"rc" : (int) 326 } 327 328where: 329 330.. table:: 331 :align: center 332 333 +------------------+-------------------------------------------------------------------------+ 334 | <pool_name> | string representing the pool name, used as a key for dictionary with | 335 | | pool statistics data. | 336 +------------------+-------------------------------------------------------------------------+ 337 | "blksiz" | size of the memory block in the pool. | 338 +------------------+-------------------------------------------------------------------------+ 339 | "nblks" | number of blocks in the pool. | 340 +------------------+-------------------------------------------------------------------------+ 341 | "nfree" | number of free blocks. | 342 +------------------+-------------------------------------------------------------------------+ 343 | "min" | lowest number of free blocks the pool reached during run-time. | 344 +------------------+-------------------------------------------------------------------------+ 345 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 346 | | appears if an error is returned when using SMP version 2. | 347 +------------------+-------------------------------------------------------------------------+ 348 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 349 | | non-zero (error condition) when using SMP version 2. | 350 +------------------+-------------------------------------------------------------------------+ 351 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 352 | | using SMP version 1 or for SMP errors when using SMP version 2. | 353 +------------------+-------------------------------------------------------------------------+ 354 355Date-time command 356***************** 357 358The command allows to obtain string representing current time-date on a device 359or set a new time to a device. 360The time format used, by both set and get operations, is: 361 362 "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ" 363 364Date-time get 365============= 366 367The command allows to obtain date-time from a device. 368 369Date-time get request 370--------------------- 371 372Date-time request header fields: 373 374.. table:: 375 :align: center 376 377 +--------+--------------+----------------+ 378 | ``OP`` | ``Group ID`` | ``Command ID`` | 379 +========+==============+================+ 380 | ``0`` | ``0`` | ``4`` | 381 +--------+--------------+----------------+ 382 383The command sends an empty CBOR map as data. 384 385Date-time get response 386---------------------- 387 388Date-time get response header fields: 389 390.. table:: 391 :align: center 392 393 +--------+--------------+----------------+ 394 | ``OP`` | ``Group ID`` | ``Command ID`` | 395 +========+==============+================+ 396 | ``1`` | ``0`` | ``4`` | 397 +--------+--------------+----------------+ 398 399CBOR data of successful response: 400 401.. code-block:: none 402 403 { 404 (str)"datetime" : (str) 405 } 406 407In case of error the CBOR data takes the form: 408 409.. tabs:: 410 411 .. group-tab:: SMP version 2 412 413 .. code-block:: none 414 415 { 416 (str)"err" : { 417 (str)"group" : (uint) 418 (str)"rc" : (uint) 419 } 420 } 421 422 .. group-tab:: SMP version 1 (and non-group SMP version 2) 423 424 .. code-block:: none 425 426 { 427 (str)"rc" : (int) 428 } 429 430where: 431 432.. table:: 433 :align: center 434 435 +------------------+-------------------------------------------------------------------------+ 436 | "datetime" | String in format: ``yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ``. | 437 +------------------+-------------------------------------------------------------------------+ 438 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 439 | | appears if an error is returned when using SMP version 2. | 440 +------------------+-------------------------------------------------------------------------+ 441 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 442 | | non-zero (error condition) when using SMP version 2. | 443 +------------------+-------------------------------------------------------------------------+ 444 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 445 | | using SMP version 1 or for SMP errors when using SMP version 2. | 446 +------------------+-------------------------------------------------------------------------+ 447 448 449Date-time set 450============= 451 452The command allows to set date-time to a device. 453 454Date-time set request 455--------------------- 456 457Date-time set request header fields: 458 459.. table:: 460 :align: center 461 462 +--------+--------------+----------------+ 463 | ``OP`` | ``Group ID`` | ``Command ID`` | 464 +========+==============+================+ 465 | ``2`` | ``0`` | ``4`` | 466 +--------+--------------+----------------+ 467 468CBOR data of response: 469 470.. code-block:: none 471 472 { 473 (str)"datetime" : (str) 474 } 475 476where: 477 478.. table:: 479 :align: center 480 481 +---------------+----------------------------------------------------------+ 482 | "datetime" | String in format: ``yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ``. | 483 +---------------+----------------------------------------------------------+ 484 485Date-time set response 486---------------------- 487 488Date-time set response header fields: 489 490.. table:: 491 :align: center 492 493 +--------+--------------+----------------+ 494 | ``OP`` | ``Group ID`` | ``Command ID`` | 495 +========+==============+================+ 496 | ``3`` | ``0`` | ``4`` | 497 +--------+--------------+----------------+ 498 499The command sends an empty CBOR map as data if successful. In case of error the 500CBOR data takes the form: 501 502.. tabs:: 503 504 .. group-tab:: SMP version 2 505 506 .. code-block:: none 507 508 { 509 (str)"err" : { 510 (str)"group" : (uint) 511 (str)"rc" : (uint) 512 } 513 } 514 515 .. group-tab:: SMP version 1 (and non-group SMP version 2) 516 517 .. code-block:: none 518 519 { 520 (str)"rc" : (int) 521 } 522 523where: 524 525.. table:: 526 :align: center 527 528 +------------------+-------------------------------------------------------------------------+ 529 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 530 | | appears if an error is returned when using SMP version 2. | 531 +------------------+-------------------------------------------------------------------------+ 532 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 533 | | non-zero (error condition) when using SMP version 2. | 534 +------------------+-------------------------------------------------------------------------+ 535 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 536 | | using SMP version 1 or for SMP errors when using SMP version 2. | 537 +------------------+-------------------------------------------------------------------------+ 538 539System reset 540************ 541 542Performs reset of system. The device should issue response before resetting so 543that the SMP client could receive information that the command has been 544accepted. By default, this command is accepted in all conditions, however if 545the :kconfig:option:`CONFIG_MCUMGR_GRP_OS_RESET_HOOK` is enabled and an 546application registers a callback, the callback will be called when this command 547is issued and can be used to perform any necessary tidy operations prior to the 548module rebooting, or to reject the reset request outright altogether with an 549error response. For details on this functionality, see `ref:`mcumgr_callbacks`. 550 551System reset request 552==================== 553 554System reset request header fields: 555 556.. table:: 557 :align: center 558 559 +--------+--------------+----------------+ 560 | ``OP`` | ``Group ID`` | ``Command ID`` | 561 +========+==============+================+ 562 | ``2`` | ``0`` | ``5`` | 563 +--------+--------------+----------------+ 564 565Normally the command sends an empty CBOR map as data, but if a previous reset 566attempt has responded with "rc" equal to :c:enum:`MGMT_ERR_EBUSY` then the 567following map may be sent to force a reset: 568 569.. code-block:: none 570 571 { 572 (opt)"force" : (int) 573 } 574 575where: 576 577.. table:: 578 :align: center 579 580 +-----------------------+---------------------------------------------------+ 581 | "force" | Force reset if value > 0, optional if 0. | 582 +-----------------------+---------------------------------------------------+ 583 584 585System reset response 586===================== 587 588System reset response header fields 589 590.. table:: 591 :align: center 592 593 +--------+--------------+----------------+ 594 | ``OP`` | ``Group ID`` | ``Command ID`` | 595 +========+==============+================+ 596 | ``3`` | ``0`` | ``5`` | 597 +--------+--------------+----------------+ 598 599The command sends an empty CBOR map as data if successful. In case of error the 600CBOR data takes the form: 601 602.. tabs:: 603 604 .. group-tab:: SMP version 2 605 606 .. code-block:: none 607 608 { 609 (str)"err" : { 610 (str)"group" : (uint) 611 (str)"rc" : (uint) 612 } 613 } 614 615 .. group-tab:: SMP version 1 (and non-group SMP version 2) 616 617 .. code-block:: none 618 619 { 620 (str)"rc" : (int) 621 } 622 623where: 624 625.. table:: 626 :align: center 627 628 +------------------+-------------------------------------------------------------------------+ 629 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 630 | | appears if an error is returned when using SMP version 2. | 631 +------------------+-------------------------------------------------------------------------+ 632 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 633 | | non-zero (error condition) when using SMP version 2. | 634 +------------------+-------------------------------------------------------------------------+ 635 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 636 | | using SMP version 1 or for SMP errors when using SMP version 2. | 637 +------------------+-------------------------------------------------------------------------+ 638 639MCUmgr Parameters 640***************** 641 642Used to obtain parameters of mcumgr library. 643 644MCUmgr Parameters Request 645========================= 646 647MCUmgr parameters request header fields: 648 649.. table:: 650 :align: center 651 652 +--------+--------------+----------------+ 653 | ``OP`` | ``Group ID`` | ``Command ID`` | 654 +========+==============+================+ 655 | ``0`` | ``0`` | ``6`` | 656 +--------+--------------+----------------+ 657 658The command sends an empty CBOR map as data. 659 660MCUmgr Parameters Response 661========================== 662 663MCUmgr parameters response header fields 664 665.. table:: 666 :align: center 667 668 +--------+--------------+----------------+ 669 | ``OP`` | ``Group ID`` | ``Command ID`` | 670 +========+==============+================+ 671 | ``1`` | ``0`` | ``6`` | 672 +--------+--------------+----------------+ 673 674CBOR data of successful response: 675 676.. code-block:: none 677 678 { 679 (str)"buf_size" : (uint) 680 (str)"buf_count" : (uint) 681 } 682 683In case of error the CBOR data takes the form: 684 685.. tabs:: 686 687 .. group-tab:: SMP version 2 688 689 .. code-block:: none 690 691 { 692 (str)"err" : { 693 (str)"group" : (uint) 694 (str)"rc" : (uint) 695 } 696 } 697 698 .. group-tab:: SMP version 1 (and non-group SMP version 2) 699 700 .. code-block:: none 701 702 { 703 (str)"rc" : (int) 704 } 705 706where: 707 708.. table:: 709 :align: center 710 711 +------------------+-------------------------------------------------------------------------+ 712 | "buf_size" | Single SMP buffer size, this includes SMP header and CBOR payload. | 713 +------------------+-------------------------------------------------------------------------+ 714 | "buf_count" | Number of SMP buffers supported. | 715 +------------------+-------------------------------------------------------------------------+ 716 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 717 | | appears if an error is returned when using SMP version 2. | 718 +------------------+-------------------------------------------------------------------------+ 719 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 720 | | non-zero (error condition) when using SMP version 2. | 721 +------------------+-------------------------------------------------------------------------+ 722 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 723 | | using SMP version 1 or for SMP errors when using SMP version 2. | 724 +------------------+-------------------------------------------------------------------------+ 725 726.. _mcumgr_os_application_info: 727 728OS/Application Info 729******************* 730 731Used to obtain information on running image, similar functionality to the linux 732uname command, allowing details such as kernel name, kernel version, build 733date/time, processor type and application-defined details to be returned. This 734functionality can be enabled with :kconfig:option:`CONFIG_MCUMGR_GRP_OS_INFO`. 735 736OS/Application Info Request 737=========================== 738 739OS/Application info request header fields: 740 741.. table:: 742 :align: center 743 744 +--------+--------------+----------------+ 745 | ``OP`` | ``Group ID`` | ``Command ID`` | 746 +========+==============+================+ 747 | ``0`` | ``0`` | ``7`` | 748 +--------+--------------+----------------+ 749 750CBOR data of request: 751 752.. code-block:: none 753 754 { 755 (str,opt)"format" : (str) 756 } 757 758where: 759 760.. table:: 761 :align: center 762 763 +----------+-------------------------------------------------------------------+ 764 | "format" | Format specifier of returned response, fields are appended in | 765 | | their natural ascending index order, not the order of | 766 | | characters that are received by the command. Format | 767 | | specifiers: |br| | 768 | | * ``s`` Kernel name |br| | 769 | | * ``n`` Node name |br| | 770 | | * ``r`` Kernel release |br| | 771 | | * ``v`` Kernel version |br| | 772 | | * ``b`` Build date and time (requires | 773 | | :kconfig:option:`CONFIG_MCUMGR_GRP_OS_INFO_BUILD_DATE_TIME`) |br| | 774 | | * ``m`` Machine |br| | 775 | | * ``p`` Processor |br| | 776 | | * ``i`` Hardware platform |br| | 777 | | * ``o`` Operating system |br| | 778 | | * ``a`` All fields (shorthand for all above options) |br| | 779 | | If this option is not provided, the ``s`` Kernel name option | 780 | | will be used. | 781 +----------+-------------------------------------------------------------------+ 782 783OS/Application Info Response 784============================ 785 786OS/Application info response header fields 787 788.. table:: 789 :align: center 790 791 +--------+--------------+----------------+ 792 | ``OP`` | ``Group ID`` | ``Command ID`` | 793 +========+==============+================+ 794 | ``1`` | ``0`` | ``7`` | 795 +--------+--------------+----------------+ 796 797CBOR data of successful response: 798 799.. code-block:: none 800 801 { 802 (str)"output" : (str) 803 } 804 805In case of error the CBOR data takes the form: 806 807.. tabs:: 808 809 .. group-tab:: SMP version 2 810 811 .. code-block:: none 812 813 { 814 (str)"err" : { 815 (str)"group" : (uint) 816 (str)"rc" : (uint) 817 } 818 } 819 820 .. group-tab:: SMP version 1 (and non-group SMP version 2) 821 822 .. code-block:: none 823 824 { 825 (str)"rc" : (int) 826 } 827 828where: 829 830.. table:: 831 :align: center 832 833 +------------------+-------------------------------------------------------------------------+ 834 | "output" | Text response including requested parameters. | 835 +------------------+-------------------------------------------------------------------------+ 836 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 837 | | appears if an error is returned when using SMP version 2. | 838 +------------------+-------------------------------------------------------------------------+ 839 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 840 | | non-zero (error condition) when using SMP version 2. | 841 +------------------+-------------------------------------------------------------------------+ 842 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 843 | | using SMP version 1 or for SMP errors when using SMP version 2. | 844 +------------------+-------------------------------------------------------------------------+ 845 846Bootloader Information 847********************** 848 849Allows retrieving information about the on-board bootloader and its parameters. 850 851Bootloader Information Request 852============================== 853 854Bootloader information request header: 855 856.. table:: 857 :align: center 858 859 +--------+--------------+----------------+ 860 | ``OP`` | ``Group ID`` | ``Command ID`` | 861 +========+==============+================+ 862 | ``0`` | ``0`` | ``8`` | 863 +--------+--------------+----------------+ 864 865CBOR data of request: 866 867.. code-block:: none 868 869 { 870 (str,opt)"query" : (str) 871 } 872 873where: 874 875.. table:: 876 :align: center 877 878 +--------------+-----------------------------------------------+ 879 | "query" | Is string representing query for parameters, | 880 | | with no restrictions how the query looks like | 881 | | as processing of query is left for bootloader | 882 | | backend. | 883 | | If there is no query, then response will | 884 | | return string identifying the bootloader. | 885 +--------------+-----------------------------------------------+ 886 887Bootloader Information Response 888=============================== 889 890Bootloader information response header: 891 892.. table:: 893 :align: center 894 895 +--------+--------------+----------------+ 896 | ``OP`` | ``Group ID`` | ``Command ID`` | 897 +========+==============+================+ 898 | ``1`` | ``0`` | ``8`` | 899 +--------+--------------+----------------+ 900 901In case when no "query" has been provided in request, 902CBOR data of response: 903 904.. code-block:: none 905 906 { 907 (str)"bootloader" : (str) 908 } 909 910where: 911 912.. table:: 913 :align: center 914 915 +--------------+-----------------------------------------------+ 916 | "bootloader" | String representing bootloader name | 917 +--------------+-----------------------------------------------+ 918 919In case when "query" is provided: 920 921.. code-block:: none 922 923 { 924 (str,opt)<response> : () 925 ... 926 } 927 928where: 929 930.. table:: 931 :align: center 932 933 +------------------+-------------------------------------------------------------------------+ 934 | <response> | Response to "query". This is optional and may be left out in case when | 935 | | query yields no response, SMP version 2 error code of | 936 | | `OS_MGMT_ERR_QUERY_YIELDS_NO_ANSWER` is expected. | 937 | | Response may have more than one parameter reported back or it may be | 938 | | a map, that is dependent on bootloader backednd and query. | 939 +------------------+-------------------------------------------------------------------------+ 940 | ... | Parameter characteristic information. | 941 +------------------+-------------------------------------------------------------------------+ 942 943Parameter may be accompanied by additional, parameter specific, information keywords with 944assigned values. 945 946In case of error the CBOR data takes the form: 947 948.. tabs:: 949 950 .. group-tab:: SMP version 2 951 952 .. code-block:: none 953 954 { 955 (str)"err" : { 956 (str)"group" : (uint) 957 (str)"rc" : (uint) 958 } 959 } 960 961 .. group-tab:: SMP version 1 (and non-group SMP version 2) 962 963 .. code-block:: none 964 965 { 966 (str)"rc" : (int) 967 } 968 969where: 970 971.. table:: 972 :align: center 973 974 +------------------+-------------------------------------------------------------------------+ 975 | "err" -> "group" | :c:enum:`mcumgr_group_t` group of the group-based error code. Only | 976 | | appears if an error is returned when using SMP version 2. | 977 +------------------+-------------------------------------------------------------------------+ 978 | "err" -> "rc" | contains the index of the group-based error code. Only appears if | 979 | | non-zero (error condition) when using SMP version 2. | 980 +------------------+-------------------------------------------------------------------------+ 981 | "rc" | :c:enum:`mcumgr_err_t` only appears if non-zero (error condition) when | 982 | | using SMP version 1 or for SMP errors when using SMP version 2. | 983 +------------------+-------------------------------------------------------------------------+ 984 985Bootloader Information: MCUboot 986=============================== 987 988In case when MCUboot is application bootloader, empty request will 989be responded with: 990 991.. code-block:: none 992 993 { 994 (str)"bootloader" : (str)"MCUboot" 995 } 996 997Currently "MCUboot" supports querying for mode of operation: 998 999.. code-block:: none 1000 1001 { 1002 (str)"query" : (str)"mode" 1003 } 1004 1005Response to "mode" is: 1006 1007.. code-block:: none 1008 1009 { 1010 (str)"mode" : (int) 1011 (str,opt)"no-downgrade" : (bool) 1012 } 1013 1014where "mode" is one of: 1015 1016.. table:: 1017 :align: center 1018 1019 +-----+-----------------------------------------------------+ 1020 | -1 | Unknown mode of MCUboot. | 1021 +-----+-----------------------------------------------------+ 1022 | 0 | MCUboot is in single application mode. | 1023 +-----+-----------------------------------------------------+ 1024 | 1 | MCUboot is in swap using scratch partition mode. | 1025 +-----+-----------------------------------------------------+ 1026 | 2 | MCUboot is in overwrite (upgrade-only) mode. | 1027 +-----+-----------------------------------------------------+ 1028 | 3 | MCUboot is in swap without scratch mode. | 1029 +-----+-----------------------------------------------------+ 1030 | 4 | MCUboot is in DirectXIP without revert mode. | 1031 +-----+-----------------------------------------------------+ 1032 | 5 | MCUboot is in DirectXIP with revert mode. | 1033 +-----+-----------------------------------------------------+ 1034 | 6 | MCUboot is in RAM loader mode. | 1035 +-----+-----------------------------------------------------+ 1036 1037The ``no-downgrade`` field is a flag, which is always sent when true, indicating that MCUboot has 1038downgrade prevention enabled; downgrade prevention means that if the uploaded image has a lower 1039version than the currently running application, it will not be used for an update by MCUboot. 1040 1041MCUmgr may reject images with a lower version in this configuration. 1042