Merge pull request #64 from electronut/papyr_support
Add support for Electronut Labs Papyr
This commit is contained in:
		@@ -10,6 +10,7 @@ This is a CDC/DFU/UF2 bootloader for nRF52 boards.
 | 
				
			|||||||
- Particle Boron
 | 
					- Particle Boron
 | 
				
			||||||
- Particle Xenon
 | 
					- Particle Xenon
 | 
				
			||||||
- MakerDiary MDK nRF52840 USB Dongle
 | 
					- MakerDiary MDK nRF52840 USB Dongle
 | 
				
			||||||
 | 
					- [Electronut Labs Papyr](https://docs.electronut.in/papyr/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
UF2 is an easy-to-use bootloader that appears as a flash drive. You can just copy `.uf2`-format
 | 
					UF2 is an easy-to-use bootloader that appears as a flash drive. You can just copy `.uf2`-format
 | 
				
			||||||
application images to the flash drive to load new firmware.
 | 
					application images to the flash drive to load new firmware.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										99
									
								
								src/boards/electronut_labs_papyr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								src/boards/electronut_labs_papyr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					/**************************************************************************/
 | 
				
			||||||
 | 
					/*!
 | 
				
			||||||
 | 
					    @file     elelctronutlabs_papyr.h
 | 
				
			||||||
 | 
					    @author   Tavish Naruka <tavish@electronut.in>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @section LICENSE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Software License Agreement (BSD License)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Copyright (c) 2017, Adafruit Industries (adafruit.com)
 | 
				
			||||||
 | 
					    All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					    modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					    1. Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					    notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					    2. Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					    notice, this list of conditions and the following disclaimer in the
 | 
				
			||||||
 | 
					    documentation and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					    3. Neither the name of the copyright holders nor the
 | 
				
			||||||
 | 
					    names of its contributors may be used to endorse or promote products
 | 
				
			||||||
 | 
					    derived from this software without specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
 | 
				
			||||||
 | 
					    EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | 
				
			||||||
 | 
					    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
				
			||||||
 | 
					    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
 | 
				
			||||||
 | 
					    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | 
				
			||||||
 | 
					    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
				
			||||||
 | 
					    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | 
				
			||||||
 | 
					    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
				
			||||||
 | 
					    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | 
				
			||||||
 | 
					    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					/**************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PAPYR_H
 | 
				
			||||||
 | 
					#define PAPYR_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					/* LED
 | 
				
			||||||
 | 
					 *------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					#define LEDS_NUMBER         2
 | 
				
			||||||
 | 
					#define LED_PRIMARY_PIN     13
 | 
				
			||||||
 | 
					#define LED_SECONDARY_PIN   14
 | 
				
			||||||
 | 
					#define LED_STATE_ON        0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					/* BUTTON
 | 
				
			||||||
 | 
					 *------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					// NOTE: USB UF2 bootloader can be triggered by double pressing RESET
 | 
				
			||||||
 | 
					// App can trigger OTA bootloader by writing DFU_MAGIC_OTA_APPJUM to
 | 
				
			||||||
 | 
					// GPREGRET register if softdevice is not initialized; or by
 | 
				
			||||||
 | 
					// writing DFU_MAGIC_OTA_RESET in case softdevice is initialized.
 | 
				
			||||||
 | 
					#define BUTTONS_NUMBER      2
 | 
				
			||||||
 | 
					#define BUTTON_1            18 // RESET also by default
 | 
				
			||||||
 | 
					#define BUTTON_2            1  // P0.1 not exposed anywhere, FRST n/a
 | 
				
			||||||
 | 
					#define BUTTON_PULL         NRF_GPIO_PIN_PULLUP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					/* UART
 | 
				
			||||||
 | 
					 *------------------------------------------------------------------*/
 | 
				
			||||||
 | 
					#define RX_PIN_NUMBER       7
 | 
				
			||||||
 | 
					#define TX_PIN_NUMBER       8
 | 
				
			||||||
 | 
					#define CTS_PIN_NUMBER      0
 | 
				
			||||||
 | 
					#define RTS_PIN_NUMBER      0
 | 
				
			||||||
 | 
					#define HWFC                false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Used as model string in OTA mode
 | 
				
			||||||
 | 
					#define DIS_MANUFACTURER    "Electronut Labs"
 | 
				
			||||||
 | 
					#define DIS_MODEL           "Papyr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BOARD_ID            "Electronut Labs Papyr"
 | 
				
			||||||
 | 
					#define INDEX_URL           "https://docs.electronut.in/papyr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define USB_DESC_VID        0x239A
 | 
				
			||||||
 | 
					#define USB_DESC_UF2_PID    0x003B
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define USB_STRING_DESCRIPTORS {                                                                                    \
 | 
				
			||||||
 | 
					    /* 0: is supported language = English */                                                                        \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV(0x0409),                                                                                       \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 1: Manufacturer */                                                                                           \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('E','l','e','c','t','r','o','n','u','t',' ','L','a','b','s'),                                  \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 2: Product */                                                                                                \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('P','a','p','y','r', ' ', 'D','F','U'),                                                        \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 3: Serials TODO use chip ID */                                                                               \
 | 
				
			||||||
 | 
					    usb_desc_str_serial,                                                                                            \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 4: CDC Interface */                                                                                          \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('P','a','p','y','r',' ','S','e','r','i','a','l'),                                              \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 5: MSC Interface */                                                                                          \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('P','a','p','y','r',' ','U','F','2'),                                                          \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // PPAPYR_H
 | 
				
			||||||
@@ -79,30 +79,33 @@ enum {
 | 
				
			|||||||
// STRING DESCRIPTORS
 | 
					// STRING DESCRIPTORS
 | 
				
			||||||
//--------------------------------------------------------------------+
 | 
					//--------------------------------------------------------------------+
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef USB_STRING_DESCRIPTORS
 | 
				
			||||||
 | 
					#define USB_STRING_DESCRIPTORS {                                                                                 \
 | 
				
			||||||
 | 
					    /* 0: is supported language = English */                                                                        \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV(0x0409),                                                                                       \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 1: Manufacturer */                                                                                           \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('A','d','a','f','r','u','i','t',' ','I','n','d','u','s','t','r','i','e','s'),                  \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 2: Product */                                                                                                \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','n','R','F','5','2','8','4','0', ' ', 'D','F','U'),    \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 3: Serials TODO use chip ID */                                                                               \
 | 
				
			||||||
 | 
					    usb_desc_str_serial,                                                                                            \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 4: CDC Interface */                                                                                          \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','S','e','r','i','a','l'),                              \
 | 
				
			||||||
 | 
					                                                                                                                    \
 | 
				
			||||||
 | 
					    /* 5: MSC Interface */                                                                                          \
 | 
				
			||||||
 | 
					    TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','U','F','2'),                                          \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Serial is 64-bit DeviceID -> 16 chars len
 | 
					// Serial is 64-bit DeviceID -> 16 chars len
 | 
				
			||||||
uint16_t usb_desc_str_serial[1+16] = { TUD_DESC_STR_HEADER(16) };
 | 
					uint16_t usb_desc_str_serial[1+16] = { TUD_DESC_STR_HEADER(16) };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// array of pointer to string descriptors
 | 
					// array of pointer to string descriptors
 | 
				
			||||||
uint16_t const * const string_desc_arr [] =
 | 
					uint16_t const * const string_desc_arr [] = USB_STRING_DESCRIPTORS;
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    // 0: is supported language = English
 | 
					 | 
				
			||||||
    TUD_DESC_STRCONV(0x0409),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 1: Manufacturer
 | 
					 | 
				
			||||||
    TUD_DESC_STRCONV('A','d','a','f','r','u','i','t',' ','I','n','d','u','s','t','r','i','e','s'),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 2: Product
 | 
					 | 
				
			||||||
    TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','n','R','F','5','2','8','4','0', ' ', 'D','F','U'),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 3: Serials TODO use chip ID
 | 
					 | 
				
			||||||
    usb_desc_str_serial,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 4: CDC Interface
 | 
					 | 
				
			||||||
    TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','S','e','r','i','a','l'),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 5: MSC Interface
 | 
					 | 
				
			||||||
    TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','U','F','2'),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//--------------------------------------------------------------------+
 | 
					//--------------------------------------------------------------------+
 | 
				
			||||||
// Device Descriptor
 | 
					// Device Descriptor
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,15 +40,23 @@
 | 
				
			|||||||
#define USB_DESC_H_
 | 
					#define USB_DESC_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "tusb.h"
 | 
					#include "tusb.h"
 | 
				
			||||||
 | 
					#include "boards.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 extern "C" {
 | 
					 extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef USB_DESC_VID
 | 
				
			||||||
#define USB_DESC_VID                0x239A
 | 
					#define USB_DESC_VID                0x239A
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef USB_DESC_UF2_PID
 | 
				
			||||||
#define USB_DESC_UF2_PID            0x0029
 | 
					#define USB_DESC_UF2_PID            0x0029
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef USB_DESC_SERIAL_ONLY_PID
 | 
				
			||||||
#define USB_DESC_SERIAL_ONLY_PID    0x002A
 | 
					#define USB_DESC_SERIAL_ONLY_PID    0x002A
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*------------- Configuration Descriptor -------------*/
 | 
					/*------------- Configuration Descriptor -------------*/
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user