Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
usb-dfu-trigger.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017 - 2019, Nordic Semiconductor ASA
3
*
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without modification,
7
* are permitted provided that the following conditions are met:
8
*
9
* 1. Redistributions of source code must retain the above copyright notice, this
10
* list of conditions and the following disclaimer.
11
*
12
* 2. Redistributions in binary form, except as embedded into a Nordic
13
* Semiconductor ASA integrated circuit in a product or a software update for
14
* such product, must reproduce the above copyright notice, this list of
15
* conditions and the following disclaimer in the documentation and/or other
16
* materials provided with the distribution.
17
*
18
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
19
* contributors may be used to endorse or promote products derived from this
20
* software without specific prior written permission.
21
*
22
* 4. This software, with or without modification, must only be used with a
23
* Nordic Semiconductor ASA integrated circuit.
24
*
25
* 5. Any software provided in binary form under this license must not be reverse
26
* engineered, decompiled, modified and/or disassembled.
27
*
28
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
29
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
30
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
32
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
33
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
34
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
37
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
*
39
*/
40
/**
41
* \addtogroup nrf52840-usb
42
* @{
43
*
44
* \file
45
* Implementation of the nRF dongle USB DFU trigger interface.
46
* This allows nrfutil to reset the PCA10059 dongle to bootloader mode.
47
*
48
* Based on lib/nrf52-sdk/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c
49
*
50
*/
51
/*---------------------------------------------------------------------------*/
52
#include "app_usbd.h"
53
#include "app_usbd_nrf_dfu_trigger.h"
54
#include "nrf_gpio.h"
55
#include "boards.h"
56
/*---------------------------------------------------------------------------*/
57
#ifndef BSP_SELF_PINRESET_PIN
58
#error "This module is intended to be used with boards that have the GP pin shortened with the RESET pin."
59
#endif
60
/*---------------------------------------------------------------------------*/
61
#define DFU_FLASH_PAGE_SIZE (NRF_FICR->CODEPAGESIZE)
62
#define DFU_FLASH_PAGE_COUNT (NRF_FICR->CODESIZE)
63
/*---------------------------------------------------------------------------*/
64
static
uint8_t m_version_string[] =
"Contiki-NG DFU"
;
65
static
app_usbd_nrf_dfu_trigger_nordic_info_t m_dfu_info;
66
/*---------------------------------------------------------------------------*/
67
static
void
68
dfu_trigger_evt_handler(app_usbd_class_inst_t
const
*p_inst,
69
app_usbd_nrf_dfu_trigger_user_event_t event)
70
{
71
UNUSED_PARAMETER(p_inst);
72
73
switch
(event) {
74
case
APP_USBD_NRF_DFU_TRIGGER_USER_EVT_DETACH:
75
nrf_gpio_cfg_output(BSP_SELF_PINRESET_PIN);
76
nrf_gpio_pin_clear(BSP_SELF_PINRESET_PIN);
77
break
;
78
default
:
79
break
;
80
}
81
}
82
/*---------------------------------------------------------------------------*/
83
APP_USBD_NRF_DFU_TRIGGER_GLOBAL_DEF(m_app_dfu,
84
NRF_DFU_TRIGGER_USB_INTERFACE_NUM,
85
&m_dfu_info, m_version_string,
86
dfu_trigger_evt_handler);
87
/*---------------------------------------------------------------------------*/
88
void
89
dfu_trigger_usb_init
(
void
)
90
{
91
app_usbd_class_inst_t
const
*class_dfu;
92
93
m_dfu_info.wAddress = CODE_START;
94
m_dfu_info.wFirmwareSize = CODE_SIZE;
95
m_dfu_info.wVersionMajor = 0;
96
m_dfu_info.wVersionMinor = 0;
97
m_dfu_info.wFirmwareID = 0;
98
m_dfu_info.wFlashPageSize = DFU_FLASH_PAGE_SIZE;
99
m_dfu_info.wFlashSize = m_dfu_info.wFlashPageSize * DFU_FLASH_PAGE_COUNT;
100
101
class_dfu = app_usbd_nrf_dfu_trigger_class_inst_get(&m_app_dfu);
102
app_usbd_class_append(class_dfu);
103
}
104
/*---------------------------------------------------------------------------*/
105
106
/** @} */
dfu_trigger_usb_init
void dfu_trigger_usb_init(void)
Initialise the DFU trigger library.
Definition
usb-dfu-trigger.c:89
arch
cpu
nrf52840
usb
usb-dfu-trigger.c
Generated on
for Contiki-NG by
1.17.0