LCOV - code coverage report
Current view: top level - zephyr/usb/class - usb_dfu.h Coverage Total Hit
Test: new.info Lines: 33.3 % 27 9
Test Date: 2025-03-11 06:50:38

            Line data    Source code
       1            1 : /* SPDX-License-Identifier: BSD-3-Clause */
       2              : 
       3              : /***************************************************************************
       4              :  *
       5              :  * Copyright(c) 2015,2016 Intel Corporation.
       6              :  * Copyright(c) 2017 PHYTEC Messtechnik GmbH
       7              :  *
       8              :  * Redistribution and use in source and binary forms, with or without
       9              :  * modification, are permitted provided that the following conditions
      10              :  * are met:
      11              :  *
      12              :  * * Redistributions of source code must retain the above copyright
      13              :  * notice, this list of conditions and the following disclaimer.
      14              :  * * Redistributions in binary form must reproduce the above copyright
      15              :  * notice, this list of conditions and the following disclaimer in
      16              :  * the documentation and/or other materials provided with the
      17              :  * distribution.
      18              :  * * Neither the name of Intel Corporation nor the names of its
      19              :  * contributors may be used to endorse or promote products derived
      20              :  * from this software without specific prior written permission.
      21              :  *
      22              :  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      23              :  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      24              :  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      25              :  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      26              :  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      27              :  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      28              :  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      29              :  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      30              :  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      31              :  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      32              :  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      33              :  *
      34              :  ***************************************************************************/
      35              : 
      36              : /**
      37              :  * @file
      38              :  * @brief USB Device Firmware Upgrade (DFU) public header
      39              :  *
      40              :  * Header follows the Device Class Specification for
      41              :  * Device Firmware Upgrade Version 1.1
      42              :  */
      43              : 
      44              : #ifndef ZEPHYR_INCLUDE_USB_CLASS_USB_DFU_H_
      45              : #define ZEPHYR_INCLUDE_USB_CLASS_USB_DFU_H_
      46              : 
      47              : #include <zephyr/sys_clock.h>
      48              : 
      49              : /** DFU Class Subclass */
      50            1 : #define DFU_SUBCLASS                    0x01
      51              : 
      52              : /** DFU Class runtime Protocol */
      53            1 : #define DFU_RT_PROTOCOL                 0x01
      54              : 
      55              : /** DFU Class DFU mode Protocol */
      56            1 : #define DFU_MODE_PROTOCOL               0x02
      57              : 
      58              : /**
      59              :  * @brief DFU Class Specific Requests
      60              :  */
      61            1 : #define DFU_DETACH                      0x00
      62            0 : #define DFU_DNLOAD                      0x01
      63            0 : #define DFU_UPLOAD                      0x02
      64            0 : #define DFU_GETSTATUS                   0x03
      65            0 : #define DFU_CLRSTATUS                   0x04
      66            0 : #define DFU_GETSTATE                    0x05
      67            0 : #define DFU_ABORT                       0x06
      68              : 
      69              : /** DFU FUNCTIONAL descriptor type */
      70            1 : #define DFU_FUNC_DESC                   0x21
      71              : 
      72              : /** DFU attributes DFU Functional Descriptor */
      73            1 : #define DFU_ATTR_WILL_DETACH            0x08
      74            0 : #define DFU_ATTR_MANIFESTATION_TOLERANT 0x04
      75            0 : #define DFU_ATTR_CAN_UPLOAD             0x02
      76            0 : #define DFU_ATTR_CAN_DNLOAD             0x01
      77              : 
      78              : /** DFU Specification release */
      79            1 : #define DFU_VERSION                     0x0110
      80              : 
      81              : /** Run-Time Functional Descriptor */
      82            1 : struct dfu_runtime_descriptor {
      83            0 :         uint8_t bLength;
      84            0 :         uint8_t bDescriptorType;
      85            0 :         uint8_t bmAttributes;
      86            0 :         uint16_t wDetachTimeOut;
      87            0 :         uint16_t wTransferSize;
      88            0 :         uint16_t bcdDFUVersion;
      89              : } __packed;
      90              : 
      91              : /** bStatus values for the DFU_GETSTATUS response */
      92            0 : enum dfu_status {
      93              :         statusOK,
      94              :         errTARGET,
      95              :         errFILE,
      96              :         errWRITE,
      97              :         errERASE,
      98              :         errCHECK_ERASED,
      99              :         errPROG,
     100              :         errVERIFY,
     101              :         errADDRESS,
     102              :         errNOTDONE,
     103              :         errFIRMWARE,
     104              :         errVENDOR,
     105              :         errUSB,
     106              :         errPOR,
     107              :         errUNKNOWN,
     108              :         errSTALLEDPKT
     109              : };
     110              : 
     111              : /** bState values for the DFU_GETSTATUS response */
     112            0 : enum dfu_state {
     113              :         appIDLE,
     114              :         appDETACH,
     115              :         dfuIDLE,
     116              :         dfuDNLOAD_SYNC,
     117              :         dfuDNBUSY,
     118              :         dfuDNLOAD_IDLE,
     119              :         dfuMANIFEST_SYNC,
     120              :         dfuMANIFEST,
     121              :         dfuMANIFEST_WAIT_RST,
     122              :         dfuUPLOAD_IDLE,
     123              :         dfuERROR,
     124              : };
     125              : 
     126            0 : void wait_for_usb_dfu(k_timeout_t delay);
     127              : 
     128              : #endif /* ZEPHYR_INCLUDE_USB_CLASS_USB_DFU_H_ */
        

Generated by: LCOV version 2.0-1