diff --git a/Ubiquitous/XiZi/Makefile b/Ubiquitous/XiZi/Makefile index 2244868d1..25f9775d7 100755 --- a/Ubiquitous/XiZi/Makefile +++ b/Ubiquitous/XiZi/Makefile @@ -5,7 +5,8 @@ MAKEFLAGS += --no-print-directory .PHONY:COMPILE_APP COMPILE_KERNEL -support :=kd233 stm32f407-st-discovery maix-go stm32f407zgt6 aiit-riscv64-board aiit-arm32-board hifive1-rev-B hifive1-emulator k210-emulator cortex-m3-emulator cortex-m4-emulator ok1052-c gapuino stm32f103-nano gd32vf103-rvstar cortex-m0-emulator rv32m1-vega nuvoton-m2354 +support :=kd233 stm32f407-st-discovery maix-go stm32f407zgt6 aiit-riscv64-board aiit-arm32-board hifive1-rev-B hifive1-emulator k210-emulator cortex-m3-emulator cortex-m4-emulator ok1052-c gapuino stm32f103-nano gd32vf103-rvstar cortex-m0-emulator rv32m1-vega nuvoton-m2354 \ + ch32v307vct6 support += xidatong-arm32 xidatong-riscv64 SRC_DIR := diff --git a/Ubiquitous/XiZi/arch/risc-v/Makefile b/Ubiquitous/XiZi/arch/risc-v/Makefile index 57f814068..60ca25c21 100755 --- a/Ubiquitous/XiZi/arch/risc-v/Makefile +++ b/Ubiquitous/XiZi/arch/risc-v/Makefile @@ -1,4 +1,6 @@ +ifeq ($(CONFIG_BOARD_CH32V307VCT6), ) SRC_DIR := shared +endif ifeq ($(CONFIG_BOARD_FE310_EVB),y) SRC_DIR +=fe310 @@ -28,6 +30,10 @@ ifeq ($(CONFIG_BOARD_GD32VF103RVSTAR),y) SRC_DIR +=gd32vf103-rvstar endif +ifeq ($(CONFIG_BOARD_CH32V307VCT6), y) +SRC_DIR +=ch32v307vct6 +endif + ifeq ($(CONFIG_BOARD_RV32M1_VEGA),y) SRC_DIR +=rv32m1-vega endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/Makefile b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/Makefile new file mode 100644 index 000000000..bc42d6b34 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/Makefile @@ -0,0 +1,3 @@ +SRC_FILES := core_riscv.c + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/core_riscv.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/core_riscv.c new file mode 100644 index 000000000..b88ab2246 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/core_riscv.c @@ -0,0 +1,558 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : core_riscv.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : RISC-V Core Peripheral Access Layer Source File +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include + +/* define compiler specific symbols */ +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/********************************************************************* + * @fn __get_FFLAGS + * + * @brief Return the Floating-Point Accrued Exceptions + * + * @return fflags value + */ +uint32_t __get_FFLAGS(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "fflags" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_FFLAGS + * + * @brief Set the Floating-Point Accrued Exceptions + * + * @param value - set FFLAGS value + * + * @return none + */ +void __set_FFLAGS(uint32_t value) +{ + __ASM volatile ("csrw fflags, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_FRM + * + * @brief Return the Floating-Point Dynamic Rounding Mode + * + * @return frm value + */ +uint32_t __get_FRM(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "frm" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_FRM + * + * @brief Set the Floating-Point Dynamic Rounding Mode + * + * @param value - set frm value + * + * @return none + */ +void __set_FRM(uint32_t value) +{ + __ASM volatile ("csrw frm, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_FCSR + * + * @brief Return the Floating-Point Control and Status Register + * + * @return fcsr value + */ +uint32_t __get_FCSR(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "fcsr" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_FCSR + * + * @brief Set the Floating-Point Dynamic Rounding Mode + * + * @param value - set fcsr value + * + * @return none + */ +void __set_FCSR(uint32_t value) +{ + __ASM volatile ("csrw fcsr, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MSTATUS + * + * @brief Return the Machine Status Register + * + * @return mstatus value + */ +uint32_t __get_MSTATUS(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mstatus" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MSTATUS + * + * @brief Set the Machine Status Register + * + * @param value - set mstatus value + * + * @return none + */ +void __set_MSTATUS(uint32_t value) +{ + __ASM volatile ("csrw mstatus, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MISA + * + * @brief Return the Machine ISA Register + * + * @return misa value + */ +uint32_t __get_MISA(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "misa" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MISA + * + * @brief Set the Machine ISA Register + * + * @param value - set misa value + * + * @return none + */ +void __set_MISA(uint32_t value) +{ + __ASM volatile ("csrw misa, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MIE + * + * @brief Return the Machine Interrupt Enable Register + * + * @return mie value + */ +uint32_t __get_MIE(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mie" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MISA + * + * @brief Set the Machine ISA Register + * + * @param value - set mie value + * + * @return none + */ +void __set_MIE(uint32_t value) +{ + __ASM volatile ("csrw mie, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MTVEC + * + * @brief Return the Machine Trap-Vector Base-Address Register + * + * @return mtvec value + */ +uint32_t __get_MTVEC(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mtvec" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MTVEC + * + * @brief Set the Machine Trap-Vector Base-Address Register + * + * @param value - set mtvec value + * + * @return none + */ +void __set_MTVEC(uint32_t value) +{ + __ASM volatile ("csrw mtvec, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MTVEC + * + * @brief Return the Machine Seratch Register + * + * @return mscratch value + */ +uint32_t __get_MSCRATCH(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mscratch" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MTVEC + * + * @brief Set the Machine Seratch Register + * + * @param value - set mscratch value + * + * @return none + */ +void __set_MSCRATCH(uint32_t value) +{ + __ASM volatile ("csrw mscratch, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MEPC + * + * @brief Return the Machine Exception Program Register + * + * @return mepc value + */ +uint32_t __get_MEPC(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mepc" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MEPC + * + * @brief Set the Machine Exception Program Register + * + * @return mepc value + */ +void __set_MEPC(uint32_t value) +{ + __ASM volatile ("csrw mepc, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MCAUSE + * + * @brief Return the Machine Cause Register + * + * @return mcause value + */ +uint32_t __get_MCAUSE(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mcause" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MEPC + * + * @brief Set the Machine Cause Register + * + * @return mcause value + */ +void __set_MCAUSE(uint32_t value) +{ + __ASM volatile ("csrw mcause, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MTVAL + * + * @brief Return the Machine Trap Value Register + * + * @return mtval value + */ +uint32_t __get_MTVAL(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mtval" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MTVAL + * + * @brief Set the Machine Trap Value Register + * + * @return mtval value + */ +void __set_MTVAL(uint32_t value) +{ + __ASM volatile ("csrw mtval, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MIP + * + * @brief Return the Machine Interrupt Pending Register + * + * @return mip value + */ +uint32_t __get_MIP(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mip" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MIP + * + * @brief Set the Machine Interrupt Pending Register + * + * @return mip value + */ +void __set_MIP(uint32_t value) +{ + __ASM volatile ("csrw mip, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MCYCLE + * + * @brief Return Lower 32 bits of Cycle counter + * + * @return mcycle value + */ +uint32_t __get_MCYCLE(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mcycle" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MCYCLE + * + * @brief Set Lower 32 bits of Cycle counter + * + * @return mcycle value + */ +void __set_MCYCLE(uint32_t value) +{ + __ASM volatile ("csrw mcycle, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MCYCLEH + * + * @brief Return Upper 32 bits of Cycle counter + * + * @return mcycleh value + */ +uint32_t __get_MCYCLEH(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mcycleh" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MCYCLEH + * + * @brief Set Upper 32 bits of Cycle counter + * + * @return mcycleh value + */ +void __set_MCYCLEH(uint32_t value) +{ + __ASM volatile ("csrw mcycleh, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MINSTRET + * + * @brief Return Lower 32 bits of Instructions-retired counter + * + * @return mcause value + */ +uint32_t __get_MINSTRET(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "minstret" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MINSTRET + * + * @brief Set Lower 32 bits of Instructions-retired counter + * + * @return minstret value + */ +void __set_MINSTRET(uint32_t value) +{ + __ASM volatile ("csrw minstret, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MINSTRETH + * + * @brief Return Upper 32 bits of Instructions-retired counter + * + * @return minstreth value + */ +uint32_t __get_MINSTRETH(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "minstreth" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __set_MINSTRETH + * + * @brief Set Upper 32 bits of Instructions-retired counter + * + * @return minstreth value + */ +void __set_MINSTRETH(uint32_t value) +{ + __ASM volatile ("csrw minstreth, %0" : : "r" (value) ); +} + +/********************************************************************* + * @fn __get_MVENDORID + * + * @brief Return Vendor ID Register + * + * @return mvendorid value + */ +uint32_t __get_MVENDORID(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mvendorid" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __get_MARCHID + * + * @brief Return Machine Architecture ID Register + * + * @return marchid value + */ +uint32_t __get_MARCHID(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "marchid" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __get_MIMPID + * + * @brief Return Machine Implementation ID Register + * + * @return mimpid value + */ +uint32_t __get_MIMPID(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mimpid" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __get_MHARTID + * + * @brief Return Hart ID Register + * + * @return mhartid value + */ +uint32_t __get_MHARTID(void) +{ + uint32_t result; + + __ASM volatile ( "csrr %0," "mhartid" : "=r" (result) ); + return (result); +} + +/********************************************************************* + * @fn __get_SP + * + * @brief none + * + * @return Return SP Register + */ +uint32_t __get_SP(void) +{ + uint32_t result; + + asm volatile ( + "mv %0," "sp" + : "=r"(result) + : + ); + return (result); +} + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/core_riscv.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/core_riscv.h new file mode 100644 index 000000000..f5f16f35b --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Core/core_riscv.h @@ -0,0 +1,375 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : core_riscv.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : RISC-V Core Peripheral Access Layer Header File for CH32V30x +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CORE_RISCV_H__ +#define __CORE_RISCV_H__ + +/* IO definitions */ +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + +/* Standard Peripheral Library old types (maintained for legacy purpose) */ +typedef __I uint64_t vuc64; /* Read Only */ +typedef __I uint32_t vuc32; /* Read Only */ +typedef __I uint16_t vuc16; /* Read Only */ +typedef __I uint8_t vuc8; /* Read Only */ + +typedef const uint64_t uc64; /* Read Only */ +typedef const uint32_t uc32; /* Read Only */ +typedef const uint16_t uc16; /* Read Only */ +typedef const uint8_t uc8; /* Read Only */ + +typedef __I int64_t vsc64; /* Read Only */ +typedef __I int32_t vsc32; /* Read Only */ +typedef __I int16_t vsc16; /* Read Only */ +typedef __I int8_t vsc8; /* Read Only */ + +typedef const int64_t sc64; /* Read Only */ +typedef const int32_t sc32; /* Read Only */ +typedef const int16_t sc16; /* Read Only */ +typedef const int8_t sc8; /* Read Only */ + +typedef __IO uint64_t vu64; +typedef __IO uint32_t vu32; +typedef __IO uint16_t vu16; +typedef __IO uint8_t vu8; + +typedef uint64_t u64; +typedef uint32_t u32; +typedef uint16_t u16; +typedef uint8_t u8; + +typedef __IO int64_t vs64; +typedef __IO int32_t vs32; +typedef __IO int16_t vs16; +typedef __IO int8_t vs8; + +typedef int64_t s64; +typedef int32_t s32; +typedef int16_t s16; +typedef int8_t s8; + +typedef enum {StatERROR = 0, SUCCESS = !StatERROR} ErrorStatus; + +typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; + +typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; + +#define RV_STATIC_INLINE static inline + +/* memory mapped structure for Program Fast Interrupt Controller (PFIC) */ +typedef struct{ + __I uint32_t ISR[8]; + __I uint32_t IPR[8]; + __IO uint32_t ITHRESDR; + __IO uint32_t RESERVED; + __IO uint32_t CFGR; + __I uint32_t GISR; + uint8_t VTFIDR[4]; + uint8_t RESERVED0[12]; + __IO uint32_t VTFADDR[4]; + uint8_t RESERVED1[0x90]; + __O uint32_t IENR[8]; + uint8_t RESERVED2[0x60]; + __O uint32_t IRER[8]; + uint8_t RESERVED3[0x60]; + __O uint32_t IPSR[8]; + uint8_t RESERVED4[0x60]; + __O uint32_t IPRR[8]; + uint8_t RESERVED5[0x60]; + __IO uint32_t IACTR[8]; + uint8_t RESERVED6[0xE0]; + __IO uint8_t IPRIOR[256]; + uint8_t RESERVED7[0x810]; + __IO uint32_t SCTLR; +}PFIC_Type; + +/* memory mapped structure for SysTick */ +typedef struct +{ + __IO u32 CTLR; + __IO u32 SR; + __IO u64 CNT; + __IO u64 CMP; +}SysTick_Type; + + +#define PFIC ((PFIC_Type *) 0xE000E000 ) +#define NVIC PFIC +#define NVIC_KEY1 ((uint32_t)0xFA050000) +#define NVIC_KEY2 ((uint32_t)0xBCAF0000) +#define NVIC_KEY3 ((uint32_t)0xBEEF0000) + +#define SysTick ((SysTick_Type *) 0xE000F000) + +/********************************************************************* + * @fn __enable_irq + * + * @brief Enable Global Interrupt + * + * @return none + */ +RV_STATIC_INLINE void __enable_irq() { __asm volatile ("csrw 0x800, %0" : : "r" (0x6088) ); } + +/********************************************************************* + * @fn __disable_irq + * + * @brief Disable Global Interrupt + * + * @return none + */ +RV_STATIC_INLINE void __disable_irq() { __asm volatile ("csrw 0x800, %0" : : "r" (0x6000) ); } + +/********************************************************************* + * @fn __NOP + * + * @brief nop + * + * @return none + */ +RV_STATIC_INLINE void __NOP() { __asm volatile ("nop"); } + +/********************************************************************* + * @fn NVIC_EnableIRQ + * + * @brief Enable Interrupt + * + * @param IRQn: Interrupt Numbers + * + * @return none + */ +RV_STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn){ + NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + +/********************************************************************* + * @fn NVIC_DisableIRQ + * + * @brief Disable Interrupt + * + * @param IRQn: Interrupt Numbers + * + * @return none + */ +RV_STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->IRER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + +/********************************************************************* + * @fn NVIC_GetStatusIRQ + * + * @brief Get Interrupt Enable State + * + * @param IRQn: Interrupt Numbers + * + * @return 1 - Interrupt Enable + * 0 - Interrupt Disable + */ +RV_STATIC_INLINE uint32_t NVIC_GetStatusIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + +/********************************************************************* + * @fn NVIC_GetPendingIRQ + * + * @brief Get Interrupt Pending State + * + * @param IRQn: Interrupt Numbers + * + * @return 1 - Interrupt Pending Enable + * 0 - Interrupt Pending Disable + */ +RV_STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->IPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + +/********************************************************************* + * @fn NVIC_SetPendingIRQ + * + * @brief Set Interrupt Pending + * + * @param IRQn: Interrupt Numbers + * + * @return None + */ +RV_STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->IPSR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + +/********************************************************************* + * @fn NVIC_ClearPendingIRQ + * + * @brief Clear Interrupt Pending + * + * @param IRQn: Interrupt Numbers + * + * @return None + */ +RV_STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->IPRR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); +} + +/********************************************************************* + * @fn NVIC_GetActive + * + * @brief Get Interrupt Active State + * + * @param IRQn: Interrupt Numbers + * + * @return 1 - Interrupt Active + * 0 - Interrupt No Active + */ +RV_STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn) +{ + return((uint32_t)((NVIC->IACTR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); +} + +/********************************************************************* + * @fn NVIC_SetPriority + * + * @brief Set Interrupt Priority + * + * @param IRQn - Interrupt Numbers + * priority - + * bit7 - pre-emption priority + * bit6~bit4 - subpriority + * @return None + */ +RV_STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint8_t priority) +{ + NVIC->IPRIOR[(uint32_t)(IRQn)] = priority; +} + +/********************************************************************* + * @fn __WFI + * + * @brief Wait for Interrupt + * + * @return None + */ +__attribute__( ( always_inline ) ) RV_STATIC_INLINE void __WFI(void) +{ + NVIC->SCTLR &= ~(1<<3); // wfi + asm volatile ("wfi"); +} + +/********************************************************************* + * @fn __WFE + * + * @brief Wait for Events + * + * @return None + */ +__attribute__( ( always_inline ) ) RV_STATIC_INLINE void __WFE(void) +{ + uint32_t t; + + t = NVIC->SCTLR; + NVIC->SCTLR |= (1<<3)|(1<<5); // (wfi->wfe)+(__sev) + NVIC->SCTLR = (NVIC->SCTLR & ~(1<<5)) | ( t & (1<<5)); + asm volatile ("wfi"); + asm volatile ("wfi"); +} + +/********************************************************************* + * @fn SetVTFIRQ + * + * @brief Set VTF Interrupt + * + * @param add - VTF interrupt service function base address. + * IRQn -Interrupt Numbers + * num - VTF Interrupt Numbers + * NewState - DISABLE or ENABLE + * @return None + */ +RV_STATIC_INLINE void SetVTFIRQ(uint32_t addr, IRQn_Type IRQn, uint8_t num, FunctionalState NewState){ + if(num > 3) return ; + + if (NewState != DISABLE) + { + NVIC->VTFIDR[num] = IRQn; + NVIC->VTFADDR[num] = ((addr&0xF00FFFFE)|0x1); + } + else{ + NVIC->VTFIDR[num] = IRQn; + NVIC->VTFADDR[num] = ((addr&0xF00FFFFE)&(~0x1)); + } +} + +/********************************************************************* + * @fn NVIC_SystemReset + * + * @brief Initiate a system reset request + * + * @return None + */ +RV_STATIC_INLINE void NVIC_SystemReset(void) +{ + NVIC->CFGR = NVIC_KEY3|(1<<7); +} + + + +/* Core_Exported_Functions */ +extern uint32_t __get_FFLAGS(void); +extern void __set_FFLAGS(uint32_t value); +extern uint32_t __get_FRM(void); +extern void __set_FRM(uint32_t value); +extern uint32_t __get_FCSR(void); +extern void __set_FCSR(uint32_t value); +extern uint32_t __get_MSTATUS(void); +extern void __set_MSTATUS(uint32_t value); +extern uint32_t __get_MISA(void); +extern void __set_MISA(uint32_t value); +extern uint32_t __get_MIE(void); +extern void __set_MIE(uint32_t value); +extern uint32_t __get_MTVEC(void); +extern void __set_MTVEC(uint32_t value); +extern uint32_t __get_MSCRATCH(void); +extern void __set_MSCRATCH(uint32_t value); +extern uint32_t __get_MEPC(void); +extern void __set_MEPC(uint32_t value); +extern uint32_t __get_MCAUSE(void); +extern void __set_MCAUSE(uint32_t value); +extern uint32_t __get_MTVAL(void); +extern void __set_MTVAL(uint32_t value); +extern uint32_t __get_MIP(void); +extern void __set_MIP(uint32_t value); +extern uint32_t __get_MCYCLE(void); +extern void __set_MCYCLE(uint32_t value); +extern uint32_t __get_MCYCLEH(void); +extern void __set_MCYCLEH(uint32_t value); +extern uint32_t __get_MINSTRET(void); +extern void __set_MINSTRET(uint32_t value); +extern uint32_t __get_MINSTRETH(void); +extern void __set_MINSTRETH(uint32_t value); +extern uint32_t __get_MVENDORID(void); +extern uint32_t __get_MARCHID(void); +extern uint32_t __get_MIMPID(void); +extern uint32_t __get_MHARTID(void); +extern uint32_t __get_SP(void); + + + +#endif + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/Makefile b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/Makefile new file mode 100644 index 000000000..6b0487a83 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/Makefile @@ -0,0 +1,3 @@ +SRC_FILES := debug.c + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/debug.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/debug.c new file mode 100644 index 000000000..b9ef9b40e --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/debug.c @@ -0,0 +1,193 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : debug.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for UART +* Printf , Delay functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "debug.h" + +static uint8_t p_us = 0; +static uint16_t p_ms = 0; + +/********************************************************************* + * @fn Delay_Init + * + * @brief Initializes Delay Funcation. + * + * @return none + */ +void Delay_Init(void) +{ + p_us = SystemCoreClock / 8000000; + p_ms = (uint16_t)p_us * 1000; +} + +/********************************************************************* + * @fn Delay_Us + * + * @brief Microsecond Delay Time. + * + * @param n - Microsecond number. + * + * @return None + */ +void Delay_Us(uint32_t n) +{ + uint32_t i; + + SysTick->SR &= ~(1 << 0); + i = (uint32_t)n * p_us; + + SysTick->CMP = i; + SysTick->CTLR |= (1 << 4) | (1 << 5) | (1 << 0); + + while((SysTick->SR & (1 << 0)) != (1 << 0)) + ; + SysTick->CTLR &= ~(1 << 0); +} + +/********************************************************************* + * @fn Delay_Ms + * + * @brief Millisecond Delay Time. + * + * @param n - Millisecond number. + * + * @return None + */ +void Delay_Ms(uint32_t n) +{ + uint32_t i; + + SysTick->SR &= ~(1 << 0); + i = (uint32_t)n * p_ms; + + SysTick->CMP = i; + SysTick->CTLR |= (1 << 4) | (1 << 5) | (1 << 0); + + while((SysTick->SR & (1 << 0)) != (1 << 0)) + ; + SysTick->CTLR &= ~(1 << 0); +} + +/********************************************************************* + * @fn USART_Printf_Init + * + * @brief Initializes the USARTx peripheral. + * + * @param baudrate - USART communication baud rate. + * + * @return None + */ +void USART_Printf_Init(uint32_t baudrate) +{ + GPIO_InitTypeDef GPIO_InitStructure; + USART_InitTypeDef USART_InitStructure; + +#if(DEBUG == DEBUG_UART1) + RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); + + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + +#elif(DEBUG == DEBUG_UART2) + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); + + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &GPIO_InitStructure); + +#elif(DEBUG == DEBUG_UART3) + RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOB, &GPIO_InitStructure); + +#endif + + USART_InitStructure.USART_BaudRate = baudrate; + USART_InitStructure.USART_WordLength = USART_WordLength_8b; + USART_InitStructure.USART_StopBits = USART_StopBits_1; + USART_InitStructure.USART_Parity = USART_Parity_No; + USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + USART_InitStructure.USART_Mode = USART_Mode_Tx; + +#if(DEBUG == DEBUG_UART1) + USART_Init(USART1, &USART_InitStructure); + USART_Cmd(USART1, ENABLE); + +#elif(DEBUG == DEBUG_UART2) + USART_Init(USART2, &USART_InitStructure); + USART_Cmd(USART2, ENABLE); + +#elif(DEBUG == DEBUG_UART3) + USART_Init(USART3, &USART_InitStructure); + USART_Cmd(USART3, ENABLE); + +#endif +} + +/********************************************************************* + * @fn _write + * + * @brief Support Printf Function + * + * @param *buf - UART send Data. + * size - Data length + * + * @return size: Data length + */ +__attribute__((used)) int _write(int fd, char *buf, int size) +{ + int i; + + for(i = 0; i < size; i++) + { +#if(DEBUG == DEBUG_UART1) + while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); + USART_SendData(USART1, *buf++); +#elif(DEBUG == DEBUG_UART2) + while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); + USART_SendData(USART2, *buf++); +#elif(DEBUG == DEBUG_UART3) + while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET); + USART_SendData(USART3, *buf++); +#endif + } + + return size; +} + +/********************************************************************* + * @fn _sbrk + * + * @brief Change the spatial position of data segment. + * + * @return size: Data length + */ +void *_sbrk(ptrdiff_t incr) +{ + extern char _end[]; + extern char _heap_end[]; + static char *curbrk = _end; + + if ((curbrk + incr < _end) || (curbrk + incr > _heap_end)) + return NULL - 1; + + curbrk += incr; + return curbrk - incr; +} + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/debug.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/debug.h new file mode 100644 index 000000000..b02a1e34f --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Debug/debug.h @@ -0,0 +1,36 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : debug.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for UART +* Printf , Delay functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __DEBUG_H +#define __DEBUG_H + +#include "stdio.h" +#include "ch32v30x.h" + +/* UART Printf Definition */ +#define DEBUG_UART1 1 +#define DEBUG_UART2 2 +#define DEBUG_UART3 3 + +/* DEBUG UATR Definition */ +#define DEBUG DEBUG_UART1 +//#define DEBUG DEBUG_UART2 +//#define DEBUG DEBUG_UART3 + + +void Delay_Init(void); +void Delay_Us (uint32_t n); +void Delay_Ms (uint32_t n); +void USART_Printf_Init(uint32_t baudrate); + +#endif + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Makefile b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Makefile new file mode 100644 index 000000000..0cbc90b7b --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Makefile @@ -0,0 +1,4 @@ +SRC_FILES := boot.S interrupt.c tick.c switch.S prepare_rhwstack.c interrupt_switch.S +SRC_DIR := Core Debug User Peripheral +# interrupt_switch.S +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/Makefile b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/Makefile new file mode 100644 index 000000000..d4ee439ce --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/Makefile @@ -0,0 +1,3 @@ +SRC_DIR := src + +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x.h new file mode 100755 index 000000000..c3d1c9a64 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x.h @@ -0,0 +1,5243 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : CH32V30x Device Peripheral Access Layer Header File. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_H +#define __CH32V30x_H + +#ifdef __cplusplus + extern "C" { +#endif + +//#define CH32V30x_D8 /* CH32V303x */ +#define CH32V30x_D8C /* CH32V307x-CH32V305x */ + +#define __MPU_PRESENT 0 /* Other CH32 devices does not provide an MPU */ +#define __Vendor_SysTickConfig 0 /* Set to 1 if different SysTick Config is used */ + +#define HSE_VALUE ((uint32_t)8000000) /* Value of the External oscillator in Hz */ + +/* In the following line adjust the External High Speed oscillator (HSE) Startup Timeout value */ +#define HSE_STARTUP_TIMEOUT ((uint16_t)0x1000) /* Time out for HSE start up */ + +#define HSI_VALUE ((uint32_t)8000000) /* Value of the Internal oscillator in Hz */ + +/* Interrupt Number Definition, according to the selected device */ +typedef enum IRQn +{ + /****** RISC-V Processor Exceptions Numbers *******************************************************/ + NonMaskableInt_IRQn = 2, /* 2 Non Maskable Interrupt */ + EXC_IRQn = 3, /* 3 Exception Interrupt */ + Ecall_M_Mode_IRQn = 5, /* 5 Ecall M Mode Interrupt */ + Ecall_U_Mode_IRQn = 8, /* 8 Ecall U Mode Interrupt */ + Break_Point_IRQn = 9, /* 9 Break Point Interrupt */ + SysTicK_IRQn = 12, /* 12 System timer Interrupt */ + Software_IRQn = 14, /* 14 software Interrupt */ + + /****** RISC-V specific Interrupt Numbers *********************************************************/ + WWDG_IRQn = 16, /* Window WatchDog Interrupt */ + PVD_IRQn = 17, /* PVD through EXTI Line detection Interrupt */ + TAMPER_IRQn = 18, /* Tamper Interrupt */ + RTC_IRQn = 19, /* RTC global Interrupt */ + FLASH_IRQn = 20, /* FLASH global Interrupt */ + RCC_IRQn = 21, /* RCC global Interrupt */ + EXTI0_IRQn = 22, /* EXTI Line0 Interrupt */ + EXTI1_IRQn = 23, /* EXTI Line1 Interrupt */ + EXTI2_IRQn = 24, /* EXTI Line2 Interrupt */ + EXTI3_IRQn = 25, /* EXTI Line3 Interrupt */ + EXTI4_IRQn = 26, /* EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 27, /* DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 28, /* DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 29, /* DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 30, /* DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 31, /* DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 32, /* DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 33, /* DMA1 Channel 7 global Interrupt */ + ADC_IRQn = 34, /* ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 35, /* USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 36, /* USB Device Low Priority or CAN1 RX0 Interrupts */ + CAN1_RX1_IRQn = 37, /* CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 38, /* CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 39, /* External Line[9:5] Interrupts */ + TIM1_BRK_IRQn = 40, /* TIM1 Break Interrupt */ + TIM1_UP_IRQn = 41, /* TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 42, /* TIM1 Trigger and Commutation Interrupt */ + TIM1_CC_IRQn = 43, /* TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 44, /* TIM2 global Interrupt */ + TIM3_IRQn = 45, /* TIM3 global Interrupt */ + TIM4_IRQn = 46, /* TIM4 global Interrupt */ + I2C1_EV_IRQn = 47, /* I2C1 Event Interrupt */ + I2C1_ER_IRQn = 48, /* I2C1 Error Interrupt */ + I2C2_EV_IRQn = 49, /* I2C2 Event Interrupt */ + I2C2_ER_IRQn = 50, /* I2C2 Error Interrupt */ + SPI1_IRQn = 51, /* SPI1 global Interrupt */ + SPI2_IRQn = 52, /* SPI2 global Interrupt */ + USART1_IRQn = 53, /* USART1 global Interrupt */ + USART2_IRQn = 54, /* USART2 global Interrupt */ + USART3_IRQn = 55, /* USART3 global Interrupt */ + EXTI15_10_IRQn = 56, /* External Line[15:10] Interrupts */ + RTCAlarm_IRQn = 57, /* RTC Alarm through EXTI Line Interrupt */ + +#ifdef CH32V30x_D8 + TIM8_BRK_IRQn = 59, /* TIM8 Break Interrupt */ + TIM8_UP_IRQn = 60, /* TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 61, /* TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 62, /* TIM8 Capture Compare Interrupt */ + RNG_IRQn = 63, /* RNG global Interrupt */ + FSMC_IRQn = 64, /* FSMC global Interrupt */ + SDIO_IRQn = 65, /* SDIO global Interrupt */ + TIM5_IRQn = 66, /* TIM5 global Interrupt */ + SPI3_IRQn = 67, /* SPI3 global Interrupt */ + UART4_IRQn = 68, /* UART4 global Interrupt */ + UART5_IRQn = 69, /* UART5 global Interrupt */ + TIM6_IRQn = 70, /* TIM6 global Interrupt */ + TIM7_IRQn = 71, /* TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 72, /* DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 73, /* DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 74, /* DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 75, /* DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 76, /* DMA2 Channel 5 global Interrupt */ + OTG_FS_IRQn = 83, /* OTGFS global Interrupt */ + UART6_IRQn = 87, /* UART6 global Interrupt */ + UART7_IRQn = 88, /* UART7 global Interrupt */ + UART8_IRQn = 89, /* UART8 global Interrupt */ + TIM9_BRK_IRQn = 90, /* TIM9 Break Interrupt */ + TIM9_UP_IRQn = 91, /* TIM9 Update Interrupt */ + TIM9_TRG_COM_IRQn = 92, /* TIM9 Trigger and Commutation Interrupt */ + TIM9_CC_IRQn = 93, /* TIM9 Capture Compare Interrupt */ + TIM10_BRK_IRQn = 94, /* TIM10 Break Interrupt */ + TIM10_UP_IRQn = 95, /* TIM10 Update Interrupt */ + TIM10_TRG_COM_IRQn = 96, /* TIM10 Trigger and Commutation Interrupt */ + TIM10_CC_IRQn = 97, /* TIM10 Capture Compare Interrupt */ + DMA2_Channel6_IRQn = 98, /* DMA2 Channel 6 global Interrupt */ + DMA2_Channel7_IRQn = 99, /* DMA2 Channel 7 global Interrupt */ + DMA2_Channel8_IRQn = 100, /* DMA2 Channel 8 global Interrupt */ + DMA2_Channel9_IRQn = 101, /* DMA2 Channel 9 global Interrupt */ + DMA2_Channel10_IRQn = 102, /* DMA2 Channel 10 global Interrupt */ + DMA2_Channel11_IRQn = 103, /* DMA2 Channel 11 global Interrupt */ + +#endif + +#ifdef CH32V30x_D8C + USBWakeUp_IRQn = 58, /* USB Device WakeUp from suspend through EXTI Line Interrupt */ + TIM8_BRK_IRQn = 59, /* TIM8 Break Interrupt */ + TIM8_UP_IRQn = 60, /* TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 61, /* TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 62, /* TIM8 Capture Compare Interrupt */ + RNG_IRQn = 63, /* RNG global Interrupt */ + FSMC_IRQn = 64, /* FSMC global Interrupt */ + SDIO_IRQn = 65, /* SDIO global Interrupt */ + TIM5_IRQn = 66, /* TIM5 global Interrupt */ + SPI3_IRQn = 67, /* SPI3 global Interrupt */ + UART4_IRQn = 68, /* UART4 global Interrupt */ + UART5_IRQn = 69, /* UART5 global Interrupt */ + TIM6_IRQn = 70, /* TIM6 global Interrupt */ + TIM7_IRQn = 71, /* TIM7 global Interrupt */ + DMA2_Channel1_IRQn = 72, /* DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 73, /* DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 74, /* DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 75, /* DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 76, /* DMA2 Channel 5 global Interrupt */ + ETH_IRQn = 77, /* ETH global Interrupt */ + ETH_WKUP_IRQn = 78, /* ETH WakeUp Interrupt */ + CAN2_TX_IRQn = 79, /* CAN2 TX Interrupts */ + CAN2_RX0_IRQn = 80, /* CAN2 RX0 Interrupts */ + CAN2_RX1_IRQn = 81, /* CAN2 RX1 Interrupt */ + CAN2_SCE_IRQn = 82, /* CAN2 SCE Interrupt */ + OTG_FS_IRQn = 83, /* OTGFS global Interrupt */ + USBHSWakeup_IRQn = 84, /* USBHS WakeUp Interrupt */ + USBHS_IRQn = 85, /* USBHS global Interrupt */ + DVP_IRQn = 86, /* DVP global Interrupt */ + UART6_IRQn = 87, /* UART6 global Interrupt */ + UART7_IRQn = 88, /* UART7 global Interrupt */ + UART8_IRQn = 89, /* UART8 global Interrupt */ + TIM9_BRK_IRQn = 90, /* TIM9 Break Interrupt */ + TIM9_UP_IRQn = 91, /* TIM9 Update Interrupt */ + TIM9_TRG_COM_IRQn = 92, /* TIM9 Trigger and Commutation Interrupt */ + TIM9_CC_IRQn = 93, /* TIM9 Capture Compare Interrupt */ + TIM10_BRK_IRQn = 94, /* TIM10 Break Interrupt */ + TIM10_UP_IRQn = 95, /* TIM10 Update Interrupt */ + TIM10_TRG_COM_IRQn = 96, /* TIM10 Trigger and Commutation Interrupt */ + TIM10_CC_IRQn = 97, /* TIM10 Capture Compare Interrupt */ + DMA2_Channel6_IRQn = 98, /* DMA2 Channel 6 global Interrupt */ + DMA2_Channel7_IRQn = 99, /* DMA2 Channel 7 global Interrupt */ + DMA2_Channel8_IRQn = 100, /* DMA2 Channel 8 global Interrupt */ + DMA2_Channel9_IRQn = 101, /* DMA2 Channel 9 global Interrupt */ + DMA2_Channel10_IRQn = 102, /* DMA2 Channel 10 global Interrupt */ + DMA2_Channel11_IRQn = 103, /* DMA2 Channel 11 global Interrupt */ + +#endif +} IRQn_Type; + +#define HardFault_IRQn EXC_IRQn +#define ADC1_2_IRQn ADC_IRQn + + +#include +#include "ch32v30x.h" +#include "core_riscv.h" +#include "system_ch32v30x.h" + + +/* Standard Peripheral Library old definitions (maintained for legacy purpose) */ +#define HSI_Value HSI_VALUE +#define HSE_Value HSE_VALUE +#define HSEStartUp_TimeOut HSE_STARTUP_TIMEOUT + +/* Analog to Digital Converter */ +typedef struct +{ + __IO uint32_t STATR; + __IO uint32_t CTLR1; + __IO uint32_t CTLR2; + __IO uint32_t SAMPTR1; + __IO uint32_t SAMPTR2; + __IO uint32_t IOFR1; + __IO uint32_t IOFR2; + __IO uint32_t IOFR3; + __IO uint32_t IOFR4; + __IO uint32_t WDHTR; + __IO uint32_t WDLTR; + __IO uint32_t RSQR1; + __IO uint32_t RSQR2; + __IO uint32_t RSQR3; + __IO uint32_t ISQR; + __IO uint32_t IDATAR1; + __IO uint32_t IDATAR2; + __IO uint32_t IDATAR3; + __IO uint32_t IDATAR4; + __IO uint32_t RDATAR; +} ADC_TypeDef; + +/* Backup Registers */ +typedef struct +{ + uint32_t RESERVED0; + __IO uint16_t DATAR1; + uint16_t RESERVED1; + __IO uint16_t DATAR2; + uint16_t RESERVED2; + __IO uint16_t DATAR3; + uint16_t RESERVED3; + __IO uint16_t DATAR4; + uint16_t RESERVED4; + __IO uint16_t DATAR5; + uint16_t RESERVED5; + __IO uint16_t DATAR6; + uint16_t RESERVED6; + __IO uint16_t DATAR7; + uint16_t RESERVED7; + __IO uint16_t DATAR8; + uint16_t RESERVED8; + __IO uint16_t DATAR9; + uint16_t RESERVED9; + __IO uint16_t DATAR10; + uint16_t RESERVED10; + __IO uint16_t OCTLR; + uint16_t RESERVED11; + __IO uint16_t TPCTLR; + uint16_t RESERVED12; + __IO uint16_t TPCSR; + uint16_t RESERVED13[5]; + __IO uint16_t DATAR11; + uint16_t RESERVED14; + __IO uint16_t DATAR12; + uint16_t RESERVED15; + __IO uint16_t DATAR13; + uint16_t RESERVED16; + __IO uint16_t DATAR14; + uint16_t RESERVED17; + __IO uint16_t DATAR15; + uint16_t RESERVED18; + __IO uint16_t DATAR16; + uint16_t RESERVED19; + __IO uint16_t DATAR17; + uint16_t RESERVED20; + __IO uint16_t DATAR18; + uint16_t RESERVED21; + __IO uint16_t DATAR19; + uint16_t RESERVED22; + __IO uint16_t DATAR20; + uint16_t RESERVED23; + __IO uint16_t DATAR21; + uint16_t RESERVED24; + __IO uint16_t DATAR22; + uint16_t RESERVED25; + __IO uint16_t DATAR23; + uint16_t RESERVED26; + __IO uint16_t DATAR24; + uint16_t RESERVED27; + __IO uint16_t DATAR25; + uint16_t RESERVED28; + __IO uint16_t DATAR26; + uint16_t RESERVED29; + __IO uint16_t DATAR27; + uint16_t RESERVED30; + __IO uint16_t DATAR28; + uint16_t RESERVED31; + __IO uint16_t DATAR29; + uint16_t RESERVED32; + __IO uint16_t DATAR30; + uint16_t RESERVED33; + __IO uint16_t DATAR31; + uint16_t RESERVED34; + __IO uint16_t DATAR32; + uint16_t RESERVED35; + __IO uint16_t DATAR33; + uint16_t RESERVED36; + __IO uint16_t DATAR34; + uint16_t RESERVED37; + __IO uint16_t DATAR35; + uint16_t RESERVED38; + __IO uint16_t DATAR36; + uint16_t RESERVED39; + __IO uint16_t DATAR37; + uint16_t RESERVED40; + __IO uint16_t DATAR38; + uint16_t RESERVED41; + __IO uint16_t DATAR39; + uint16_t RESERVED42; + __IO uint16_t DATAR40; + uint16_t RESERVED43; + __IO uint16_t DATAR41; + uint16_t RESERVED44; + __IO uint16_t DATAR42; + uint16_t RESERVED45; +} BKP_TypeDef; + +/* Controller Area Network TxMailBox */ +typedef struct +{ + __IO uint32_t TXMIR; + __IO uint32_t TXMDTR; + __IO uint32_t TXMDLR; + __IO uint32_t TXMDHR; +} CAN_TxMailBox_TypeDef; + +/* Controller Area Network FIFOMailBox */ +typedef struct +{ + __IO uint32_t RXMIR; + __IO uint32_t RXMDTR; + __IO uint32_t RXMDLR; + __IO uint32_t RXMDHR; +} CAN_FIFOMailBox_TypeDef; + +/* Controller Area Network FilterRegister */ +typedef struct +{ + __IO uint32_t FR1; + __IO uint32_t FR2; +} CAN_FilterRegister_TypeDef; + +/* Controller Area Network */ +typedef struct +{ + __IO uint32_t CTLR; + __IO uint32_t STATR; + __IO uint32_t TSTATR; + __IO uint32_t RFIFO0; + __IO uint32_t RFIFO1; + __IO uint32_t INTENR; + __IO uint32_t ERRSR; + __IO uint32_t BTIMR; + uint32_t RESERVED0[88]; + CAN_TxMailBox_TypeDef sTxMailBox[3]; + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; + uint32_t RESERVED1[12]; + __IO uint32_t FCTLR; + __IO uint32_t FMCFGR; + uint32_t RESERVED2; + __IO uint32_t FSCFGR; + uint32_t RESERVED3; + __IO uint32_t FAFIFOR; + uint32_t RESERVED4; + __IO uint32_t FWR; + uint32_t RESERVED5[8]; + CAN_FilterRegister_TypeDef sFilterRegister[28]; +} CAN_TypeDef; + +/* CRC Calculation Unit */ +typedef struct +{ + __IO uint32_t DATAR; + __IO uint8_t IDATAR; + uint8_t RESERVED0; + uint16_t RESERVED1; + __IO uint32_t CTLR; +} CRC_TypeDef; + +/* Digital to Analog Converter */ +typedef struct +{ + __IO uint32_t CTLR; + __IO uint32_t SWTR; + __IO uint32_t R12BDHR1; + __IO uint32_t L12BDHR1; + __IO uint32_t R8BDHR1; + __IO uint32_t R12BDHR2; + __IO uint32_t L12BDHR2; + __IO uint32_t R8BDHR2; + __IO uint32_t RD12BDHR; + __IO uint32_t LD12BDHR; + __IO uint32_t RD8BDHR; + __IO uint32_t DOR1; + __IO uint32_t DOR2; +} DAC_TypeDef; + +/* DMA Channel Controller */ +typedef struct +{ + __IO uint32_t CFGR; + __IO uint32_t CNTR; + __IO uint32_t PADDR; + __IO uint32_t MADDR; +} DMA_Channel_TypeDef; + +/* DMA Controller */ +typedef struct +{ + __IO uint32_t INTFR; + __IO uint32_t INTFCR; +} DMA_TypeDef; + +/* External Interrupt/Event Controller */ +typedef struct +{ + __IO uint32_t INTENR; + __IO uint32_t EVENR; + __IO uint32_t RTENR; + __IO uint32_t FTENR; + __IO uint32_t SWIEVR; + __IO uint32_t INTFR; +} EXTI_TypeDef; + +/* FLASH Registers */ +typedef struct +{ + __IO uint32_t ACTLR; + __IO uint32_t KEYR; + __IO uint32_t OBKEYR; + __IO uint32_t STATR; + __IO uint32_t CTLR; + __IO uint32_t ADDR; + __IO uint32_t RESERVED; + __IO uint32_t OBR; + __IO uint32_t WPR; + __IO uint32_t MODEKEYR; +} FLASH_TypeDef; + +/* Option Bytes Registers */ +typedef struct +{ + __IO uint16_t RDPR; + __IO uint16_t USER; + __IO uint16_t Data0; + __IO uint16_t Data1; + __IO uint16_t WRPR0; + __IO uint16_t WRPR1; + __IO uint16_t WRPR2; + __IO uint16_t WRPR3; +} OB_TypeDef; + +/* FSMC Bank1 Registers */ +typedef struct +{ + __IO uint32_t BTCR[8]; +} FSMC_Bank1_TypeDef; + +/* FSMC Bank1E Registers */ +typedef struct +{ + __IO uint32_t BWTR[7]; +} FSMC_Bank1E_TypeDef; + +/* FSMC Bank2 Registers */ +typedef struct +{ + __IO uint32_t PCR2; + __IO uint32_t SR2; + __IO uint32_t PMEM2; + __IO uint32_t PATT2; + uint32_t RESERVED0; + __IO uint32_t ECCR2; +} FSMC_Bank2_TypeDef; + +/* General Purpose I/O */ +typedef struct +{ + __IO uint32_t CFGLR; + __IO uint32_t CFGHR; + __IO uint32_t INDR; + __IO uint32_t OUTDR; + __IO uint32_t BSHR; + __IO uint32_t BCR; + __IO uint32_t LCKR; +} GPIO_TypeDef; + +/* Alternate Function I/O */ +typedef struct +{ + __IO uint32_t ECR; + __IO uint32_t PCFR1; + __IO uint32_t EXTICR[4]; + uint32_t RESERVED0; + __IO uint32_t PCFR2; +} AFIO_TypeDef; + +/* Inter Integrated Circuit Interface */ +typedef struct +{ + __IO uint16_t CTLR1; + uint16_t RESERVED0; + __IO uint16_t CTLR2; + uint16_t RESERVED1; + __IO uint16_t OADDR1; + uint16_t RESERVED2; + __IO uint16_t OADDR2; + uint16_t RESERVED3; + __IO uint16_t DATAR; + uint16_t RESERVED4; + __IO uint16_t STAR1; + uint16_t RESERVED5; + __IO uint16_t STAR2; + uint16_t RESERVED6; + __IO uint16_t CKCFGR; + uint16_t RESERVED7; + __IO uint16_t RTR; + uint16_t RESERVED8; +} I2C_TypeDef; + +/* Independent WatchDog */ +typedef struct +{ + __IO uint32_t CTLR; + __IO uint32_t PSCR; + __IO uint32_t RLDR; + __IO uint32_t STATR; +} IWDG_TypeDef; + +/* Power Control */ +typedef struct +{ + __IO uint32_t CTLR; + __IO uint32_t CSR; +} PWR_TypeDef; + +/* Reset and Clock Control */ +typedef struct +{ + __IO uint32_t CTLR; + __IO uint32_t CFGR0; + __IO uint32_t INTR; + __IO uint32_t APB2PRSTR; + __IO uint32_t APB1PRSTR; + __IO uint32_t AHBPCENR; + __IO uint32_t APB2PCENR; + __IO uint32_t APB1PCENR; + __IO uint32_t BDCTLR; + __IO uint32_t RSTSCKR; + + __IO uint32_t AHBRSTR; + __IO uint32_t CFGR2; +} RCC_TypeDef; + +/* Real-Time Clock */ +typedef struct +{ + __IO uint16_t CTLRH; + uint16_t RESERVED0; + __IO uint16_t CTLRL; + uint16_t RESERVED1; + __IO uint16_t PSCRH; + uint16_t RESERVED2; + __IO uint16_t PSCRL; + uint16_t RESERVED3; + __IO uint16_t DIVH; + uint16_t RESERVED4; + __IO uint16_t DIVL; + uint16_t RESERVED5; + __IO uint16_t CNTH; + uint16_t RESERVED6; + __IO uint16_t CNTL; + uint16_t RESERVED7; + __IO uint16_t ALRMH; + uint16_t RESERVED8; + __IO uint16_t ALRML; + uint16_t RESERVED9; +} RTC_TypeDef; + +/* SDIO Registers */ +typedef struct +{ + __IO uint32_t POWER; + __IO uint32_t CLKCR; + __IO uint32_t ARG; + __IO uint32_t CMD; + __I uint32_t RESPCMD; + __I uint32_t RESP1; + __I uint32_t RESP2; + __I uint32_t RESP3; + __I uint32_t RESP4; + __IO uint32_t DTIMER; + __IO uint32_t DLEN; + __IO uint32_t DCTRL; + __I uint32_t DCOUNT; + __I uint32_t STA; + __IO uint32_t ICR; + __IO uint32_t MASK; + uint32_t RESERVED0[2]; + __I uint32_t FIFOCNT; + uint32_t RESERVED1[13]; + __IO uint32_t FIFO; +} SDIO_TypeDef; + +/* Serial Peripheral Interface */ +typedef struct +{ + __IO uint16_t CTLR1; + uint16_t RESERVED0; + __IO uint16_t CTLR2; + uint16_t RESERVED1; + __IO uint16_t STATR; + uint16_t RESERVED2; + __IO uint16_t DATAR; + uint16_t RESERVED3; + __IO uint16_t CRCR; + uint16_t RESERVED4; + __IO uint16_t RCRCR; + uint16_t RESERVED5; + __IO uint16_t TCRCR; + uint16_t RESERVED6; + __IO uint16_t I2SCFGR; + uint16_t RESERVED7; + __IO uint16_t I2SPR; + uint16_t RESERVED8; + __IO uint16_t HSCR; + uint16_t RESERVED9; +} SPI_TypeDef; + +/* TIM */ +typedef struct +{ + __IO uint16_t CTLR1; + uint16_t RESERVED0; + __IO uint16_t CTLR2; + uint16_t RESERVED1; + __IO uint16_t SMCFGR; + uint16_t RESERVED2; + __IO uint16_t DMAINTENR; + uint16_t RESERVED3; + __IO uint16_t INTFR; + uint16_t RESERVED4; + __IO uint16_t SWEVGR; + uint16_t RESERVED5; + __IO uint16_t CHCTLR1; + uint16_t RESERVED6; + __IO uint16_t CHCTLR2; + uint16_t RESERVED7; + __IO uint16_t CCER; + uint16_t RESERVED8; + __IO uint16_t CNT; + uint16_t RESERVED9; + __IO uint16_t PSC; + uint16_t RESERVED10; + __IO uint16_t ATRLR; + uint16_t RESERVED11; + __IO uint16_t RPTCR; + uint16_t RESERVED12; + __IO uint16_t CH1CVR; + uint16_t RESERVED13; + __IO uint16_t CH2CVR; + uint16_t RESERVED14; + __IO uint16_t CH3CVR; + uint16_t RESERVED15; + __IO uint16_t CH4CVR; + uint16_t RESERVED16; + __IO uint16_t BDTR; + uint16_t RESERVED17; + __IO uint16_t DMACFGR; + uint16_t RESERVED18; + __IO uint16_t DMAADR; + uint16_t RESERVED19; +} TIM_TypeDef; + +/* Universal Synchronous Asynchronous Receiver Transmitter */ +typedef struct +{ + __IO uint16_t STATR; + uint16_t RESERVED0; + __IO uint16_t DATAR; + uint16_t RESERVED1; + __IO uint16_t BRR; + uint16_t RESERVED2; + __IO uint16_t CTLR1; + uint16_t RESERVED3; + __IO uint16_t CTLR2; + uint16_t RESERVED4; + __IO uint16_t CTLR3; + uint16_t RESERVED5; + __IO uint16_t GPR; + uint16_t RESERVED6; +} USART_TypeDef; + +/* Window WatchDog */ +typedef struct +{ + __IO uint32_t CTLR; + __IO uint32_t CFGR; + __IO uint32_t STATR; +} WWDG_TypeDef; + +/* Enhanced Registers */ +typedef struct +{ + __IO uint32_t EXTEN_CTR; +} EXTEN_TypeDef; + +/* OPA Registers */ +typedef struct +{ + __IO uint32_t CR; +} OPA_TypeDef; + +/* RNG Registers */ +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t SR; + __IO uint32_t DR; +} RNG_TypeDef; + +/* DVP Registers */ +typedef struct +{ + __IO uint8_t CR0; + __IO uint8_t CR1; + __IO uint8_t IER; + __IO uint8_t Reserved0; + __IO uint16_t ROW_NUM; + __IO uint16_t COL_NUM; + __IO uint32_t DMA_BUF0; + __IO uint32_t DMA_BUF1; + __IO uint8_t IFR; + __IO uint8_t STATUS; + __IO uint16_t Reserved1; + __IO uint16_t ROW_CNT; + __IO uint16_t Reserved2; + __IO uint16_t HOFFCNT; + __IO uint16_t VST; + __IO uint16_t CAPCNT; + __IO uint16_t VLINE; + __IO uint32_t DR; +} DVP_TypeDef; + +/* USBHS Registers */ +typedef struct +{ + __IO uint8_t CONTROL; + __IO uint8_t HOST_CTRL; + __IO uint8_t INT_EN; + __IO uint8_t DEV_AD; + __IO uint16_t FRAME_NO; + __IO uint8_t SUSPEND; + __IO uint8_t RESERVED0; + __IO uint8_t SPEED_TYPE; + __IO uint8_t MIS_ST; + __IO uint8_t INT_FG; + __IO uint8_t INT_ST; + __IO uint16_t RX_LEN; + __IO uint16_t RESERVED1; + __IO uint32_t ENDP_CONFIG; + __IO uint32_t ENDP_TYPE; + __IO uint32_t BUF_MODE; + __IO uint32_t UEP0_DMA; + __IO uint32_t UEP1_RX_DMA; + __IO uint32_t UEP2_RX_DMA; + __IO uint32_t UEP3_RX_DMA; + __IO uint32_t UEP4_RX_DMA; + __IO uint32_t UEP5_RX_DMA; + __IO uint32_t UEP6_RX_DMA; + __IO uint32_t UEP7_RX_DMA; + __IO uint32_t UEP8_RX_DMA; + __IO uint32_t UEP9_RX_DMA; + __IO uint32_t UEP10_RX_DMA; + __IO uint32_t UEP11_RX_DMA; + __IO uint32_t UEP12_RX_DMA; + __IO uint32_t UEP13_RX_DMA; + __IO uint32_t UEP14_RX_DMA; + __IO uint32_t UEP15_RX_DMA; + __IO uint32_t UEP1_TX_DMA; + __IO uint32_t UEP2_TX_DMA; + __IO uint32_t UEP3_TX_DMA; + __IO uint32_t UEP4_TX_DMA; + __IO uint32_t UEP5_TX_DMA; + __IO uint32_t UEP6_TX_DMA; + __IO uint32_t UEP7_TX_DMA; + __IO uint32_t UEP8_TX_DMA; + __IO uint32_t UEP9_TX_DMA; + __IO uint32_t UEP10_TX_DMA; + __IO uint32_t UEP11_TX_DMA; + __IO uint32_t UEP12_TX_DMA; + __IO uint32_t UEP13_TX_DMA; + __IO uint32_t UEP14_TX_DMA; + __IO uint32_t UEP15_TX_DMA; + __IO uint16_t UEP0_MAX_LEN; + __IO uint16_t RESERVED2; + __IO uint16_t UEP1_MAX_LEN; + __IO uint16_t RESERVED3; + __IO uint16_t UEP2_MAX_LEN; + __IO uint16_t RESERVED4; + __IO uint16_t UEP3_MAX_LEN; + __IO uint16_t RESERVED5; + __IO uint16_t UEP4_MAX_LEN; + __IO uint16_t RESERVED6; + __IO uint16_t UEP5_MAX_LEN; + __IO uint16_t RESERVED7; + __IO uint16_t UEP6_MAX_LEN; + __IO uint16_t RESERVED8; + __IO uint16_t UEP7_MAX_LEN; + __IO uint16_t RESERVED9; + __IO uint16_t UEP8_MAX_LEN; + __IO uint16_t RESERVED10; + __IO uint16_t UEP9_MAX_LEN; + __IO uint16_t RESERVED11; + __IO uint16_t UEP10_MAX_LEN; + __IO uint16_t RESERVED12; + __IO uint16_t UEP11_MAX_LEN; + __IO uint16_t RESERVED13; + __IO uint16_t UEP12_MAX_LEN; + __IO uint16_t RESERVED14; + __IO uint16_t UEP13_MAX_LEN; + __IO uint16_t RESERVED15; + __IO uint16_t UEP14_MAX_LEN; + __IO uint16_t RESERVED16; + __IO uint16_t UEP15_MAX_LEN; + __IO uint16_t RESERVED17; + __IO uint16_t UEP0_TX_LEN; + __IO uint8_t UEP0_TX_CTRL; + __IO uint8_t UEP0_RX_CTRL; + __IO uint16_t UEP1_TX_LEN; + __IO uint8_t UEP1_TX_CTRL; + __IO uint8_t UEP1_RX_CTRL; + __IO uint16_t UEP2_TX_LEN; + __IO uint8_t UEP2_TX_CTRL; + __IO uint8_t UEP2_RX_CTRL; + __IO uint16_t UEP3_TX_LEN; + __IO uint8_t UEP3_TX_CTRL; + __IO uint8_t UEP3_RX_CTRL; + __IO uint16_t UEP4_TX_LEN; + __IO uint8_t UEP4_TX_CTRL; + __IO uint8_t UEP4_RX_CTRL; + __IO uint16_t UEP5_TX_LEN; + __IO uint8_t UEP5_TX_CTRL; + __IO uint8_t UEP5_RX_CTRL; + __IO uint16_t UEP6_TX_LEN; + __IO uint8_t UEP6_TX_CTRL; + __IO uint8_t UEP6_RX_CTRL; + __IO uint16_t UEP7_TX_LEN; + __IO uint8_t UEP7_TX_CTRL; + __IO uint8_t UEP7_RX_CTRL; + __IO uint16_t UEP8_TX_LEN; + __IO uint8_t UEP8_TX_CTRL; + __IO uint8_t UEP8_RX_CTRL; + __IO uint16_t UEP9_TX_LEN; + __IO uint8_t UEP9_TX_CTRL; + __IO uint8_t UEP9_RX_CTRL; + __IO uint16_t UEP10_TX_LEN; + __IO uint8_t UEP10_TX_CTRL; + __IO uint8_t UEP10_RX_CTRL; + __IO uint16_t UEP11_TX_LEN; + __IO uint8_t UEP11_TX_CTRL; + __IO uint8_t UEP11_RX_CTRL; + __IO uint16_t UEP12_TX_LEN; + __IO uint8_t UEP12_TX_CTRL; + __IO uint8_t UEP12_RX_CTRL; + __IO uint16_t UEP13_TX_LEN; + __IO uint8_t UEP13_TX_CTRL; + __IO uint8_t UEP13_RX_CTRL; + __IO uint16_t UEP14_TX_LEN; + __IO uint8_t UEP14_TX_CTRL; + __IO uint8_t UEP14_RX_CTRL; + __IO uint16_t UEP15_TX_LEN; + __IO uint8_t UEP15_TX_CTRL; + __IO uint8_t UEP15_RX_CTRL; +} USBHSD_TypeDef; + +typedef struct __attribute__((packed)) +{ + __IO uint8_t CONTROL; + __IO uint8_t HOST_CTRL; + __IO uint8_t INT_EN; + __IO uint8_t DEV_AD; + __IO uint16_t FRAME_NO; + __IO uint8_t SUSPEND; + __IO uint8_t RESERVED0; + __IO uint8_t SPEED_TYPE; + __IO uint8_t MIS_ST; + __IO uint8_t INT_FG; + __IO uint8_t INT_ST; + __IO uint16_t RX_LEN; + __IO uint16_t RESERVED1; + __IO uint32_t HOST_EP_CONFIG; + __IO uint32_t HOST_EP_TYPE; + __IO uint32_t RESERVED2; + __IO uint32_t RESERVED3; + __IO uint32_t RESERVED4; + __IO uint32_t HOST_RX_DMA; + __IO uint32_t RESERVED5; + __IO uint32_t RESERVED6; + __IO uint32_t RESERVED7; + __IO uint32_t RESERVED8; + __IO uint32_t RESERVED9; + __IO uint32_t RESERVED10; + __IO uint32_t RESERVED11; + __IO uint32_t RESERVED12; + __IO uint32_t RESERVED13; + __IO uint32_t RESERVED14; + __IO uint32_t RESERVED15; + __IO uint32_t RESERVED16; + __IO uint32_t RESERVED17; + __IO uint32_t RESERVED18; + __IO uint32_t RESERVED19; + __IO uint32_t HOST_TX_DMA; + __IO uint32_t RESERVED20; + __IO uint32_t RESERVED21; + __IO uint32_t RESERVED22; + __IO uint32_t RESERVED23; + __IO uint32_t RESERVED24; + __IO uint32_t RESERVED25; + __IO uint32_t RESERVED26; + __IO uint32_t RESERVED27; + __IO uint32_t RESERVED28; + __IO uint32_t RESERVED29; + __IO uint32_t RESERVED30; + __IO uint32_t RESERVED31; + __IO uint32_t RESERVED32; + __IO uint32_t RESERVED33; + __IO uint16_t HOST_RX_MAX_LEN; + __IO uint16_t RESERVED34; + __IO uint32_t RESERVED35; + __IO uint32_t RESERVED36; + __IO uint32_t RESERVED37; + __IO uint32_t RESERVED38; + __IO uint32_t RESERVED39; + __IO uint32_t RESERVED40; + __IO uint32_t RESERVED41; + __IO uint32_t RESERVED42; + __IO uint32_t RESERVED43; + __IO uint32_t RESERVED44; + __IO uint32_t RESERVED45; + __IO uint32_t RESERVED46; + __IO uint32_t RESERVED47; + __IO uint32_t RESERVED48; + __IO uint32_t RESERVED49; + __IO uint8_t HOST_EP_PID; + __IO uint8_t RESERVED50; + __IO uint8_t RESERVED51; + __IO uint8_t HOST_RX_CTRL; + __IO uint16_t HOST_TX_LEN; + __IO uint8_t HOST_TX_CTRL; + __IO uint8_t RESERVED52; + __IO uint16_t HOST_SPLIT_DATA; +} USBHSH_TypeDef; + + +/* USBOTG_FS Registers */ +typedef struct +{ + __IO uint8_t BASE_CTRL; + __IO uint8_t UDEV_CTRL; + __IO uint8_t INT_EN; + __IO uint8_t DEV_ADDR; + __IO uint8_t Reserve0; + __IO uint8_t MIS_ST; + __IO uint8_t INT_FG; + __IO uint8_t INT_ST; + __IO uint16_t RX_LEN; + __IO uint16_t Reserve1; + __IO uint8_t UEP4_1_MOD; + __IO uint8_t UEP2_3_MOD; + __IO uint8_t UEP5_6_MOD; + __IO uint8_t UEP7_MOD; + __IO uint32_t UEP0_DMA; + __IO uint32_t UEP1_DMA; + __IO uint32_t UEP2_DMA; + __IO uint32_t UEP3_DMA; + __IO uint32_t UEP4_DMA; + __IO uint32_t UEP5_DMA; + __IO uint32_t UEP6_DMA; + __IO uint32_t UEP7_DMA; + __IO uint16_t UEP0_TX_LEN; + __IO uint8_t UEP0_TX_CTRL; + __IO uint8_t UEP0_RX_CTRL; + __IO uint16_t UEP1_TX_LEN; + __IO uint8_t UEP1_TX_CTRL; + __IO uint8_t UEP1_RX_CTRL; + __IO uint16_t UEP2_TX_LEN; + __IO uint8_t UEP2_TX_CTRL; + __IO uint8_t UEP2_RX_CTRL; + __IO uint16_t UEP3_TX_LEN; + __IO uint8_t UEP3_TX_CTRL; + __IO uint8_t UEP3_RX_CTRL; + __IO uint16_t UEP4_TX_LEN; + __IO uint8_t UEP4_TX_CTRL; + __IO uint8_t UEP4_RX_CTRL; + __IO uint16_t UEP5_TX_LEN; + __IO uint8_t UEP5_TX_CTRL; + __IO uint8_t UEP5_RX_CTRL; + __IO uint16_t UEP6_TX_LEN; + __IO uint8_t UEP6_TX_CTRL; + __IO uint8_t UEP6_RX_CTRL; + __IO uint16_t UEP7_TX_LEN; + __IO uint8_t UEP7_TX_CTRL; + __IO uint8_t UEP7_RX_CTRL; + __IO uint32_t Reserve2; + __IO uint32_t OTG_CR; + __IO uint32_t OTG_SR; +}USBOTG_FS_TypeDef; + +typedef struct __attribute__((packed)) +{ + __IO uint8_t BASE_CTRL; + __IO uint8_t HOST_CTRL; + __IO uint8_t INT_EN; + __IO uint8_t DEV_ADDR; + __IO uint8_t Reserve0; + __IO uint8_t MIS_ST; + __IO uint8_t INT_FG; + __IO uint8_t INT_ST; + __IO uint16_t RX_LEN; + __IO uint16_t Reserve1; + __IO uint8_t Reserve2; + __IO uint8_t HOST_EP_MOD; + __IO uint16_t Reserve3; + __IO uint32_t Reserve4; + __IO uint32_t Reserve5; + __IO uint32_t HOST_RX_DMA; + __IO uint32_t HOST_TX_DMA; + __IO uint32_t Reserve6; + __IO uint32_t Reserve7; + __IO uint32_t Reserve8; + __IO uint32_t Reserve9; + __IO uint32_t Reserve10; + __IO uint16_t Reserve11; + __IO uint16_t HOST_SETUP; + __IO uint8_t HOST_EP_PID; + __IO uint8_t Reserve12; + __IO uint8_t Reserve13; + __IO uint8_t HOST_RX_CTRL; + __IO uint16_t HOST_TX_LEN; + __IO uint8_t HOST_TX_CTRL; + __IO uint8_t Reserve14; + __IO uint32_t Reserve15; + __IO uint32_t Reserve16; + __IO uint32_t Reserve17; + __IO uint32_t Reserve18; + __IO uint32_t Reserve19; + __IO uint32_t OTG_CR; + __IO uint32_t OTG_SR; +}USBOTGH_FS_TypeDef; + +/* Ethernet MAC */ +typedef struct +{ + __IO uint32_t MACCR; + __IO uint32_t MACFFR; + __IO uint32_t MACHTHR; + __IO uint32_t MACHTLR; + __IO uint32_t MACMIIAR; + __IO uint32_t MACMIIDR; + __IO uint32_t MACFCR; + __IO uint32_t MACVLANTR; + uint32_t RESERVED0[2]; + __IO uint32_t MACRWUFFR; + __IO uint32_t MACPMTCSR; + uint32_t RESERVED1[2]; + __IO uint32_t MACSR; + __IO uint32_t MACIMR; + __IO uint32_t MACA0HR; + __IO uint32_t MACA0LR; + __IO uint32_t MACA1HR; + __IO uint32_t MACA1LR; + __IO uint32_t MACA2HR; + __IO uint32_t MACA2LR; + __IO uint32_t MACA3HR; + __IO uint32_t MACA3LR; + uint32_t RESERVED2[40]; + __IO uint32_t MMCCR; + __IO uint32_t MMCRIR; + __IO uint32_t MMCTIR; + __IO uint32_t MMCRIMR; + __IO uint32_t MMCTIMR; + uint32_t RESERVED3[14]; + __IO uint32_t MMCTGFSCCR; + __IO uint32_t MMCTGFMSCCR; + uint32_t RESERVED4[5]; + __IO uint32_t MMCTGFCR; + uint32_t RESERVED5[10]; + __IO uint32_t MMCRFCECR; + __IO uint32_t MMCRFAECR; + uint32_t RESERVED6[10]; + __IO uint32_t MMCRGUFCR; + uint32_t RESERVED7[334]; + __IO uint32_t PTPTSCR; + __IO uint32_t PTPSSIR; + __IO uint32_t PTPTSHR; + __IO uint32_t PTPTSLR; + __IO uint32_t PTPTSHUR; + __IO uint32_t PTPTSLUR; + __IO uint32_t PTPTSAR; + __IO uint32_t PTPTTHR; + __IO uint32_t PTPTTLR; + uint32_t RESERVED8[567]; + __IO uint32_t DMABMR; + __IO uint32_t DMATPDR; + __IO uint32_t DMARPDR; + __IO uint32_t DMARDLAR; + __IO uint32_t DMATDLAR; + __IO uint32_t DMASR; + __IO uint32_t DMAOMR; + __IO uint32_t DMAIER; + __IO uint32_t DMAMFBOCR; + uint32_t RESERVED9[9]; + __IO uint32_t DMACHTDR; + __IO uint32_t DMACHRDR; + __IO uint32_t DMACHTBAR; + __IO uint32_t DMACHRBAR; +} ETH_TypeDef; + + + +/* Peripheral memory map */ +#define FLASH_BASE ((uint32_t)0x08000000) /* FLASH base address in the alias region */ +#define SRAM_BASE ((uint32_t)0x20000000) /* SRAM base address in the alias region */ +#define PERIPH_BASE ((uint32_t)0x40000000) /* Peripheral base address in the alias region */ + +#define FSMC_R_BASE ((uint32_t)0xA0000000) /* FSMC registers base address */ + + +#define APB1PERIPH_BASE (PERIPH_BASE) +#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) + +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400) +#define UART6_BASE (APB1PERIPH_BASE + 0x1800) +#define UART7_BASE (APB1PERIPH_BASE + 0x1C00) +#define UART8_BASE (APB1PERIPH_BASE + 0x2000) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800) +#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) +#define CAN2_BASE (APB1PERIPH_BASE + 0x6800) +#define BKP_BASE (APB1PERIPH_BASE + 0x6C00) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400) + +#define AFIO_BASE (APB2PERIPH_BASE + 0x0000) +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400) +#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) +#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) +#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) +#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) +#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) +#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) +#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) +#define ADC1_BASE (APB2PERIPH_BASE + 0x2400) +#define ADC2_BASE (APB2PERIPH_BASE + 0x2800) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800) +#define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800) +#define TIM9_BASE (APB2PERIPH_BASE + 0x4C00) +#define TIM10_BASE (APB2PERIPH_BASE + 0x5000) +#define TIM11_BASE (APB2PERIPH_BASE + 0x5400) +#define SDIO_BASE (APB2PERIPH_BASE + 0x8000) + +#define DMA1_BASE (AHBPERIPH_BASE + 0x0000) +#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x0008) +#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x001C) +#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x0030) +#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x0044) +#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x0058) +#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x006C) +#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x0080) +#define DMA2_BASE (AHBPERIPH_BASE + 0x0400) +#define DMA2_Channel1_BASE (AHBPERIPH_BASE + 0x0408) +#define DMA2_Channel2_BASE (AHBPERIPH_BASE + 0x041C) +#define DMA2_Channel3_BASE (AHBPERIPH_BASE + 0x0430) +#define DMA2_Channel4_BASE (AHBPERIPH_BASE + 0x0444) +#define DMA2_Channel5_BASE (AHBPERIPH_BASE + 0x0458) +#define DMA2_Channel6_BASE (AHBPERIPH_BASE + 0x046C) +#define DMA2_Channel7_BASE (AHBPERIPH_BASE + 0x0480) +#define DMA2_Channel8_BASE (AHBPERIPH_BASE + 0x0490) +#define DMA2_Channel9_BASE (AHBPERIPH_BASE + 0x04A0) +#define DMA2_Channel10_BASE (AHBPERIPH_BASE + 0x04B0) +#define DMA2_Channel11_BASE (AHBPERIPH_BASE + 0x04C0) +#define DMA2_EXTEN_BASE (AHBPERIPH_BASE + 0x04D0) +#define RCC_BASE (AHBPERIPH_BASE + 0x1000) +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x2000) +#define CRC_BASE (AHBPERIPH_BASE + 0x3000) +#define USBHS_BASE (AHBPERIPH_BASE + 0x3400) +#define EXTEN_BASE (AHBPERIPH_BASE + 0x3800) +#define OPA_BASE (AHBPERIPH_BASE + 0x3804) +#define RNG_BASE (AHBPERIPH_BASE + 0x3C00) + +#define ETH_BASE (AHBPERIPH_BASE + 0x8000) +#define ETH_MAC_BASE (ETH_BASE) +#define ETH_MMC_BASE (ETH_BASE + 0x0100) +#define ETH_PTP_BASE (ETH_BASE + 0x0700) +#define ETH_DMA_BASE (ETH_BASE + 0x1000) + +#define USBFS_BASE ((uint32_t)0x50000000) +#define DVP_BASE ((uint32_t)0x50050000) + +#define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) +#define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) +#define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) + +#define OB_BASE ((uint32_t)0x1FFFF800) + +/* Peripheral declaration */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define UART6 ((USART_TypeDef *) UART6_BASE) +#define UART7 ((USART_TypeDef *) UART7_BASE) +#define UART8 ((USART_TypeDef *) UART8_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define CAN2 ((CAN_TypeDef *) CAN2_BASE) +#define BKP ((BKP_TypeDef *) BKP_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) + +#define AFIO ((AFIO_TypeDef *) AFIO_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define TKey1 ((ADC_TypeDef *) ADC1_BASE) +#define TKey2 ((ADC_TypeDef *) ADC2_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) +#define SDIO ((SDIO_TypeDef *) SDIO_BASE) + +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA2_EXTEN ((DMA_TypeDef *) DMA2_EXTEN_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DMA2_Channel6 ((DMA_Channel_TypeDef *) DMA2_Channel6_BASE) +#define DMA2_Channel7 ((DMA_Channel_TypeDef *) DMA2_Channel7_BASE) +#define DMA2_Channel8 ((DMA_Channel_TypeDef *) DMA2_Channel8_BASE) +#define DMA2_Channel9 ((DMA_Channel_TypeDef *) DMA2_Channel9_BASE) +#define DMA2_Channel10 ((DMA_Channel_TypeDef *) DMA2_Channel10_BASE) +#define DMA2_Channel11 ((DMA_Channel_TypeDef *) DMA2_Channel11_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +// #define CRC ((CRC_TypeDef *) CRC_BASE) +#define USBHSD ((USBHSD_TypeDef *) USBHS_BASE) +#define USBHSH ((USBHSH_TypeDef *) USBHS_BASE) +#define USBOTG_FS ((USBOTG_FS_TypeDef *)USBFS_BASE) +#define USBOTG_H_FS ((USBOTGH_FS_TypeDef *)USBFS_BASE) +#define EXTEN ((EXTEN_TypeDef *) EXTEN_BASE) +#define OPA ((OPA_TypeDef *) OPA_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) +#define ETH ((ETH_TypeDef *) ETH_BASE) + +#define DVP ((DVP_TypeDef *) DVP_BASE) + +#define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) +#define FSMC_Bank1E ((FSMC_Bank1E_TypeDef *) FSMC_Bank1E_R_BASE) +#define FSMC_Bank2 ((FSMC_Bank2_TypeDef *) FSMC_Bank2_R_BASE) + +#define OB ((OB_TypeDef *) OB_BASE) + +/******************************************************************************/ +/* Peripheral Registers Bits Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* Analog to Digital Converter */ +/******************************************************************************/ + +/******************** Bit definition for ADC_STATR register ********************/ +#define ADC_AWD ((uint8_t)0x01) /* Analog watchdog flag */ +#define ADC_EOC ((uint8_t)0x02) /* End of conversion */ +#define ADC_JEOC ((uint8_t)0x04) /* Injected channel end of conversion */ +#define ADC_JSTRT ((uint8_t)0x08) /* Injected channel Start flag */ +#define ADC_STRT ((uint8_t)0x10) /* Regular channel Start flag */ + +/******************* Bit definition for ADC_CTLR1 register ********************/ +#define ADC_AWDCH ((uint32_t)0x0000001F) /* AWDCH[4:0] bits (Analog watchdog channel select bits) */ +#define ADC_AWDCH_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_AWDCH_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_AWDCH_2 ((uint32_t)0x00000004) /* Bit 2 */ +#define ADC_AWDCH_3 ((uint32_t)0x00000008) /* Bit 3 */ +#define ADC_AWDCH_4 ((uint32_t)0x00000010) /* Bit 4 */ + +#define ADC_EOCIE ((uint32_t)0x00000020) /* Interrupt enable for EOC */ +#define ADC_AWDIE ((uint32_t)0x00000040) /* Analog Watchdog interrupt enable */ +#define ADC_JEOCIE ((uint32_t)0x00000080) /* Interrupt enable for injected channels */ +#define ADC_SCAN ((uint32_t)0x00000100) /* Scan mode */ +#define ADC_AWDSGL ((uint32_t)0x00000200) /* Enable the watchdog on a single channel in scan mode */ +#define ADC_JAUTO ((uint32_t)0x00000400) /* Automatic injected group conversion */ +#define ADC_DISCEN ((uint32_t)0x00000800) /* Discontinuous mode on regular channels */ +#define ADC_JDISCEN ((uint32_t)0x00001000) /* Discontinuous mode on injected channels */ + +#define ADC_DISCNUM ((uint32_t)0x0000E000) /* DISCNUM[2:0] bits (Discontinuous mode channel count) */ +#define ADC_DISCNUM_0 ((uint32_t)0x00002000) /* Bit 0 */ +#define ADC_DISCNUM_1 ((uint32_t)0x00004000) /* Bit 1 */ +#define ADC_DISCNUM_2 ((uint32_t)0x00008000) /* Bit 2 */ + +#define ADC_DUALMOD ((uint32_t)0x000F0000) /* DUALMOD[3:0] bits (Dual mode selection) */ +#define ADC_DUALMOD_0 ((uint32_t)0x00010000) /* Bit 0 */ +#define ADC_DUALMOD_1 ((uint32_t)0x00020000) /* Bit 1 */ +#define ADC_DUALMOD_2 ((uint32_t)0x00040000) /* Bit 2 */ +#define ADC_DUALMOD_3 ((uint32_t)0x00080000) /* Bit 3 */ + +#define ADC_JAWDEN ((uint32_t)0x00400000) /* Analog watchdog enable on injected channels */ +#define ADC_AWDEN ((uint32_t)0x00800000) /* Analog watchdog enable on regular channels */ + +/******************* Bit definition for ADC_CTLR2 register ********************/ +#define ADC_ADON ((uint32_t)0x00000001) /* A/D Converter ON / OFF */ +#define ADC_CONT ((uint32_t)0x00000002) /* Continuous Conversion */ +#define ADC_CAL ((uint32_t)0x00000004) /* A/D Calibration */ +#define ADC_RSTCAL ((uint32_t)0x00000008) /* Reset Calibration */ +#define ADC_DMA ((uint32_t)0x00000100) /* Direct Memory access mode */ +#define ADC_ALIGN ((uint32_t)0x00000800) /* Data Alignment */ + +#define ADC_JEXTSEL ((uint32_t)0x00007000) /* JEXTSEL[2:0] bits (External event select for injected group) */ +#define ADC_JEXTSEL_0 ((uint32_t)0x00001000) /* Bit 0 */ +#define ADC_JEXTSEL_1 ((uint32_t)0x00002000) /* Bit 1 */ +#define ADC_JEXTSEL_2 ((uint32_t)0x00004000) /* Bit 2 */ + +#define ADC_JEXTTRIG ((uint32_t)0x00008000) /* External Trigger Conversion mode for injected channels */ + +#define ADC_EXTSEL ((uint32_t)0x000E0000) /* EXTSEL[2:0] bits (External Event Select for regular group) */ +#define ADC_EXTSEL_0 ((uint32_t)0x00020000) /* Bit 0 */ +#define ADC_EXTSEL_1 ((uint32_t)0x00040000) /* Bit 1 */ +#define ADC_EXTSEL_2 ((uint32_t)0x00080000) /* Bit 2 */ + +#define ADC_EXTTRIG ((uint32_t)0x00100000) /* External Trigger Conversion mode for regular channels */ +#define ADC_JSWSTART ((uint32_t)0x00200000) /* Start Conversion of injected channels */ +#define ADC_SWSTART ((uint32_t)0x00400000) /* Start Conversion of regular channels */ +#define ADC_TSVREFE ((uint32_t)0x00800000) /* Temperature Sensor and VREFINT Enable */ + +/****************** Bit definition for ADC_SAMPTR1 register *******************/ +#define ADC_SMP10 ((uint32_t)0x00000007) /* SMP10[2:0] bits (Channel 10 Sample time selection) */ +#define ADC_SMP10_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_SMP10_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_SMP10_2 ((uint32_t)0x00000004) /* Bit 2 */ + +#define ADC_SMP11 ((uint32_t)0x00000038) /* SMP11[2:0] bits (Channel 11 Sample time selection) */ +#define ADC_SMP11_0 ((uint32_t)0x00000008) /* Bit 0 */ +#define ADC_SMP11_1 ((uint32_t)0x00000010) /* Bit 1 */ +#define ADC_SMP11_2 ((uint32_t)0x00000020) /* Bit 2 */ + +#define ADC_SMP12 ((uint32_t)0x000001C0) /* SMP12[2:0] bits (Channel 12 Sample time selection) */ +#define ADC_SMP12_0 ((uint32_t)0x00000040) /* Bit 0 */ +#define ADC_SMP12_1 ((uint32_t)0x00000080) /* Bit 1 */ +#define ADC_SMP12_2 ((uint32_t)0x00000100) /* Bit 2 */ + +#define ADC_SMP13 ((uint32_t)0x00000E00) /* SMP13[2:0] bits (Channel 13 Sample time selection) */ +#define ADC_SMP13_0 ((uint32_t)0x00000200) /* Bit 0 */ +#define ADC_SMP13_1 ((uint32_t)0x00000400) /* Bit 1 */ +#define ADC_SMP13_2 ((uint32_t)0x00000800) /* Bit 2 */ + +#define ADC_SMP14 ((uint32_t)0x00007000) /* SMP14[2:0] bits (Channel 14 Sample time selection) */ +#define ADC_SMP14_0 ((uint32_t)0x00001000) /* Bit 0 */ +#define ADC_SMP14_1 ((uint32_t)0x00002000) /* Bit 1 */ +#define ADC_SMP14_2 ((uint32_t)0x00004000) /* Bit 2 */ + +#define ADC_SMP15 ((uint32_t)0x00038000) /* SMP15[2:0] bits (Channel 15 Sample time selection) */ +#define ADC_SMP15_0 ((uint32_t)0x00008000) /* Bit 0 */ +#define ADC_SMP15_1 ((uint32_t)0x00010000) /* Bit 1 */ +#define ADC_SMP15_2 ((uint32_t)0x00020000) /* Bit 2 */ + +#define ADC_SMP16 ((uint32_t)0x001C0000) /* SMP16[2:0] bits (Channel 16 Sample time selection) */ +#define ADC_SMP16_0 ((uint32_t)0x00040000) /* Bit 0 */ +#define ADC_SMP16_1 ((uint32_t)0x00080000) /* Bit 1 */ +#define ADC_SMP16_2 ((uint32_t)0x00100000) /* Bit 2 */ + +#define ADC_SMP17 ((uint32_t)0x00E00000) /* SMP17[2:0] bits (Channel 17 Sample time selection) */ +#define ADC_SMP17_0 ((uint32_t)0x00200000) /* Bit 0 */ +#define ADC_SMP17_1 ((uint32_t)0x00400000) /* Bit 1 */ +#define ADC_SMP17_2 ((uint32_t)0x00800000) /* Bit 2 */ + +/****************** Bit definition for ADC_SAMPTR2 register *******************/ +#define ADC_SMP0 ((uint32_t)0x00000007) /* SMP0[2:0] bits (Channel 0 Sample time selection) */ +#define ADC_SMP0_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_SMP0_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_SMP0_2 ((uint32_t)0x00000004) /* Bit 2 */ + +#define ADC_SMP1 ((uint32_t)0x00000038) /* SMP1[2:0] bits (Channel 1 Sample time selection) */ +#define ADC_SMP1_0 ((uint32_t)0x00000008) /* Bit 0 */ +#define ADC_SMP1_1 ((uint32_t)0x00000010) /* Bit 1 */ +#define ADC_SMP1_2 ((uint32_t)0x00000020) /* Bit 2 */ + +#define ADC_SMP2 ((uint32_t)0x000001C0) /* SMP2[2:0] bits (Channel 2 Sample time selection) */ +#define ADC_SMP2_0 ((uint32_t)0x00000040) /* Bit 0 */ +#define ADC_SMP2_1 ((uint32_t)0x00000080) /* Bit 1 */ +#define ADC_SMP2_2 ((uint32_t)0x00000100) /* Bit 2 */ + +#define ADC_SMP3 ((uint32_t)0x00000E00) /* SMP3[2:0] bits (Channel 3 Sample time selection) */ +#define ADC_SMP3_0 ((uint32_t)0x00000200) /* Bit 0 */ +#define ADC_SMP3_1 ((uint32_t)0x00000400) /* Bit 1 */ +#define ADC_SMP3_2 ((uint32_t)0x00000800) /* Bit 2 */ + +#define ADC_SMP4 ((uint32_t)0x00007000) /* SMP4[2:0] bits (Channel 4 Sample time selection) */ +#define ADC_SMP4_0 ((uint32_t)0x00001000) /* Bit 0 */ +#define ADC_SMP4_1 ((uint32_t)0x00002000) /* Bit 1 */ +#define ADC_SMP4_2 ((uint32_t)0x00004000) /* Bit 2 */ + +#define ADC_SMP5 ((uint32_t)0x00038000) /* SMP5[2:0] bits (Channel 5 Sample time selection) */ +#define ADC_SMP5_0 ((uint32_t)0x00008000) /* Bit 0 */ +#define ADC_SMP5_1 ((uint32_t)0x00010000) /* Bit 1 */ +#define ADC_SMP5_2 ((uint32_t)0x00020000) /* Bit 2 */ + +#define ADC_SMP6 ((uint32_t)0x001C0000) /* SMP6[2:0] bits (Channel 6 Sample time selection) */ +#define ADC_SMP6_0 ((uint32_t)0x00040000) /* Bit 0 */ +#define ADC_SMP6_1 ((uint32_t)0x00080000) /* Bit 1 */ +#define ADC_SMP6_2 ((uint32_t)0x00100000) /* Bit 2 */ + +#define ADC_SMP7 ((uint32_t)0x00E00000) /* SMP7[2:0] bits (Channel 7 Sample time selection) */ +#define ADC_SMP7_0 ((uint32_t)0x00200000) /* Bit 0 */ +#define ADC_SMP7_1 ((uint32_t)0x00400000) /* Bit 1 */ +#define ADC_SMP7_2 ((uint32_t)0x00800000) /* Bit 2 */ + +#define ADC_SMP8 ((uint32_t)0x07000000) /* SMP8[2:0] bits (Channel 8 Sample time selection) */ +#define ADC_SMP8_0 ((uint32_t)0x01000000) /* Bit 0 */ +#define ADC_SMP8_1 ((uint32_t)0x02000000) /* Bit 1 */ +#define ADC_SMP8_2 ((uint32_t)0x04000000) /* Bit 2 */ + +#define ADC_SMP9 ((uint32_t)0x38000000) /* SMP9[2:0] bits (Channel 9 Sample time selection) */ +#define ADC_SMP9_0 ((uint32_t)0x08000000) /* Bit 0 */ +#define ADC_SMP9_1 ((uint32_t)0x10000000) /* Bit 1 */ +#define ADC_SMP9_2 ((uint32_t)0x20000000) /* Bit 2 */ + +/****************** Bit definition for ADC_IOFR1 register *******************/ +#define ADC_JOFFSET1 ((uint16_t)0x0FFF) /* Data offset for injected channel 1 */ + +/****************** Bit definition for ADC_IOFR2 register *******************/ +#define ADC_JOFFSET2 ((uint16_t)0x0FFF) /* Data offset for injected channel 2 */ + +/****************** Bit definition for ADC_IOFR3 register *******************/ +#define ADC_JOFFSET3 ((uint16_t)0x0FFF) /* Data offset for injected channel 3 */ + +/****************** Bit definition for ADC_IOFR4 register *******************/ +#define ADC_JOFFSET4 ((uint16_t)0x0FFF) /* Data offset for injected channel 4 */ + +/******************* Bit definition for ADC_WDHTR register ********************/ +#define ADC_HT ((uint16_t)0x0FFF) /* Analog watchdog high threshold */ + +/******************* Bit definition for ADC_WDLTR register ********************/ +#define ADC_LT ((uint16_t)0x0FFF) /* Analog watchdog low threshold */ + +/******************* Bit definition for ADC_RSQR1 register *******************/ +#define ADC_SQ13 ((uint32_t)0x0000001F) /* SQ13[4:0] bits (13th conversion in regular sequence) */ +#define ADC_SQ13_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_SQ13_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_SQ13_2 ((uint32_t)0x00000004) /* Bit 2 */ +#define ADC_SQ13_3 ((uint32_t)0x00000008) /* Bit 3 */ +#define ADC_SQ13_4 ((uint32_t)0x00000010) /* Bit 4 */ + +#define ADC_SQ14 ((uint32_t)0x000003E0) /* SQ14[4:0] bits (14th conversion in regular sequence) */ +#define ADC_SQ14_0 ((uint32_t)0x00000020) /* Bit 0 */ +#define ADC_SQ14_1 ((uint32_t)0x00000040) /* Bit 1 */ +#define ADC_SQ14_2 ((uint32_t)0x00000080) /* Bit 2 */ +#define ADC_SQ14_3 ((uint32_t)0x00000100) /* Bit 3 */ +#define ADC_SQ14_4 ((uint32_t)0x00000200) /* Bit 4 */ + +#define ADC_SQ15 ((uint32_t)0x00007C00) /* SQ15[4:0] bits (15th conversion in regular sequence) */ +#define ADC_SQ15_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define ADC_SQ15_1 ((uint32_t)0x00000800) /* Bit 1 */ +#define ADC_SQ15_2 ((uint32_t)0x00001000) /* Bit 2 */ +#define ADC_SQ15_3 ((uint32_t)0x00002000) /* Bit 3 */ +#define ADC_SQ15_4 ((uint32_t)0x00004000) /* Bit 4 */ + +#define ADC_SQ16 ((uint32_t)0x000F8000) /* SQ16[4:0] bits (16th conversion in regular sequence) */ +#define ADC_SQ16_0 ((uint32_t)0x00008000) /* Bit 0 */ +#define ADC_SQ16_1 ((uint32_t)0x00010000) /* Bit 1 */ +#define ADC_SQ16_2 ((uint32_t)0x00020000) /* Bit 2 */ +#define ADC_SQ16_3 ((uint32_t)0x00040000) /* Bit 3 */ +#define ADC_SQ16_4 ((uint32_t)0x00080000) /* Bit 4 */ + +#define ADC_L ((uint32_t)0x00F00000) /* L[3:0] bits (Regular channel sequence length) */ +#define ADC_L_0 ((uint32_t)0x00100000) /* Bit 0 */ +#define ADC_L_1 ((uint32_t)0x00200000) /* Bit 1 */ +#define ADC_L_2 ((uint32_t)0x00400000) /* Bit 2 */ +#define ADC_L_3 ((uint32_t)0x00800000) /* Bit 3 */ + +/******************* Bit definition for ADC_RSQR2 register *******************/ +#define ADC_SQ7 ((uint32_t)0x0000001F) /* SQ7[4:0] bits (7th conversion in regular sequence) */ +#define ADC_SQ7_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_SQ7_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_SQ7_2 ((uint32_t)0x00000004) /* Bit 2 */ +#define ADC_SQ7_3 ((uint32_t)0x00000008) /* Bit 3 */ +#define ADC_SQ7_4 ((uint32_t)0x00000010) /* Bit 4 */ + +#define ADC_SQ8 ((uint32_t)0x000003E0) /* SQ8[4:0] bits (8th conversion in regular sequence) */ +#define ADC_SQ8_0 ((uint32_t)0x00000020) /* Bit 0 */ +#define ADC_SQ8_1 ((uint32_t)0x00000040) /* Bit 1 */ +#define ADC_SQ8_2 ((uint32_t)0x00000080) /* Bit 2 */ +#define ADC_SQ8_3 ((uint32_t)0x00000100) /* Bit 3 */ +#define ADC_SQ8_4 ((uint32_t)0x00000200) /* Bit 4 */ + +#define ADC_SQ9 ((uint32_t)0x00007C00) /* SQ9[4:0] bits (9th conversion in regular sequence) */ +#define ADC_SQ9_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define ADC_SQ9_1 ((uint32_t)0x00000800) /* Bit 1 */ +#define ADC_SQ9_2 ((uint32_t)0x00001000) /* Bit 2 */ +#define ADC_SQ9_3 ((uint32_t)0x00002000) /* Bit 3 */ +#define ADC_SQ9_4 ((uint32_t)0x00004000) /* Bit 4 */ + +#define ADC_SQ10 ((uint32_t)0x000F8000) /* SQ10[4:0] bits (10th conversion in regular sequence) */ +#define ADC_SQ10_0 ((uint32_t)0x00008000) /* Bit 0 */ +#define ADC_SQ10_1 ((uint32_t)0x00010000) /* Bit 1 */ +#define ADC_SQ10_2 ((uint32_t)0x00020000) /* Bit 2 */ +#define ADC_SQ10_3 ((uint32_t)0x00040000) /* Bit 3 */ +#define ADC_SQ10_4 ((uint32_t)0x00080000) /* Bit 4 */ + +#define ADC_SQ11 ((uint32_t)0x01F00000) /* SQ11[4:0] bits (11th conversion in regular sequence) */ +#define ADC_SQ11_0 ((uint32_t)0x00100000) /* Bit 0 */ +#define ADC_SQ11_1 ((uint32_t)0x00200000) /* Bit 1 */ +#define ADC_SQ11_2 ((uint32_t)0x00400000) /* Bit 2 */ +#define ADC_SQ11_3 ((uint32_t)0x00800000) /* Bit 3 */ +#define ADC_SQ11_4 ((uint32_t)0x01000000) /* Bit 4 */ + +#define ADC_SQ12 ((uint32_t)0x3E000000) /* SQ12[4:0] bits (12th conversion in regular sequence) */ +#define ADC_SQ12_0 ((uint32_t)0x02000000) /* Bit 0 */ +#define ADC_SQ12_1 ((uint32_t)0x04000000) /* Bit 1 */ +#define ADC_SQ12_2 ((uint32_t)0x08000000) /* Bit 2 */ +#define ADC_SQ12_3 ((uint32_t)0x10000000) /* Bit 3 */ +#define ADC_SQ12_4 ((uint32_t)0x20000000) /* Bit 4 */ + +/******************* Bit definition for ADC_RSQR3 register *******************/ +#define ADC_SQ1 ((uint32_t)0x0000001F) /* SQ1[4:0] bits (1st conversion in regular sequence) */ +#define ADC_SQ1_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_SQ1_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_SQ1_2 ((uint32_t)0x00000004) /* Bit 2 */ +#define ADC_SQ1_3 ((uint32_t)0x00000008) /* Bit 3 */ +#define ADC_SQ1_4 ((uint32_t)0x00000010) /* Bit 4 */ + +#define ADC_SQ2 ((uint32_t)0x000003E0) /* SQ2[4:0] bits (2nd conversion in regular sequence) */ +#define ADC_SQ2_0 ((uint32_t)0x00000020) /* Bit 0 */ +#define ADC_SQ2_1 ((uint32_t)0x00000040) /* Bit 1 */ +#define ADC_SQ2_2 ((uint32_t)0x00000080) /* Bit 2 */ +#define ADC_SQ2_3 ((uint32_t)0x00000100) /* Bit 3 */ +#define ADC_SQ2_4 ((uint32_t)0x00000200) /* Bit 4 */ + +#define ADC_SQ3 ((uint32_t)0x00007C00) /* SQ3[4:0] bits (3rd conversion in regular sequence) */ +#define ADC_SQ3_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define ADC_SQ3_1 ((uint32_t)0x00000800) /* Bit 1 */ +#define ADC_SQ3_2 ((uint32_t)0x00001000) /* Bit 2 */ +#define ADC_SQ3_3 ((uint32_t)0x00002000) /* Bit 3 */ +#define ADC_SQ3_4 ((uint32_t)0x00004000) /* Bit 4 */ + +#define ADC_SQ4 ((uint32_t)0x000F8000) /* SQ4[4:0] bits (4th conversion in regular sequence) */ +#define ADC_SQ4_0 ((uint32_t)0x00008000) /* Bit 0 */ +#define ADC_SQ4_1 ((uint32_t)0x00010000) /* Bit 1 */ +#define ADC_SQ4_2 ((uint32_t)0x00020000) /* Bit 2 */ +#define ADC_SQ4_3 ((uint32_t)0x00040000) /* Bit 3 */ +#define ADC_SQ4_4 ((uint32_t)0x00080000) /* Bit 4 */ + +#define ADC_SQ5 ((uint32_t)0x01F00000) /* SQ5[4:0] bits (5th conversion in regular sequence) */ +#define ADC_SQ5_0 ((uint32_t)0x00100000) /* Bit 0 */ +#define ADC_SQ5_1 ((uint32_t)0x00200000) /* Bit 1 */ +#define ADC_SQ5_2 ((uint32_t)0x00400000) /* Bit 2 */ +#define ADC_SQ5_3 ((uint32_t)0x00800000) /* Bit 3 */ +#define ADC_SQ5_4 ((uint32_t)0x01000000) /* Bit 4 */ + +#define ADC_SQ6 ((uint32_t)0x3E000000) /* SQ6[4:0] bits (6th conversion in regular sequence) */ +#define ADC_SQ6_0 ((uint32_t)0x02000000) /* Bit 0 */ +#define ADC_SQ6_1 ((uint32_t)0x04000000) /* Bit 1 */ +#define ADC_SQ6_2 ((uint32_t)0x08000000) /* Bit 2 */ +#define ADC_SQ6_3 ((uint32_t)0x10000000) /* Bit 3 */ +#define ADC_SQ6_4 ((uint32_t)0x20000000) /* Bit 4 */ + +/******************* Bit definition for ADC_ISQR register *******************/ +#define ADC_JSQ1 ((uint32_t)0x0000001F) /* JSQ1[4:0] bits (1st conversion in injected sequence) */ +#define ADC_JSQ1_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define ADC_JSQ1_1 ((uint32_t)0x00000002) /* Bit 1 */ +#define ADC_JSQ1_2 ((uint32_t)0x00000004) /* Bit 2 */ +#define ADC_JSQ1_3 ((uint32_t)0x00000008) /* Bit 3 */ +#define ADC_JSQ1_4 ((uint32_t)0x00000010) /* Bit 4 */ + +#define ADC_JSQ2 ((uint32_t)0x000003E0) /* JSQ2[4:0] bits (2nd conversion in injected sequence) */ +#define ADC_JSQ2_0 ((uint32_t)0x00000020) /* Bit 0 */ +#define ADC_JSQ2_1 ((uint32_t)0x00000040) /* Bit 1 */ +#define ADC_JSQ2_2 ((uint32_t)0x00000080) /* Bit 2 */ +#define ADC_JSQ2_3 ((uint32_t)0x00000100) /* Bit 3 */ +#define ADC_JSQ2_4 ((uint32_t)0x00000200) /* Bit 4 */ + +#define ADC_JSQ3 ((uint32_t)0x00007C00) /* JSQ3[4:0] bits (3rd conversion in injected sequence) */ +#define ADC_JSQ3_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define ADC_JSQ3_1 ((uint32_t)0x00000800) /* Bit 1 */ +#define ADC_JSQ3_2 ((uint32_t)0x00001000) /* Bit 2 */ +#define ADC_JSQ3_3 ((uint32_t)0x00002000) /* Bit 3 */ +#define ADC_JSQ3_4 ((uint32_t)0x00004000) /* Bit 4 */ + +#define ADC_JSQ4 ((uint32_t)0x000F8000) /* JSQ4[4:0] bits (4th conversion in injected sequence) */ +#define ADC_JSQ4_0 ((uint32_t)0x00008000) /* Bit 0 */ +#define ADC_JSQ4_1 ((uint32_t)0x00010000) /* Bit 1 */ +#define ADC_JSQ4_2 ((uint32_t)0x00020000) /* Bit 2 */ +#define ADC_JSQ4_3 ((uint32_t)0x00040000) /* Bit 3 */ +#define ADC_JSQ4_4 ((uint32_t)0x00080000) /* Bit 4 */ + +#define ADC_JL ((uint32_t)0x00300000) /* JL[1:0] bits (Injected Sequence length) */ +#define ADC_JL_0 ((uint32_t)0x00100000) /* Bit 0 */ +#define ADC_JL_1 ((uint32_t)0x00200000) /* Bit 1 */ + +/******************* Bit definition for ADC_IDATAR1 register *******************/ +#define ADC_IDATAR1_JDATA ((uint16_t)0xFFFF) /* Injected data */ + +/******************* Bit definition for ADC_IDATAR2 register *******************/ +#define ADC_IDATAR2_JDATA ((uint16_t)0xFFFF) /* Injected data */ + +/******************* Bit definition for ADC_IDATAR3 register *******************/ +#define ADC_IDATAR3_JDATA ((uint16_t)0xFFFF) /* Injected data */ + +/******************* Bit definition for ADC_IDATAR4 register *******************/ +#define ADC_IDATAR4_JDATA ((uint16_t)0xFFFF) /* Injected data */ + +/******************** Bit definition for ADC_RDATAR register ********************/ +#define ADC_RDATAR_DATA ((uint32_t)0x0000FFFF) /* Regular data */ +#define ADC_RDATAR_ADC2DATA ((uint32_t)0xFFFF0000) /* ADC2 data */ + +/******************************************************************************/ +/* Backup registers */ +/******************************************************************************/ + +/******************* Bit definition for BKP_DATAR1 register ********************/ +#define BKP_DATAR1_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR2 register ********************/ +#define BKP_DATAR2_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR3 register ********************/ +#define BKP_DATAR3_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR4 register ********************/ +#define BKP_DATAR4_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR5 register ********************/ +#define BKP_DATAR5_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR6 register ********************/ +#define BKP_DATAR6_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR7 register ********************/ +#define BKP_DATAR7_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR8 register ********************/ +#define BKP_DATAR8_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR9 register ********************/ +#define BKP_DATAR9_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR10 register *******************/ +#define BKP_DATAR10_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR11 register *******************/ +#define BKP_DATAR11_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR12 register *******************/ +#define BKP_DATAR12_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR13 register *******************/ +#define BKP_DATAR13_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR14 register *******************/ +#define BKP_DATAR14_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR15 register *******************/ +#define BKP_DATAR15_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR16 register *******************/ +#define BKP_DATAR16_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR17 register *******************/ +#define BKP_DATAR17_D ((uint16_t)0xFFFF) /* Backup data */ + +/****************** Bit definition for BKP_DATAR18 register ********************/ +#define BKP_DATAR18_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR19 register *******************/ +#define BKP_DATAR19_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR20 register *******************/ +#define BKP_DATAR20_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR21 register *******************/ +#define BKP_DATAR21_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR22 register *******************/ +#define BKP_DATAR22_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR23 register *******************/ +#define BKP_DATAR23_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR24 register *******************/ +#define BKP_DATAR24_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR25 register *******************/ +#define BKP_DATAR25_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR26 register *******************/ +#define BKP_DATAR26_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR27 register *******************/ +#define BKP_DATAR27_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR28 register *******************/ +#define BKP_DATAR28_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR29 register *******************/ +#define BKP_DATAR29_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR30 register *******************/ +#define BKP_DATAR30_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR31 register *******************/ +#define BKP_DATAR31_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR32 register *******************/ +#define BKP_DATAR32_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR33 register *******************/ +#define BKP_DATAR33_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR34 register *******************/ +#define BKP_DATAR34_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR35 register *******************/ +#define BKP_DATAR35_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR36 register *******************/ +#define BKP_DATAR36_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR37 register *******************/ +#define BKP_DATAR37_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR38 register *******************/ +#define BKP_DATAR38_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR39 register *******************/ +#define BKP_DATAR39_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR40 register *******************/ +#define BKP_DATAR40_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR41 register *******************/ +#define BKP_DATAR41_D ((uint16_t)0xFFFF) /* Backup data */ + +/******************* Bit definition for BKP_DATAR42 register *******************/ +#define BKP_DATAR42_D ((uint16_t)0xFFFF) /* Backup data */ + +/****************** Bit definition for BKP_OCTLR register *******************/ +#define BKP_CAL ((uint16_t)0x007F) /* Calibration value */ +#define BKP_CCO ((uint16_t)0x0080) /* Calibration Clock Output */ +#define BKP_ASOE ((uint16_t)0x0100) /* Alarm or Second Output Enable */ +#define BKP_ASOS ((uint16_t)0x0200) /* Alarm or Second Output Selection */ + +/******************** Bit definition for BKP_TPCTLR register ********************/ +#define BKP_TPE ((uint8_t)0x01) /* TAMPER pin enable */ +#define BKP_TPAL ((uint8_t)0x02) /* TAMPER pin active level */ + +/******************* Bit definition for BKP_TPCSR register ********************/ +#define BKP_CTE ((uint16_t)0x0001) /* Clear Tamper event */ +#define BKP_CTI ((uint16_t)0x0002) /* Clear Tamper Interrupt */ +#define BKP_TPIE ((uint16_t)0x0004) /* TAMPER Pin interrupt enable */ +#define BKP_TEF ((uint16_t)0x0100) /* Tamper Event Flag */ +#define BKP_TIF ((uint16_t)0x0200) /* Tamper Interrupt Flag */ + +/******************************************************************************/ +/* Controller Area Network */ +/******************************************************************************/ + +/******************* Bit definition for CAN_CTLR register ********************/ +#define CAN_CTLR_INRQ ((uint16_t)0x0001) /* Initialization Request */ +#define CAN_CTLR_SLEEP ((uint16_t)0x0002) /* Sleep Mode Request */ +#define CAN_CTLR_TXFP ((uint16_t)0x0004) /* Transmit FIFO Priority */ +#define CAN_CTLR_RFLM ((uint16_t)0x0008) /* Receive FIFO Locked Mode */ +#define CAN_CTLR_NART ((uint16_t)0x0010) /* No Automatic Retransmission */ +#define CAN_CTLR_AWUM ((uint16_t)0x0020) /* Automatic Wakeup Mode */ +#define CAN_CTLR_ABOM ((uint16_t)0x0040) /* Automatic Bus-Off Management */ +#define CAN_CTLR_TTCM ((uint16_t)0x0080) /* Time Triggered Communication Mode */ +#define CAN_CTLR_RESET ((uint16_t)0x8000) /* CAN software master reset */ + +/******************* Bit definition for CAN_STATR register ********************/ +#define CAN_STATR_INAK ((uint16_t)0x0001) /* Initialization Acknowledge */ +#define CAN_STATR_SLAK ((uint16_t)0x0002) /* Sleep Acknowledge */ +#define CAN_STATR_ERRI ((uint16_t)0x0004) /* Error Interrupt */ +#define CAN_STATR_WKUI ((uint16_t)0x0008) /* Wakeup Interrupt */ +#define CAN_STATR_SLAKI ((uint16_t)0x0010) /* Sleep Acknowledge Interrupt */ +#define CAN_STATR_TXM ((uint16_t)0x0100) /* Transmit Mode */ +#define CAN_STATR_RXM ((uint16_t)0x0200) /* Receive Mode */ +#define CAN_STATR_SAMP ((uint16_t)0x0400) /* Last Sample Point */ +#define CAN_STATR_RX ((uint16_t)0x0800) /* CAN Rx Signal */ + +/******************* Bit definition for CAN_TSTATR register ********************/ +#define CAN_TSTATR_RQCP0 ((uint32_t)0x00000001) /* Request Completed Mailbox0 */ +#define CAN_TSTATR_TXOK0 ((uint32_t)0x00000002) /* Transmission OK of Mailbox0 */ +#define CAN_TSTATR_ALST0 ((uint32_t)0x00000004) /* Arbitration Lost for Mailbox0 */ +#define CAN_TSTATR_TERR0 ((uint32_t)0x00000008) /* Transmission Error of Mailbox0 */ +#define CAN_TSTATR_ABRQ0 ((uint32_t)0x00000080) /* Abort Request for Mailbox0 */ +#define CAN_TSTATR_RQCP1 ((uint32_t)0x00000100) /* Request Completed Mailbox1 */ +#define CAN_TSTATR_TXOK1 ((uint32_t)0x00000200) /* Transmission OK of Mailbox1 */ +#define CAN_TSTATR_ALST1 ((uint32_t)0x00000400) /* Arbitration Lost for Mailbox1 */ +#define CAN_TSTATR_TERR1 ((uint32_t)0x00000800) /* Transmission Error of Mailbox1 */ +#define CAN_TSTATR_ABRQ1 ((uint32_t)0x00008000) /* Abort Request for Mailbox 1 */ +#define CAN_TSTATR_RQCP2 ((uint32_t)0x00010000) /* Request Completed Mailbox2 */ +#define CAN_TSTATR_TXOK2 ((uint32_t)0x00020000) /* Transmission OK of Mailbox 2 */ +#define CAN_TSTATR_ALST2 ((uint32_t)0x00040000) /* Arbitration Lost for mailbox 2 */ +#define CAN_TSTATR_TERR2 ((uint32_t)0x00080000) /* Transmission Error of Mailbox 2 */ +#define CAN_TSTATR_ABRQ2 ((uint32_t)0x00800000) /* Abort Request for Mailbox 2 */ +#define CAN_TSTATR_CODE ((uint32_t)0x03000000) /* Mailbox Code */ + +#define CAN_TSTATR_TME ((uint32_t)0x1C000000) /* TME[2:0] bits */ +#define CAN_TSTATR_TME0 ((uint32_t)0x04000000) /* Transmit Mailbox 0 Empty */ +#define CAN_TSTATR_TME1 ((uint32_t)0x08000000) /* Transmit Mailbox 1 Empty */ +#define CAN_TSTATR_TME2 ((uint32_t)0x10000000) /* Transmit Mailbox 2 Empty */ + +#define CAN_TSTATR_LOW ((uint32_t)0xE0000000) /* LOW[2:0] bits */ +#define CAN_TSTATR_LOW0 ((uint32_t)0x20000000) /* Lowest Priority Flag for Mailbox 0 */ +#define CAN_TSTATR_LOW1 ((uint32_t)0x40000000) /* Lowest Priority Flag for Mailbox 1 */ +#define CAN_TSTATR_LOW2 ((uint32_t)0x80000000) /* Lowest Priority Flag for Mailbox 2 */ + +/******************* Bit definition for CAN_RFIFO0 register *******************/ +#define CAN_RFIFO0_FMP0 ((uint8_t)0x03) /* FIFO 0 Message Pending */ +#define CAN_RFIFO0_FULL0 ((uint8_t)0x08) /* FIFO 0 Full */ +#define CAN_RFIFO0_FOVR0 ((uint8_t)0x10) /* FIFO 0 Overrun */ +#define CAN_RFIFO0_RFOM0 ((uint8_t)0x20) /* Release FIFO 0 Output Mailbox */ + +/******************* Bit definition for CAN_RFIFO1 register *******************/ +#define CAN_RFIFO1_FMP1 ((uint8_t)0x03) /* FIFO 1 Message Pending */ +#define CAN_RFIFO1_FULL1 ((uint8_t)0x08) /* FIFO 1 Full */ +#define CAN_RFIFO1_FOVR1 ((uint8_t)0x10) /* FIFO 1 Overrun */ +#define CAN_RFIFO1_RFOM1 ((uint8_t)0x20) /* Release FIFO 1 Output Mailbox */ + +/******************** Bit definition for CAN_INTENR register *******************/ +#define CAN_INTENR_TMEIE ((uint32_t)0x00000001) /* Transmit Mailbox Empty Interrupt Enable */ +#define CAN_INTENR_FMPIE0 ((uint32_t)0x00000002) /* FIFO Message Pending Interrupt Enable */ +#define CAN_INTENR_FFIE0 ((uint32_t)0x00000004) /* FIFO Full Interrupt Enable */ +#define CAN_INTENR_FOVIE0 ((uint32_t)0x00000008) /* FIFO Overrun Interrupt Enable */ +#define CAN_INTENR_FMPIE1 ((uint32_t)0x00000010) /* FIFO Message Pending Interrupt Enable */ +#define CAN_INTENR_FFIE1 ((uint32_t)0x00000020) /* FIFO Full Interrupt Enable */ +#define CAN_INTENR_FOVIE1 ((uint32_t)0x00000040) /* FIFO Overrun Interrupt Enable */ +#define CAN_INTENR_EWGIE ((uint32_t)0x00000100) /* Error Warning Interrupt Enable */ +#define CAN_INTENR_EPVIE ((uint32_t)0x00000200) /* Error Passive Interrupt Enable */ +#define CAN_INTENR_BOFIE ((uint32_t)0x00000400) /* Bus-Off Interrupt Enable */ +#define CAN_INTENR_LECIE ((uint32_t)0x00000800) /* Last Error Code Interrupt Enable */ +#define CAN_INTENR_ERRIE ((uint32_t)0x00008000) /* Error Interrupt Enable */ +#define CAN_INTENR_WKUIE ((uint32_t)0x00010000) /* Wakeup Interrupt Enable */ +#define CAN_INTENR_SLKIE ((uint32_t)0x00020000) /* Sleep Interrupt Enable */ + +/******************** Bit definition for CAN_ERRSR register *******************/ +#define CAN_ERRSR_EWGF ((uint32_t)0x00000001) /* Error Warning Flag */ +#define CAN_ERRSR_EPVF ((uint32_t)0x00000002) /* Error Passive Flag */ +#define CAN_ERRSR_BOFF ((uint32_t)0x00000004) /* Bus-Off Flag */ + +#define CAN_ERRSR_LEC ((uint32_t)0x00000070) /* LEC[2:0] bits (Last Error Code) */ +#define CAN_ERRSR_LEC_0 ((uint32_t)0x00000010) /* Bit 0 */ +#define CAN_ERRSR_LEC_1 ((uint32_t)0x00000020) /* Bit 1 */ +#define CAN_ERRSR_LEC_2 ((uint32_t)0x00000040) /* Bit 2 */ + +#define CAN_ERRSR_TEC ((uint32_t)0x00FF0000) /* Least significant byte of the 9-bit Transmit Error Counter */ +#define CAN_ERRSR_REC ((uint32_t)0xFF000000) /* Receive Error Counter */ + +/******************* Bit definition for CAN_BTIMR register ********************/ +#define CAN_BTIMR_BRP ((uint32_t)0x000003FF) /* Baud Rate Prescaler */ +#define CAN_BTIMR_TS1 ((uint32_t)0x000F0000) /* Time Segment 1 */ +#define CAN_BTIMR_TS2 ((uint32_t)0x00700000) /* Time Segment 2 */ +#define CAN_BTIMR_SJW ((uint32_t)0x03000000) /* Resynchronization Jump Width */ +#define CAN_BTIMR_LBKM ((uint32_t)0x40000000) /* Loop Back Mode (Debug) */ +#define CAN_BTIMR_SILM ((uint32_t)0x80000000) /* Silent Mode */ + +/****************** Bit definition for CAN_TXMI0R register ********************/ +#define CAN_TXMI0R_TXRQ ((uint32_t)0x00000001) /* Transmit Mailbox Request */ +#define CAN_TXMI0R_RTR ((uint32_t)0x00000002) /* Remote Transmission Request */ +#define CAN_TXMI0R_IDE ((uint32_t)0x00000004) /* Identifier Extension */ +#define CAN_TXMI0R_EXID ((uint32_t)0x001FFFF8) /* Extended Identifier */ +#define CAN_TXMI0R_STID ((uint32_t)0xFFE00000) /* Standard Identifier or Extended Identifier */ + +/****************** Bit definition for CAN_TXMDT0R register *******************/ +#define CAN_TXMDT0R_DLC ((uint32_t)0x0000000F) /* Data Length Code */ +#define CAN_TXMDT0R_TGT ((uint32_t)0x00000100) /* Transmit Global Time */ +#define CAN_TXMDT0R_TIME ((uint32_t)0xFFFF0000) /* Message Time Stamp */ + +/****************** Bit definition for CAN_TXMDL0R register *******************/ +#define CAN_TXMDL0R_DATA0 ((uint32_t)0x000000FF) /* Data byte 0 */ +#define CAN_TXMDL0R_DATA1 ((uint32_t)0x0000FF00) /* Data byte 1 */ +#define CAN_TXMDL0R_DATA2 ((uint32_t)0x00FF0000) /* Data byte 2 */ +#define CAN_TXMDL0R_DATA3 ((uint32_t)0xFF000000) /* Data byte 3 */ + +/****************** Bit definition for CAN_TXMDH0R register *******************/ +#define CAN_TXMDH0R_DATA4 ((uint32_t)0x000000FF) /* Data byte 4 */ +#define CAN_TXMDH0R_DATA5 ((uint32_t)0x0000FF00) /* Data byte 5 */ +#define CAN_TXMDH0R_DATA6 ((uint32_t)0x00FF0000) /* Data byte 6 */ +#define CAN_TXMDH0R_DATA7 ((uint32_t)0xFF000000) /* Data byte 7 */ + +/******************* Bit definition for CAN_TXMI1R register *******************/ +#define CAN_TXMI1R_TXRQ ((uint32_t)0x00000001) /* Transmit Mailbox Request */ +#define CAN_TXMI1R_RTR ((uint32_t)0x00000002) /* Remote Transmission Request */ +#define CAN_TXMI1R_IDE ((uint32_t)0x00000004) /* Identifier Extension */ +#define CAN_TXMI1R_EXID ((uint32_t)0x001FFFF8) /* Extended Identifier */ +#define CAN_TXMI1R_STID ((uint32_t)0xFFE00000) /* Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TXMDT1R register ******************/ +#define CAN_TXMDT1R_DLC ((uint32_t)0x0000000F) /* Data Length Code */ +#define CAN_TXMDT1R_TGT ((uint32_t)0x00000100) /* Transmit Global Time */ +#define CAN_TXMDT1R_TIME ((uint32_t)0xFFFF0000) /* Message Time Stamp */ + +/******************* Bit definition for CAN_TXMDL1R register ******************/ +#define CAN_TXMDL1R_DATA0 ((uint32_t)0x000000FF) /* Data byte 0 */ +#define CAN_TXMDL1R_DATA1 ((uint32_t)0x0000FF00) /* Data byte 1 */ +#define CAN_TXMDL1R_DATA2 ((uint32_t)0x00FF0000) /* Data byte 2 */ +#define CAN_TXMDL1R_DATA3 ((uint32_t)0xFF000000) /* Data byte 3 */ + +/******************* Bit definition for CAN_TXMDH1R register ******************/ +#define CAN_TXMDH1R_DATA4 ((uint32_t)0x000000FF) /* Data byte 4 */ +#define CAN_TXMDH1R_DATA5 ((uint32_t)0x0000FF00) /* Data byte 5 */ +#define CAN_TXMDH1R_DATA6 ((uint32_t)0x00FF0000) /* Data byte 6 */ +#define CAN_TXMDH1R_DATA7 ((uint32_t)0xFF000000) /* Data byte 7 */ + +/******************* Bit definition for CAN_TXMI2R register *******************/ +#define CAN_TXMI2R_TXRQ ((uint32_t)0x00000001) /* Transmit Mailbox Request */ +#define CAN_TXMI2R_RTR ((uint32_t)0x00000002) /* Remote Transmission Request */ +#define CAN_TXMI2R_IDE ((uint32_t)0x00000004) /* Identifier Extension */ +#define CAN_TXMI2R_EXID ((uint32_t)0x001FFFF8) /* Extended identifier */ +#define CAN_TXMI2R_STID ((uint32_t)0xFFE00000) /* Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_TXMDT2R register ******************/ +#define CAN_TXMDT2R_DLC ((uint32_t)0x0000000F) /* Data Length Code */ +#define CAN_TXMDT2R_TGT ((uint32_t)0x00000100) /* Transmit Global Time */ +#define CAN_TXMDT2R_TIME ((uint32_t)0xFFFF0000) /* Message Time Stamp */ + +/******************* Bit definition for CAN_TXMDL2R register ******************/ +#define CAN_TXMDL2R_DATA0 ((uint32_t)0x000000FF) /* Data byte 0 */ +#define CAN_TXMDL2R_DATA1 ((uint32_t)0x0000FF00) /* Data byte 1 */ +#define CAN_TXMDL2R_DATA2 ((uint32_t)0x00FF0000) /* Data byte 2 */ +#define CAN_TXMDL2R_DATA3 ((uint32_t)0xFF000000) /* Data byte 3 */ + +/******************* Bit definition for CAN_TXMDH2R register ******************/ +#define CAN_TXMDH2R_DATA4 ((uint32_t)0x000000FF) /* Data byte 4 */ +#define CAN_TXMDH2R_DATA5 ((uint32_t)0x0000FF00) /* Data byte 5 */ +#define CAN_TXMDH2R_DATA6 ((uint32_t)0x00FF0000) /* Data byte 6 */ +#define CAN_TXMDH2R_DATA7 ((uint32_t)0xFF000000) /* Data byte 7 */ + +/******************* Bit definition for CAN_RXMI0R register *******************/ +#define CAN_RXMI0R_RTR ((uint32_t)0x00000002) /* Remote Transmission Request */ +#define CAN_RXMI0R_IDE ((uint32_t)0x00000004) /* Identifier Extension */ +#define CAN_RXMI0R_EXID ((uint32_t)0x001FFFF8) /* Extended Identifier */ +#define CAN_RXMI0R_STID ((uint32_t)0xFFE00000) /* Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RXMDT0R register ******************/ +#define CAN_RXMDT0R_DLC ((uint32_t)0x0000000F) /* Data Length Code */ +#define CAN_RXMDT0R_FMI ((uint32_t)0x0000FF00) /* Filter Match Index */ +#define CAN_RXMDT0R_TIME ((uint32_t)0xFFFF0000) /* Message Time Stamp */ + +/******************* Bit definition for CAN_RXMDL0R register ******************/ +#define CAN_RXMDL0R_DATA0 ((uint32_t)0x000000FF) /* Data byte 0 */ +#define CAN_RXMDL0R_DATA1 ((uint32_t)0x0000FF00) /* Data byte 1 */ +#define CAN_RXMDL0R_DATA2 ((uint32_t)0x00FF0000) /* Data byte 2 */ +#define CAN_RXMDL0R_DATA3 ((uint32_t)0xFF000000) /* Data byte 3 */ + +/******************* Bit definition for CAN_RXMDH0R register ******************/ +#define CAN_RXMDH0R_DATA4 ((uint32_t)0x000000FF) /* Data byte 4 */ +#define CAN_RXMDH0R_DATA5 ((uint32_t)0x0000FF00) /* Data byte 5 */ +#define CAN_RXMDH0R_DATA6 ((uint32_t)0x00FF0000) /* Data byte 6 */ +#define CAN_RXMDH0R_DATA7 ((uint32_t)0xFF000000) /* Data byte 7 */ + +/******************* Bit definition for CAN_RXMI1R register *******************/ +#define CAN_RXMI1R_RTR ((uint32_t)0x00000002) /* Remote Transmission Request */ +#define CAN_RXMI1R_IDE ((uint32_t)0x00000004) /* Identifier Extension */ +#define CAN_RXMI1R_EXID ((uint32_t)0x001FFFF8) /* Extended identifier */ +#define CAN_RXMI1R_STID ((uint32_t)0xFFE00000) /* Standard Identifier or Extended Identifier */ + +/******************* Bit definition for CAN_RXMDT1R register ******************/ +#define CAN_RXMDT1R_DLC ((uint32_t)0x0000000F) /* Data Length Code */ +#define CAN_RXMDT1R_FMI ((uint32_t)0x0000FF00) /* Filter Match Index */ +#define CAN_RXMDT1R_TIME ((uint32_t)0xFFFF0000) /* Message Time Stamp */ + +/******************* Bit definition for CAN_RXMDL1R register ******************/ +#define CAN_RXMDL1R_DATA0 ((uint32_t)0x000000FF) /* Data byte 0 */ +#define CAN_RXMDL1R_DATA1 ((uint32_t)0x0000FF00) /* Data byte 1 */ +#define CAN_RXMDL1R_DATA2 ((uint32_t)0x00FF0000) /* Data byte 2 */ +#define CAN_RXMDL1R_DATA3 ((uint32_t)0xFF000000) /* Data byte 3 */ + +/******************* Bit definition for CAN_RXMDH1R register ******************/ +#define CAN_RXMDH1R_DATA4 ((uint32_t)0x000000FF) /* Data byte 4 */ +#define CAN_RXMDH1R_DATA5 ((uint32_t)0x0000FF00) /* Data byte 5 */ +#define CAN_RXMDH1R_DATA6 ((uint32_t)0x00FF0000) /* Data byte 6 */ +#define CAN_RXMDH1R_DATA7 ((uint32_t)0xFF000000) /* Data byte 7 */ + +/******************* Bit definition for CAN_FCTLR register ********************/ +#define CAN_FCTLR_FINIT ((uint8_t)0x01) /* Filter Init Mode */ + +/******************* Bit definition for CAN_FMCFGR register *******************/ +#define CAN_FMCFGR_FBM ((uint16_t)0x3FFF) /* Filter Mode */ +#define CAN_FMCFGR_FBM0 ((uint16_t)0x0001) /* Filter Init Mode bit 0 */ +#define CAN_FMCFGR_FBM1 ((uint16_t)0x0002) /* Filter Init Mode bit 1 */ +#define CAN_FMCFGR_FBM2 ((uint16_t)0x0004) /* Filter Init Mode bit 2 */ +#define CAN_FMCFGR_FBM3 ((uint16_t)0x0008) /* Filter Init Mode bit 3 */ +#define CAN_FMCFGR_FBM4 ((uint16_t)0x0010) /* Filter Init Mode bit 4 */ +#define CAN_FMCFGR_FBM5 ((uint16_t)0x0020) /* Filter Init Mode bit 5 */ +#define CAN_FMCFGR_FBM6 ((uint16_t)0x0040) /* Filter Init Mode bit 6 */ +#define CAN_FMCFGR_FBM7 ((uint16_t)0x0080) /* Filter Init Mode bit 7 */ +#define CAN_FMCFGR_FBM8 ((uint16_t)0x0100) /* Filter Init Mode bit 8 */ +#define CAN_FMCFGR_FBM9 ((uint16_t)0x0200) /* Filter Init Mode bit 9 */ +#define CAN_FMCFGR_FBM10 ((uint16_t)0x0400) /* Filter Init Mode bit 10 */ +#define CAN_FMCFGR_FBM11 ((uint16_t)0x0800) /* Filter Init Mode bit 11 */ +#define CAN_FMCFGR_FBM12 ((uint16_t)0x1000) /* Filter Init Mode bit 12 */ +#define CAN_FMCFGR_FBM13 ((uint16_t)0x2000) /* Filter Init Mode bit 13 */ + +/******************* Bit definition for CAN_FSCFGR register *******************/ +#define CAN_FSCFGR_FSC ((uint16_t)0x3FFF) /* Filter Scale Configuration */ +#define CAN_FSCFGR_FSC0 ((uint16_t)0x0001) /* Filter Scale Configuration bit 0 */ +#define CAN_FSCFGR_FSC1 ((uint16_t)0x0002) /* Filter Scale Configuration bit 1 */ +#define CAN_FSCFGR_FSC2 ((uint16_t)0x0004) /* Filter Scale Configuration bit 2 */ +#define CAN_FSCFGR_FSC3 ((uint16_t)0x0008) /* Filter Scale Configuration bit 3 */ +#define CAN_FSCFGR_FSC4 ((uint16_t)0x0010) /* Filter Scale Configuration bit 4 */ +#define CAN_FSCFGR_FSC5 ((uint16_t)0x0020) /* Filter Scale Configuration bit 5 */ +#define CAN_FSCFGR_FSC6 ((uint16_t)0x0040) /* Filter Scale Configuration bit 6 */ +#define CAN_FSCFGR_FSC7 ((uint16_t)0x0080) /* Filter Scale Configuration bit 7 */ +#define CAN_FSCFGR_FSC8 ((uint16_t)0x0100) /* Filter Scale Configuration bit 8 */ +#define CAN_FSCFGR_FSC9 ((uint16_t)0x0200) /* Filter Scale Configuration bit 9 */ +#define CAN_FSCFGR_FSC10 ((uint16_t)0x0400) /* Filter Scale Configuration bit 10 */ +#define CAN_FSCFGR_FSC11 ((uint16_t)0x0800) /* Filter Scale Configuration bit 11 */ +#define CAN_FSCFGR_FSC12 ((uint16_t)0x1000) /* Filter Scale Configuration bit 12 */ +#define CAN_FSCFGR_FSC13 ((uint16_t)0x2000) /* Filter Scale Configuration bit 13 */ + +/****************** Bit definition for CAN_FAFIFOR register *******************/ +#define CAN_FAFIFOR_FFA ((uint16_t)0x3FFF) /* Filter FIFO Assignment */ +#define CAN_FAFIFOR_FFA0 ((uint16_t)0x0001) /* Filter FIFO Assignment for Filter 0 */ +#define CAN_FAFIFOR_FFA1 ((uint16_t)0x0002) /* Filter FIFO Assignment for Filter 1 */ +#define CAN_FAFIFOR_FFA2 ((uint16_t)0x0004) /* Filter FIFO Assignment for Filter 2 */ +#define CAN_FAFIFOR_FFA3 ((uint16_t)0x0008) /* Filter FIFO Assignment for Filter 3 */ +#define CAN_FAFIFOR_FFA4 ((uint16_t)0x0010) /* Filter FIFO Assignment for Filter 4 */ +#define CAN_FAFIFOR_FFA5 ((uint16_t)0x0020) /* Filter FIFO Assignment for Filter 5 */ +#define CAN_FAFIFOR_FFA6 ((uint16_t)0x0040) /* Filter FIFO Assignment for Filter 6 */ +#define CAN_FAFIFOR_FFA7 ((uint16_t)0x0080) /* Filter FIFO Assignment for Filter 7 */ +#define CAN_FAFIFOR_FFA8 ((uint16_t)0x0100) /* Filter FIFO Assignment for Filter 8 */ +#define CAN_FAFIFOR_FFA9 ((uint16_t)0x0200) /* Filter FIFO Assignment for Filter 9 */ +#define CAN_FAFIFOR_FFA10 ((uint16_t)0x0400) /* Filter FIFO Assignment for Filter 10 */ +#define CAN_FAFIFOR_FFA11 ((uint16_t)0x0800) /* Filter FIFO Assignment for Filter 11 */ +#define CAN_FAFIFOR_FFA12 ((uint16_t)0x1000) /* Filter FIFO Assignment for Filter 12 */ +#define CAN_FAFIFOR_FFA13 ((uint16_t)0x2000) /* Filter FIFO Assignment for Filter 13 */ + +/******************* Bit definition for CAN_FWR register *******************/ +#define CAN_FWR_FACT ((uint16_t)0x3FFF) /* Filter Active */ +#define CAN_FWR_FACT0 ((uint16_t)0x0001) /* Filter 0 Active */ +#define CAN_FWR_FACT1 ((uint16_t)0x0002) /* Filter 1 Active */ +#define CAN_FWR_FACT2 ((uint16_t)0x0004) /* Filter 2 Active */ +#define CAN_FWR_FACT3 ((uint16_t)0x0008) /* Filter 3 Active */ +#define CAN_FWR_FACT4 ((uint16_t)0x0010) /* Filter 4 Active */ +#define CAN_FWR_FACT5 ((uint16_t)0x0020) /* Filter 5 Active */ +#define CAN_FWR_FACT6 ((uint16_t)0x0040) /* Filter 6 Active */ +#define CAN_FWR_FACT7 ((uint16_t)0x0080) /* Filter 7 Active */ +#define CAN_FWR_FACT8 ((uint16_t)0x0100) /* Filter 8 Active */ +#define CAN_FWR_FACT9 ((uint16_t)0x0200) /* Filter 9 Active */ +#define CAN_FWR_FACT10 ((uint16_t)0x0400) /* Filter 10 Active */ +#define CAN_FWR_FACT11 ((uint16_t)0x0800) /* Filter 11 Active */ +#define CAN_FWR_FACT12 ((uint16_t)0x1000) /* Filter 12 Active */ +#define CAN_FWR_FACT13 ((uint16_t)0x2000) /* Filter 13 Active */ + +/******************* Bit definition for CAN_F0R1 register *******************/ +#define CAN_F0R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F0R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F0R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F0R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F0R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F0R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F0R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F0R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F0R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F0R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F0R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F0R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F0R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F0R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F0R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F0R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F0R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F0R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F0R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F0R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F0R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F0R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F0R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F0R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F0R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F0R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F0R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F0R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F0R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F0R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F0R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F0R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F1R1 register *******************/ +#define CAN_F1R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F1R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F1R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F1R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F1R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F1R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F1R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F1R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F1R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F1R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F1R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F1R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F1R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F1R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F1R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F1R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F1R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F1R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F1R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F1R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F1R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F1R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F1R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F1R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F1R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F1R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F1R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F1R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F1R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F1R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F1R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F1R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F2R1 register *******************/ +#define CAN_F2R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F2R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F2R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F2R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F2R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F2R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F2R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F2R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F2R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F2R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F2R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F2R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F2R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F2R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F2R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F2R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F2R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F2R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F2R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F2R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F2R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F2R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F2R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F2R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F2R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F2R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F2R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F2R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F2R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F2R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F2R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F2R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F3R1 register *******************/ +#define CAN_F3R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F3R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F3R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F3R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F3R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F3R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F3R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F3R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F3R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F3R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F3R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F3R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F3R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F3R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F3R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F3R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F3R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F3R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F3R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F3R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F3R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F3R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F3R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F3R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F3R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F3R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F3R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F3R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F3R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F3R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F3R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F3R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F4R1 register *******************/ +#define CAN_F4R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F4R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F4R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F4R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F4R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F4R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F4R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F4R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F4R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F4R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F4R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F4R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F4R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F4R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F4R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F4R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F4R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F4R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F4R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F4R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F4R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F4R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F4R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F4R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F4R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F4R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F4R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F4R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F4R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F4R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F4R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F4R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F5R1 register *******************/ +#define CAN_F5R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F5R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F5R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F5R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F5R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F5R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F5R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F5R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F5R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F5R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F5R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F5R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F5R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F5R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F5R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F5R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F5R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F5R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F5R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F5R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F5R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F5R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F5R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F5R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F5R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F5R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F5R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F5R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F5R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F5R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F5R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F5R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F6R1 register *******************/ +#define CAN_F6R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F6R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F6R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F6R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F6R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F6R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F6R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F6R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F6R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F6R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F6R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F6R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F6R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F6R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F6R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F6R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F6R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F6R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F6R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F6R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F6R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F6R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F6R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F6R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F6R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F6R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F6R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F6R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F6R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F6R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F6R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F6R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F7R1 register *******************/ +#define CAN_F7R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F7R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F7R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F7R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F7R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F7R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F7R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F7R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F7R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F7R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F7R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F7R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F7R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F7R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F7R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F7R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F7R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F7R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F7R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F7R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F7R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F7R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F7R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F7R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F7R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F7R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F7R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F7R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F7R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F7R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F7R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F7R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F8R1 register *******************/ +#define CAN_F8R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F8R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F8R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F8R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F8R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F8R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F8R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F8R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F8R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F8R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F8R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F8R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F8R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F8R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F8R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F8R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F8R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F8R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F8R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F8R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F8R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F8R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F8R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F8R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F8R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F8R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F8R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F8R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F8R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F8R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F8R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F8R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F9R1 register *******************/ +#define CAN_F9R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F9R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F9R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F9R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F9R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F9R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F9R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F9R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F9R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F9R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F9R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F9R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F9R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F9R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F9R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F9R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F9R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F9R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F9R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F9R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F9R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F9R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F9R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F9R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F9R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F9R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F9R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F9R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F9R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F9R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F9R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F9R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F10R1 register ******************/ +#define CAN_F10R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F10R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F10R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F10R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F10R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F10R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F10R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F10R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F10R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F10R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F10R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F10R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F10R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F10R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F10R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F10R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F10R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F10R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F10R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F10R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F10R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F10R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F10R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F10R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F10R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F10R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F10R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F10R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F10R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F10R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F10R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F10R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F11R1 register ******************/ +#define CAN_F11R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F11R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F11R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F11R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F11R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F11R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F11R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F11R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F11R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F11R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F11R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F11R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F11R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F11R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F11R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F11R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F11R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F11R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F11R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F11R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F11R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F11R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F11R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F11R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F11R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F11R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F11R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F11R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F11R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F11R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F11R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F11R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F12R1 register ******************/ +#define CAN_F12R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F12R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F12R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F12R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F12R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F12R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F12R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F12R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F12R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F12R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F12R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F12R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F12R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F12R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F12R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F12R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F12R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F12R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F12R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F12R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F12R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F12R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F12R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F12R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F12R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F12R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F12R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F12R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F12R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F12R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F12R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F12R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F13R1 register ******************/ +#define CAN_F13R1_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F13R1_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F13R1_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F13R1_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F13R1_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F13R1_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F13R1_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F13R1_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F13R1_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F13R1_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F13R1_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F13R1_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F13R1_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F13R1_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F13R1_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F13R1_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F13R1_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F13R1_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F13R1_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F13R1_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F13R1_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F13R1_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F13R1_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F13R1_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F13R1_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F13R1_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F13R1_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F13R1_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F13R1_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F13R1_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F13R1_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F13R1_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F0R2 register *******************/ +#define CAN_F0R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F0R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F0R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F0R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F0R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F0R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F0R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F0R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F0R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F0R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F0R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F0R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F0R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F0R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F0R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F0R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F0R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F0R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F0R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F0R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F0R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F0R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F0R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F0R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F0R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F0R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F0R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F0R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F0R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F0R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F0R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F0R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F1R2 register *******************/ +#define CAN_F1R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F1R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F1R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F1R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F1R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F1R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F1R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F1R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F1R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F1R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F1R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F1R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F1R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F1R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F1R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F1R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F1R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F1R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F1R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F1R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F1R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F1R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F1R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F1R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F1R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F1R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F1R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F1R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F1R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F1R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F1R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F1R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F2R2 register *******************/ +#define CAN_F2R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F2R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F2R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F2R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F2R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F2R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F2R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F2R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F2R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F2R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F2R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F2R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F2R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F2R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F2R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F2R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F2R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F2R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F2R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F2R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F2R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F2R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F2R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F2R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F2R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F2R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F2R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F2R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F2R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F2R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F2R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F2R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F3R2 register *******************/ +#define CAN_F3R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F3R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F3R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F3R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F3R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F3R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F3R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F3R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F3R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F3R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F3R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F3R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F3R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F3R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F3R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F3R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F3R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F3R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F3R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F3R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F3R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F3R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F3R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F3R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F3R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F3R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F3R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F3R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F3R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F3R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F3R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F3R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F4R2 register *******************/ +#define CAN_F4R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F4R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F4R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F4R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F4R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F4R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F4R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F4R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F4R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F4R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F4R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F4R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F4R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F4R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F4R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F4R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F4R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F4R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F4R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F4R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F4R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F4R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F4R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F4R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F4R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F4R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F4R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F4R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F4R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F4R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F4R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F4R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F5R2 register *******************/ +#define CAN_F5R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F5R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F5R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F5R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F5R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F5R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F5R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F5R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F5R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F5R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F5R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F5R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F5R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F5R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F5R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F5R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F5R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F5R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F5R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F5R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F5R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F5R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F5R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F5R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F5R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F5R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F5R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F5R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F5R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F5R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F5R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F5R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F6R2 register *******************/ +#define CAN_F6R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F6R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F6R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F6R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F6R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F6R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F6R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F6R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F6R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F6R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F6R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F6R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F6R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F6R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F6R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F6R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F6R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F6R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F6R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F6R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F6R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F6R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F6R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F6R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F6R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F6R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F6R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F6R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F6R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F6R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F6R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F6R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F7R2 register *******************/ +#define CAN_F7R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F7R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F7R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F7R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F7R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F7R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F7R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F7R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F7R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F7R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F7R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F7R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F7R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F7R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F7R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F7R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F7R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F7R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F7R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F7R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F7R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F7R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F7R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F7R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F7R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F7R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F7R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F7R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F7R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F7R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F7R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F7R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F8R2 register *******************/ +#define CAN_F8R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F8R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F8R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F8R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F8R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F8R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F8R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F8R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F8R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F8R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F8R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F8R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F8R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F8R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F8R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F8R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F8R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F8R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F8R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F8R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F8R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F8R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F8R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F8R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F8R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F8R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F8R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F8R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F8R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F8R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F8R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F8R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F9R2 register *******************/ +#define CAN_F9R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F9R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F9R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F9R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F9R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F9R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F9R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F9R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F9R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F9R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F9R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F9R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F9R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F9R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F9R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F9R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F9R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F9R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F9R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F9R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F9R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F9R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F9R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F9R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F9R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F9R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F9R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F9R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F9R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F9R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F9R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F9R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F10R2 register ******************/ +#define CAN_F10R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F10R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F10R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F10R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F10R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F10R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F10R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F10R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F10R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F10R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F10R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F10R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F10R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F10R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F10R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F10R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F10R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F10R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F10R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F10R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F10R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F10R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F10R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F10R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F10R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F10R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F10R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F10R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F10R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F10R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F10R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F10R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F11R2 register ******************/ +#define CAN_F11R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F11R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F11R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F11R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F11R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F11R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F11R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F11R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F11R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F11R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F11R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F11R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F11R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F11R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F11R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F11R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F11R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F11R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F11R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F11R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F11R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F11R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F11R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F11R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F11R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F11R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F11R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F11R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F11R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F11R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F11R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F11R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F12R2 register ******************/ +#define CAN_F12R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F12R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F12R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F12R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F12R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F12R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F12R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F12R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F12R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F12R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F12R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F12R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F12R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F12R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F12R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F12R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F12R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F12R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F12R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F12R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F12R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F12R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F12R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F12R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F12R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F12R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F12R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F12R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F12R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F12R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F12R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F12R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + +/******************* Bit definition for CAN_F13R2 register ******************/ +#define CAN_F13R2_FB0 ((uint32_t)0x00000001) /* Filter bit 0 */ +#define CAN_F13R2_FB1 ((uint32_t)0x00000002) /* Filter bit 1 */ +#define CAN_F13R2_FB2 ((uint32_t)0x00000004) /* Filter bit 2 */ +#define CAN_F13R2_FB3 ((uint32_t)0x00000008) /* Filter bit 3 */ +#define CAN_F13R2_FB4 ((uint32_t)0x00000010) /* Filter bit 4 */ +#define CAN_F13R2_FB5 ((uint32_t)0x00000020) /* Filter bit 5 */ +#define CAN_F13R2_FB6 ((uint32_t)0x00000040) /* Filter bit 6 */ +#define CAN_F13R2_FB7 ((uint32_t)0x00000080) /* Filter bit 7 */ +#define CAN_F13R2_FB8 ((uint32_t)0x00000100) /* Filter bit 8 */ +#define CAN_F13R2_FB9 ((uint32_t)0x00000200) /* Filter bit 9 */ +#define CAN_F13R2_FB10 ((uint32_t)0x00000400) /* Filter bit 10 */ +#define CAN_F13R2_FB11 ((uint32_t)0x00000800) /* Filter bit 11 */ +#define CAN_F13R2_FB12 ((uint32_t)0x00001000) /* Filter bit 12 */ +#define CAN_F13R2_FB13 ((uint32_t)0x00002000) /* Filter bit 13 */ +#define CAN_F13R2_FB14 ((uint32_t)0x00004000) /* Filter bit 14 */ +#define CAN_F13R2_FB15 ((uint32_t)0x00008000) /* Filter bit 15 */ +#define CAN_F13R2_FB16 ((uint32_t)0x00010000) /* Filter bit 16 */ +#define CAN_F13R2_FB17 ((uint32_t)0x00020000) /* Filter bit 17 */ +#define CAN_F13R2_FB18 ((uint32_t)0x00040000) /* Filter bit 18 */ +#define CAN_F13R2_FB19 ((uint32_t)0x00080000) /* Filter bit 19 */ +#define CAN_F13R2_FB20 ((uint32_t)0x00100000) /* Filter bit 20 */ +#define CAN_F13R2_FB21 ((uint32_t)0x00200000) /* Filter bit 21 */ +#define CAN_F13R2_FB22 ((uint32_t)0x00400000) /* Filter bit 22 */ +#define CAN_F13R2_FB23 ((uint32_t)0x00800000) /* Filter bit 23 */ +#define CAN_F13R2_FB24 ((uint32_t)0x01000000) /* Filter bit 24 */ +#define CAN_F13R2_FB25 ((uint32_t)0x02000000) /* Filter bit 25 */ +#define CAN_F13R2_FB26 ((uint32_t)0x04000000) /* Filter bit 26 */ +#define CAN_F13R2_FB27 ((uint32_t)0x08000000) /* Filter bit 27 */ +#define CAN_F13R2_FB28 ((uint32_t)0x10000000) /* Filter bit 28 */ +#define CAN_F13R2_FB29 ((uint32_t)0x20000000) /* Filter bit 29 */ +#define CAN_F13R2_FB30 ((uint32_t)0x40000000) /* Filter bit 30 */ +#define CAN_F13R2_FB31 ((uint32_t)0x80000000) /* Filter bit 31 */ + + + +/******************************************************************************/ +/* CRC Calculation Unit */ +/******************************************************************************/ + +/******************* Bit definition for CRC_DATAR register *********************/ +#define CRC_DATAR_DR ((uint32_t)0xFFFFFFFF) /* Data register bits */ + + +/******************* Bit definition for CRC_IDATAR register ********************/ +#define CRC_IDR_IDATAR ((uint8_t)0xFF) /* General-purpose 8-bit data register bits */ + + +/******************** Bit definition for CRC_CTLR register ********************/ +#define CRC_CTLR_RESET ((uint8_t)0x01) /* RESET bit */ + +/******************************************************************************/ +/* Digital to Analog Converter */ +/******************************************************************************/ + +/******************** Bit definition for DAC_CTLR register ********************/ +#define DAC_EN1 ((uint32_t)0x00000001) /* DAC channel1 enable */ +#define DAC_BOFF1 ((uint32_t)0x00000002) /* DAC channel1 output buffer disable */ +#define DAC_TEN1 ((uint32_t)0x00000004) /* DAC channel1 Trigger enable */ + +#define DAC_TSEL1 ((uint32_t)0x00000038) /* TSEL1[2:0] (DAC channel1 Trigger selection) */ +#define DAC_TSEL1_0 ((uint32_t)0x00000008) /* Bit 0 */ +#define DAC_TSEL1_1 ((uint32_t)0x00000010) /* Bit 1 */ +#define DAC_TSEL1_2 ((uint32_t)0x00000020) /* Bit 2 */ + +#define DAC_WAVE1 ((uint32_t)0x000000C0) /* WAVE1[1:0] (DAC channel1 noise/triangle wave generation enable) */ +#define DAC_WAVE1_0 ((uint32_t)0x00000040) /* Bit 0 */ +#define DAC_WAVE1_1 ((uint32_t)0x00000080) /* Bit 1 */ + +#define DAC_MAMP1 ((uint32_t)0x00000F00) /* MAMP1[3:0] (DAC channel1 Mask/Amplitude selector) */ +#define DAC_MAMP1_0 ((uint32_t)0x00000100) /* Bit 0 */ +#define DAC_MAMP1_1 ((uint32_t)0x00000200) /* Bit 1 */ +#define DAC_MAMP1_2 ((uint32_t)0x00000400) /* Bit 2 */ +#define DAC_MAMP1_3 ((uint32_t)0x00000800) /* Bit 3 */ + +#define DAC_DMAEN1 ((uint32_t)0x00001000) /* DAC channel1 DMA enable */ +#define DAC_EN2 ((uint32_t)0x00010000) /* DAC channel2 enable */ +#define DAC_BOFF2 ((uint32_t)0x00020000) /* DAC channel2 output buffer disable */ +#define DAC_TEN2 ((uint32_t)0x00040000) /* DAC channel2 Trigger enable */ + +#define DAC_TSEL2 ((uint32_t)0x00380000) /* TSEL2[2:0] (DAC channel2 Trigger selection) */ +#define DAC_TSEL2_0 ((uint32_t)0x00080000) /* Bit 0 */ +#define DAC_TSEL2_1 ((uint32_t)0x00100000) /* Bit 1 */ +#define DAC_TSEL2_2 ((uint32_t)0x00200000) /* Bit 2 */ + +#define DAC_WAVE2 ((uint32_t)0x00C00000) /* WAVE2[1:0] (DAC channel2 noise/triangle wave generation enable) */ +#define DAC_WAVE2_0 ((uint32_t)0x00400000) /* Bit 0 */ +#define DAC_WAVE2_1 ((uint32_t)0x00800000) /* Bit 1 */ + +#define DAC_MAMP2 ((uint32_t)0x0F000000) /* MAMP2[3:0] (DAC channel2 Mask/Amplitude selector) */ +#define DAC_MAMP2_0 ((uint32_t)0x01000000) /* Bit 0 */ +#define DAC_MAMP2_1 ((uint32_t)0x02000000) /* Bit 1 */ +#define DAC_MAMP2_2 ((uint32_t)0x04000000) /* Bit 2 */ +#define DAC_MAMP2_3 ((uint32_t)0x08000000) /* Bit 3 */ + +#define DAC_DMAEN2 ((uint32_t)0x10000000) /* DAC channel2 DMA enabled */ + +/***************** Bit definition for DAC_SWTR register ******************/ +#define DAC_SWTRIG1 ((uint8_t)0x01) /* DAC channel1 software trigger */ +#define DAC_SWTRIG2 ((uint8_t)0x02) /* DAC channel2 software trigger */ + +/***************** Bit definition for DAC_R12BDHR1 register ******************/ +#define DAC_DHR12R1 ((uint16_t)0x0FFF) /* DAC channel1 12-bit Right aligned data */ + +/***************** Bit definition for DAC_L12BDHR1 register ******************/ +#define DAC_DHR12L1 ((uint16_t)0xFFF0) /* DAC channel1 12-bit Left aligned data */ + +/****************** Bit definition for DAC_R8BDHR1 register ******************/ +#define DAC_DHR8R1 ((uint8_t)0xFF) /* DAC channel1 8-bit Right aligned data */ + +/***************** Bit definition for DAC_R12BDHR2 register ******************/ +#define DAC_DHR12R2 ((uint16_t)0x0FFF) /* DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_L12BDHR2 register ******************/ +#define DAC_DHR12L2 ((uint16_t)0xFFF0) /* DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_R8BDHR2 register ******************/ +#define DAC_DHR8R2 ((uint8_t)0xFF) /* DAC channel2 8-bit Right aligned data */ + +/***************** Bit definition for DAC_RD12BDHR register ******************/ +#define DAC_RD12BDHR_DACC1DHR ((uint32_t)0x00000FFF) /* DAC channel1 12-bit Right aligned data */ +#define DAC_RD12BDHR_DACC2DHR ((uint32_t)0x0FFF0000) /* DAC channel2 12-bit Right aligned data */ + +/***************** Bit definition for DAC_LD12BDHR register ******************/ +#define DAC_LD12BDHR_DACC1DHR ((uint32_t)0x0000FFF0) /* DAC channel1 12-bit Left aligned data */ +#define DAC_LD12BDHR_DACC2DHR ((uint32_t)0xFFF00000) /* DAC channel2 12-bit Left aligned data */ + +/****************** Bit definition for DAC_RD8BDHR register ******************/ +#define DAC_RD8BDHR_DACC1DHR ((uint16_t)0x00FF) /* DAC channel1 8-bit Right aligned data */ +#define DAC_RD8BDHR_DACC2DHR ((uint16_t)0xFF00) /* DAC channel2 8-bit Right aligned data */ + +/******************* Bit definition for DAC_DOR1 register *******************/ +#define DAC_DACC1DOR ((uint16_t)0x0FFF) /* DAC channel1 data output */ + +/******************* Bit definition for DAC_DOR2 register *******************/ +#define DAC_DACC2DOR ((uint16_t)0x0FFF) /* DAC channel2 data output */ + +/******************************************************************************/ +/* DMA Controller */ +/******************************************************************************/ + +/******************* Bit definition for DMA_INTFR register ********************/ +#define DMA_GIF1 ((uint32_t)0x00000001) /* Channel 1 Global interrupt flag */ +#define DMA_TCIF1 ((uint32_t)0x00000002) /* Channel 1 Transfer Complete flag */ +#define DMA_HTIF1 ((uint32_t)0x00000004) /* Channel 1 Half Transfer flag */ +#define DMA_TEIF1 ((uint32_t)0x00000008) /* Channel 1 Transfer Error flag */ +#define DMA_GIF2 ((uint32_t)0x00000010) /* Channel 2 Global interrupt flag */ +#define DMA_TCIF2 ((uint32_t)0x00000020) /* Channel 2 Transfer Complete flag */ +#define DMA_HTIF2 ((uint32_t)0x00000040) /* Channel 2 Half Transfer flag */ +#define DMA_TEIF2 ((uint32_t)0x00000080) /* Channel 2 Transfer Error flag */ +#define DMA_GIF3 ((uint32_t)0x00000100) /* Channel 3 Global interrupt flag */ +#define DMA_TCIF3 ((uint32_t)0x00000200) /* Channel 3 Transfer Complete flag */ +#define DMA_HTIF3 ((uint32_t)0x00000400) /* Channel 3 Half Transfer flag */ +#define DMA_TEIF3 ((uint32_t)0x00000800) /* Channel 3 Transfer Error flag */ +#define DMA_GIF4 ((uint32_t)0x00001000) /* Channel 4 Global interrupt flag */ +#define DMA_TCIF4 ((uint32_t)0x00002000) /* Channel 4 Transfer Complete flag */ +#define DMA_HTIF4 ((uint32_t)0x00004000) /* Channel 4 Half Transfer flag */ +#define DMA_TEIF4 ((uint32_t)0x00008000) /* Channel 4 Transfer Error flag */ +#define DMA_GIF5 ((uint32_t)0x00010000) /* Channel 5 Global interrupt flag */ +#define DMA_TCIF5 ((uint32_t)0x00020000) /* Channel 5 Transfer Complete flag */ +#define DMA_HTIF5 ((uint32_t)0x00040000) /* Channel 5 Half Transfer flag */ +#define DMA_TEIF5 ((uint32_t)0x00080000) /* Channel 5 Transfer Error flag */ +#define DMA_GIF6 ((uint32_t)0x00100000) /* Channel 6 Global interrupt flag */ +#define DMA_TCIF6 ((uint32_t)0x00200000) /* Channel 6 Transfer Complete flag */ +#define DMA_HTIF6 ((uint32_t)0x00400000) /* Channel 6 Half Transfer flag */ +#define DMA_TEIF6 ((uint32_t)0x00800000) /* Channel 6 Transfer Error flag */ +#define DMA_GIF7 ((uint32_t)0x01000000) /* Channel 7 Global interrupt flag */ +#define DMA_TCIF7 ((uint32_t)0x02000000) /* Channel 7 Transfer Complete flag */ +#define DMA_HTIF7 ((uint32_t)0x04000000) /* Channel 7 Half Transfer flag */ +#define DMA_TEIF7 ((uint32_t)0x08000000) /* Channel 7 Transfer Error flag */ + +#define DMA_GIF8 ((uint32_t)0x00000001) /* Channel 8 Global interrupt flag */ +#define DMA_TCIF8 ((uint32_t)0x00000002) /* Channel 8 Transfer Complete flag */ +#define DMA_HTIF8 ((uint32_t)0x00000004) /* Channel 8 Half Transfer flag */ +#define DMA_TEIF8 ((uint32_t)0x00000008) /* Channel 8 Transfer Error flag */ +#define DMA_GIF9 ((uint32_t)0x00000010) /* Channel 9 Global interrupt flag */ +#define DMA_TCIF9 ((uint32_t)0x00000020) /* Channel 9 Transfer Complete flag */ +#define DMA_HTIF9 ((uint32_t)0x00000040) /* Channel 9 Half Transfer flag */ +#define DMA_TEIF9 ((uint32_t)0x00000080) /* Channel 9 Transfer Error flag */ +#define DMA_GIF10 ((uint32_t)0x00000100) /* Channel 10 Global interrupt flag */ +#define DMA_TCIF10 ((uint32_t)0x00000200) /* Channel 10 Transfer Complete flag */ +#define DMA_HTIF10 ((uint32_t)0x00000400) /* Channel 10 Half Transfer flag */ +#define DMA_TEIF10 ((uint32_t)0x00000800) /* Channel 10 Transfer Error flag */ +#define DMA_GIF11 ((uint32_t)0x00001000) /* Channel 11 Global interrupt flag */ +#define DMA_TCIF11 ((uint32_t)0x00002000) /* Channel 11 Transfer Complete flag */ +#define DMA_HTIF11 ((uint32_t)0x00004000) /* Channel 11 Half Transfer flag */ +#define DMA_TEIF11 ((uint32_t)0x00008000) /* Channel 11 Transfer Error flag */ + +/******************* Bit definition for DMA_INTFCR register *******************/ +#define DMA_CGIF1 ((uint32_t)0x00000001) /* Channel 1 Global interrupt clear */ +#define DMA_CTCIF1 ((uint32_t)0x00000002) /* Channel 1 Transfer Complete clear */ +#define DMA_CHTIF1 ((uint32_t)0x00000004) /* Channel 1 Half Transfer clear */ +#define DMA_CTEIF1 ((uint32_t)0x00000008) /* Channel 1 Transfer Error clear */ +#define DMA_CGIF2 ((uint32_t)0x00000010) /* Channel 2 Global interrupt clear */ +#define DMA_CTCIF2 ((uint32_t)0x00000020) /* Channel 2 Transfer Complete clear */ +#define DMA_CHTIF2 ((uint32_t)0x00000040) /* Channel 2 Half Transfer clear */ +#define DMA_CTEIF2 ((uint32_t)0x00000080) /* Channel 2 Transfer Error clear */ +#define DMA_CGIF3 ((uint32_t)0x00000100) /* Channel 3 Global interrupt clear */ +#define DMA_CTCIF3 ((uint32_t)0x00000200) /* Channel 3 Transfer Complete clear */ +#define DMA_CHTIF3 ((uint32_t)0x00000400) /* Channel 3 Half Transfer clear */ +#define DMA_CTEIF3 ((uint32_t)0x00000800) /* Channel 3 Transfer Error clear */ +#define DMA_CGIF4 ((uint32_t)0x00001000) /* Channel 4 Global interrupt clear */ +#define DMA_CTCIF4 ((uint32_t)0x00002000) /* Channel 4 Transfer Complete clear */ +#define DMA_CHTIF4 ((uint32_t)0x00004000) /* Channel 4 Half Transfer clear */ +#define DMA_CTEIF4 ((uint32_t)0x00008000) /* Channel 4 Transfer Error clear */ +#define DMA_CGIF5 ((uint32_t)0x00010000) /* Channel 5 Global interrupt clear */ +#define DMA_CTCIF5 ((uint32_t)0x00020000) /* Channel 5 Transfer Complete clear */ +#define DMA_CHTIF5 ((uint32_t)0x00040000) /* Channel 5 Half Transfer clear */ +#define DMA_CTEIF5 ((uint32_t)0x00080000) /* Channel 5 Transfer Error clear */ +#define DMA_CGIF6 ((uint32_t)0x00100000) /* Channel 6 Global interrupt clear */ +#define DMA_CTCIF6 ((uint32_t)0x00200000) /* Channel 6 Transfer Complete clear */ +#define DMA_CHTIF6 ((uint32_t)0x00400000) /* Channel 6 Half Transfer clear */ +#define DMA_CTEIF6 ((uint32_t)0x00800000) /* Channel 6 Transfer Error clear */ +#define DMA_CGIF7 ((uint32_t)0x01000000) /* Channel 7 Global interrupt clear */ +#define DMA_CTCIF7 ((uint32_t)0x02000000) /* Channel 7 Transfer Complete clear */ +#define DMA_CHTIF7 ((uint32_t)0x04000000) /* Channel 7 Half Transfer clear */ +#define DMA_CTEIF7 ((uint32_t)0x08000000) /* Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CFGR1 register *******************/ +#define DMA_CFGR1_EN ((uint16_t)0x0001) /* Channel enable*/ +#define DMA_CFGR1_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFGR1_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFGR1_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFGR1_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFGR1_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFGR1_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFGR1_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFGR1_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFGR1_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFGR1_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFGR1_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFGR1_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFGR1_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFGR1_PL ((uint16_t)0x3000) /* PL[1:0] bits(Channel Priority level) */ +#define DMA_CFGR1_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFGR1_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFGR1_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode */ + +/******************* Bit definition for DMA_CFGR2 register *******************/ +#define DMA_CFGR2_EN ((uint16_t)0x0001) /* Channel enable */ +#define DMA_CFGR2_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFGR2_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFGR2_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFGR2_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFGR2_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFGR2_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFGR2_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFGR2_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFGR2_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFGR2_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFGR2_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFGR2_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFGR2_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFGR2_PL ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */ +#define DMA_CFGR2_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFGR2_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFGR2_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode */ + +/******************* Bit definition for DMA_CFGR3 register *******************/ +#define DMA_CFGR3_EN ((uint16_t)0x0001) /* Channel enable */ +#define DMA_CFGR3_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFGR3_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFGR3_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFGR3_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFGR3_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFGR3_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFGR3_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFGR3_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFGR3_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFGR3_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFGR3_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFGR3_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFGR3_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFGR3_PL ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */ +#define DMA_CFGR3_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFGR3_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFGR3_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode */ + +/******************* Bit definition for DMA_CFG4 register *******************/ +#define DMA_CFG4_EN ((uint16_t)0x0001) /* Channel enable */ +#define DMA_CFG4_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFG4_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFG4_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFG4_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFG4_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFG4_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFG4_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFG4_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFG4_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFG4_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFG4_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFG4_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFG4_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFG4_PL ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */ +#define DMA_CFG4_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFG4_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFG4_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode */ + +/****************** Bit definition for DMA_CFG5 register *******************/ +#define DMA_CFG5_EN ((uint16_t)0x0001) /* Channel enable */ +#define DMA_CFG5_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFG5_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFG5_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFG5_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFG5_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFG5_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFG5_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFG5_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFG5_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFG5_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFG5_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFG5_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFG5_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFG5_PL ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */ +#define DMA_CFG5_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFG5_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFG5_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode enable */ + +/******************* Bit definition for DMA_CFG6 register *******************/ +#define DMA_CFG6_EN ((uint16_t)0x0001) /* Channel enable */ +#define DMA_CFG6_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFG6_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFG6_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFG6_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFG6_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFG6_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFG6_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFG6_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFG6_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFG6_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFG6_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFG6_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFG6_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFG6_PL ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */ +#define DMA_CFG6_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFG6_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFG6_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode */ + +/******************* Bit definition for DMA_CFG7 register *******************/ +#define DMA_CFG7_EN ((uint16_t)0x0001) /* Channel enable */ +#define DMA_CFG7_TCIE ((uint16_t)0x0002) /* Transfer complete interrupt enable */ +#define DMA_CFG7_HTIE ((uint16_t)0x0004) /* Half Transfer interrupt enable */ +#define DMA_CFG7_TEIE ((uint16_t)0x0008) /* Transfer error interrupt enable */ +#define DMA_CFG7_DIR ((uint16_t)0x0010) /* Data transfer direction */ +#define DMA_CFG7_CIRC ((uint16_t)0x0020) /* Circular mode */ +#define DMA_CFG7_PINC ((uint16_t)0x0040) /* Peripheral increment mode */ +#define DMA_CFG7_MINC ((uint16_t)0x0080) /* Memory increment mode */ + +#define DMA_CFG7_PSIZE ((uint16_t)0x0300) /* PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CFG7_PSIZE_0 ((uint16_t)0x0100) /* Bit 0 */ +#define DMA_CFG7_PSIZE_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define DMA_CFG7_MSIZE ((uint16_t)0x0C00) /* MSIZE[1:0] bits (Memory size) */ +#define DMA_CFG7_MSIZE_0 ((uint16_t)0x0400) /* Bit 0 */ +#define DMA_CFG7_MSIZE_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define DMA_CFG7_PL ((uint16_t)0x3000) /* PL[1:0] bits (Channel Priority level) */ +#define DMA_CFG7_PL_0 ((uint16_t)0x1000) /* Bit 0 */ +#define DMA_CFG7_PL_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define DMA_CFG7_MEM2MEM ((uint16_t)0x4000) /* Memory to memory mode enable */ + +/****************** Bit definition for DMA_CNTR1 register ******************/ +#define DMA_CNTR1_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_CNTR2 register ******************/ +#define DMA_CNTR2_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_CNTR3 register ******************/ +#define DMA_CNTR3_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_CNTR4 register ******************/ +#define DMA_CNTR4_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_CNTR5 register ******************/ +#define DMA_CNTR5_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_CNTR6 register ******************/ +#define DMA_CNTR6_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_CNTR7 register ******************/ +#define DMA_CNTR7_NDT ((uint16_t)0xFFFF) /* Number of data to Transfer */ + +/****************** Bit definition for DMA_PADDR1 register *******************/ +#define DMA_PADDR1_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_PADDR2 register *******************/ +#define DMA_PADDR2_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_PADDR3 register *******************/ +#define DMA_PADDR3_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_PADDR4 register *******************/ +#define DMA_PADDR4_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_PADDR5 register *******************/ +#define DMA_PADDR5_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_PADDR6 register *******************/ +#define DMA_PADDR6_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_PADDR7 register *******************/ +#define DMA_PADDR7_PA ((uint32_t)0xFFFFFFFF) /* Peripheral Address */ + +/****************** Bit definition for DMA_MADDR1 register *******************/ +#define DMA_MADDR1_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + +/****************** Bit definition for DMA_MADDR2 register *******************/ +#define DMA_MADDR2_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + +/****************** Bit definition for DMA_MADDR3 register *******************/ +#define DMA_MADDR3_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + +/****************** Bit definition for DMA_MADDR4 register *******************/ +#define DMA_MADDR4_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + +/****************** Bit definition for DMA_MADDR5 register *******************/ +#define DMA_MADDR5_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + +/****************** Bit definition for DMA_MADDR6 register *******************/ +#define DMA_MADDR6_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + +/****************** Bit definition for DMA_MADDR7 register *******************/ +#define DMA_MADDR7_MA ((uint32_t)0xFFFFFFFF) /* Memory Address */ + + +/******************************************************************************/ +/* External Interrupt/Event Controller */ +/******************************************************************************/ + +/******************* Bit definition for EXTI_INTENR register *******************/ +#define EXTI_INTENR_MR0 ((uint32_t)0x00000001) /* Interrupt Mask on line 0 */ +#define EXTI_INTENR_MR1 ((uint32_t)0x00000002) /* Interrupt Mask on line 1 */ +#define EXTI_INTENR_MR2 ((uint32_t)0x00000004) /* Interrupt Mask on line 2 */ +#define EXTI_INTENR_MR3 ((uint32_t)0x00000008) /* Interrupt Mask on line 3 */ +#define EXTI_INTENR_MR4 ((uint32_t)0x00000010) /* Interrupt Mask on line 4 */ +#define EXTI_INTENR_MR5 ((uint32_t)0x00000020) /* Interrupt Mask on line 5 */ +#define EXTI_INTENR_MR6 ((uint32_t)0x00000040) /* Interrupt Mask on line 6 */ +#define EXTI_INTENR_MR7 ((uint32_t)0x00000080) /* Interrupt Mask on line 7 */ +#define EXTI_INTENR_MR8 ((uint32_t)0x00000100) /* Interrupt Mask on line 8 */ +#define EXTI_INTENR_MR9 ((uint32_t)0x00000200) /* Interrupt Mask on line 9 */ +#define EXTI_INTENR_MR10 ((uint32_t)0x00000400) /* Interrupt Mask on line 10 */ +#define EXTI_INTENR_MR11 ((uint32_t)0x00000800) /* Interrupt Mask on line 11 */ +#define EXTI_INTENR_MR12 ((uint32_t)0x00001000) /* Interrupt Mask on line 12 */ +#define EXTI_INTENR_MR13 ((uint32_t)0x00002000) /* Interrupt Mask on line 13 */ +#define EXTI_INTENR_MR14 ((uint32_t)0x00004000) /* Interrupt Mask on line 14 */ +#define EXTI_INTENR_MR15 ((uint32_t)0x00008000) /* Interrupt Mask on line 15 */ +#define EXTI_INTENR_MR16 ((uint32_t)0x00010000) /* Interrupt Mask on line 16 */ +#define EXTI_INTENR_MR17 ((uint32_t)0x00020000) /* Interrupt Mask on line 17 */ +#define EXTI_INTENR_MR18 ((uint32_t)0x00040000) /* Interrupt Mask on line 18 */ +#define EXTI_INTENR_MR19 ((uint32_t)0x00080000) /* Interrupt Mask on line 19 */ + +/******************* Bit definition for EXTI_EVENR register *******************/ +#define EXTI_EVENR_MR0 ((uint32_t)0x00000001) /* Event Mask on line 0 */ +#define EXTI_EVENR_MR1 ((uint32_t)0x00000002) /* Event Mask on line 1 */ +#define EXTI_EVENR_MR2 ((uint32_t)0x00000004) /* Event Mask on line 2 */ +#define EXTI_EVENR_MR3 ((uint32_t)0x00000008) /* Event Mask on line 3 */ +#define EXTI_EVENR_MR4 ((uint32_t)0x00000010) /* Event Mask on line 4 */ +#define EXTI_EVENR_MR5 ((uint32_t)0x00000020) /* Event Mask on line 5 */ +#define EXTI_EVENR_MR6 ((uint32_t)0x00000040) /* Event Mask on line 6 */ +#define EXTI_EVENR_MR7 ((uint32_t)0x00000080) /* Event Mask on line 7 */ +#define EXTI_EVENR_MR8 ((uint32_t)0x00000100) /* Event Mask on line 8 */ +#define EXTI_EVENR_MR9 ((uint32_t)0x00000200) /* Event Mask on line 9 */ +#define EXTI_EVENR_MR10 ((uint32_t)0x00000400) /* Event Mask on line 10 */ +#define EXTI_EVENR_MR11 ((uint32_t)0x00000800) /* Event Mask on line 11 */ +#define EXTI_EVENR_MR12 ((uint32_t)0x00001000) /* Event Mask on line 12 */ +#define EXTI_EVENR_MR13 ((uint32_t)0x00002000) /* Event Mask on line 13 */ +#define EXTI_EVENR_MR14 ((uint32_t)0x00004000) /* Event Mask on line 14 */ +#define EXTI_EVENR_MR15 ((uint32_t)0x00008000) /* Event Mask on line 15 */ +#define EXTI_EVENR_MR16 ((uint32_t)0x00010000) /* Event Mask on line 16 */ +#define EXTI_EVENR_MR17 ((uint32_t)0x00020000) /* Event Mask on line 17 */ +#define EXTI_EVENR_MR18 ((uint32_t)0x00040000) /* Event Mask on line 18 */ +#define EXTI_EVENR_MR19 ((uint32_t)0x00080000) /* Event Mask on line 19 */ + +/****************** Bit definition for EXTI_RTENR register *******************/ +#define EXTI_RTENR_TR0 ((uint32_t)0x00000001) /* Rising trigger event configuration bit of line 0 */ +#define EXTI_RTENR_TR1 ((uint32_t)0x00000002) /* Rising trigger event configuration bit of line 1 */ +#define EXTI_RTENR_TR2 ((uint32_t)0x00000004) /* Rising trigger event configuration bit of line 2 */ +#define EXTI_RTENR_TR3 ((uint32_t)0x00000008) /* Rising trigger event configuration bit of line 3 */ +#define EXTI_RTENR_TR4 ((uint32_t)0x00000010) /* Rising trigger event configuration bit of line 4 */ +#define EXTI_RTENR_TR5 ((uint32_t)0x00000020) /* Rising trigger event configuration bit of line 5 */ +#define EXTI_RTENR_TR6 ((uint32_t)0x00000040) /* Rising trigger event configuration bit of line 6 */ +#define EXTI_RTENR_TR7 ((uint32_t)0x00000080) /* Rising trigger event configuration bit of line 7 */ +#define EXTI_RTENR_TR8 ((uint32_t)0x00000100) /* Rising trigger event configuration bit of line 8 */ +#define EXTI_RTENR_TR9 ((uint32_t)0x00000200) /* Rising trigger event configuration bit of line 9 */ +#define EXTI_RTENR_TR10 ((uint32_t)0x00000400) /* Rising trigger event configuration bit of line 10 */ +#define EXTI_RTENR_TR11 ((uint32_t)0x00000800) /* Rising trigger event configuration bit of line 11 */ +#define EXTI_RTENR_TR12 ((uint32_t)0x00001000) /* Rising trigger event configuration bit of line 12 */ +#define EXTI_RTENR_TR13 ((uint32_t)0x00002000) /* Rising trigger event configuration bit of line 13 */ +#define EXTI_RTENR_TR14 ((uint32_t)0x00004000) /* Rising trigger event configuration bit of line 14 */ +#define EXTI_RTENR_TR15 ((uint32_t)0x00008000) /* Rising trigger event configuration bit of line 15 */ +#define EXTI_RTENR_TR16 ((uint32_t)0x00010000) /* Rising trigger event configuration bit of line 16 */ +#define EXTI_RTENR_TR17 ((uint32_t)0x00020000) /* Rising trigger event configuration bit of line 17 */ +#define EXTI_RTENR_TR18 ((uint32_t)0x00040000) /* Rising trigger event configuration bit of line 18 */ +#define EXTI_RTENR_TR19 ((uint32_t)0x00080000) /* Rising trigger event configuration bit of line 19 */ + +/****************** Bit definition for EXTI_FTENR register *******************/ +#define EXTI_FTENR_TR0 ((uint32_t)0x00000001) /* Falling trigger event configuration bit of line 0 */ +#define EXTI_FTENR_TR1 ((uint32_t)0x00000002) /* Falling trigger event configuration bit of line 1 */ +#define EXTI_FTENR_TR2 ((uint32_t)0x00000004) /* Falling trigger event configuration bit of line 2 */ +#define EXTI_FTENR_TR3 ((uint32_t)0x00000008) /* Falling trigger event configuration bit of line 3 */ +#define EXTI_FTENR_TR4 ((uint32_t)0x00000010) /* Falling trigger event configuration bit of line 4 */ +#define EXTI_FTENR_TR5 ((uint32_t)0x00000020) /* Falling trigger event configuration bit of line 5 */ +#define EXTI_FTENR_TR6 ((uint32_t)0x00000040) /* Falling trigger event configuration bit of line 6 */ +#define EXTI_FTENR_TR7 ((uint32_t)0x00000080) /* Falling trigger event configuration bit of line 7 */ +#define EXTI_FTENR_TR8 ((uint32_t)0x00000100) /* Falling trigger event configuration bit of line 8 */ +#define EXTI_FTENR_TR9 ((uint32_t)0x00000200) /* Falling trigger event configuration bit of line 9 */ +#define EXTI_FTENR_TR10 ((uint32_t)0x00000400) /* Falling trigger event configuration bit of line 10 */ +#define EXTI_FTENR_TR11 ((uint32_t)0x00000800) /* Falling trigger event configuration bit of line 11 */ +#define EXTI_FTENR_TR12 ((uint32_t)0x00001000) /* Falling trigger event configuration bit of line 12 */ +#define EXTI_FTENR_TR13 ((uint32_t)0x00002000) /* Falling trigger event configuration bit of line 13 */ +#define EXTI_FTENR_TR14 ((uint32_t)0x00004000) /* Falling trigger event configuration bit of line 14 */ +#define EXTI_FTENR_TR15 ((uint32_t)0x00008000) /* Falling trigger event configuration bit of line 15 */ +#define EXTI_FTENR_TR16 ((uint32_t)0x00010000) /* Falling trigger event configuration bit of line 16 */ +#define EXTI_FTENR_TR17 ((uint32_t)0x00020000) /* Falling trigger event configuration bit of line 17 */ +#define EXTI_FTENR_TR18 ((uint32_t)0x00040000) /* Falling trigger event configuration bit of line 18 */ +#define EXTI_FTENR_TR19 ((uint32_t)0x00080000) /* Falling trigger event configuration bit of line 19 */ + +/****************** Bit definition for EXTI_SWIEVR register ******************/ +#define EXTI_SWIEVR_SWIEVR0 ((uint32_t)0x00000001) /* Software Interrupt on line 0 */ +#define EXTI_SWIEVR_SWIEVR1 ((uint32_t)0x00000002) /* Software Interrupt on line 1 */ +#define EXTI_SWIEVR_SWIEVR2 ((uint32_t)0x00000004) /* Software Interrupt on line 2 */ +#define EXTI_SWIEVR_SWIEVR3 ((uint32_t)0x00000008) /* Software Interrupt on line 3 */ +#define EXTI_SWIEVR_SWIEVR4 ((uint32_t)0x00000010) /* Software Interrupt on line 4 */ +#define EXTI_SWIEVR_SWIEVR5 ((uint32_t)0x00000020) /* Software Interrupt on line 5 */ +#define EXTI_SWIEVR_SWIEVR6 ((uint32_t)0x00000040) /* Software Interrupt on line 6 */ +#define EXTI_SWIEVR_SWIEVR7 ((uint32_t)0x00000080) /* Software Interrupt on line 7 */ +#define EXTI_SWIEVR_SWIEVR8 ((uint32_t)0x00000100) /* Software Interrupt on line 8 */ +#define EXTI_SWIEVR_SWIEVR9 ((uint32_t)0x00000200) /* Software Interrupt on line 9 */ +#define EXTI_SWIEVR_SWIEVR10 ((uint32_t)0x00000400) /* Software Interrupt on line 10 */ +#define EXTI_SWIEVR_SWIEVR11 ((uint32_t)0x00000800) /* Software Interrupt on line 11 */ +#define EXTI_SWIEVR_SWIEVR12 ((uint32_t)0x00001000) /* Software Interrupt on line 12 */ +#define EXTI_SWIEVR_SWIEVR13 ((uint32_t)0x00002000) /* Software Interrupt on line 13 */ +#define EXTI_SWIEVR_SWIEVR14 ((uint32_t)0x00004000) /* Software Interrupt on line 14 */ +#define EXTI_SWIEVR_SWIEVR15 ((uint32_t)0x00008000) /* Software Interrupt on line 15 */ +#define EXTI_SWIEVR_SWIEVR16 ((uint32_t)0x00010000) /* Software Interrupt on line 16 */ +#define EXTI_SWIEVR_SWIEVR17 ((uint32_t)0x00020000) /* Software Interrupt on line 17 */ +#define EXTI_SWIEVR_SWIEVR18 ((uint32_t)0x00040000) /* Software Interrupt on line 18 */ +#define EXTI_SWIEVR_SWIEVR19 ((uint32_t)0x00080000) /* Software Interrupt on line 19 */ + +/******************* Bit definition for EXTI_INTFR register ********************/ +#define EXTI_INTF_INTF0 ((uint32_t)0x00000001) /* Pending bit for line 0 */ +#define EXTI_INTF_INTF1 ((uint32_t)0x00000002) /* Pending bit for line 1 */ +#define EXTI_INTF_INTF2 ((uint32_t)0x00000004) /* Pending bit for line 2 */ +#define EXTI_INTF_INTF3 ((uint32_t)0x00000008) /* Pending bit for line 3 */ +#define EXTI_INTF_INTF4 ((uint32_t)0x00000010) /* Pending bit for line 4 */ +#define EXTI_INTF_INTF5 ((uint32_t)0x00000020) /* Pending bit for line 5 */ +#define EXTI_INTF_INTF6 ((uint32_t)0x00000040) /* Pending bit for line 6 */ +#define EXTI_INTF_INTF7 ((uint32_t)0x00000080) /* Pending bit for line 7 */ +#define EXTI_INTF_INTF8 ((uint32_t)0x00000100) /* Pending bit for line 8 */ +#define EXTI_INTF_INTF9 ((uint32_t)0x00000200) /* Pending bit for line 9 */ +#define EXTI_INTF_INTF10 ((uint32_t)0x00000400) /* Pending bit for line 10 */ +#define EXTI_INTF_INTF11 ((uint32_t)0x00000800) /* Pending bit for line 11 */ +#define EXTI_INTF_INTF12 ((uint32_t)0x00001000) /* Pending bit for line 12 */ +#define EXTI_INTF_INTF13 ((uint32_t)0x00002000) /* Pending bit for line 13 */ +#define EXTI_INTF_INTF14 ((uint32_t)0x00004000) /* Pending bit for line 14 */ +#define EXTI_INTF_INTF15 ((uint32_t)0x00008000) /* Pending bit for line 15 */ +#define EXTI_INTF_INTF16 ((uint32_t)0x00010000) /* Pending bit for line 16 */ +#define EXTI_INTF_INTF17 ((uint32_t)0x00020000) /* Pending bit for line 17 */ +#define EXTI_INTF_INTF18 ((uint32_t)0x00040000) /* Pending bit for line 18 */ +#define EXTI_INTF_INTF19 ((uint32_t)0x00080000) /* Pending bit for line 19 */ + +/******************************************************************************/ +/* FLASH and Option Bytes Registers */ +/******************************************************************************/ + + +/******************* Bit definition for FLASH_ACTLR register ******************/ + +/****************** Bit definition for FLASH_KEYR register ******************/ +#define FLASH_KEYR_FKEYR ((uint32_t)0xFFFFFFFF) /* FPEC Key */ + +/***************** Bit definition for FLASH_OBKEYR register ****************/ +#define FLASH_OBKEYR_OBKEYR ((uint32_t)0xFFFFFFFF) /* Option Byte Key */ + +/****************** Bit definition for FLASH_STATR register *******************/ +#define FLASH_STATR_BSY ((uint8_t)0x01) /* Busy */ +#define FLASH_STATR_PGERR ((uint8_t)0x04) /* Programming Error */ +#define FLASH_STATR_WRPRTERR ((uint8_t)0x10) /* Write Protection Error */ +#define FLASH_STATR_EOP ((uint8_t)0x20) /* End of operation */ + +/******************* Bit definition for FLASH_CTLR register *******************/ +#define FLASH_CTLR_PG ((uint32_t)0x00000001) /* Programming */ +#define FLASH_CTLR_PER ((uint32_t)0x00000002) /* Sector Erase 4K */ +#define FLASH_CTLR_MER ((uint32_t)0x00000004) /* Mass Erase */ +#define FLASH_CTLR_OPTPG ((uint32_t)0x00000010) /* Option Byte Programming */ +#define FLASH_CTLR_OPTER ((uint32_t)0x00000020) /* Option Byte Erase */ +#define FLASH_CTLR_STRT ((uint32_t)0x00000040) /* Start */ +#define FLASH_CTLR_LOCK ((uint32_t)0x00000080) /* Lock */ +#define FLASH_CTLR_OPTWRE ((uint32_t)0x00000200) /* Option Bytes Write Enable */ +#define FLASH_CTLR_ERRIE ((uint32_t)0x00000400) /* Error Interrupt Enable */ +#define FLASH_CTLR_EOPIE ((uint32_t)0x00001000) /* End of operation interrupt enable */ +#define FLASH_CTLR_FAST_LOCK ((uint32_t)0x00008000) /* Fast Lock */ +#define FLASH_CTLR_PAGE_PG ((uint32_t)0x00010000) /* Page Programming 256Byte */ +#define FLASH_CTLR_PAGE_ER ((uint32_t)0x00020000) /* Page Erase 256Byte */ +#define FLASH_CTLR_PAGE_BER32 ((uint32_t)0x00040000) /* Block Erase 32K */ +#define FLASH_CTLR_PAGE_BER64 ((uint32_t)0x00080000) /* Block Erase 64K */ +#define FLASH_CTLR_PG_STRT ((uint32_t)0x00200000) /* Page Programming Start */ + +/******************* Bit definition for FLASH_ADDR register *******************/ +#define FLASH_ADDR_FAR ((uint32_t)0xFFFFFFFF) /* Flash Address */ + +/****************** Bit definition for FLASH_OBR register *******************/ +#define FLASH_OBR_OPTERR ((uint16_t)0x0001) /* Option Byte Error */ +#define FLASH_OBR_RDPRT ((uint16_t)0x0002) /* Read protection */ + +#define FLASH_OBR_USER ((uint16_t)0x03FC) /* User Option Bytes */ +#define FLASH_OBR_WDG_SW ((uint16_t)0x0004) /* WDG_SW */ +#define FLASH_OBR_nRST_STOP ((uint16_t)0x0008) /* nRST_STOP */ +#define FLASH_OBR_nRST_STDBY ((uint16_t)0x0010) /* nRST_STDBY */ +#define FLASH_OBR_BFB2 ((uint16_t)0x0020) /* BFB2 */ + +/****************** Bit definition for FLASH_WPR register ******************/ +#define FLASH_WPR_WRP ((uint32_t)0xFFFFFFFF) /* Write Protect */ + +/****************** Bit definition for FLASH_RDPR register *******************/ +#define FLASH_RDPR_RDPR ((uint32_t)0x000000FF) /* Read protection option byte */ +#define FLASH_RDPR_nRDPR ((uint32_t)0x0000FF00) /* Read protection complemented option byte */ + +/****************** Bit definition for FLASH_USER register ******************/ +#define FLASH_USER_USER ((uint32_t)0x00FF0000) /* User option byte */ +#define FLASH_USER_nUSER ((uint32_t)0xFF000000) /* User complemented option byte */ + +/****************** Bit definition for FLASH_Data0 register *****************/ +#define FLASH_Data0_Data0 ((uint32_t)0x000000FF) /* User data storage option byte */ +#define FLASH_Data0_nData0 ((uint32_t)0x0000FF00) /* User data storage complemented option byte */ + +/****************** Bit definition for FLASH_Data1 register *****************/ +#define FLASH_Data1_Data1 ((uint32_t)0x00FF0000) /* User data storage option byte */ +#define FLASH_Data1_nData1 ((uint32_t)0xFF000000) /* User data storage complemented option byte */ + +/****************** Bit definition for FLASH_WRPR0 register ******************/ +#define FLASH_WRPR0_WRPR0 ((uint32_t)0x000000FF) /* Flash memory write protection option bytes */ +#define FLASH_WRPR0_nWRPR0 ((uint32_t)0x0000FF00) /* Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRPR1 register ******************/ +#define FLASH_WRPR1_WRPR1 ((uint32_t)0x00FF0000) /* Flash memory write protection option bytes */ +#define FLASH_WRPR1_nWRPR1 ((uint32_t)0xFF000000) /* Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRPR2 register ******************/ +#define FLASH_WRPR2_WRPR2 ((uint32_t)0x000000FF) /* Flash memory write protection option bytes */ +#define FLASH_WRPR2_nWRPR2 ((uint32_t)0x0000FF00) /* Flash memory write protection complemented option bytes */ + +/****************** Bit definition for FLASH_WRPR3 register ******************/ +#define FLASH_WRPR3_WRPR3 ((uint32_t)0x00FF0000) /* Flash memory write protection option bytes */ +#define FLASH_WRPR3_nWRPR3 ((uint32_t)0xFF000000) /* Flash memory write protection complemented option bytes */ + +/******************************************************************************/ +/* General Purpose and Alternate Function I/O */ +/******************************************************************************/ + +/******************* Bit definition for GPIO_CFGLR register *******************/ +#define GPIO_CFGLR_MODE ((uint32_t)0x33333333) /* Port x mode bits */ + +#define GPIO_CFGLR_MODE0 ((uint32_t)0x00000003) /* MODE0[1:0] bits (Port x mode bits, pin 0) */ +#define GPIO_CFGLR_MODE0_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define GPIO_CFGLR_MODE0_1 ((uint32_t)0x00000002) /* Bit 1 */ + +#define GPIO_CFGLR_MODE1 ((uint32_t)0x00000030) /* MODE1[1:0] bits (Port x mode bits, pin 1) */ +#define GPIO_CFGLR_MODE1_0 ((uint32_t)0x00000010) /* Bit 0 */ +#define GPIO_CFGLR_MODE1_1 ((uint32_t)0x00000020) /* Bit 1 */ + +#define GPIO_CFGLR_MODE2 ((uint32_t)0x00000300) /* MODE2[1:0] bits (Port x mode bits, pin 2) */ +#define GPIO_CFGLR_MODE2_0 ((uint32_t)0x00000100) /* Bit 0 */ +#define GPIO_CFGLR_MODE2_1 ((uint32_t)0x00000200) /* Bit 1 */ + +#define GPIO_CFGLR_MODE3 ((uint32_t)0x00003000) /* MODE3[1:0] bits (Port x mode bits, pin 3) */ +#define GPIO_CFGLR_MODE3_0 ((uint32_t)0x00001000) /* Bit 0 */ +#define GPIO_CFGLR_MODE3_1 ((uint32_t)0x00002000) /* Bit 1 */ + +#define GPIO_CFGLR_MODE4 ((uint32_t)0x00030000) /* MODE4[1:0] bits (Port x mode bits, pin 4) */ +#define GPIO_CFGLR_MODE4_0 ((uint32_t)0x00010000) /* Bit 0 */ +#define GPIO_CFGLR_MODE4_1 ((uint32_t)0x00020000) /* Bit 1 */ + +#define GPIO_CFGLR_MODE5 ((uint32_t)0x00300000) /* MODE5[1:0] bits (Port x mode bits, pin 5) */ +#define GPIO_CFGLR_MODE5_0 ((uint32_t)0x00100000) /* Bit 0 */ +#define GPIO_CFGLR_MODE5_1 ((uint32_t)0x00200000) /* Bit 1 */ + +#define GPIO_CFGLR_MODE6 ((uint32_t)0x03000000) /* MODE6[1:0] bits (Port x mode bits, pin 6) */ +#define GPIO_CFGLR_MODE6_0 ((uint32_t)0x01000000) /* Bit 0 */ +#define GPIO_CFGLR_MODE6_1 ((uint32_t)0x02000000) /* Bit 1 */ + +#define GPIO_CFGLR_MODE7 ((uint32_t)0x30000000) /* MODE7[1:0] bits (Port x mode bits, pin 7) */ +#define GPIO_CFGLR_MODE7_0 ((uint32_t)0x10000000) /* Bit 0 */ +#define GPIO_CFGLR_MODE7_1 ((uint32_t)0x20000000) /* Bit 1 */ + +#define GPIO_CFGLR_CNF ((uint32_t)0xCCCCCCCC) /* Port x configuration bits */ + +#define GPIO_CFGLR_CNF0 ((uint32_t)0x0000000C) /* CNF0[1:0] bits (Port x configuration bits, pin 0) */ +#define GPIO_CFGLR_CNF0_0 ((uint32_t)0x00000004) /* Bit 0 */ +#define GPIO_CFGLR_CNF0_1 ((uint32_t)0x00000008) /* Bit 1 */ + +#define GPIO_CFGLR_CNF1 ((uint32_t)0x000000C0) /* CNF1[1:0] bits (Port x configuration bits, pin 1) */ +#define GPIO_CFGLR_CNF1_0 ((uint32_t)0x00000040) /* Bit 0 */ +#define GPIO_CFGLR_CNF1_1 ((uint32_t)0x00000080) /* Bit 1 */ + +#define GPIO_CFGLR_CNF2 ((uint32_t)0x00000C00) /* CNF2[1:0] bits (Port x configuration bits, pin 2) */ +#define GPIO_CFGLR_CNF2_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define GPIO_CFGLR_CNF2_1 ((uint32_t)0x00000800) /* Bit 1 */ + +#define GPIO_CFGLR_CNF3 ((uint32_t)0x0000C000) /* CNF3[1:0] bits (Port x configuration bits, pin 3) */ +#define GPIO_CFGLR_CNF3_0 ((uint32_t)0x00004000) /* Bit 0 */ +#define GPIO_CFGLR_CNF3_1 ((uint32_t)0x00008000) /* Bit 1 */ + +#define GPIO_CFGLR_CNF4 ((uint32_t)0x000C0000) /* CNF4[1:0] bits (Port x configuration bits, pin 4) */ +#define GPIO_CFGLR_CNF4_0 ((uint32_t)0x00040000) /* Bit 0 */ +#define GPIO_CFGLR_CNF4_1 ((uint32_t)0x00080000) /* Bit 1 */ + +#define GPIO_CFGLR_CNF5 ((uint32_t)0x00C00000) /* CNF5[1:0] bits (Port x configuration bits, pin 5) */ +#define GPIO_CFGLR_CNF5_0 ((uint32_t)0x00400000) /* Bit 0 */ +#define GPIO_CFGLR_CNF5_1 ((uint32_t)0x00800000) /* Bit 1 */ + +#define GPIO_CFGLR_CNF6 ((uint32_t)0x0C000000) /* CNF6[1:0] bits (Port x configuration bits, pin 6) */ +#define GPIO_CFGLR_CNF6_0 ((uint32_t)0x04000000) /* Bit 0 */ +#define GPIO_CFGLR_CNF6_1 ((uint32_t)0x08000000) /* Bit 1 */ + +#define GPIO_CFGLR_CNF7 ((uint32_t)0xC0000000) /* CNF7[1:0] bits (Port x configuration bits, pin 7) */ +#define GPIO_CFGLR_CNF7_0 ((uint32_t)0x40000000) /* Bit 0 */ +#define GPIO_CFGLR_CNF7_1 ((uint32_t)0x80000000) /* Bit 1 */ + +/******************* Bit definition for GPIO_CFGHR register *******************/ +#define GPIO_CFGHR_MODE ((uint32_t)0x33333333) /* Port x mode bits */ + +#define GPIO_CFGHR_MODE8 ((uint32_t)0x00000003) /* MODE8[1:0] bits (Port x mode bits, pin 8) */ +#define GPIO_CFGHR_MODE8_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define GPIO_CFGHR_MODE8_1 ((uint32_t)0x00000002) /* Bit 1 */ + +#define GPIO_CFGHR_MODE9 ((uint32_t)0x00000030) /* MODE9[1:0] bits (Port x mode bits, pin 9) */ +#define GPIO_CFGHR_MODE9_0 ((uint32_t)0x00000010) /* Bit 0 */ +#define GPIO_CFGHR_MODE9_1 ((uint32_t)0x00000020) /* Bit 1 */ + +#define GPIO_CFGHR_MODE10 ((uint32_t)0x00000300) /* MODE10[1:0] bits (Port x mode bits, pin 10) */ +#define GPIO_CFGHR_MODE10_0 ((uint32_t)0x00000100) /* Bit 0 */ +#define GPIO_CFGHR_MODE10_1 ((uint32_t)0x00000200) /* Bit 1 */ + +#define GPIO_CFGHR_MODE11 ((uint32_t)0x00003000) /* MODE11[1:0] bits (Port x mode bits, pin 11) */ +#define GPIO_CFGHR_MODE11_0 ((uint32_t)0x00001000) /* Bit 0 */ +#define GPIO_CFGHR_MODE11_1 ((uint32_t)0x00002000) /* Bit 1 */ + +#define GPIO_CFGHR_MODE12 ((uint32_t)0x00030000) /* MODE12[1:0] bits (Port x mode bits, pin 12) */ +#define GPIO_CFGHR_MODE12_0 ((uint32_t)0x00010000) /* Bit 0 */ +#define GPIO_CFGHR_MODE12_1 ((uint32_t)0x00020000) /* Bit 1 */ + +#define GPIO_CFGHR_MODE13 ((uint32_t)0x00300000) /* MODE13[1:0] bits (Port x mode bits, pin 13) */ +#define GPIO_CFGHR_MODE13_0 ((uint32_t)0x00100000) /* Bit 0 */ +#define GPIO_CFGHR_MODE13_1 ((uint32_t)0x00200000) /* Bit 1 */ + +#define GPIO_CFGHR_MODE14 ((uint32_t)0x03000000) /* MODE14[1:0] bits (Port x mode bits, pin 14) */ +#define GPIO_CFGHR_MODE14_0 ((uint32_t)0x01000000) /* Bit 0 */ +#define GPIO_CFGHR_MODE14_1 ((uint32_t)0x02000000) /* Bit 1 */ + +#define GPIO_CFGHR_MODE15 ((uint32_t)0x30000000) /* MODE15[1:0] bits (Port x mode bits, pin 15) */ +#define GPIO_CFGHR_MODE15_0 ((uint32_t)0x10000000) /* Bit 0 */ +#define GPIO_CFGHR_MODE15_1 ((uint32_t)0x20000000) /* Bit 1 */ + +#define GPIO_CFGHR_CNF ((uint32_t)0xCCCCCCCC) /* Port x configuration bits */ + +#define GPIO_CFGHR_CNF8 ((uint32_t)0x0000000C) /* CNF8[1:0] bits (Port x configuration bits, pin 8) */ +#define GPIO_CFGHR_CNF8_0 ((uint32_t)0x00000004) /* Bit 0 */ +#define GPIO_CFGHR_CNF8_1 ((uint32_t)0x00000008) /* Bit 1 */ + +#define GPIO_CFGHR_CNF9 ((uint32_t)0x000000C0) /* CNF9[1:0] bits (Port x configuration bits, pin 9) */ +#define GPIO_CFGHR_CNF9_0 ((uint32_t)0x00000040) /* Bit 0 */ +#define GPIO_CFGHR_CNF9_1 ((uint32_t)0x00000080) /* Bit 1 */ + +#define GPIO_CFGHR_CNF10 ((uint32_t)0x00000C00) /* CNF10[1:0] bits (Port x configuration bits, pin 10) */ +#define GPIO_CFGHR_CNF10_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define GPIO_CFGHR_CNF10_1 ((uint32_t)0x00000800) /* Bit 1 */ + +#define GPIO_CFGHR_CNF11 ((uint32_t)0x0000C000) /* CNF11[1:0] bits (Port x configuration bits, pin 11) */ +#define GPIO_CFGHR_CNF11_0 ((uint32_t)0x00004000) /* Bit 0 */ +#define GPIO_CFGHR_CNF11_1 ((uint32_t)0x00008000) /* Bit 1 */ + +#define GPIO_CFGHR_CNF12 ((uint32_t)0x000C0000) /* CNF12[1:0] bits (Port x configuration bits, pin 12) */ +#define GPIO_CFGHR_CNF12_0 ((uint32_t)0x00040000) /* Bit 0 */ +#define GPIO_CFGHR_CNF12_1 ((uint32_t)0x00080000) /* Bit 1 */ + +#define GPIO_CFGHR_CNF13 ((uint32_t)0x00C00000) /* CNF13[1:0] bits (Port x configuration bits, pin 13) */ +#define GPIO_CFGHR_CNF13_0 ((uint32_t)0x00400000) /* Bit 0 */ +#define GPIO_CFGHR_CNF13_1 ((uint32_t)0x00800000) /* Bit 1 */ + +#define GPIO_CFGHR_CNF14 ((uint32_t)0x0C000000) /* CNF14[1:0] bits (Port x configuration bits, pin 14) */ +#define GPIO_CFGHR_CNF14_0 ((uint32_t)0x04000000) /* Bit 0 */ +#define GPIO_CFGHR_CNF14_1 ((uint32_t)0x08000000) /* Bit 1 */ + +#define GPIO_CFGHR_CNF15 ((uint32_t)0xC0000000) /* CNF15[1:0] bits (Port x configuration bits, pin 15) */ +#define GPIO_CFGHR_CNF15_0 ((uint32_t)0x40000000) /* Bit 0 */ +#define GPIO_CFGHR_CNF15_1 ((uint32_t)0x80000000) /* Bit 1 */ + +/******************* Bit definition for GPIO_INDR register *******************/ +#define GPIO_INDR_IDR0 ((uint16_t)0x0001) /* Port input data, bit 0 */ +#define GPIO_INDR_IDR1 ((uint16_t)0x0002) /* Port input data, bit 1 */ +#define GPIO_INDR_IDR2 ((uint16_t)0x0004) /* Port input data, bit 2 */ +#define GPIO_INDR_IDR3 ((uint16_t)0x0008) /* Port input data, bit 3 */ +#define GPIO_INDR_IDR4 ((uint16_t)0x0010) /* Port input data, bit 4 */ +#define GPIO_INDR_IDR5 ((uint16_t)0x0020) /* Port input data, bit 5 */ +#define GPIO_INDR_IDR6 ((uint16_t)0x0040) /* Port input data, bit 6 */ +#define GPIO_INDR_IDR7 ((uint16_t)0x0080) /* Port input data, bit 7 */ +#define GPIO_INDR_IDR8 ((uint16_t)0x0100) /* Port input data, bit 8 */ +#define GPIO_INDR_IDR9 ((uint16_t)0x0200) /* Port input data, bit 9 */ +#define GPIO_INDR_IDR10 ((uint16_t)0x0400) /* Port input data, bit 10 */ +#define GPIO_INDR_IDR11 ((uint16_t)0x0800) /* Port input data, bit 11 */ +#define GPIO_INDR_IDR12 ((uint16_t)0x1000) /* Port input data, bit 12 */ +#define GPIO_INDR_IDR13 ((uint16_t)0x2000) /* Port input data, bit 13 */ +#define GPIO_INDR_IDR14 ((uint16_t)0x4000) /* Port input data, bit 14 */ +#define GPIO_INDR_IDR15 ((uint16_t)0x8000) /* Port input data, bit 15 */ + +/******************* Bit definition for GPIO_OUTDR register *******************/ +#define GPIO_OUTDR_ODR0 ((uint16_t)0x0001) /* Port output data, bit 0 */ +#define GPIO_OUTDR_ODR1 ((uint16_t)0x0002) /* Port output data, bit 1 */ +#define GPIO_OUTDR_ODR2 ((uint16_t)0x0004) /* Port output data, bit 2 */ +#define GPIO_OUTDR_ODR3 ((uint16_t)0x0008) /* Port output data, bit 3 */ +#define GPIO_OUTDR_ODR4 ((uint16_t)0x0010) /* Port output data, bit 4 */ +#define GPIO_OUTDR_ODR5 ((uint16_t)0x0020) /* Port output data, bit 5 */ +#define GPIO_OUTDR_ODR6 ((uint16_t)0x0040) /* Port output data, bit 6 */ +#define GPIO_OUTDR_ODR7 ((uint16_t)0x0080) /* Port output data, bit 7 */ +#define GPIO_OUTDR_ODR8 ((uint16_t)0x0100) /* Port output data, bit 8 */ +#define GPIO_OUTDR_ODR9 ((uint16_t)0x0200) /* Port output data, bit 9 */ +#define GPIO_OUTDR_ODR10 ((uint16_t)0x0400) /* Port output data, bit 10 */ +#define GPIO_OUTDR_ODR11 ((uint16_t)0x0800) /* Port output data, bit 11 */ +#define GPIO_OUTDR_ODR12 ((uint16_t)0x1000) /* Port output data, bit 12 */ +#define GPIO_OUTDR_ODR13 ((uint16_t)0x2000) /* Port output data, bit 13 */ +#define GPIO_OUTDR_ODR14 ((uint16_t)0x4000) /* Port output data, bit 14 */ +#define GPIO_OUTDR_ODR15 ((uint16_t)0x8000) /* Port output data, bit 15 */ + +/****************** Bit definition for GPIO_BSHR register *******************/ +#define GPIO_BSHR_BS0 ((uint32_t)0x00000001) /* Port x Set bit 0 */ +#define GPIO_BSHR_BS1 ((uint32_t)0x00000002) /* Port x Set bit 1 */ +#define GPIO_BSHR_BS2 ((uint32_t)0x00000004) /* Port x Set bit 2 */ +#define GPIO_BSHR_BS3 ((uint32_t)0x00000008) /* Port x Set bit 3 */ +#define GPIO_BSHR_BS4 ((uint32_t)0x00000010) /* Port x Set bit 4 */ +#define GPIO_BSHR_BS5 ((uint32_t)0x00000020) /* Port x Set bit 5 */ +#define GPIO_BSHR_BS6 ((uint32_t)0x00000040) /* Port x Set bit 6 */ +#define GPIO_BSHR_BS7 ((uint32_t)0x00000080) /* Port x Set bit 7 */ +#define GPIO_BSHR_BS8 ((uint32_t)0x00000100) /* Port x Set bit 8 */ +#define GPIO_BSHR_BS9 ((uint32_t)0x00000200) /* Port x Set bit 9 */ +#define GPIO_BSHR_BS10 ((uint32_t)0x00000400) /* Port x Set bit 10 */ +#define GPIO_BSHR_BS11 ((uint32_t)0x00000800) /* Port x Set bit 11 */ +#define GPIO_BSHR_BS12 ((uint32_t)0x00001000) /* Port x Set bit 12 */ +#define GPIO_BSHR_BS13 ((uint32_t)0x00002000) /* Port x Set bit 13 */ +#define GPIO_BSHR_BS14 ((uint32_t)0x00004000) /* Port x Set bit 14 */ +#define GPIO_BSHR_BS15 ((uint32_t)0x00008000) /* Port x Set bit 15 */ + +#define GPIO_BSHR_BR0 ((uint32_t)0x00010000) /* Port x Reset bit 0 */ +#define GPIO_BSHR_BR1 ((uint32_t)0x00020000) /* Port x Reset bit 1 */ +#define GPIO_BSHR_BR2 ((uint32_t)0x00040000) /* Port x Reset bit 2 */ +#define GPIO_BSHR_BR3 ((uint32_t)0x00080000) /* Port x Reset bit 3 */ +#define GPIO_BSHR_BR4 ((uint32_t)0x00100000) /* Port x Reset bit 4 */ +#define GPIO_BSHR_BR5 ((uint32_t)0x00200000) /* Port x Reset bit 5 */ +#define GPIO_BSHR_BR6 ((uint32_t)0x00400000) /* Port x Reset bit 6 */ +#define GPIO_BSHR_BR7 ((uint32_t)0x00800000) /* Port x Reset bit 7 */ +#define GPIO_BSHR_BR8 ((uint32_t)0x01000000) /* Port x Reset bit 8 */ +#define GPIO_BSHR_BR9 ((uint32_t)0x02000000) /* Port x Reset bit 9 */ +#define GPIO_BSHR_BR10 ((uint32_t)0x04000000) /* Port x Reset bit 10 */ +#define GPIO_BSHR_BR11 ((uint32_t)0x08000000) /* Port x Reset bit 11 */ +#define GPIO_BSHR_BR12 ((uint32_t)0x10000000) /* Port x Reset bit 12 */ +#define GPIO_BSHR_BR13 ((uint32_t)0x20000000) /* Port x Reset bit 13 */ +#define GPIO_BSHR_BR14 ((uint32_t)0x40000000) /* Port x Reset bit 14 */ +#define GPIO_BSHR_BR15 ((uint32_t)0x80000000) /* Port x Reset bit 15 */ + +/******************* Bit definition for GPIO_BCR register *******************/ +#define GPIO_BCR_BR0 ((uint16_t)0x0001) /* Port x Reset bit 0 */ +#define GPIO_BCR_BR1 ((uint16_t)0x0002) /* Port x Reset bit 1 */ +#define GPIO_BCR_BR2 ((uint16_t)0x0004) /* Port x Reset bit 2 */ +#define GPIO_BCR_BR3 ((uint16_t)0x0008) /* Port x Reset bit 3 */ +#define GPIO_BCR_BR4 ((uint16_t)0x0010) /* Port x Reset bit 4 */ +#define GPIO_BCR_BR5 ((uint16_t)0x0020) /* Port x Reset bit 5 */ +#define GPIO_BCR_BR6 ((uint16_t)0x0040) /* Port x Reset bit 6 */ +#define GPIO_BCR_BR7 ((uint16_t)0x0080) /* Port x Reset bit 7 */ +#define GPIO_BCR_BR8 ((uint16_t)0x0100) /* Port x Reset bit 8 */ +#define GPIO_BCR_BR9 ((uint16_t)0x0200) /* Port x Reset bit 9 */ +#define GPIO_BCR_BR10 ((uint16_t)0x0400) /* Port x Reset bit 10 */ +#define GPIO_BCR_BR11 ((uint16_t)0x0800) /* Port x Reset bit 11 */ +#define GPIO_BCR_BR12 ((uint16_t)0x1000) /* Port x Reset bit 12 */ +#define GPIO_BCR_BR13 ((uint16_t)0x2000) /* Port x Reset bit 13 */ +#define GPIO_BCR_BR14 ((uint16_t)0x4000) /* Port x Reset bit 14 */ +#define GPIO_BCR_BR15 ((uint16_t)0x8000) /* Port x Reset bit 15 */ + +/****************** Bit definition for GPIO_LCKR register *******************/ +#define GPIO_LCK0 ((uint32_t)0x00000001) /* Port x Lock bit 0 */ +#define GPIO_LCK1 ((uint32_t)0x00000002) /* Port x Lock bit 1 */ +#define GPIO_LCK2 ((uint32_t)0x00000004) /* Port x Lock bit 2 */ +#define GPIO_LCK3 ((uint32_t)0x00000008) /* Port x Lock bit 3 */ +#define GPIO_LCK4 ((uint32_t)0x00000010) /* Port x Lock bit 4 */ +#define GPIO_LCK5 ((uint32_t)0x00000020) /* Port x Lock bit 5 */ +#define GPIO_LCK6 ((uint32_t)0x00000040) /* Port x Lock bit 6 */ +#define GPIO_LCK7 ((uint32_t)0x00000080) /* Port x Lock bit 7 */ +#define GPIO_LCK8 ((uint32_t)0x00000100) /* Port x Lock bit 8 */ +#define GPIO_LCK9 ((uint32_t)0x00000200) /* Port x Lock bit 9 */ +#define GPIO_LCK10 ((uint32_t)0x00000400) /* Port x Lock bit 10 */ +#define GPIO_LCK11 ((uint32_t)0x00000800) /* Port x Lock bit 11 */ +#define GPIO_LCK12 ((uint32_t)0x00001000) /* Port x Lock bit 12 */ +#define GPIO_LCK13 ((uint32_t)0x00002000) /* Port x Lock bit 13 */ +#define GPIO_LCK14 ((uint32_t)0x00004000) /* Port x Lock bit 14 */ +#define GPIO_LCK15 ((uint32_t)0x00008000) /* Port x Lock bit 15 */ +#define GPIO_LCKK ((uint32_t)0x00010000) /* Lock key */ + + +/****************** Bit definition for AFIO_ECR register *******************/ +#define AFIO_ECR_PIN ((uint8_t)0x0F) /* PIN[3:0] bits (Pin selection) */ +#define AFIO_ECR_PIN_0 ((uint8_t)0x01) /* Bit 0 */ +#define AFIO_ECR_PIN_1 ((uint8_t)0x02) /* Bit 1 */ +#define AFIO_ECR_PIN_2 ((uint8_t)0x04) /* Bit 2 */ +#define AFIO_ECR_PIN_3 ((uint8_t)0x08) /* Bit 3 */ + +#define AFIO_ECR_PIN_PX0 ((uint8_t)0x00) /* Pin 0 selected */ +#define AFIO_ECR_PIN_PX1 ((uint8_t)0x01) /* Pin 1 selected */ +#define AFIO_ECR_PIN_PX2 ((uint8_t)0x02) /* Pin 2 selected */ +#define AFIO_ECR_PIN_PX3 ((uint8_t)0x03) /* Pin 3 selected */ +#define AFIO_ECR_PIN_PX4 ((uint8_t)0x04) /* Pin 4 selected */ +#define AFIO_ECR_PIN_PX5 ((uint8_t)0x05) /* Pin 5 selected */ +#define AFIO_ECR_PIN_PX6 ((uint8_t)0x06) /* Pin 6 selected */ +#define AFIO_ECR_PIN_PX7 ((uint8_t)0x07) /* Pin 7 selected */ +#define AFIO_ECR_PIN_PX8 ((uint8_t)0x08) /* Pin 8 selected */ +#define AFIO_ECR_PIN_PX9 ((uint8_t)0x09) /* Pin 9 selected */ +#define AFIO_ECR_PIN_PX10 ((uint8_t)0x0A) /* Pin 10 selected */ +#define AFIO_ECR_PIN_PX11 ((uint8_t)0x0B) /* Pin 11 selected */ +#define AFIO_ECR_PIN_PX12 ((uint8_t)0x0C) /* Pin 12 selected */ +#define AFIO_ECR_PIN_PX13 ((uint8_t)0x0D) /* Pin 13 selected */ +#define AFIO_ECR_PIN_PX14 ((uint8_t)0x0E) /* Pin 14 selected */ +#define AFIO_ECR_PIN_PX15 ((uint8_t)0x0F) /* Pin 15 selected */ + +#define AFIO_ECR_PORT ((uint8_t)0x70) /* PORT[2:0] bits (Port selection) */ +#define AFIO_ECR_PORT_0 ((uint8_t)0x10) /* Bit 0 */ +#define AFIO_ECR_PORT_1 ((uint8_t)0x20) /* Bit 1 */ +#define AFIO_ECR_PORT_2 ((uint8_t)0x40) /* Bit 2 */ + +#define AFIO_ECR_PORT_PA ((uint8_t)0x00) /* Port A selected */ +#define AFIO_ECR_PORT_PB ((uint8_t)0x10) /* Port B selected */ +#define AFIO_ECR_PORT_PC ((uint8_t)0x20) /* Port C selected */ +#define AFIO_ECR_PORT_PD ((uint8_t)0x30) /* Port D selected */ +#define AFIO_ECR_PORT_PE ((uint8_t)0x40) /* Port E selected */ + +#define AFIO_ECR_EVOE ((uint8_t)0x80) /* Event Output Enable */ + +/****************** Bit definition for AFIO_PCFR1register *******************/ +#define AFIO_PCFR1_SPI1_REMAP ((uint32_t)0x00000001) /* SPI1 remapping */ +#define AFIO_PCFR1_I2C1_REMAP ((uint32_t)0x00000002) /* I2C1 remapping */ +#define AFIO_PCFR1_USART1_REMAP ((uint32_t)0x00000004) /* USART1 remapping */ +#define AFIO_PCFR1_USART2_REMAP ((uint32_t)0x00000008) /* USART2 remapping */ + +#define AFIO_PCFR1_USART3_REMAP ((uint32_t)0x00000030) /* USART3_REMAP[1:0] bits (USART3 remapping) */ +#define AFIO_PCFR1_USART3_REMAP_0 ((uint32_t)0x00000010) /* Bit 0 */ +#define AFIO_PCFR1_USART3_REMAP_1 ((uint32_t)0x00000020) /* Bit 1 */ + +#define AFIO_PCFR1_USART3_REMAP_NOREMAP ((uint32_t)0x00000000) /* No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ +#define AFIO_PCFR1_USART3_REMAP_PARTIALREMAP ((uint32_t)0x00000010) /* Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ +#define AFIO_PCFR1_USART3_REMAP_FULLREMAP ((uint32_t)0x00000030) /* Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ + +#define AFIO_PCFR1_TIM1_REMAP ((uint32_t)0x000000C0) /* TIM1_REMAP[1:0] bits (TIM1 remapping) */ +#define AFIO_PCFR1_TIM1_REMAP_0 ((uint32_t)0x00000040) /* Bit 0 */ +#define AFIO_PCFR1_TIM1_REMAP_1 ((uint32_t)0x00000080) /* Bit 1 */ + +#define AFIO_PCFR1_TIM1_REMAP_NOREMAP ((uint32_t)0x00000000) /* No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ +#define AFIO_PCFR1_TIM1_REMAP_PARTIALREMAP ((uint32_t)0x00000040) /* Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ +#define AFIO_PCFR1_TIM1_REMAP_FULLREMAP ((uint32_t)0x000000C0) /* Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ + +#define AFIO_PCFR1_TIM2_REMAP ((uint32_t)0x00000300) /* TIM2_REMAP[1:0] bits (TIM2 remapping) */ +#define AFIO_PCFR1_TIM2_REMAP_0 ((uint32_t)0x00000100) /* Bit 0 */ +#define AFIO_PCFR1_TIM2_REMAP_1 ((uint32_t)0x00000200) /* Bit 1 */ + +#define AFIO_PCFR1_TIM2_REMAP_NOREMAP ((uint32_t)0x00000000) /* No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ +#define AFIO_PCFR1_TIM2_REMAP_PARTIALREMAP1 ((uint32_t)0x00000100) /* Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ +#define AFIO_PCFR1_TIM2_REMAP_PARTIALREMAP2 ((uint32_t)0x00000200) /* Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ +#define AFIO_PCFR1_TIM2_REMAP_FULLREMAP ((uint32_t)0x00000300) /* Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ + +#define AFIO_PCFR1_TIM3_REMAP ((uint32_t)0x00000C00) /* TIM3_REMAP[1:0] bits (TIM3 remapping) */ +#define AFIO_PCFR1_TIM3_REMAP_0 ((uint32_t)0x00000400) /* Bit 0 */ +#define AFIO_PCFR1_TIM3_REMAP_1 ((uint32_t)0x00000800) /* Bit 1 */ + +#define AFIO_PCFR1_TIM3_REMAP_NOREMAP ((uint32_t)0x00000000) /* No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ +#define AFIO_PCFR1_TIM3_REMAP_PARTIALREMAP ((uint32_t)0x00000800) /* Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ +#define AFIO_PCFR1_TIM3_REMAP_FULLREMAP ((uint32_t)0x00000C00) /* Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ + +#define AFIO_PCFR1_TIM4_REMAP ((uint32_t)0x00001000) /* TIM4_REMAP bit (TIM4 remapping) */ + +#define AFIO_PCFR1_CAN_REMAP ((uint32_t)0x00006000) /* CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ +#define AFIO_PCFR1_CAN_REMAP_0 ((uint32_t)0x00002000) /* Bit 0 */ +#define AFIO_PCFR1_CAN_REMAP_1 ((uint32_t)0x00004000) /* Bit 1 */ + +#define AFIO_PCFR1_CAN_REMAP_REMAP1 ((uint32_t)0x00000000) /* CANRX mapped to PA11, CANTX mapped to PA12 */ +#define AFIO_PCFR1_CAN_REMAP_REMAP2 ((uint32_t)0x00004000) /* CANRX mapped to PB8, CANTX mapped to PB9 */ +#define AFIO_PCFR1_CAN_REMAP_REMAP3 ((uint32_t)0x00006000) /* CANRX mapped to PD0, CANTX mapped to PD1 */ + +#define AFIO_PCFR1_PD01_REMAP ((uint32_t)0x00008000) /* Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ +#define AFIO_PCFR1_TIM5CH4_IREMAP ((uint32_t)0x00010000) /* TIM5 Channel4 Internal Remap */ +#define AFIO_PCFR1_ADC1_ETRGINJ_REMAP ((uint32_t)0x00020000) /* ADC 1 External Trigger Injected Conversion remapping */ +#define AFIO_PCFR1_ADC1_ETRGREG_REMAP ((uint32_t)0x00040000) /* ADC 1 External Trigger Regular Conversion remapping */ +#define AFIO_PCFR1_ADC2_ETRGINJ_REMAP ((uint32_t)0x00080000) /* ADC 2 External Trigger Injected Conversion remapping */ +#define AFIO_PCFR1_ADC2_ETRGREG_REMAP ((uint32_t)0x00100000) /* ADC 2 External Trigger Regular Conversion remapping */ + +#define AFIO_PCFR1_SWJ_CFG ((uint32_t)0x07000000) /* SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ +#define AFIO_PCFR1_SWJ_CFG_0 ((uint32_t)0x01000000) /* Bit 0 */ +#define AFIO_PCFR1_SWJ_CFG_1 ((uint32_t)0x02000000) /* Bit 1 */ +#define AFIO_PCFR1_SWJ_CFG_2 ((uint32_t)0x04000000) /* Bit 2 */ + +#define AFIO_PCFR1_SWJ_CFG_RESET ((uint32_t)0x00000000) /* Full SWJ (JTAG-DP + SW-DP) : Reset State */ +#define AFIO_PCFR1_SWJ_CFG_NOJNTRST ((uint32_t)0x01000000) /* Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ +#define AFIO_PCFR1_SWJ_CFG_JTAGDISABLE ((uint32_t)0x02000000) /* JTAG-DP Disabled and SW-DP Enabled */ +#define AFIO_PCFR1_SWJ_CFG_DISABLE ((uint32_t)0x04000000) /* JTAG-DP Disabled and SW-DP Disabled */ + +/***************** Bit definition for AFIO_EXTICR1 register *****************/ +#define AFIO_EXTICR1_EXTI0 ((uint16_t)0x000F) /* EXTI 0 configuration */ +#define AFIO_EXTICR1_EXTI1 ((uint16_t)0x00F0) /* EXTI 1 configuration */ +#define AFIO_EXTICR1_EXTI2 ((uint16_t)0x0F00) /* EXTI 2 configuration */ +#define AFIO_EXTICR1_EXTI3 ((uint16_t)0xF000) /* EXTI 3 configuration */ + +#define AFIO_EXTICR1_EXTI0_PA ((uint16_t)0x0000) /* PA[0] pin */ +#define AFIO_EXTICR1_EXTI0_PB ((uint16_t)0x0001) /* PB[0] pin */ +#define AFIO_EXTICR1_EXTI0_PC ((uint16_t)0x0002) /* PC[0] pin */ +#define AFIO_EXTICR1_EXTI0_PD ((uint16_t)0x0003) /* PD[0] pin */ +#define AFIO_EXTICR1_EXTI0_PE ((uint16_t)0x0004) /* PE[0] pin */ +#define AFIO_EXTICR1_EXTI0_PF ((uint16_t)0x0005) /* PF[0] pin */ +#define AFIO_EXTICR1_EXTI0_PG ((uint16_t)0x0006) /* PG[0] pin */ + +#define AFIO_EXTICR1_EXTI1_PA ((uint16_t)0x0000) /* PA[1] pin */ +#define AFIO_EXTICR1_EXTI1_PB ((uint16_t)0x0010) /* PB[1] pin */ +#define AFIO_EXTICR1_EXTI1_PC ((uint16_t)0x0020) /* PC[1] pin */ +#define AFIO_EXTICR1_EXTI1_PD ((uint16_t)0x0030) /* PD[1] pin */ +#define AFIO_EXTICR1_EXTI1_PE ((uint16_t)0x0040) /* PE[1] pin */ +#define AFIO_EXTICR1_EXTI1_PF ((uint16_t)0x0050) /* PF[1] pin */ +#define AFIO_EXTICR1_EXTI1_PG ((uint16_t)0x0060) /* PG[1] pin */ + +#define AFIO_EXTICR1_EXTI2_PA ((uint16_t)0x0000) /* PA[2] pin */ +#define AFIO_EXTICR1_EXTI2_PB ((uint16_t)0x0100) /* PB[2] pin */ +#define AFIO_EXTICR1_EXTI2_PC ((uint16_t)0x0200) /* PC[2] pin */ +#define AFIO_EXTICR1_EXTI2_PD ((uint16_t)0x0300) /* PD[2] pin */ +#define AFIO_EXTICR1_EXTI2_PE ((uint16_t)0x0400) /* PE[2] pin */ +#define AFIO_EXTICR1_EXTI2_PF ((uint16_t)0x0500) /* PF[2] pin */ +#define AFIO_EXTICR1_EXTI2_PG ((uint16_t)0x0600) /* PG[2] pin */ + +#define AFIO_EXTICR1_EXTI3_PA ((uint16_t)0x0000) /* PA[3] pin */ +#define AFIO_EXTICR1_EXTI3_PB ((uint16_t)0x1000) /* PB[3] pin */ +#define AFIO_EXTICR1_EXTI3_PC ((uint16_t)0x2000) /* PC[3] pin */ +#define AFIO_EXTICR1_EXTI3_PD ((uint16_t)0x3000) /* PD[3] pin */ +#define AFIO_EXTICR1_EXTI3_PE ((uint16_t)0x4000) /* PE[3] pin */ +#define AFIO_EXTICR1_EXTI3_PF ((uint16_t)0x5000) /* PF[3] pin */ +#define AFIO_EXTICR1_EXTI3_PG ((uint16_t)0x6000) /* PG[3] pin */ + +/***************** Bit definition for AFIO_EXTICR2 register *****************/ +#define AFIO_EXTICR2_EXTI4 ((uint16_t)0x000F) /* EXTI 4 configuration */ +#define AFIO_EXTICR2_EXTI5 ((uint16_t)0x00F0) /* EXTI 5 configuration */ +#define AFIO_EXTICR2_EXTI6 ((uint16_t)0x0F00) /* EXTI 6 configuration */ +#define AFIO_EXTICR2_EXTI7 ((uint16_t)0xF000) /* EXTI 7 configuration */ + +#define AFIO_EXTICR2_EXTI4_PA ((uint16_t)0x0000) /* PA[4] pin */ +#define AFIO_EXTICR2_EXTI4_PB ((uint16_t)0x0001) /* PB[4] pin */ +#define AFIO_EXTICR2_EXTI4_PC ((uint16_t)0x0002) /* PC[4] pin */ +#define AFIO_EXTICR2_EXTI4_PD ((uint16_t)0x0003) /* PD[4] pin */ +#define AFIO_EXTICR2_EXTI4_PE ((uint16_t)0x0004) /* PE[4] pin */ +#define AFIO_EXTICR2_EXTI4_PF ((uint16_t)0x0005) /* PF[4] pin */ +#define AFIO_EXTICR2_EXTI4_PG ((uint16_t)0x0006) /* PG[4] pin */ + +#define AFIO_EXTICR2_EXTI5_PA ((uint16_t)0x0000) /* PA[5] pin */ +#define AFIO_EXTICR2_EXTI5_PB ((uint16_t)0x0010) /* PB[5] pin */ +#define AFIO_EXTICR2_EXTI5_PC ((uint16_t)0x0020) /* PC[5] pin */ +#define AFIO_EXTICR2_EXTI5_PD ((uint16_t)0x0030) /* PD[5] pin */ +#define AFIO_EXTICR2_EXTI5_PE ((uint16_t)0x0040) /* PE[5] pin */ +#define AFIO_EXTICR2_EXTI5_PF ((uint16_t)0x0050) /* PF[5] pin */ +#define AFIO_EXTICR2_EXTI5_PG ((uint16_t)0x0060) /* PG[5] pin */ + +#define AFIO_EXTICR2_EXTI6_PA ((uint16_t)0x0000) /* PA[6] pin */ +#define AFIO_EXTICR2_EXTI6_PB ((uint16_t)0x0100) /* PB[6] pin */ +#define AFIO_EXTICR2_EXTI6_PC ((uint16_t)0x0200) /* PC[6] pin */ +#define AFIO_EXTICR2_EXTI6_PD ((uint16_t)0x0300) /* PD[6] pin */ +#define AFIO_EXTICR2_EXTI6_PE ((uint16_t)0x0400) /* PE[6] pin */ +#define AFIO_EXTICR2_EXTI6_PF ((uint16_t)0x0500) /* PF[6] pin */ +#define AFIO_EXTICR2_EXTI6_PG ((uint16_t)0x0600) /* PG[6] pin */ + +#define AFIO_EXTICR2_EXTI7_PA ((uint16_t)0x0000) /* PA[7] pin */ +#define AFIO_EXTICR2_EXTI7_PB ((uint16_t)0x1000) /* PB[7] pin */ +#define AFIO_EXTICR2_EXTI7_PC ((uint16_t)0x2000) /* PC[7] pin */ +#define AFIO_EXTICR2_EXTI7_PD ((uint16_t)0x3000) /* PD[7] pin */ +#define AFIO_EXTICR2_EXTI7_PE ((uint16_t)0x4000) /* PE[7] pin */ +#define AFIO_EXTICR2_EXTI7_PF ((uint16_t)0x5000) /* PF[7] pin */ +#define AFIO_EXTICR2_EXTI7_PG ((uint16_t)0x6000) /* PG[7] pin */ + +/***************** Bit definition for AFIO_EXTICR3 register *****************/ +#define AFIO_EXTICR3_EXTI8 ((uint16_t)0x000F) /* EXTI 8 configuration */ +#define AFIO_EXTICR3_EXTI9 ((uint16_t)0x00F0) /* EXTI 9 configuration */ +#define AFIO_EXTICR3_EXTI10 ((uint16_t)0x0F00) /* EXTI 10 configuration */ +#define AFIO_EXTICR3_EXTI11 ((uint16_t)0xF000) /* EXTI 11 configuration */ + +#define AFIO_EXTICR3_EXTI8_PA ((uint16_t)0x0000) /* PA[8] pin */ +#define AFIO_EXTICR3_EXTI8_PB ((uint16_t)0x0001) /* PB[8] pin */ +#define AFIO_EXTICR3_EXTI8_PC ((uint16_t)0x0002) /* PC[8] pin */ +#define AFIO_EXTICR3_EXTI8_PD ((uint16_t)0x0003) /* PD[8] pin */ +#define AFIO_EXTICR3_EXTI8_PE ((uint16_t)0x0004) /* PE[8] pin */ +#define AFIO_EXTICR3_EXTI8_PF ((uint16_t)0x0005) /* PF[8] pin */ +#define AFIO_EXTICR3_EXTI8_PG ((uint16_t)0x0006) /* PG[8] pin */ + +#define AFIO_EXTICR3_EXTI9_PA ((uint16_t)0x0000) /* PA[9] pin */ +#define AFIO_EXTICR3_EXTI9_PB ((uint16_t)0x0010) /* PB[9] pin */ +#define AFIO_EXTICR3_EXTI9_PC ((uint16_t)0x0020) /* PC[9] pin */ +#define AFIO_EXTICR3_EXTI9_PD ((uint16_t)0x0030) /* PD[9] pin */ +#define AFIO_EXTICR3_EXTI9_PE ((uint16_t)0x0040) /* PE[9] pin */ +#define AFIO_EXTICR3_EXTI9_PF ((uint16_t)0x0050) /* PF[9] pin */ +#define AFIO_EXTICR3_EXTI9_PG ((uint16_t)0x0060) /* PG[9] pin */ + +#define AFIO_EXTICR3_EXTI10_PA ((uint16_t)0x0000) /* PA[10] pin */ +#define AFIO_EXTICR3_EXTI10_PB ((uint16_t)0x0100) /* PB[10] pin */ +#define AFIO_EXTICR3_EXTI10_PC ((uint16_t)0x0200) /* PC[10] pin */ +#define AFIO_EXTICR3_EXTI10_PD ((uint16_t)0x0300) /* PD[10] pin */ +#define AFIO_EXTICR3_EXTI10_PE ((uint16_t)0x0400) /* PE[10] pin */ +#define AFIO_EXTICR3_EXTI10_PF ((uint16_t)0x0500) /* PF[10] pin */ +#define AFIO_EXTICR3_EXTI10_PG ((uint16_t)0x0600) /* PG[10] pin */ + +#define AFIO_EXTICR3_EXTI11_PA ((uint16_t)0x0000) /* PA[11] pin */ +#define AFIO_EXTICR3_EXTI11_PB ((uint16_t)0x1000) /* PB[11] pin */ +#define AFIO_EXTICR3_EXTI11_PC ((uint16_t)0x2000) /* PC[11] pin */ +#define AFIO_EXTICR3_EXTI11_PD ((uint16_t)0x3000) /* PD[11] pin */ +#define AFIO_EXTICR3_EXTI11_PE ((uint16_t)0x4000) /* PE[11] pin */ +#define AFIO_EXTICR3_EXTI11_PF ((uint16_t)0x5000) /* PF[11] pin */ +#define AFIO_EXTICR3_EXTI11_PG ((uint16_t)0x6000) /* PG[11] pin */ + +/***************** Bit definition for AFIO_EXTICR4 register *****************/ +#define AFIO_EXTICR4_EXTI12 ((uint16_t)0x000F) /* EXTI 12 configuration */ +#define AFIO_EXTICR4_EXTI13 ((uint16_t)0x00F0) /* EXTI 13 configuration */ +#define AFIO_EXTICR4_EXTI14 ((uint16_t)0x0F00) /* EXTI 14 configuration */ +#define AFIO_EXTICR4_EXTI15 ((uint16_t)0xF000) /* EXTI 15 configuration */ + +#define AFIO_EXTICR4_EXTI12_PA ((uint16_t)0x0000) /* PA[12] pin */ +#define AFIO_EXTICR4_EXTI12_PB ((uint16_t)0x0001) /* PB[12] pin */ +#define AFIO_EXTICR4_EXTI12_PC ((uint16_t)0x0002) /* PC[12] pin */ +#define AFIO_EXTICR4_EXTI12_PD ((uint16_t)0x0003) /* PD[12] pin */ +#define AFIO_EXTICR4_EXTI12_PE ((uint16_t)0x0004) /* PE[12] pin */ +#define AFIO_EXTICR4_EXTI12_PF ((uint16_t)0x0005) /* PF[12] pin */ +#define AFIO_EXTICR4_EXTI12_PG ((uint16_t)0x0006) /* PG[12] pin */ + +#define AFIO_EXTICR4_EXTI13_PA ((uint16_t)0x0000) /* PA[13] pin */ +#define AFIO_EXTICR4_EXTI13_PB ((uint16_t)0x0010) /* PB[13] pin */ +#define AFIO_EXTICR4_EXTI13_PC ((uint16_t)0x0020) /* PC[13] pin */ +#define AFIO_EXTICR4_EXTI13_PD ((uint16_t)0x0030) /* PD[13] pin */ +#define AFIO_EXTICR4_EXTI13_PE ((uint16_t)0x0040) /* PE[13] pin */ +#define AFIO_EXTICR4_EXTI13_PF ((uint16_t)0x0050) /* PF[13] pin */ +#define AFIO_EXTICR4_EXTI13_PG ((uint16_t)0x0060) /* PG[13] pin */ + +#define AFIO_EXTICR4_EXTI14_PA ((uint16_t)0x0000) /* PA[14] pin */ +#define AFIO_EXTICR4_EXTI14_PB ((uint16_t)0x0100) /* PB[14] pin */ +#define AFIO_EXTICR4_EXTI14_PC ((uint16_t)0x0200) /* PC[14] pin */ +#define AFIO_EXTICR4_EXTI14_PD ((uint16_t)0x0300) /* PD[14] pin */ +#define AFIO_EXTICR4_EXTI14_PE ((uint16_t)0x0400) /* PE[14] pin */ +#define AFIO_EXTICR4_EXTI14_PF ((uint16_t)0x0500) /* PF[14] pin */ +#define AFIO_EXTICR4_EXTI14_PG ((uint16_t)0x0600) /* PG[14] pin */ + +#define AFIO_EXTICR4_EXTI15_PA ((uint16_t)0x0000) /* PA[15] pin */ +#define AFIO_EXTICR4_EXTI15_PB ((uint16_t)0x1000) /* PB[15] pin */ +#define AFIO_EXTICR4_EXTI15_PC ((uint16_t)0x2000) /* PC[15] pin */ +#define AFIO_EXTICR4_EXTI15_PD ((uint16_t)0x3000) /* PD[15] pin */ +#define AFIO_EXTICR4_EXTI15_PE ((uint16_t)0x4000) /* PE[15] pin */ +#define AFIO_EXTICR4_EXTI15_PF ((uint16_t)0x5000) /* PF[15] pin */ +#define AFIO_EXTICR4_EXTI15_PG ((uint16_t)0x6000) /* PG[15] pin */ + +/******************************************************************************/ +/* Independent WATCHDOG */ +/******************************************************************************/ + +/******************* Bit definition for IWDG_CTLR register ********************/ +#define IWDG_KEY ((uint16_t)0xFFFF) /* Key value (write only, read 0000h) */ + +/******************* Bit definition for IWDG_PSCR register ********************/ +#define IWDG_PR ((uint8_t)0x07) /* PR[2:0] (Prescaler divider) */ +#define IWDG_PR_0 ((uint8_t)0x01) /* Bit 0 */ +#define IWDG_PR_1 ((uint8_t)0x02) /* Bit 1 */ +#define IWDG_PR_2 ((uint8_t)0x04) /* Bit 2 */ + +/******************* Bit definition for IWDG_RLDR register *******************/ +#define IWDG_RL ((uint16_t)0x0FFF) /* Watchdog counter reload value */ + +/******************* Bit definition for IWDG_STATR register ********************/ +#define IWDG_PVU ((uint8_t)0x01) /* Watchdog prescaler value update */ +#define IWDG_RVU ((uint8_t)0x02) /* Watchdog counter reload value update */ + +/******************************************************************************/ +/* Inter-integrated Circuit Interface */ +/******************************************************************************/ + +/******************* Bit definition for I2C_CTLR1 register ********************/ +#define I2C_CTLR1_PE ((uint16_t)0x0001) /* Peripheral Enable */ +#define I2C_CTLR1_SMBUS ((uint16_t)0x0002) /* SMBus Mode */ +#define I2C_CTLR1_SMBTYPE ((uint16_t)0x0008) /* SMBus Type */ +#define I2C_CTLR1_ENARP ((uint16_t)0x0010) /* ARP Enable */ +#define I2C_CTLR1_ENPEC ((uint16_t)0x0020) /* PEC Enable */ +#define I2C_CTLR1_ENGC ((uint16_t)0x0040) /* General Call Enable */ +#define I2C_CTLR1_NOSTRETCH ((uint16_t)0x0080) /* Clock Stretching Disable (Slave mode) */ +#define I2C_CTLR1_START ((uint16_t)0x0100) /* Start Generation */ +#define I2C_CTLR1_STOP ((uint16_t)0x0200) /* Stop Generation */ +#define I2C_CTLR1_ACK ((uint16_t)0x0400) /* Acknowledge Enable */ +#define I2C_CTLR1_POS ((uint16_t)0x0800) /* Acknowledge/PEC Position (for data reception) */ +#define I2C_CTLR1_PEC ((uint16_t)0x1000) /* Packet Error Checking */ +#define I2C_CTLR1_ALERT ((uint16_t)0x2000) /* SMBus Alert */ +#define I2C_CTLR1_SWRST ((uint16_t)0x8000) /* Software Reset */ + +/******************* Bit definition for I2C_CTLR2 register ********************/ +#define I2C_CTLR2_FREQ ((uint16_t)0x003F) /* FREQ[5:0] bits (Peripheral Clock Frequency) */ +#define I2C_CTLR2_FREQ_0 ((uint16_t)0x0001) /* Bit 0 */ +#define I2C_CTLR2_FREQ_1 ((uint16_t)0x0002) /* Bit 1 */ +#define I2C_CTLR2_FREQ_2 ((uint16_t)0x0004) /* Bit 2 */ +#define I2C_CTLR2_FREQ_3 ((uint16_t)0x0008) /* Bit 3 */ +#define I2C_CTLR2_FREQ_4 ((uint16_t)0x0010) /* Bit 4 */ +#define I2C_CTLR2_FREQ_5 ((uint16_t)0x0020) /* Bit 5 */ + +#define I2C_CTLR2_ITERREN ((uint16_t)0x0100) /* Error Interrupt Enable */ +#define I2C_CTLR2_ITEVTEN ((uint16_t)0x0200) /* Event Interrupt Enable */ +#define I2C_CTLR2_ITBUFEN ((uint16_t)0x0400) /* Buffer Interrupt Enable */ +#define I2C_CTLR2_DMAEN ((uint16_t)0x0800) /* DMA Requests Enable */ +#define I2C_CTLR2_LAST ((uint16_t)0x1000) /* DMA Last Transfer */ + +/******************* Bit definition for I2C_OADDR1 register *******************/ +#define I2C_OADDR1_ADD1_7 ((uint16_t)0x00FE) /* Interface Address */ +#define I2C_OADDR1_ADD8_9 ((uint16_t)0x0300) /* Interface Address */ + +#define I2C_OADDR1_ADD0 ((uint16_t)0x0001) /* Bit 0 */ +#define I2C_OADDR1_ADD1 ((uint16_t)0x0002) /* Bit 1 */ +#define I2C_OADDR1_ADD2 ((uint16_t)0x0004) /* Bit 2 */ +#define I2C_OADDR1_ADD3 ((uint16_t)0x0008) /* Bit 3 */ +#define I2C_OADDR1_ADD4 ((uint16_t)0x0010) /* Bit 4 */ +#define I2C_OADDR1_ADD5 ((uint16_t)0x0020) /* Bit 5 */ +#define I2C_OADDR1_ADD6 ((uint16_t)0x0040) /* Bit 6 */ +#define I2C_OADDR1_ADD7 ((uint16_t)0x0080) /* Bit 7 */ +#define I2C_OADDR1_ADD8 ((uint16_t)0x0100) /* Bit 8 */ +#define I2C_OADDR1_ADD9 ((uint16_t)0x0200) /* Bit 9 */ + +#define I2C_OADDR1_ADDMODE ((uint16_t)0x8000) /* Addressing Mode (Slave mode) */ + +/******************* Bit definition for I2C_OADDR2 register *******************/ +#define I2C_OADDR2_ENDUAL ((uint8_t)0x01) /* Dual addressing mode enable */ +#define I2C_OADDR2_ADD2 ((uint8_t)0xFE) /* Interface address */ + +/******************** Bit definition for I2C_DATAR register ********************/ +#define I2C_DR_DATAR ((uint8_t)0xFF) /* 8-bit Data Register */ + +/******************* Bit definition for I2C_STAR1 register ********************/ +#define I2C_STAR1_SB ((uint16_t)0x0001) /* Start Bit (Master mode) */ +#define I2C_STAR1_ADDR ((uint16_t)0x0002) /* Address sent (master mode)/matched (slave mode) */ +#define I2C_STAR1_BTF ((uint16_t)0x0004) /* Byte Transfer Finished */ +#define I2C_STAR1_ADD10 ((uint16_t)0x0008) /* 10-bit header sent (Master mode) */ +#define I2C_STAR1_STOPF ((uint16_t)0x0010) /* Stop detection (Slave mode) */ +#define I2C_STAR1_RXNE ((uint16_t)0x0040) /* Data Register not Empty (receivers) */ +#define I2C_STAR1_TXE ((uint16_t)0x0080) /* Data Register Empty (transmitters) */ +#define I2C_STAR1_BERR ((uint16_t)0x0100) /* Bus Error */ +#define I2C_STAR1_ARLO ((uint16_t)0x0200) /* Arbitration Lost (master mode) */ +#define I2C_STAR1_AF ((uint16_t)0x0400) /* Acknowledge Failure */ +#define I2C_STAR1_OVR ((uint16_t)0x0800) /* Overrun/Underrun */ +#define I2C_STAR1_PECERR ((uint16_t)0x1000) /* PEC Error in reception */ +#define I2C_STAR1_TIMEOUT ((uint16_t)0x4000) /* Timeout or Tlow Error */ +#define I2C_STAR1_SMBALERT ((uint16_t)0x8000) /* SMBus Alert */ + +/******************* Bit definition for I2C_STAR2 register ********************/ +#define I2C_STAR2_MSL ((uint16_t)0x0001) /* Master/Slave */ +#define I2C_STAR2_BUSY ((uint16_t)0x0002) /* Bus Busy */ +#define I2C_STAR2_TRA ((uint16_t)0x0004) /* Transmitter/Receiver */ +#define I2C_STAR2_GENCALL ((uint16_t)0x0010) /* General Call Address (Slave mode) */ +#define I2C_STAR2_SMBDEFAULT ((uint16_t)0x0020) /* SMBus Device Default Address (Slave mode) */ +#define I2C_STAR2_SMBHOST ((uint16_t)0x0040) /* SMBus Host Header (Slave mode) */ +#define I2C_STAR2_DUALF ((uint16_t)0x0080) /* Dual Flag (Slave mode) */ +#define I2C_STAR2_PEC ((uint16_t)0xFF00) /* Packet Error Checking Register */ + +/******************* Bit definition for I2C_CKCFGR register ********************/ +#define I2C_CKCFGR_CCR ((uint16_t)0x0FFF) /* Clock Control Register in Fast/Standard mode (Master mode) */ +#define I2C_CKCFGR_DUTY ((uint16_t)0x4000) /* Fast Mode Duty Cycle */ +#define I2C_CKCFGR_FS ((uint16_t)0x8000) /* I2C Master Mode Selection */ + +/****************** Bit definition for I2C_RTR register *******************/ +#define I2C_RTR_TRISE ((uint8_t)0x3F) /* Maximum Rise Time in Fast/Standard mode (Master mode) */ + + +/******************************************************************************/ +/* Power Control */ +/******************************************************************************/ + +/******************** Bit definition for PWR_CTLR register ********************/ +#define PWR_CTLR_LPDS ((uint16_t)0x0001) /* Low-Power Deepsleep */ +#define PWR_CTLR_PDDS ((uint16_t)0x0002) /* Power Down Deepsleep */ +#define PWR_CTLR_CWUF ((uint16_t)0x0004) /* Clear Wakeup Flag */ +#define PWR_CTLR_CSBF ((uint16_t)0x0008) /* Clear Standby Flag */ +#define PWR_CTLR_PVDE ((uint16_t)0x0010) /* Power Voltage Detector Enable */ + +#define PWR_CTLR_PLS ((uint16_t)0x00E0) /* PLS[2:0] bits (PVD Level Selection) */ +#define PWR_CTLR_PLS_0 ((uint16_t)0x0020) /* Bit 0 */ +#define PWR_CTLR_PLS_1 ((uint16_t)0x0040) /* Bit 1 */ +#define PWR_CTLR_PLS_2 ((uint16_t)0x0080) /* Bit 2 */ + +#define PWR_CTLR_PLS_2V2 ((uint16_t)0x0000) /* PVD level 2.2V */ +#define PWR_CTLR_PLS_2V3 ((uint16_t)0x0020) /* PVD level 2.3V */ +#define PWR_CTLR_PLS_2V4 ((uint16_t)0x0040) /* PVD level 2.4V */ +#define PWR_CTLR_PLS_2V5 ((uint16_t)0x0060) /* PVD level 2.5V */ +#define PWR_CTLR_PLS_2V6 ((uint16_t)0x0080) /* PVD level 2.6V */ +#define PWR_CTLR_PLS_2V7 ((uint16_t)0x00A0) /* PVD level 2.7V */ +#define PWR_CTLR_PLS_2V8 ((uint16_t)0x00C0) /* PVD level 2.8V */ +#define PWR_CTLR_PLS_2V9 ((uint16_t)0x00E0) /* PVD level 2.9V */ + +#define PWR_CTLR_DBP ((uint16_t)0x0100) /* Disable Backup Domain write protection */ + + +/******************* Bit definition for PWR_CSR register ********************/ +#define PWR_CSR_WUF ((uint16_t)0x0001) /* Wakeup Flag */ +#define PWR_CSR_SBF ((uint16_t)0x0002) /* Standby Flag */ +#define PWR_CSR_PVDO ((uint16_t)0x0004) /* PVD Output */ +#define PWR_CSR_EWUP ((uint16_t)0x0100) /* Enable WKUP pin */ + + + +/******************************************************************************/ +/* Reset and Clock Control */ +/******************************************************************************/ + +/******************** Bit definition for RCC_CTLR register ********************/ +#define RCC_HSION ((uint32_t)0x00000001) /* Internal High Speed clock enable */ +#define RCC_HSIRDY ((uint32_t)0x00000002) /* Internal High Speed clock ready flag */ +#define RCC_HSITRIM ((uint32_t)0x000000F8) /* Internal High Speed clock trimming */ +#define RCC_HSICAL ((uint32_t)0x0000FF00) /* Internal High Speed clock Calibration */ +#define RCC_HSEON ((uint32_t)0x00010000) /* External High Speed clock enable */ +#define RCC_HSERDY ((uint32_t)0x00020000) /* External High Speed clock ready flag */ +#define RCC_HSEBYP ((uint32_t)0x00040000) /* External High Speed clock Bypass */ +#define RCC_CSSON ((uint32_t)0x00080000) /* Clock Security System enable */ +#define RCC_PLLON ((uint32_t)0x01000000) /* PLL enable */ +#define RCC_PLLRDY ((uint32_t)0x02000000) /* PLL clock ready flag */ + + +/******************* Bit definition for RCC_CFGR0 register *******************/ +#define RCC_SW ((uint32_t)0x00000003) /* SW[1:0] bits (System clock Switch) */ +#define RCC_SW_0 ((uint32_t)0x00000001) /* Bit 0 */ +#define RCC_SW_1 ((uint32_t)0x00000002) /* Bit 1 */ + +#define RCC_SW_HSI ((uint32_t)0x00000000) /* HSI selected as system clock */ +#define RCC_SW_HSE ((uint32_t)0x00000001) /* HSE selected as system clock */ +#define RCC_SW_PLL ((uint32_t)0x00000002) /* PLL selected as system clock */ + +#define RCC_SWS ((uint32_t)0x0000000C) /* SWS[1:0] bits (System Clock Switch Status) */ +#define RCC_SWS_0 ((uint32_t)0x00000004) /* Bit 0 */ +#define RCC_SWS_1 ((uint32_t)0x00000008) /* Bit 1 */ + +#define RCC_SWS_HSI ((uint32_t)0x00000000) /* HSI oscillator used as system clock */ +#define RCC_SWS_HSE ((uint32_t)0x00000004) /* HSE oscillator used as system clock */ +#define RCC_SWS_PLL ((uint32_t)0x00000008) /* PLL used as system clock */ + +#define RCC_HPRE ((uint32_t)0x000000F0) /* HPRE[3:0] bits (AHB prescaler) */ +#define RCC_HPRE_0 ((uint32_t)0x00000010) /* Bit 0 */ +#define RCC_HPRE_1 ((uint32_t)0x00000020) /* Bit 1 */ +#define RCC_HPRE_2 ((uint32_t)0x00000040) /* Bit 2 */ +#define RCC_HPRE_3 ((uint32_t)0x00000080) /* Bit 3 */ + +#define RCC_HPRE_DIV1 ((uint32_t)0x00000000) /* SYSCLK not divided */ +#define RCC_HPRE_DIV2 ((uint32_t)0x00000080) /* SYSCLK divided by 2 */ +#define RCC_HPRE_DIV4 ((uint32_t)0x00000090) /* SYSCLK divided by 4 */ +#define RCC_HPRE_DIV8 ((uint32_t)0x000000A0) /* SYSCLK divided by 8 */ +#define RCC_HPRE_DIV16 ((uint32_t)0x000000B0) /* SYSCLK divided by 16 */ +#define RCC_HPRE_DIV64 ((uint32_t)0x000000C0) /* SYSCLK divided by 64 */ +#define RCC_HPRE_DIV128 ((uint32_t)0x000000D0) /* SYSCLK divided by 128 */ +#define RCC_HPRE_DIV256 ((uint32_t)0x000000E0) /* SYSCLK divided by 256 */ +#define RCC_HPRE_DIV512 ((uint32_t)0x000000F0) /* SYSCLK divided by 512 */ + +#define RCC_PPRE1 ((uint32_t)0x00000700) /* PRE1[2:0] bits (APB1 prescaler) */ +#define RCC_PPRE1_0 ((uint32_t)0x00000100) /* Bit 0 */ +#define RCC_PPRE1_1 ((uint32_t)0x00000200) /* Bit 1 */ +#define RCC_PPRE1_2 ((uint32_t)0x00000400) /* Bit 2 */ + +#define RCC_PPRE1_DIV1 ((uint32_t)0x00000000) /* HCLK not divided */ +#define RCC_PPRE1_DIV2 ((uint32_t)0x00000400) /* HCLK divided by 2 */ +#define RCC_PPRE1_DIV4 ((uint32_t)0x00000500) /* HCLK divided by 4 */ +#define RCC_PPRE1_DIV8 ((uint32_t)0x00000600) /* HCLK divided by 8 */ +#define RCC_PPRE1_DIV16 ((uint32_t)0x00000700) /* HCLK divided by 16 */ + +#define RCC_PPRE2 ((uint32_t)0x00003800) /* PRE2[2:0] bits (APB2 prescaler) */ +#define RCC_PPRE2_0 ((uint32_t)0x00000800) /* Bit 0 */ +#define RCC_PPRE2_1 ((uint32_t)0x00001000) /* Bit 1 */ +#define RCC_PPRE2_2 ((uint32_t)0x00002000) /* Bit 2 */ + +#define RCC_PPRE2_DIV1 ((uint32_t)0x00000000) /* HCLK not divided */ +#define RCC_PPRE2_DIV2 ((uint32_t)0x00002000) /* HCLK divided by 2 */ +#define RCC_PPRE2_DIV4 ((uint32_t)0x00002800) /* HCLK divided by 4 */ +#define RCC_PPRE2_DIV8 ((uint32_t)0x00003000) /* HCLK divided by 8 */ +#define RCC_PPRE2_DIV16 ((uint32_t)0x00003800) /* HCLK divided by 16 */ + +#define RCC_ADCPRE ((uint32_t)0x0000C000) /* ADCPRE[1:0] bits (ADC prescaler) */ +#define RCC_ADCPRE_0 ((uint32_t)0x00004000) /* Bit 0 */ +#define RCC_ADCPRE_1 ((uint32_t)0x00008000) /* Bit 1 */ + +#define RCC_ADCPRE_DIV2 ((uint32_t)0x00000000) /* PCLK2 divided by 2 */ +#define RCC_ADCPRE_DIV4 ((uint32_t)0x00004000) /* PCLK2 divided by 4 */ +#define RCC_ADCPRE_DIV6 ((uint32_t)0x00008000) /* PCLK2 divided by 6 */ +#define RCC_ADCPRE_DIV8 ((uint32_t)0x0000C000) /* PCLK2 divided by 8 */ + +#define RCC_PLLSRC ((uint32_t)0x00010000) /* PLL entry clock source */ + +#define RCC_PLLXTPRE ((uint32_t)0x00020000) /* HSE divider for PLL entry */ + +#define RCC_PLLMULL ((uint32_t)0x003C0000) /* PLLMUL[3:0] bits (PLL multiplication factor) */ +#define RCC_PLLMULL_0 ((uint32_t)0x00040000) /* Bit 0 */ +#define RCC_PLLMULL_1 ((uint32_t)0x00080000) /* Bit 1 */ +#define RCC_PLLMULL_2 ((uint32_t)0x00100000) /* Bit 2 */ +#define RCC_PLLMULL_3 ((uint32_t)0x00200000) /* Bit 3 */ + +#define RCC_PLLSRC_HSI_Div2 ((uint32_t)0x00000000) /* HSI clock divided by 2 selected as PLL entry clock source */ +#define RCC_PLLSRC_HSE ((uint32_t)0x00010000) /* HSE clock selected as PLL entry clock source */ + +#define RCC_PLLXTPRE_HSE ((uint32_t)0x00000000) /* HSE clock not divided for PLL entry */ +#define RCC_PLLXTPRE_HSE_Div2 ((uint32_t)0x00020000) /* HSE clock divided by 2 for PLL entry */ + +/* for other CH32V30x */ +#define RCC_PLLMULL2 ((uint32_t)0x00000000) /* PLL input clock*2 */ +#define RCC_PLLMULL3 ((uint32_t)0x00040000) /* PLL input clock*3 */ +#define RCC_PLLMULL4 ((uint32_t)0x00080000) /* PLL input clock*4 */ +#define RCC_PLLMULL5 ((uint32_t)0x000C0000) /* PLL input clock*5 */ +#define RCC_PLLMULL6 ((uint32_t)0x00100000) /* PLL input clock*6 */ +#define RCC_PLLMULL7 ((uint32_t)0x00140000) /* PLL input clock*7 */ +#define RCC_PLLMULL8 ((uint32_t)0x00180000) /* PLL input clock*8 */ +#define RCC_PLLMULL9 ((uint32_t)0x001C0000) /* PLL input clock*9 */ +#define RCC_PLLMULL10 ((uint32_t)0x00200000) /* PLL input clock10 */ +#define RCC_PLLMULL11 ((uint32_t)0x00240000) /* PLL input clock*11 */ +#define RCC_PLLMULL12 ((uint32_t)0x00280000) /* PLL input clock*12 */ +#define RCC_PLLMULL13 ((uint32_t)0x002C0000) /* PLL input clock*13 */ +#define RCC_PLLMULL14 ((uint32_t)0x00300000) /* PLL input clock*14 */ +#define RCC_PLLMULL15 ((uint32_t)0x00340000) /* PLL input clock*15 */ +#define RCC_PLLMULL16 ((uint32_t)0x00380000) /* PLL input clock*16 */ +#define RCC_PLLMULL18 ((uint32_t)0x003C0000) /* PLL input clock*18 */ +/* for CH32V307 */ +#define RCC_PLLMULL18_EXTEN ((uint32_t)0x00000000) /* PLL input clock*18 */ +#define RCC_PLLMULL3_EXTEN ((uint32_t)0x00040000) /* PLL input clock*3 */ +#define RCC_PLLMULL4_EXTEN ((uint32_t)0x00080000) /* PLL input clock*4 */ +#define RCC_PLLMULL5_EXTEN ((uint32_t)0x000C0000) /* PLL input clock*5 */ +#define RCC_PLLMULL6_EXTEN ((uint32_t)0x00100000) /* PLL input clock*6 */ +#define RCC_PLLMULL7_EXTEN ((uint32_t)0x00140000) /* PLL input clock*7 */ +#define RCC_PLLMULL8_EXTEN ((uint32_t)0x00180000) /* PLL input clock*8 */ +#define RCC_PLLMULL9_EXTEN ((uint32_t)0x001C0000) /* PLL input clock*9 */ +#define RCC_PLLMULL10_EXTEN ((uint32_t)0x00200000) /* PLL input clock10 */ +#define RCC_PLLMULL11_EXTEN ((uint32_t)0x00240000) /* PLL input clock*11 */ +#define RCC_PLLMULL12_EXTEN ((uint32_t)0x00280000) /* PLL input clock*12 */ +#define RCC_PLLMULL13_EXTEN ((uint32_t)0x002C0000) /* PLL input clock*13 */ +#define RCC_PLLMULL14_EXTEN ((uint32_t)0x00300000) /* PLL input clock*14 */ +#define RCC_PLLMULL6_5_EXTEN ((uint32_t)0x00340000) /* PLL input clock*6.5 */ +#define RCC_PLLMULL15_EXTEN ((uint32_t)0x00380000) /* PLL input clock*15 */ +#define RCC_PLLMULL16_EXTEN ((uint32_t)0x003C0000) /* PLL input clock*16 */ + +#define RCC_USBPRE ((uint32_t)0x00400000) /* USB Device prescaler */ + +#define RCC_CFGR0_MCO ((uint32_t)0x07000000) /* MCO[2:0] bits (Microcontroller Clock Output) */ +#define RCC_MCO_0 ((uint32_t)0x01000000) /* Bit 0 */ +#define RCC_MCO_1 ((uint32_t)0x02000000) /* Bit 1 */ +#define RCC_MCO_2 ((uint32_t)0x04000000) /* Bit 2 */ + +#define RCC_MCO_NOCLOCK ((uint32_t)0x00000000) /* No clock */ +#define RCC_CFGR0_MCO_SYSCLK ((uint32_t)0x04000000) /* System clock selected as MCO source */ +#define RCC_CFGR0_MCO_HSI ((uint32_t)0x05000000) /* HSI clock selected as MCO source */ +#define RCC_CFGR0_MCO_HSE ((uint32_t)0x06000000) /* HSE clock selected as MCO source */ +#define RCC_CFGR0_MCO_PLL ((uint32_t)0x07000000) /* PLL clock divided by 2 selected as MCO source */ + +/******************* Bit definition for RCC_INTR register ********************/ +#define RCC_LSIRDYF ((uint32_t)0x00000001) /* LSI Ready Interrupt flag */ +#define RCC_LSERDYF ((uint32_t)0x00000002) /* LSE Ready Interrupt flag */ +#define RCC_HSIRDYF ((uint32_t)0x00000004) /* HSI Ready Interrupt flag */ +#define RCC_HSERDYF ((uint32_t)0x00000008) /* HSE Ready Interrupt flag */ +#define RCC_PLLRDYF ((uint32_t)0x00000010) /* PLL Ready Interrupt flag */ +#define RCC_CSSF ((uint32_t)0x00000080) /* Clock Security System Interrupt flag */ +#define RCC_LSIRDYIE ((uint32_t)0x00000100) /* LSI Ready Interrupt Enable */ +#define RCC_LSERDYIE ((uint32_t)0x00000200) /* LSE Ready Interrupt Enable */ +#define RCC_HSIRDYIE ((uint32_t)0x00000400) /* HSI Ready Interrupt Enable */ +#define RCC_HSERDYIE ((uint32_t)0x00000800) /* HSE Ready Interrupt Enable */ +#define RCC_PLLRDYIE ((uint32_t)0x00001000) /* PLL Ready Interrupt Enable */ +#define RCC_LSIRDYC ((uint32_t)0x00010000) /* LSI Ready Interrupt Clear */ +#define RCC_LSERDYC ((uint32_t)0x00020000) /* LSE Ready Interrupt Clear */ +#define RCC_HSIRDYC ((uint32_t)0x00040000) /* HSI Ready Interrupt Clear */ +#define RCC_HSERDYC ((uint32_t)0x00080000) /* HSE Ready Interrupt Clear */ +#define RCC_PLLRDYC ((uint32_t)0x00100000) /* PLL Ready Interrupt Clear */ +#define RCC_CSSC ((uint32_t)0x00800000) /* Clock Security System Interrupt Clear */ + + +/***************** Bit definition for RCC_APB2PRSTR register *****************/ +#define RCC_AFIORST ((uint32_t)0x00000001) /* Alternate Function I/O reset */ +#define RCC_IOPARST ((uint32_t)0x00000004) /* I/O port A reset */ +#define RCC_IOPBRST ((uint32_t)0x00000008) /* I/O port B reset */ +#define RCC_IOPCRST ((uint32_t)0x00000010) /* I/O port C reset */ +#define RCC_IOPDRST ((uint32_t)0x00000020) /* I/O port D reset */ +#define RCC_ADC1RST ((uint32_t)0x00000200) /* ADC 1 interface reset */ + + +#define RCC_ADC2RST ((uint32_t)0x00000400) /* ADC 2 interface reset */ + + +#define RCC_TIM1RST ((uint32_t)0x00000800) /* TIM1 Timer reset */ +#define RCC_SPI1RST ((uint32_t)0x00001000) /* SPI 1 reset */ +#define RCC_USART1RST ((uint32_t)0x00004000) /* USART1 reset */ + +#define RCC_IOPERST ((uint32_t)0x00000040) /* I/O port E reset */ + +/***************** Bit definition for RCC_APB1PRSTR register *****************/ +#define RCC_TIM2RST ((uint32_t)0x00000001) /* Timer 2 reset */ +#define RCC_TIM3RST ((uint32_t)0x00000002) /* Timer 3 reset */ +#define RCC_WWDGRST ((uint32_t)0x00000800) /* Window Watchdog reset */ +#define RCC_USART2RST ((uint32_t)0x00020000) /* USART 2 reset */ +#define RCC_I2C1RST ((uint32_t)0x00200000) /* I2C 1 reset */ + +#define RCC_CAN1RST ((uint32_t)0x02000000) /* CAN1 reset */ + + +#define RCC_BKPRST ((uint32_t)0x08000000) /* Backup interface reset */ +#define RCC_PWRRST ((uint32_t)0x10000000) /* Power interface reset */ + + +#define RCC_TIM4RST ((uint32_t)0x00000004) /* Timer 4 reset */ +#define RCC_SPI2RST ((uint32_t)0x00004000) /* SPI 2 reset */ +#define RCC_USART3RST ((uint32_t)0x00040000) /* USART 3 reset */ +#define RCC_I2C2RST ((uint32_t)0x00400000) /* I2C 2 reset */ + +#define RCC_USBRST ((uint32_t)0x00800000) /* USB Device reset */ + +/****************** Bit definition for RCC_AHBPCENR register ******************/ +#define RCC_DMA1EN ((uint16_t)0x0001) /* DMA1 clock enable */ +#define RCC_SRAMEN ((uint16_t)0x0004) /* SRAM interface clock enable */ +#define RCC_FLITFEN ((uint16_t)0x0010) /* FLITF clock enable */ +#define RCC_CRCEN ((uint16_t)0x0040) /* CRC clock enable */ +#define RCC_USBHD ((uint16_t)0x1000) + +/****************** Bit definition for RCC_APB2PCENR register *****************/ +#define RCC_AFIOEN ((uint32_t)0x00000001) /* Alternate Function I/O clock enable */ +#define RCC_IOPAEN ((uint32_t)0x00000004) /* I/O port A clock enable */ +#define RCC_IOPBEN ((uint32_t)0x00000008) /* I/O port B clock enable */ +#define RCC_IOPCEN ((uint32_t)0x00000010) /* I/O port C clock enable */ +#define RCC_IOPDEN ((uint32_t)0x00000020) /* I/O port D clock enable */ +#define RCC_ADC1EN ((uint32_t)0x00000200) /* ADC 1 interface clock enable */ + +#define RCC_ADC2EN ((uint32_t)0x00000400) /* ADC 2 interface clock enable */ + + +#define RCC_TIM1EN ((uint32_t)0x00000800) /* TIM1 Timer clock enable */ +#define RCC_SPI1EN ((uint32_t)0x00001000) /* SPI 1 clock enable */ +#define RCC_USART1EN ((uint32_t)0x00004000) /* USART1 clock enable */ + +/***************** Bit definition for RCC_APB1PCENR register ******************/ +#define RCC_TIM2EN ((uint32_t)0x00000001) /* Timer 2 clock enabled*/ +#define RCC_TIM3EN ((uint32_t)0x00000002) /* Timer 3 clock enable */ +#define RCC_WWDGEN ((uint32_t)0x00000800) /* Window Watchdog clock enable */ +#define RCC_USART2EN ((uint32_t)0x00020000) /* USART 2 clock enable */ +#define RCC_I2C1EN ((uint32_t)0x00200000) /* I2C 1 clock enable */ + +#define RCC_BKPEN ((uint32_t)0x08000000) /* Backup interface clock enable */ +#define RCC_PWREN ((uint32_t)0x10000000) /* Power interface clock enable */ + + +#define RCC_USBEN ((uint32_t)0x00800000) /* USB Device clock enable */ + +/******************* Bit definition for RCC_BDCTLR register *******************/ +#define RCC_LSEON ((uint32_t)0x00000001) /* External Low Speed oscillator enable */ +#define RCC_LSERDY ((uint32_t)0x00000002) /* External Low Speed oscillator Ready */ +#define RCC_LSEBYP ((uint32_t)0x00000004) /* External Low Speed oscillator Bypass */ + +#define RCC_RTCSEL ((uint32_t)0x00000300) /* RTCSEL[1:0] bits (RTC clock source selection) */ +#define RCC_RTCSEL_0 ((uint32_t)0x00000100) /* Bit 0 */ +#define RCC_RTCSEL_1 ((uint32_t)0x00000200) /* Bit 1 */ + +#define RCC_RTCSEL_NOCLOCK ((uint32_t)0x00000000) /* No clock */ +#define RCC_RTCSEL_LSE ((uint32_t)0x00000100) /* LSE oscillator clock used as RTC clock */ +#define RCC_RTCSEL_LSI ((uint32_t)0x00000200) /* LSI oscillator clock used as RTC clock */ +#define RCC_RTCSEL_HSE ((uint32_t)0x00000300) /* HSE oscillator clock divided by 128 used as RTC clock */ + +#define RCC_RTCEN ((uint32_t)0x00008000) /* RTC clock enable */ +#define RCC_BDRST ((uint32_t)0x00010000) /* Backup domain software reset */ + +/******************* Bit definition for RCC_RSTSCKR register ********************/ +#define RCC_LSION ((uint32_t)0x00000001) /* Internal Low Speed oscillator enable */ +#define RCC_LSIRDY ((uint32_t)0x00000002) /* Internal Low Speed oscillator Ready */ +#define RCC_RMVF ((uint32_t)0x01000000) /* Remove reset flag */ +#define RCC_PINRSTF ((uint32_t)0x04000000) /* PIN reset flag */ +#define RCC_PORRSTF ((uint32_t)0x08000000) /* POR/PDR reset flag */ +#define RCC_SFTRSTF ((uint32_t)0x10000000) /* Software Reset flag */ +#define RCC_IWDGRSTF ((uint32_t)0x20000000) /* Independent Watchdog reset flag */ +#define RCC_WWDGRSTF ((uint32_t)0x40000000) /* Window watchdog reset flag */ +#define RCC_LPWRRSTF ((uint32_t)0x80000000) /* Low-Power reset flag */ + +/******************************************************************************/ +/* RNG */ +/******************************************************************************/ +/******************** Bit definition for RNG_CR register *******************/ +#define RNG_CR_RNGEN ((uint32_t)0x00000004) +#define RNG_CR_IE ((uint32_t)0x00000008) + +/******************** Bit definition for RNG_SR register *******************/ +#define RNG_SR_DRDY ((uint32_t)0x00000001) +#define RNG_SR_CECS ((uint32_t)0x00000002) +#define RNG_SR_SECS ((uint32_t)0x00000004) +#define RNG_SR_CEIS ((uint32_t)0x00000020) +#define RNG_SR_SEIS ((uint32_t)0x00000040) + +/******************************************************************************/ +/* Real-Time Clock */ +/******************************************************************************/ + +/******************* Bit definition for RTC_CTLRH register ********************/ +#define RTC_CTLRH_SECIE ((uint8_t)0x01) /* Second Interrupt Enable */ +#define RTC_CTLRH_ALRIE ((uint8_t)0x02) /* Alarm Interrupt Enable */ +#define RTC_CTLRH_OWIE ((uint8_t)0x04) /* OverfloW Interrupt Enable */ + +/******************* Bit definition for RTC_CTLRL register ********************/ +#define RTC_CTLRL_SECF ((uint8_t)0x01) /* Second Flag */ +#define RTC_CTLRL_ALRF ((uint8_t)0x02) /* Alarm Flag */ +#define RTC_CTLRL_OWF ((uint8_t)0x04) /* OverfloW Flag */ +#define RTC_CTLRL_RSF ((uint8_t)0x08) /* Registers Synchronized Flag */ +#define RTC_CTLRL_CNF ((uint8_t)0x10) /* Configuration Flag */ +#define RTC_CTLRL_RTOFF ((uint8_t)0x20) /* RTC operation OFF */ + +/******************* Bit definition for RTC_PSCH register *******************/ +#define RTC_PSCH_PRL ((uint16_t)0x000F) /* RTC Prescaler Reload Value High */ + +/******************* Bit definition for RTC_PRLL register *******************/ +#define RTC_PSCL_PRL ((uint16_t)0xFFFF) /* RTC Prescaler Reload Value Low */ + +/******************* Bit definition for RTC_DIVH register *******************/ +#define RTC_DIVH_RTC_DIV ((uint16_t)0x000F) /* RTC Clock Divider High */ + +/******************* Bit definition for RTC_DIVL register *******************/ +#define RTC_DIVL_RTC_DIV ((uint16_t)0xFFFF) /* RTC Clock Divider Low */ + +/******************* Bit definition for RTC_CNTH register *******************/ +#define RTC_CNTH_RTC_CNT ((uint16_t)0xFFFF) /* RTC Counter High */ + +/******************* Bit definition for RTC_CNTL register *******************/ +#define RTC_CNTL_RTC_CNT ((uint16_t)0xFFFF) /* RTC Counter Low */ + +/******************* Bit definition for RTC_ALRMH register *******************/ +#define RTC_ALRMH_RTC_ALRM ((uint16_t)0xFFFF) /* RTC Alarm High */ + +/******************* Bit definition for RTC_ALRML register *******************/ +#define RTC_ALRML_RTC_ALRM ((uint16_t)0xFFFF) /* RTC Alarm Low */ + +/******************************************************************************/ +/* Serial Peripheral Interface */ +/******************************************************************************/ + +/******************* Bit definition for SPI_CTLR1 register ********************/ +#define SPI_CTLR1_CPHA ((uint16_t)0x0001) /* Clock Phase */ +#define SPI_CTLR1_CPOL ((uint16_t)0x0002) /* Clock Polarity */ +#define SPI_CTLR1_MSTR ((uint16_t)0x0004) /* Master Selection */ + +#define SPI_CTLR1_BR ((uint16_t)0x0038) /* BR[2:0] bits (Baud Rate Control) */ +#define SPI_CTLR1_BR_0 ((uint16_t)0x0008) /* Bit 0 */ +#define SPI_CTLR1_BR_1 ((uint16_t)0x0010) /* Bit 1 */ +#define SPI_CTLR1_BR_2 ((uint16_t)0x0020) /* Bit 2 */ + +#define SPI_CTLR1_SPE ((uint16_t)0x0040) /* SPI Enable */ +#define SPI_CTLR1_LSBFIRST ((uint16_t)0x0080) /* Frame Format */ +#define SPI_CTLR1_SSI ((uint16_t)0x0100) /* Internal slave select */ +#define SPI_CTLR1_SSM ((uint16_t)0x0200) /* Software slave management */ +#define SPI_CTLR1_RXONLY ((uint16_t)0x0400) /* Receive only */ +#define SPI_CTLR1_DFF ((uint16_t)0x0800) /* Data Frame Format */ +#define SPI_CTLR1_CRCNEXT ((uint16_t)0x1000) /* Transmit CRC next */ +#define SPI_CTLR1_CRCEN ((uint16_t)0x2000) /* Hardware CRC calculation enable */ +#define SPI_CTLR1_BIDIOE ((uint16_t)0x4000) /* Output enable in bidirectional mode */ +#define SPI_CTLR1_BIDIMODE ((uint16_t)0x8000) /* Bidirectional data mode enable */ + +/******************* Bit definition for SPI_CTLR2 register ********************/ +#define SPI_CTLR2_RXDMAEN ((uint8_t)0x01) /* Rx Buffer DMA Enable */ +#define SPI_CTLR2_TXDMAEN ((uint8_t)0x02) /* Tx Buffer DMA Enable */ +#define SPI_CTLR2_SSOE ((uint8_t)0x04) /* SS Output Enable */ +#define SPI_CTLR2_ERRIE ((uint8_t)0x20) /* Error Interrupt Enable */ +#define SPI_CTLR2_RXNEIE ((uint8_t)0x40) /* RX buffer Not Empty Interrupt Enable */ +#define SPI_CTLR2_TXEIE ((uint8_t)0x80) /* Tx buffer Empty Interrupt Enable */ + +/******************** Bit definition for SPI_STATR register ********************/ +#define SPI_STATR_RXNE ((uint8_t)0x01) /* Receive buffer Not Empty */ +#define SPI_STATR_TXE ((uint8_t)0x02) /* Transmit buffer Empty */ +#define SPI_STATR_CHSIDE ((uint8_t)0x04) /* Channel side */ +#define SPI_STATR_UDR ((uint8_t)0x08) /* Underrun flag */ +#define SPI_STATR_CRCERR ((uint8_t)0x10) /* CRC Error flag */ +#define SPI_STATR_MODF ((uint8_t)0x20) /* Mode fault */ +#define SPI_STATR_OVR ((uint8_t)0x40) /* Overrun flag */ +#define SPI_STATR_BSY ((uint8_t)0x80) /* Busy flag */ + +/******************** Bit definition for SPI_DATAR register ********************/ +#define SPI_DATAR_DR ((uint16_t)0xFFFF) /* Data Register */ + +/******************* Bit definition for SPI_CRCR register ******************/ +#define SPI_CRCR_CRCPOLY ((uint16_t)0xFFFF) /* CRC polynomial register */ + +/****************** Bit definition for SPI_RCRCR register ******************/ +#define SPI_RCRCR_RXCRC ((uint16_t)0xFFFF) /* Rx CRC Register */ + +/****************** Bit definition for SPI_TCRCR register ******************/ +#define SPI_TCRCR_TXCRC ((uint16_t)0xFFFF) /* Tx CRC Register */ + +/****************** Bit definition for SPI_I2SCFGR register *****************/ +#define SPI_I2SCFGR_CHLEN ((uint16_t)0x0001) /* Channel length (number of bits per audio channel) */ + +#define SPI_I2SCFGR_DATLEN ((uint16_t)0x0006) /* DATLEN[1:0] bits (Data length to be transferred) */ +#define SPI_I2SCFGR_DATLEN_0 ((uint16_t)0x0002) /* Bit 0 */ +#define SPI_I2SCFGR_DATLEN_1 ((uint16_t)0x0004) /* Bit 1 */ + +#define SPI_I2SCFGR_CKPOL ((uint16_t)0x0008) /* steady state clock polarity */ + +#define SPI_I2SCFGR_I2SSTD ((uint16_t)0x0030) /* I2SSTD[1:0] bits (I2S standard selection) */ +#define SPI_I2SCFGR_I2SSTD_0 ((uint16_t)0x0010) /* Bit 0 */ +#define SPI_I2SCFGR_I2SSTD_1 ((uint16_t)0x0020) /* Bit 1 */ + +#define SPI_I2SCFGR_PCMSYNC ((uint16_t)0x0080) /* PCM frame synchronization */ + +#define SPI_I2SCFGR_I2SCFG ((uint16_t)0x0300) /* I2SCFG[1:0] bits (I2S configuration mode) */ +#define SPI_I2SCFGR_I2SCFG_0 ((uint16_t)0x0100) /* Bit 0 */ +#define SPI_I2SCFGR_I2SCFG_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define SPI_I2SCFGR_I2SE ((uint16_t)0x0400) /* I2S Enable */ +#define SPI_I2SCFGR_I2SMOD ((uint16_t)0x0800) /* I2S mode selection */ + +/****************** Bit definition for SPI_I2SPR register *******************/ +#define SPI_I2SPR_I2SDIV ((uint16_t)0x00FF) /* I2S Linear prescaler */ +#define SPI_I2SPR_ODD ((uint16_t)0x0100) /* Odd factor for the prescaler */ +#define SPI_I2SPR_MCKOE ((uint16_t)0x0200) /* Master Clock Output Enable */ + +/******************************************************************************/ +/* TIM */ +/******************************************************************************/ + +/******************* Bit definition for TIM_CTLR1 register ********************/ +#define TIM_CEN ((uint16_t)0x0001) /* Counter enable */ +#define TIM_UDIS ((uint16_t)0x0002) /* Update disable */ +#define TIM_URS ((uint16_t)0x0004) /* Update request source */ +#define TIM_OPM ((uint16_t)0x0008) /* One pulse mode */ +#define TIM_DIR ((uint16_t)0x0010) /* Direction */ + +#define TIM_CMS ((uint16_t)0x0060) /* CMS[1:0] bits (Center-aligned mode selection) */ +#define TIM_CMS_0 ((uint16_t)0x0020) /* Bit 0 */ +#define TIM_CMS_1 ((uint16_t)0x0040) /* Bit 1 */ + +#define TIM_ARPE ((uint16_t)0x0080) /* Auto-reload preload enable */ + +#define TIM_CTLR1_CKD ((uint16_t)0x0300) /* CKD[1:0] bits (clock division) */ +#define TIM_CKD_0 ((uint16_t)0x0100) /* Bit 0 */ +#define TIM_CKD_1 ((uint16_t)0x0200) /* Bit 1 */ + +/******************* Bit definition for TIM_CTLR2 register ********************/ +#define TIM_CCPC ((uint16_t)0x0001) /* Capture/Compare Preloaded Control */ +#define TIM_CCUS ((uint16_t)0x0004) /* Capture/Compare Control Update Selection */ +#define TIM_CCDS ((uint16_t)0x0008) /* Capture/Compare DMA Selection */ + +#define TIM_MMS ((uint16_t)0x0070) /* MMS[2:0] bits (Master Mode Selection) */ +#define TIM_MMS_0 ((uint16_t)0x0010) /* Bit 0 */ +#define TIM_MMS_1 ((uint16_t)0x0020) /* Bit 1 */ +#define TIM_MMS_2 ((uint16_t)0x0040) /* Bit 2 */ + +#define TIM_TI1S ((uint16_t)0x0080) /* TI1 Selection */ +#define TIM_OIS1 ((uint16_t)0x0100) /* Output Idle state 1 (OC1 output) */ +#define TIM_OIS1N ((uint16_t)0x0200) /* Output Idle state 1 (OC1N output) */ +#define TIM_OIS2 ((uint16_t)0x0400) /* Output Idle state 2 (OC2 output) */ +#define TIM_OIS2N ((uint16_t)0x0800) /* Output Idle state 2 (OC2N output) */ +#define TIM_OIS3 ((uint16_t)0x1000) /* Output Idle state 3 (OC3 output) */ +#define TIM_OIS3N ((uint16_t)0x2000) /* Output Idle state 3 (OC3N output) */ +#define TIM_OIS4 ((uint16_t)0x4000) /* Output Idle state 4 (OC4 output) */ + +/******************* Bit definition for TIM_SMCFGR register *******************/ +#define TIM_SMS ((uint16_t)0x0007) /* SMS[2:0] bits (Slave mode selection) */ +#define TIM_SMS_0 ((uint16_t)0x0001) /* Bit 0 */ +#define TIM_SMS_1 ((uint16_t)0x0002) /* Bit 1 */ +#define TIM_SMS_2 ((uint16_t)0x0004) /* Bit 2 */ + +#define TIM_TS ((uint16_t)0x0070) /* TS[2:0] bits (Trigger selection) */ +#define TIM_TS_0 ((uint16_t)0x0010) /* Bit 0 */ +#define TIM_TS_1 ((uint16_t)0x0020) /* Bit 1 */ +#define TIM_TS_2 ((uint16_t)0x0040) /* Bit 2 */ + +#define TIM_MSM ((uint16_t)0x0080) /* Master/slave mode */ + +#define TIM_ETF ((uint16_t)0x0F00) /* ETF[3:0] bits (External trigger filter) */ +#define TIM_ETF_0 ((uint16_t)0x0100) /* Bit 0 */ +#define TIM_ETF_1 ((uint16_t)0x0200) /* Bit 1 */ +#define TIM_ETF_2 ((uint16_t)0x0400) /* Bit 2 */ +#define TIM_ETF_3 ((uint16_t)0x0800) /* Bit 3 */ + +#define TIM_ETPS ((uint16_t)0x3000) /* ETPS[1:0] bits (External trigger prescaler) */ +#define TIM_ETPS_0 ((uint16_t)0x1000) /* Bit 0 */ +#define TIM_ETPS_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define TIM_ECE ((uint16_t)0x4000) /* External clock enable */ +#define TIM_ETP ((uint16_t)0x8000) /* External trigger polarity */ + +/******************* Bit definition for TIM_DMAINTENR register *******************/ +#define TIM_UIE ((uint16_t)0x0001) /* Update interrupt enable */ +#define TIM_CC1IE ((uint16_t)0x0002) /* Capture/Compare 1 interrupt enable */ +#define TIM_CC2IE ((uint16_t)0x0004) /* Capture/Compare 2 interrupt enable */ +#define TIM_CC3IE ((uint16_t)0x0008) /* Capture/Compare 3 interrupt enable */ +#define TIM_CC4IE ((uint16_t)0x0010) /* Capture/Compare 4 interrupt enable */ +#define TIM_COMIE ((uint16_t)0x0020) /* COM interrupt enable */ +#define TIM_TIE ((uint16_t)0x0040) /* Trigger interrupt enable */ +#define TIM_BIE ((uint16_t)0x0080) /* Break interrupt enable */ +#define TIM_UDE ((uint16_t)0x0100) /* Update DMA request enable */ +#define TIM_CC1DE ((uint16_t)0x0200) /* Capture/Compare 1 DMA request enable */ +#define TIM_CC2DE ((uint16_t)0x0400) /* Capture/Compare 2 DMA request enable */ +#define TIM_CC3DE ((uint16_t)0x0800) /* Capture/Compare 3 DMA request enable */ +#define TIM_CC4DE ((uint16_t)0x1000) /* Capture/Compare 4 DMA request enable */ +#define TIM_COMDE ((uint16_t)0x2000) /* COM DMA request enable */ +#define TIM_TDE ((uint16_t)0x4000) /* Trigger DMA request enable */ + +/******************** Bit definition for TIM_INTFR register ********************/ +#define TIM_UIF ((uint16_t)0x0001) /* Update interrupt Flag */ +#define TIM_CC1IF ((uint16_t)0x0002) /* Capture/Compare 1 interrupt Flag */ +#define TIM_CC2IF ((uint16_t)0x0004) /* Capture/Compare 2 interrupt Flag */ +#define TIM_CC3IF ((uint16_t)0x0008) /* Capture/Compare 3 interrupt Flag */ +#define TIM_CC4IF ((uint16_t)0x0010) /* Capture/Compare 4 interrupt Flag */ +#define TIM_COMIF ((uint16_t)0x0020) /* COM interrupt Flag */ +#define TIM_TIF ((uint16_t)0x0040) /* Trigger interrupt Flag */ +#define TIM_BIF ((uint16_t)0x0080) /* Break interrupt Flag */ +#define TIM_CC1OF ((uint16_t)0x0200) /* Capture/Compare 1 Overcapture Flag */ +#define TIM_CC2OF ((uint16_t)0x0400) /* Capture/Compare 2 Overcapture Flag */ +#define TIM_CC3OF ((uint16_t)0x0800) /* Capture/Compare 3 Overcapture Flag */ +#define TIM_CC4OF ((uint16_t)0x1000) /* Capture/Compare 4 Overcapture Flag */ + +/******************* Bit definition for TIM_SWEVGR register ********************/ +#define TIM_UG ((uint8_t)0x01) /* Update Generation */ +#define TIM_CC1G ((uint8_t)0x02) /* Capture/Compare 1 Generation */ +#define TIM_CC2G ((uint8_t)0x04) /* Capture/Compare 2 Generation */ +#define TIM_CC3G ((uint8_t)0x08) /* Capture/Compare 3 Generation */ +#define TIM_CC4G ((uint8_t)0x10) /* Capture/Compare 4 Generation */ +#define TIM_COMG ((uint8_t)0x20) /* Capture/Compare Control Update Generation */ +#define TIM_TG ((uint8_t)0x40) /* Trigger Generation */ +#define TIM_BG ((uint8_t)0x80) /* Break Generation */ + +/****************** Bit definition for TIM_CHCTLR1 register *******************/ +#define TIM_CC1S ((uint16_t)0x0003) /* CC1S[1:0] bits (Capture/Compare 1 Selection) */ +#define TIM_CC1S_0 ((uint16_t)0x0001) /* Bit 0 */ +#define TIM_CC1S_1 ((uint16_t)0x0002) /* Bit 1 */ + +#define TIM_OC1FE ((uint16_t)0x0004) /* Output Compare 1 Fast enable */ +#define TIM_OC1PE ((uint16_t)0x0008) /* Output Compare 1 Preload enable */ + +#define TIM_OC1M ((uint16_t)0x0070) /* OC1M[2:0] bits (Output Compare 1 Mode) */ +#define TIM_OC1M_0 ((uint16_t)0x0010) /* Bit 0 */ +#define TIM_OC1M_1 ((uint16_t)0x0020) /* Bit 1 */ +#define TIM_OC1M_2 ((uint16_t)0x0040) /* Bit 2 */ + +#define TIM_OC1CE ((uint16_t)0x0080) /* Output Compare 1Clear Enable */ + +#define TIM_CC2S ((uint16_t)0x0300) /* CC2S[1:0] bits (Capture/Compare 2 Selection) */ +#define TIM_CC2S_0 ((uint16_t)0x0100) /* Bit 0 */ +#define TIM_CC2S_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define TIM_OC2FE ((uint16_t)0x0400) /* Output Compare 2 Fast enable */ +#define TIM_OC2PE ((uint16_t)0x0800) /* Output Compare 2 Preload enable */ + +#define TIM_OC2M ((uint16_t)0x7000) /* OC2M[2:0] bits (Output Compare 2 Mode) */ +#define TIM_OC2M_0 ((uint16_t)0x1000) /* Bit 0 */ +#define TIM_OC2M_1 ((uint16_t)0x2000) /* Bit 1 */ +#define TIM_OC2M_2 ((uint16_t)0x4000) /* Bit 2 */ + +#define TIM_OC2CE ((uint16_t)0x8000) /* Output Compare 2 Clear Enable */ + + +#define TIM_IC1PSC ((uint16_t)0x000C) /* IC1PSC[1:0] bits (Input Capture 1 Prescaler) */ +#define TIM_IC1PSC_0 ((uint16_t)0x0004) /* Bit 0 */ +#define TIM_IC1PSC_1 ((uint16_t)0x0008) /* Bit 1 */ + +#define TIM_IC1F ((uint16_t)0x00F0) /* IC1F[3:0] bits (Input Capture 1 Filter) */ +#define TIM_IC1F_0 ((uint16_t)0x0010) /* Bit 0 */ +#define TIM_IC1F_1 ((uint16_t)0x0020) /* Bit 1 */ +#define TIM_IC1F_2 ((uint16_t)0x0040) /* Bit 2 */ +#define TIM_IC1F_3 ((uint16_t)0x0080) /* Bit 3 */ + +#define TIM_IC2PSC ((uint16_t)0x0C00) /* IC2PSC[1:0] bits (Input Capture 2 Prescaler) */ +#define TIM_IC2PSC_0 ((uint16_t)0x0400) /* Bit 0 */ +#define TIM_IC2PSC_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define TIM_IC2F ((uint16_t)0xF000) /* IC2F[3:0] bits (Input Capture 2 Filter) */ +#define TIM_IC2F_0 ((uint16_t)0x1000) /* Bit 0 */ +#define TIM_IC2F_1 ((uint16_t)0x2000) /* Bit 1 */ +#define TIM_IC2F_2 ((uint16_t)0x4000) /* Bit 2 */ +#define TIM_IC2F_3 ((uint16_t)0x8000) /* Bit 3 */ + +/****************** Bit definition for TIM_CHCTLR2 register *******************/ +#define TIM_CC3S ((uint16_t)0x0003) /* CC3S[1:0] bits (Capture/Compare 3 Selection) */ +#define TIM_CC3S_0 ((uint16_t)0x0001) /* Bit 0 */ +#define TIM_CC3S_1 ((uint16_t)0x0002) /* Bit 1 */ + +#define TIM_OC3FE ((uint16_t)0x0004) /* Output Compare 3 Fast enable */ +#define TIM_OC3PE ((uint16_t)0x0008) /* Output Compare 3 Preload enable */ + +#define TIM_OC3M ((uint16_t)0x0070) /* OC3M[2:0] bits (Output Compare 3 Mode) */ +#define TIM_OC3M_0 ((uint16_t)0x0010) /* Bit 0 */ +#define TIM_OC3M_1 ((uint16_t)0x0020) /* Bit 1 */ +#define TIM_OC3M_2 ((uint16_t)0x0040) /* Bit 2 */ + +#define TIM_OC3CE ((uint16_t)0x0080) /* Output Compare 3 Clear Enable */ + +#define TIM_CC4S ((uint16_t)0x0300) /* CC4S[1:0] bits (Capture/Compare 4 Selection) */ +#define TIM_CC4S_0 ((uint16_t)0x0100) /* Bit 0 */ +#define TIM_CC4S_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define TIM_OC4FE ((uint16_t)0x0400) /* Output Compare 4 Fast enable */ +#define TIM_OC4PE ((uint16_t)0x0800) /* Output Compare 4 Preload enable */ + +#define TIM_OC4M ((uint16_t)0x7000) /* OC4M[2:0] bits (Output Compare 4 Mode) */ +#define TIM_OC4M_0 ((uint16_t)0x1000) /* Bit 0 */ +#define TIM_OC4M_1 ((uint16_t)0x2000) /* Bit 1 */ +#define TIM_OC4M_2 ((uint16_t)0x4000) /* Bit 2 */ + +#define TIM_OC4CE ((uint16_t)0x8000) /* Output Compare 4 Clear Enable */ + + +#define TIM_IC3PSC ((uint16_t)0x000C) /* IC3PSC[1:0] bits (Input Capture 3 Prescaler) */ +#define TIM_IC3PSC_0 ((uint16_t)0x0004) /* Bit 0 */ +#define TIM_IC3PSC_1 ((uint16_t)0x0008) /* Bit 1 */ + +#define TIM_IC3F ((uint16_t)0x00F0) /* IC3F[3:0] bits (Input Capture 3 Filter) */ +#define TIM_IC3F_0 ((uint16_t)0x0010) /* Bit 0 */ +#define TIM_IC3F_1 ((uint16_t)0x0020) /* Bit 1 */ +#define TIM_IC3F_2 ((uint16_t)0x0040) /* Bit 2 */ +#define TIM_IC3F_3 ((uint16_t)0x0080) /* Bit 3 */ + +#define TIM_IC4PSC ((uint16_t)0x0C00) /* IC4PSC[1:0] bits (Input Capture 4 Prescaler) */ +#define TIM_IC4PSC_0 ((uint16_t)0x0400) /* Bit 0 */ +#define TIM_IC4PSC_1 ((uint16_t)0x0800) /* Bit 1 */ + +#define TIM_IC4F ((uint16_t)0xF000) /* IC4F[3:0] bits (Input Capture 4 Filter) */ +#define TIM_IC4F_0 ((uint16_t)0x1000) /* Bit 0 */ +#define TIM_IC4F_1 ((uint16_t)0x2000) /* Bit 1 */ +#define TIM_IC4F_2 ((uint16_t)0x4000) /* Bit 2 */ +#define TIM_IC4F_3 ((uint16_t)0x8000) /* Bit 3 */ + +/******************* Bit definition for TIM_CCER register *******************/ +#define TIM_CC1E ((uint16_t)0x0001) /* Capture/Compare 1 output enable */ +#define TIM_CC1P ((uint16_t)0x0002) /* Capture/Compare 1 output Polarity */ +#define TIM_CC1NE ((uint16_t)0x0004) /* Capture/Compare 1 Complementary output enable */ +#define TIM_CC1NP ((uint16_t)0x0008) /* Capture/Compare 1 Complementary output Polarity */ +#define TIM_CC2E ((uint16_t)0x0010) /* Capture/Compare 2 output enable */ +#define TIM_CC2P ((uint16_t)0x0020) /* Capture/Compare 2 output Polarity */ +#define TIM_CC2NE ((uint16_t)0x0040) /* Capture/Compare 2 Complementary output enable */ +#define TIM_CC2NP ((uint16_t)0x0080) /* Capture/Compare 2 Complementary output Polarity */ +#define TIM_CC3E ((uint16_t)0x0100) /* Capture/Compare 3 output enable */ +#define TIM_CC3P ((uint16_t)0x0200) /* Capture/Compare 3 output Polarity */ +#define TIM_CC3NE ((uint16_t)0x0400) /* Capture/Compare 3 Complementary output enable */ +#define TIM_CC3NP ((uint16_t)0x0800) /* Capture/Compare 3 Complementary output Polarity */ +#define TIM_CC4E ((uint16_t)0x1000) /* Capture/Compare 4 output enable */ +#define TIM_CC4P ((uint16_t)0x2000) /* Capture/Compare 4 output Polarity */ +#define TIM_CC4NP ((uint16_t)0x8000) /* Capture/Compare 4 Complementary output Polarity */ + +/******************* Bit definition for TIM_CNT register ********************/ +#define TIM_CNT ((uint16_t)0xFFFF) /* Counter Value */ + +/******************* Bit definition for TIM_PSC register ********************/ +#define TIM_PSC ((uint16_t)0xFFFF) /* Prescaler Value */ + +/******************* Bit definition for TIM_ATRLR register ********************/ +#define TIM_ARR ((uint16_t)0xFFFF) /* actual auto-reload Value */ + +/******************* Bit definition for TIM_RPTCR register ********************/ +#define TIM_REP ((uint8_t)0xFF) /* Repetition Counter Value */ + +/******************* Bit definition for TIM_CH1CVR register *******************/ +#define TIM_CCR1 ((uint16_t)0xFFFF) /* Capture/Compare 1 Value */ + +/******************* Bit definition for TIM_CH2CVR register *******************/ +#define TIM_CCR2 ((uint16_t)0xFFFF) /* Capture/Compare 2 Value */ + +/******************* Bit definition for TIM_CH3CVR register *******************/ +#define TIM_CCR3 ((uint16_t)0xFFFF) /* Capture/Compare 3 Value */ + +/******************* Bit definition for TIM_CH4CVR register *******************/ +#define TIM_CCR4 ((uint16_t)0xFFFF) /* Capture/Compare 4 Value */ + +/******************* Bit definition for TIM_BDTR register *******************/ +#define TIM_DTG ((uint16_t)0x00FF) /* DTG[0:7] bits (Dead-Time Generator set-up) */ +#define TIM_DTG_0 ((uint16_t)0x0001) /* Bit 0 */ +#define TIM_DTG_1 ((uint16_t)0x0002) /* Bit 1 */ +#define TIM_DTG_2 ((uint16_t)0x0004) /* Bit 2 */ +#define TIM_DTG_3 ((uint16_t)0x0008) /* Bit 3 */ +#define TIM_DTG_4 ((uint16_t)0x0010) /* Bit 4 */ +#define TIM_DTG_5 ((uint16_t)0x0020) /* Bit 5 */ +#define TIM_DTG_6 ((uint16_t)0x0040) /* Bit 6 */ +#define TIM_DTG_7 ((uint16_t)0x0080) /* Bit 7 */ + +#define TIM_LOCK ((uint16_t)0x0300) /* LOCK[1:0] bits (Lock Configuration) */ +#define TIM_LOCK_0 ((uint16_t)0x0100) /* Bit 0 */ +#define TIM_LOCK_1 ((uint16_t)0x0200) /* Bit 1 */ + +#define TIM_OSSI ((uint16_t)0x0400) /* Off-State Selection for Idle mode */ +#define TIM_OSSR ((uint16_t)0x0800) /* Off-State Selection for Run mode */ +#define TIM_BKE ((uint16_t)0x1000) /* Break enable */ +#define TIM_BKP ((uint16_t)0x2000) /* Break Polarity */ +#define TIM_AOE ((uint16_t)0x4000) /* Automatic Output enable */ +#define TIM_MOE ((uint16_t)0x8000) /* Main Output enable */ + +/******************* Bit definition for TIM_DMACFGR register ********************/ +#define TIM_DBA ((uint16_t)0x001F) /* DBA[4:0] bits (DMA Base Address) */ +#define TIM_DBA_0 ((uint16_t)0x0001) /* Bit 0 */ +#define TIM_DBA_1 ((uint16_t)0x0002) /* Bit 1 */ +#define TIM_DBA_2 ((uint16_t)0x0004) /* Bit 2 */ +#define TIM_DBA_3 ((uint16_t)0x0008) /* Bit 3 */ +#define TIM_DBA_4 ((uint16_t)0x0010) /* Bit 4 */ + +#define TIM_DBL ((uint16_t)0x1F00) /* DBL[4:0] bits (DMA Burst Length) */ +#define TIM_DBL_0 ((uint16_t)0x0100) /* Bit 0 */ +#define TIM_DBL_1 ((uint16_t)0x0200) /* Bit 1 */ +#define TIM_DBL_2 ((uint16_t)0x0400) /* Bit 2 */ +#define TIM_DBL_3 ((uint16_t)0x0800) /* Bit 3 */ +#define TIM_DBL_4 ((uint16_t)0x1000) /* Bit 4 */ + +/******************* Bit definition for TIM_DMAADR register *******************/ +#define TIM_DMAR_DMAB ((uint16_t)0xFFFF) /* DMA register for burst accesses */ + +/******************************************************************************/ +/* Universal Synchronous Asynchronous Receiver Transmitter */ +/******************************************************************************/ + +/******************* Bit definition for USART_STATR register *******************/ +#define USART_STATR_PE ((uint16_t)0x0001) /* Parity Error */ +#define USART_STATR_FE ((uint16_t)0x0002) /* Framing Error */ +#define USART_STATR_NE ((uint16_t)0x0004) /* Noise Error Flag */ +#define USART_STATR_ORE ((uint16_t)0x0008) /* OverRun Error */ +#define USART_STATR_IDLE ((uint16_t)0x0010) /* IDLE line detected */ +#define USART_STATR_RXNE ((uint16_t)0x0020) /* Read Data Register Not Empty */ +#define USART_STATR_TC ((uint16_t)0x0040) /* Transmission Complete */ +#define USART_STATR_TXE ((uint16_t)0x0080) /* Transmit Data Register Empty */ +#define USART_STATR_LBD ((uint16_t)0x0100) /* LIN Break Detection Flag */ +#define USART_STATR_CTS ((uint16_t)0x0200) /* CTS Flag */ + +/******************* Bit definition for USART_DATAR register *******************/ +#define USART_DATAR_DR ((uint16_t)0x01FF) /* Data value */ + +/****************** Bit definition for USART_BRR register *******************/ +#define USART_BRR_DIV_Fraction ((uint16_t)0x000F) /* Fraction of USARTDIV */ +#define USART_BRR_DIV_Mantissa ((uint16_t)0xFFF0) /* Mantissa of USARTDIV */ + +/****************** Bit definition for USART_CTLR1 register *******************/ +#define USART_CTLR1_SBK ((uint16_t)0x0001) /* Send Break */ +#define USART_CTLR1_RWU ((uint16_t)0x0002) /* Receiver wakeup */ +#define USART_CTLR1_RE ((uint16_t)0x0004) /* Receiver Enable */ +#define USART_CTLR1_TE ((uint16_t)0x0008) /* Transmitter Enable */ +#define USART_CTLR1_IDLEIE ((uint16_t)0x0010) /* IDLE Interrupt Enable */ +#define USART_CTLR1_RXNEIE ((uint16_t)0x0020) /* RXNE Interrupt Enable */ +#define USART_CTLR1_TCIE ((uint16_t)0x0040) /* Transmission Complete Interrupt Enable */ +#define USART_CTLR1_TXEIE ((uint16_t)0x0080) /* PE Interrupt Enable */ +#define USART_CTLR1_PEIE ((uint16_t)0x0100) /* PE Interrupt Enable */ +#define USART_CTLR1_PS ((uint16_t)0x0200) /* Parity Selection */ +#define USART_CTLR1_PCE ((uint16_t)0x0400) /* Parity Control Enable */ +#define USART_CTLR1_WAKE ((uint16_t)0x0800) /* Wakeup method */ +#define USART_CTLR1_M ((uint16_t)0x1000) /* Word length */ +#define USART_CTLR1_UE ((uint16_t)0x2000) /* USART Enable */ +#define USART_CTLR1_OVER8 ((uint16_t)0x8000) /* USART Oversmapling 8-bits */ + +/****************** Bit definition for USART_CTLR2 register *******************/ +#define USART_CTLR2_ADD ((uint16_t)0x000F) /* Address of the USART node */ +#define USART_CTLR2_LBDL ((uint16_t)0x0020) /* LIN Break Detection Length */ +#define USART_CTLR2_LBDIE ((uint16_t)0x0040) /* LIN Break Detection Interrupt Enable */ +#define USART_CTLR2_LBCL ((uint16_t)0x0100) /* Last Bit Clock pulse */ +#define USART_CTLR2_CPHA ((uint16_t)0x0200) /* Clock Phase */ +#define USART_CTLR2_CPOL ((uint16_t)0x0400) /* Clock Polarity */ +#define USART_CTLR2_CLKEN ((uint16_t)0x0800) /* Clock Enable */ + +#define USART_CTLR2_STOP ((uint16_t)0x3000) /* STOP[1:0] bits (STOP bits) */ +#define USART_CTLR2_STOP_0 ((uint16_t)0x1000) /* Bit 0 */ +#define USART_CTLR2_STOP_1 ((uint16_t)0x2000) /* Bit 1 */ + +#define USART_CTLR2_LINEN ((uint16_t)0x4000) /* LIN mode enable */ + +/****************** Bit definition for USART_CTLR3 register *******************/ +#define USART_CTLR3_EIE ((uint16_t)0x0001) /* Error Interrupt Enable */ +#define USART_CTLR3_IREN ((uint16_t)0x0002) /* IrDA mode Enable */ +#define USART_CTLR3_IRLP ((uint16_t)0x0004) /* IrDA Low-Power */ +#define USART_CTLR3_HDSEL ((uint16_t)0x0008) /* Half-Duplex Selection */ +#define USART_CTLR3_NACK ((uint16_t)0x0010) /* Smartcard NACK enable */ +#define USART_CTLR3_SCEN ((uint16_t)0x0020) /* Smartcard mode enable */ +#define USART_CTLR3_DMAR ((uint16_t)0x0040) /* DMA Enable Receiver */ +#define USART_CTLR3_DMAT ((uint16_t)0x0080) /* DMA Enable Transmitter */ +#define USART_CTLR3_RTSE ((uint16_t)0x0100) /* RTS Enable */ +#define USART_CTLR3_CTSE ((uint16_t)0x0200) /* CTS Enable */ +#define USART_CTLR3_CTSIE ((uint16_t)0x0400) /* CTS Interrupt Enable */ +#define USART_CTLR3_ONEBIT ((uint16_t)0x0800) /* One Bit method */ + +/****************** Bit definition for USART_GPR register ******************/ +#define USART_GPR_PSC ((uint16_t)0x00FF) /* PSC[7:0] bits (Prescaler value) */ +#define USART_GPR_PSC_0 ((uint16_t)0x0001) /* Bit 0 */ +#define USART_GPR_PSC_1 ((uint16_t)0x0002) /* Bit 1 */ +#define USART_GPR_PSC_2 ((uint16_t)0x0004) /* Bit 2 */ +#define USART_GPR_PSC_3 ((uint16_t)0x0008) /* Bit 3 */ +#define USART_GPR_PSC_4 ((uint16_t)0x0010) /* Bit 4 */ +#define USART_GPR_PSC_5 ((uint16_t)0x0020) /* Bit 5 */ +#define USART_GPR_PSC_6 ((uint16_t)0x0040) /* Bit 6 */ +#define USART_GPR_PSC_7 ((uint16_t)0x0080) /* Bit 7 */ + +#define USART_GPR_GT ((uint16_t)0xFF00) /* Guard time value */ + +/******************************************************************************/ +/* Window WATCHDOG */ +/******************************************************************************/ + +/******************* Bit definition for WWDG_CTLR register ********************/ +#define WWDG_CTLR_T ((uint8_t)0x7F) /* T[6:0] bits (7-Bit counter (MSB to LSB)) */ +#define WWDG_CTLR_T0 ((uint8_t)0x01) /* Bit 0 */ +#define WWDG_CTLR_T1 ((uint8_t)0x02) /* Bit 1 */ +#define WWDG_CTLR_T2 ((uint8_t)0x04) /* Bit 2 */ +#define WWDG_CTLR_T3 ((uint8_t)0x08) /* Bit 3 */ +#define WWDG_CTLR_T4 ((uint8_t)0x10) /* Bit 4 */ +#define WWDG_CTLR_T5 ((uint8_t)0x20) /* Bit 5 */ +#define WWDG_CTLR_T6 ((uint8_t)0x40) /* Bit 6 */ + +#define WWDG_CTLR_WDGA ((uint8_t)0x80) /* Activation bit */ + +/******************* Bit definition for WWDG_CFGR register *******************/ +#define WWDG_CFGR_W ((uint16_t)0x007F) /* W[6:0] bits (7-bit window value) */ +#define WWDG_CFGR_W0 ((uint16_t)0x0001) /* Bit 0 */ +#define WWDG_CFGR_W1 ((uint16_t)0x0002) /* Bit 1 */ +#define WWDG_CFGR_W2 ((uint16_t)0x0004) /* Bit 2 */ +#define WWDG_CFGR_W3 ((uint16_t)0x0008) /* Bit 3 */ +#define WWDG_CFGR_W4 ((uint16_t)0x0010) /* Bit 4 */ +#define WWDG_CFGR_W5 ((uint16_t)0x0020) /* Bit 5 */ +#define WWDG_CFGR_W6 ((uint16_t)0x0040) /* Bit 6 */ + +#define WWDG_CFGR_WDGTB ((uint16_t)0x0180) /* WDGTB[1:0] bits (Timer Base) */ +#define WWDG_CFGR_WDGTB0 ((uint16_t)0x0080) /* Bit 0 */ +#define WWDG_CFGR_WDGTB1 ((uint16_t)0x0100) /* Bit 1 */ + +#define WWDG_CFGR_EWI ((uint16_t)0x0200) /* Early Wakeup Interrupt */ + +/******************* Bit definition for WWDG_STATR register ********************/ +#define WWDG_STATR_EWIF ((uint8_t)0x01) /* Early Wakeup Interrupt Flag */ + +/******************************************************************************/ +/* ENHANCED FUNNCTION */ +/******************************************************************************/ + +/**************************** Enhanced register *****************************/ +#define EXTEN_USBD_LS ((uint32_t)0x00000001) /* Bit 0 */ +#define EXTEN_USBD_PU_EN ((uint32_t)0x00000002) /* Bit 1 */ +#define EXTEN_ETH_10M_EN ((uint32_t)0x00000004) /* Bit 2 */ +#define EXTEN_ETH_RGMII_SEL ((uint32_t)0x00000008) /* Bit 3 */ +#define EXTEN_PLL_HSI_PRE ((uint32_t)0x00000010) /* Bit 4 */ +#define EXTEN_LOCKUP_EN ((uint32_t)0x00000040) /* Bit 5 */ +#define EXTEN_LOCKUP_RSTF ((uint32_t)0x00000080) /* Bit 7 */ + +#define EXTEN_ULLDO_TRIM ((uint32_t)0x00000300) /* ULLDO_TRIM[1:0] bits */ +#define EXTEN_ULLDO_TRIM0 ((uint32_t)0x00000100) /* Bit 0 */ +#define EXTEN_ULLDO_TRIM1 ((uint32_t)0x00000200) /* Bit 1 */ + +#define EXTEN_LDO_TRIM ((uint32_t)0x00000C00) /* LDO_TRIM[1:0] bits */ +#define EXTEN_LDO_TRIM0 ((uint32_t)0x00000400) /* Bit 0 */ +#define EXTEN_LDO_TRIM1 ((uint32_t)0x00000800) /* Bit 1 */ + + +/******************************************************************************/ +/* DVP */ +/******************************************************************************/ + +/******************* Bit definition for DVP_CR0 register ********************/ +#define RB_DVP_ENABLE 0x01 // RW, DVP enable +#define RB_DVP_V_POLAR 0x02 // RW, DVP VSYNC polarity control: 1 = invert, 0 = not invert +#define RB_DVP_H_POLAR 0x04 // RW, DVP HSYNC polarity control: 1 = invert, 0 = not invert +#define RB_DVP_P_POLAR 0x08 // RW, DVP PCLK polarity control: 1 = invert, 0 = not invert +#define RB_DVP_MSK_DAT_MOD 0x30 +#define RB_DVP_D8_MOD 0x00 // RW, DVP 8bits data mode +#define RB_DVP_D10_MOD 0x10 // RW, DVP 10bits data mode +#define RB_DVP_D12_MOD 0x20 // RW, DVP 12bits data mode +#define RB_DVP_JPEG 0x40 // RW, DVP JPEG mode + +/******************* Bit definition for DVP_CR1 register ********************/ +#define RB_DVP_DMA_EN 0x01 // RW, DVP dma enable +#define RB_DVP_ALL_CLR 0x02 // RW, DVP all clear, high action +#define RB_DVP_RCV_CLR 0x04 // RW, DVP receive logic clear, high action +#define RB_DVP_BUF_TOG 0x08 // RW, DVP bug toggle by software, write 1 to toggle, ignored writing 0 +#define RB_DVP_CM 0x10 // RW, DVP capture mode +#define RB_DVP_CROP 0x20 // RW, DVP Crop feature enable +#define RB_DVP_FCRC 0xC0 // RW, DVP frame capture rate control: +#define DVP_RATE_100P 0x00 //00 = every frame captured (100%) +#define DVP_RATE_50P 0x40 //01 = every alternate frame captured (50%) +#define DVP_RATE_25P 0x80 //10 = one frame in four frame captured (25%) + +/******************* Bit definition for DVP_IER register ********************/ +#define RB_DVP_IE_STR_FRM 0x01 // RW, DVP frame start interrupt enable +#define RB_DVP_IE_ROW_DONE 0x02 // RW, DVP row received done interrupt enable +#define RB_DVP_IE_FRM_DONE 0x04 // RW, DVP frame received done interrupt enable +#define RB_DVP_IE_FIFO_OV 0x08 // RW, DVP receive fifo overflow interrupt enable +#define RB_DVP_IE_STP_FRM 0x10 // RW, DVP frame stop interrupt enable + +/******************* Bit definition for DVP_IFR register ********************/ +#define RB_DVP_IF_STR_FRM 0x01 // RW1, interrupt flag for DVP frame start +#define RB_DVP_IF_ROW_DONE 0x02 // RW1, interrupt flag for DVP row receive done +#define RB_DVP_IF_FRM_DONE 0x04 // RW1, interrupt flag for DVP frame receive done +#define RB_DVP_IF_FIFO_OV 0x08 // RW1, interrupt flag for DVP receive fifo overflow +#define RB_DVP_IF_STP_FRM 0x10 // RW1, interrupt flag for DVP frame stop + +/******************* Bit definition for DVP_STATUS register ********************/ +#define RB_DVP_FIFO_RDY 0x01 // RO, DVP receive fifo ready +#define RB_DVP_FIFO_FULL 0x02 // RO, DVP receive fifo full +#define RB_DVP_FIFO_OV 0x04 // RO, DVP receive fifo overflow +#define RB_DVP_MSK_FIFO_CNT 0x70 // RO, DVP receive fifo count + + + +#include "ch32v30x_conf.h" + + +#ifdef __cplusplus +} +#endif + +#endif + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_adc.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_adc.h new file mode 100755 index 000000000..21073e554 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_adc.h @@ -0,0 +1,228 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_adc.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* ADC firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_ADC_H +#define __CH32V30x_ADC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +/* ADC Init structure definition */ +typedef struct +{ + uint32_t ADC_Mode; /* Configures the ADC to operate in independent or + dual mode. + This parameter can be a value of @ref ADC_mode */ + + FunctionalState ADC_ScanConvMode; /* Specifies whether the conversion is performed in + Scan (multichannels) or Single (one channel) mode. + This parameter can be set to ENABLE or DISABLE */ + + FunctionalState ADC_ContinuousConvMode; /* Specifies whether the conversion is performed in + Continuous or Single mode. + This parameter can be set to ENABLE or DISABLE. */ + + uint32_t ADC_ExternalTrigConv; /* Defines the external trigger used to start the analog + to digital conversion of regular channels. This parameter + can be a value of @ref ADC_external_trigger_sources_for_regular_channels_conversion */ + + uint32_t ADC_DataAlign; /* Specifies whether the ADC data alignment is left or right. + This parameter can be a value of @ref ADC_data_align */ + + uint8_t ADC_NbrOfChannel; /* Specifies the number of ADC channels that will be converted + using the sequencer for regular channel group. + This parameter must range from 1 to 16. */ + + uint32_t ADC_OutputBuffer; /* Specifies whether the ADC channel output buffer is enabled or disabled. + This parameter can be a value of @ref ADC_OutputBuffer */ + + uint32_t ADC_Pga; /* Specifies the PGA gain multiple. + This parameter can be a value of @ref ADC_Pga */ +}ADC_InitTypeDef; + +/* ADC_mode */ +#define ADC_Mode_Independent ((uint32_t)0x00000000) +#define ADC_Mode_RegInjecSimult ((uint32_t)0x00010000) +#define ADC_Mode_RegSimult_AlterTrig ((uint32_t)0x00020000) +#define ADC_Mode_InjecSimult_FastInterl ((uint32_t)0x00030000) +#define ADC_Mode_InjecSimult_SlowInterl ((uint32_t)0x00040000) +#define ADC_Mode_InjecSimult ((uint32_t)0x00050000) +#define ADC_Mode_RegSimult ((uint32_t)0x00060000) +#define ADC_Mode_FastInterl ((uint32_t)0x00070000) +#define ADC_Mode_SlowInterl ((uint32_t)0x00080000) +#define ADC_Mode_AlterTrig ((uint32_t)0x00090000) + +/* ADC_external_trigger_sources_for_regular_channels_conversion */ +#define ADC_ExternalTrigConv_T1_CC1 ((uint32_t)0x00000000) +#define ADC_ExternalTrigConv_T1_CC2 ((uint32_t)0x00020000) +#define ADC_ExternalTrigConv_T2_CC2 ((uint32_t)0x00060000) +#define ADC_ExternalTrigConv_T3_TRGO ((uint32_t)0x00080000) +#define ADC_ExternalTrigConv_T4_CC4 ((uint32_t)0x000A0000) +#define ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO ((uint32_t)0x000C0000) + +#define ADC_ExternalTrigConv_T1_CC3 ((uint32_t)0x00040000) +#define ADC_ExternalTrigConv_None ((uint32_t)0x000E0000) + +#define ADC_ExternalTrigConv_T3_CC1 ((uint32_t)0x00000000) +#define ADC_ExternalTrigConv_T2_CC3 ((uint32_t)0x00020000) +#define ADC_ExternalTrigConv_T8_CC1 ((uint32_t)0x00060000) +#define ADC_ExternalTrigConv_T8_TRGO ((uint32_t)0x00080000) +#define ADC_ExternalTrigConv_T5_CC1 ((uint32_t)0x000A0000) +#define ADC_ExternalTrigConv_T5_CC3 ((uint32_t)0x000C0000) + + +/* ADC_data_align */ +#define ADC_DataAlign_Right ((uint32_t)0x00000000) +#define ADC_DataAlign_Left ((uint32_t)0x00000800) + +/* ADC_channels */ +#define ADC_Channel_0 ((uint8_t)0x00) +#define ADC_Channel_1 ((uint8_t)0x01) +#define ADC_Channel_2 ((uint8_t)0x02) +#define ADC_Channel_3 ((uint8_t)0x03) +#define ADC_Channel_4 ((uint8_t)0x04) +#define ADC_Channel_5 ((uint8_t)0x05) +#define ADC_Channel_6 ((uint8_t)0x06) +#define ADC_Channel_7 ((uint8_t)0x07) +#define ADC_Channel_8 ((uint8_t)0x08) +#define ADC_Channel_9 ((uint8_t)0x09) +#define ADC_Channel_10 ((uint8_t)0x0A) +#define ADC_Channel_11 ((uint8_t)0x0B) +#define ADC_Channel_12 ((uint8_t)0x0C) +#define ADC_Channel_13 ((uint8_t)0x0D) +#define ADC_Channel_14 ((uint8_t)0x0E) +#define ADC_Channel_15 ((uint8_t)0x0F) +#define ADC_Channel_16 ((uint8_t)0x10) +#define ADC_Channel_17 ((uint8_t)0x11) + +#define ADC_Channel_TempSensor ((uint8_t)ADC_Channel_16) +#define ADC_Channel_Vrefint ((uint8_t)ADC_Channel_17) + +/*ADC_output_buffer*/ +#define ADC_OutputBuffer_Enable ((uint32_t)0x04000000) +#define ADC_OutputBuffer_Disable ((uint32_t)0x00000000) + +/*ADC_pga*/ +#define ADC_Pga_1 ((uint32_t)0x00000000) +#define ADC_Pga_4 ((uint32_t)0x08000000) +#define ADC_Pga_16 ((uint32_t)0x10000000) +#define ADC_Pga_64 ((uint32_t)0x18000000) + +/* ADC_sampling_time */ +#define ADC_SampleTime_1Cycles5 ((uint8_t)0x00) +#define ADC_SampleTime_7Cycles5 ((uint8_t)0x01) +#define ADC_SampleTime_13Cycles5 ((uint8_t)0x02) +#define ADC_SampleTime_28Cycles5 ((uint8_t)0x03) +#define ADC_SampleTime_41Cycles5 ((uint8_t)0x04) +#define ADC_SampleTime_55Cycles5 ((uint8_t)0x05) +#define ADC_SampleTime_71Cycles5 ((uint8_t)0x06) +#define ADC_SampleTime_239Cycles5 ((uint8_t)0x07) + +/* ADC_external_trigger_sources_for_injected_channels_conversion */ +#define ADC_ExternalTrigInjecConv_T2_TRGO ((uint32_t)0x00002000) +#define ADC_ExternalTrigInjecConv_T2_CC1 ((uint32_t)0x00003000) +#define ADC_ExternalTrigInjecConv_T3_CC4 ((uint32_t)0x00004000) +#define ADC_ExternalTrigInjecConv_T4_TRGO ((uint32_t)0x00005000) +#define ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4 ((uint32_t)0x00006000) + +#define ADC_ExternalTrigInjecConv_T1_TRGO ((uint32_t)0x00000000) +#define ADC_ExternalTrigInjecConv_T1_CC4 ((uint32_t)0x00001000) +#define ADC_ExternalTrigInjecConv_None ((uint32_t)0x00007000) + +#define ADC_ExternalTrigInjecConv_T4_CC3 ((uint32_t)0x00002000) +#define ADC_ExternalTrigInjecConv_T8_CC2 ((uint32_t)0x00003000) +#define ADC_ExternalTrigInjecConv_T8_CC4 ((uint32_t)0x00004000) +#define ADC_ExternalTrigInjecConv_T5_TRGO ((uint32_t)0x00005000) +#define ADC_ExternalTrigInjecConv_T5_CC4 ((uint32_t)0x00006000) + + +/* ADC_injected_channel_selection */ +#define ADC_InjectedChannel_1 ((uint8_t)0x14) +#define ADC_InjectedChannel_2 ((uint8_t)0x18) +#define ADC_InjectedChannel_3 ((uint8_t)0x1C) +#define ADC_InjectedChannel_4 ((uint8_t)0x20) + +/* ADC_analog_watchdog_selection */ +#define ADC_AnalogWatchdog_SingleRegEnable ((uint32_t)0x00800200) +#define ADC_AnalogWatchdog_SingleInjecEnable ((uint32_t)0x00400200) +#define ADC_AnalogWatchdog_SingleRegOrInjecEnable ((uint32_t)0x00C00200) +#define ADC_AnalogWatchdog_AllRegEnable ((uint32_t)0x00800000) +#define ADC_AnalogWatchdog_AllInjecEnable ((uint32_t)0x00400000) +#define ADC_AnalogWatchdog_AllRegAllInjecEnable ((uint32_t)0x00C00000) +#define ADC_AnalogWatchdog_None ((uint32_t)0x00000000) + +/* ADC_interrupts_definition */ +#define ADC_IT_EOC ((uint16_t)0x0220) +#define ADC_IT_AWD ((uint16_t)0x0140) +#define ADC_IT_JEOC ((uint16_t)0x0480) + +/* ADC_flags_definition */ +#define ADC_FLAG_AWD ((uint8_t)0x01) +#define ADC_FLAG_EOC ((uint8_t)0x02) +#define ADC_FLAG_JEOC ((uint8_t)0x04) +#define ADC_FLAG_JSTRT ((uint8_t)0x08) +#define ADC_FLAG_STRT ((uint8_t)0x10) + + +void ADC_DeInit(ADC_TypeDef* ADCx); +void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct); +void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct); +void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState); +void ADC_ResetCalibration(ADC_TypeDef* ADCx); +FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx); +void ADC_StartCalibration(ADC_TypeDef* ADCx); +FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx); +void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx); +void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number); +void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); +void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx); +uint32_t ADC_GetDualModeConversionValue(void); +void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv); +void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx); +void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); +void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length); +void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset); +uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel); +void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog); +void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold); +void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel); +void ADC_TempSensorVrefintCmd(FunctionalState NewState); +FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG); +void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG); +ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT); +void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT); +s32 TempSensor_Volt_To_Temper(s32 Value); +void ADC_BufferCmd(ADC_TypeDef* ADCx, FunctionalState NewState); +int16_t Get_CalibrationValue(ADC_TypeDef* ADCx); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_bkp.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_bkp.h new file mode 100755 index 000000000..e36ed0119 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_bkp.h @@ -0,0 +1,97 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_bkp.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* BKP firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_BKP_H +#define __CH32V30x_BKP_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* Tamper_Pin_active_level */ +#define BKP_TamperPinLevel_High ((uint16_t)0x0000) +#define BKP_TamperPinLevel_Low ((uint16_t)0x0001) + +/* RTC_output_source_to_output_on_the_Tamper_pin */ +#define BKP_RTCOutputSource_None ((uint16_t)0x0000) +#define BKP_RTCOutputSource_CalibClock ((uint16_t)0x0080) +#define BKP_RTCOutputSource_Alarm ((uint16_t)0x0100) +#define BKP_RTCOutputSource_Second ((uint16_t)0x0300) + +/* Data_Backup_Register */ +#define BKP_DR1 ((uint16_t)0x0004) +#define BKP_DR2 ((uint16_t)0x0008) +#define BKP_DR3 ((uint16_t)0x000C) +#define BKP_DR4 ((uint16_t)0x0010) +#define BKP_DR5 ((uint16_t)0x0014) +#define BKP_DR6 ((uint16_t)0x0018) +#define BKP_DR7 ((uint16_t)0x001C) +#define BKP_DR8 ((uint16_t)0x0020) +#define BKP_DR9 ((uint16_t)0x0024) +#define BKP_DR10 ((uint16_t)0x0028) +#define BKP_DR11 ((uint16_t)0x0040) +#define BKP_DR12 ((uint16_t)0x0044) +#define BKP_DR13 ((uint16_t)0x0048) +#define BKP_DR14 ((uint16_t)0x004C) +#define BKP_DR15 ((uint16_t)0x0050) +#define BKP_DR16 ((uint16_t)0x0054) +#define BKP_DR17 ((uint16_t)0x0058) +#define BKP_DR18 ((uint16_t)0x005C) +#define BKP_DR19 ((uint16_t)0x0060) +#define BKP_DR20 ((uint16_t)0x0064) +#define BKP_DR21 ((uint16_t)0x0068) +#define BKP_DR22 ((uint16_t)0x006C) +#define BKP_DR23 ((uint16_t)0x0070) +#define BKP_DR24 ((uint16_t)0x0074) +#define BKP_DR25 ((uint16_t)0x0078) +#define BKP_DR26 ((uint16_t)0x007C) +#define BKP_DR27 ((uint16_t)0x0080) +#define BKP_DR28 ((uint16_t)0x0084) +#define BKP_DR29 ((uint16_t)0x0088) +#define BKP_DR30 ((uint16_t)0x008C) +#define BKP_DR31 ((uint16_t)0x0090) +#define BKP_DR32 ((uint16_t)0x0094) +#define BKP_DR33 ((uint16_t)0x0098) +#define BKP_DR34 ((uint16_t)0x009C) +#define BKP_DR35 ((uint16_t)0x00A0) +#define BKP_DR36 ((uint16_t)0x00A4) +#define BKP_DR37 ((uint16_t)0x00A8) +#define BKP_DR38 ((uint16_t)0x00AC) +#define BKP_DR39 ((uint16_t)0x00B0) +#define BKP_DR40 ((uint16_t)0x00B4) +#define BKP_DR41 ((uint16_t)0x00B8) +#define BKP_DR42 ((uint16_t)0x00BC) + + +void BKP_DeInit(void); +void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel); +void BKP_TamperPinCmd(FunctionalState NewState); +void BKP_ITConfig(FunctionalState NewState); +void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource); +void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue); +void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data); +uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR); +FlagStatus BKP_GetFlagStatus(void); +void BKP_ClearFlag(void); +ITStatus BKP_GetITStatus(void); +void BKP_ClearITPendingBit(void); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_can.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_can.h new file mode 100755 index 000000000..76bec3345 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_can.h @@ -0,0 +1,366 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_can.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* CAN firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_CAN_H +#define __CH32V30x_CAN_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* CAN init structure definition */ +typedef struct +{ + uint16_t CAN_Prescaler; /* Specifies the length of a time quantum. + It ranges from 1 to 1024. */ + + uint8_t CAN_Mode; /* Specifies the CAN operating mode. + This parameter can be a value of + @ref CAN_operating_mode */ + + uint8_t CAN_SJW; /* Specifies the maximum number of time quanta + the CAN hardware is allowed to lengthen or + shorten a bit to perform resynchronization. + This parameter can be a value of + @ref CAN_synchronisation_jump_width */ + + uint8_t CAN_BS1; /* Specifies the number of time quanta in Bit + Segment 1. This parameter can be a value of + @ref CAN_time_quantum_in_bit_segment_1 */ + + uint8_t CAN_BS2; /* Specifies the number of time quanta in Bit + Segment 2. + This parameter can be a value of + @ref CAN_time_quantum_in_bit_segment_2 */ + + FunctionalState CAN_TTCM; /* Enable or disable the time triggered + communication mode. This parameter can be set + either to ENABLE or DISABLE. */ + + FunctionalState CAN_ABOM; /* Enable or disable the automatic bus-off + management. This parameter can be set either + to ENABLE or DISABLE. */ + + FunctionalState CAN_AWUM; /* Enable or disable the automatic wake-up mode. + This parameter can be set either to ENABLE or + DISABLE. */ + + FunctionalState CAN_NART; /* Enable or disable the no-automatic + retransmission mode. This parameter can be + set either to ENABLE or DISABLE. */ + + FunctionalState CAN_RFLM; /* Enable or disable the Receive FIFO Locked mode. + This parameter can be set either to ENABLE + or DISABLE. */ + + FunctionalState CAN_TXFP; /* Enable or disable the transmit FIFO priority. + This parameter can be set either to ENABLE + or DISABLE. */ +} CAN_InitTypeDef; + +/* CAN filter init structure definition */ +typedef struct +{ + uint16_t CAN_FilterIdHigh; /* Specifies the filter identification number (MSBs for a 32-bit + configuration, first one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterIdLow; /* Specifies the filter identification number (LSBs for a 32-bit + configuration, second one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterMaskIdHigh; /* Specifies the filter mask number or identification number, + according to the mode (MSBs for a 32-bit configuration, + first one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterMaskIdLow; /* Specifies the filter mask number or identification number, + according to the mode (LSBs for a 32-bit configuration, + second one for a 16-bit configuration). + This parameter can be a value between 0x0000 and 0xFFFF */ + + uint16_t CAN_FilterFIFOAssignment; /* Specifies the FIFO (0 or 1) which will be assigned to the filter. + This parameter can be a value of @ref CAN_filter_FIFO */ + + uint8_t CAN_FilterNumber; /* Specifies the filter which will be initialized. It ranges from 0 to 13. */ + + uint8_t CAN_FilterMode; /* Specifies the filter mode to be initialized. + This parameter can be a value of @ref CAN_filter_mode */ + + uint8_t CAN_FilterScale; /* Specifies the filter scale. + This parameter can be a value of @ref CAN_filter_scale */ + + FunctionalState CAN_FilterActivation; /* Enable or disable the filter. + This parameter can be set either to ENABLE or DISABLE. */ +} CAN_FilterInitTypeDef; + +/* CAN Tx message structure definition */ +typedef struct +{ + uint32_t StdId; /* Specifies the standard identifier. + This parameter can be a value between 0 to 0x7FF. */ + + uint32_t ExtId; /* Specifies the extended identifier. + This parameter can be a value between 0 to 0x1FFFFFFF. */ + + uint8_t IDE; /* Specifies the type of identifier for the message that + will be transmitted. This parameter can be a value + of @ref CAN_identifier_type */ + + uint8_t RTR; /* Specifies the type of frame for the message that will + be transmitted. This parameter can be a value of + @ref CAN_remote_transmission_request */ + + uint8_t DLC; /* Specifies the length of the frame that will be + transmitted. This parameter can be a value between + 0 to 8 */ + + uint8_t Data[8]; /* Contains the data to be transmitted. It ranges from 0 + to 0xFF. */ +} CanTxMsg; + +/* CAN Rx message structure definition */ +typedef struct +{ + uint32_t StdId; /* Specifies the standard identifier. + This parameter can be a value between 0 to 0x7FF. */ + + uint32_t ExtId; /* Specifies the extended identifier. + This parameter can be a value between 0 to 0x1FFFFFFF. */ + + uint8_t IDE; /* Specifies the type of identifier for the message that + will be received. This parameter can be a value of + @ref CAN_identifier_type */ + + uint8_t RTR; /* Specifies the type of frame for the received message. + This parameter can be a value of + @ref CAN_remote_transmission_request */ + + uint8_t DLC; /* Specifies the length of the frame that will be received. + This parameter can be a value between 0 to 8 */ + + uint8_t Data[8]; /* Contains the data to be received. It ranges from 0 to + 0xFF. */ + + uint8_t FMI; /* Specifies the index of the filter the message stored in + the mailbox passes through. This parameter can be a + value between 0 to 0xFF */ +} CanRxMsg; + +/* CAN_sleep_constants */ +#define CAN_InitStatus_Failed ((uint8_t)0x00) /* CAN initialization failed */ +#define CAN_InitStatus_Success ((uint8_t)0x01) /* CAN initialization OK */ + +/* CAN_Mode */ +#define CAN_Mode_Normal ((uint8_t)0x00) /* normal mode */ +#define CAN_Mode_LoopBack ((uint8_t)0x01) /* loopback mode */ +#define CAN_Mode_Silent ((uint8_t)0x02) /* silent mode */ +#define CAN_Mode_Silent_LoopBack ((uint8_t)0x03) /* loopback combined with silent mode */ + +/* CAN_Operating_Mode */ +#define CAN_OperatingMode_Initialization ((uint8_t)0x00) /* Initialization mode */ +#define CAN_OperatingMode_Normal ((uint8_t)0x01) /* Normal mode */ +#define CAN_OperatingMode_Sleep ((uint8_t)0x02) /* sleep mode */ + +/* CAN_Mode_Status */ +#define CAN_ModeStatus_Failed ((uint8_t)0x00) /* CAN entering the specific mode failed */ +#define CAN_ModeStatus_Success ((uint8_t)!CAN_ModeStatus_Failed) /* CAN entering the specific mode Succeed */ + +/* CAN_synchronisation_jump_width */ +#define CAN_SJW_1tq ((uint8_t)0x00) /* 1 time quantum */ +#define CAN_SJW_2tq ((uint8_t)0x01) /* 2 time quantum */ +#define CAN_SJW_3tq ((uint8_t)0x02) /* 3 time quantum */ +#define CAN_SJW_4tq ((uint8_t)0x03) /* 4 time quantum */ + +/* CAN_time_quantum_in_bit_segment_1 */ +#define CAN_BS1_1tq ((uint8_t)0x00) /* 1 time quantum */ +#define CAN_BS1_2tq ((uint8_t)0x01) /* 2 time quantum */ +#define CAN_BS1_3tq ((uint8_t)0x02) /* 3 time quantum */ +#define CAN_BS1_4tq ((uint8_t)0x03) /* 4 time quantum */ +#define CAN_BS1_5tq ((uint8_t)0x04) /* 5 time quantum */ +#define CAN_BS1_6tq ((uint8_t)0x05) /* 6 time quantum */ +#define CAN_BS1_7tq ((uint8_t)0x06) /* 7 time quantum */ +#define CAN_BS1_8tq ((uint8_t)0x07) /* 8 time quantum */ +#define CAN_BS1_9tq ((uint8_t)0x08) /* 9 time quantum */ +#define CAN_BS1_10tq ((uint8_t)0x09) /* 10 time quantum */ +#define CAN_BS1_11tq ((uint8_t)0x0A) /* 11 time quantum */ +#define CAN_BS1_12tq ((uint8_t)0x0B) /* 12 time quantum */ +#define CAN_BS1_13tq ((uint8_t)0x0C) /* 13 time quantum */ +#define CAN_BS1_14tq ((uint8_t)0x0D) /* 14 time quantum */ +#define CAN_BS1_15tq ((uint8_t)0x0E) /* 15 time quantum */ +#define CAN_BS1_16tq ((uint8_t)0x0F) /* 16 time quantum */ + +/* CAN_time_quantum_in_bit_segment_2 */ +#define CAN_BS2_1tq ((uint8_t)0x00) /* 1 time quantum */ +#define CAN_BS2_2tq ((uint8_t)0x01) /* 2 time quantum */ +#define CAN_BS2_3tq ((uint8_t)0x02) /* 3 time quantum */ +#define CAN_BS2_4tq ((uint8_t)0x03) /* 4 time quantum */ +#define CAN_BS2_5tq ((uint8_t)0x04) /* 5 time quantum */ +#define CAN_BS2_6tq ((uint8_t)0x05) /* 6 time quantum */ +#define CAN_BS2_7tq ((uint8_t)0x06) /* 7 time quantum */ +#define CAN_BS2_8tq ((uint8_t)0x07) /* 8 time quantum */ + +/* CAN_filter_mode */ +#define CAN_FilterMode_IdMask ((uint8_t)0x00) /* identifier/mask mode */ +#define CAN_FilterMode_IdList ((uint8_t)0x01) /* identifier list mode */ + +/* CAN_filter_scale */ +#define CAN_FilterScale_16bit ((uint8_t)0x00) /* Two 16-bit filters */ +#define CAN_FilterScale_32bit ((uint8_t)0x01) /* One 32-bit filter */ + +/* CAN_filter_FIFO */ +#define CAN_Filter_FIFO0 ((uint8_t)0x00) /* Filter FIFO 0 assignment for filter x */ +#define CAN_Filter_FIFO1 ((uint8_t)0x01) /* Filter FIFO 1 assignment for filter x */ + +/* CAN_identifier_type */ +#define CAN_Id_Standard ((uint32_t)0x00000000) /* Standard Id */ +#define CAN_Id_Extended ((uint32_t)0x00000004) /* Extended Id */ + +/* CAN_remote_transmission_request */ +#define CAN_RTR_Data ((uint32_t)0x00000000) /* Data frame */ +#define CAN_RTR_Remote ((uint32_t)0x00000002) /* Remote frame */ + +/* CAN_transmit_constants */ +#define CAN_TxStatus_Failed ((uint8_t)0x00)/* CAN transmission failed */ +#define CAN_TxStatus_Ok ((uint8_t)0x01) /* CAN transmission succeeded */ +#define CAN_TxStatus_Pending ((uint8_t)0x02) /* CAN transmission pending */ +#define CAN_TxStatus_NoMailBox ((uint8_t)0x04) /* CAN cell did not provide an empty mailbox */ + +/* CAN_receive_FIFO_number_constants */ +#define CAN_FIFO0 ((uint8_t)0x00) /* CAN FIFO 0 used to receive */ +#define CAN_FIFO1 ((uint8_t)0x01) /* CAN FIFO 1 used to receive */ + +/* CAN_sleep_constants */ +#define CAN_Sleep_Failed ((uint8_t)0x00) /* CAN did not enter the sleep mode */ +#define CAN_Sleep_Ok ((uint8_t)0x01) /* CAN entered the sleep mode */ + +/* CAN_wake_up_constants */ +#define CAN_WakeUp_Failed ((uint8_t)0x00) /* CAN did not leave the sleep mode */ +#define CAN_WakeUp_Ok ((uint8_t)0x01) /* CAN leaved the sleep mode */ + +/* CAN_Error_Code_constants */ +#define CAN_ErrorCode_NoErr ((uint8_t)0x00) /* No Error */ +#define CAN_ErrorCode_StuffErr ((uint8_t)0x10) /* Stuff Error */ +#define CAN_ErrorCode_FormErr ((uint8_t)0x20) /* Form Error */ +#define CAN_ErrorCode_ACKErr ((uint8_t)0x30) /* Acknowledgment Error */ +#define CAN_ErrorCode_BitRecessiveErr ((uint8_t)0x40) /* Bit Recessive Error */ +#define CAN_ErrorCode_BitDominantErr ((uint8_t)0x50) /* Bit Dominant Error */ +#define CAN_ErrorCode_CRCErr ((uint8_t)0x60) /* CRC Error */ +#define CAN_ErrorCode_SoftwareSetErr ((uint8_t)0x70) /* Software Set Error */ + + +/* CAN_flags */ +/* Transmit Flags */ +#define CAN_FLAG_RQCP0 ((uint32_t)0x38000001) /* Request MailBox0 Flag */ +#define CAN_FLAG_RQCP1 ((uint32_t)0x38000100) /* Request MailBox1 Flag */ +#define CAN_FLAG_RQCP2 ((uint32_t)0x38010000) /* Request MailBox2 Flag */ + +/* Receive Flags */ +#define CAN_FLAG_FMP0 ((uint32_t)0x12000003) /* FIFO 0 Message Pending Flag */ +#define CAN_FLAG_FF0 ((uint32_t)0x32000008) /* FIFO 0 Full Flag */ +#define CAN_FLAG_FOV0 ((uint32_t)0x32000010) /* FIFO 0 Overrun Flag */ +#define CAN_FLAG_FMP1 ((uint32_t)0x14000003) /* FIFO 1 Message Pending Flag */ +#define CAN_FLAG_FF1 ((uint32_t)0x34000008) /* FIFO 1 Full Flag */ +#define CAN_FLAG_FOV1 ((uint32_t)0x34000010) /* FIFO 1 Overrun Flag */ + +/* Operating Mode Flags */ +#define CAN_FLAG_WKU ((uint32_t)0x31000008) /* Wake up Flag */ +#define CAN_FLAG_SLAK ((uint32_t)0x31000012) /* Sleep acknowledge Flag */ + +/* Error Flags */ +#define CAN_FLAG_EWG ((uint32_t)0x10F00001) /* Error Warning Flag */ +#define CAN_FLAG_EPV ((uint32_t)0x10F00002) /* Error Passive Flag */ +#define CAN_FLAG_BOF ((uint32_t)0x10F00004) /* Bus-Off Flag */ +#define CAN_FLAG_LEC ((uint32_t)0x30F00070) /* Last error code Flag */ + + +/* CAN_interrupts */ +#define CAN_IT_TME ((uint32_t)0x00000001) /* Transmit mailbox empty Interrupt*/ + +/* Receive Interrupts */ +#define CAN_IT_FMP0 ((uint32_t)0x00000002) /* FIFO 0 message pending Interrupt*/ +#define CAN_IT_FF0 ((uint32_t)0x00000004) /* FIFO 0 full Interrupt*/ +#define CAN_IT_FOV0 ((uint32_t)0x00000008) /* FIFO 0 overrun Interrupt*/ +#define CAN_IT_FMP1 ((uint32_t)0x00000010) /* FIFO 1 message pending Interrupt*/ +#define CAN_IT_FF1 ((uint32_t)0x00000020) /* FIFO 1 full Interrupt*/ +#define CAN_IT_FOV1 ((uint32_t)0x00000040) /* FIFO 1 overrun Interrupt*/ + +/* Operating Mode Interrupts */ +#define CAN_IT_WKU ((uint32_t)0x00010000) /* Wake-up Interrupt*/ +#define CAN_IT_SLK ((uint32_t)0x00020000) /* Sleep acknowledge Interrupt*/ + +/* Error Interrupts */ +#define CAN_IT_EWG ((uint32_t)0x00000100) /* Error warning Interrupt*/ +#define CAN_IT_EPV ((uint32_t)0x00000200) /* Error passive Interrupt*/ +#define CAN_IT_BOF ((uint32_t)0x00000400) /* Bus-off Interrupt*/ +#define CAN_IT_LEC ((uint32_t)0x00000800) /* Last error code Interrupt*/ +#define CAN_IT_ERR ((uint32_t)0x00008000) /* Error Interrupt*/ + +/* Flags named as Interrupts : kept only for FW compatibility */ +#define CAN_IT_RQCP0 CAN_IT_TME +#define CAN_IT_RQCP1 CAN_IT_TME +#define CAN_IT_RQCP2 CAN_IT_TME + +/* CAN_Legacy */ +#define CANINITFAILED CAN_InitStatus_Failed +#define CANINITOK CAN_InitStatus_Success +#define CAN_FilterFIFO0 CAN_Filter_FIFO0 +#define CAN_FilterFIFO1 CAN_Filter_FIFO1 +#define CAN_ID_STD CAN_Id_Standard +#define CAN_ID_EXT CAN_Id_Extended +#define CAN_RTR_DATA CAN_RTR_Data +#define CAN_RTR_REMOTE CAN_RTR_Remote +#define CANTXFAILE CAN_TxStatus_Failed +#define CANTXOK CAN_TxStatus_Ok +#define CANTXPENDING CAN_TxStatus_Pending +#define CAN_NO_MB CAN_TxStatus_NoMailBox +#define CANSLEEPFAILED CAN_Sleep_Failed +#define CANSLEEPOK CAN_Sleep_Ok +#define CANWAKEUPFAILED CAN_WakeUp_Failed +#define CANWAKEUPOK CAN_WakeUp_Ok + + +void CAN_DeInit(CAN_TypeDef* CANx); +uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct); +void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct); +void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct); +void CAN_SlaveStartBank(uint8_t CAN_BankNumber); +void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState); +void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState); +uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage); +uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox); +void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox); +void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage); +void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber); +uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber); +uint8_t CAN_OperatingModeRequest(CAN_TypeDef* CANx, uint8_t CAN_OperatingMode); +uint8_t CAN_Sleep(CAN_TypeDef* CANx); +uint8_t CAN_WakeUp(CAN_TypeDef* CANx); +uint8_t CAN_GetLastErrorCode(CAN_TypeDef* CANx); +uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef* CANx); +uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef* CANx); +void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState); +FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG); +void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG); +ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT); +void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_crc.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_crc.h new file mode 100755 index 000000000..f3f9bae6e --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_crc.h @@ -0,0 +1,37 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_crc.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* CRC firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_CRC_H +#define __CH32V30x_CRC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +void CRC_ResetDR(void); +uint32_t CRC_CalcCRC(uint32_t Data); +uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength); +uint32_t CRC_GetCRC(void); +void CRC_SetIDRegister(uint8_t IDValue); +uint8_t CRC_GetIDRegister(void); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dac.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dac.h new file mode 100755 index 000000000..6f107e06a --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dac.h @@ -0,0 +1,120 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dac.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* DAC firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_DAC_H +#define __CH32V30x_DAC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* DAC Init structure definition */ +typedef struct +{ + uint32_t DAC_Trigger; /* Specifies the external trigger for the selected DAC channel. + This parameter can be a value of @ref DAC_trigger_selection */ + + uint32_t DAC_WaveGeneration; /* Specifies whether DAC channel noise waves or triangle waves + are generated, or whether no wave is generated. + This parameter can be a value of @ref DAC_wave_generation */ + + uint32_t DAC_LFSRUnmask_TriangleAmplitude; /* Specifies the LFSR mask for noise wave generation or + the maximum amplitude triangle generation for the DAC channel. + This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */ + + uint32_t DAC_OutputBuffer; /* Specifies whether the DAC channel output buffer is enabled or disabled. + This parameter can be a value of @ref DAC_output_buffer */ +}DAC_InitTypeDef; + + +/* DAC_trigger_selection */ +#define DAC_Trigger_None ((uint32_t)0x00000000) /* Conversion is automatic once the DAC1_DHRxxxx register + has been loaded, and not by external trigger */ +#define DAC_Trigger_T6_TRGO ((uint32_t)0x00000004) /* TIM6 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T8_TRGO ((uint32_t)0x0000000C) /* TIM8 TRGO selected as external conversion trigger for DAC channel + only in High-density devices*/ +#define DAC_Trigger_T7_TRGO ((uint32_t)0x00000014) /* TIM7 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T5_TRGO ((uint32_t)0x0000001C) /* TIM5 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T2_TRGO ((uint32_t)0x00000024) /* TIM2 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_T4_TRGO ((uint32_t)0x0000002C) /* TIM4 TRGO selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_Ext_IT9 ((uint32_t)0x00000034) /* EXTI Line9 event selected as external conversion trigger for DAC channel */ +#define DAC_Trigger_Software ((uint32_t)0x0000003C) /* Conversion started by software trigger for DAC channel */ + +/* DAC_wave_generation */ +#define DAC_WaveGeneration_None ((uint32_t)0x00000000) +#define DAC_WaveGeneration_Noise ((uint32_t)0x00000040) +#define DAC_WaveGeneration_Triangle ((uint32_t)0x00000080) + + +/* DAC_lfsrunmask_triangleamplitude */ +#define DAC_LFSRUnmask_Bit0 ((uint32_t)0x00000000) /* Unmask DAC channel LFSR bit0 for noise wave generation */ +#define DAC_LFSRUnmask_Bits1_0 ((uint32_t)0x00000100) /* Unmask DAC channel LFSR bit[1:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits2_0 ((uint32_t)0x00000200) /* Unmask DAC channel LFSR bit[2:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits3_0 ((uint32_t)0x00000300) /* Unmask DAC channel LFSR bit[3:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits4_0 ((uint32_t)0x00000400) /* Unmask DAC channel LFSR bit[4:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits5_0 ((uint32_t)0x00000500) /* Unmask DAC channel LFSR bit[5:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits6_0 ((uint32_t)0x00000600) /* Unmask DAC channel LFSR bit[6:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits7_0 ((uint32_t)0x00000700) /* Unmask DAC channel LFSR bit[7:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits8_0 ((uint32_t)0x00000800) /* Unmask DAC channel LFSR bit[8:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits9_0 ((uint32_t)0x00000900) /* Unmask DAC channel LFSR bit[9:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits10_0 ((uint32_t)0x00000A00) /* Unmask DAC channel LFSR bit[10:0] for noise wave generation */ +#define DAC_LFSRUnmask_Bits11_0 ((uint32_t)0x00000B00) /* Unmask DAC channel LFSR bit[11:0] for noise wave generation */ +#define DAC_TriangleAmplitude_1 ((uint32_t)0x00000000) /* Select max triangle amplitude of 1 */ +#define DAC_TriangleAmplitude_3 ((uint32_t)0x00000100) /* Select max triangle amplitude of 3 */ +#define DAC_TriangleAmplitude_7 ((uint32_t)0x00000200) /* Select max triangle amplitude of 7 */ +#define DAC_TriangleAmplitude_15 ((uint32_t)0x00000300) /* Select max triangle amplitude of 15 */ +#define DAC_TriangleAmplitude_31 ((uint32_t)0x00000400) /* Select max triangle amplitude of 31 */ +#define DAC_TriangleAmplitude_63 ((uint32_t)0x00000500) /* Select max triangle amplitude of 63 */ +#define DAC_TriangleAmplitude_127 ((uint32_t)0x00000600) /* Select max triangle amplitude of 127 */ +#define DAC_TriangleAmplitude_255 ((uint32_t)0x00000700) /* Select max triangle amplitude of 255 */ +#define DAC_TriangleAmplitude_511 ((uint32_t)0x00000800) /* Select max triangle amplitude of 511 */ +#define DAC_TriangleAmplitude_1023 ((uint32_t)0x00000900) /* Select max triangle amplitude of 1023 */ +#define DAC_TriangleAmplitude_2047 ((uint32_t)0x00000A00) /* Select max triangle amplitude of 2047 */ +#define DAC_TriangleAmplitude_4095 ((uint32_t)0x00000B00) /* Select max triangle amplitude of 4095 */ + +/* DAC_output_buffer */ +#define DAC_OutputBuffer_Enable ((uint32_t)0x00000000) +#define DAC_OutputBuffer_Disable ((uint32_t)0x00000002) + +/* DAC_Channel_selection */ +#define DAC_Channel_1 ((uint32_t)0x00000000) +#define DAC_Channel_2 ((uint32_t)0x00000010) + +/* DAC_data_alignment */ +#define DAC_Align_12b_R ((uint32_t)0x00000000) +#define DAC_Align_12b_L ((uint32_t)0x00000004) +#define DAC_Align_8b_R ((uint32_t)0x00000008) + +/* DAC_wave_generation */ +#define DAC_Wave_Noise ((uint32_t)0x00000040) +#define DAC_Wave_Triangle ((uint32_t)0x00000080) + + +void DAC_DeInit(void); +void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct); +void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct); +void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState); +void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState); +void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState); +void DAC_DualSoftwareTriggerCmd(FunctionalState NewState); +void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState); +void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data); +void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data); +void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1); +uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dbgmcu.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dbgmcu.h new file mode 100755 index 000000000..6969fa902 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dbgmcu.h @@ -0,0 +1,35 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dbgmcu.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* DBGMCU firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_DBGMCU_H +#define __CH32V30x_DBGMCU_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +uint32_t DBGMCU_GetREVID(void); +uint32_t DBGMCU_GetDEVID(void); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dma.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dma.h new file mode 100755 index 000000000..5cbf560cf --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dma.h @@ -0,0 +1,268 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dma.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* DMA firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_DMA_H +#define __CH32V30x_DMA_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* DMA Init structure definition */ +typedef struct +{ + uint32_t DMA_PeripheralBaseAddr; /* Specifies the peripheral base address for DMAy Channelx. */ + + uint32_t DMA_MemoryBaseAddr; /* Specifies the memory base address for DMAy Channelx. */ + + uint32_t DMA_DIR; /* Specifies if the peripheral is the source or destination. + This parameter can be a value of @ref DMA_data_transfer_direction */ + + uint32_t DMA_BufferSize; /* Specifies the buffer size, in data unit, of the specified Channel. + The data unit is equal to the configuration set in DMA_PeripheralDataSize + or DMA_MemoryDataSize members depending in the transfer direction. */ + + uint32_t DMA_PeripheralInc; /* Specifies whether the Peripheral address register is incremented or not. + This parameter can be a value of @ref DMA_peripheral_incremented_mode */ + + uint32_t DMA_MemoryInc; /* Specifies whether the memory address register is incremented or not. + This parameter can be a value of @ref DMA_memory_incremented_mode */ + + uint32_t DMA_PeripheralDataSize; /* Specifies the Peripheral data width. + This parameter can be a value of @ref DMA_peripheral_data_size */ + + uint32_t DMA_MemoryDataSize; /* Specifies the Memory data width. + This parameter can be a value of @ref DMA_memory_data_size */ + + uint32_t DMA_Mode; /* Specifies the operation mode of the DMAy Channelx. + This parameter can be a value of @ref DMA_circular_normal_mode. + @note: The circular buffer mode cannot be used if the memory-to-memory + data transfer is configured on the selected Channel */ + + uint32_t DMA_Priority; /* Specifies the software priority for the DMAy Channelx. + This parameter can be a value of @ref DMA_priority_level */ + + uint32_t DMA_M2M; /* Specifies if the DMAy Channelx will be used in memory-to-memory transfer. + This parameter can be a value of @ref DMA_memory_to_memory */ +}DMA_InitTypeDef; + +/* DMA_data_transfer_direction */ +#define DMA_DIR_PeripheralDST ((uint32_t)0x00000010) +#define DMA_DIR_PeripheralSRC ((uint32_t)0x00000000) + +/* DMA_peripheral_incremented_mode */ +#define DMA_PeripheralInc_Enable ((uint32_t)0x00000040) +#define DMA_PeripheralInc_Disable ((uint32_t)0x00000000) + +/* DMA_memory_incremented_mode */ +#define DMA_MemoryInc_Enable ((uint32_t)0x00000080) +#define DMA_MemoryInc_Disable ((uint32_t)0x00000000) + +/* DMA_peripheral_data_size */ +#define DMA_PeripheralDataSize_Byte ((uint32_t)0x00000000) +#define DMA_PeripheralDataSize_HalfWord ((uint32_t)0x00000100) +#define DMA_PeripheralDataSize_Word ((uint32_t)0x00000200) + +/* DMA_memory_data_size */ +#define DMA_MemoryDataSize_Byte ((uint32_t)0x00000000) +#define DMA_MemoryDataSize_HalfWord ((uint32_t)0x00000400) +#define DMA_MemoryDataSize_Word ((uint32_t)0x00000800) + +/* DMA_circular_normal_mode */ +#define DMA_Mode_Circular ((uint32_t)0x00000020) +#define DMA_Mode_Normal ((uint32_t)0x00000000) + +/* DMA_priority_level */ +#define DMA_Priority_VeryHigh ((uint32_t)0x00003000) +#define DMA_Priority_High ((uint32_t)0x00002000) +#define DMA_Priority_Medium ((uint32_t)0x00001000) +#define DMA_Priority_Low ((uint32_t)0x00000000) + +/* DMA_memory_to_memory */ +#define DMA_M2M_Enable ((uint32_t)0x00004000) +#define DMA_M2M_Disable ((uint32_t)0x00000000) + +/* DMA_interrupts_definition */ +#define DMA_IT_TC ((uint32_t)0x00000002) +#define DMA_IT_HT ((uint32_t)0x00000004) +#define DMA_IT_TE ((uint32_t)0x00000008) + +#define DMA1_IT_GL1 ((uint32_t)0x00000001) +#define DMA1_IT_TC1 ((uint32_t)0x00000002) +#define DMA1_IT_HT1 ((uint32_t)0x00000004) +#define DMA1_IT_TE1 ((uint32_t)0x00000008) +#define DMA1_IT_GL2 ((uint32_t)0x00000010) +#define DMA1_IT_TC2 ((uint32_t)0x00000020) +#define DMA1_IT_HT2 ((uint32_t)0x00000040) +#define DMA1_IT_TE2 ((uint32_t)0x00000080) +#define DMA1_IT_GL3 ((uint32_t)0x00000100) +#define DMA1_IT_TC3 ((uint32_t)0x00000200) +#define DMA1_IT_HT3 ((uint32_t)0x00000400) +#define DMA1_IT_TE3 ((uint32_t)0x00000800) +#define DMA1_IT_GL4 ((uint32_t)0x00001000) +#define DMA1_IT_TC4 ((uint32_t)0x00002000) +#define DMA1_IT_HT4 ((uint32_t)0x00004000) +#define DMA1_IT_TE4 ((uint32_t)0x00008000) +#define DMA1_IT_GL5 ((uint32_t)0x00010000) +#define DMA1_IT_TC5 ((uint32_t)0x00020000) +#define DMA1_IT_HT5 ((uint32_t)0x00040000) +#define DMA1_IT_TE5 ((uint32_t)0x00080000) +#define DMA1_IT_GL6 ((uint32_t)0x00100000) +#define DMA1_IT_TC6 ((uint32_t)0x00200000) +#define DMA1_IT_HT6 ((uint32_t)0x00400000) +#define DMA1_IT_TE6 ((uint32_t)0x00800000) +#define DMA1_IT_GL7 ((uint32_t)0x01000000) +#define DMA1_IT_TC7 ((uint32_t)0x02000000) +#define DMA1_IT_HT7 ((uint32_t)0x04000000) +#define DMA1_IT_TE7 ((uint32_t)0x08000000) + +#define DMA2_IT_GL1 ((uint32_t)0x10000001) +#define DMA2_IT_TC1 ((uint32_t)0x10000002) +#define DMA2_IT_HT1 ((uint32_t)0x10000004) +#define DMA2_IT_TE1 ((uint32_t)0x10000008) +#define DMA2_IT_GL2 ((uint32_t)0x10000010) +#define DMA2_IT_TC2 ((uint32_t)0x10000020) +#define DMA2_IT_HT2 ((uint32_t)0x10000040) +#define DMA2_IT_TE2 ((uint32_t)0x10000080) +#define DMA2_IT_GL3 ((uint32_t)0x10000100) +#define DMA2_IT_TC3 ((uint32_t)0x10000200) +#define DMA2_IT_HT3 ((uint32_t)0x10000400) +#define DMA2_IT_TE3 ((uint32_t)0x10000800) +#define DMA2_IT_GL4 ((uint32_t)0x10001000) +#define DMA2_IT_TC4 ((uint32_t)0x10002000) +#define DMA2_IT_HT4 ((uint32_t)0x10004000) +#define DMA2_IT_TE4 ((uint32_t)0x10008000) +#define DMA2_IT_GL5 ((uint32_t)0x10010000) +#define DMA2_IT_TC5 ((uint32_t)0x10020000) +#define DMA2_IT_HT5 ((uint32_t)0x10040000) +#define DMA2_IT_TE5 ((uint32_t)0x10080000) +#define DMA2_IT_GL6 ((uint32_t)0x10100000) +#define DMA2_IT_TC6 ((uint32_t)0x10200000) +#define DMA2_IT_HT6 ((uint32_t)0x10400000) +#define DMA2_IT_TE6 ((uint32_t)0x10800000) +#define DMA2_IT_GL7 ((uint32_t)0x11000000) +#define DMA2_IT_TC7 ((uint32_t)0x12000000) +#define DMA2_IT_HT7 ((uint32_t)0x14000000) +#define DMA2_IT_TE7 ((uint32_t)0x18000000) + +#define DMA2_IT_GL8 ((uint32_t)0x20000001) +#define DMA2_IT_TC8 ((uint32_t)0x20000002) +#define DMA2_IT_HT8 ((uint32_t)0x20000004) +#define DMA2_IT_TE8 ((uint32_t)0x20000008) +#define DMA2_IT_GL9 ((uint32_t)0x20000010) +#define DMA2_IT_TC9 ((uint32_t)0x20000020) +#define DMA2_IT_HT9 ((uint32_t)0x20000040) +#define DMA2_IT_TE9 ((uint32_t)0x20000080) +#define DMA2_IT_GL10 ((uint32_t)0x20000100) +#define DMA2_IT_TC10 ((uint32_t)0x20000200) +#define DMA2_IT_HT10 ((uint32_t)0x20000400) +#define DMA2_IT_TE10 ((uint32_t)0x20000800) +#define DMA2_IT_GL11 ((uint32_t)0x20001000) +#define DMA2_IT_TC11 ((uint32_t)0x20002000) +#define DMA2_IT_HT11 ((uint32_t)0x20004000) +#define DMA2_IT_TE11 ((uint32_t)0x20008000) + +/* DMA_flags_definition */ +#define DMA1_FLAG_GL1 ((uint32_t)0x00000001) +#define DMA1_FLAG_TC1 ((uint32_t)0x00000002) +#define DMA1_FLAG_HT1 ((uint32_t)0x00000004) +#define DMA1_FLAG_TE1 ((uint32_t)0x00000008) +#define DMA1_FLAG_GL2 ((uint32_t)0x00000010) +#define DMA1_FLAG_TC2 ((uint32_t)0x00000020) +#define DMA1_FLAG_HT2 ((uint32_t)0x00000040) +#define DMA1_FLAG_TE2 ((uint32_t)0x00000080) +#define DMA1_FLAG_GL3 ((uint32_t)0x00000100) +#define DMA1_FLAG_TC3 ((uint32_t)0x00000200) +#define DMA1_FLAG_HT3 ((uint32_t)0x00000400) +#define DMA1_FLAG_TE3 ((uint32_t)0x00000800) +#define DMA1_FLAG_GL4 ((uint32_t)0x00001000) +#define DMA1_FLAG_TC4 ((uint32_t)0x00002000) +#define DMA1_FLAG_HT4 ((uint32_t)0x00004000) +#define DMA1_FLAG_TE4 ((uint32_t)0x00008000) +#define DMA1_FLAG_GL5 ((uint32_t)0x00010000) +#define DMA1_FLAG_TC5 ((uint32_t)0x00020000) +#define DMA1_FLAG_HT5 ((uint32_t)0x00040000) +#define DMA1_FLAG_TE5 ((uint32_t)0x00080000) +#define DMA1_FLAG_GL6 ((uint32_t)0x00100000) +#define DMA1_FLAG_TC6 ((uint32_t)0x00200000) +#define DMA1_FLAG_HT6 ((uint32_t)0x00400000) +#define DMA1_FLAG_TE6 ((uint32_t)0x00800000) +#define DMA1_FLAG_GL7 ((uint32_t)0x01000000) +#define DMA1_FLAG_TC7 ((uint32_t)0x02000000) +#define DMA1_FLAG_HT7 ((uint32_t)0x04000000) +#define DMA1_FLAG_TE7 ((uint32_t)0x08000000) + +#define DMA2_FLAG_GL1 ((uint32_t)0x10000001) +#define DMA2_FLAG_TC1 ((uint32_t)0x10000002) +#define DMA2_FLAG_HT1 ((uint32_t)0x10000004) +#define DMA2_FLAG_TE1 ((uint32_t)0x10000008) +#define DMA2_FLAG_GL2 ((uint32_t)0x10000010) +#define DMA2_FLAG_TC2 ((uint32_t)0x10000020) +#define DMA2_FLAG_HT2 ((uint32_t)0x10000040) +#define DMA2_FLAG_TE2 ((uint32_t)0x10000080) +#define DMA2_FLAG_GL3 ((uint32_t)0x10000100) +#define DMA2_FLAG_TC3 ((uint32_t)0x10000200) +#define DMA2_FLAG_HT3 ((uint32_t)0x10000400) +#define DMA2_FLAG_TE3 ((uint32_t)0x10000800) +#define DMA2_FLAG_GL4 ((uint32_t)0x10001000) +#define DMA2_FLAG_TC4 ((uint32_t)0x10002000) +#define DMA2_FLAG_HT4 ((uint32_t)0x10004000) +#define DMA2_FLAG_TE4 ((uint32_t)0x10008000) +#define DMA2_FLAG_GL5 ((uint32_t)0x10010000) +#define DMA2_FLAG_TC5 ((uint32_t)0x10020000) +#define DMA2_FLAG_HT5 ((uint32_t)0x10040000) +#define DMA2_FLAG_TE5 ((uint32_t)0x10080000) +#define DMA2_FLAG_GL6 ((uint32_t)0x10100000) +#define DMA2_FLAG_TC6 ((uint32_t)0x10200000) +#define DMA2_FLAG_HT6 ((uint32_t)0x10400000) +#define DMA2_FLAG_TE6 ((uint32_t)0x10800000) +#define DMA2_FLAG_GL7 ((uint32_t)0x11000000) +#define DMA2_FLAG_TC7 ((uint32_t)0x12000000) +#define DMA2_FLAG_HT7 ((uint32_t)0x14000000) +#define DMA2_FLAG_TE7 ((uint32_t)0x18000000) + +#define DMA2_FLAG_GL8 ((uint32_t)0x20000001) +#define DMA2_FLAG_TC8 ((uint32_t)0x20000002) +#define DMA2_FLAG_HT8 ((uint32_t)0x20000004) +#define DMA2_FLAG_TE8 ((uint32_t)0x20000008) +#define DMA2_FLAG_GL9 ((uint32_t)0x20000010) +#define DMA2_FLAG_TC9 ((uint32_t)0x20000020) +#define DMA2_FLAG_HT9 ((uint32_t)0x20000040) +#define DMA2_FLAG_TE9 ((uint32_t)0x20000080) +#define DMA2_FLAG_GL10 ((uint32_t)0x20000100) +#define DMA2_FLAG_TC10 ((uint32_t)0x20000200) +#define DMA2_FLAG_HT10 ((uint32_t)0x20000400) +#define DMA2_FLAG_TE10 ((uint32_t)0x20000800) +#define DMA2_FLAG_GL11 ((uint32_t)0x20001000) +#define DMA2_FLAG_TC11 ((uint32_t)0x20002000) +#define DMA2_FLAG_HT11 ((uint32_t)0x20004000) +#define DMA2_FLAG_TE11 ((uint32_t)0x20008000) + + +void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx); +void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct); +void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct); +void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState); +void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState); +void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); +uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx); +FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG); +void DMA_ClearFlag(uint32_t DMAy_FLAG); +ITStatus DMA_GetITStatus(uint32_t DMAy_IT); +void DMA_ClearITPendingBit(uint32_t DMAy_IT); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dvp.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dvp.h new file mode 100755 index 000000000..cbf2cf436 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_dvp.h @@ -0,0 +1,67 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dvp.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* DVP firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_DVP_H +#define __CH32V30x_DVP_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* DVP Data Mode */ +typedef enum +{ + Video_Mode = 0, + JPEG_Mode, +}DVP_Data_ModeTypeDef; + + +/* DVP DMA */ +typedef enum +{ + DVP_DMA_Disable = 0, + DVP_DMA_Enable, +}DVP_DMATypeDef; + +/* DVP FLAG and FIFO Reset */ +typedef enum +{ + DVP_FLAG_FIFO_RESET_Disable = 0, + DVP_FLAG_FIFO_RESET_Enable, +}DVP_FLAG_FIFO_RESETTypeDef; + +/* DVP RX Reset */ +typedef enum +{ + DVP_RX_RESET_Disable = 0, + DVP_RX_RESET_Enable, +}DVP_RX_RESETTypeDef; + + + +void DVP_INTCfg( uint8_t s, uint8_t i ); +void DVP_Mode( uint8_t s, DVP_Data_ModeTypeDef i); +void DVP_Cfg( DVP_DMATypeDef s, DVP_FLAG_FIFO_RESETTypeDef i, DVP_RX_RESETTypeDef j); + + + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_eth.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_eth.h new file mode 100755 index 000000000..62ae39348 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_eth.h @@ -0,0 +1,1333 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_eth.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* ETH firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_ETH_H +#define __CH32V30x_ETH_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +#define PHY_10BASE_T_LINKED 1 +#define PHY_10BASE_T_NOT_LINKED 0 + +#define DMA_TPS_Mask ((uint32_t)0x00700000) +#define DMA_RPS_Mask ((uint32_t)0x000E0000) + +/* ETH Init structure definition */ +typedef struct { + uint32_t ETH_AutoNegotiation; /* Selects or not the AutoNegotiation mode for the external PHY + The AutoNegotiation allows an automatic setting of the Speed (10/100Mbps) + and the mode (half/full-duplex). + This parameter can be a value of @ref ETH_AutoNegotiation */ + + uint32_t ETH_Watchdog; /* Selects or not the Watchdog timer + When enabled, the MAC allows no more then 2048 bytes to be received. + When disabled, the MAC can receive up to 16384 bytes. + This parameter can be a value of @ref ETH_watchdog */ + + uint32_t ETH_Jabber; /* Selects or not Jabber timer + When enabled, the MAC allows no more then 2048 bytes to be sent. + When disabled, the MAC can send up to 16384 bytes. + This parameter can be a value of @ref ETH_Jabber */ + + uint32_t ETH_InterFrameGap; /* Selects the minimum IFG between frames during transmission + This parameter can be a value of @ref ETH_Inter_Frame_Gap */ + + uint32_t ETH_CarrierSense; /* Selects or not the Carrier Sense + This parameter can be a value of @ref ETH_Carrier_Sense */ + + uint32_t ETH_Speed; /* Sets the Ethernet speed: 10/100 Mbps + This parameter can be a value of @ref ETH_Speed */ + + uint32_t ETH_ReceiveOwn; /* Selects or not the ReceiveOwn + ReceiveOwn allows the reception of frames when the TX_EN signal is asserted + in Half-Duplex mode + This parameter can be a value of @ref ETH_Receive_Own */ + + uint32_t ETH_LoopbackMode; /* Selects or not the internal MAC MII Loopback mode + This parameter can be a value of @ref ETH_Loop_Back_Mode */ + + uint32_t ETH_Mode; /* Selects the MAC duplex mode: Half-Duplex or Full-Duplex mode + This parameter can be a value of @ref ETH_Duplex_Mode */ + + uint32_t ETH_ChecksumOffload; /* Selects or not the IPv4 checksum checking for received frame payloads' TCP/UDP/ICMP headers. + This parameter can be a value of @ref ETH_Checksum_Offload */ + + uint32_t ETH_RetryTransmission; /* Selects or not the MAC attempt retries transmission, based on the settings of BL, + when a colision occurs (Half-Duplex mode) + This parameter can be a value of @ref ETH_Retry_Transmission */ + + uint32_t ETH_AutomaticPadCRCStrip; /* Selects or not the Automatic MAC Pad/CRC Stripping + This parameter can be a value of @ref ETH_Automatic_Pad_CRC_Strip */ + + uint32_t ETH_BackOffLimit; /* Selects the BackOff limit value + This parameter can be a value of @ref ETH_Back_Off_Limit */ + + uint32_t ETH_DeferralCheck; /* Selects or not the deferral check function (Half-Duplex mode) + This parameter can be a value of @ref ETH_Deferral_Check */ + + uint32_t ETH_ReceiveAll; /* Selects or not all frames reception by the MAC (No fitering) + This parameter can be a value of @ref ETH_Receive_All */ + + uint32_t ETH_SourceAddrFilter; /* Selects the Source Address Filter mode + This parameter can be a value of @ref ETH_Source_Addr_Filter */ + + uint32_t ETH_PassControlFrames; /* Sets the forwarding mode of the control frames (including unicast and multicast PAUSE frames) + This parameter can be a value of @ref ETH_Pass_Control_Frames */ + + uint32_t ETH_BroadcastFramesReception; /* Selects or not the reception of Broadcast Frames + This parameter can be a value of @ref ETH_Broadcast_Frames_Reception */ + + uint32_t ETH_DestinationAddrFilter; /* Sets the destination filter mode for both unicast and multicast frames + This parameter can be a value of @ref ETH_Destination_Addr_Filter */ + + uint32_t ETH_PromiscuousMode; /* Selects or not the Promiscuous Mode + This parameter can be a value of @ref ETH_Promiscuous_Mode */ + + uint32_t ETH_MulticastFramesFilter; /* Selects the Multicast Frames filter mode: None/HashTableFilter/PerfectFilter/PerfectHashTableFilter + This parameter can be a value of @ref ETH_Multicast_Frames_Filter */ + + uint32_t ETH_UnicastFramesFilter; /* Selects the Unicast Frames filter mode: HashTableFilter/PerfectFilter/PerfectHashTableFilter + This parameter can be a value of @ref ETH_Unicast_Frames_Filter */ + + uint32_t ETH_HashTableHigh; /* This field holds the higher 32 bits of Hash table. */ + + uint32_t ETH_HashTableLow; /* This field holds the lower 32 bits of Hash table. */ + + uint32_t ETH_PauseTime; /* This field holds the value to be used in the Pause Time field in the + transmit control frame */ + + uint32_t ETH_ZeroQuantaPause; /* Selects or not the automatic generation of Zero-Quanta Pause Control frames + This parameter can be a value of @ref ETH_Zero_Quanta_Pause */ + + uint32_t ETH_PauseLowThreshold; /* This field configures the threshold of the PAUSE to be checked for + automatic retransmission of PAUSE Frame + This parameter can be a value of @ref ETH_Pause_Low_Threshold */ + + uint32_t ETH_UnicastPauseFrameDetect; /* Selects or not the MAC detection of the Pause frames (with MAC Address0 + unicast address and unique multicast address) + This parameter can be a value of @ref ETH_Unicast_Pause_Frame_Detect */ + + uint32_t ETH_ReceiveFlowControl; /* Enables or disables the MAC to decode the received Pause frame and + disable its transmitter for a specified time (Pause Time) + This parameter can be a value of @ref ETH_Receive_Flow_Control */ + + uint32_t ETH_TransmitFlowControl; /* Enables or disables the MAC to transmit Pause frames (Full-Duplex mode) + or the MAC back-pressure operation (Half-Duplex mode) + This parameter can be a value of @ref ETH_Transmit_Flow_Control */ + + uint32_t ETH_VLANTagComparison; /* Selects the 12-bit VLAN identifier or the complete 16-bit VLAN tag for + comparison and filtering + This parameter can be a value of @ref ETH_VLAN_Tag_Comparison */ + + uint32_t ETH_VLANTagIdentifier; /* Holds the VLAN tag identifier for receive frames */ + + uint32_t ETH_DropTCPIPChecksumErrorFrame; /* Selects or not the Dropping of TCP/IP Checksum Error Frames + This parameter can be a value of @ref ETH_Drop_TCP_IP_Checksum_Error_Frame */ + + uint32_t ETH_ReceiveStoreForward; /* Enables or disables the Receive store and forward mode + This parameter can be a value of @ref ETH_Receive_Store_Forward */ + + uint32_t ETH_FlushReceivedFrame; /* Enables or disables the flushing of received frames + This parameter can be a value of @ref ETH_Flush_Received_Frame */ + + uint32_t ETH_TransmitStoreForward; /* Enables or disables Transmit store and forward mode + This parameter can be a value of @ref ETH_Transmit_Store_Forward */ + + uint32_t ETH_TransmitThresholdControl; /* Selects or not the Transmit Threshold Control + This parameter can be a value of @ref ETH_Transmit_Threshold_Control */ + + uint32_t ETH_ForwardErrorFrames; /* Selects or not the forward to the DMA of erroneous frames + This parameter can be a value of @ref ETH_Forward_Error_Frames */ + + uint32_t ETH_ForwardUndersizedGoodFrames; /* Enables or disables the Rx FIFO to forward Undersized frames (frames with no Error + and length less than 64 bytes) including pad-bytes and CRC) + This parameter can be a value of @ref ETH_Forward_Undersized_Good_Frames */ + + uint32_t ETH_ReceiveThresholdControl; /* Selects the threshold level of the Receive FIFO + This parameter can be a value of @ref ETH_Receive_Threshold_Control */ + + uint32_t ETH_SecondFrameOperate; /* Selects or not the Operate on second frame mode, which allows the DMA to process a second + frame of Transmit data even before obtaining the status for the first frame. + This parameter can be a value of @ref ETH_Second_Frame_Operate */ + + uint32_t ETH_AddressAlignedBeats; /* Enables or disables the Address Aligned Beats + This parameter can be a value of @ref ETH_Address_Aligned_Beats */ + + uint32_t ETH_FixedBurst; /* Enables or disables the AHB Master interface fixed burst transfers + This parameter can be a value of @ref ETH_Fixed_Burst */ + + uint32_t ETH_RxDMABurstLength; /* Indicates the maximum number of beats to be transferred in one Rx DMA transaction + This parameter can be a value of @ref ETH_Rx_DMA_Burst_Length */ + + uint32_t ETH_TxDMABurstLength; /* Indicates sthe maximum number of beats to be transferred in one Tx DMA transaction + This parameter can be a value of @ref ETH_Tx_DMA_Burst_Length */ + + uint32_t ETH_DescriptorSkipLength; /* Specifies the number of word to skip between two unchained descriptors (Ring mode) */ + + uint32_t ETH_DMAArbitration; /* Selects the DMA Tx/Rx arbitration + This parameter can be a value of @ref ETH_DMA_Arbitration */ +}ETH_InitTypeDef; + + + +/* ETH delay.Just for Ethernet */ +#define _eth_delay_ ETH_Delay /* Default _eth_delay_ function with less precise timing */ + +/* definition for Ethernet frame */ +#define ETH_MAX_PACKET_SIZE 1520 /* ETH_HEADER + ETH_EXTRA + MAX_ETH_PAYLOAD + ETH_CRC */ +#define ETH_HEADER 14 /* 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */ +#define ETH_CRC 4 /* Ethernet CRC */ +#define ETH_EXTRA 2 /* Extra bytes in some cases */ +#define VLAN_TAG 4 /* optional 802.1q VLAN Tag */ +#define MIN_ETH_PAYLOAD 46 /* Minimum Ethernet payload size */ +#define MAX_ETH_PAYLOAD 1500 /* Maximum Ethernet payload size */ +#define JUMBO_FRAME_PAYLOAD 9000 /* Jumbo frame payload size */ + +/* ETH DMA structure definition */ +typedef struct +{ + uint32_t Status; /* Status */ + uint32_t ControlBufferSize; /* Control and Buffer1, Buffer2 lengths */ + uint32_t Buffer1Addr; /* Buffer1 address pointer */ + uint32_t Buffer2NextDescAddr; /* Buffer2 or next descriptor address pointer */ +} ETH_DMADESCTypeDef; + +/** + DMA Tx Desciptor + ----------------------------------------------------------------------------------------------- + TDES0 | OWN(31) | CTRL[30:26] | Reserved[25:24] | CTRL[23:20] | Reserved[19:17] | Status[16:0] | + ----------------------------------------------------------------------------------------------- + TDES1 | Reserved[31:29] | Buffer2 ByteCount[28:16] | Reserved[15:13] | Buffer1 ByteCount[12:0] | + ----------------------------------------------------------------------------------------------- + TDES2 | Buffer1 Address [31:0] | + ----------------------------------------------------------------------------------------------- + TDES3 | Buffer2 Address [31:0] / Next Desciptor Address [31:0] | + ------------------------------------------------------------------------------------------------ +*/ + + +/* Bit or field definition of TDES0 register (DMA Tx descriptor status register)*/ +#define ETH_DMATxDesc_OWN ((uint32_t)0x80000000) /* OWN bit: descriptor is owned by DMA engine */ +#define ETH_DMATxDesc_IC ((uint32_t)0x40000000) /* Interrupt on Completion */ +#define ETH_DMATxDesc_LS ((uint32_t)0x20000000) /* Last Segment */ +#define ETH_DMATxDesc_FS ((uint32_t)0x10000000) /* First Segment */ +#define ETH_DMATxDesc_DC ((uint32_t)0x08000000) /* Disable CRC */ +#define ETH_DMATxDesc_DP ((uint32_t)0x04000000) /* Disable Padding */ +#define ETH_DMATxDesc_TTSE ((uint32_t)0x02000000) /* Transmit Time Stamp Enable */ +#define ETH_DMATxDesc_CIC ((uint32_t)0x00C00000) /* Checksum Insertion Control: 4 cases */ +#define ETH_DMATxDesc_CIC_ByPass ((uint32_t)0x00000000) /* Do Nothing: Checksum Engine is bypassed */ +#define ETH_DMATxDesc_CIC_IPV4Header ((uint32_t)0x00400000) /* IPV4 header Checksum Insertion */ +#define ETH_DMATxDesc_CIC_TCPUDPICMP_Segment ((uint32_t)0x00800000) /* TCP/UDP/ICMP Checksum Insertion calculated over segment only */ +#define ETH_DMATxDesc_CIC_TCPUDPICMP_Full ((uint32_t)0x00C00000) /* TCP/UDP/ICMP Checksum Insertion fully calculated */ +#define ETH_DMATxDesc_TER ((uint32_t)0x00200000) /* Transmit End of Ring */ +#define ETH_DMATxDesc_TCH ((uint32_t)0x00100000) /* Second Address Chained */ +#define ETH_DMATxDesc_TTSS ((uint32_t)0x00020000) /* Tx Time Stamp Status */ +#define ETH_DMATxDesc_IHE ((uint32_t)0x00010000) /* IP Header Error */ +#define ETH_DMATxDesc_ES ((uint32_t)0x00008000) /* Error summary: OR of the following bits: UE || ED || EC || LCO || NC || LCA || FF || JT */ +#define ETH_DMATxDesc_JT ((uint32_t)0x00004000) /* Jabber Timeout */ +#define ETH_DMATxDesc_FF ((uint32_t)0x00002000) /* Frame Flushed: DMA/MTL flushed the frame due to SW flush */ +#define ETH_DMATxDesc_PCE ((uint32_t)0x00001000) /* Payload Checksum Error */ +#define ETH_DMATxDesc_LCA ((uint32_t)0x00000800) /* Loss of Carrier: carrier lost during tramsmission */ +#define ETH_DMATxDesc_NC ((uint32_t)0x00000400) /* No Carrier: no carrier signal from the tranceiver */ +#define ETH_DMATxDesc_LCO ((uint32_t)0x00000200) /* Late Collision: transmission aborted due to collision */ +#define ETH_DMATxDesc_EC ((uint32_t)0x00000100) /* Excessive Collision: transmission aborted after 16 collisions */ +#define ETH_DMATxDesc_VF ((uint32_t)0x00000080) /* VLAN Frame */ +#define ETH_DMATxDesc_CC ((uint32_t)0x00000078) /* Collision Count */ +#define ETH_DMATxDesc_ED ((uint32_t)0x00000004) /* Excessive Deferral */ +#define ETH_DMATxDesc_UF ((uint32_t)0x00000002) /* Underflow Error: late data arrival from the memory */ +#define ETH_DMATxDesc_DB ((uint32_t)0x00000001) /* Deferred Bit */ + +/* Field definition of TDES1 register */ +#define ETH_DMATxDesc_TBS2 ((uint32_t)0x1FFF0000) /* Transmit Buffer2 Size */ +#define ETH_DMATxDesc_TBS1 ((uint32_t)0x00001FFF) /* Transmit Buffer1 Size */ + +/* Field definition of TDES2 register */ +#define ETH_DMATxDesc_B1AP ((uint32_t)0xFFFFFFFF) /* Buffer1 Address Pointer */ + +/* Field definition of TDES3 register */ +#define ETH_DMATxDesc_B2AP ((uint32_t)0xFFFFFFFF) /* Buffer2 Address Pointer */ + +/** + DMA Rx Desciptor + --------------------------------------------------------------------------------------------------------------------- + RDES0 | OWN(31) | Status [30:0] | + --------------------------------------------------------------------------------------------------------------------- + RDES1 | CTRL(31) | Reserved[30:29] | Buffer2 ByteCount[28:16] | CTRL[15:14] | Reserved(13) | Buffer1 ByteCount[12:0] | + --------------------------------------------------------------------------------------------------------------------- + RDES2 | Buffer1 Address [31:0] | + --------------------------------------------------------------------------------------------------------------------- + RDES3 | Buffer2 Address [31:0] / Next Desciptor Address [31:0] | + ---------------------------------------------------------------------------------------------------------------------- +*/ + +/* Bit or field definition of RDES0 register (DMA Rx descriptor status register) */ +#define ETH_DMARxDesc_OWN ((uint32_t)0x80000000) /* OWN bit: descriptor is owned by DMA engine */ +#define ETH_DMARxDesc_AFM ((uint32_t)0x40000000) /* DA Filter Fail for the rx frame */ +#define ETH_DMARxDesc_FL ((uint32_t)0x3FFF0000) /* Receive descriptor frame length */ +#define ETH_DMARxDesc_ES ((uint32_t)0x00008000) /* Error summary: OR of the following bits: DE || OE || IPC || LC || RWT || RE || CE */ +#define ETH_DMARxDesc_DE ((uint32_t)0x00004000) /* Desciptor error: no more descriptors for receive frame */ +#define ETH_DMARxDesc_SAF ((uint32_t)0x00002000) /* SA Filter Fail for the received frame */ +#define ETH_DMARxDesc_LE ((uint32_t)0x00001000) /* Frame size not matching with length field */ +#define ETH_DMARxDesc_OE ((uint32_t)0x00000800) /* Overflow Error: Frame was damaged due to buffer overflow */ +#define ETH_DMARxDesc_VLAN ((uint32_t)0x00000400) /* VLAN Tag: received frame is a VLAN frame */ +#define ETH_DMARxDesc_FS ((uint32_t)0x00000200) /* First descriptor of the frame */ +#define ETH_DMARxDesc_LS ((uint32_t)0x00000100) /* Last descriptor of the frame */ +#define ETH_DMARxDesc_IPV4HCE ((uint32_t)0x00000080) /* IPC Checksum Error: Rx Ipv4 header checksum error */ +#define ETH_DMARxDesc_LC ((uint32_t)0x00000040) /* Late collision occurred during reception */ +#define ETH_DMARxDesc_FT ((uint32_t)0x00000020) /* Frame type - Ethernet, otherwise 802.3 */ +#define ETH_DMARxDesc_RWT ((uint32_t)0x00000010) /* Receive Watchdog Timeout: watchdog timer expired during reception */ +#define ETH_DMARxDesc_RE ((uint32_t)0x00000008) /* Receive error: error reported by MII interface */ +#define ETH_DMARxDesc_DBE ((uint32_t)0x00000004) /* Dribble bit error: frame contains non int multiple of 8 bits */ +#define ETH_DMARxDesc_CE ((uint32_t)0x00000002) /* CRC error */ +#define ETH_DMARxDesc_MAMPCE ((uint32_t)0x00000001) /* Rx MAC Address/Payload Checksum Error: Rx MAC address matched/ Rx Payload Checksum Error */ + +/* Bit or field definition of RDES1 register */ +#define ETH_DMARxDesc_DIC ((uint32_t)0x80000000) /* Disable Interrupt on Completion */ +#define ETH_DMARxDesc_RBS2 ((uint32_t)0x1FFF0000) /* Receive Buffer2 Size */ +#define ETH_DMARxDesc_RER ((uint32_t)0x00008000) /* Receive End of Ring */ +#define ETH_DMARxDesc_RCH ((uint32_t)0x00004000) /* Second Address Chained */ +#define ETH_DMARxDesc_RBS1 ((uint32_t)0x00001FFF) /* Receive Buffer1 Size */ + +/* Field definition of RDES2 register */ +#define ETH_DMARxDesc_B1AP ((uint32_t)0xFFFFFFFF) /* Buffer1 Address Pointer */ + +/* Field definition of RDES3 register */ +#define ETH_DMARxDesc_B2AP ((uint32_t)0xFFFFFFFF) /* Buffer2 Address Pointer */ + +/* Timeout threshold of Reading or writing PHY registers */ +#define PHY_READ_TO ((uint32_t)0x004FFFFF) +#define PHY_WRITE_TO ((uint32_t)0x0004FFFF) + +/* Delay time after reset PHY */ +#define PHY_ResetDelay ((uint32_t)0x000FFFFF) + +/* Delay time after configure PHY */ +#define PHY_ConfigDelay ((uint32_t)0x00FFFFFF) + +/* PHY basic register */ +#define PHY_BCR 0x0 /*PHY transceiver Basic Control Register */ +#define PHY_BSR 0x01 /*PHY transceiver Basic Status Register */ +#define PHY_BMCR PHY_BCR +#define PHY_BMSR PHY_BSR +#define PHY_STATUS 0x10 +#define PHY_MDIX 0x1E + +/* Bit or field definition for PHY basic control register */ +#define PHY_Reset ((uint16_t)0x8000) /* PHY Reset */ +#define PHY_Loopback ((uint16_t)0x4000) /* Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /* Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /* Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /* Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /* Set the half-duplex mode at 10 Mb/s */ +#define PHY_AutoNegotiation ((uint16_t)0x1000) /* Enable auto-negotiation function */ +#define PHY_Restart_AutoNegotiation ((uint16_t)0x0200) /* Restart auto-negotiation function */ +#define PHY_Powerdown ((uint16_t)0x0800) /* Select the power down mode */ +#define PHY_Isolate ((uint16_t)0x0400) /* Isolate PHY from MII */ + +/* Bit or field definition for PHY basic status register */ +#define PHY_AutoNego_Complete ((uint16_t)0x0020) /* Auto-Negotioation process completed */ +#define PHY_Linked_Status ((uint16_t)0x0004) /* Valid link established */ +#define PHY_Jabber_detection ((uint16_t)0x0002) /* Jabber condition detected */ +#define PHY_RMII_Mode ((uint16_t)0x0020) /* RMII */ + + +/* Internal 10BASE-T PHY 50R*4 pull-up resistance enable or disable */ +#define ETH_Internal_Pull_Up_Res_Enable ((uint32_t)0x00100000) +#define ETH_Internal_Pull_Up_Res_Disable ((uint32_t)0x00000000) + +/* MAC autoNegotiation enable or disable */ +#define ETH_AutoNegotiation_Enable ((uint32_t)0x00000001) +#define ETH_AutoNegotiation_Disable ((uint32_t)0x00000000) + +/* MAC watchdog enable or disable */ +#define ETH_Watchdog_Enable ((uint32_t)0x00000000) +#define ETH_Watchdog_Disable ((uint32_t)0x00800000) + +/* Bit description - MAC jabber enable or disable */ +#define ETH_Jabber_Enable ((uint32_t)0x00000000) +#define ETH_Jabber_Disable ((uint32_t)0x00400000) + +/* Value of minimum IFG between frames during transmission */ +#define ETH_InterFrameGap_96Bit ((uint32_t)0x00000000) /* minimum IFG between frames during transmission is 96Bit */ +#define ETH_InterFrameGap_88Bit ((uint32_t)0x00020000) /* minimum IFG between frames during transmission is 88Bit */ +#define ETH_InterFrameGap_80Bit ((uint32_t)0x00040000) /* minimum IFG between frames during transmission is 80Bit */ +#define ETH_InterFrameGap_72Bit ((uint32_t)0x00060000) /* minimum IFG between frames during transmission is 72Bit */ +#define ETH_InterFrameGap_64Bit ((uint32_t)0x00080000) /* minimum IFG between frames during transmission is 64Bit */ +#define ETH_InterFrameGap_56Bit ((uint32_t)0x000A0000) /* minimum IFG between frames during transmission is 56Bit */ +#define ETH_InterFrameGap_48Bit ((uint32_t)0x000C0000) /* minimum IFG between frames during transmission is 48Bit */ +#define ETH_InterFrameGap_40Bit ((uint32_t)0x000E0000) /* minimum IFG between frames during transmission is 40Bit */ + +/* MAC carrier sense enable or disable */ +#define ETH_CarrierSense_Enable ((uint32_t)0x00000000) +#define ETH_CarrierSense_Disable ((uint32_t)0x00010000) + +/* MAC speed */ +#define ETH_Speed_10M ((uint32_t)0x00000000) +#define ETH_Speed_100M ((uint32_t)0x00004000) +#define ETH_Speed_1000M ((uint32_t)0x00008000) + +/* MAC receive own enable or disable */ +#define ETH_ReceiveOwn_Enable ((uint32_t)0x00000000) +#define ETH_ReceiveOwn_Disable ((uint32_t)0x00002000) + +/* MAC Loopback mode enable or disable */ +#define ETH_LoopbackMode_Enable ((uint32_t)0x00001000) +#define ETH_LoopbackMode_Disable ((uint32_t)0x00000000) + +/* MAC fullDuplex or halfDuplex */ +#define ETH_Mode_FullDuplex ((uint32_t)0x00000800) +#define ETH_Mode_HalfDuplex ((uint32_t)0x00000000) + +/* MAC offload checksum enable or disable */ +#define ETH_ChecksumOffload_Enable ((uint32_t)0x00000400) +#define ETH_ChecksumOffload_Disable ((uint32_t)0x00000000) + +/* MAC transmission retry enable or disable */ +#define ETH_RetryTransmission_Enable ((uint32_t)0x00000000) +#define ETH_RetryTransmission_Disable ((uint32_t)0x00000200) + +/* MAC automatic pad CRC strip enable or disable */ +#define ETH_AutomaticPadCRCStrip_Enable ((uint32_t)0x00000080) +#define ETH_AutomaticPadCRCStrip_Disable ((uint32_t)0x00000000) + +/* MAC backoff limitation */ +#define ETH_BackOffLimit_10 ((uint32_t)0x00000000) +#define ETH_BackOffLimit_8 ((uint32_t)0x00000020) +#define ETH_BackOffLimit_4 ((uint32_t)0x00000040) +#define ETH_BackOffLimit_1 ((uint32_t)0x00000060) + +/* MAC deferral check enable or disable */ +#define ETH_DeferralCheck_Enable ((uint32_t)0x00000010) +#define ETH_DeferralCheck_Disable ((uint32_t)0x00000000) + +/* Bit description : MAC receive all frame enable or disable */ +#define ETH_ReceiveAll_Enable ((uint32_t)0x80000000) +#define ETH_ReceiveAll_Disable ((uint32_t)0x00000000) + +/* MAC backoff limitation */ +#define ETH_SourceAddrFilter_Normal_Enable ((uint32_t)0x00000200) +#define ETH_SourceAddrFilter_Inverse_Enable ((uint32_t)0x00000300) +#define ETH_SourceAddrFilter_Disable ((uint32_t)0x00000000) + +/* MAC Pass control frames */ +#define ETH_PassControlFrames_BlockAll ((uint32_t)0x00000040) /* MAC filters all control frames from reaching the application */ +#define ETH_PassControlFrames_ForwardAll ((uint32_t)0x00000080) /* MAC forwards all control frames to application even if they fail the Address Filter */ +#define ETH_PassControlFrames_ForwardPassedAddrFilter ((uint32_t)0x000000C0) /* MAC forwards control frames that pass the Address Filter. */ + +/* MAC broadcast frames reception */ +#define ETH_BroadcastFramesReception_Enable ((uint32_t)0x00000000) +#define ETH_BroadcastFramesReception_Disable ((uint32_t)0x00000020) + +/* MAC destination address filter */ +#define ETH_DestinationAddrFilter_Normal ((uint32_t)0x00000000) +#define ETH_DestinationAddrFilter_Inverse ((uint32_t)0x00000008) + +/* MAC Promiscuous mode enable or disable */ +#define ETH_PromiscuousMode_Enable ((uint32_t)0x00000001) +#define ETH_PromiscuousMode_Disable ((uint32_t)0x00000000) + +/* MAC multicast frames filter */ +#define ETH_MulticastFramesFilter_PerfectHashTable ((uint32_t)0x00000404) +#define ETH_MulticastFramesFilter_HashTable ((uint32_t)0x00000004) +#define ETH_MulticastFramesFilter_Perfect ((uint32_t)0x00000000) +#define ETH_MulticastFramesFilter_None ((uint32_t)0x00000010) + +/* MAC unicast frames filter */ +#define ETH_UnicastFramesFilter_PerfectHashTable ((uint32_t)0x00000402) +#define ETH_UnicastFramesFilter_HashTable ((uint32_t)0x00000002) +#define ETH_UnicastFramesFilter_Perfect ((uint32_t)0x00000000) + +/* Bit description : MAC zero quanta pause */ +#define ETH_ZeroQuantaPause_Enable ((uint32_t)0x00000000) +#define ETH_ZeroQuantaPause_Disable ((uint32_t)0x00000080) + +/* Field description : MAC pause low threshold */ +#define ETH_PauseLowThreshold_Minus4 ((uint32_t)0x00000000) /* Pause time minus 4 slot times */ +#define ETH_PauseLowThreshold_Minus28 ((uint32_t)0x00000010) /* Pause time minus 28 slot times */ +#define ETH_PauseLowThreshold_Minus144 ((uint32_t)0x00000020) /* Pause time minus 144 slot times */ +#define ETH_PauseLowThreshold_Minus256 ((uint32_t)0x00000030) /* Pause time minus 256 slot times */ + +/* MAC unicast pause frame detect enable or disable*/ +#define ETH_UnicastPauseFrameDetect_Enable ((uint32_t)0x00000008) +#define ETH_UnicastPauseFrameDetect_Disable ((uint32_t)0x00000000) + +/* MAC receive flow control frame enable or disable */ +#define ETH_ReceiveFlowControl_Enable ((uint32_t)0x00000004) +#define ETH_ReceiveFlowControl_Disable ((uint32_t)0x00000000) + +/* MAC transmit flow control enable or disable */ +#define ETH_TransmitFlowControl_Enable ((uint32_t)0x00000002) +#define ETH_TransmitFlowControl_Disable ((uint32_t)0x00000000) + +/* MAC VLAN tag comparison */ +#define ETH_VLANTagComparison_12Bit ((uint32_t)0x00010000) +#define ETH_VLANTagComparison_16Bit ((uint32_t)0x00000000) + +/* MAC flag */ +#define ETH_MAC_FLAG_TST ((uint32_t)0x00000200) /* Time stamp trigger flag (on MAC) */ +#define ETH_MAC_FLAG_MMCT ((uint32_t)0x00000040) /* MMC transmit flag */ +#define ETH_MAC_FLAG_MMCR ((uint32_t)0x00000020) /* MMC receive flag */ +#define ETH_MAC_FLAG_MMC ((uint32_t)0x00000010) /* MMC flag (on MAC) */ +#define ETH_MAC_FLAG_PMT ((uint32_t)0x00000008) /* PMT flag (on MAC) */ + +/* MAC interrupt */ +#define ETH_MAC_IT_TST ((uint32_t)0x00000200) /* Time stamp trigger interrupt (on MAC) */ +#define ETH_MAC_IT_MMCT ((uint32_t)0x00000040) /* MMC transmit interrupt */ +#define ETH_MAC_IT_MMCR ((uint32_t)0x00000020) /* MMC receive interrupt */ +#define ETH_MAC_IT_MMC ((uint32_t)0x00000010) /* MMC interrupt (on MAC) */ +#define ETH_MAC_IT_PMT ((uint32_t)0x00000008) /* PMT interrupt (on MAC) */ + +/* MAC address */ +#define ETH_MAC_Address0 ((uint32_t)0x00000000) +#define ETH_MAC_Address1 ((uint32_t)0x00000008) +#define ETH_MAC_Address2 ((uint32_t)0x00000010) +#define ETH_MAC_Address3 ((uint32_t)0x00000018) + +/* MAC address filter select */ +#define ETH_MAC_AddressFilter_SA ((uint32_t)0x00000000) +#define ETH_MAC_AddressFilter_DA ((uint32_t)0x00000008) + +/* MAC address mask */ +#define ETH_MAC_AddressMask_Byte6 ((uint32_t)0x20000000) /* Mask MAC Address high reg bits [15:8] */ +#define ETH_MAC_AddressMask_Byte5 ((uint32_t)0x10000000) /* Mask MAC Address high reg bits [7:0] */ +#define ETH_MAC_AddressMask_Byte4 ((uint32_t)0x08000000) /* Mask MAC Address low reg bits [31:24] */ +#define ETH_MAC_AddressMask_Byte3 ((uint32_t)0x04000000) /* Mask MAC Address low reg bits [23:16] */ +#define ETH_MAC_AddressMask_Byte2 ((uint32_t)0x02000000) /* Mask MAC Address low reg bits [15:8] */ +#define ETH_MAC_AddressMask_Byte1 ((uint32_t)0x01000000) /* Mask MAC Address low reg bits [70] */ + + +/******************************************************************************/ +/* */ +/* MAC Descriptor Register */ +/* */ +/******************************************************************************/ + +/* DMA descriptor segment */ +#define ETH_DMATxDesc_LastSegment ((uint32_t)0x40000000) /* Last Segment */ +#define ETH_DMATxDesc_FirstSegment ((uint32_t)0x20000000) /* First Segment */ + +/* DMA descriptor checksum setting */ +#define ETH_DMATxDesc_ChecksumByPass ((uint32_t)0x00000000) /* Checksum engine bypass */ +#define ETH_DMATxDesc_ChecksumIPV4Header ((uint32_t)0x00400000) /* IPv4 header checksum insertion */ +#define ETH_DMATxDesc_ChecksumTCPUDPICMPSegment ((uint32_t)0x00800000) /* TCP/UDP/ICMP checksum insertion. Pseudo header checksum is assumed to be present */ +#define ETH_DMATxDesc_ChecksumTCPUDPICMPFull ((uint32_t)0x00C00000) /* TCP/UDP/ICMP checksum fully in hardware including pseudo header */ + +/* DMA RX & TX buffer */ +#define ETH_DMARxDesc_Buffer1 ((uint32_t)0x00000000) /* DMA Rx Desc Buffer1 */ +#define ETH_DMARxDesc_Buffer2 ((uint32_t)0x00000001) /* DMA Rx Desc Buffer2 */ + + +/******************************************************************************/ +/* */ +/* ETH DMA Register */ +/* */ +/******************************************************************************/ + +/* DMA drop TCPIP checksum error frame enable or disable */ +#define ETH_DropTCPIPChecksumErrorFrame_Enable ((uint32_t)0x00000000) +#define ETH_DropTCPIPChecksumErrorFrame_Disable ((uint32_t)0x04000000) + +/* DMA receive store forward enable or disable */ +#define ETH_ReceiveStoreForward_Enable ((uint32_t)0x02000000) +#define ETH_ReceiveStoreForward_Disable ((uint32_t)0x00000000) + +/* DMA flush received frame enable or disable */ +#define ETH_FlushReceivedFrame_Enable ((uint32_t)0x00000000) +#define ETH_FlushReceivedFrame_Disable ((uint32_t)0x01000000) + +/* DMA transmit store forward enable or disable */ +#define ETH_TransmitStoreForward_Enable ((uint32_t)0x00200000) +#define ETH_TransmitStoreForward_Disable ((uint32_t)0x00000000) + +/* DMA transmit threshold control */ +#define ETH_TransmitThresholdControl_64Bytes ((uint32_t)0x00000000) /* threshold level of the MTL Transmit FIFO is 64 Bytes */ +#define ETH_TransmitThresholdControl_128Bytes ((uint32_t)0x00004000) /* threshold level of the MTL Transmit FIFO is 128 Bytes */ +#define ETH_TransmitThresholdControl_192Bytes ((uint32_t)0x00008000) /* threshold level of the MTL Transmit FIFO is 192 Bytes */ +#define ETH_TransmitThresholdControl_256Bytes ((uint32_t)0x0000C000) /* threshold level of the MTL Transmit FIFO is 256 Bytes */ +#define ETH_TransmitThresholdControl_40Bytes ((uint32_t)0x00010000) /* threshold level of the MTL Transmit FIFO is 40 Bytes */ +#define ETH_TransmitThresholdControl_32Bytes ((uint32_t)0x00014000) /* threshold level of the MTL Transmit FIFO is 32 Bytes */ +#define ETH_TransmitThresholdControl_24Bytes ((uint32_t)0x00018000) /* threshold level of the MTL Transmit FIFO is 24 Bytes */ +#define ETH_TransmitThresholdControl_16Bytes ((uint32_t)0x0001C000) /* threshold level of the MTL Transmit FIFO is 16 Bytes */ + +/* DMA forward error frames */ +#define ETH_ForwardErrorFrames_Enable ((uint32_t)0x00000080) +#define ETH_ForwardErrorFrames_Disable ((uint32_t)0x00000000) + +/* DMA forward undersized good frames enable or disable */ +#define ETH_ForwardUndersizedGoodFrames_Enable ((uint32_t)0x00000040) +#define ETH_ForwardUndersizedGoodFrames_Disable ((uint32_t)0x00000000) + +/* DMA receive threshold control */ +#define ETH_ReceiveThresholdControl_64Bytes ((uint32_t)0x00000000) /* threshold level of the MTL Receive FIFO is 64 Bytes */ +#define ETH_ReceiveThresholdControl_32Bytes ((uint32_t)0x00000008) /* threshold level of the MTL Receive FIFO is 32 Bytes */ +#define ETH_ReceiveThresholdControl_96Bytes ((uint32_t)0x00000010) /* threshold level of the MTL Receive FIFO is 96 Bytes */ +#define ETH_ReceiveThresholdControl_128Bytes ((uint32_t)0x00000018) /* threshold level of the MTL Receive FIFO is 128 Bytes */ + +/* DMA second frame operate enable or disable */ +#define ETH_SecondFrameOperate_Enable ((uint32_t)0x00000004) +#define ETH_SecondFrameOperate_Disable ((uint32_t)0x00000000) + +/* Address aligned beats enable or disable */ +#define ETH_AddressAlignedBeats_Enable ((uint32_t)0x02000000) +#define ETH_AddressAlignedBeats_Disable ((uint32_t)0x00000000) + +/* DMA Fixed burst enable or disable */ +#define ETH_FixedBurst_Enable ((uint32_t)0x00010000) +#define ETH_FixedBurst_Disable ((uint32_t)0x00000000) + + +/* RX DMA burst length */ +#define ETH_RxDMABurstLength_1Beat ((uint32_t)0x00020000) /* maximum number of beats to be transferred in one RxDMA transaction is 1 */ +#define ETH_RxDMABurstLength_2Beat ((uint32_t)0x00040000) /* maximum number of beats to be transferred in one RxDMA transaction is 2 */ +#define ETH_RxDMABurstLength_4Beat ((uint32_t)0x00080000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ +#define ETH_RxDMABurstLength_8Beat ((uint32_t)0x00100000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ +#define ETH_RxDMABurstLength_16Beat ((uint32_t)0x00200000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ +#define ETH_RxDMABurstLength_32Beat ((uint32_t)0x00400000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ +#define ETH_RxDMABurstLength_4xPBL_4Beat ((uint32_t)0x01020000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ +#define ETH_RxDMABurstLength_4xPBL_8Beat ((uint32_t)0x01040000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ +#define ETH_RxDMABurstLength_4xPBL_16Beat ((uint32_t)0x01080000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ +#define ETH_RxDMABurstLength_4xPBL_32Beat ((uint32_t)0x01100000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ +#define ETH_RxDMABurstLength_4xPBL_64Beat ((uint32_t)0x01200000) /* maximum number of beats to be transferred in one RxDMA transaction is 64 */ +#define ETH_RxDMABurstLength_4xPBL_128Beat ((uint32_t)0x01400000) /* maximum number of beats to be transferred in one RxDMA transaction is 128 */ + + +/* TX DMA burst length */ +#define ETH_TxDMABurstLength_1Beat ((uint32_t)0x00000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */ +#define ETH_TxDMABurstLength_2Beat ((uint32_t)0x00000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */ +#define ETH_TxDMABurstLength_4Beat ((uint32_t)0x00000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ +#define ETH_TxDMABurstLength_8Beat ((uint32_t)0x00000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ +#define ETH_TxDMABurstLength_16Beat ((uint32_t)0x00001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ +#define ETH_TxDMABurstLength_32Beat ((uint32_t)0x00002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ +#define ETH_TxDMABurstLength_4xPBL_4Beat ((uint32_t)0x01000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ +#define ETH_TxDMABurstLength_4xPBL_8Beat ((uint32_t)0x01000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ +#define ETH_TxDMABurstLength_4xPBL_16Beat ((uint32_t)0x01000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ +#define ETH_TxDMABurstLength_4xPBL_32Beat ((uint32_t)0x01000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ +#define ETH_TxDMABurstLength_4xPBL_64Beat ((uint32_t)0x01001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */ +#define ETH_TxDMABurstLength_4xPBL_128Beat ((uint32_t)0x01002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */ + +/* DMA arbitration_round robin */ +#define ETH_DMAArbitration_RoundRobin_RxTx_1_1 ((uint32_t)0x00000000) +#define ETH_DMAArbitration_RoundRobin_RxTx_2_1 ((uint32_t)0x00004000) +#define ETH_DMAArbitration_RoundRobin_RxTx_3_1 ((uint32_t)0x00008000) +#define ETH_DMAArbitration_RoundRobin_RxTx_4_1 ((uint32_t)0x0000C000) +#define ETH_DMAArbitration_RxPriorTx ((uint32_t)0x00000002) + +/* DMA interrupt FALG */ +#define ETH_DMA_FLAG_TST ((uint32_t)0x20000000) /* Time-stamp trigger interrupt (on DMA) */ +#define ETH_DMA_FLAG_PMT ((uint32_t)0x10000000) /* PMT interrupt (on DMA) */ +#define ETH_DMA_FLAG_MMC ((uint32_t)0x08000000) /* MMC interrupt (on DMA) */ +#define ETH_DMA_FLAG_DataTransferError ((uint32_t)0x00800000) /* Error bits 0-Rx DMA, 1-Tx DMA */ +#define ETH_DMA_FLAG_ReadWriteError ((uint32_t)0x01000000) /* Error bits 0-write trnsf, 1-read transfr */ +#define ETH_DMA_FLAG_AccessError ((uint32_t)0x02000000) /* Error bits 0-data buffer, 1-desc. access */ +#define ETH_DMA_FLAG_NIS ((uint32_t)0x00010000) /* Normal interrupt summary flag */ +#define ETH_DMA_FLAG_AIS ((uint32_t)0x00008000) /* Abnormal interrupt summary flag */ +#define ETH_DMA_FLAG_ER ((uint32_t)0x00004000) /* Early receive flag */ +#define ETH_DMA_FLAG_FBE ((uint32_t)0x00002000) /* Fatal bus error flag */ +#define ETH_DMA_FLAG_ET ((uint32_t)0x00000400) /* Early transmit flag */ +#define ETH_DMA_FLAG_RWT ((uint32_t)0x00000200) /* Receive watchdog timeout flag */ +#define ETH_DMA_FLAG_RPS ((uint32_t)0x00000100) /* Receive process stopped flag */ +#define ETH_DMA_FLAG_RBU ((uint32_t)0x00000080) /* Receive buffer unavailable flag */ +#define ETH_DMA_FLAG_R ((uint32_t)0x00000040) /* Receive flag */ +#define ETH_DMA_FLAG_TU ((uint32_t)0x00000020) /* Underflow flag */ +#define ETH_DMA_FLAG_RO ((uint32_t)0x00000010) /* Overflow flag */ +#define ETH_DMA_FLAG_TJT ((uint32_t)0x00000008) /* Transmit jabber timeout flag */ +#define ETH_DMA_FLAG_TBU ((uint32_t)0x00000004) /* Transmit buffer unavailable flag */ +#define ETH_DMA_FLAG_TPS ((uint32_t)0x00000002) /* Transmit process stopped flag */ +#define ETH_DMA_FLAG_T ((uint32_t)0x00000001) /* Transmit flag */ + +/* DMA interrupt */ +#define ETH_DMA_IT_PHYLINK ((uint32_t)0x80000000) /* Internal PHY link status change interrupt */ +#define ETH_DMA_IT_TST ((uint32_t)0x20000000) /* Time-stamp trigger interrupt (on DMA) */ +#define ETH_DMA_IT_PMT ((uint32_t)0x10000000) /* PMT interrupt (on DMA) */ +#define ETH_DMA_IT_MMC ((uint32_t)0x08000000) /* MMC interrupt (on DMA) */ +#define ETH_DMA_IT_NIS ((uint32_t)0x00010000) /* Normal interrupt summary */ +#define ETH_DMA_IT_AIS ((uint32_t)0x00008000) /* Abnormal interrupt summary */ +#define ETH_DMA_IT_ER ((uint32_t)0x00004000) /* Early receive interrupt */ +#define ETH_DMA_IT_FBE ((uint32_t)0x00002000) /* Fatal bus error interrupt */ +#define ETH_DMA_IT_ET ((uint32_t)0x00000400) /* Early transmit interrupt */ +#define ETH_DMA_IT_RWT ((uint32_t)0x00000200) /* Receive watchdog timeout interrupt */ +#define ETH_DMA_IT_RPS ((uint32_t)0x00000100) /* Receive process stopped interrupt */ +#define ETH_DMA_IT_RBU ((uint32_t)0x00000080) /* Receive buffer unavailable interrupt */ +#define ETH_DMA_IT_R ((uint32_t)0x00000040) /* Receive interrupt */ +#define ETH_DMA_IT_TU ((uint32_t)0x00000020) /* Underflow interrupt */ +#define ETH_DMA_IT_RO ((uint32_t)0x00000010) /* Overflow interrupt */ +#define ETH_DMA_IT_TJT ((uint32_t)0x00000008) /* Transmit jabber timeout interrupt */ +#define ETH_DMA_IT_TBU ((uint32_t)0x00000004) /* Transmit buffer unavailable interrupt */ +#define ETH_DMA_IT_TPS ((uint32_t)0x00000002) /* Transmit process stopped interrupt */ +#define ETH_DMA_IT_T ((uint32_t)0x00000001) /* Transmit interrupt */ + +/* DMA transmit process */ +#define ETH_DMA_TransmitProcess_Stopped ((uint32_t)0x00000000) /* Stopped - Reset or Stop Tx Command issued */ +#define ETH_DMA_TransmitProcess_Fetching ((uint32_t)0x00100000) /* Running - fetching the Tx descriptor */ +#define ETH_DMA_TransmitProcess_Waiting ((uint32_t)0x00200000) /* Running - waiting for status */ +#define ETH_DMA_TransmitProcess_Reading ((uint32_t)0x00300000) /* Running - reading the data from host memory */ +#define ETH_DMA_TransmitProcess_Suspended ((uint32_t)0x00600000) /* Suspended - Tx Desciptor unavailabe */ +#define ETH_DMA_TransmitProcess_Closing ((uint32_t)0x00700000) /* Running - closing Rx descriptor */ + +/* DMA receive Process */ +#define ETH_DMA_ReceiveProcess_Stopped ((uint32_t)0x00000000) /* Stopped - Reset or Stop Rx Command issued */ +#define ETH_DMA_ReceiveProcess_Fetching ((uint32_t)0x00020000) /* Running - fetching the Rx descriptor */ +#define ETH_DMA_ReceiveProcess_Waiting ((uint32_t)0x00060000) /* Running - waiting for packet */ +#define ETH_DMA_ReceiveProcess_Suspended ((uint32_t)0x00080000) /* Suspended - Rx Desciptor unavailable */ +#define ETH_DMA_ReceiveProcess_Closing ((uint32_t)0x000A0000) /* Running - closing descriptor */ +#define ETH_DMA_ReceiveProcess_Queuing ((uint32_t)0x000E0000) /* Running - queuing the recieve frame into host memory */ + +/* DMA overflow */ +#define ETH_DMA_Overflow_RxFIFOCounter ((uint32_t)0x10000000) /* Overflow bit for FIFO overflow counter */ +#define ETH_DMA_Overflow_MissedFrameCounter ((uint32_t)0x00010000) /* Overflow bit for missed frame counter */ + + +/********************************************************************************* +* Ethernet PMT defines +**********************************************************************************/ + +/* PMT flag */ +#define ETH_PMT_FLAG_WUFFRPR ((uint32_t)0x80000000) /* Wake-Up Frame Filter Register Poniter Reset */ +#define ETH_PMT_FLAG_WUFR ((uint32_t)0x00000040) /* Wake-Up Frame Received */ +#define ETH_PMT_FLAG_MPR ((uint32_t)0x00000020) /* Magic Packet Received */ + +/********************************************************************************* +* Ethernet MMC defines +**********************************************************************************/ + +/* MMC TX interrupt flag */ +#define ETH_MMC_IT_TGF ((uint32_t)0x00200000) /* When Tx good frame counter reaches half the maximum value */ +#define ETH_MMC_IT_TGFMSC ((uint32_t)0x00008000) /* When Tx good multi col counter reaches half the maximum value */ +#define ETH_MMC_IT_TGFSC ((uint32_t)0x00004000) /* When Tx good single col counter reaches half the maximum value */ + +/* MMC RX interrupt flag */ +#define ETH_MMC_IT_RGUF ((uint32_t)0x10020000) /* When Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMC_IT_RFAE ((uint32_t)0x10000040) /* When Rx alignment error counter reaches half the maximum value */ +#define ETH_MMC_IT_RFCE ((uint32_t)0x10000020) /* When Rx crc error counter reaches half the maximum value */ + + +/* MMC description */ +#define ETH_MMCCR ((uint32_t)0x00000100) /* MMC CR register */ +#define ETH_MMCRIR ((uint32_t)0x00000104) /* MMC RIR register */ +#define ETH_MMCTIR ((uint32_t)0x00000108) /* MMC TIR register */ +#define ETH_MMCRIMR ((uint32_t)0x0000010C) /* MMC RIMR register */ +#define ETH_MMCTIMR ((uint32_t)0x00000110) /* MMC TIMR register */ +#define ETH_MMCTGFSCCR ((uint32_t)0x0000014C) /* MMC TGFSCCR register */ +#define ETH_MMCTGFMSCCR ((uint32_t)0x00000150) /* MMC TGFMSCCR register */ +#define ETH_MMCTGFCR ((uint32_t)0x00000168) /* MMC TGFCR register */ +#define ETH_MMCRFCECR ((uint32_t)0x00000194) /* MMC RFCECR register */ +#define ETH_MMCRFAECR ((uint32_t)0x00000198) /* MMC RFAECR register */ +#define ETH_MMCRGUFCR ((uint32_t)0x000001C4) /* MMC RGUFCR register */ + + +/********************************************************************************* +* Ethernet PTP defines +**********************************************************************************/ + +/* PTP fine update method or coarse Update method */ +#define ETH_PTP_FineUpdate ((uint32_t)0x00000001) /* Fine Update method */ +#define ETH_PTP_CoarseUpdate ((uint32_t)0x00000000) /* Coarse Update method */ + + +/* PTP time stamp control */ +#define ETH_PTP_FLAG_TSARU ((uint32_t)0x00000020) /* Addend Register Update */ +#define ETH_PTP_FLAG_TSITE ((uint32_t)0x00000010) /* Time Stamp Interrupt Trigger */ +#define ETH_PTP_FLAG_TSSTU ((uint32_t)0x00000008) /* Time Stamp Update */ +#define ETH_PTP_FLAG_TSSTI ((uint32_t)0x00000004) /* Time Stamp Initialize */ + +/* PTP positive/negative time value */ +#define ETH_PTP_PositiveTime ((uint32_t)0x00000000) /* Positive time value */ +#define ETH_PTP_NegativeTime ((uint32_t)0x80000000) /* Negative time value */ + + +/******************************************************************************/ +/* */ +/* PTP Register */ +/* */ +/******************************************************************************/ +#define ETH_PTPTSCR ((uint32_t)0x00000700) /* PTP TSCR register */ +#define ETH_PTPSSIR ((uint32_t)0x00000704) /* PTP SSIR register */ +#define ETH_PTPTSHR ((uint32_t)0x00000708) /* PTP TSHR register */ +#define ETH_PTPTSLR ((uint32_t)0x0000070C) /* PTP TSLR register */ +#define ETH_PTPTSHUR ((uint32_t)0x00000710) /* PTP TSHUR register */ +#define ETH_PTPTSLUR ((uint32_t)0x00000714) /* PTP TSLUR register */ +#define ETH_PTPTSAR ((uint32_t)0x00000718) /* PTP TSAR register */ +#define ETH_PTPTTHR ((uint32_t)0x0000071C) /* PTP TTHR register */ +#define ETH_PTPTTLR ((uint32_t)0x00000720) /* PTP TTLR register */ + +#define ETH_DMASR_TSTS ((unsigned int)0x20000000) /* Time-stamp trigger status */ +#define ETH_DMASR_PMTS ((unsigned int)0x10000000) /* PMT status */ +#define ETH_DMASR_MMCS ((unsigned int)0x08000000) /* MMC status */ +#define ETH_DMASR_EBS ((unsigned int)0x03800000) /* Error bits status */ + #define ETH_DMASR_EBS_DescAccess ((unsigned int)0x02000000) /* Error bits 0-data buffer, 1-desc. access */ + #define ETH_DMASR_EBS_ReadTransf ((unsigned int)0x01000000) /* Error bits 0-write trnsf, 1-read transfr */ + #define ETH_DMASR_EBS_DataTransfTx ((unsigned int)0x00800000) /* Error bits 0-Rx DMA, 1-Tx DMA */ +#define ETH_DMASR_TPS ((unsigned int)0x00700000) /* Transmit process state */ + #define ETH_DMASR_TPS_Stopped ((unsigned int)0x00000000) /* Stopped - Reset or Stop Tx Command issued */ + #define ETH_DMASR_TPS_Fetching ((unsigned int)0x00100000) /* Running - fetching the Tx descriptor */ + #define ETH_DMASR_TPS_Waiting ((unsigned int)0x00200000) /* Running - waiting for status */ + #define ETH_DMASR_TPS_Reading ((unsigned int)0x00300000) /* Running - reading the data from host memory */ + #define ETH_DMASR_TPS_Suspended ((unsigned int)0x00600000) /* Suspended - Tx Descriptor unavailabe */ + #define ETH_DMASR_TPS_Closing ((unsigned int)0x00700000) /* Running - closing Rx descriptor */ +#define ETH_DMASR_RPS ((unsigned int)0x000E0000) /* Receive process state */ + #define ETH_DMASR_RPS_Stopped ((unsigned int)0x00000000) /* Stopped - Reset or Stop Rx Command issued */ + #define ETH_DMASR_RPS_Fetching ((unsigned int)0x00020000) /* Running - fetching the Rx descriptor */ + #define ETH_DMASR_RPS_Waiting ((unsigned int)0x00060000) /* Running - waiting for packet */ + #define ETH_DMASR_RPS_Suspended ((unsigned int)0x00080000) /* Suspended - Rx Descriptor unavailable */ + #define ETH_DMASR_RPS_Closing ((unsigned int)0x000A0000) /* Running - closing descriptor */ + #define ETH_DMASR_RPS_Queuing ((unsigned int)0x000E0000) /* Running - queuing the recieve frame into host memory */ +#define ETH_DMASR_NIS ((unsigned int)0x00010000) /* Normal interrupt summary */ +#define ETH_DMASR_AIS ((unsigned int)0x00008000) /* Abnormal interrupt summary */ +#define ETH_DMASR_ERS ((unsigned int)0x00004000) /* Early receive status */ +#define ETH_DMASR_FBES ((unsigned int)0x00002000) /* Fatal bus error status */ +#define ETH_DMASR_ETS ((unsigned int)0x00000400) /* Early transmit status */ +#define ETH_DMASR_RWTS ((unsigned int)0x00000200) /* Receive watchdog timeout status */ +#define ETH_DMASR_RPSS ((unsigned int)0x00000100) /* Receive process stopped status */ +#define ETH_DMASR_RBUS ((unsigned int)0x00000080) /* Receive buffer unavailable status */ +#define ETH_DMASR_RS ((unsigned int)0x00000040) /* Receive status */ +#define ETH_DMASR_TUS ((unsigned int)0x00000020) /* Transmit underflow status */ +#define ETH_DMASR_ROS ((unsigned int)0x00000010) /* Receive overflow status */ +#define ETH_DMASR_TJTS ((unsigned int)0x00000008) /* Transmit jabber timeout status */ +#define ETH_DMASR_TBUS ((unsigned int)0x00000004) /* Transmit buffer unavailable status */ +#define ETH_DMASR_TPSS ((unsigned int)0x00000002) /* Transmit process stopped status */ +#define ETH_DMASR_TS ((unsigned int)0x00000001) /* Transmit status */ + + +/******************************************************************************/ +/* */ +/* ETH MAC Register */ +/* */ +/******************************************************************************/ +#define ETH_MACCR_WD ((unsigned int)0x00800000) /* Watchdog disable */ +#define ETH_MACCR_JD ((unsigned int)0x00400000) /* Jabber disable */ +#define ETH_MACCR_IFG ((unsigned int)0x000E0000) /* Inter-frame gap */ +#define ETH_MACCR_IFG_96Bit ((unsigned int)0x00000000) /* Minimum IFG between frames during transmission is 96Bit */ + #define ETH_MACCR_IFG_88Bit ((unsigned int)0x00020000) /* Minimum IFG between frames during transmission is 88Bit */ + #define ETH_MACCR_IFG_80Bit ((unsigned int)0x00040000) /* Minimum IFG between frames during transmission is 80Bit */ + #define ETH_MACCR_IFG_72Bit ((unsigned int)0x00060000) /* Minimum IFG between frames during transmission is 72Bit */ + #define ETH_MACCR_IFG_64Bit ((unsigned int)0x00080000) /* Minimum IFG between frames during transmission is 64Bit */ + #define ETH_MACCR_IFG_56Bit ((unsigned int)0x000A0000) /* Minimum IFG between frames during transmission is 56Bit */ + #define ETH_MACCR_IFG_48Bit ((unsigned int)0x000C0000) /* Minimum IFG between frames during transmission is 48Bit */ + #define ETH_MACCR_IFG_40Bit ((unsigned int)0x000E0000) /* Minimum IFG between frames during transmission is 40Bit */ +#define ETH_MACCR_CSD ((unsigned int)0x00010000) /* Carrier sense disable (during transmission) */ +#define ETH_MACCR_FES ((unsigned int)0x00004000) /* Fast ethernet speed */ +#define ETH_MACCR_ROD ((unsigned int)0x00002000) /* Receive own disable */ +#define ETH_MACCR_LM ((unsigned int)0x00001000) /* loopback mode */ +#define ETH_MACCR_DM ((unsigned int)0x00000800) /* Duplex mode */ +#define ETH_MACCR_IPCO ((unsigned int)0x00000400) /* IP Checksum offload */ +#define ETH_MACCR_RD ((unsigned int)0x00000200) /* Retry disable */ +#define ETH_MACCR_APCS ((unsigned int)0x00000080) /* Automatic Pad/CRC stripping */ +#define ETH_MACCR_BL ((unsigned int)0x00000060) /* Back-off limit: random integer number (r) of slot time delays before reschedulinga transmission attempt during retries after a collision: 0 =< r <2^k */ + #define ETH_MACCR_BL_10 ((unsigned int)0x00000000) /* k = min (n, 10) */ + #define ETH_MACCR_BL_8 ((unsigned int)0x00000020) /* k = min (n, 8) */ + #define ETH_MACCR_BL_4 ((unsigned int)0x00000040) /* k = min (n, 4) */ + #define ETH_MACCR_BL_1 ((unsigned int)0x00000060) /* k = min (n, 1) */ +#define ETH_MACCR_DC ((unsigned int)0x00000010) /* Defferal check */ +#define ETH_MACCR_TE ((unsigned int)0x00000008) /* Transmitter enable */ +#define ETH_MACCR_RE ((unsigned int)0x00000004) /* Receiver enable */ + +#define ETH_MACFFR_RA ((unsigned int)0x80000000) /* Receive all */ +#define ETH_MACFFR_HPF ((unsigned int)0x00000400) /* Hash or perfect filter */ +#define ETH_MACFFR_SAF ((unsigned int)0x00000200) /* Source address filter enable */ +#define ETH_MACFFR_SAIF ((unsigned int)0x00000100) /* SA inverse filtering */ +#define ETH_MACFFR_PCF ((unsigned int)0x000000C0) /* Pass control frames: 3 cases */ + #define ETH_MACFFR_PCF_BlockAll ((unsigned int)0x00000040) /* MAC filters all control frames from reaching the application */ + #define ETH_MACFFR_PCF_ForwardAll ((unsigned int)0x00000080) /* MAC forwards all control frames to application even if they fail the Address Filter */ + #define ETH_MACFFR_PCF_ForwardPassedAddrFilter ((unsigned int)0x000000C0) /* MAC forwards control frames that pass the Address Filter. */ +#define ETH_MACFFR_BFD ((unsigned int)0x00000020) /* Broadcast frame disable */ +#define ETH_MACFFR_PAM ((unsigned int)0x00000010) /* Pass all mutlicast */ +#define ETH_MACFFR_DAIF ((unsigned int)0x00000008) /* DA Inverse filtering */ +#define ETH_MACFFR_HM ((unsigned int)0x00000004) /* Hash multicast */ +#define ETH_MACFFR_HU ((unsigned int)0x00000002) /* Hash unicast */ +#define ETH_MACFFR_PM ((unsigned int)0x00000001) /* Promiscuous mode */ + +#define ETH_MACHTHR_HTH ((unsigned int)0xFFFFFFFF) /* Hash table high */ +#define ETH_MACHTLR_HTL ((unsigned int)0xFFFFFFFF) /* Hash table low */ + +#define ETH_MACMIIAR_PA ((unsigned int)0x0000F800) /* Physical layer address */ +#define ETH_MACMIIAR_MR ((unsigned int)0x000007C0) /* MII register in the selected PHY */ +#define ETH_MACMIIAR_CR ((unsigned int)0x0000001C) /* CR clock range: 6 cases */ + #define ETH_MACMIIAR_CR_Div42 ((unsigned int)0x00000000) /* HCLK:60-100 MHz; MDC clock= HCLK/42 */ + #define ETH_MACMIIAR_CR_Div16 ((unsigned int)0x00000008) /* HCLK:20-35 MHz; MDC clock= HCLK/16 */ + #define ETH_MACMIIAR_CR_Div26 ((unsigned int)0x0000000C) /* HCLK:35-60 MHz; MDC clock= HCLK/26 */ +#define ETH_MACMIIAR_MW ((unsigned int)0x00000002) /* MII write */ +#define ETH_MACMIIAR_MB ((unsigned int)0x00000001) /* MII busy */ +#define ETH_MACMIIDR_MD ((unsigned int)0x0000FFFF) /* MII data: read/write data from/to PHY */ +#define ETH_MACFCR_PT ((unsigned int)0xFFFF0000) /* Pause time */ +#define ETH_MACFCR_ZQPD ((unsigned int)0x00000080) /* Zero-quanta pause disable */ +#define ETH_MACFCR_PLT ((unsigned int)0x00000030) /* Pause low threshold: 4 cases */ + #define ETH_MACFCR_PLT_Minus4 ((unsigned int)0x00000000) /* Pause time minus 4 slot times */ + #define ETH_MACFCR_PLT_Minus28 ((unsigned int)0x00000010) /* Pause time minus 28 slot times */ + #define ETH_MACFCR_PLT_Minus144 ((unsigned int)0x00000020) /* Pause time minus 144 slot times */ + #define ETH_MACFCR_PLT_Minus256 ((unsigned int)0x00000030) /* Pause time minus 256 slot times */ +#define ETH_MACFCR_UPFD ((unsigned int)0x00000008) /* Unicast pause frame detect */ +#define ETH_MACFCR_RFCE ((unsigned int)0x00000004) /* Receive flow control enable */ +#define ETH_MACFCR_TFCE ((unsigned int)0x00000002) /* Transmit flow control enable */ +#define ETH_MACFCR_FCBBPA ((unsigned int)0x00000001) /* Flow control busy/backpressure activate */ + +#define ETH_MACVLANTR_VLANTC ((unsigned int)0x00010000) /* 12-bit VLAN tag comparison */ +#define ETH_MACVLANTR_VLANTI ((unsigned int)0x0000FFFF) /* VLAN tag identifier (for receive frames) */ + +#define ETH_MACRWUFFR_D ((unsigned int)0xFFFFFFFF) /* Wake-up frame filter register data */ +/* Eight sequential Writes to this address (offset 0x28) will write all Wake-UpFrame Filter Registers. +Eight sequential Reads from this address (offset 0x28) will read all Wake-UpFrame Filter Registers. */ + +/* +Wake-UpFrame Filter Reg0 : Filter 0 Byte Mask +Wake-UpFrame Filter Reg1 : Filter 1 Byte Mask +Wake-UpFrame Filter Reg2 : Filter 2 Byte Mask +Wake-UpFrame Filter Reg3 : Filter 3 Byte Mask +Wake-UpFrame Filter Reg4 : RSVD - Filter3 Command - RSVD - Filter2 Command - + RSVD - Filter1 Command - RSVD - Filter0 Command +Wake-UpFrame Filter Re5 : Filter3 Offset - Filter2 Offset - Filter1 Offset - Filter0 Offset +Wake-UpFrame Filter Re6 : Filter1 CRC16 - Filter0 CRC16 +Wake-UpFrame Filter Re7 : Filter3 CRC16 - Filter2 CRC16 */ + +#define ETH_MACPMTCSR_WFFRPR ((unsigned int)0x80000000) /* Wake-Up Frame Filter Register Pointer Reset */ +#define ETH_MACPMTCSR_GU ((unsigned int)0x00000200) /* Global Unicast */ +#define ETH_MACPMTCSR_WFR ((unsigned int)0x00000040) /* Wake-Up Frame Received */ +#define ETH_MACPMTCSR_MPR ((unsigned int)0x00000020) /* Magic Packet Received */ +#define ETH_MACPMTCSR_WFE ((unsigned int)0x00000004) /* Wake-Up Frame Enable */ +#define ETH_MACPMTCSR_MPE ((unsigned int)0x00000002) /* Magic Packet Enable */ +#define ETH_MACPMTCSR_PD ((unsigned int)0x00000001) /* Power Down */ + +#define ETH_MACSR_TSTS ((unsigned int)0x00000200) /* Time stamp trigger status */ +#define ETH_MACSR_MMCTS ((unsigned int)0x00000040) /* MMC transmit status */ +#define ETH_MACSR_MMMCRS ((unsigned int)0x00000020) /* MMC receive status */ +#define ETH_MACSR_MMCS ((unsigned int)0x00000010) /* MMC status */ +#define ETH_MACSR_PMTS ((unsigned int)0x00000008) /* PMT status */ + +#define ETH_MACIMR_TSTIM ((unsigned int)0x00000200) /* Time stamp trigger interrupt mask */ +#define ETH_MACIMR_PMTIM ((unsigned int)0x00000008) /* PMT interrupt mask */ + +#define ETH_MACA0HR_MACA0H ((unsigned int)0x0000FFFF) /* MAC address0 high */ + +#define ETH_MACA0LR_MACA0L ((unsigned int)0xFFFFFFFF) /* MAC address0 low */ + +#define ETH_MACA1HR_AE ((unsigned int)0x80000000) /* Address enable */ +#define ETH_MACA1HR_SA ((unsigned int)0x40000000) /* Source address */ +#define ETH_MACA1HR_MBC ((unsigned int)0x3F000000) /* Mask byte control: bits to mask for comparison of the MAC Address bytes */ + #define ETH_MACA1HR_MBC_HBits15_8 ((unsigned int)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA1HR_MBC_HBits7_0 ((unsigned int)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA1HR_MBC_LBits31_24 ((unsigned int)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA1HR_MBC_LBits23_16 ((unsigned int)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA1HR_MBC_LBits15_8 ((unsigned int)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA1HR_MBC_LBits7_0 ((unsigned int)0x01000000) /* Mask MAC Address low reg bits [7:0] */ +#define ETH_MACA1HR_MACA1H ((unsigned int)0x0000FFFF) /* MAC address1 high */ + +#define ETH_MACA1LR_MACA1L ((unsigned int)0xFFFFFFFF) /* MAC address1 low */ + +#define ETH_MACA2HR_AE ((unsigned int)0x80000000) /* Address enable */ +#define ETH_MACA2HR_SA ((unsigned int)0x40000000) /* Source address */ +#define ETH_MACA2HR_MBC ((unsigned int)0x3F000000) /* Mask byte control */ + #define ETH_MACA2HR_MBC_HBits15_8 ((unsigned int)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA2HR_MBC_HBits7_0 ((unsigned int)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA2HR_MBC_LBits31_24 ((unsigned int)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA2HR_MBC_LBits23_16 ((unsigned int)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA2HR_MBC_LBits15_8 ((unsigned int)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA2HR_MBC_LBits7_0 ((unsigned int)0x01000000) /* Mask MAC Address low reg bits [70] */ + +#define ETH_MACA2HR_MACA2H ((unsigned int)0x0000FFFF) /* MAC address1 high */ +#define ETH_MACA2LR_MACA2L ((unsigned int)0xFFFFFFFF) /* MAC address2 low */ + +#define ETH_MACA3HR_AE ((unsigned int)0x80000000) /* Address enable */ +#define ETH_MACA3HR_SA ((unsigned int)0x40000000) /* Source address */ +#define ETH_MACA3HR_MBC ((unsigned int)0x3F000000) /* Mask byte control */ + #define ETH_MACA3HR_MBC_HBits15_8 ((unsigned int)0x20000000) /* Mask MAC Address high reg bits [15:8] */ + #define ETH_MACA3HR_MBC_HBits7_0 ((unsigned int)0x10000000) /* Mask MAC Address high reg bits [7:0] */ + #define ETH_MACA3HR_MBC_LBits31_24 ((unsigned int)0x08000000) /* Mask MAC Address low reg bits [31:24] */ + #define ETH_MACA3HR_MBC_LBits23_16 ((unsigned int)0x04000000) /* Mask MAC Address low reg bits [23:16] */ + #define ETH_MACA3HR_MBC_LBits15_8 ((unsigned int)0x02000000) /* Mask MAC Address low reg bits [15:8] */ + #define ETH_MACA3HR_MBC_LBits7_0 ((unsigned int)0x01000000) /* Mask MAC Address low reg bits [70] */ +#define ETH_MACA3HR_MACA3H ((unsigned int)0x0000FFFF) /* MAC address3 high */ +#define ETH_MACA3LR_MACA3L ((unsigned int)0xFFFFFFFF) /* MAC address3 low */ + +/******************************************************************************/ +/* +/* ETH MMC Register +/* +/******************************************************************************/ +#define ETH_MMCCR_MCFHP ((unsigned int)0x00000020) /* MMC counter Full-Half preset */ +#define ETH_MMCCR_MCP ((unsigned int)0x00000010) /* MMC counter preset */ +#define ETH_MMCCR_MCF ((unsigned int)0x00000008) /* MMC Counter Freeze */ +#define ETH_MMCCR_ROR ((unsigned int)0x00000004) /* Reset on Read */ +#define ETH_MMCCR_CSR ((unsigned int)0x00000002) /* Counter Stop Rollover */ +#define ETH_MMCCR_CR ((unsigned int)0x00000001) /* Counters Reset */ + +#define ETH_MMCRIR_RGUFS ((unsigned int)0x00020000) /* Set when Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMCRIR_RFAES ((unsigned int)0x00000040) /* Set when Rx alignment error counter reaches half the maximum value */ +#define ETH_MMCRIR_RFCES ((unsigned int)0x00000020) /* Set when Rx crc error counter reaches half the maximum value */ + +#define ETH_MMCTIR_TGFS ((unsigned int)0x00200000) /* Set when Tx good frame count counter reaches half the maximum value */ +#define ETH_MMCTIR_TGFMSCS ((unsigned int)0x00008000) /* Set when Tx good multi col counter reaches half the maximum value */ +#define ETH_MMCTIR_TGFSCS ((unsigned int)0x00004000) /* Set when Tx good single col counter reaches half the maximum value */ + +#define ETH_MMCRIMR_RGUFM ((unsigned int)0x00020000) /* Mask the interrupt when Rx good unicast frames counter reaches half the maximum value */ +#define ETH_MMCRIMR_RFAEM ((unsigned int)0x00000040) /* Mask the interrupt when when Rx alignment error counter reaches half the maximum value */ +#define ETH_MMCRIMR_RFCEM ((unsigned int)0x00000020) /* Mask the interrupt when Rx crc error counter reaches half the maximum value */ + +#define ETH_MMCTIMR_TGFM ((unsigned int)0x00200000) /* Mask the interrupt when Tx good frame count counter reaches half the maximum value */ +#define ETH_MMCTIMR_TGFMSCM ((unsigned int)0x00008000) /* Mask the interrupt when Tx good multi col counter reaches half the maximum value */ +#define ETH_MMCTIMR_TGFSCM ((unsigned int)0x00004000) /* Mask the interrupt when Tx good single col counter reaches half the maximum value */ + +#define ETH_MMCTGFSCCR_TGFSCC ((unsigned int)0xFFFFFFFF) /* Number of successfully transmitted frames after a single collision in Half-duplex mode. */ + +#define ETH_MMCTGFMSCCR_TGFMSCC ((unsigned int)0xFFFFFFFF) /* Number of successfully transmitted frames after more than a single collision in Half-duplex mode. */ + +#define ETH_MMCTGFCR_TGFC ((unsigned int)0xFFFFFFFF) /* Number of good frames transmitted. */ + +#define ETH_MMCRFCECR_RFCEC ((unsigned int)0xFFFFFFFF) /* Number of frames received with CRC error. */ + +#define ETH_MMCRFAECR_RFAEC ((unsigned int)0xFFFFFFFF) /* Number of frames received with alignment (dribble) error */ + +#define ETH_MMCRGUFCR_RGUFC ((unsigned int)0xFFFFFFFF) /* Number of good unicast frames received. */ + + +/******************************************************************************/ +/* +/* ETH Precise Clock Protocol Register +/* +/******************************************************************************/ +#define ETH_PTPTSCR_TSCNT ((unsigned int)0x00030000) /* Time stamp clock node type */ +#define ETH_PTPTSSR_TSSMRME ((unsigned int)0x00008000) /* Time stamp snapshot for message relevant to master enable */ +#define ETH_PTPTSSR_TSSEME ((unsigned int)0x00004000) /* Time stamp snapshot for event message enable */ +#define ETH_PTPTSSR_TSSIPV4FE ((unsigned int)0x00002000) /* Time stamp snapshot for IPv4 frames enable */ +#define ETH_PTPTSSR_TSSIPV6FE ((unsigned int)0x00001000) /* Time stamp snapshot for IPv6 frames enable */ +#define ETH_PTPTSSR_TSSPTPOEFE ((unsigned int)0x00000800) /* Time stamp snapshot for PTP over ethernet frames enable */ +#define ETH_PTPTSSR_TSPTPPSV2E ((unsigned int)0x00000400) /* Time stamp PTP packet snooping for version2 format enable */ +#define ETH_PTPTSSR_TSSSR ((unsigned int)0x00000200) /* Time stamp Sub-seconds rollover */ +#define ETH_PTPTSSR_TSSARFE ((unsigned int)0x00000100) /* Time stamp snapshot for all received frames enable */ + +#define ETH_PTPTSCR_TSARU ((unsigned int)0x00000020) /* Addend register update */ +#define ETH_PTPTSCR_TSITE ((unsigned int)0x00000010) /* Time stamp interrupt trigger enable */ +#define ETH_PTPTSCR_TSSTU ((unsigned int)0x00000008) /* Time stamp update */ +#define ETH_PTPTSCR_TSSTI ((unsigned int)0x00000004) /* Time stamp initialize */ +#define ETH_PTPTSCR_TSFCU ((unsigned int)0x00000002) /* Time stamp fine or coarse update */ +#define ETH_PTPTSCR_TSE ((unsigned int)0x00000001) /* Time stamp enable */ + +#define ETH_PTPSSIR_STSSI ((unsigned int)0x000000FF) /* System time Sub-second increment value */ + +#define ETH_PTPTSHR_STS ((unsigned int)0xFFFFFFFF) /* System Time second */ + +#define ETH_PTPTSLR_STPNS ((unsigned int)0x80000000) /* System Time Positive or negative time */ +#define ETH_PTPTSLR_STSS ((unsigned int)0x7FFFFFFF) /* System Time sub-seconds */ + +#define ETH_PTPTSHUR_TSUS ((unsigned int)0xFFFFFFFF) /* Time stamp update seconds */ + +#define ETH_PTPTSLUR_TSUPNS ((unsigned int)0x80000000) /* Time stamp update Positive or negative time */ +#define ETH_PTPTSLUR_TSUSS ((unsigned int)0x7FFFFFFF) /* Time stamp update sub-seconds */ + +#define ETH_PTPTSAR_TSA ((unsigned int)0xFFFFFFFF) /* Time stamp addend */ + +#define ETH_PTPTTHR_TTSH ((unsigned int)0xFFFFFFFF) /* Target time stamp high */ + +#define ETH_PTPTTLR_TTSL ((unsigned int)0xFFFFFFFF) /* Target time stamp low */ + +#define ETH_PTPTSSR_TSTTR ((unsigned int)0x00000020) /* Time stamp target time reached */ +#define ETH_PTPTSSR_TSSO ((unsigned int)0x00000010) /* Time stamp seconds overflow */ + +/******************************************************************************/ +/* +/* ETH DMA Register +/* +/******************************************************************************/ +#define ETH_DMABMR_AAB ((unsigned int)0x02000000) /* Address-Aligned beats */ +#define ETH_DMABMR_FPM ((unsigned int)0x01000000) /* 4xPBL mode */ +#define ETH_DMABMR_USP ((unsigned int)0x00800000) /* Use separate PBL */ +#define ETH_DMABMR_RDP ((unsigned int)0x007E0000) /* RxDMA PBL */ + #define ETH_DMABMR_RDP_1Beat ((unsigned int)0x00020000) /* maximum number of beats to be transferred in one RxDMA transaction is 1 */ + #define ETH_DMABMR_RDP_2Beat ((unsigned int)0x00040000) /* maximum number of beats to be transferred in one RxDMA transaction is 2 */ + #define ETH_DMABMR_RDP_4Beat ((unsigned int)0x00080000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ + #define ETH_DMABMR_RDP_8Beat ((unsigned int)0x00100000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ + #define ETH_DMABMR_RDP_16Beat ((unsigned int)0x00200000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ + #define ETH_DMABMR_RDP_32Beat ((unsigned int)0x00400000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ + #define ETH_DMABMR_RDP_4xPBL_4Beat ((unsigned int)0x01020000) /* maximum number of beats to be transferred in one RxDMA transaction is 4 */ + #define ETH_DMABMR_RDP_4xPBL_8Beat ((unsigned int)0x01040000) /* maximum number of beats to be transferred in one RxDMA transaction is 8 */ + #define ETH_DMABMR_RDP_4xPBL_16Beat ((unsigned int)0x01080000) /* maximum number of beats to be transferred in one RxDMA transaction is 16 */ + #define ETH_DMABMR_RDP_4xPBL_32Beat ((unsigned int)0x01100000) /* maximum number of beats to be transferred in one RxDMA transaction is 32 */ + #define ETH_DMABMR_RDP_4xPBL_64Beat ((unsigned int)0x01200000) /* maximum number of beats to be transferred in one RxDMA transaction is 64 */ + #define ETH_DMABMR_RDP_4xPBL_128Beat ((unsigned int)0x01400000) /* maximum number of beats to be transferred in one RxDMA transaction is 128 */ +#define ETH_DMABMR_FB ((unsigned int)0x00010000) /* Fixed Burst */ +#define ETH_DMABMR_RTPR ((unsigned int)0x0000C000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_1_1 ((unsigned int)0x00000000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_2_1 ((unsigned int)0x00004000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_3_1 ((unsigned int)0x00008000) /* Rx Tx priority ratio */ + #define ETH_DMABMR_RTPR_4_1 ((unsigned int)0x0000C000) /* Rx Tx priority ratio */ +#define ETH_DMABMR_PBL ((unsigned int)0x00003F00) /* Programmable burst length */ + #define ETH_DMABMR_PBL_1Beat ((unsigned int)0x00000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 1 */ + #define ETH_DMABMR_PBL_2Beat ((unsigned int)0x00000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 2 */ + #define ETH_DMABMR_PBL_4Beat ((unsigned int)0x00000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ + #define ETH_DMABMR_PBL_8Beat ((unsigned int)0x00000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ + #define ETH_DMABMR_PBL_16Beat ((unsigned int)0x00001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ + #define ETH_DMABMR_PBL_32Beat ((unsigned int)0x00002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ + #define ETH_DMABMR_PBL_4xPBL_4Beat ((unsigned int)0x01000100) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 4 */ + #define ETH_DMABMR_PBL_4xPBL_8Beat ((unsigned int)0x01000200) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 8 */ + #define ETH_DMABMR_PBL_4xPBL_16Beat ((unsigned int)0x01000400) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 16 */ + #define ETH_DMABMR_PBL_4xPBL_32Beat ((unsigned int)0x01000800) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 32 */ + #define ETH_DMABMR_PBL_4xPBL_64Beat ((unsigned int)0x01001000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 64 */ + #define ETH_DMABMR_PBL_4xPBL_128Beat ((unsigned int)0x01002000) /* maximum number of beats to be transferred in one TxDMA (or both) transaction is 128 */ +#define ETH_DMABMR_EDE ((unsigned int)0x00000080) /* Enhanced Descriptor Enable */ +#define ETH_DMABMR_DSL ((unsigned int)0x0000007C) /* Descriptor Skip Length */ +#define ETH_DMABMR_DA ((unsigned int)0x00000002) /* DMA arbitration scheme */ +#define ETH_DMABMR_SR ((unsigned int)0x00000001) /* Software reset */ + +#define ETH_DMATPDR_TPD ((unsigned int)0xFFFFFFFF) /* Transmit poll demand */ + +#define ETH_DMARPDR_RPD ((unsigned int)0xFFFFFFFF) /* Receive poll demand */ + +#define ETH_DMARDLAR_SRL ((unsigned int)0xFFFFFFFF) /* Start of receive list */ + +#define ETH_DMATDLAR_STL ((unsigned int)0xFFFFFFFF) /* Start of transmit list */ + +#define ETH_DMASR_TSTS ((unsigned int)0x20000000) /* Time-stamp trigger status */ +#define ETH_DMASR_PMTS ((unsigned int)0x10000000) /* PMT status */ +#define ETH_DMASR_MMCS ((unsigned int)0x08000000) /* MMC status */ +#define ETH_DMASR_EBS ((unsigned int)0x03800000) /* Error bits status */ + #define ETH_DMASR_EBS_DescAccess ((unsigned int)0x02000000) /* Error bits 0-data buffer, 1-desc. access */ + #define ETH_DMASR_EBS_ReadTransf ((unsigned int)0x01000000) /* Error bits 0-write trnsf, 1-read transfr */ + #define ETH_DMASR_EBS_DataTransfTx ((unsigned int)0x00800000) /* Error bits 0-Rx DMA, 1-Tx DMA */ +#define ETH_DMASR_TPS ((unsigned int)0x00700000) /* Transmit process state */ + #define ETH_DMASR_TPS_Stopped ((unsigned int)0x00000000) /* Stopped - Reset or Stop Tx Command issued */ + #define ETH_DMASR_TPS_Fetching ((unsigned int)0x00100000) /* Running - fetching the Tx descriptor */ + #define ETH_DMASR_TPS_Waiting ((unsigned int)0x00200000) /* Running - waiting for status */ + #define ETH_DMASR_TPS_Reading ((unsigned int)0x00300000) /* Running - reading the data from host memory */ + #define ETH_DMASR_TPS_Suspended ((unsigned int)0x00600000) /* Suspended - Tx Descriptor unavailabe */ + #define ETH_DMASR_TPS_Closing ((unsigned int)0x00700000) /* Running - closing Rx descriptor */ +#define ETH_DMASR_RPS ((unsigned int)0x000E0000) /* Receive process state */ + #define ETH_DMASR_RPS_Stopped ((unsigned int)0x00000000) /* Stopped - Reset or Stop Rx Command issued */ + #define ETH_DMASR_RPS_Fetching ((unsigned int)0x00020000) /* Running - fetching the Rx descriptor */ + #define ETH_DMASR_RPS_Waiting ((unsigned int)0x00060000) /* Running - waiting for packet */ + #define ETH_DMASR_RPS_Suspended ((unsigned int)0x00080000) /* Suspended - Rx Descriptor unavailable */ + #define ETH_DMASR_RPS_Closing ((unsigned int)0x000A0000) /* Running - closing descriptor */ + #define ETH_DMASR_RPS_Queuing ((unsigned int)0x000E0000) /* Running - queuing the recieve frame into host memory */ +#define ETH_DMASR_NIS ((unsigned int)0x00010000) /* Normal interrupt summary */ +#define ETH_DMASR_AIS ((unsigned int)0x00008000) /* Abnormal interrupt summary */ +#define ETH_DMASR_ERS ((unsigned int)0x00004000) /* Early receive status */ +#define ETH_DMASR_FBES ((unsigned int)0x00002000) /* Fatal bus error status */ +#define ETH_DMASR_ETS ((unsigned int)0x00000400) /* Early transmit status */ +#define ETH_DMASR_RWTS ((unsigned int)0x00000200) /* Receive watchdog timeout status */ +#define ETH_DMASR_RPSS ((unsigned int)0x00000100) /* Receive process stopped status */ +#define ETH_DMASR_RBUS ((unsigned int)0x00000080) /* Receive buffer unavailable status */ +#define ETH_DMASR_RS ((unsigned int)0x00000040) /* Receive status */ +#define ETH_DMASR_TUS ((unsigned int)0x00000020) /* Transmit underflow status */ +#define ETH_DMASR_ROS ((unsigned int)0x00000010) /* Receive overflow status */ +#define ETH_DMASR_TJTS ((unsigned int)0x00000008) /* Transmit jabber timeout status */ +#define ETH_DMASR_TBUS ((unsigned int)0x00000004) /* Transmit buffer unavailable status */ +#define ETH_DMASR_TPSS ((unsigned int)0x00000002) /* Transmit process stopped status */ +#define ETH_DMASR_TS ((unsigned int)0x00000001) /* Transmit status */ + +#define ETH_DMAOMR_DTCEFD ((unsigned int)0x04000000) /* Disable Dropping of TCP/IP checksum error frames */ +#define ETH_DMAOMR_RSF ((unsigned int)0x02000000) /* Receive store and forward */ +#define ETH_DMAOMR_DFRF ((unsigned int)0x01000000) /* Disable flushing of received frames */ +#define ETH_DMAOMR_TSF ((unsigned int)0x00200000) /* Transmit store and forward */ +#define ETH_DMAOMR_FTF ((unsigned int)0x00100000) /* Flush transmit FIFO */ +#define ETH_DMAOMR_TTC ((unsigned int)0x0001C000) /* Transmit threshold control */ + #define ETH_DMAOMR_TTC_64Bytes ((unsigned int)0x00000000) /* threshold level of the MTL Transmit FIFO is 64 Bytes */ + #define ETH_DMAOMR_TTC_128Bytes ((unsigned int)0x00004000) /* threshold level of the MTL Transmit FIFO is 128 Bytes */ + #define ETH_DMAOMR_TTC_192Bytes ((unsigned int)0x00008000) /* threshold level of the MTL Transmit FIFO is 192 Bytes */ + #define ETH_DMAOMR_TTC_256Bytes ((unsigned int)0x0000C000) /* threshold level of the MTL Transmit FIFO is 256 Bytes */ + #define ETH_DMAOMR_TTC_40Bytes ((unsigned int)0x00010000) /* threshold level of the MTL Transmit FIFO is 40 Bytes */ + #define ETH_DMAOMR_TTC_32Bytes ((unsigned int)0x00014000) /* threshold level of the MTL Transmit FIFO is 32 Bytes */ + #define ETH_DMAOMR_TTC_24Bytes ((unsigned int)0x00018000) /* threshold level of the MTL Transmit FIFO is 24 Bytes */ + #define ETH_DMAOMR_TTC_16Bytes ((unsigned int)0x0001C000) /* threshold level of the MTL Transmit FIFO is 16 Bytes */ +#define ETH_DMAOMR_ST ((unsigned int)0x00002000) /* Start/stop transmission command */ +#define ETH_DMAOMR_FEF ((unsigned int)0x00000080) /* Forward error frames */ +#define ETH_DMAOMR_FUGF ((unsigned int)0x00000040) /* Forward undersized good frames */ +#define ETH_DMAOMR_RTC ((unsigned int)0x00000018) /* receive threshold control */ + #define ETH_DMAOMR_RTC_64Bytes ((unsigned int)0x00000000) /* threshold level of the MTL Receive FIFO is 64 Bytes */ + #define ETH_DMAOMR_RTC_32Bytes ((unsigned int)0x00000008) /* threshold level of the MTL Receive FIFO is 32 Bytes */ + #define ETH_DMAOMR_RTC_96Bytes ((unsigned int)0x00000010) /* threshold level of the MTL Receive FIFO is 96 Bytes */ + #define ETH_DMAOMR_RTC_128Bytes ((unsigned int)0x00000018) /* threshold level of the MTL Receive FIFO is 128 Bytes */ +#define ETH_DMAOMR_OSF ((unsigned int)0x00000004) /* operate on second frame */ +#define ETH_DMAOMR_SR ((unsigned int)0x00000002) /* Start/stop receive */ + +#define ETH_DMAIER_NISE ((unsigned int)0x00010000) /* Normal interrupt summary enable */ +#define ETH_DMAIER_AISE ((unsigned int)0x00008000) /* Abnormal interrupt summary enable */ +#define ETH_DMAIER_ERIE ((unsigned int)0x00004000) /* Early receive interrupt enable */ +#define ETH_DMAIER_FBEIE ((unsigned int)0x00002000) /* Fatal bus error interrupt enable */ +#define ETH_DMAIER_ETIE ((unsigned int)0x00000400) /* Early transmit interrupt enable */ +#define ETH_DMAIER_RWTIE ((unsigned int)0x00000200) /* Receive watchdog timeout interrupt enable */ +#define ETH_DMAIER_RPSIE ((unsigned int)0x00000100) /* Receive process stopped interrupt enable */ +#define ETH_DMAIER_RBUIE ((unsigned int)0x00000080) /* Receive buffer unavailable interrupt enable */ +#define ETH_DMAIER_RIE ((unsigned int)0x00000040) /* Receive interrupt enable */ +#define ETH_DMAIER_TUIE ((unsigned int)0x00000020) /* Transmit Underflow interrupt enable */ +#define ETH_DMAIER_ROIE ((unsigned int)0x00000010) /* Receive Overflow interrupt enable */ +#define ETH_DMAIER_TJTIE ((unsigned int)0x00000008) /* Transmit jabber timeout interrupt enable */ +#define ETH_DMAIER_TBUIE ((unsigned int)0x00000004) /* Transmit buffer unavailable interrupt enable */ +#define ETH_DMAIER_TPSIE ((unsigned int)0x00000002) /* Transmit process stopped interrupt enable */ +#define ETH_DMAIER_TIE ((unsigned int)0x00000001) /* Transmit interrupt enable */ + +#define ETH_DMAMFBOCR_OFOC ((unsigned int)0x10000000) /* Overflow bit for FIFO overflow counter */ +#define ETH_DMAMFBOCR_MFA ((unsigned int)0x0FFE0000) /* Number of frames missed by the application */ +#define ETH_DMAMFBOCR_OMFC ((unsigned int)0x00010000) /* Overflow bit for missed frame counter */ +#define ETH_DMAMFBOCR_MFC ((unsigned int)0x0000FFFF) /* Number of frames missed by the controller */ + +#define ETH_DMACHTDR_HTDAP ((unsigned int)0xFFFFFFFF) /* Host transmit descriptor address pointer */ +#define ETH_DMACHRDR_HRDAP ((unsigned int)0xFFFFFFFF) /* Host receive descriptor address pointer */ +#define ETH_DMACHTBAR_HTBAP ((unsigned int)0xFFFFFFFF) /* Host transmit buffer address pointer */ +#define ETH_DMACHRBAR_HRBAP ((unsigned int)0xFFFFFFFF) /* Host receive buffer address pointer */ + + +#define ETH_MAC_ADDR_HBASE (ETH_MAC_BASE + 0x40) /* ETHERNET MAC address high offset */ +#define ETH_MAC_ADDR_LBASE (ETH_MAC_BASE + 0x44) /* ETHERNET MAC address low offset */ + +/* ETHERNET MACMIIAR register Mask */ +#define MACMIIAR_CR_MASK ((uint32_t)0xFFFFFFE3) + +/* ETHERNET MACCR register Mask */ +#define MACCR_CLEAR_MASK ((uint32_t)0xFF20810F) + +/* ETHERNET MACFCR register Mask */ +#define MACFCR_CLEAR_MASK ((uint32_t)0x0000FF41) + +/* ETHERNET DMAOMR register Mask */ +#define DMAOMR_CLEAR_MASK ((uint32_t)0xF8DE3F23) + +/* ETHERNET Remote Wake-up frame register length */ +#define ETH_WAKEUP_REGISTER_LENGTH 8 + +/* ETHERNET Missed frames counter Shift */ +#define ETH_DMA_RX_OVERFLOW_MISSEDFRAMES_COUNTERSHIFT 17 + +/* ETHERNET DMA Tx descriptors Collision Count Shift */ +#define ETH_DMATXDESC_COLLISION_COUNTSHIFT 3 + +/* ETHERNET DMA Tx descriptors Buffer2 Size Shift */ +#define ETH_DMATXDESC_BUFFER2_SIZESHIFT 16 + +/* ETHERNET DMA Rx descriptors Frame Length Shift */ +#define ETH_DMARXDESC_FRAME_LENGTHSHIFT 16 + +/* ETHERNET DMA Rx descriptors Buffer2 Size Shift */ +#define ETH_DMARXDESC_BUFFER2_SIZESHIFT 16 + +/* ETHERNET errors */ +#define ETH_ERROR ((uint32_t)0) +#define ETH_SUCCESS ((uint32_t)1) + + +void ETH_DeInit(void); +void ETH_StructInit(ETH_InitTypeDef* ETH_InitStruct); +void ETH_SoftwareReset(void); +FlagStatus ETH_GetSoftwareResetStatus(void); +FlagStatus ETH_GetlinkStaus (void); +void ETH_Start(void); +uint32_t ETH_HandleTxPkt(uint8_t *ppkt, uint16_t FrameLength); +void delay_clk (uint32_t nCount); +void printf_dmasr (void); +void print_dmasr_tbus(void); +void print_dmasr_rps(void); +void print_dmasr_tps(void); +uint32_t ETH_HandleRxPkt(uint8_t *ppkt); +uint32_t ETH_GetRxPktSize(void); +void ETH_DropRxPkt(void); +uint16_t ETH_ReadPHYRegister(uint16_t PHYAddress, uint16_t PHYReg); +uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg, uint16_t PHYValue); +uint32_t ETH_PHYLoopBackCmd(uint16_t PHYAddress, FunctionalState NewState); + +void ETH_MACTransmissionCmd(FunctionalState NewState); +void ETH_MACReceptionCmd(FunctionalState NewState); +FlagStatus ETH_GetFlowControlBusyStatus(void); +void ETH_InitiatePauseControlFrame(void); +void ETH_BackPressureActivationCmd(FunctionalState NewState); +FlagStatus ETH_GetMACFlagStatus(uint32_t ETH_MAC_FLAG); +ITStatus ETH_GetMACITStatus(uint32_t ETH_MAC_IT); +void ETH_MACITConfig(uint32_t ETH_MAC_IT, FunctionalState NewState); +void ETH_MACAddressConfig(uint32_t MacAddr, uint8_t *Addr); +void ETH_GetMACAddress(uint32_t MacAddr, uint8_t *Addr); +void ETH_MACAddressPerfectFilterCmd(uint32_t MacAddr, FunctionalState NewState); +void ETH_MACAddressFilterConfig(uint32_t MacAddr, uint32_t Filter); +void ETH_MACAddressMaskBytesFilterConfig(uint32_t MacAddr, uint32_t MaskByte); + +void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount); +void ETH_DMATxDescRingInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t *TxBuff1, uint8_t *TxBuff2, uint32_t TxBuffCount); +FlagStatus ETH_GetDMATxDescFlagStatus(ETH_DMADESCTypeDef *DMATxDesc, uint32_t ETH_DMATxDescFlag); +uint32_t ETH_GetDMATxDescCollisionCount(ETH_DMADESCTypeDef *DMATxDesc); +void ETH_SetDMATxDescOwnBit(ETH_DMADESCTypeDef *DMATxDesc); +void ETH_DMATxDescTransmitITConfig(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState); +void ETH_DMATxDescFrameSegmentConfig(ETH_DMADESCTypeDef *DMATxDesc, uint32_t DMATxDesc_FrameSegment); +void ETH_DMATxDescChecksumInsertionConfig(ETH_DMADESCTypeDef *DMATxDesc, uint32_t DMATxDesc_Checksum); +void ETH_DMATxDescCRCCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState); +void ETH_DMATxDescEndOfRingCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState); +void ETH_DMATxDescSecondAddressChainedCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState); +void ETH_DMATxDescShortFramePaddingCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState); +void ETH_DMATxDescTimeStampCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState); +void ETH_DMATxDescBufferSizeConfig(ETH_DMADESCTypeDef *DMATxDesc, uint32_t BufferSize1, uint32_t BufferSize2); +void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount); +void ETH_DMARxDescRingInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff1, uint8_t *RxBuff2, uint32_t RxBuffCount); +FlagStatus ETH_GetDMARxDescFlagStatus(ETH_DMADESCTypeDef *DMARxDesc, uint32_t ETH_DMARxDescFlag); +void ETH_SetDMARxDescOwnBit(ETH_DMADESCTypeDef *DMARxDesc); +uint32_t ETH_GetDMARxDescFrameLength(ETH_DMADESCTypeDef *DMARxDesc); +void ETH_DMARxDescReceiveITConfig(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState); +void ETH_DMARxDescEndOfRingCmd(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState); +void ETH_DMARxDescSecondAddressChainedCmd(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState); +uint32_t ETH_GetDMARxDescBufferSize(ETH_DMADESCTypeDef *DMARxDesc, uint32_t DMARxDesc_Buffer); + +FlagStatus ETH_GetDMAFlagStatus(uint32_t ETH_DMA_FLAG); +void ETH_DMAClearFlag(uint32_t ETH_DMA_FLAG); +ITStatus ETH_GetDMAITStatus(uint32_t ETH_DMA_IT); +void ETH_DMAClearITPendingBit(uint32_t ETH_DMA_IT); +uint32_t ETH_GetTransmitProcessState(void); +uint32_t ETH_GetReceiveProcessState(void); +void ETH_FlushTransmitFIFO(void); +FlagStatus ETH_GetFlushTransmitFIFOStatus(void); +void ETH_DMATransmissionCmd(FunctionalState NewState); +void ETH_DMAReceptionCmd(FunctionalState NewState); +void ETH_DMAITConfig(uint32_t ETH_DMA_IT, FunctionalState NewState); +FlagStatus ETH_GetDMAOverflowStatus(uint32_t ETH_DMA_Overflow); +uint32_t ETH_GetRxOverflowMissedFrameCounter(void); +uint32_t ETH_GetBufferUnavailableMissedFrameCounter(void); +uint32_t ETH_GetCurrentTxDescStartAddress(void); +uint32_t ETH_GetCurrentRxDescStartAddress(void); +uint32_t ETH_GetCurrentTxBufferAddress(void); +uint32_t ETH_GetCurrentRxBufferAddress(void); +void ETH_ResumeDMATransmission(void); +void ETH_ResumeDMAReception(void); + +void ETH_ResetWakeUpFrameFilterRegisterPointer(void); +void ETH_SetWakeUpFrameFilterRegister(uint32_t *Buffer); +void ETH_GlobalUnicastWakeUpCmd(FunctionalState NewState); +FlagStatus ETH_GetPMTFlagStatus(uint32_t ETH_PMT_FLAG); +void ETH_WakeUpFrameDetectionCmd(FunctionalState NewState); +void ETH_MagicPacketDetectionCmd(FunctionalState NewState); +void ETH_PowerDownCmd(FunctionalState NewState); + +void ETH_MMCCounterFreezeCmd(FunctionalState NewState); +void ETH_MMCResetOnReadCmd(FunctionalState NewState); +void ETH_MMCCounterRolloverCmd(FunctionalState NewState); +void ETH_MMCCountersReset(void); +void ETH_MMCITConfig(uint32_t ETH_MMC_IT, FunctionalState NewState); +ITStatus ETH_GetMMCITStatus(uint32_t ETH_MMC_IT); +uint32_t ETH_GetMMCRegister(uint32_t ETH_MMCReg); + +uint32_t ETH_HandlePTPTxPkt(uint8_t *ppkt, uint16_t FrameLength, uint32_t *PTPTxTab); +uint32_t ETH_HandlePTPRxPkt(uint8_t *ppkt, uint32_t *PTPRxTab); +void ETH_DMAPTPTxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, ETH_DMADESCTypeDef *DMAPTPTxDescTab, uint8_t* TxBuff, uint32_t TxBuffCount); +void ETH_DMAPTPRxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, ETH_DMADESCTypeDef *DMAPTPRxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount); +void ETH_EnablePTPTimeStampAddend(void); +void ETH_EnablePTPTimeStampInterruptTrigger(void); +void ETH_EnablePTPTimeStampUpdate(void); +void ETH_InitializePTPTimeStamp(void); +void ETH_PTPUpdateMethodConfig(uint32_t UpdateMethod); +void ETH_PTPTimeStampCmd(FunctionalState NewState); +FlagStatus ETH_GetPTPFlagStatus(uint32_t ETH_PTP_FLAG); +void ETH_SetPTPSubSecondIncrement(uint32_t SubSecondValue); +void ETH_SetPTPTimeStampUpdate(uint32_t Sign, uint32_t SecondValue, uint32_t SubSecondValue); +void ETH_SetPTPTimeStampAddend(uint32_t Value); +void ETH_SetPTPTargetTime(uint32_t HighValue, uint32_t LowValue); +uint32_t ETH_GetPTPRegister(uint32_t ETH_PTPReg); +void RGMII_TXC_Delay(uint8_t clock_polarity,uint8_t delay_time); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_exti.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_exti.h new file mode 100755 index 000000000..9fbd35368 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_exti.h @@ -0,0 +1,90 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_exti.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* EXTI firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_EXTI_H +#define __CH32V30x_EXTI_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* EXTI mode enumeration */ +typedef enum +{ + EXTI_Mode_Interrupt = 0x00, + EXTI_Mode_Event = 0x04 +}EXTIMode_TypeDef; + +/* EXTI Trigger enumeration */ +typedef enum +{ + EXTI_Trigger_Rising = 0x08, + EXTI_Trigger_Falling = 0x0C, + EXTI_Trigger_Rising_Falling = 0x10 +}EXTITrigger_TypeDef; + +/* EXTI Init Structure definition */ +typedef struct +{ + uint32_t EXTI_Line; /* Specifies the EXTI lines to be enabled or disabled. + This parameter can be any combination of @ref EXTI_Lines */ + + EXTIMode_TypeDef EXTI_Mode; /* Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTIMode_TypeDef */ + + EXTITrigger_TypeDef EXTI_Trigger; /* Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTIMode_TypeDef */ + + FunctionalState EXTI_LineCmd; /* Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ +}EXTI_InitTypeDef; + + +/* EXTI_Lines */ +#define EXTI_Line0 ((uint32_t)0x00001) /* External interrupt line 0 */ +#define EXTI_Line1 ((uint32_t)0x00002) /* External interrupt line 1 */ +#define EXTI_Line2 ((uint32_t)0x00004) /* External interrupt line 2 */ +#define EXTI_Line3 ((uint32_t)0x00008) /* External interrupt line 3 */ +#define EXTI_Line4 ((uint32_t)0x00010) /* External interrupt line 4 */ +#define EXTI_Line5 ((uint32_t)0x00020) /* External interrupt line 5 */ +#define EXTI_Line6 ((uint32_t)0x00040) /* External interrupt line 6 */ +#define EXTI_Line7 ((uint32_t)0x00080) /* External interrupt line 7 */ +#define EXTI_Line8 ((uint32_t)0x00100) /* External interrupt line 8 */ +#define EXTI_Line9 ((uint32_t)0x00200) /* External interrupt line 9 */ +#define EXTI_Line10 ((uint32_t)0x00400) /* External interrupt line 10 */ +#define EXTI_Line11 ((uint32_t)0x00800) /* External interrupt line 11 */ +#define EXTI_Line12 ((uint32_t)0x01000) /* External interrupt line 12 */ +#define EXTI_Line13 ((uint32_t)0x02000) /* External interrupt line 13 */ +#define EXTI_Line14 ((uint32_t)0x04000) /* External interrupt line 14 */ +#define EXTI_Line15 ((uint32_t)0x08000) /* External interrupt line 15 */ +#define EXTI_Line16 ((uint32_t)0x10000) /* External interrupt line 16 Connected to the PVD Output */ +#define EXTI_Line17 ((uint32_t)0x20000) /* External interrupt line 17 Connected to the RTC Alarm event */ +#define EXTI_Line18 ((uint32_t)0x40000) /* External interrupt line 18 Connected to the USBD/USBFS OTG + Wakeup from suspend event */ +#define EXTI_Line19 ((uint32_t)0x80000) /* External interrupt line 19 Connected to the Ethernet Wakeup event */ +#define EXTI_Line20 ((uint32_t)0x100000) /* External interrupt line 20 Connected to the USBHS Wakeup event */ + +void EXTI_DeInit(void); +void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); +void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); +void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); +FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line); +void EXTI_ClearFlag(uint32_t EXTI_Line); +ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); +void EXTI_ClearITPendingBit(uint32_t EXTI_Line); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_flash.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_flash.h new file mode 100755 index 000000000..efb4526c6 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_flash.h @@ -0,0 +1,143 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_flash.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the FLASH +* firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_FLASH_H +#define __CH32V30x_FLASH_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* FLASH Status */ +typedef enum +{ + FLASH_BUSY = 1, + FLASH_ERROR_PG, + FLASH_ERROR_WRP, + FLASH_COMPLETE, + FLASH_TIMEOUT +}FLASH_Status; + + +/* Write Protect */ +#define FLASH_WRProt_Sectors0 ((uint32_t)0x00000001) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors1 ((uint32_t)0x00000002) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors2 ((uint32_t)0x00000004) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors3 ((uint32_t)0x00000008) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors4 ((uint32_t)0x00000010) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors5 ((uint32_t)0x00000020) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors6 ((uint32_t)0x00000040) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors7 ((uint32_t)0x00000080) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors8 ((uint32_t)0x00000100) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors9 ((uint32_t)0x00000200) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors10 ((uint32_t)0x00000400) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors11 ((uint32_t)0x00000800) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors12 ((uint32_t)0x00001000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors13 ((uint32_t)0x00002000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors14 ((uint32_t)0x00004000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors15 ((uint32_t)0x00008000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors16 ((uint32_t)0x00010000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors17 ((uint32_t)0x00020000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors18 ((uint32_t)0x00040000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors19 ((uint32_t)0x00080000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors20 ((uint32_t)0x00100000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors21 ((uint32_t)0x00200000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors22 ((uint32_t)0x00400000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors23 ((uint32_t)0x00800000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors24 ((uint32_t)0x01000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors25 ((uint32_t)0x02000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors26 ((uint32_t)0x04000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors27 ((uint32_t)0x08000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors28 ((uint32_t)0x10000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors29 ((uint32_t)0x20000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors30 ((uint32_t)0x40000000) /* Write protection of setor 0 */ +#define FLASH_WRProt_Sectors31to127 ((uint32_t)0x80000000) /* Write protection of page 62 to 255 */ + +#define FLASH_WRProt_AllSectors ((uint32_t)0xFFFFFFFF) /* Write protection of all Sectors */ + +/* Option_Bytes_IWatchdog */ +#define OB_IWDG_SW ((uint16_t)0x0001) /* Software IWDG selected */ +#define OB_IWDG_HW ((uint16_t)0x0000) /* Hardware IWDG selected */ + +/* Option_Bytes_nRST_STOP */ +#define OB_STOP_NoRST ((uint16_t)0x0002) /* No reset generated when entering in STOP */ +#define OB_STOP_RST ((uint16_t)0x0000) /* Reset generated when entering in STOP */ + +/* Option_Bytes_nRST_STDBY */ +#define OB_STDBY_NoRST ((uint16_t)0x0004) /* No reset generated when entering in STANDBY */ +#define OB_STDBY_RST ((uint16_t)0x0000) /* Reset generated when entering in STANDBY */ + +/* FLASH_Interrupts */ +#define FLASH_IT_ERROR ((uint32_t)0x00000400) /* FPEC error interrupt source */ +#define FLASH_IT_EOP ((uint32_t)0x00001000) /* End of FLASH Operation Interrupt source */ +#define FLASH_IT_BANK1_ERROR FLASH_IT_ERROR /* FPEC BANK1 error interrupt source */ +#define FLASH_IT_BANK1_EOP FLASH_IT_EOP /* End of FLASH BANK1 Operation Interrupt source */ + +/* FLASH_Flags */ +#define FLASH_FLAG_BSY ((uint32_t)0x00000001) /* FLASH Busy flag */ +#define FLASH_FLAG_EOP ((uint32_t)0x00000020) /* FLASH End of Operation flag */ +#define FLASH_FLAG_PGERR ((uint32_t)0x00000004) /* FLASH Program error flag */ +#define FLASH_FLAG_WRPRTERR ((uint32_t)0x00000010) /* FLASH Write protected error flag */ +#define FLASH_FLAG_OPTERR ((uint32_t)0x00000001) /* FLASH Option Byte error flag */ + +#define FLASH_FLAG_BANK1_BSY FLASH_FLAG_BSY /* FLASH BANK1 Busy flag*/ +#define FLASH_FLAG_BANK1_EOP FLASH_FLAG_EOP /* FLASH BANK1 End of Operation flag */ +#define FLASH_FLAG_BANK1_PGERR FLASH_FLAG_PGERR /* FLASH BANK1 Program error flag */ +#define FLASH_FLAG_BANK1_WRPRTERR FLASH_FLAG_WRPRTERR /* FLASH BANK1 Write protected error flag */ + +/* FLASH_Enhance_CLK */ +#define FLASH_Enhance_SYSTEM_HALF ((uint32_t)0x00000000) /* FLASH Enhance Clock = SYSTEM */ +#define FLASH_Enhance_SYSTEM ((uint32_t)0x02000000) /* Enhance_CLK = SYSTEM/2 */ + + +/*Functions used for all devices*/ +void FLASH_Unlock(void); +void FLASH_Lock(void); +FLASH_Status FLASH_ErasePage(uint32_t Page_Address); +FLASH_Status FLASH_EraseAllPages(void); +FLASH_Status FLASH_EraseOptionBytes(void); +FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data); +FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data); +FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data); +FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Sectors); +FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState); +FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY); +uint32_t FLASH_GetUserOptionByte(void); +uint32_t FLASH_GetWriteProtectionOptionByte(void); +FlagStatus FLASH_GetReadOutProtectionStatus(void); +void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState); +FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG); +void FLASH_ClearFlag(uint32_t FLASH_FLAG); +FLASH_Status FLASH_GetStatus(void); +FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout); +void FLASH_Unlock_Fast(void); +void FLASH_Lock_Fast(void); +void FLASH_ErasePage_Fast(uint32_t Page_Address); +void FLASH_EraseBlock_32K_Fast(uint32_t Block_Address); +void FLASH_EraseBlock_64K_Fast(uint32_t Block_Address); +void FLASH_ProgramPage_Fast(uint32_t Page_Address, uint32_t* pbuf); +void FLASH_Enhance_Mode(uint32_t FLASH_Enhance_CLK, FunctionalState NewState); + +/* New function used for all devices */ +void FLASH_UnlockBank1(void); +void FLASH_LockBank1(void); +FLASH_Status FLASH_EraseAllBank1Pages(void); +FLASH_Status FLASH_GetBank1Status(void); +FLASH_Status FLASH_WaitForLastBank1Operation(uint32_t Timeout); + +#ifdef __cplusplus +} +#endif + + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_fsmc.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_fsmc.h new file mode 100755 index 000000000..d050ec895 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_fsmc.h @@ -0,0 +1,287 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_fsmc.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the FSMC +* firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_FSMC_H +#define __CH32V30x_FSMC_H + +#ifdef __cplusplus + extern "C" { +#endif + + +#include "ch32v30x.h" + + +/* FSMC Init structure definition */ +typedef struct +{ + uint32_t FSMC_AddressSetupTime; /* Defines the number of HCLK cycles to configure + the duration of the address setup time. + This parameter can be a value between 0 and 0xF. + @note: It is not used with synchronous NOR Flash memories. */ + + uint32_t FSMC_AddressHoldTime; /* Defines the number of HCLK cycles to configure + the duration of the address hold time. + This parameter can be a value between 0 and 0xF. + @note: It is not used with synchronous NOR Flash memories.*/ + + uint32_t FSMC_DataSetupTime; /* Defines the number of HCLK cycles to configure + the duration of the data setup time. + This parameter can be a value between 0 and 0xFF. + @note: It is used for SRAMs, ROMs and asynchronous multiplexed NOR Flash memories. */ + + uint32_t FSMC_BusTurnAroundDuration; /* Defines the number of HCLK cycles to configure + the duration of the bus turnaround. + This parameter can be a value between 0 and 0xF. + @note: It is only used for multiplexed NOR Flash memories. */ + + uint32_t FSMC_CLKDivision; /* Defines the period of CLK clock output signal, expressed in number of HCLK cycles. + This parameter can be a value between 1 and 0xF. + @note: This parameter is not used for asynchronous NOR Flash, SRAM or ROM accesses. */ + + uint32_t FSMC_DataLatency; /* Defines the number of memory clock cycles to issue + to the memory before getting the first data. + The value of this parameter depends on the memory type as shown below: + - It must be set to 0 in case of a CRAM + - It is don't care in asynchronous NOR, SRAM or ROM accesses + - It may assume a value between 0 and 0xF in NOR Flash memories + with synchronous burst mode enable */ + + uint32_t FSMC_AccessMode; /* Specifies the asynchronous access mode. + This parameter can be a value of @ref FSMC_Access_Mode */ +}FSMC_NORSRAMTimingInitTypeDef; + + +typedef struct +{ + uint32_t FSMC_Bank; /* Specifies the NOR/SRAM memory bank that will be used. + This parameter can be a value of @ref FSMC_NORSRAM_Bank */ + + uint32_t FSMC_DataAddressMux; /* Specifies whether the address and data values are + multiplexed on the databus or not. + This parameter can be a value of @ref FSMC_Data_Address_Bus_Multiplexing */ + + uint32_t FSMC_MemoryType; /* Specifies the type of external memory attached to + the corresponding memory bank. + This parameter can be a value of @ref FSMC_Memory_Type */ + + uint32_t FSMC_MemoryDataWidth; /* Specifies the external memory device width. + This parameter can be a value of @ref FSMC_Data_Width */ + + uint32_t FSMC_BurstAccessMode; /* Enables or disables the burst access mode for Flash memory, + valid only with synchronous burst Flash memories. + This parameter can be a value of @ref FSMC_Burst_Access_Mode */ + + uint32_t FSMC_AsynchronousWait; /* Enables or disables wait signal during asynchronous transfers, + valid only with asynchronous Flash memories. + This parameter can be a value of @ref FSMC_AsynchronousWait */ + + uint32_t FSMC_WaitSignalPolarity; /* Specifies the wait signal polarity, valid only when accessing + the Flash memory in burst mode. + This parameter can be a value of @ref FSMC_Wait_Signal_Polarity */ + + uint32_t FSMC_WrapMode; /* Enables or disables the Wrapped burst access mode for Flash + memory, valid only when accessing Flash memories in burst mode. + This parameter can be a value of @ref FSMC_Wrap_Mode */ + + uint32_t FSMC_WaitSignalActive; /* Specifies if the wait signal is asserted by the memory one + clock cycle before the wait state or during the wait state, + valid only when accessing memories in burst mode. + This parameter can be a value of @ref FSMC_Wait_Timing */ + + uint32_t FSMC_WriteOperation; /* Enables or disables the write operation in the selected bank by the FSMC. + This parameter can be a value of @ref FSMC_Write_Operation */ + + uint32_t FSMC_WaitSignal; /* Enables or disables the wait-state insertion via wait + signal, valid for Flash memory access in burst mode. + This parameter can be a value of @ref FSMC_Wait_Signal */ + + uint32_t FSMC_ExtendedMode; /* Enables or disables the extended mode. + This parameter can be a value of @ref FSMC_Extended_Mode */ + + uint32_t FSMC_WriteBurst; /* Enables or disables the write burst operation. + This parameter can be a value of @ref FSMC_Write_Burst */ + + FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct; /* Timing Parameters for write and read access if the ExtendedMode is not used*/ + + FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct; /* Timing Parameters for write access if the ExtendedMode is used*/ +}FSMC_NORSRAMInitTypeDef; + + +typedef struct +{ + uint32_t FSMC_SetupTime; /* Defines the number of HCLK cycles to setup address before + the command assertion for NAND-Flash read or write access + to common/Attribute or I/O memory space (depending on + the memory space timing to be configured). + This parameter can be a value between 0 and 0xFF.*/ + + uint32_t FSMC_WaitSetupTime; /* Defines the minimum number of HCLK cycles to assert the + command for NAND-Flash read or write access to + common/Attribute or I/O memory space (depending on the + memory space timing to be configured). + This parameter can be a number between 0x00 and 0xFF */ + + uint32_t FSMC_HoldSetupTime; /* Defines the number of HCLK clock cycles to hold address + (and data for write access) after the command deassertion + for NAND-Flash read or write access to common/Attribute + or I/O memory space (depending on the memory space timing + to be configured). + This parameter can be a number between 0x00 and 0xFF */ + + uint32_t FSMC_HiZSetupTime; /* Defines the number of HCLK clock cycles during which the + databus is kept in HiZ after the start of a NAND-Flash + write access to common/Attribute or I/O memory space (depending + on the memory space timing to be configured). + This parameter can be a number between 0x00 and 0xFF */ +}FSMC_NAND_PCCARDTimingInitTypeDef; + + +typedef struct +{ + uint32_t FSMC_Bank; /* Specifies the NAND memory bank that will be used. + This parameter can be a value of @ref FSMC_NAND_Bank */ + + uint32_t FSMC_Waitfeature; /* Enables or disables the Wait feature for the NAND Memory Bank. + This parameter can be any value of @ref FSMC_Wait_feature */ + + uint32_t FSMC_MemoryDataWidth; /* Specifies the external memory device width. + This parameter can be any value of @ref FSMC_Data_Width */ + + uint32_t FSMC_ECC; /* Enables or disables the ECC computation. + This parameter can be any value of @ref FSMC_ECC */ + + uint32_t FSMC_ECCPageSize; /* Defines the page size for the extended ECC. + This parameter can be any value of @ref FSMC_ECC_Page_Size */ + + uint32_t FSMC_TCLRSetupTime; /* Defines the number of HCLK cycles to configure the + delay between CLE low and RE low. + This parameter can be a value between 0 and 0xFF. */ + + uint32_t FSMC_TARSetupTime; /* Defines the number of HCLK cycles to configure the + delay between ALE low and RE low. + This parameter can be a number between 0x0 and 0xFF */ + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_CommonSpaceTimingStruct; /* FSMC Common Space Timing */ + + FSMC_NAND_PCCARDTimingInitTypeDef* FSMC_AttributeSpaceTimingStruct; /* FSMC Attribute Space Timing */ +}FSMC_NANDInitTypeDef; + + +/* FSMC_NORSRAM_Bank */ +#define FSMC_Bank1_NORSRAM1 ((uint32_t)0x00000000) + +/* FSMC_NAND_Bank */ +#define FSMC_Bank2_NAND ((uint32_t)0x00000010) + +/* FSMC_Data_Address_Bus_Multiplexing */ +#define FSMC_DataAddressMux_Disable ((uint32_t)0x00000000) +#define FSMC_DataAddressMux_Enable ((uint32_t)0x00000002) + +/* FSMC_Memory_Type */ +#define FSMC_MemoryType_SRAM ((uint32_t)0x00000000) +#define FSMC_MemoryType_PSRAM ((uint32_t)0x00000004) +#define FSMC_MemoryType_NOR ((uint32_t)0x00000008) + +/* FSMC_Data_Width */ +#define FSMC_MemoryDataWidth_8b ((uint32_t)0x00000000) +#define FSMC_MemoryDataWidth_16b ((uint32_t)0x00000010) + +/* FSMC_Burst_Access_Mode */ +#define FSMC_BurstAccessMode_Disable ((uint32_t)0x00000000) +#define FSMC_BurstAccessMode_Enable ((uint32_t)0x00000100) + +/* FSMC_AsynchronousWait */ +#define FSMC_AsynchronousWait_Disable ((uint32_t)0x00000000) +#define FSMC_AsynchronousWait_Enable ((uint32_t)0x00008000) + +/* FSMC_Wait_Signal_Polarity */ +#define FSMC_WaitSignalPolarity_Low ((uint32_t)0x00000000) +#define FSMC_WaitSignalPolarity_High ((uint32_t)0x00000200) + +/* FSMC_Wrap_Mode */ +#define FSMC_WrapMode_Disable ((uint32_t)0x00000000) +#define FSMC_WrapMode_Enable ((uint32_t)0x00000400) + +/* FSMC_Wait_Timing */ +#define FSMC_WaitSignalActive_BeforeWaitState ((uint32_t)0x00000000) +#define FSMC_WaitSignalActive_DuringWaitState ((uint32_t)0x00000800) + +/* FSMC_Write_Operation */ +#define FSMC_WriteOperation_Disable ((uint32_t)0x00000000) +#define FSMC_WriteOperation_Enable ((uint32_t)0x00001000) + +/* FSMC_Wait_Signal */ +#define FSMC_WaitSignal_Disable ((uint32_t)0x00000000) +#define FSMC_WaitSignal_Enable ((uint32_t)0x00002000) + +/* FSMC_Extended_Mode */ +#define FSMC_ExtendedMode_Disable ((uint32_t)0x00000000) +#define FSMC_ExtendedMode_Enable ((uint32_t)0x00004000) + +/* FSMC_Write_Burst */ +#define FSMC_WriteBurst_Disable ((uint32_t)0x00000000) +#define FSMC_WriteBurst_Enable ((uint32_t)0x00080000) + +/* FSMC_Access_Mode */ +#define FSMC_AccessMode_A ((uint32_t)0x00000000) +#define FSMC_AccessMode_B ((uint32_t)0x10000000) +#define FSMC_AccessMode_C ((uint32_t)0x20000000) +#define FSMC_AccessMode_D ((uint32_t)0x30000000) + +/* FSMC_Wait_feature */ +#define FSMC_Waitfeature_Disable ((uint32_t)0x00000000) +#define FSMC_Waitfeature_Enable ((uint32_t)0x00000002) + +/* FSMC_ECC */ +#define FSMC_ECC_Disable ((uint32_t)0x00000000) +#define FSMC_ECC_Enable ((uint32_t)0x00000040) + +/* FSMC_ECC_Page_Size */ +#define FSMC_ECCPageSize_256Bytes ((uint32_t)0x00000000) +#define FSMC_ECCPageSize_512Bytes ((uint32_t)0x00020000) +#define FSMC_ECCPageSize_1024Bytes ((uint32_t)0x00040000) +#define FSMC_ECCPageSize_2048Bytes ((uint32_t)0x00060000) +#define FSMC_ECCPageSize_4096Bytes ((uint32_t)0x00080000) +#define FSMC_ECCPageSize_8192Bytes ((uint32_t)0x000A0000) + +/* FSMC_Interrupt_sources */ +#define FSMC_IT_RisingEdge ((uint32_t)0x00000008) +#define FSMC_IT_Level ((uint32_t)0x00000010) +#define FSMC_IT_FallingEdge ((uint32_t)0x00000020) + +/* FSMC_Flags */ +#define FSMC_FLAG_RisingEdge ((uint32_t)0x00000001) +#define FSMC_FLAG_Level ((uint32_t)0x00000002) +#define FSMC_FLAG_FallingEdge ((uint32_t)0x00000004) +#define FSMC_FLAG_FEMPT ((uint32_t)0x00000040) + + +void FSMC_NORSRAMDeInit(uint32_t FSMC_Bank); +void FSMC_NANDDeInit(uint32_t FSMC_Bank); +void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); +void FSMC_NANDInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct); +void FSMC_NORSRAMStructInit(FSMC_NORSRAMInitTypeDef* FSMC_NORSRAMInitStruct); +void FSMC_NANDStructInit(FSMC_NANDInitTypeDef* FSMC_NANDInitStruct); +void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState); +void FSMC_NANDCmd(uint32_t FSMC_Bank, FunctionalState NewState); +void FSMC_NANDECCCmd(uint32_t FSMC_Bank, FunctionalState NewState); +uint32_t FSMC_GetECC(uint32_t FSMC_Bank); +void FSMC_ITConfig(uint32_t FSMC_Bank, uint32_t FSMC_IT, FunctionalState NewState); +FlagStatus FSMC_GetFlagStatus(uint32_t FSMC_Bank, uint32_t FSMC_FLAG); +void FSMC_ClearFlag(uint32_t FSMC_Bank, uint32_t FSMC_FLAG); +ITStatus FSMC_GetITStatus(uint32_t FSMC_Bank, uint32_t FSMC_IT); +void FSMC_ClearITPendingBit(uint32_t FSMC_Bank, uint32_t FSMC_IT); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_gpio.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_gpio.h new file mode 100755 index 000000000..18e3ec2f1 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_gpio.h @@ -0,0 +1,197 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_gpio.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* GPIO firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_GPIO_H +#define __CH32V30x_GPIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* Output Maximum frequency selection */ +typedef enum +{ + GPIO_Speed_10MHz = 1, + GPIO_Speed_2MHz, + GPIO_Speed_50MHz +}GPIOSpeed_TypeDef; + +/* Configuration Mode enumeration */ +typedef enum +{ GPIO_Mode_AIN = 0x0, + GPIO_Mode_IN_FLOATING = 0x04, + GPIO_Mode_IPD = 0x28, + GPIO_Mode_IPU = 0x48, + GPIO_Mode_Out_OD = 0x14, + GPIO_Mode_Out_PP = 0x10, + GPIO_Mode_AF_OD = 0x1C, + GPIO_Mode_AF_PP = 0x18 +}GPIOMode_TypeDef; + +/* GPIO Init structure definition */ +typedef struct +{ + uint16_t GPIO_Pin; /* Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_pins_define */ + + GPIOSpeed_TypeDef GPIO_Speed; /* Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIOSpeed_TypeDef */ + + GPIOMode_TypeDef GPIO_Mode; /* Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIOMode_TypeDef */ +}GPIO_InitTypeDef; + +/* Bit_SET and Bit_RESET enumeration */ +typedef enum +{ + Bit_RESET = 0, + Bit_SET +}BitAction; + +/* GPIO_pins_define */ +#define GPIO_Pin_0 ((uint16_t)0x0001) /* Pin 0 selected */ +#define GPIO_Pin_1 ((uint16_t)0x0002) /* Pin 1 selected */ +#define GPIO_Pin_2 ((uint16_t)0x0004) /* Pin 2 selected */ +#define GPIO_Pin_3 ((uint16_t)0x0008) /* Pin 3 selected */ +#define GPIO_Pin_4 ((uint16_t)0x0010) /* Pin 4 selected */ +#define GPIO_Pin_5 ((uint16_t)0x0020) /* Pin 5 selected */ +#define GPIO_Pin_6 ((uint16_t)0x0040) /* Pin 6 selected */ +#define GPIO_Pin_7 ((uint16_t)0x0080) /* Pin 7 selected */ +#define GPIO_Pin_8 ((uint16_t)0x0100) /* Pin 8 selected */ +#define GPIO_Pin_9 ((uint16_t)0x0200) /* Pin 9 selected */ +#define GPIO_Pin_10 ((uint16_t)0x0400) /* Pin 10 selected */ +#define GPIO_Pin_11 ((uint16_t)0x0800) /* Pin 11 selected */ +#define GPIO_Pin_12 ((uint16_t)0x1000) /* Pin 12 selected */ +#define GPIO_Pin_13 ((uint16_t)0x2000) /* Pin 13 selected */ +#define GPIO_Pin_14 ((uint16_t)0x4000) /* Pin 14 selected */ +#define GPIO_Pin_15 ((uint16_t)0x8000) /* Pin 15 selected */ +#define GPIO_Pin_All ((uint16_t)0xFFFF) /* All pins selected */ + +/* GPIO_Remap_define */ +/* PCFR1 */ +#define GPIO_Remap_SPI1 ((uint32_t)0x00000001) /* SPI1 Alternate Function mapping */ +#define GPIO_Remap_I2C1 ((uint32_t)0x00000002) /* I2C1 Alternate Function mapping */ +#define GPIO_Remap_USART1 ((uint32_t)0x00000004) /* USART1 Alternate Function mapping low bit */ +#define GPIO_Remap_USART2 ((uint32_t)0x00000008) /* USART2 Alternate Function mapping */ +#define GPIO_PartialRemap_USART3 ((uint32_t)0x00140010) /* USART3 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART3 ((uint32_t)0x00140030) /* USART3 Full Alternate Function mapping */ +#define GPIO_PartialRemap_TIM1 ((uint32_t)0x00160040) /* TIM1 Partial Alternate Function mapping */ +#define GPIO_FullRemap_TIM1 ((uint32_t)0x001600C0) /* TIM1 Full Alternate Function mapping */ +#define GPIO_PartialRemap1_TIM2 ((uint32_t)0x00180100) /* TIM2 Partial1 Alternate Function mapping */ +#define GPIO_PartialRemap2_TIM2 ((uint32_t)0x00180200) /* TIM2 Partial2 Alternate Function mapping */ +#define GPIO_FullRemap_TIM2 ((uint32_t)0x00180300) /* TIM2 Full Alternate Function mapping */ +#define GPIO_PartialRemap_TIM3 ((uint32_t)0x001A0800) /* TIM3 Partial Alternate Function mapping */ +#define GPIO_FullRemap_TIM3 ((uint32_t)0x001A0C00) /* TIM3 Full Alternate Function mapping */ +#define GPIO_Remap_TIM4 ((uint32_t)0x00001000) /* TIM4 Alternate Function mapping */ +#define GPIO_Remap1_CAN1 ((uint32_t)0x001D4000) /* CAN1 Alternate Function mapping */ +#define GPIO_Remap2_CAN1 ((uint32_t)0x001D6000) /* CAN1 Alternate Function mapping */ +#define GPIO_Remap_PD01 ((uint32_t)0x00008000) /* PD01 Alternate Function mapping */ +#define GPIO_Remap_TIM5CH4_LSI ((uint32_t)0x00200001) /* LSI connected to TIM5 Channel4 input capture for calibration */ +#define GPIO_Remap_ADC1_ETRGINJ ((uint32_t)0x00200002) /* ADC1 External Trigger Injected Conversion remapping */ +#define GPIO_Remap_ADC1_ETRGREG ((uint32_t)0x00200004) /* ADC1 External Trigger Regular Conversion remapping */ +#define GPIO_Remap_ADC2_ETRGINJ ((uint32_t)0x00200008) /* ADC2 External Trigger Injected Conversion remapping */ +#define GPIO_Remap_ADC2_ETRGREG ((uint32_t)0x00200010) /* ADC2 External Trigger Regular Conversion remapping */ +#define GPIO_Remap_ETH ((uint32_t)0x00200020) /* Ethernet remapping (only for Connectivity line devices) */ +#define GPIO_Remap_CAN2 ((uint32_t)0x00200040) /* CAN2 remapping (only for Connectivity line devices) */ +#define GPIO_Remap_MII_RMII_SEL ((uint32_t)0x00200080) /* MII or RMII selection */ +#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /* Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */ +#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /* JTAG-DP Disabled and SW-DP Enabled */ +#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /* Full SWJ Disabled (JTAG-DP + SW-DP) */ +#define GPIO_Remap_SPI3 ((uint32_t)0x00201000) /* SPI3/I2S3 Alternate Function mapping (only for Connectivity line devices) */ +#define GPIO_Remap_TIM2ITR1_PTP_SOF ((uint32_t)0x00202000) /* Ethernet PTP output or USB OTG SOF (Start of Frame) connected + to TIM2 Internal Trigger 1 for calibration + (only for Connectivity line devices) */ +#define GPIO_Remap_PTP_PPS ((uint32_t)0x00204000) /* Ethernet MAC PPS_PTS output on PB05 (only for Connectivity line devices) */ + +/* PCFR2 */ +#define GPIO_Remap_TIM8 ((uint32_t)0x80000004) /* TIM8 Alternate Function mapping */ +#define GPIO_PartialRemap_TIM9 ((uint32_t)0x80130008) /* TIM9 Partial Alternate Function mapping */ +#define GPIO_FullRemap_TIM9 ((uint32_t)0x80130010) /* TIM9 Full Alternate Function mapping */ +#define GPIO_PartialRemap_TIM10 ((uint32_t)0x80150020) /* TIM10 Partial Alternate Function mapping */ +#define GPIO_FullRemap_TIM10 ((uint32_t)0x80150040) /* TIM10 Full Alternate Function mapping */ +#define GPIO_Remap_FSMC_NADV ((uint32_t)0x80000400) /* FSMC_NADV Alternate Function mapping */ +#define GPIO_PartialRemap_USART4 ((uint32_t)0x80300001) /* USART4 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART4 ((uint32_t)0x80300002) /* USART4 Full Alternate Function mapping */ +#define GPIO_PartialRemap_USART5 ((uint32_t)0x80320004) /* USART5 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART5 ((uint32_t)0x80320008) /* USART5 Full Alternate Function mapping */ +#define GPIO_PartialRemap_USART6 ((uint32_t)0x80340010) /* USART6 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART6 ((uint32_t)0x80340020) /* USART6 Full Alternate Function mapping */ +#define GPIO_PartialRemap_USART7 ((uint32_t)0x80360040) /* USART7 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART7 ((uint32_t)0x80360080) /* USART7 Full Alternate Function mapping */ +#define GPIO_PartialRemap_USART8 ((uint32_t)0x80380100) /* USART8 Partial Alternate Function mapping */ +#define GPIO_FullRemap_USART8 ((uint32_t)0x80380200) /* USART8 Full Alternate Function mapping */ +#define GPIO_Remap_USART1_HighBit ((uint32_t)0x80200400) /* USART1 Alternate Function mapping high bit */ + + +/* GPIO_Port_Sources */ +#define GPIO_PortSourceGPIOA ((uint8_t)0x00) +#define GPIO_PortSourceGPIOB ((uint8_t)0x01) +#define GPIO_PortSourceGPIOC ((uint8_t)0x02) +#define GPIO_PortSourceGPIOD ((uint8_t)0x03) +#define GPIO_PortSourceGPIOE ((uint8_t)0x04) +#define GPIO_PortSourceGPIOF ((uint8_t)0x05) +#define GPIO_PortSourceGPIOG ((uint8_t)0x06) + +/* GPIO_Pin_sources */ +#define GPIO_PinSource0 ((uint8_t)0x00) +#define GPIO_PinSource1 ((uint8_t)0x01) +#define GPIO_PinSource2 ((uint8_t)0x02) +#define GPIO_PinSource3 ((uint8_t)0x03) +#define GPIO_PinSource4 ((uint8_t)0x04) +#define GPIO_PinSource5 ((uint8_t)0x05) +#define GPIO_PinSource6 ((uint8_t)0x06) +#define GPIO_PinSource7 ((uint8_t)0x07) +#define GPIO_PinSource8 ((uint8_t)0x08) +#define GPIO_PinSource9 ((uint8_t)0x09) +#define GPIO_PinSource10 ((uint8_t)0x0A) +#define GPIO_PinSource11 ((uint8_t)0x0B) +#define GPIO_PinSource12 ((uint8_t)0x0C) +#define GPIO_PinSource13 ((uint8_t)0x0D) +#define GPIO_PinSource14 ((uint8_t)0x0E) +#define GPIO_PinSource15 ((uint8_t)0x0F) + +/* Ethernet_Media_Interface */ +#define GPIO_ETH_MediaInterface_MII ((u32)0x00000000) +#define GPIO_ETH_MediaInterface_RMII ((u32)0x00000001) + + +void GPIO_DeInit(GPIO_TypeDef* GPIOx); +void GPIO_AFIODeInit(void); +void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); +void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); +uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); +uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); +void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); +void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); +void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); +void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource); +void GPIO_EventOutputCmd(FunctionalState NewState); +void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState); +void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource); +void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_i2c.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_i2c.h new file mode 100755 index 000000000..5cddac9e7 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_i2c.h @@ -0,0 +1,211 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_i2c.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* I2C firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_I2C_H +#define __CH32V30x_I2C_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* I2C Init structure definition */ +typedef struct +{ + uint32_t I2C_ClockSpeed; /* Specifies the clock frequency. + This parameter must be set to a value lower than 400kHz */ + + uint16_t I2C_Mode; /* Specifies the I2C mode. + This parameter can be a value of @ref I2C_mode */ + + uint16_t I2C_DutyCycle; /* Specifies the I2C fast mode duty cycle. + This parameter can be a value of @ref I2C_duty_cycle_in_fast_mode */ + + uint16_t I2C_OwnAddress1; /* Specifies the first device own address. + This parameter can be a 7-bit or 10-bit address. */ + + uint16_t I2C_Ack; /* Enables or disables the acknowledgement. + This parameter can be a value of @ref I2C_acknowledgement */ + + uint16_t I2C_AcknowledgedAddress; /* Specifies if 7-bit or 10-bit address is acknowledged. + This parameter can be a value of @ref I2C_acknowledged_address */ +}I2C_InitTypeDef; + +/* I2C_mode */ +#define I2C_Mode_I2C ((uint16_t)0x0000) +#define I2C_Mode_SMBusDevice ((uint16_t)0x0002) +#define I2C_Mode_SMBusHost ((uint16_t)0x000A) + +/* I2C_duty_cycle_in_fast_mode */ +#define I2C_DutyCycle_16_9 ((uint16_t)0x4000) /* I2C fast mode Tlow/Thigh = 16/9 */ +#define I2C_DutyCycle_2 ((uint16_t)0xBFFF) /* I2C fast mode Tlow/Thigh = 2 */ + +/* I2C_acknowledgement */ +#define I2C_Ack_Enable ((uint16_t)0x0400) +#define I2C_Ack_Disable ((uint16_t)0x0000) + +/* I2C_transfer_direction */ +#define I2C_Direction_Transmitter ((uint8_t)0x00) +#define I2C_Direction_Receiver ((uint8_t)0x01) + +/* I2C_acknowledged_address */ +#define I2C_AcknowledgedAddress_7bit ((uint16_t)0x4000) +#define I2C_AcknowledgedAddress_10bit ((uint16_t)0xC000) + +/* I2C_registers */ +#define I2C_Register_CTLR1 ((uint8_t)0x00) +#define I2C_Register_CTLR2 ((uint8_t)0x04) +#define I2C_Register_OADDR1 ((uint8_t)0x08) +#define I2C_Register_OADDR2 ((uint8_t)0x0C) +#define I2C_Register_DATAR ((uint8_t)0x10) +#define I2C_Register_STAR1 ((uint8_t)0x14) +#define I2C_Register_STAR2 ((uint8_t)0x18) +#define I2C_Register_CKCFGR ((uint8_t)0x1C) +#define I2C_Register_RTR ((uint8_t)0x20) + +/* I2C_SMBus_alert_pin_level */ +#define I2C_SMBusAlert_Low ((uint16_t)0x2000) +#define I2C_SMBusAlert_High ((uint16_t)0xDFFF) + +/* I2C_PEC_position */ +#define I2C_PECPosition_Next ((uint16_t)0x0800) +#define I2C_PECPosition_Current ((uint16_t)0xF7FF) + +/* I2C_NACK_position */ +#define I2C_NACKPosition_Next ((uint16_t)0x0800) +#define I2C_NACKPosition_Current ((uint16_t)0xF7FF) + +/* I2C_interrupts_definition */ +#define I2C_IT_BUF ((uint16_t)0x0400) +#define I2C_IT_EVT ((uint16_t)0x0200) +#define I2C_IT_ERR ((uint16_t)0x0100) + +/* I2C_interrupts_definition */ +#define I2C_IT_SMBALERT ((uint32_t)0x01008000) +#define I2C_IT_TIMEOUT ((uint32_t)0x01004000) +#define I2C_IT_PECERR ((uint32_t)0x01001000) +#define I2C_IT_OVR ((uint32_t)0x01000800) +#define I2C_IT_AF ((uint32_t)0x01000400) +#define I2C_IT_ARLO ((uint32_t)0x01000200) +#define I2C_IT_BERR ((uint32_t)0x01000100) +#define I2C_IT_TXE ((uint32_t)0x06000080) +#define I2C_IT_RXNE ((uint32_t)0x06000040) +#define I2C_IT_STOPF ((uint32_t)0x02000010) +#define I2C_IT_ADD10 ((uint32_t)0x02000008) +#define I2C_IT_BTF ((uint32_t)0x02000004) +#define I2C_IT_ADDR ((uint32_t)0x02000002) +#define I2C_IT_SB ((uint32_t)0x02000001) + +/* SR2 register flags */ +#define I2C_FLAG_DUALF ((uint32_t)0x00800000) +#define I2C_FLAG_SMBHOST ((uint32_t)0x00400000) +#define I2C_FLAG_SMBDEFAULT ((uint32_t)0x00200000) +#define I2C_FLAG_GENCALL ((uint32_t)0x00100000) +#define I2C_FLAG_TRA ((uint32_t)0x00040000) +#define I2C_FLAG_BUSY ((uint32_t)0x00020000) +#define I2C_FLAG_MSL ((uint32_t)0x00010000) + +/* SR1 register flags */ +#define I2C_FLAG_SMBALERT ((uint32_t)0x10008000) +#define I2C_FLAG_TIMEOUT ((uint32_t)0x10004000) +#define I2C_FLAG_PECERR ((uint32_t)0x10001000) +#define I2C_FLAG_OVR ((uint32_t)0x10000800) +#define I2C_FLAG_AF ((uint32_t)0x10000400) +#define I2C_FLAG_ARLO ((uint32_t)0x10000200) +#define I2C_FLAG_BERR ((uint32_t)0x10000100) +#define I2C_FLAG_TXE ((uint32_t)0x10000080) +#define I2C_FLAG_RXNE ((uint32_t)0x10000040) +#define I2C_FLAG_STOPF ((uint32_t)0x10000010) +#define I2C_FLAG_ADD10 ((uint32_t)0x10000008) +#define I2C_FLAG_BTF ((uint32_t)0x10000004) +#define I2C_FLAG_ADDR ((uint32_t)0x10000002) +#define I2C_FLAG_SB ((uint32_t)0x10000001) + + +/****************I2C Master Events (Events grouped in order of communication)********************/ + +#define I2C_EVENT_MASTER_MODE_SELECT ((uint32_t)0x00030001) /* BUSY, MSL and SB flag */ +#define I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED ((uint32_t)0x00070082) /* BUSY, MSL, ADDR, TXE and TRA flags */ +#define I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED ((uint32_t)0x00030002) /* BUSY, MSL and ADDR flags */ +#define I2C_EVENT_MASTER_MODE_ADDRESS10 ((uint32_t)0x00030008) /* BUSY, MSL and ADD10 flags */ +#define I2C_EVENT_MASTER_BYTE_RECEIVED ((uint32_t)0x00030040) /* BUSY, MSL and RXNE flags */ +#define I2C_EVENT_MASTER_BYTE_TRANSMITTING ((uint32_t)0x00070080) /* TRA, BUSY, MSL, TXE flags */ +#define I2C_EVENT_MASTER_BYTE_TRANSMITTED ((uint32_t)0x00070084) /* TRA, BUSY, MSL, TXE and BTF flags */ + + +/******************I2C Slave Events (Events grouped in order of communication)******************/ + +#define I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED ((uint32_t)0x00020002) /* BUSY and ADDR flags */ +#define I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED ((uint32_t)0x00060082) /* TRA, BUSY, TXE and ADDR flags */ +#define I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED ((uint32_t)0x00820000) /* DUALF and BUSY flags */ +#define I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED ((uint32_t)0x00860080) /* DUALF, TRA, BUSY and TXE flags */ +#define I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED ((uint32_t)0x00120000) /* GENCALL and BUSY flags */ +#define I2C_EVENT_SLAVE_BYTE_RECEIVED ((uint32_t)0x00020040) /* BUSY and RXNE flags */ +#define I2C_EVENT_SLAVE_STOP_DETECTED ((uint32_t)0x00000010) /* STOPF flag */ +#define I2C_EVENT_SLAVE_BYTE_TRANSMITTED ((uint32_t)0x00060084) /* TRA, BUSY, TXE and BTF flags */ +#define I2C_EVENT_SLAVE_BYTE_TRANSMITTING ((uint32_t)0x00060080) /* TRA, BUSY and TXE flags */ +#define I2C_EVENT_SLAVE_ACK_FAILURE ((uint32_t)0x00000400) /* AF flag */ + + +void I2C_DeInit(I2C_TypeDef* I2Cx); +void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct); +void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct); +void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint8_t Address); +void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_ITConfig(I2C_TypeDef* I2Cx, uint16_t I2C_IT, FunctionalState NewState); +void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data); +uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx); +void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction); +uint16_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register); +void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_NACKPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_NACKPosition); +void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, uint16_t I2C_SMBusAlert); +void I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition); +void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState); +uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx); +void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState); +void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, uint16_t I2C_DutyCycle); + + +/**************************************************************************************** +* I2C State Monitoring Functions +****************************************************************************************/ + +ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT); +uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx); +FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG); + +void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG); +ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT); +void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_iwdg.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_iwdg.h new file mode 100755 index 000000000..8972cc050 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_iwdg.h @@ -0,0 +1,56 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_iwdg.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* IWDG firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_IWDG_H +#define __CH32V30x_IWDG_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* IWDG_WriteAccess */ +#define IWDG_WriteAccess_Enable ((uint16_t)0x5555) +#define IWDG_WriteAccess_Disable ((uint16_t)0x0000) + +/* IWDG_prescaler */ +#define IWDG_Prescaler_4 ((uint8_t)0x00) +#define IWDG_Prescaler_8 ((uint8_t)0x01) +#define IWDG_Prescaler_16 ((uint8_t)0x02) +#define IWDG_Prescaler_32 ((uint8_t)0x03) +#define IWDG_Prescaler_64 ((uint8_t)0x04) +#define IWDG_Prescaler_128 ((uint8_t)0x05) +#define IWDG_Prescaler_256 ((uint8_t)0x06) + +/* IWDG_Flag */ +#define IWDG_FLAG_PVU ((uint16_t)0x0001) +#define IWDG_FLAG_RVU ((uint16_t)0x0002) + + +void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess); +void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); +void IWDG_SetReload(uint16_t Reload); +void IWDG_ReloadCounter(void); +void IWDG_Enable(void); +FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_misc.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_misc.h new file mode 100755 index 000000000..c72a8f59d --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_misc.h @@ -0,0 +1,46 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_misc.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* miscellaneous firmware library functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30X_MISC_H +#define __CH32V30X_MISC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* NVIC Init Structure definition */ +typedef struct +{ + uint8_t NVIC_IRQChannel; + uint8_t NVIC_IRQChannelPreemptionPriority; + uint8_t NVIC_IRQChannelSubPriority; + FunctionalState NVIC_IRQChannelCmd; +} NVIC_InitTypeDef; + + +/* Preemption_Priority_Group */ +#define NVIC_PriorityGroup_0 ((uint32_t)0x00) +#define NVIC_PriorityGroup_1 ((uint32_t)0x01) +#define NVIC_PriorityGroup_2 ((uint32_t)0x02) +#define NVIC_PriorityGroup_3 ((uint32_t)0x03) +#define NVIC_PriorityGroup_4 ((uint32_t)0x04) + + +void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); +void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_opa.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_opa.h new file mode 100755 index 000000000..db2b71daf --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_opa.h @@ -0,0 +1,75 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_opa.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* OPA firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_OPA_H +#define __CH32V30x_OPA_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +#define OPA_PSEL_OFFSET 3 +#define OPA_NSEL_OFFSET 2 +#define OPA_MODE_OFFSET 1 + + +/* OPA member enumeration */ +typedef enum +{ + OPA1=0, + OPA2, + OPA3, + OPA4 +}OPA_Num_TypeDef; + +/* OPA PSEL enumeration */ +typedef enum +{ + CHP0=0, + CHP1 +}OPA_PSEL_TypeDef; + +/* OPA NSEL enumeration */ +typedef enum +{ + CHN0=0, + CHN1 +}OPA_NSEL_TypeDef; + +/* OPA Mode enumeration */ +typedef enum +{ + OUT_IO_ADC=0, + OUT_IO +}OPA_Mode_TypeDef; + +/* OPA Init Structure definition */ +typedef struct +{ + OPA_Num_TypeDef OPA_NUM; /* Specifies the members of OPA */ + OPA_PSEL_TypeDef PSEL; /* Specifies the positive channel of OPA */ + OPA_NSEL_TypeDef NSEL; /* Specifies the negative channel of OPA */ + OPA_Mode_TypeDef Mode; /* Specifies the mode of OPA */ +}OPA_InitTypeDef; + + +void OPA_DeInit(void); +void OPA_Init(OPA_InitTypeDef* OPA_InitStruct); +void OPA_StructInit(OPA_InitTypeDef* OPA_InitStruct); +void OPA_Cmd(OPA_Num_TypeDef OPA_NUM, FunctionalState NewState); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_pwr.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_pwr.h new file mode 100755 index 000000000..c0647e9b3 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_pwr.h @@ -0,0 +1,64 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_pwr.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the PWR +* firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_PWR_H +#define __CH32V30x_PWR_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* PVD_detection_level */ +#define PWR_PVDLevel_2V2 ((uint32_t)0x00000000) +#define PWR_PVDLevel_2V3 ((uint32_t)0x00000020) +#define PWR_PVDLevel_2V4 ((uint32_t)0x00000040) +#define PWR_PVDLevel_2V5 ((uint32_t)0x00000060) +#define PWR_PVDLevel_2V6 ((uint32_t)0x00000080) +#define PWR_PVDLevel_2V7 ((uint32_t)0x000000A0) +#define PWR_PVDLevel_2V8 ((uint32_t)0x000000C0) +#define PWR_PVDLevel_2V9 ((uint32_t)0x000000E0) + +/* Regulator_state_is_STOP_mode */ +#define PWR_Regulator_ON ((uint32_t)0x00000000) +#define PWR_Regulator_LowPower ((uint32_t)0x00000001) + +/* STOP_mode_entry */ +#define PWR_STOPEntry_WFI ((uint8_t)0x01) +#define PWR_STOPEntry_WFE ((uint8_t)0x02) + +/* PWR_Flag */ +#define PWR_FLAG_WU ((uint32_t)0x00000001) +#define PWR_FLAG_SB ((uint32_t)0x00000002) +#define PWR_FLAG_PVDO ((uint32_t)0x00000004) + + +void PWR_DeInit(void); +void PWR_BackupAccessCmd(FunctionalState NewState); +void PWR_PVDCmd(FunctionalState NewState); +void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel); +void PWR_WakeUpPinCmd(FunctionalState NewState); +void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); +void PWR_EnterSTANDBYMode(void); +FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG); +void PWR_ClearFlag(uint32_t PWR_FLAG); +void PWR_EnterSTANDBYMode_RAM(void); +void PWR_EnterSTANDBYMode_RAM_LV(void); +void PWR_EnterSTANDBYMode_RAM_VBAT_EN(void); +void PWR_EnterSTANDBYMode_RAM_LV_VBAT_EN(void); + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rcc.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rcc.h new file mode 100755 index 000000000..31d653d7f --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rcc.h @@ -0,0 +1,456 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_rcc.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the RCC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_RCC_H +#define __CH32V30x_RCC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* RCC_Exported_Types */ +typedef struct +{ + uint32_t SYSCLK_Frequency; /* returns SYSCLK clock frequency expressed in Hz */ + uint32_t HCLK_Frequency; /* returns HCLK clock frequency expressed in Hz */ + uint32_t PCLK1_Frequency; /* returns PCLK1 clock frequency expressed in Hz */ + uint32_t PCLK2_Frequency; /* returns PCLK2 clock frequency expressed in Hz */ + uint32_t ADCCLK_Frequency; /* returns ADCCLK clock frequency expressed in Hz */ +}RCC_ClocksTypeDef; + +/* HSE_configuration */ +#define RCC_HSE_OFF ((uint32_t)0x00000000) +#define RCC_HSE_ON ((uint32_t)0x00010000) +#define RCC_HSE_Bypass ((uint32_t)0x00040000) + +/* PLL_entry_clock_source */ +#define RCC_PLLSource_HSI_Div2 ((uint32_t)0x00000000) + +#ifdef CH32V30x_D8 +#define RCC_PLLSource_HSE_Div1 ((uint32_t)0x00010000) +#define RCC_PLLSource_HSE_Div2 ((uint32_t)0x00030000) + +#else +#define RCC_PLLSource_PREDIV1 ((uint32_t)0x00010000) + +#endif + +/* PLL_multiplication_factor */ +#ifdef CH32V30x_D8 +#define RCC_PLLMul_2 ((uint32_t)0x00000000) +#define RCC_PLLMul_3 ((uint32_t)0x00040000) +#define RCC_PLLMul_4 ((uint32_t)0x00080000) +#define RCC_PLLMul_5 ((uint32_t)0x000C0000) +#define RCC_PLLMul_6 ((uint32_t)0x00100000) +#define RCC_PLLMul_7 ((uint32_t)0x00140000) +#define RCC_PLLMul_8 ((uint32_t)0x00180000) +#define RCC_PLLMul_9 ((uint32_t)0x001C0000) +#define RCC_PLLMul_10 ((uint32_t)0x00200000) +#define RCC_PLLMul_11 ((uint32_t)0x00240000) +#define RCC_PLLMul_12 ((uint32_t)0x00280000) +#define RCC_PLLMul_13 ((uint32_t)0x002C0000) +#define RCC_PLLMul_14 ((uint32_t)0x00300000) +#define RCC_PLLMul_15 ((uint32_t)0x00340000) +#define RCC_PLLMul_16 ((uint32_t)0x00380000) +#define RCC_PLLMul_18 ((uint32_t)0x003C0000) + +#else +#define RCC_PLLMul_18_EXTEN ((uint32_t)0x00000000) +#define RCC_PLLMul_3_EXTEN ((uint32_t)0x00040000) +#define RCC_PLLMul_4_EXTEN ((uint32_t)0x00080000) +#define RCC_PLLMul_5_EXTEN ((uint32_t)0x000C0000) +#define RCC_PLLMul_6_EXTEN ((uint32_t)0x00100000) +#define RCC_PLLMul_7_EXTEN ((uint32_t)0x00140000) +#define RCC_PLLMul_8_EXTEN ((uint32_t)0x00180000) +#define RCC_PLLMul_9_EXTEN ((uint32_t)0x001C0000) +#define RCC_PLLMul_10_EXTEN ((uint32_t)0x00200000) +#define RCC_PLLMul_11_EXTEN ((uint32_t)0x00240000) +#define RCC_PLLMul_12_EXTEN ((uint32_t)0x00280000) +#define RCC_PLLMul_13_EXTEN ((uint32_t)0x002C0000) +#define RCC_PLLMul_14_EXTEN ((uint32_t)0x00300000) +#define RCC_PLLMul_6_5_EXTEN ((uint32_t)0x00340000) +#define RCC_PLLMul_15_EXTEN ((uint32_t)0x00380000) +#define RCC_PLLMul_16_EXTEN ((uint32_t)0x003C0000) + +#endif + +/* PREDIV1_division_factor */ +#ifdef CH32V30x_D8C +#define RCC_PREDIV1_Div1 ((uint32_t)0x00000000) +#define RCC_PREDIV1_Div2 ((uint32_t)0x00000001) +#define RCC_PREDIV1_Div3 ((uint32_t)0x00000002) +#define RCC_PREDIV1_Div4 ((uint32_t)0x00000003) +#define RCC_PREDIV1_Div5 ((uint32_t)0x00000004) +#define RCC_PREDIV1_Div6 ((uint32_t)0x00000005) +#define RCC_PREDIV1_Div7 ((uint32_t)0x00000006) +#define RCC_PREDIV1_Div8 ((uint32_t)0x00000007) +#define RCC_PREDIV1_Div9 ((uint32_t)0x00000008) +#define RCC_PREDIV1_Div10 ((uint32_t)0x00000009) +#define RCC_PREDIV1_Div11 ((uint32_t)0x0000000A) +#define RCC_PREDIV1_Div12 ((uint32_t)0x0000000B) +#define RCC_PREDIV1_Div13 ((uint32_t)0x0000000C) +#define RCC_PREDIV1_Div14 ((uint32_t)0x0000000D) +#define RCC_PREDIV1_Div15 ((uint32_t)0x0000000E) +#define RCC_PREDIV1_Div16 ((uint32_t)0x0000000F) + +#endif + +/* PREDIV1_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_PREDIV1_Source_HSE ((uint32_t)0x00000000) +#define RCC_PREDIV1_Source_PLL2 ((uint32_t)0x00010000) + +#endif + +/* PREDIV2_division_factor */ +#ifdef CH32V30x_D8C +#define RCC_PREDIV2_Div1 ((uint32_t)0x00000000) +#define RCC_PREDIV2_Div2 ((uint32_t)0x00000010) +#define RCC_PREDIV2_Div3 ((uint32_t)0x00000020) +#define RCC_PREDIV2_Div4 ((uint32_t)0x00000030) +#define RCC_PREDIV2_Div5 ((uint32_t)0x00000040) +#define RCC_PREDIV2_Div6 ((uint32_t)0x00000050) +#define RCC_PREDIV2_Div7 ((uint32_t)0x00000060) +#define RCC_PREDIV2_Div8 ((uint32_t)0x00000070) +#define RCC_PREDIV2_Div9 ((uint32_t)0x00000080) +#define RCC_PREDIV2_Div10 ((uint32_t)0x00000090) +#define RCC_PREDIV2_Div11 ((uint32_t)0x000000A0) +#define RCC_PREDIV2_Div12 ((uint32_t)0x000000B0) +#define RCC_PREDIV2_Div13 ((uint32_t)0x000000C0) +#define RCC_PREDIV2_Div14 ((uint32_t)0x000000D0) +#define RCC_PREDIV2_Div15 ((uint32_t)0x000000E0) +#define RCC_PREDIV2_Div16 ((uint32_t)0x000000F0) + +#endif + +/* PLL2_multiplication_factor */ +#ifdef CH32V30x_D8C +#define RCC_PLL2Mul_2_5 ((uint32_t)0x00000000) +#define RCC_PLL2Mul_12_5 ((uint32_t)0x00000100) +#define RCC_PLL2Mul_4 ((uint32_t)0x00000200) +#define RCC_PLL2Mul_5 ((uint32_t)0x00000300) +#define RCC_PLL2Mul_6 ((uint32_t)0x00000400) +#define RCC_PLL2Mul_7 ((uint32_t)0x00000500) +#define RCC_PLL2Mul_8 ((uint32_t)0x00000600) +#define RCC_PLL2Mul_9 ((uint32_t)0x00000700) +#define RCC_PLL2Mul_10 ((uint32_t)0x00000800) +#define RCC_PLL2Mul_11 ((uint32_t)0x00000900) +#define RCC_PLL2Mul_12 ((uint32_t)0x00000A00) +#define RCC_PLL2Mul_13 ((uint32_t)0x00000B00) +#define RCC_PLL2Mul_14 ((uint32_t)0x00000C00) +#define RCC_PLL2Mul_15 ((uint32_t)0x00000D00) +#define RCC_PLL2Mul_16 ((uint32_t)0x00000E00) +#define RCC_PLL2Mul_20 ((uint32_t)0x00000F00) + +#endif + +/* PLL3_multiplication_factor */ +#ifdef CH32V30x_D8C +#define RCC_PLL3Mul_2_5 ((uint32_t)0x00000000) +#define RCC_PLL3Mul_12_5 ((uint32_t)0x00001000) +#define RCC_PLL3Mul_4 ((uint32_t)0x00002000) +#define RCC_PLL3Mul_5 ((uint32_t)0x00003000) +#define RCC_PLL3Mul_6 ((uint32_t)0x00004000) +#define RCC_PLL3Mul_7 ((uint32_t)0x00005000) +#define RCC_PLL3Mul_8 ((uint32_t)0x00006000) +#define RCC_PLL3Mul_9 ((uint32_t)0x00007000) +#define RCC_PLL3Mul_10 ((uint32_t)0x00008000) +#define RCC_PLL3Mul_11 ((uint32_t)0x00009000) +#define RCC_PLL3Mul_12 ((uint32_t)0x0000A000) +#define RCC_PLL3Mul_13 ((uint32_t)0x0000B000) +#define RCC_PLL3Mul_14 ((uint32_t)0x0000C000) +#define RCC_PLL3Mul_15 ((uint32_t)0x0000D000) +#define RCC_PLL3Mul_16 ((uint32_t)0x0000E000) +#define RCC_PLL3Mul_20 ((uint32_t)0x0000F000) + +#endif + +/* System_clock_source */ +#define RCC_SYSCLKSource_HSI ((uint32_t)0x00000000) +#define RCC_SYSCLKSource_HSE ((uint32_t)0x00000001) +#define RCC_SYSCLKSource_PLLCLK ((uint32_t)0x00000002) + +/* AHB_clock_source */ +#define RCC_SYSCLK_Div1 ((uint32_t)0x00000000) +#define RCC_SYSCLK_Div2 ((uint32_t)0x00000080) +#define RCC_SYSCLK_Div4 ((uint32_t)0x00000090) +#define RCC_SYSCLK_Div8 ((uint32_t)0x000000A0) +#define RCC_SYSCLK_Div16 ((uint32_t)0x000000B0) +#define RCC_SYSCLK_Div64 ((uint32_t)0x000000C0) +#define RCC_SYSCLK_Div128 ((uint32_t)0x000000D0) +#define RCC_SYSCLK_Div256 ((uint32_t)0x000000E0) +#define RCC_SYSCLK_Div512 ((uint32_t)0x000000F0) + +/* APB1_APB2_clock_source */ +#define RCC_HCLK_Div1 ((uint32_t)0x00000000) +#define RCC_HCLK_Div2 ((uint32_t)0x00000400) +#define RCC_HCLK_Div4 ((uint32_t)0x00000500) +#define RCC_HCLK_Div8 ((uint32_t)0x00000600) +#define RCC_HCLK_Div16 ((uint32_t)0x00000700) + +/* RCC_Interrupt_source */ +#define RCC_IT_LSIRDY ((uint8_t)0x01) +#define RCC_IT_LSERDY ((uint8_t)0x02) +#define RCC_IT_HSIRDY ((uint8_t)0x04) +#define RCC_IT_HSERDY ((uint8_t)0x08) +#define RCC_IT_PLLRDY ((uint8_t)0x10) +#define RCC_IT_CSS ((uint8_t)0x80) + +#ifdef CH32V30x_D8C +#define RCC_IT_PLL2RDY ((uint8_t)0x20) +#define RCC_IT_PLL3RDY ((uint8_t)0x40) + +#endif + +/* USB_OTG_FS_clock_source */ +#define RCC_OTGFSCLKSource_PLLCLK_Div1 ((uint8_t)0x00) +#define RCC_OTGFSCLKSource_PLLCLK_Div2 ((uint8_t)0x01) +#define RCC_OTGFSCLKSource_PLLCLK_Div3 ((uint8_t)0x02) + +/* I2S2_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_I2S2CLKSource_SYSCLK ((uint8_t)0x00) +#define RCC_I2S2CLKSource_PLL3_VCO ((uint8_t)0x01) + +#endif + +/* I2S3_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_I2S3CLKSource_SYSCLK ((uint8_t)0x00) +#define RCC_I2S3CLKSource_PLL3_VCO ((uint8_t)0x01) + +#endif + +/* ADC_clock_source */ +#define RCC_PCLK2_Div2 ((uint32_t)0x00000000) +#define RCC_PCLK2_Div4 ((uint32_t)0x00004000) +#define RCC_PCLK2_Div6 ((uint32_t)0x00008000) +#define RCC_PCLK2_Div8 ((uint32_t)0x0000C000) + +/* LSE_configuration */ +#define RCC_LSE_OFF ((uint8_t)0x00) +#define RCC_LSE_ON ((uint8_t)0x01) +#define RCC_LSE_Bypass ((uint8_t)0x04) + +/* RTC_clock_source */ +#define RCC_RTCCLKSource_LSE ((uint32_t)0x00000100) +#define RCC_RTCCLKSource_LSI ((uint32_t)0x00000200) +#define RCC_RTCCLKSource_HSE_Div128 ((uint32_t)0x00000300) + +/* AHB_peripheral */ +#define RCC_AHBPeriph_DMA1 ((uint32_t)0x00000001) +#define RCC_AHBPeriph_DMA2 ((uint32_t)0x00000002) +#define RCC_AHBPeriph_SRAM ((uint32_t)0x00000004) +#define RCC_AHBPeriph_CRC ((uint32_t)0x00000040) +#define RCC_AHBPeriph_FSMC ((uint32_t)0x00000100) +#define RCC_AHBPeriph_RNG ((uint32_t)0x00000200) +#define RCC_AHBPeriph_SDIO ((uint32_t)0x00000400) +#define RCC_AHBPeriph_USBHS ((uint32_t)0x00000800) +#define RCC_AHBPeriph_OTG_FS ((uint32_t)0x00001000) +#define RCC_AHBPeriph_DVP ((uint32_t)0x00002000) +#define RCC_AHBPeriph_ETH_MAC ((uint32_t)0x00004000) +#define RCC_AHBPeriph_ETH_MAC_Tx ((uint32_t)0x00008000) +#define RCC_AHBPeriph_ETH_MAC_Rx ((uint32_t)0x00010000) + +/* APB2_peripheral */ +#define RCC_APB2Periph_AFIO ((uint32_t)0x00000001) +#define RCC_APB2Periph_GPIOA ((uint32_t)0x00000004) +#define RCC_APB2Periph_GPIOB ((uint32_t)0x00000008) +#define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010) +#define RCC_APB2Periph_GPIOD ((uint32_t)0x00000020) +#define RCC_APB2Periph_GPIOE ((uint32_t)0x00000040) +#define RCC_APB2Periph_ADC1 ((uint32_t)0x00000200) +#define RCC_APB2Periph_ADC2 ((uint32_t)0x00000400) +#define RCC_APB2Periph_TIM1 ((uint32_t)0x00000800) +#define RCC_APB2Periph_SPI1 ((uint32_t)0x00001000) +#define RCC_APB2Periph_TIM8 ((uint32_t)0x00002000) +#define RCC_APB2Periph_USART1 ((uint32_t)0x00004000) +#define RCC_APB2Periph_TIM9 ((uint32_t)0x00080000) +#define RCC_APB2Periph_TIM10 ((uint32_t)0x00100000) + +/* APB1_peripheral */ +#define RCC_APB1Periph_TIM2 ((uint32_t)0x00000001) +#define RCC_APB1Periph_TIM3 ((uint32_t)0x00000002) +#define RCC_APB1Periph_TIM4 ((uint32_t)0x00000004) +#define RCC_APB1Periph_TIM5 ((uint32_t)0x00000008) +#define RCC_APB1Periph_TIM6 ((uint32_t)0x00000010) +#define RCC_APB1Periph_TIM7 ((uint32_t)0x00000020) +#define RCC_APB1Periph_UART6 ((uint32_t)0x00000040) +#define RCC_APB1Periph_UART7 ((uint32_t)0x00000080) +#define RCC_APB1Periph_UART8 ((uint32_t)0x00000100) +#define RCC_APB1Periph_WWDG ((uint32_t)0x00000800) +#define RCC_APB1Periph_SPI2 ((uint32_t)0x00004000) +#define RCC_APB1Periph_SPI3 ((uint32_t)0x00008000) +#define RCC_APB1Periph_USART2 ((uint32_t)0x00020000) +#define RCC_APB1Periph_USART3 ((uint32_t)0x00040000) +#define RCC_APB1Periph_UART4 ((uint32_t)0x00080000) +#define RCC_APB1Periph_UART5 ((uint32_t)0x00100000) +#define RCC_APB1Periph_I2C1 ((uint32_t)0x00200000) +#define RCC_APB1Periph_I2C2 ((uint32_t)0x00400000) +#define RCC_APB1Periph_USB ((uint32_t)0x00800000) +#define RCC_APB1Periph_CAN1 ((uint32_t)0x02000000) +#define RCC_APB1Periph_CAN2 ((uint32_t)0x04000000) +#define RCC_APB1Periph_BKP ((uint32_t)0x08000000) +#define RCC_APB1Periph_PWR ((uint32_t)0x10000000) +#define RCC_APB1Periph_DAC ((uint32_t)0x20000000) + +/* Clock_source_to_output_on_MCO_pin */ +#define RCC_MCO_NoClock ((uint8_t)0x00) +#define RCC_MCO_SYSCLK ((uint8_t)0x04) +#define RCC_MCO_HSI ((uint8_t)0x05) +#define RCC_MCO_HSE ((uint8_t)0x06) +#define RCC_MCO_PLLCLK_Div2 ((uint8_t)0x07) + +#ifdef CH32V30x_D8C +#define RCC_MCO_PLL2CLK ((uint8_t)0x08) +#define RCC_MCO_PLL3CLK_Div2 ((uint8_t)0x09) +#define RCC_MCO_XT1 ((uint8_t)0x0A) +#define RCC_MCO_PLL3CLK ((uint8_t)0x0B) + +#endif + +/* RCC_Flag */ +#define RCC_FLAG_HSIRDY ((uint8_t)0x21) +#define RCC_FLAG_HSERDY ((uint8_t)0x31) +#define RCC_FLAG_PLLRDY ((uint8_t)0x39) +#define RCC_FLAG_LSERDY ((uint8_t)0x41) +#define RCC_FLAG_LSIRDY ((uint8_t)0x61) +#define RCC_FLAG_PINRST ((uint8_t)0x7A) +#define RCC_FLAG_PORRST ((uint8_t)0x7B) +#define RCC_FLAG_SFTRST ((uint8_t)0x7C) +#define RCC_FLAG_IWDGRST ((uint8_t)0x7D) +#define RCC_FLAG_WWDGRST ((uint8_t)0x7E) +#define RCC_FLAG_LPWRRST ((uint8_t)0x7F) + +#ifdef CH32V30x_D8C +#define RCC_FLAG_PLL2RDY ((uint8_t)0x3B) +#define RCC_FLAG_PLL3RDY ((uint8_t)0x3D) + +#endif + +/* SysTick_clock_source */ +#define SysTick_CLKSource_HCLK_Div8 ((uint32_t)0xFFFFFFFB) +#define SysTick_CLKSource_HCLK ((uint32_t)0x00000004) + +/* RNG_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_RNGCLKSource_SYSCLK ((uint32_t)0x00) +#define RCC_RNGCLKSource_PLL3_VCO ((uint32_t)0x01) + +#endif + +/* ETH1G_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_ETH1GCLKSource_PLL2_VCO ((uint32_t)0x00) +#define RCC_ETH1GCLKSource_PLL3_VCO ((uint32_t)0x01) +#define RCC_ETH1GCLKSource_PB1_IN ((uint32_t)0x02) + +#endif + +/* USBFS_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_USBPLL_Div1 ((uint32_t)0x00) +#define RCC_USBPLL_Div2 ((uint32_t)0x01) +#define RCC_USBPLL_Div3 ((uint32_t)0x02) +#define RCC_USBPLL_Div4 ((uint32_t)0x03) +#define RCC_USBPLL_Div5 ((uint32_t)0x04) +#define RCC_USBPLL_Div6 ((uint32_t)0x05) +#define RCC_USBPLL_Div7 ((uint32_t)0x06) +#define RCC_USBPLL_Div8 ((uint32_t)0x07) + +#endif + +/* USBHSPLL_clock_source */ +#ifdef CH32V30x_D8C +#define RCC_HSBHSPLLCLKSource_HSE ((uint32_t)0x00) +#define RCC_HSBHSPLLCLKSource_HSI ((uint32_t)0x01) + +#endif + +/* USBHSPLLCKREF_clock_select */ +#ifdef CH32V30x_D8C +#define RCC_USBHSPLLCKREFCLK_3M ((uint32_t)0x00) +#define RCC_USBHSPLLCKREFCLK_4M ((uint32_t)0x01) +#define RCC_USBHSPLLCKREFCLK_8M ((uint32_t)0x02) +#define RCC_USBHSPLLCKREFCLK_5M ((uint32_t)0x03) + +#endif + +/* OTGUSBCLK48M_clock_source */ +#define RCC_USBCLK48MCLKSource_PLLCLK ((uint32_t)0x00) +#define RCC_USBCLK48MCLKSource_USBPHY ((uint32_t)0x01) + + +void RCC_DeInit(void); +void RCC_HSEConfig(uint32_t RCC_HSE); +ErrorStatus RCC_WaitForHSEStartUp(void); +void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue); +void RCC_HSICmd(FunctionalState NewState); +void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul); +void RCC_PLLCmd(FunctionalState NewState); +void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource); +uint8_t RCC_GetSYSCLKSource(void); +void RCC_HCLKConfig(uint32_t RCC_SYSCLK); +void RCC_PCLK1Config(uint32_t RCC_HCLK); +void RCC_PCLK2Config(uint32_t RCC_HCLK); +void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState); +void RCC_ADCCLKConfig(uint32_t RCC_PCLK2); +void RCC_LSEConfig(uint8_t RCC_LSE); +void RCC_LSICmd(FunctionalState NewState); +void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource); +void RCC_RTCCLKCmd(FunctionalState NewState); +void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks); +void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); +void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); +void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); +void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); +void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState); +void RCC_BackupResetCmd(FunctionalState NewState); +void RCC_ClockSecuritySystemCmd(FunctionalState NewState); +void RCC_MCOConfig(uint8_t RCC_MCO); +FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG); +void RCC_ClearFlag(void); +ITStatus RCC_GetITStatus(uint8_t RCC_IT); +void RCC_ClearITPendingBit(uint8_t RCC_IT); +void RCC_ADCCLKADJcmd(FunctionalState NewState); +void RCC_OTGFSCLKConfig(uint32_t RCC_OTGFSCLKSource); +void RCC_USBCLK48MConfig(uint32_t RCC_USBCLK48MSource); + +#ifdef CH32V30x_D8C +void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Source, uint32_t RCC_PREDIV1_Div); +void RCC_PREDIV2Config(uint32_t RCC_PREDIV2_Div); +void RCC_PLL2Config(uint32_t RCC_PLL2Mul); +void RCC_PLL2Cmd(FunctionalState NewState); +void RCC_PLL3Config(uint32_t RCC_PLL3Mul); +void RCC_PLL3Cmd(FunctionalState NewState); +void RCC_I2S2CLKConfig(uint32_t RCC_I2S2CLKSource); +void RCC_I2S3CLKConfig(uint32_t RCC_I2S3CLKSource); +void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); +void RCC_RNGCLKConfig(uint32_t RCC_RNGCLKSource); +void RCC_ETH1GCLKConfig(uint32_t RCC_ETH1GCLKSource); +void RCC_ETH1G_125Mcmd(FunctionalState NewState); +void RCC_USBHSConfig(uint32_t RCC_USBHS); +void RCC_USBHSPLLCLKConfig(uint32_t RCC_USBHSPLLCLKSource); +void RCC_USBHSPLLCKREFCLKConfig(uint32_t RCC_USBHSPLLCKREFCLKSource); +void RCC_USBHSPHYPLLALIVEcmd(FunctionalState NewState); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rng.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rng.h new file mode 100755 index 000000000..a20a5cbc9 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rng.h @@ -0,0 +1,41 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_rng.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* RNG firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_RNG_H +#define __CH32V30x_RNG_H + +#ifdef __cplusplus + extern "C" { +#endif +#include "ch32v30x.h" + + /* RNG_flags_definition*/ +#define RNG_FLAG_DRDY ((uint8_t)0x0001) /* Data ready */ +#define RNG_FLAG_CECS ((uint8_t)0x0002) /* Clock error current status */ +#define RNG_FLAG_SECS ((uint8_t)0x0004) /* Seed error current status */ + +/* RNG_interrupts_definition */ +#define RNG_IT_CEI ((uint8_t)0x20) /* Clock error interrupt */ +#define RNG_IT_SEI ((uint8_t)0x40) /* Seed error interrupt */ + + +void RNG_Cmd(FunctionalState NewState); +uint32_t RNG_GetRandomNumber(void); +void RNG_ITConfig(FunctionalState NewState); +FlagStatus RNG_GetFlagStatus(uint8_t RNG_FLAG); +void RNG_ClearFlag(uint8_t RNG_FLAG); +ITStatus RNG_GetITStatus(uint8_t RNG_IT); +void RNG_ClearITPendingBit(uint8_t RNG_IT); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rtc.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rtc.h new file mode 100755 index 000000000..c6e75ada7 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_rtc.h @@ -0,0 +1,54 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_rtc.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the RTC +* firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_RTC_H +#define __CH32V30x_RTC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +/* RTC_interrupts_define */ +#define RTC_IT_OW ((uint16_t)0x0004) /* Overflow interrupt */ +#define RTC_IT_ALR ((uint16_t)0x0002) /* Alarm interrupt */ +#define RTC_IT_SEC ((uint16_t)0x0001) /* Second interrupt */ + +/* RTC_interrupts_flags */ +#define RTC_FLAG_RTOFF ((uint16_t)0x0020) /* RTC Operation OFF flag */ +#define RTC_FLAG_RSF ((uint16_t)0x0008) /* Registers Synchronized flag */ +#define RTC_FLAG_OW ((uint16_t)0x0004) /* Overflow flag */ +#define RTC_FLAG_ALR ((uint16_t)0x0002) /* Alarm flag */ +#define RTC_FLAG_SEC ((uint16_t)0x0001) /* Second flag */ + + +void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState); +void RTC_EnterConfigMode(void); +void RTC_ExitConfigMode(void); +uint32_t RTC_GetCounter(void); +void RTC_SetCounter(uint32_t CounterValue); +void RTC_SetPrescaler(uint32_t PrescalerValue); +void RTC_SetAlarm(uint32_t AlarmValue); +uint32_t RTC_GetDivider(void); +void RTC_WaitForLastTask(void); +void RTC_WaitForSynchro(void); +FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG); +void RTC_ClearFlag(uint16_t RTC_FLAG); +ITStatus RTC_GetITStatus(uint16_t RTC_IT); +void RTC_ClearITPendingBit(uint16_t RTC_IT); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_sdio.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_sdio.h new file mode 100755 index 000000000..ba221ec01 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_sdio.h @@ -0,0 +1,254 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_sdio.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the SDIO +* firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_SDIO_H +#define __CH32V30x_SDIO_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* SDIO Init structure definition */ +typedef struct +{ + uint32_t SDIO_ClockEdge; /* Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref SDIO_Clock_Edge */ + + uint32_t SDIO_ClockBypass; /* Specifies whether the SDIO Clock divider bypass is + enabled or disabled. + This parameter can be a value of @ref SDIO_Clock_Bypass */ + + uint32_t SDIO_ClockPowerSave; /* Specifies whether SDIO Clock output is enabled or + disabled when the bus is idle. + This parameter can be a value of @ref SDIO_Clock_Power_Save */ + + uint32_t SDIO_BusWide; /* Specifies the SDIO bus width. + This parameter can be a value of @ref SDIO_Bus_Wide */ + + uint32_t SDIO_HardwareFlowControl; /* Specifies whether the SDIO hardware flow control is enabled or disabled. + This parameter can be a value of @ref SDIO_Hardware_Flow_Control */ + + uint8_t SDIO_ClockDiv; /* Specifies the clock frequency of the SDIO controller. + This parameter can be a value between 0x00 and 0xFF. */ + +} SDIO_InitTypeDef; + + +typedef struct +{ + uint32_t SDIO_Argument; /* Specifies the SDIO command argument which is sent + to a card as part of a command message. If a command + contains an argument, it must be loaded into this register + before writing the command to the command register */ + + uint32_t SDIO_CmdIndex; /* Specifies the SDIO command index. It must be lower than 0x40. */ + + uint32_t SDIO_Response; /* Specifies the SDIO response type. + This parameter can be a value of @ref SDIO_Response_Type */ + + uint32_t SDIO_Wait; /* Specifies whether SDIO wait-for-interrupt request is enabled or disabled. + This parameter can be a value of @ref SDIO_Wait_Interrupt_State */ + + uint32_t SDIO_CPSM; /* Specifies whether SDIO Command path state machine (CPSM) + is enabled or disabled. + This parameter can be a value of @ref SDIO_CPSM_State */ +} SDIO_CmdInitTypeDef; + +typedef struct +{ + uint32_t SDIO_DataTimeOut; /* Specifies the data timeout period in card bus clock periods. */ + + uint32_t SDIO_DataLength; /* Specifies the number of data bytes to be transferred. */ + + uint32_t SDIO_DataBlockSize; /* Specifies the data block size for block transfer. + This parameter can be a value of @ref SDIO_Data_Block_Size */ + + uint32_t SDIO_TransferDir; /* Specifies the data transfer direction, whether the transfer + is a read or write. + This parameter can be a value of @ref SDIO_Transfer_Direction */ + + uint32_t SDIO_TransferMode; /* Specifies whether data transfer is in stream or block mode. + This parameter can be a value of @ref SDIO_Transfer_Type */ + + uint32_t SDIO_DPSM; /* Specifies whether SDIO Data path state machine (DPSM) + is enabled or disabled. + This parameter can be a value of @ref SDIO_DPSM_State */ +} SDIO_DataInitTypeDef; + + +/* SDIO_Clock_Edge */ +#define SDIO_ClockEdge_Rising ((uint32_t)0x00000000) +#define SDIO_ClockEdge_Falling ((uint32_t)0x00002000) + +/* SDIO_Clock_Bypass */ +#define SDIO_ClockBypass_Disable ((uint32_t)0x00000000) +#define SDIO_ClockBypass_Enable ((uint32_t)0x00000400) + +/* SDIO_Clock_Power_Save */ +#define SDIO_ClockPowerSave_Disable ((uint32_t)0x00000000) +#define SDIO_ClockPowerSave_Enable ((uint32_t)0x00000200) + +/* SDIO_Bus_Wide */ +#define SDIO_BusWide_1b ((uint32_t)0x00000000) +#define SDIO_BusWide_4b ((uint32_t)0x00000800) +#define SDIO_BusWide_8b ((uint32_t)0x00001000) + +/* SDIO_Hardware_Flow_Control */ +#define SDIO_HardwareFlowControl_Disable ((uint32_t)0x00000000) +#define SDIO_HardwareFlowControl_Enable ((uint32_t)0x00004000) + +/* SDIO_Power_State */ +#define SDIO_PowerState_OFF ((uint32_t)0x00000000) +#define SDIO_PowerState_ON ((uint32_t)0x00000003) + +/* SDIO_Interrupt_sources */ +#define SDIO_IT_CCRCFAIL ((uint32_t)0x00000001) +#define SDIO_IT_DCRCFAIL ((uint32_t)0x00000002) +#define SDIO_IT_CTIMEOUT ((uint32_t)0x00000004) +#define SDIO_IT_DTIMEOUT ((uint32_t)0x00000008) +#define SDIO_IT_TXUNDERR ((uint32_t)0x00000010) +#define SDIO_IT_RXOVERR ((uint32_t)0x00000020) +#define SDIO_IT_CMDREND ((uint32_t)0x00000040) +#define SDIO_IT_CMDSENT ((uint32_t)0x00000080) +#define SDIO_IT_DATAEND ((uint32_t)0x00000100) +#define SDIO_IT_STBITERR ((uint32_t)0x00000200) +#define SDIO_IT_DBCKEND ((uint32_t)0x00000400) +#define SDIO_IT_CMDACT ((uint32_t)0x00000800) +#define SDIO_IT_TXACT ((uint32_t)0x00001000) +#define SDIO_IT_RXACT ((uint32_t)0x00002000) +#define SDIO_IT_TXFIFOHE ((uint32_t)0x00004000) +#define SDIO_IT_RXFIFOHF ((uint32_t)0x00008000) +#define SDIO_IT_TXFIFOF ((uint32_t)0x00010000) +#define SDIO_IT_RXFIFOF ((uint32_t)0x00020000) +#define SDIO_IT_TXFIFOE ((uint32_t)0x00040000) +#define SDIO_IT_RXFIFOE ((uint32_t)0x00080000) +#define SDIO_IT_TXDAVL ((uint32_t)0x00100000) +#define SDIO_IT_RXDAVL ((uint32_t)0x00200000) +#define SDIO_IT_SDIOIT ((uint32_t)0x00400000) +#define SDIO_IT_CEATAEND ((uint32_t)0x00800000) + +/* SDIO_Response_Type */ +#define SDIO_Response_No ((uint32_t)0x00000000) +#define SDIO_Response_Short ((uint32_t)0x00000040) +#define SDIO_Response_Long ((uint32_t)0x000000C0) + +/* SDIO_Wait_Interrupt_State */ +#define SDIO_Wait_No ((uint32_t)0x00000000) +#define SDIO_Wait_IT ((uint32_t)0x00000100) +#define SDIO_Wait_Pend ((uint32_t)0x00000200) + +/* SDIO_CPSM_State */ +#define SDIO_CPSM_Disable ((uint32_t)0x00000000) +#define SDIO_CPSM_Enable ((uint32_t)0x00000400) + +/* SDIO_Response_Registers */ +#define SDIO_RESP1 ((uint32_t)0x00000000) +#define SDIO_RESP2 ((uint32_t)0x00000004) +#define SDIO_RESP3 ((uint32_t)0x00000008) +#define SDIO_RESP4 ((uint32_t)0x0000000C) + +/* SDIO_Data_Block_Size */ +#define SDIO_DataBlockSize_1b ((uint32_t)0x00000000) +#define SDIO_DataBlockSize_2b ((uint32_t)0x00000010) +#define SDIO_DataBlockSize_4b ((uint32_t)0x00000020) +#define SDIO_DataBlockSize_8b ((uint32_t)0x00000030) +#define SDIO_DataBlockSize_16b ((uint32_t)0x00000040) +#define SDIO_DataBlockSize_32b ((uint32_t)0x00000050) +#define SDIO_DataBlockSize_64b ((uint32_t)0x00000060) +#define SDIO_DataBlockSize_128b ((uint32_t)0x00000070) +#define SDIO_DataBlockSize_256b ((uint32_t)0x00000080) +#define SDIO_DataBlockSize_512b ((uint32_t)0x00000090) +#define SDIO_DataBlockSize_1024b ((uint32_t)0x000000A0) +#define SDIO_DataBlockSize_2048b ((uint32_t)0x000000B0) +#define SDIO_DataBlockSize_4096b ((uint32_t)0x000000C0) +#define SDIO_DataBlockSize_8192b ((uint32_t)0x000000D0) +#define SDIO_DataBlockSize_16384b ((uint32_t)0x000000E0) + +/* SDIO_Transfer_Direction */ +#define SDIO_TransferDir_ToCard ((uint32_t)0x00000000) +#define SDIO_TransferDir_ToSDIO ((uint32_t)0x00000002) + +/* SDIO_Transfer_Type */ +#define SDIO_TransferMode_Block ((uint32_t)0x00000000) +#define SDIO_TransferMode_Stream ((uint32_t)0x00000004) + +/* SDIO_DPSM_State */ +#define SDIO_DPSM_Disable ((uint32_t)0x00000000) +#define SDIO_DPSM_Enable ((uint32_t)0x00000001) + +/* SDIO_Flags */ +#define SDIO_FLAG_CCRCFAIL ((uint32_t)0x00000001) +#define SDIO_FLAG_DCRCFAIL ((uint32_t)0x00000002) +#define SDIO_FLAG_CTIMEOUT ((uint32_t)0x00000004) +#define SDIO_FLAG_DTIMEOUT ((uint32_t)0x00000008) +#define SDIO_FLAG_TXUNDERR ((uint32_t)0x00000010) +#define SDIO_FLAG_RXOVERR ((uint32_t)0x00000020) +#define SDIO_FLAG_CMDREND ((uint32_t)0x00000040) +#define SDIO_FLAG_CMDSENT ((uint32_t)0x00000080) +#define SDIO_FLAG_DATAEND ((uint32_t)0x00000100) +#define SDIO_FLAG_STBITERR ((uint32_t)0x00000200) +#define SDIO_FLAG_DBCKEND ((uint32_t)0x00000400) +#define SDIO_FLAG_CMDACT ((uint32_t)0x00000800) +#define SDIO_FLAG_TXACT ((uint32_t)0x00001000) +#define SDIO_FLAG_RXACT ((uint32_t)0x00002000) +#define SDIO_FLAG_TXFIFOHE ((uint32_t)0x00004000) +#define SDIO_FLAG_RXFIFOHF ((uint32_t)0x00008000) +#define SDIO_FLAG_TXFIFOF ((uint32_t)0x00010000) +#define SDIO_FLAG_RXFIFOF ((uint32_t)0x00020000) +#define SDIO_FLAG_TXFIFOE ((uint32_t)0x00040000) +#define SDIO_FLAG_RXFIFOE ((uint32_t)0x00080000) +#define SDIO_FLAG_TXDAVL ((uint32_t)0x00100000) +#define SDIO_FLAG_RXDAVL ((uint32_t)0x00200000) +#define SDIO_FLAG_SDIOIT ((uint32_t)0x00400000) +#define SDIO_FLAG_CEATAEND ((uint32_t)0x00800000) + +/* SDIO_Read_Wait_Mode */ +#define SDIO_ReadWaitMode_CLK ((uint32_t)0x00000001) +#define SDIO_ReadWaitMode_DATA2 ((uint32_t)0x00000000) + + +void SDIO_DeInit(void); +void SDIO_Init(SDIO_InitTypeDef* SDIO_InitStruct); +void SDIO_StructInit(SDIO_InitTypeDef* SDIO_InitStruct); +void SDIO_ClockCmd(FunctionalState NewState); +void SDIO_SetPowerState(uint32_t SDIO_PowerState); +uint32_t SDIO_GetPowerState(void); +void SDIO_ITConfig(uint32_t SDIO_IT, FunctionalState NewState); +void SDIO_DMACmd(FunctionalState NewState); +void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct); +void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct); +uint8_t SDIO_GetCommandResponse(void); +uint32_t SDIO_GetResponse(uint32_t SDIO_RESP); +void SDIO_DataConfig(SDIO_DataInitTypeDef* SDIO_DataInitStruct); +void SDIO_DataStructInit(SDIO_DataInitTypeDef* SDIO_DataInitStruct); +uint32_t SDIO_GetDataCounter(void); +uint32_t SDIO_ReadData(void); +void SDIO_WriteData(uint32_t Data); +uint32_t SDIO_GetFIFOCount(void); +void SDIO_StartSDIOReadWait(FunctionalState NewState); +void SDIO_StopSDIOReadWait(FunctionalState NewState); +void SDIO_SetSDIOReadWaitMode(uint32_t SDIO_ReadWaitMode); +void SDIO_SetSDIOOperation(FunctionalState NewState); +void SDIO_SendSDIOSuspendCmd(FunctionalState NewState); +void SDIO_CommandCompletionCmd(FunctionalState NewState); +void SDIO_CEATAITCmd(FunctionalState NewState); +void SDIO_SendCEATACmd(FunctionalState NewState); +FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG); +void SDIO_ClearFlag(uint32_t SDIO_FLAG); +ITStatus SDIO_GetITStatus(uint32_t SDIO_IT); +void SDIO_ClearITPendingBit(uint32_t SDIO_IT); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_spi.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_spi.h new file mode 100755 index 000000000..caddcbea5 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_spi.h @@ -0,0 +1,229 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_spi.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* SPI firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_SPI_H +#define __CH32V30x_SPI_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* SPI Init structure definition */ +typedef struct +{ + uint16_t SPI_Direction; /* Specifies the SPI unidirectional or bidirectional data mode. + This parameter can be a value of @ref SPI_data_direction */ + + uint16_t SPI_Mode; /* Specifies the SPI operating mode. + This parameter can be a value of @ref SPI_mode */ + + uint16_t SPI_DataSize; /* Specifies the SPI data size. + This parameter can be a value of @ref SPI_data_size */ + + uint16_t SPI_CPOL; /* Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_Clock_Polarity */ + + uint16_t SPI_CPHA; /* Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_Clock_Phase */ + + uint16_t SPI_NSS; /* Specifies whether the NSS signal is managed by + hardware (NSS pin) or by software using the SSI bit. + This parameter can be a value of @ref SPI_Slave_Select_management */ + + uint16_t SPI_BaudRatePrescaler; /* Specifies the Baud Rate prescaler value which will be + used to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_BaudRate_Prescaler. + @note The communication clock is derived from the master + clock. The slave clock does not need to be set. */ + + uint16_t SPI_FirstBit; /* Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_MSB_LSB_transmission */ + + uint16_t SPI_CRCPolynomial; /* Specifies the polynomial used for the CRC calculation. */ +}SPI_InitTypeDef; + +/* I2S Init structure definition */ +typedef struct +{ + + uint16_t I2S_Mode; /* Specifies the I2S operating mode. + This parameter can be a value of @ref I2S_Mode */ + + uint16_t I2S_Standard; /* Specifies the standard used for the I2S communication. + This parameter can be a value of @ref I2S_Standard */ + + uint16_t I2S_DataFormat; /* Specifies the data format for the I2S communication. + This parameter can be a value of @ref I2S_Data_Format */ + + uint16_t I2S_MCLKOutput; /* Specifies whether the I2S MCLK output is enabled or not. + This parameter can be a value of @ref I2S_MCLK_Output */ + + uint32_t I2S_AudioFreq; /* Specifies the frequency selected for the I2S communication. + This parameter can be a value of @ref I2S_Audio_Frequency */ + + uint16_t I2S_CPOL; /* Specifies the idle state of the I2S clock. + This parameter can be a value of @ref I2S_Clock_Polarity */ +}I2S_InitTypeDef; + +/* SPI_data_direction */ +#define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000) +#define SPI_Direction_2Lines_RxOnly ((uint16_t)0x0400) +#define SPI_Direction_1Line_Rx ((uint16_t)0x8000) +#define SPI_Direction_1Line_Tx ((uint16_t)0xC000) + +/* SPI_mode */ +#define SPI_Mode_Master ((uint16_t)0x0104) +#define SPI_Mode_Slave ((uint16_t)0x0000) + +/* SPI_data_size */ +#define SPI_DataSize_16b ((uint16_t)0x0800) +#define SPI_DataSize_8b ((uint16_t)0x0000) + +/* SPI_Clock_Polarity */ +#define SPI_CPOL_Low ((uint16_t)0x0000) +#define SPI_CPOL_High ((uint16_t)0x0002) + +/* SPI_Clock_Phase */ +#define SPI_CPHA_1Edge ((uint16_t)0x0000) +#define SPI_CPHA_2Edge ((uint16_t)0x0001) + +/* SPI_Slave_Select_management */ +#define SPI_NSS_Soft ((uint16_t)0x0200) +#define SPI_NSS_Hard ((uint16_t)0x0000) + +/* SPI_BaudRate_Prescaler */ +#define SPI_BaudRatePrescaler_2 ((uint16_t)0x0000) +#define SPI_BaudRatePrescaler_4 ((uint16_t)0x0008) +#define SPI_BaudRatePrescaler_8 ((uint16_t)0x0010) +#define SPI_BaudRatePrescaler_16 ((uint16_t)0x0018) +#define SPI_BaudRatePrescaler_32 ((uint16_t)0x0020) +#define SPI_BaudRatePrescaler_64 ((uint16_t)0x0028) +#define SPI_BaudRatePrescaler_128 ((uint16_t)0x0030) +#define SPI_BaudRatePrescaler_256 ((uint16_t)0x0038) + +/* SPI_MSB_LSB_transmission */ +#define SPI_FirstBit_MSB ((uint16_t)0x0000) +#define SPI_FirstBit_LSB ((uint16_t)0x0080) + +/* I2S_Mode */ +#define I2S_Mode_SlaveTx ((uint16_t)0x0000) +#define I2S_Mode_SlaveRx ((uint16_t)0x0100) +#define I2S_Mode_MasterTx ((uint16_t)0x0200) +#define I2S_Mode_MasterRx ((uint16_t)0x0300) + +/* I2S_Standard */ +#define I2S_Standard_Phillips ((uint16_t)0x0000) +#define I2S_Standard_MSB ((uint16_t)0x0010) +#define I2S_Standard_LSB ((uint16_t)0x0020) +#define I2S_Standard_PCMShort ((uint16_t)0x0030) +#define I2S_Standard_PCMLong ((uint16_t)0x00B0) + +/* I2S_Data_Format */ +#define I2S_DataFormat_16b ((uint16_t)0x0000) +#define I2S_DataFormat_16bextended ((uint16_t)0x0001) +#define I2S_DataFormat_24b ((uint16_t)0x0003) +#define I2S_DataFormat_32b ((uint16_t)0x0005) + +/* I2S_MCLK_Output */ +#define I2S_MCLKOutput_Enable ((uint16_t)0x0200) +#define I2S_MCLKOutput_Disable ((uint16_t)0x0000) + +/* I2S_Audio_Frequency */ +#define I2S_AudioFreq_192k ((uint32_t)192000) +#define I2S_AudioFreq_96k ((uint32_t)96000) +#define I2S_AudioFreq_48k ((uint32_t)48000) +#define I2S_AudioFreq_44k ((uint32_t)44100) +#define I2S_AudioFreq_32k ((uint32_t)32000) +#define I2S_AudioFreq_22k ((uint32_t)22050) +#define I2S_AudioFreq_16k ((uint32_t)16000) +#define I2S_AudioFreq_11k ((uint32_t)11025) +#define I2S_AudioFreq_8k ((uint32_t)8000) +#define I2S_AudioFreq_Default ((uint32_t)2) + +/* I2S_Clock_Polarity */ +#define I2S_CPOL_Low ((uint16_t)0x0000) +#define I2S_CPOL_High ((uint16_t)0x0008) + +/* SPI_I2S_DMA_transfer_requests */ +#define SPI_I2S_DMAReq_Tx ((uint16_t)0x0002) +#define SPI_I2S_DMAReq_Rx ((uint16_t)0x0001) + +/* SPI_NSS_internal_software_management */ +#define SPI_NSSInternalSoft_Set ((uint16_t)0x0100) +#define SPI_NSSInternalSoft_Reset ((uint16_t)0xFEFF) + +/* SPI_CRC_Transmit_Receive */ +#define SPI_CRC_Tx ((uint8_t)0x00) +#define SPI_CRC_Rx ((uint8_t)0x01) + +/* SPI_direction_transmit_receive */ +#define SPI_Direction_Rx ((uint16_t)0xBFFF) +#define SPI_Direction_Tx ((uint16_t)0x4000) + +/* SPI_I2S_interrupts_definition */ +#define SPI_I2S_IT_TXE ((uint8_t)0x71) +#define SPI_I2S_IT_RXNE ((uint8_t)0x60) +#define SPI_I2S_IT_ERR ((uint8_t)0x50) +#define SPI_I2S_IT_OVR ((uint8_t)0x56) +#define SPI_IT_MODF ((uint8_t)0x55) +#define SPI_IT_CRCERR ((uint8_t)0x54) +#define I2S_IT_UDR ((uint8_t)0x53) + +/* SPI_I2S_flags_definition */ +#define SPI_I2S_FLAG_RXNE ((uint16_t)0x0001) +#define SPI_I2S_FLAG_TXE ((uint16_t)0x0002) +#define I2S_FLAG_CHSIDE ((uint16_t)0x0004) +#define I2S_FLAG_UDR ((uint16_t)0x0008) +#define SPI_FLAG_CRCERR ((uint16_t)0x0010) +#define SPI_FLAG_MODF ((uint16_t)0x0020) +#define SPI_I2S_FLAG_OVR ((uint16_t)0x0040) +#define SPI_I2S_FLAG_BSY ((uint16_t)0x0080) + + +void SPI_I2S_DeInit(SPI_TypeDef* SPIx); +void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); +void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct); +void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct); +void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct); +void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState); +void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState); +void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data); +uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx); +void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft); +void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState); +void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize); +void SPI_TransmitCRC(SPI_TypeDef* SPIx); +void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState); +uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC); +uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx); +void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction); +FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); +void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG); +ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT); +void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_tim.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_tim.h new file mode 100755 index 000000000..50b266502 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_tim.h @@ -0,0 +1,515 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_tim.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* TIM firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_TIM_H +#define __CH32V30x_TIM_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + +/* TIM Time Base Init structure definition */ +typedef struct +{ + uint16_t TIM_Prescaler; /* Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between 0x0000 and 0xFFFF */ + + uint16_t TIM_CounterMode; /* Specifies the counter mode. + This parameter can be a value of @ref TIM_Counter_Mode */ + + uint16_t TIM_Period; /* Specifies the period value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between 0x0000 and 0xFFFF. */ + + uint16_t TIM_ClockDivision; /* Specifies the clock division. + This parameter can be a value of @ref TIM_Clock_Division_CKD */ + + uint8_t TIM_RepetitionCounter; /* Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + This parameter must be a number between 0x00 and 0xFF. + @note This parameter is valid only for TIM1 and TIM8. */ +} TIM_TimeBaseInitTypeDef; + +/* TIM Output Compare Init structure definition */ +typedef struct +{ + uint16_t TIM_OCMode; /* Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint16_t TIM_OutputState; /* Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_Output_Compare_state */ + + uint16_t TIM_OutputNState; /* Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_Output_Compare_N_state + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_Pulse; /* Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between 0x0000 and 0xFFFF */ + + uint16_t TIM_OCPolarity; /* Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint16_t TIM_OCNPolarity; /* Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_OCIdleState; /* Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for TIM1 and TIM8. */ + + uint16_t TIM_OCNIdleState; /* Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for TIM1 and TIM8. */ +} TIM_OCInitTypeDef; + +/* TIM Input Capture Init structure definition */ +typedef struct +{ + uint16_t TIM_Channel; /* Specifies the TIM channel. + This parameter can be a value of @ref TIM_Channel */ + + uint16_t TIM_ICPolarity; /* Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint16_t TIM_ICSelection; /* Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint16_t TIM_ICPrescaler; /* Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint16_t TIM_ICFilter; /* Specifies the input capture filter. + This parameter can be a number between 0x0 and 0xF */ +} TIM_ICInitTypeDef; + +/* BDTR structure definition */ +typedef struct +{ + uint16_t TIM_OSSRState; /* Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref OSSR_Off_State_Selection_for_Run_mode_state */ + + uint16_t TIM_OSSIState; /* Specifies the Off-State used in Idle state. + This parameter can be a value of @ref OSSI_Off_State_Selection_for_Idle_mode_state */ + + uint16_t TIM_LOCKLevel; /* Specifies the LOCK level parameters. + This parameter can be a value of @ref Lock_level */ + + uint16_t TIM_DeadTime; /* Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between 0x00 and 0xFF */ + + uint16_t TIM_Break; /* Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref Break_Input_enable_disable */ + + uint16_t TIM_BreakPolarity; /* Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref Break_Polarity */ + + uint16_t TIM_AutomaticOutput; /* Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ +} TIM_BDTRInitTypeDef; + +/* TIM_Output_Compare_and_PWM_modes */ +#define TIM_OCMode_Timing ((uint16_t)0x0000) +#define TIM_OCMode_Active ((uint16_t)0x0010) +#define TIM_OCMode_Inactive ((uint16_t)0x0020) +#define TIM_OCMode_Toggle ((uint16_t)0x0030) +#define TIM_OCMode_PWM1 ((uint16_t)0x0060) +#define TIM_OCMode_PWM2 ((uint16_t)0x0070) + +/* TIM_One_Pulse_Mode */ +#define TIM_OPMode_Single ((uint16_t)0x0008) +#define TIM_OPMode_Repetitive ((uint16_t)0x0000) + +/* TIM_Channel */ +#define TIM_Channel_1 ((uint16_t)0x0000) +#define TIM_Channel_2 ((uint16_t)0x0004) +#define TIM_Channel_3 ((uint16_t)0x0008) +#define TIM_Channel_4 ((uint16_t)0x000C) + +/* TIM_Clock_Division_CKD */ +#define TIM_CKD_DIV1 ((uint16_t)0x0000) +#define TIM_CKD_DIV2 ((uint16_t)0x0100) +#define TIM_CKD_DIV4 ((uint16_t)0x0200) + +/* TIM_Counter_Mode */ +#define TIM_CounterMode_Up ((uint16_t)0x0000) +#define TIM_CounterMode_Down ((uint16_t)0x0010) +#define TIM_CounterMode_CenterAligned1 ((uint16_t)0x0020) +#define TIM_CounterMode_CenterAligned2 ((uint16_t)0x0040) +#define TIM_CounterMode_CenterAligned3 ((uint16_t)0x0060) + +/* TIM_Output_Compare_Polarity */ +#define TIM_OCPolarity_High ((uint16_t)0x0000) +#define TIM_OCPolarity_Low ((uint16_t)0x0002) + +/* TIM_Output_Compare_N_Polarity */ +#define TIM_OCNPolarity_High ((uint16_t)0x0000) +#define TIM_OCNPolarity_Low ((uint16_t)0x0008) + +/* TIM_Output_Compare_state */ +#define TIM_OutputState_Disable ((uint16_t)0x0000) +#define TIM_OutputState_Enable ((uint16_t)0x0001) + +/* TIM_Output_Compare_N_state */ +#define TIM_OutputNState_Disable ((uint16_t)0x0000) +#define TIM_OutputNState_Enable ((uint16_t)0x0004) + +/* TIM_Capture_Compare_state */ +#define TIM_CCx_Enable ((uint16_t)0x0001) +#define TIM_CCx_Disable ((uint16_t)0x0000) + +/* TIM_Capture_Compare_N_state */ +#define TIM_CCxN_Enable ((uint16_t)0x0004) +#define TIM_CCxN_Disable ((uint16_t)0x0000) + +/* Break_Input_enable_disable */ +#define TIM_Break_Enable ((uint16_t)0x1000) +#define TIM_Break_Disable ((uint16_t)0x0000) + +/* Break_Polarity */ +#define TIM_BreakPolarity_Low ((uint16_t)0x0000) +#define TIM_BreakPolarity_High ((uint16_t)0x2000) + +/* TIM_AOE_Bit_Set_Reset */ +#define TIM_AutomaticOutput_Enable ((uint16_t)0x4000) +#define TIM_AutomaticOutput_Disable ((uint16_t)0x0000) + +/* Lock_level */ +#define TIM_LOCKLevel_OFF ((uint16_t)0x0000) +#define TIM_LOCKLevel_1 ((uint16_t)0x0100) +#define TIM_LOCKLevel_2 ((uint16_t)0x0200) +#define TIM_LOCKLevel_3 ((uint16_t)0x0300) + +/* OSSI_Off_State_Selection_for_Idle_mode_state */ +#define TIM_OSSIState_Enable ((uint16_t)0x0400) +#define TIM_OSSIState_Disable ((uint16_t)0x0000) + +/* OSSR_Off_State_Selection_for_Run_mode_state */ +#define TIM_OSSRState_Enable ((uint16_t)0x0800) +#define TIM_OSSRState_Disable ((uint16_t)0x0000) + +/* TIM_Output_Compare_Idle_State */ +#define TIM_OCIdleState_Set ((uint16_t)0x0100) +#define TIM_OCIdleState_Reset ((uint16_t)0x0000) + +/* TIM_Output_Compare_N_Idle_State */ +#define TIM_OCNIdleState_Set ((uint16_t)0x0200) +#define TIM_OCNIdleState_Reset ((uint16_t)0x0000) + +/* TIM_Input_Capture_Polarity */ +#define TIM_ICPolarity_Rising ((uint16_t)0x0000) +#define TIM_ICPolarity_Falling ((uint16_t)0x0002) +#define TIM_ICPolarity_BothEdge ((uint16_t)0x000A) + +/* TIM_Input_Capture_Selection */ +#define TIM_ICSelection_DirectTI ((uint16_t)0x0001) /* TIM Input 1, 2, 3 or 4 is selected to be + connected to IC1, IC2, IC3 or IC4, respectively */ +#define TIM_ICSelection_IndirectTI ((uint16_t)0x0002) /* TIM Input 1, 2, 3 or 4 is selected to be + connected to IC2, IC1, IC4 or IC3, respectively. */ +#define TIM_ICSelection_TRC ((uint16_t)0x0003) /* TIM Input 1, 2, 3 or 4 is selected to be connected to TRC. */ + +/* TIM_Input_Capture_Prescaler */ +#define TIM_ICPSC_DIV1 ((uint16_t)0x0000) /* Capture performed each time an edge is detected on the capture input. */ +#define TIM_ICPSC_DIV2 ((uint16_t)0x0004) /* Capture performed once every 2 events. */ +#define TIM_ICPSC_DIV4 ((uint16_t)0x0008) /* Capture performed once every 4 events. */ +#define TIM_ICPSC_DIV8 ((uint16_t)0x000C) /* Capture performed once every 8 events. */ + +/* TIM_interrupt_sources */ +#define TIM_IT_Update ((uint16_t)0x0001) +#define TIM_IT_CC1 ((uint16_t)0x0002) +#define TIM_IT_CC2 ((uint16_t)0x0004) +#define TIM_IT_CC3 ((uint16_t)0x0008) +#define TIM_IT_CC4 ((uint16_t)0x0010) +#define TIM_IT_COM ((uint16_t)0x0020) +#define TIM_IT_Trigger ((uint16_t)0x0040) +#define TIM_IT_Break ((uint16_t)0x0080) + +/* TIM_DMA_Base_address */ +#define TIM_DMABase_CR1 ((uint16_t)0x0000) +#define TIM_DMABase_CR2 ((uint16_t)0x0001) +#define TIM_DMABase_SMCR ((uint16_t)0x0002) +#define TIM_DMABase_DIER ((uint16_t)0x0003) +#define TIM_DMABase_SR ((uint16_t)0x0004) +#define TIM_DMABase_EGR ((uint16_t)0x0005) +#define TIM_DMABase_CCMR1 ((uint16_t)0x0006) +#define TIM_DMABase_CCMR2 ((uint16_t)0x0007) +#define TIM_DMABase_CCER ((uint16_t)0x0008) +#define TIM_DMABase_CNT ((uint16_t)0x0009) +#define TIM_DMABase_PSC ((uint16_t)0x000A) +#define TIM_DMABase_ARR ((uint16_t)0x000B) +#define TIM_DMABase_RCR ((uint16_t)0x000C) +#define TIM_DMABase_CCR1 ((uint16_t)0x000D) +#define TIM_DMABase_CCR2 ((uint16_t)0x000E) +#define TIM_DMABase_CCR3 ((uint16_t)0x000F) +#define TIM_DMABase_CCR4 ((uint16_t)0x0010) +#define TIM_DMABase_BDTR ((uint16_t)0x0011) +#define TIM_DMABase_DCR ((uint16_t)0x0012) + +/* TIM_DMA_Burst_Length */ +#define TIM_DMABurstLength_1Transfer ((uint16_t)0x0000) +#define TIM_DMABurstLength_2Transfers ((uint16_t)0x0100) +#define TIM_DMABurstLength_3Transfers ((uint16_t)0x0200) +#define TIM_DMABurstLength_4Transfers ((uint16_t)0x0300) +#define TIM_DMABurstLength_5Transfers ((uint16_t)0x0400) +#define TIM_DMABurstLength_6Transfers ((uint16_t)0x0500) +#define TIM_DMABurstLength_7Transfers ((uint16_t)0x0600) +#define TIM_DMABurstLength_8Transfers ((uint16_t)0x0700) +#define TIM_DMABurstLength_9Transfers ((uint16_t)0x0800) +#define TIM_DMABurstLength_10Transfers ((uint16_t)0x0900) +#define TIM_DMABurstLength_11Transfers ((uint16_t)0x0A00) +#define TIM_DMABurstLength_12Transfers ((uint16_t)0x0B00) +#define TIM_DMABurstLength_13Transfers ((uint16_t)0x0C00) +#define TIM_DMABurstLength_14Transfers ((uint16_t)0x0D00) +#define TIM_DMABurstLength_15Transfers ((uint16_t)0x0E00) +#define TIM_DMABurstLength_16Transfers ((uint16_t)0x0F00) +#define TIM_DMABurstLength_17Transfers ((uint16_t)0x1000) +#define TIM_DMABurstLength_18Transfers ((uint16_t)0x1100) + +/* TIM_DMA_sources */ +#define TIM_DMA_Update ((uint16_t)0x0100) +#define TIM_DMA_CC1 ((uint16_t)0x0200) +#define TIM_DMA_CC2 ((uint16_t)0x0400) +#define TIM_DMA_CC3 ((uint16_t)0x0800) +#define TIM_DMA_CC4 ((uint16_t)0x1000) +#define TIM_DMA_COM ((uint16_t)0x2000) +#define TIM_DMA_Trigger ((uint16_t)0x4000) + +/* TIM_External_Trigger_Prescaler */ +#define TIM_ExtTRGPSC_OFF ((uint16_t)0x0000) +#define TIM_ExtTRGPSC_DIV2 ((uint16_t)0x1000) +#define TIM_ExtTRGPSC_DIV4 ((uint16_t)0x2000) +#define TIM_ExtTRGPSC_DIV8 ((uint16_t)0x3000) + +/* TIM_Internal_Trigger_Selection */ +#define TIM_TS_ITR0 ((uint16_t)0x0000) +#define TIM_TS_ITR1 ((uint16_t)0x0010) +#define TIM_TS_ITR2 ((uint16_t)0x0020) +#define TIM_TS_ITR3 ((uint16_t)0x0030) +#define TIM_TS_TI1F_ED ((uint16_t)0x0040) +#define TIM_TS_TI1FP1 ((uint16_t)0x0050) +#define TIM_TS_TI2FP2 ((uint16_t)0x0060) +#define TIM_TS_ETRF ((uint16_t)0x0070) + +/* TIM_TIx_External_Clock_Source */ +#define TIM_TIxExternalCLK1Source_TI1 ((uint16_t)0x0050) +#define TIM_TIxExternalCLK1Source_TI2 ((uint16_t)0x0060) +#define TIM_TIxExternalCLK1Source_TI1ED ((uint16_t)0x0040) + +/* TIM_External_Trigger_Polarity */ +#define TIM_ExtTRGPolarity_Inverted ((uint16_t)0x8000) +#define TIM_ExtTRGPolarity_NonInverted ((uint16_t)0x0000) + +/* TIM_Prescaler_Reload_Mode */ +#define TIM_PSCReloadMode_Update ((uint16_t)0x0000) +#define TIM_PSCReloadMode_Immediate ((uint16_t)0x0001) + +/* TIM_Forced_Action */ +#define TIM_ForcedAction_Active ((uint16_t)0x0050) +#define TIM_ForcedAction_InActive ((uint16_t)0x0040) + +/* TIM_Encoder_Mode */ +#define TIM_EncoderMode_TI1 ((uint16_t)0x0001) +#define TIM_EncoderMode_TI2 ((uint16_t)0x0002) +#define TIM_EncoderMode_TI12 ((uint16_t)0x0003) + +/* TIM_Event_Source */ +#define TIM_EventSource_Update ((uint16_t)0x0001) +#define TIM_EventSource_CC1 ((uint16_t)0x0002) +#define TIM_EventSource_CC2 ((uint16_t)0x0004) +#define TIM_EventSource_CC3 ((uint16_t)0x0008) +#define TIM_EventSource_CC4 ((uint16_t)0x0010) +#define TIM_EventSource_COM ((uint16_t)0x0020) +#define TIM_EventSource_Trigger ((uint16_t)0x0040) +#define TIM_EventSource_Break ((uint16_t)0x0080) + +/* TIM_Update_Source */ +#define TIM_UpdateSource_Global ((uint16_t)0x0000) /* Source of update is the counter overflow/underflow + or the setting of UG bit, or an update generation + through the slave mode controller. */ +#define TIM_UpdateSource_Regular ((uint16_t)0x0001) /* Source of update is counter overflow/underflow. */ + +/* TIM_Output_Compare_Preload_State */ +#define TIM_OCPreload_Enable ((uint16_t)0x0008) +#define TIM_OCPreload_Disable ((uint16_t)0x0000) + +/* TIM_Output_Compare_Fast_State */ +#define TIM_OCFast_Enable ((uint16_t)0x0004) +#define TIM_OCFast_Disable ((uint16_t)0x0000) + +/* TIM_Output_Compare_Clear_State */ +#define TIM_OCClear_Enable ((uint16_t)0x0080) +#define TIM_OCClear_Disable ((uint16_t)0x0000) + +/* TIM_Trigger_Output_Source */ +#define TIM_TRGOSource_Reset ((uint16_t)0x0000) +#define TIM_TRGOSource_Enable ((uint16_t)0x0010) +#define TIM_TRGOSource_Update ((uint16_t)0x0020) +#define TIM_TRGOSource_OC1 ((uint16_t)0x0030) +#define TIM_TRGOSource_OC1Ref ((uint16_t)0x0040) +#define TIM_TRGOSource_OC2Ref ((uint16_t)0x0050) +#define TIM_TRGOSource_OC3Ref ((uint16_t)0x0060) +#define TIM_TRGOSource_OC4Ref ((uint16_t)0x0070) + +/* TIM_Slave_Mode */ +#define TIM_SlaveMode_Reset ((uint16_t)0x0004) +#define TIM_SlaveMode_Gated ((uint16_t)0x0005) +#define TIM_SlaveMode_Trigger ((uint16_t)0x0006) +#define TIM_SlaveMode_External1 ((uint16_t)0x0007) + +/* TIM_Master_Slave_Mode */ +#define TIM_MasterSlaveMode_Enable ((uint16_t)0x0080) +#define TIM_MasterSlaveMode_Disable ((uint16_t)0x0000) + +/* TIM_Flags */ +#define TIM_FLAG_Update ((uint16_t)0x0001) +#define TIM_FLAG_CC1 ((uint16_t)0x0002) +#define TIM_FLAG_CC2 ((uint16_t)0x0004) +#define TIM_FLAG_CC3 ((uint16_t)0x0008) +#define TIM_FLAG_CC4 ((uint16_t)0x0010) +#define TIM_FLAG_COM ((uint16_t)0x0020) +#define TIM_FLAG_Trigger ((uint16_t)0x0040) +#define TIM_FLAG_Break ((uint16_t)0x0080) +#define TIM_FLAG_CC1OF ((uint16_t)0x0200) +#define TIM_FLAG_CC2OF ((uint16_t)0x0400) +#define TIM_FLAG_CC3OF ((uint16_t)0x0800) +#define TIM_FLAG_CC4OF ((uint16_t)0x1000) + +/* TIM_Legacy */ +#define TIM_DMABurstLength_1Byte TIM_DMABurstLength_1Transfer +#define TIM_DMABurstLength_2Bytes TIM_DMABurstLength_2Transfers +#define TIM_DMABurstLength_3Bytes TIM_DMABurstLength_3Transfers +#define TIM_DMABurstLength_4Bytes TIM_DMABurstLength_4Transfers +#define TIM_DMABurstLength_5Bytes TIM_DMABurstLength_5Transfers +#define TIM_DMABurstLength_6Bytes TIM_DMABurstLength_6Transfers +#define TIM_DMABurstLength_7Bytes TIM_DMABurstLength_7Transfers +#define TIM_DMABurstLength_8Bytes TIM_DMABurstLength_8Transfers +#define TIM_DMABurstLength_9Bytes TIM_DMABurstLength_9Transfers +#define TIM_DMABurstLength_10Bytes TIM_DMABurstLength_10Transfers +#define TIM_DMABurstLength_11Bytes TIM_DMABurstLength_11Transfers +#define TIM_DMABurstLength_12Bytes TIM_DMABurstLength_12Transfers +#define TIM_DMABurstLength_13Bytes TIM_DMABurstLength_13Transfers +#define TIM_DMABurstLength_14Bytes TIM_DMABurstLength_14Transfers +#define TIM_DMABurstLength_15Bytes TIM_DMABurstLength_15Transfers +#define TIM_DMABurstLength_16Bytes TIM_DMABurstLength_16Transfers +#define TIM_DMABurstLength_17Bytes TIM_DMABurstLength_17Transfers +#define TIM_DMABurstLength_18Bytes TIM_DMABurstLength_18Transfers + + +void TIM_DeInit(TIM_TypeDef* TIMx); +void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); +void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct); +void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct); +void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct); +void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct); +void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct); +void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState); +void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource); +void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength); +void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState); +void TIM_InternalClockConfig(TIM_TypeDef* TIMx); +void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); +void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, + uint16_t TIM_ICPolarity, uint16_t ICFilter); +void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter); +void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, + uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter); +void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter); +void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode); +void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode); +void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource); +void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode, + uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity); +void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction); +void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload); +void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast); +void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear); +void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity); +void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity); +void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx); +void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN); +void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode); +void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource); +void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState); +void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode); +void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource); +void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode); +void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode); +void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter); +void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload); +void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1); +void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2); +void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3); +void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4); +void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC); +void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD); +uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx); +uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx); +uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx); +uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx); +uint16_t TIM_GetCounter(TIM_TypeDef* TIMx); +uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx); +FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); +void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG); +ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT); +void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_usart.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_usart.h new file mode 100755 index 000000000..2867a0259 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_usart.h @@ -0,0 +1,195 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_usart.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* USART firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_USART_H +#define __CH32V30x_USART_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +/* USART Init Structure definition */ +typedef struct +{ + uint32_t USART_BaudRate; /* This member configures the USART communication baud rate. + The baud rate is computed using the following formula: + - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate))) + - FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 16) + 0.5 */ + + uint16_t USART_WordLength; /* Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_Word_Length */ + + uint16_t USART_StopBits; /* Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_Stop_Bits */ + + uint16_t USART_Parity; /* Specifies the parity mode. + This parameter can be a value of @ref USART_Parity + @note When parity is enabled, the computed parity is inserted + at the MSB position of the transmitted data (9th bit when + the word length is set to 9 data bits; 8th bit when the + word length is set to 8 data bits). */ + + uint16_t USART_Mode; /* Specifies wether the Receive or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_Mode */ + + uint16_t USART_HardwareFlowControl; /* Specifies wether the hardware flow control mode is enabled + or disabled. + This parameter can be a value of @ref USART_Hardware_Flow_Control */ +} USART_InitTypeDef; + +/* USART Clock Init Structure definition */ +typedef struct +{ + + uint16_t USART_Clock; /* Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_Clock */ + + uint16_t USART_CPOL; /* Specifies the steady state value of the serial clock. + This parameter can be a value of @ref USART_Clock_Polarity */ + + uint16_t USART_CPHA; /* Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_Clock_Phase */ + + uint16_t USART_LastBit; /* Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_Last_Bit */ +} USART_ClockInitTypeDef; + +/* USART_Word_Length */ +#define USART_WordLength_8b ((uint16_t)0x0000) +#define USART_WordLength_9b ((uint16_t)0x1000) + +/* USART_Stop_Bits */ +#define USART_StopBits_1 ((uint16_t)0x0000) +#define USART_StopBits_0_5 ((uint16_t)0x1000) +#define USART_StopBits_2 ((uint16_t)0x2000) +#define USART_StopBits_1_5 ((uint16_t)0x3000) + +/* USART_Parity */ +#define USART_Parity_No ((uint16_t)0x0000) +#define USART_Parity_Even ((uint16_t)0x0400) +#define USART_Parity_Odd ((uint16_t)0x0600) + +/* USART_Mode */ +#define USART_Mode_Rx ((uint16_t)0x0004) +#define USART_Mode_Tx ((uint16_t)0x0008) + +/* USART_Hardware_Flow_Control */ +#define USART_HardwareFlowControl_None ((uint16_t)0x0000) +#define USART_HardwareFlowControl_RTS ((uint16_t)0x0100) +#define USART_HardwareFlowControl_CTS ((uint16_t)0x0200) +#define USART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300) + +/* USART_Clock */ +#define USART_Clock_Disable ((uint16_t)0x0000) +#define USART_Clock_Enable ((uint16_t)0x0800) + +/* USART_Clock_Polarity */ +#define USART_CPOL_Low ((uint16_t)0x0000) +#define USART_CPOL_High ((uint16_t)0x0400) + +/* USART_Clock_Phase */ +#define USART_CPHA_1Edge ((uint16_t)0x0000) +#define USART_CPHA_2Edge ((uint16_t)0x0200) + +/* USART_Last_Bit */ +#define USART_LastBit_Disable ((uint16_t)0x0000) +#define USART_LastBit_Enable ((uint16_t)0x0100) + +/* USART_Interrupt_definition */ +#define USART_IT_PE ((uint16_t)0x0028) +#define USART_IT_TXE ((uint16_t)0x0727) +#define USART_IT_TC ((uint16_t)0x0626) +#define USART_IT_RXNE ((uint16_t)0x0525) +#define USART_IT_ORE_RX ((uint16_t)0x0325) +#define USART_IT_IDLE ((uint16_t)0x0424) +#define USART_IT_LBD ((uint16_t)0x0846) +#define USART_IT_CTS ((uint16_t)0x096A) +#define USART_IT_ERR ((uint16_t)0x0060) +#define USART_IT_ORE_ER ((uint16_t)0x0360) +#define USART_IT_NE ((uint16_t)0x0260) +#define USART_IT_FE ((uint16_t)0x0160) + +#define USART_IT_ORE USART_IT_ORE_ER + +/* USART_DMA_Requests */ +#define USART_DMAReq_Tx ((uint16_t)0x0080) +#define USART_DMAReq_Rx ((uint16_t)0x0040) + +/* USART_WakeUp_methods */ +#define USART_WakeUp_IdleLine ((uint16_t)0x0000) +#define USART_WakeUp_AddressMark ((uint16_t)0x0800) + +/* USART_LIN_Break_Detection_Length */ +#define USART_LINBreakDetectLength_10b ((uint16_t)0x0000) +#define USART_LINBreakDetectLength_11b ((uint16_t)0x0020) + +/* USART_IrDA_Low_Power */ +#define USART_IrDAMode_LowPower ((uint16_t)0x0004) +#define USART_IrDAMode_Normal ((uint16_t)0x0000) + +/* USART_Flags */ +#define USART_FLAG_CTS ((uint16_t)0x0200) +#define USART_FLAG_LBD ((uint16_t)0x0100) +#define USART_FLAG_TXE ((uint16_t)0x0080) +#define USART_FLAG_TC ((uint16_t)0x0040) +#define USART_FLAG_RXNE ((uint16_t)0x0020) +#define USART_FLAG_IDLE ((uint16_t)0x0010) +#define USART_FLAG_ORE ((uint16_t)0x0008) +#define USART_FLAG_NE ((uint16_t)0x0004) +#define USART_FLAG_FE ((uint16_t)0x0002) +#define USART_FLAG_PE ((uint16_t)0x0001) + + +void USART_DeInit(USART_TypeDef* USARTx); +void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); +void USART_StructInit(USART_InitTypeDef* USART_InitStruct); +void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState); +void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState); +void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address); +void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp); +void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength); +void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); +uint16_t USART_ReceiveData(USART_TypeDef* USARTx); +void USART_SendBreak(USART_TypeDef* USARTx); +void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime); +void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler); +void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode); +void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState); +FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); +void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG); +ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); +void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_wwdg.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_wwdg.h new file mode 100755 index 000000000..d0acfb70c --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/inc/ch32v30x_wwdg.h @@ -0,0 +1,42 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_wwdg.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the WWDG +* firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_WWDG_H +#define __CH32V30x_WWDG_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +/* WWDG_Prescaler */ +#define WWDG_Prescaler_1 ((uint32_t)0x00000000) +#define WWDG_Prescaler_2 ((uint32_t)0x00000080) +#define WWDG_Prescaler_4 ((uint32_t)0x00000100) +#define WWDG_Prescaler_8 ((uint32_t)0x00000180) + + +void WWDG_DeInit(void); +void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); +void WWDG_SetWindowValue(uint8_t WindowValue); +void WWDG_EnableIT(void); +void WWDG_SetCounter(uint8_t Counter); +void WWDG_Enable(uint8_t Counter); +FlagStatus WWDG_GetFlagStatus(void); +void WWDG_ClearFlag(void); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/Makefile b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/Makefile new file mode 100644 index 000000000..413442683 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/Makefile @@ -0,0 +1,18 @@ +SRC_FILES := ch32v30x_adc.c \ + ch32v30x_bkp.c \ + ch32v30x_can.c \ + ch32v30x_dac.c ch32v30x_dbgmcu.c ch32v30x_dma.c ch32v30x_dvp.c \ + ch32v30x_eth.c ch32v30x_exti.c \ + ch32v30x_flash.c ch32v30x_fsmc.c \ + ch32v30x_gpio.c \ + ch32v30x_i2c.c ch32v30x_iwdg.c \ + ch32v30x_misc.c \ + ch32v30x_opa.c \ + ch32v30x_pwr.c \ + ch32v30x_rcc.c ch32v30x_rng.c ch32v30x_rtc.c \ + ch32v30x_sdio.c ch32v30x_spi.c \ + ch32v30x_tim.c \ + ch32v30x_usart.c \ + ch32v30x_wwdg.c + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_adc.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_adc.c new file mode 100755 index 000000000..138ee3600 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_adc.c @@ -0,0 +1,1180 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_adc.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the ADC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_adc.h" +#include "ch32v30x_rcc.h" + +/* ADC DISCNUM mask */ +#define CTLR1_DISCNUM_Reset ((uint32_t)0xFFFF1FFF) + +/* ADC DISCEN mask */ +#define CTLR1_DISCEN_Set ((uint32_t)0x00000800) +#define CTLR1_DISCEN_Reset ((uint32_t)0xFFFFF7FF) + +/* ADC JAUTO mask */ +#define CTLR1_JAUTO_Set ((uint32_t)0x00000400) +#define CTLR1_JAUTO_Reset ((uint32_t)0xFFFFFBFF) + +/* ADC JDISCEN mask */ +#define CTLR1_JDISCEN_Set ((uint32_t)0x00001000) +#define CTLR1_JDISCEN_Reset ((uint32_t)0xFFFFEFFF) + +/* ADC AWDCH mask */ +#define CTLR1_AWDCH_Reset ((uint32_t)0xFFFFFFE0) + +/* ADC Analog watchdog enable mode mask */ +#define CTLR1_AWDMode_Reset ((uint32_t)0xFF3FFDFF) + +/* CTLR1 register Mask */ +#define CTLR1_CLEAR_Mask ((uint32_t)0xE0F0FEFF) + +/* ADC ADON mask */ +#define CTLR2_ADON_Set ((uint32_t)0x00000001) +#define CTLR2_ADON_Reset ((uint32_t)0xFFFFFFFE) + +/* ADC DMA mask */ +#define CTLR2_DMA_Set ((uint32_t)0x00000100) +#define CTLR2_DMA_Reset ((uint32_t)0xFFFFFEFF) + +/* ADC RSTCAL mask */ +#define CTLR2_RSTCAL_Set ((uint32_t)0x00000008) + +/* ADC CAL mask */ +#define CTLR2_CAL_Set ((uint32_t)0x00000004) + +/* ADC SWSTART mask */ +#define CTLR2_SWSTART_Set ((uint32_t)0x00400000) + +/* ADC EXTTRIG mask */ +#define CTLR2_EXTTRIG_Set ((uint32_t)0x00100000) +#define CTLR2_EXTTRIG_Reset ((uint32_t)0xFFEFFFFF) + +/* ADC Software start mask */ +#define CTLR2_EXTTRIG_SWSTART_Set ((uint32_t)0x00500000) +#define CTLR2_EXTTRIG_SWSTART_Reset ((uint32_t)0xFFAFFFFF) + +/* ADC JEXTSEL mask */ +#define CTLR2_JEXTSEL_Reset ((uint32_t)0xFFFF8FFF) + +/* ADC JEXTTRIG mask */ +#define CTLR2_JEXTTRIG_Set ((uint32_t)0x00008000) +#define CTLR2_JEXTTRIG_Reset ((uint32_t)0xFFFF7FFF) + +/* ADC JSWSTART mask */ +#define CTLR2_JSWSTART_Set ((uint32_t)0x00200000) + +/* ADC injected software start mask */ +#define CTLR2_JEXTTRIG_JSWSTART_Set ((uint32_t)0x00208000) +#define CTLR2_JEXTTRIG_JSWSTART_Reset ((uint32_t)0xFFDF7FFF) + +/* ADC TSPD mask */ +#define CTLR2_TSVREFE_Set ((uint32_t)0x00800000) +#define CTLR2_TSVREFE_Reset ((uint32_t)0xFF7FFFFF) + +/* CTLR2 register Mask */ +#define CTLR2_CLEAR_Mask ((uint32_t)0xFFF1F7FD) + +/* ADC SQx mask */ +#define RSQR3_SQ_Set ((uint32_t)0x0000001F) +#define RSQR2_SQ_Set ((uint32_t)0x0000001F) +#define RSQR1_SQ_Set ((uint32_t)0x0000001F) + +/* RSQR1 register Mask */ +#define RSQR1_CLEAR_Mask ((uint32_t)0xFF0FFFFF) + +/* ADC JSQx mask */ +#define ISQR_JSQ_Set ((uint32_t)0x0000001F) + +/* ADC JL mask */ +#define ISQR_JL_Set ((uint32_t)0x00300000) +#define ISQR_JL_Reset ((uint32_t)0xFFCFFFFF) + +/* ADC SMPx mask */ +#define SAMPTR1_SMP_Set ((uint32_t)0x00000007) +#define SAMPTR2_SMP_Set ((uint32_t)0x00000007) + +/* ADC IDATARx registers offset */ +#define IDATAR_Offset ((uint8_t)0x28) + +/* ADC1 RDATAR register base address */ +#define RDATAR_ADDRESS ((uint32_t)0x4001244C) + +/********************************************************************* + * @fn ADC_DeInit + * + * @brief Deinitializes the ADCx peripheral registers to their default + * reset values. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return none + */ +void ADC_DeInit(ADC_TypeDef *ADCx) +{ + if(ADCx == ADC1) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, DISABLE); + } + else if(ADCx == ADC2) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, DISABLE); + } +} + +/********************************************************************* + * @fn ADC_Init + * + * @brief Initializes the ADCx peripheral according to the specified + * parameters in the ADC_InitStruct. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_InitStruct - pointer to an ADC_InitTypeDef structure that + * contains the configuration information for the specified ADC + * peripheral. + * + * @return none + */ +void ADC_Init(ADC_TypeDef *ADCx, ADC_InitTypeDef *ADC_InitStruct) +{ + uint32_t tmpreg1 = 0; + uint8_t tmpreg2 = 0; + + tmpreg1 = ADCx->CTLR1; + tmpreg1 &= CTLR1_CLEAR_Mask; + tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_Mode | (uint32_t)ADC_InitStruct->ADC_OutputBuffer | + (uint32_t)ADC_InitStruct->ADC_Pga | ((uint32_t)ADC_InitStruct->ADC_ScanConvMode << 8)); + ADCx->CTLR1 = tmpreg1; + + tmpreg1 = ADCx->CTLR2; + tmpreg1 &= CTLR2_CLEAR_Mask; + tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_DataAlign | ADC_InitStruct->ADC_ExternalTrigConv | + ((uint32_t)ADC_InitStruct->ADC_ContinuousConvMode << 1)); + ADCx->CTLR2 = tmpreg1; + + tmpreg1 = ADCx->RSQR1; + tmpreg1 &= RSQR1_CLEAR_Mask; + tmpreg2 |= (uint8_t)(ADC_InitStruct->ADC_NbrOfChannel - (uint8_t)1); + tmpreg1 |= (uint32_t)tmpreg2 << 20; + ADCx->RSQR1 = tmpreg1; +} + +/********************************************************************* + * @fn ADC_StructInit + * + * @brief Fills each ADC_InitStruct member with its default value. + * + * @param ADC_InitStruct - pointer to an ADC_InitTypeDef structure that + * contains the configuration information for the specified ADC + * peripheral. + * + * @return none + */ +void ADC_StructInit(ADC_InitTypeDef *ADC_InitStruct) +{ + ADC_InitStruct->ADC_Mode = ADC_Mode_Independent; + ADC_InitStruct->ADC_ScanConvMode = DISABLE; + ADC_InitStruct->ADC_ContinuousConvMode = DISABLE; + ADC_InitStruct->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; + ADC_InitStruct->ADC_DataAlign = ADC_DataAlign_Right; + ADC_InitStruct->ADC_NbrOfChannel = 1; +} + +/********************************************************************* + * @fn ADC_Cmd + * + * @brief Enables or disables the specified ADC peripheral. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void ADC_Cmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR2 |= CTLR2_ADON_Set; + } + else + { + ADCx->CTLR2 &= CTLR2_ADON_Reset; + } +} + +/********************************************************************* + * @fn ADC_DMACmd + * + * @brief Enables or disables the specified ADC DMA request. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void ADC_DMACmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR2 |= CTLR2_DMA_Set; + } + else + { + ADCx->CTLR2 &= CTLR2_DMA_Reset; + } +} + +/********************************************************************* + * @fn ADC_ITConfig + * + * @brief Enables or disables the specified ADC interrupts. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_IT - specifies the ADC interrupt sources to be enabled or disabled. + * ADC_IT_EOC - End of conversion interrupt mask. + * ADC_IT_AWD - Analog watchdog interrupt mask. + * ADC_IT_JEOC - End of injected conversion interrupt mask. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void ADC_ITConfig(ADC_TypeDef *ADCx, uint16_t ADC_IT, FunctionalState NewState) +{ + uint8_t itmask = 0; + + itmask = (uint8_t)ADC_IT; + + if(NewState != DISABLE) + { + ADCx->CTLR1 |= itmask; + } + else + { + ADCx->CTLR1 &= (~(uint32_t)itmask); + } +} + +/********************************************************************* + * @fn ADC_ResetCalibration + * + * @brief Resets the selected ADC calibration registers. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return none + */ +void ADC_ResetCalibration(ADC_TypeDef *ADCx) +{ + ADCx->CTLR2 |= CTLR2_RSTCAL_Set; +} + +/********************************************************************* + * @fn ADC_GetResetCalibrationStatus + * + * @brief Gets the selected ADC reset calibration registers status. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return FlagStatus: SET or RESET. + */ +FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef *ADCx) +{ + FlagStatus bitstatus = RESET; + + if((ADCx->CTLR2 & CTLR2_RSTCAL_Set) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ADC_StartCalibration + * + * @brief Starts the selected ADC calibration process. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return None + */ +void ADC_StartCalibration(ADC_TypeDef *ADCx) +{ + ADCx->CTLR2 |= CTLR2_CAL_Set; +} + +/********************************************************************* + * @fn ADC_GetCalibrationStatus + * + * @brief Gets the selected ADC calibration status. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return FlagStatus: SET or RESET. + */ +FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef *ADCx) +{ + FlagStatus bitstatus = RESET; + + if((ADCx->CTLR2 & CTLR2_CAL_Set) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ADC_SoftwareStartConvCmd + * + * @brief Enables or disables the selected ADC software start conversion. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_SoftwareStartConvCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR2 |= CTLR2_EXTTRIG_SWSTART_Set; + } + else + { + ADCx->CTLR2 &= CTLR2_EXTTRIG_SWSTART_Reset; + } +} + +/********************************************************************* + * @fn ADC_GetSoftwareStartConvStatus + * + * @brief Gets the selected ADC Software start conversion Status. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return FlagStatus - SET or RESET. + */ +FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef *ADCx) +{ + FlagStatus bitstatus = RESET; + + if((ADCx->CTLR2 & CTLR2_SWSTART_Set) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ADC_DiscModeChannelCountConfig + * + * @brief Configures the discontinuous mode for the selected ADC regular + * group channel. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * Number - specifies the discontinuous mode regular channel + * count value(1-8). + * + * @return None + */ +void ADC_DiscModeChannelCountConfig(ADC_TypeDef *ADCx, uint8_t Number) +{ + uint32_t tmpreg1 = 0; + uint32_t tmpreg2 = 0; + + tmpreg1 = ADCx->CTLR1; + tmpreg1 &= CTLR1_DISCNUM_Reset; + tmpreg2 = Number - 1; + tmpreg1 |= tmpreg2 << 13; + ADCx->CTLR1 = tmpreg1; +} + +/********************************************************************* + * @fn ADC_DiscModeCmd + * + * @brief Enables or disables the discontinuous mode on regular group + * channel for the specified ADC. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_DiscModeCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR1 |= CTLR1_DISCEN_Set; + } + else + { + ADCx->CTLR1 &= CTLR1_DISCEN_Reset; + } +} + +/********************************************************************* + * @fn ADC_RegularChannelConfig + * + * @brief Configures for the selected ADC regular channel its corresponding + * rank in the sequencer and its sample time. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_Channel - the ADC channel to configure. + * ADC_Channel_0 - ADC Channel0 selected. + * ADC_Channel_1 - ADC Channel1 selected. + * ADC_Channel_2 - ADC Channel2 selected. + * ADC_Channel_3 - ADC Channel3 selected. + * ADC_Channel_4 - ADC Channel4 selected. + * ADC_Channel_5 - ADC Channel5 selected. + * ADC_Channel_6 - ADC Channel6 selected. + * ADC_Channel_7 - ADC Channel7 selected. + * ADC_Channel_8 - ADC Channel8 selected. + * ADC_Channel_9 - ADC Channel9 selected. + * ADC_Channel_10 - ADC Channel10 selected. + * ADC_Channel_11 - ADC Channel11 selected. + * ADC_Channel_12 - ADC Channel12 selected. + * ADC_Channel_13 - ADC Channel13 selected. + * ADC_Channel_14 - ADC Channel14 selected. + * ADC_Channel_15 - ADC Channel15 selected. + * ADC_Channel_16 - ADC Channel16 selected. + * ADC_Channel_17 - ADC Channel17 selected. + * Rank - The rank in the regular group sequencer. + * This parameter must be between 1 to 16. + * ADC_SampleTime - The sample time value to be set for the selected channel. + * ADC_SampleTime_1Cycles5 - Sample time equal to 1.5 cycles. + * ADC_SampleTime_7Cycles5 - Sample time equal to 7.5 cycles. + * ADC_SampleTime_13Cycles5 - Sample time equal to 13.5 cycles. + * ADC_SampleTime_28Cycles5 - Sample time equal to 28.5 cycles. + * ADC_SampleTime_41Cycles5 - Sample time equal to 41.5 cycles. + * ADC_SampleTime_55Cycles5 - Sample time equal to 55.5 cycles. + * ADC_SampleTime_71Cycles5 - Sample time equal to 71.5 cycles. + * ADC_SampleTime_239Cycles5 - Sample time equal to 239.5 cycles. + * + * @return None + */ +void ADC_RegularChannelConfig(ADC_TypeDef *ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime) +{ + uint32_t tmpreg1 = 0, tmpreg2 = 0; + + if(ADC_Channel > ADC_Channel_9) + { + tmpreg1 = ADCx->SAMPTR1; + tmpreg2 = SAMPTR1_SMP_Set << (3 * (ADC_Channel - 10)); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * (ADC_Channel - 10)); + tmpreg1 |= tmpreg2; + ADCx->SAMPTR1 = tmpreg1; + } + else + { + tmpreg1 = ADCx->SAMPTR2; + tmpreg2 = SAMPTR2_SMP_Set << (3 * ADC_Channel); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel); + tmpreg1 |= tmpreg2; + ADCx->SAMPTR2 = tmpreg1; + } + + if(Rank < 7) + { + tmpreg1 = ADCx->RSQR3; + tmpreg2 = RSQR3_SQ_Set << (5 * (Rank - 1)); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 1)); + tmpreg1 |= tmpreg2; + ADCx->RSQR3 = tmpreg1; + } + else if(Rank < 13) + { + tmpreg1 = ADCx->RSQR2; + tmpreg2 = RSQR2_SQ_Set << (5 * (Rank - 7)); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 7)); + tmpreg1 |= tmpreg2; + ADCx->RSQR2 = tmpreg1; + } + else + { + tmpreg1 = ADCx->RSQR1; + tmpreg2 = RSQR1_SQ_Set << (5 * (Rank - 13)); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 13)); + tmpreg1 |= tmpreg2; + ADCx->RSQR1 = tmpreg1; + } +} + +/********************************************************************* + * @fn ADC_ExternalTrigConvCmd + * + * @brief Enables or disables the ADCx conversion through external trigger. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_ExternalTrigConvCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR2 |= CTLR2_EXTTRIG_Set; + } + else + { + ADCx->CTLR2 &= CTLR2_EXTTRIG_Reset; + } +} + +/********************************************************************* + * @fn ADC_GetConversionValue + * + * @brief Returns the last ADCx conversion result data for regular channel. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return ADCx->RDATAR - The Data conversion value. + */ +uint16_t ADC_GetConversionValue(ADC_TypeDef *ADCx) +{ + return (uint16_t)ADCx->RDATAR; +} + +/********************************************************************* + * @fn ADC_GetDualModeConversionValue + * + * @brief Returns the last ADC1 and ADC2 conversion result data in dual mode. + * + * @return RDATAR_ADDRESS - The Data conversion value. + */ +uint32_t ADC_GetDualModeConversionValue(void) +{ + return (*(__IO uint32_t *)RDATAR_ADDRESS); +} + +/********************************************************************* + * @fn ADC_AutoInjectedConvCmd + * + * @brief Enables or disables the selected ADC automatic injected group + * conversion after regular one. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_AutoInjectedConvCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR1 |= CTLR1_JAUTO_Set; + } + else + { + ADCx->CTLR1 &= CTLR1_JAUTO_Reset; + } +} + +/********************************************************************* + * @fn ADC_InjectedDiscModeCmd + * + * @brief Enables or disables the discontinuous mode for injected group + * channel for the specified ADC. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_InjectedDiscModeCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR1 |= CTLR1_JDISCEN_Set; + } + else + { + ADCx->CTLR1 &= CTLR1_JDISCEN_Reset; + } +} + +/********************************************************************* + * @fn ADC_ExternalTrigInjectedConvConfig + * + * @brief Configures the ADCx external trigger for injected channels conversion. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_ExternalTrigInjecConv - specifies the ADC trigger to start + * injected conversion. + * ADC_ExternalTrigInjecConv_T1_TRGO - Timer1 TRGO event selected. + * ADC_ExternalTrigInjecConv_T1_CC4 - Timer1 capture compare4 selected. + * ADC_ExternalTrigInjecConv_T2_TRGO - Timer2 TRGO event selected. + * ADC_ExternalTrigInjecConv_T2_CC1 - Timer2 capture compare1 selected. + * ADC_ExternalTrigInjecConv_T3_CC4 - Timer3 capture compare4 selected. + * ADC_ExternalTrigInjecConv_T4_TRGO - Timer4 TRGO event selected. + * ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4 - External interrupt + * line 15 event selected. + * ADC_ExternalTrigInjecConv_None: Injected conversion started + * by software and not by external trigger. + * + * @return None + */ +void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef *ADCx, uint32_t ADC_ExternalTrigInjecConv) +{ + uint32_t tmpreg = 0; + + tmpreg = ADCx->CTLR2; + tmpreg &= CTLR2_JEXTSEL_Reset; + tmpreg |= ADC_ExternalTrigInjecConv; + ADCx->CTLR2 = tmpreg; +} + +/********************************************************************* + * @fn ADC_ExternalTrigInjectedConvCmd + * + * @brief Enables or disables the ADCx injected channels conversion through + * external trigger. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR2 |= CTLR2_JEXTTRIG_Set; + } + else + { + ADCx->CTLR2 &= CTLR2_JEXTTRIG_Reset; + } +} + +/********************************************************************* + * @fn ADC_SoftwareStartInjectedConvCmd + * + * @brief Enables or disables the selected ADC start of the injected + * channels conversion. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return None + */ +void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR2 |= CTLR2_JEXTTRIG_JSWSTART_Set; + } + else + { + ADCx->CTLR2 &= CTLR2_JEXTTRIG_JSWSTART_Reset; + } +} + +/********************************************************************* + * @fn ADC_GetSoftwareStartInjectedConvCmdStatus + * + * @brief Gets the selected ADC Software start injected conversion Status. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return FlagStatus: SET or RESET. + */ +FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef *ADCx) +{ + FlagStatus bitstatus = RESET; + + if((ADCx->CTLR2 & CTLR2_JSWSTART_Set) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ADC_InjectedChannelConfig + * + * @brief Configures for the selected ADC injected channel its corresponding + * rank in the sequencer and its sample time. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_Channel - the ADC channel to configure. + * ADC_Channel_0 - ADC Channel0 selected. + * ADC_Channel_1 - ADC Channel1 selected. + * ADC_Channel_2 - ADC Channel2 selected. + * ADC_Channel_3 - ADC Channel3 selected. + * ADC_Channel_4 - ADC Channel4 selected. + * ADC_Channel_5 - ADC Channel5 selected. + * ADC_Channel_6 - ADC Channel6 selected. + * ADC_Channel_7 - ADC Channel7 selected. + * ADC_Channel_8 - ADC Channel8 selected. + * ADC_Channel_9 - ADC Channel9 selected. + * ADC_Channel_10 - ADC Channel10 selected. + * ADC_Channel_11 - ADC Channel11 selected. + * ADC_Channel_12 - ADC Channel12 selected. + * ADC_Channel_13 - ADC Channel13 selected. + * ADC_Channel_14 - ADC Channel14 selected. + * ADC_Channel_15 - ADC Channel15 selected. + * ADC_Channel_16 - ADC Channel16 selected. + * ADC_Channel_17 - ADC Channel17 selected. + * Rank - The rank in the regular group sequencer. + * This parameter must be between 1 to 4. + * ADC_SampleTime - The sample time value to be set for the selected channel. + * ADC_SampleTime_1Cycles5 - Sample time equal to 1.5 cycles. + * ADC_SampleTime_7Cycles5 - Sample time equal to 7.5 cycles. + * ADC_SampleTime_13Cycles5 - Sample time equal to 13.5 cycles. + * ADC_SampleTime_28Cycles5 - Sample time equal to 28.5 cycles. + * ADC_SampleTime_41Cycles5 - Sample time equal to 41.5 cycles. + * ADC_SampleTime_55Cycles5 - Sample time equal to 55.5 cycles. + * ADC_SampleTime_71Cycles5 - Sample time equal to 71.5 cycles. + * ADC_SampleTime_239Cycles5 - Sample time equal to 239.5 cycles. + * + * @return None + */ +void ADC_InjectedChannelConfig(ADC_TypeDef *ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime) +{ + uint32_t tmpreg1 = 0, tmpreg2 = 0, tmpreg3 = 0; + + if(ADC_Channel > ADC_Channel_9) + { + tmpreg1 = ADCx->SAMPTR1; + tmpreg2 = SAMPTR1_SMP_Set << (3 * (ADC_Channel - 10)); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * (ADC_Channel - 10)); + tmpreg1 |= tmpreg2; + ADCx->SAMPTR1 = tmpreg1; + } + else + { + tmpreg1 = ADCx->SAMPTR2; + tmpreg2 = SAMPTR2_SMP_Set << (3 * ADC_Channel); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel); + tmpreg1 |= tmpreg2; + ADCx->SAMPTR2 = tmpreg1; + } + + tmpreg1 = ADCx->ISQR; + tmpreg3 = (tmpreg1 & ISQR_JL_Set) >> 20; + tmpreg2 = ISQR_JSQ_Set << (5 * (uint8_t)((Rank + 3) - (tmpreg3 + 1))); + tmpreg1 &= ~tmpreg2; + tmpreg2 = (uint32_t)ADC_Channel << (5 * (uint8_t)((Rank + 3) - (tmpreg3 + 1))); + tmpreg1 |= tmpreg2; + ADCx->ISQR = tmpreg1; +} + +/********************************************************************* + * @fn ADC_InjectedSequencerLengthConfig + * + * @brief Configures the sequencer length for injected channels. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * Length - The sequencer length. + * This parameter must be a number between 1 to 4. + * + * @return None + */ +void ADC_InjectedSequencerLengthConfig(ADC_TypeDef *ADCx, uint8_t Length) +{ + uint32_t tmpreg1 = 0; + uint32_t tmpreg2 = 0; + + tmpreg1 = ADCx->ISQR; + tmpreg1 &= ISQR_JL_Reset; + tmpreg2 = Length - 1; + tmpreg1 |= tmpreg2 << 20; + ADCx->ISQR = tmpreg1; +} + +/********************************************************************* + * @fn ADC_SetInjectedOffset + * + * @brief Set the injected channels conversion value offset. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_InjectedChannel: the ADC injected channel to set its offset. + * ADC_InjectedChannel_1 - Injected Channel1 selected. + * ADC_InjectedChannel_2 - Injected Channel2 selected. + * ADC_InjectedChannel_3 - Injected Channel3 selected. + * ADC_InjectedChannel_4 - Injected Channel4 selected. + * Offset - the offset value for the selected ADC injected channel. + * This parameter must be a 12bit value. + * + * @return None + */ +void ADC_SetInjectedOffset(ADC_TypeDef *ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)ADCx; + tmp += ADC_InjectedChannel; + + *(__IO uint32_t *)tmp = (uint32_t)Offset; +} + +/********************************************************************* + * @fn ADC_GetInjectedConversionValue + * + * @brief Returns the ADC injected channel conversion result. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_InjectedChannel - the ADC injected channel to set its offset. + * ADC_InjectedChannel_1 - Injected Channel1 selected. + * ADC_InjectedChannel_2 - Injected Channel2 selected. + * ADC_InjectedChannel_3 - Injected Channel3 selected. + * ADC_InjectedChannel_4 - Injected Channel4 selected. + * + * @return tmp - The Data conversion value. + */ +uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef *ADCx, uint8_t ADC_InjectedChannel) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)ADCx; + tmp += ADC_InjectedChannel + IDATAR_Offset; + + return (uint16_t)(*(__IO uint32_t *)tmp); +} + +/********************************************************************* + * @fn ADC_AnalogWatchdogCmd + * + * @brief Enables or disables the analog watchdog on single/all regular + * or injected channels. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_AnalogWatchdog - the ADC analog watchdog configuration. + * ADC_AnalogWatchdog_SingleRegEnable - Analog watchdog on a + * single regular channel. + * ADC_AnalogWatchdog_SingleInjecEnable - Analog watchdog on a + * single injected channel. + * ADC_AnalogWatchdog_SingleRegOrInjecEnable - Analog watchdog + * on a single regular or injected channel. + * ADC_AnalogWatchdog_AllRegEnable - Analog watchdog on all + * regular channel. + * ADC_AnalogWatchdog_AllInjecEnable - Analog watchdog on all + * injected channel. + * ADC_AnalogWatchdog_AllRegAllInjecEnable - Analog watchdog on + * all regular and injected channels. + * ADC_AnalogWatchdog_None - No channel guarded by the analog + * watchdog. + * + * @return none + */ +void ADC_AnalogWatchdogCmd(ADC_TypeDef *ADCx, uint32_t ADC_AnalogWatchdog) +{ + uint32_t tmpreg = 0; + + tmpreg = ADCx->CTLR1; + tmpreg &= CTLR1_AWDMode_Reset; + tmpreg |= ADC_AnalogWatchdog; + ADCx->CTLR1 = tmpreg; +} + +/********************************************************************* + * @fn ADC_AnalogWatchdogThresholdsConfig + * + * @brief Configures the high and low thresholds of the analog watchdog. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * HighThreshold - the ADC analog watchdog High threshold value. + * This parameter must be a 12bit value. + * LowThreshold - the ADC analog watchdog Low threshold value. + * This parameter must be a 12bit value. + * + * @return none + */ +void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef *ADCx, uint16_t HighThreshold, + uint16_t LowThreshold) +{ + ADCx->WDHTR = HighThreshold; + ADCx->WDLTR = LowThreshold; +} + +/********************************************************************* + * @fn ADC_AnalogWatchdogSingleChannelConfig + * + * @brief Configures the analog watchdog guarded single channel. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_Channel - the ADC channel to configure. + * ADC_Channel_0 - ADC Channel0 selected. + * ADC_Channel_1 - ADC Channel1 selected. + * ADC_Channel_2 - ADC Channel2 selected. + * ADC_Channel_3 - ADC Channel3 selected. + * ADC_Channel_4 - ADC Channel4 selected. + * ADC_Channel_5 - ADC Channel5 selected. + * ADC_Channel_6 - ADC Channel6 selected. + * ADC_Channel_7 - ADC Channel7 selected. + * ADC_Channel_8 - ADC Channel8 selected. + * ADC_Channel_9 - ADC Channel9 selected. + * ADC_Channel_10 - ADC Channel10 selected. + * ADC_Channel_11 - ADC Channel11 selected. + * ADC_Channel_12 - ADC Channel12 selected. + * ADC_Channel_13 - ADC Channel13 selected. + * ADC_Channel_14 - ADC Channel14 selected. + * ADC_Channel_15 - ADC Channel15 selected. + * ADC_Channel_16 - ADC Channel16 selected. + * ADC_Channel_17 - ADC Channel17 selected. + * + * @return None + */ +void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef *ADCx, uint8_t ADC_Channel) +{ + uint32_t tmpreg = 0; + + tmpreg = ADCx->CTLR1; + tmpreg &= CTLR1_AWDCH_Reset; + tmpreg |= ADC_Channel; + ADCx->CTLR1 = tmpreg; +} + +/********************************************************************* + * @fn ADC_TempSensorVrefintCmd + * + * @brief Enables or disables the temperature sensor and Vrefint channel. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void ADC_TempSensorVrefintCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADC1->CTLR2 |= CTLR2_TSVREFE_Set; + } + else + { + ADC1->CTLR2 &= CTLR2_TSVREFE_Reset; + } +} + +/********************************************************************* + * @fn ADC_GetFlagStatus + * + * @brief Checks whether the specified ADC flag is set or not. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_FLAG - specifies the flag to check. + * ADC_FLAG_AWD - Analog watchdog flag. + * ADC_FLAG_EOC - End of conversion flag. + * ADC_FLAG_JEOC - End of injected group conversion flag. + * ADC_FLAG_JSTRT - Start of injected group conversion flag. + * ADC_FLAG_STRT - Start of regular group conversion flag. + * + * @return FlagStatus: SET or RESET. + */ +FlagStatus ADC_GetFlagStatus(ADC_TypeDef *ADCx, uint8_t ADC_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((ADCx->STATR & ADC_FLAG) != (uint8_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ADC_ClearFlag + * + * @brief Clears the ADCx's pending flags. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_FLAG - specifies the flag to clear. + * ADC_FLAG_AWD - Analog watchdog flag. + * ADC_FLAG_EOC - End of conversion flag. + * ADC_FLAG_JEOC - End of injected group conversion flag. + * ADC_FLAG_JSTRT - Start of injected group conversion flag. + * ADC_FLAG_STRT - Start of regular group conversion flag. + * + * @return none + */ +void ADC_ClearFlag(ADC_TypeDef *ADCx, uint8_t ADC_FLAG) +{ + ADCx->STATR = ~(uint32_t)ADC_FLAG; +} + +/********************************************************************* + * @fn ADC_GetITStatus + * + * @brief Checks whether the specified ADC interrupt has occurred or not. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_IT - specifies the ADC interrupt source to check. + * ADC_IT_EOC - End of conversion interrupt mask. + * ADC_IT_AWD - Analog watchdog interrupt mask. + * ADC_IT_JEOC - End of injected conversion interrupt mask. + * + * @return FlagStatus: SET or RESET. + */ +ITStatus ADC_GetITStatus(ADC_TypeDef *ADCx, uint16_t ADC_IT) +{ + ITStatus bitstatus = RESET; + uint32_t itmask = 0, enablestatus = 0; + + itmask = ADC_IT >> 8; + enablestatus = (ADCx->CTLR1 & (uint8_t)ADC_IT); + + if(((ADCx->STATR & itmask) != (uint32_t)RESET) && enablestatus) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ADC_ClearITPendingBit + * + * @brief Clears the ADCx's interrupt pending bits. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * ADC_IT - specifies the ADC interrupt pending bit to clear. + * ADC_IT_EOC - End of conversion interrupt mask. + * ADC_IT_AWD - Analog watchdog interrupt mask. + * ADC_IT_JEOC - End of injected conversion interrupt mask. + * + * @return none + */ +void ADC_ClearITPendingBit(ADC_TypeDef *ADCx, uint16_t ADC_IT) +{ + uint8_t itmask = 0; + + itmask = (uint8_t)(ADC_IT >> 8); + ADCx->STATR = ~(uint32_t)itmask; +} + +/********************************************************************* + * @fn TempSensor_Volt_To_Temper + * + * @brief Internal Temperature Sensor Voltage to temperature. + * + * @param Value - Voltage Value(mv). + * + * @return Temper - Temperature Value. + */ +s32 TempSensor_Volt_To_Temper(s32 Value) +{ + s32 Temper, Refer_Volt, Refer_Temper; + s32 k = 43; + + Refer_Volt = (s32)((*(u32 *)0x1FFFF720) & 0x0000FFFF); + Refer_Temper = (s32)(((*(u32 *)0x1FFFF720) >> 16) & 0x0000FFFF); + + Temper = Refer_Temper + ((Value - Refer_Volt) * 10 + (k >> 1)) / k; + + return Temper; +} + +/********************************************************************* + * @fn ADC_BufferCmd + * + * @brief Enables or disables the ADCx buffer. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void ADC_BufferCmd(ADC_TypeDef *ADCx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ADCx->CTLR1 |= (1 << 26); + } + else + { + ADCx->CTLR1 &= ~(1 << 26); + } +} + +/********************************************************************* + * @fn Get_CalibrationValue + * + * @brief Get ADCx Calibration Value. + * + * @param ADCx - where x can be 1 or 2 to select the ADC peripheral. + * + * @return CalibrationValue + */ +int16_t Get_CalibrationValue(ADC_TypeDef *ADCx) +{ + __IO uint8_t i, j; + uint16_t buf[10]; + __IO uint16_t t; + + for(i = 0; i < 10; i++) + { + ADC_ResetCalibration(ADCx); + while(ADC_GetResetCalibrationStatus(ADCx)) + ; + ADC_StartCalibration(ADCx); + while(ADC_GetCalibrationStatus(ADCx)) + ; + buf[i] = ADCx->RDATAR; + } + + for(i = 0; i < 10; i++) + { + for(j = 0; j < 9; j++) + { + if(buf[j] > buf[j + 1]) + { + t = buf[j]; + buf[j] = buf[j + 1]; + buf[j + 1] = t; + } + } + } + + t = 0; + for(i = 0; i < 6; i++) + { + t += buf[i + 2]; + } + + t = (t / 6) + ((t % 6) / 3); + + return (int16_t)(2048 - (int16_t)t); +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_bkp.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_bkp.c new file mode 100755 index 000000000..5462cf6ee --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_bkp.c @@ -0,0 +1,242 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_bkp.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the BKP firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_bkp.h" +#include "ch32v30x_rcc.h" + +/* BKP registers bit mask */ + +/* OCTLR register bit mask */ +#define OCTLR_CAL_MASK ((uint16_t)0xFF80) +#define OCTLR_MASK ((uint16_t)0xFC7F) + +/********************************************************************* + * @fn BKP_DeInit + * + * @brief Deinitializes the BKP peripheral registers to their default reset values. + * + * @return none + */ +void BKP_DeInit(void) +{ + RCC_BackupResetCmd(ENABLE); + RCC_BackupResetCmd(DISABLE); +} + +/********************************************************************* + * @fn BKP_TamperPinLevelConfig + * + * @brief Configures the Tamper Pin active level. + * + * @param BKP_TamperPinLevel: specifies the Tamper Pin active level. + * BKP_TamperPinLevel_High - Tamper pin active on high level. + * BKP_TamperPinLevel_Low - Tamper pin active on low level. + * + * @return none + */ +void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel) +{ + if(BKP_TamperPinLevel) + { + BKP->TPCTLR |= (1 << 1); + } + else + { + BKP->TPCTLR &= ~(1 << 1); + } +} + +/********************************************************************* + * @fn BKP_TamperPinCmd + * + * @brief Enables or disables the Tamper Pin activation. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void BKP_TamperPinCmd(FunctionalState NewState) +{ + if(NewState) + { + BKP->TPCTLR |= (1 << 0); + } + else + { + BKP->TPCTLR &= ~(1 << 0); + } +} + +/********************************************************************* + * @fn BKP_ITConfig + * + * @brief Enables or disables the Tamper Pin Interrupt. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void BKP_ITConfig(FunctionalState NewState) +{ + if(NewState) + { + BKP->TPCSR |= (1 << 2); + } + else + { + BKP->TPCSR &= ~(1 << 2); + } +} + +/********************************************************************* + * @fn BKP_RTCOutputConfig + * + * @brief Select the RTC output source to output on the Tamper pin. + * + * @param BKP_RTCOutputSource - specifies the RTC output source. + * BKP_RTCOutputSource_None - no RTC output on the Tamper pin. + * BKP_RTCOutputSource_CalibClock - output the RTC clock with + * frequency divided by 64 on the Tamper pin. + * BKP_RTCOutputSource_Alarm - output the RTC Alarm pulse signal + * on the Tamper pin. + * BKP_RTCOutputSource_Second - output the RTC Second pulse + * signal on the Tamper pin. + * + * @return none + */ +void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource) +{ + uint16_t tmpreg = 0; + + tmpreg = BKP->OCTLR; + tmpreg &= OCTLR_MASK; + tmpreg |= BKP_RTCOutputSource; + BKP->OCTLR = tmpreg; +} + +/********************************************************************* + * @fn BKP_SetRTCCalibrationValue + * + * @brief Sets RTC Clock Calibration value. + * + * @param CalibrationValue - specifies the RTC Clock Calibration value. + * This parameter must be a number between 0 and 0x1F. + * + * @return none + */ +void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue) +{ + uint16_t tmpreg = 0; + + tmpreg = BKP->OCTLR; + tmpreg &= OCTLR_CAL_MASK; + tmpreg |= CalibrationValue; + BKP->OCTLR = tmpreg; +} + +/********************************************************************* + * @fn BKP_WriteBackupRegister + * + * @brief Writes user data to the specified Data Backup Register. + * + * @param BKP_DR - specifies the Data Backup Register. + * Data - data to write. + * + * @return none + */ +void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)BKP_BASE; + tmp += BKP_DR; + *(__IO uint32_t *)tmp = Data; +} + +/********************************************************************* + * @fn BKP_ReadBackupRegister + * + * @brief Reads data from the specified Data Backup Register. + * + * @param BKP_DR - specifies the Data Backup Register. + * This parameter can be BKP_DRx where x=[1, 42]. + * + * @return none + */ +uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)BKP_BASE; + tmp += BKP_DR; + + return (*(__IO uint16_t *)tmp); +} + +/********************************************************************* + * @fn BKP_GetFlagStatus + * + * @brief Checks whether the Tamper Pin Event flag is set or not. + * + * @return FlagStatus - SET or RESET. + */ +FlagStatus BKP_GetFlagStatus(void) +{ + if(BKP->TPCSR & (1 << 8)) + { + return SET; + } + else + { + return RESET; + } +} + +/********************************************************************* + * @fn BKP_ClearFlag + * + * @brief Clears Tamper Pin Event pending flag. + * + * @return none + */ +void BKP_ClearFlag(void) +{ + BKP->TPCSR |= BKP_CTE; +} + +/********************************************************************* + * @fn BKP_GetITStatus + * + * @brief Checks whether the Tamper Pin Interrupt has occurred or not. + * + * @return ITStatus - SET or RESET. + */ +ITStatus BKP_GetITStatus(void) +{ + if(BKP->TPCSR & (1 << 9)) + { + return SET; + } + else + { + return RESET; + } +} + +/********************************************************************* + * @fn BKP_ClearITPendingBit + * + * @brief Clears Tamper Pin Interrupt pending bit. + * + * @return none + */ +void BKP_ClearITPendingBit(void) +{ + BKP->TPCSR |= BKP_CTI; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_can.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_can.c new file mode 100755 index 000000000..993803d3f --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_can.c @@ -0,0 +1,1207 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_can.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the CAN firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_can.h" +#include "ch32v30x_rcc.h" + +/* CAN CTLR Register bits */ +#define CTLR_DBF ((uint32_t)0x00010000) + +/* CAN Mailbox Transmit Request */ +#define TMIDxR_TXRQ ((uint32_t)0x00000001) + +/* CAN FCTLR Register bits */ +#define FCTLR_FINIT ((uint32_t)0x00000001) + +/* Time out for INAK bit */ +#define INAK_TIMEOUT ((uint32_t)0x0000FFFF) +/* Time out for SLAK bit */ +#define SLAK_TIMEOUT ((uint32_t)0x0000FFFF) + +/* Flags in TSTATR register */ +#define CAN_FLAGS_TSTATR ((uint32_t)0x08000000) +/* Flags in RFIFO1 register */ +#define CAN_FLAGS_RFIFO1 ((uint32_t)0x04000000) +/* Flags in RFIFO0 register */ +#define CAN_FLAGS_RFIFO0 ((uint32_t)0x02000000) +/* Flags in STATR register */ +#define CAN_FLAGS_STATR ((uint32_t)0x01000000) +/* Flags in ERRSR register */ +#define CAN_FLAGS_ERRSR ((uint32_t)0x00F00000) + +/* Mailboxes definition */ +#define CAN_TXMAILBOX_0 ((uint8_t)0x00) +#define CAN_TXMAILBOX_1 ((uint8_t)0x01) +#define CAN_TXMAILBOX_2 ((uint8_t)0x02) + +#define CAN_MODE_MASK ((uint32_t)0x00000003) + +static ITStatus CheckITStatus(uint32_t CAN_Reg, uint32_t It_Bit); + +/********************************************************************* + * @fn CAN_DeInit + * + * @brief Deinitializes the CAN peripheral registers to their default reset + * values. + * + * @param CANx - where x can be 1 or 2 to select the CAN peripheral. + * + * @return none + */ +void CAN_DeInit(CAN_TypeDef *CANx) +{ + if(CANx == CAN1) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN1, DISABLE); + } + else + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_CAN2, DISABLE); + } +} + +/********************************************************************* + * @fn CAN_Init + * + * @brief Initializes the CAN peripheral according to the specified + * parameters in the CAN_InitStruct. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_InitStruct - pointer to a CAN_InitTypeDef structure that + * contains the configuration information for the CAN peripheral. + * + * @return InitStatus - CAN InitStatus state. + * CAN_InitStatus_Failed. + * CAN_InitStatus_Success. + */ +uint8_t CAN_Init(CAN_TypeDef *CANx, CAN_InitTypeDef *CAN_InitStruct) +{ + uint8_t InitStatus = CAN_InitStatus_Failed; + uint32_t wait_ack = 0x00000000; + + CANx->CTLR &= (~(uint32_t)CAN_CTLR_SLEEP); + CANx->CTLR |= CAN_CTLR_INRQ; + + while(((CANx->STATR & CAN_STATR_INAK) != CAN_STATR_INAK) && (wait_ack != INAK_TIMEOUT)) + { + wait_ack++; + } + + if((CANx->STATR & CAN_STATR_INAK) != CAN_STATR_INAK) + { + InitStatus = CAN_InitStatus_Failed; + } + else + { + if(CAN_InitStruct->CAN_TTCM == ENABLE) + { + CANx->CTLR |= CAN_CTLR_TTCM; + } + else + { + CANx->CTLR &= ~(uint32_t)CAN_CTLR_TTCM; + } + + if(CAN_InitStruct->CAN_ABOM == ENABLE) + { + CANx->CTLR |= CAN_CTLR_ABOM; + } + else + { + CANx->CTLR &= ~(uint32_t)CAN_CTLR_ABOM; + } + + if(CAN_InitStruct->CAN_AWUM == ENABLE) + { + CANx->CTLR |= CAN_CTLR_AWUM; + } + else + { + CANx->CTLR &= ~(uint32_t)CAN_CTLR_AWUM; + } + + if(CAN_InitStruct->CAN_NART == ENABLE) + { + CANx->CTLR |= CAN_CTLR_NART; + } + else + { + CANx->CTLR &= ~(uint32_t)CAN_CTLR_NART; + } + + if(CAN_InitStruct->CAN_RFLM == ENABLE) + { + CANx->CTLR |= CAN_CTLR_RFLM; + } + else + { + CANx->CTLR &= ~(uint32_t)CAN_CTLR_RFLM; + } + + if(CAN_InitStruct->CAN_TXFP == ENABLE) + { + CANx->CTLR |= CAN_CTLR_TXFP; + } + else + { + CANx->CTLR &= ~(uint32_t)CAN_CTLR_TXFP; + } + + CANx->BTIMR = (uint32_t)((uint32_t)CAN_InitStruct->CAN_Mode << 30) | + ((uint32_t)CAN_InitStruct->CAN_SJW << 24) | + ((uint32_t)CAN_InitStruct->CAN_BS1 << 16) | + ((uint32_t)CAN_InitStruct->CAN_BS2 << 20) | + ((uint32_t)CAN_InitStruct->CAN_Prescaler - 1); + CANx->CTLR &= ~(uint32_t)CAN_CTLR_INRQ; + wait_ack = 0; + + while(((CANx->STATR & CAN_STATR_INAK) == CAN_STATR_INAK) && (wait_ack != INAK_TIMEOUT)) + { + wait_ack++; + } + + if((CANx->STATR & CAN_STATR_INAK) == CAN_STATR_INAK) + { + InitStatus = CAN_InitStatus_Failed; + } + else + { + InitStatus = CAN_InitStatus_Success; + } + } + + return InitStatus; +} + +/********************************************************************* + * @fn CAN_FilterInit + * + * @brief Initializes the CAN peripheral according to the specified + * parameters in the CAN_FilterInitStruct. + * + * @param CAN_FilterInitStruct - pointer to a CAN_FilterInitTypeDef + * structure that contains the configuration information. + * + * @return none + */ +void CAN_FilterInit(CAN_FilterInitTypeDef *CAN_FilterInitStruct) +{ + uint32_t filter_number_bit_pos = 0; + + filter_number_bit_pos = ((uint32_t)1) << CAN_FilterInitStruct->CAN_FilterNumber; + CAN1->FCTLR |= FCTLR_FINIT; + CAN1->FWR &= ~(uint32_t)filter_number_bit_pos; + + if(CAN_FilterInitStruct->CAN_FilterScale == CAN_FilterScale_16bit) + { + CAN1->FSCFGR &= ~(uint32_t)filter_number_bit_pos; + + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR1 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdLow) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdLow); + + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR2 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdHigh) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdHigh); + } + + if(CAN_FilterInitStruct->CAN_FilterScale == CAN_FilterScale_32bit) + { + CAN1->FSCFGR |= filter_number_bit_pos; + + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR1 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdHigh) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterIdLow); + + CAN1->sFilterRegister[CAN_FilterInitStruct->CAN_FilterNumber].FR2 = + ((0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdHigh) << 16) | + (0x0000FFFF & (uint32_t)CAN_FilterInitStruct->CAN_FilterMaskIdLow); + } + + if(CAN_FilterInitStruct->CAN_FilterMode == CAN_FilterMode_IdMask) + { + CAN1->FMCFGR &= ~(uint32_t)filter_number_bit_pos; + } + else + { + CAN1->FMCFGR |= (uint32_t)filter_number_bit_pos; + } + + if(CAN_FilterInitStruct->CAN_FilterFIFOAssignment == CAN_Filter_FIFO0) + { + CAN1->FAFIFOR &= ~(uint32_t)filter_number_bit_pos; + } + + if(CAN_FilterInitStruct->CAN_FilterFIFOAssignment == CAN_Filter_FIFO1) + { + CAN1->FAFIFOR |= (uint32_t)filter_number_bit_pos; + } + + if(CAN_FilterInitStruct->CAN_FilterActivation == ENABLE) + { + CAN1->FWR |= filter_number_bit_pos; + } + + CAN1->FCTLR &= ~FCTLR_FINIT; +} + +/********************************************************************* + * @fn CAN_StructInit + * + * @brief Fills each CAN_InitStruct member with its default value. + * + * @param CAN_InitStruct - pointer to a CAN_InitTypeDef structure which + * will be initialized. + * + * @return none + */ +void CAN_StructInit(CAN_InitTypeDef *CAN_InitStruct) +{ + CAN_InitStruct->CAN_TTCM = DISABLE; + CAN_InitStruct->CAN_ABOM = DISABLE; + CAN_InitStruct->CAN_AWUM = DISABLE; + CAN_InitStruct->CAN_NART = DISABLE; + CAN_InitStruct->CAN_RFLM = DISABLE; + CAN_InitStruct->CAN_TXFP = DISABLE; + CAN_InitStruct->CAN_Mode = CAN_Mode_Normal; + CAN_InitStruct->CAN_SJW = CAN_SJW_1tq; + CAN_InitStruct->CAN_BS1 = CAN_BS1_4tq; + CAN_InitStruct->CAN_BS2 = CAN_BS2_3tq; + CAN_InitStruct->CAN_Prescaler = 1; +} + +/********************************************************************* + * @fn CAN_SlaveStartBank + * + * @brief This function applies only to CH32 Connectivity line devices. + * + * @param CAN_BankNumber - Select the start slave bank filter from 1..27. + * + * @return none + */ +void CAN_SlaveStartBank(uint8_t CAN_BankNumber) +{ + CAN1->FCTLR |= FCTLR_FINIT; + CAN1->FCTLR &= (uint32_t)0xFFFFC0F1; + CAN1->FCTLR |= (uint32_t)(CAN_BankNumber) << 8; + CAN1->FCTLR &= ~FCTLR_FINIT; +} + +/********************************************************************* + * @fn CAN_DBGFreeze + * + * @brief Enables or disables the DBG Freeze for CAN. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void CAN_DBGFreeze(CAN_TypeDef *CANx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + CANx->CTLR |= CTLR_DBF; + } + else + { + CANx->CTLR &= ~CTLR_DBF; + } +} + +/********************************************************************* + * @fn CAN_TTComModeCmd + * + * @brief Enables or disabes the CAN Time TriggerOperation communication mode. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void CAN_TTComModeCmd(CAN_TypeDef *CANx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + CANx->CTLR |= CAN_CTLR_TTCM; + + CANx->sTxMailBox[0].TXMDTR |= ((uint32_t)CAN_TXMDT0R_TGT); + CANx->sTxMailBox[1].TXMDTR |= ((uint32_t)CAN_TXMDT1R_TGT); + CANx->sTxMailBox[2].TXMDTR |= ((uint32_t)CAN_TXMDT2R_TGT); + } + else + { + CANx->CTLR &= (uint32_t)(~(uint32_t)CAN_CTLR_TTCM); + + CANx->sTxMailBox[0].TXMDTR &= ((uint32_t)~CAN_TXMDT0R_TGT); + CANx->sTxMailBox[1].TXMDTR &= ((uint32_t)~CAN_TXMDT1R_TGT); + CANx->sTxMailBox[2].TXMDTR &= ((uint32_t)~CAN_TXMDT2R_TGT); + } +} + +/********************************************************************* + * @fn CAN_Transmit + * + * @brief Initiates the transmission of a message. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * TxMessage - pointer to a structure which contains CAN Id, CAN + * DLC and CAN data. + * + * @return transmit_mailbox - The number of the mailbox that is used for + * transmission or CAN_TxStatus_NoMailBox if there is no empty mailbox. + */ +uint8_t CAN_Transmit(CAN_TypeDef *CANx, CanTxMsg *TxMessage) +{ + uint8_t transmit_mailbox = 0; + + if((CANx->TSTATR & CAN_TSTATR_TME0) == CAN_TSTATR_TME0) + { + transmit_mailbox = 0; + } + else if((CANx->TSTATR & CAN_TSTATR_TME1) == CAN_TSTATR_TME1) + { + transmit_mailbox = 1; + } + else if((CANx->TSTATR & CAN_TSTATR_TME2) == CAN_TSTATR_TME2) + { + transmit_mailbox = 2; + } + else + { + transmit_mailbox = CAN_TxStatus_NoMailBox; + } + + if(transmit_mailbox != CAN_TxStatus_NoMailBox) + { + CANx->sTxMailBox[transmit_mailbox].TXMIR &= TMIDxR_TXRQ; + if(TxMessage->IDE == CAN_Id_Standard) + { + CANx->sTxMailBox[transmit_mailbox].TXMIR |= ((TxMessage->StdId << 21) | + TxMessage->RTR); + } + else + { + CANx->sTxMailBox[transmit_mailbox].TXMIR |= ((TxMessage->ExtId << 3) | + TxMessage->IDE | + TxMessage->RTR); + } + + TxMessage->DLC &= (uint8_t)0x0000000F; + CANx->sTxMailBox[transmit_mailbox].TXMDTR &= (uint32_t)0xFFFFFFF0; + CANx->sTxMailBox[transmit_mailbox].TXMDTR |= TxMessage->DLC; + + CANx->sTxMailBox[transmit_mailbox].TXMDLR = (((uint32_t)TxMessage->Data[3] << 24) | + ((uint32_t)TxMessage->Data[2] << 16) | + ((uint32_t)TxMessage->Data[1] << 8) | + ((uint32_t)TxMessage->Data[0])); + CANx->sTxMailBox[transmit_mailbox].TXMDHR = (((uint32_t)TxMessage->Data[7] << 24) | + ((uint32_t)TxMessage->Data[6] << 16) | + ((uint32_t)TxMessage->Data[5] << 8) | + ((uint32_t)TxMessage->Data[4])); + CANx->sTxMailBox[transmit_mailbox].TXMIR |= TMIDxR_TXRQ; + } + + return transmit_mailbox; +} + +/********************************************************************* + * @fn CAN_TransmitStatus + * + * @brief Checks the transmission of a message. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * TransmitMailbox - the number of the mailbox that is used for + * transmission. + * + * @return state - + * CAN_TxStatus_Ok. + * CAN_TxStatus_Failed. + */ +uint8_t CAN_TransmitStatus(CAN_TypeDef *CANx, uint8_t TransmitMailbox) +{ + uint32_t state = 0; + + switch(TransmitMailbox) + { + case(CAN_TXMAILBOX_0): + state = CANx->TSTATR & (CAN_TSTATR_RQCP0 | CAN_TSTATR_TXOK0 | CAN_TSTATR_TME0); + break; + + case(CAN_TXMAILBOX_1): + state = CANx->TSTATR & (CAN_TSTATR_RQCP1 | CAN_TSTATR_TXOK1 | CAN_TSTATR_TME1); + break; + + case(CAN_TXMAILBOX_2): + state = CANx->TSTATR & (CAN_TSTATR_RQCP2 | CAN_TSTATR_TXOK2 | CAN_TSTATR_TME2); + break; + + default: + state = CAN_TxStatus_Failed; + break; + } + + switch(state) + { + case(0x0): + state = CAN_TxStatus_Pending; + break; + + case(CAN_TSTATR_RQCP0 | CAN_TSTATR_TME0): + state = CAN_TxStatus_Failed; + break; + + case(CAN_TSTATR_RQCP1 | CAN_TSTATR_TME1): + state = CAN_TxStatus_Failed; + break; + + case(CAN_TSTATR_RQCP2 | CAN_TSTATR_TME2): + state = CAN_TxStatus_Failed; + break; + + case(CAN_TSTATR_RQCP0 | CAN_TSTATR_TXOK0 | CAN_TSTATR_TME0): + state = CAN_TxStatus_Ok; + break; + + case(CAN_TSTATR_RQCP1 | CAN_TSTATR_TXOK1 | CAN_TSTATR_TME1): + state = CAN_TxStatus_Ok; + break; + + case(CAN_TSTATR_RQCP2 | CAN_TSTATR_TXOK2 | CAN_TSTATR_TME2): + state = CAN_TxStatus_Ok; + break; + + default: + state = CAN_TxStatus_Failed; + break; + } + + return (uint8_t)state; +} + +/********************************************************************* + * @fn CAN_CancelTransmit + * + * @brief Cancels a transmit request. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * Mailbox - Mailbox number. + * CAN_TXMAILBOX_0. + * CAN_TXMAILBOX_1. + * CAN_TXMAILBOX_2. + * + * @return none + */ +void CAN_CancelTransmit(CAN_TypeDef *CANx, uint8_t Mailbox) +{ + switch(Mailbox) + { + case(CAN_TXMAILBOX_0): + CANx->TSTATR |= CAN_TSTATR_ABRQ0; + break; + + case(CAN_TXMAILBOX_1): + CANx->TSTATR |= CAN_TSTATR_ABRQ1; + break; + + case(CAN_TXMAILBOX_2): + CANx->TSTATR |= CAN_TSTATR_ABRQ2; + break; + + default: + break; + } +} + +/********************************************************************* + * @fn CAN_Receive + * + * @brief Receives a message. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * FIFONumber - Receive FIFO number. + * CAN_FIFO0. + * CAN_FIFO1. + * RxMessage - pointer to a structure receive message which contains + * CAN Id, CAN DLC, CAN datas and FMI number. + * + * @return none + */ +void CAN_Receive(CAN_TypeDef *CANx, uint8_t FIFONumber, CanRxMsg *RxMessage) +{ + RxMessage->IDE = (uint8_t)0x04 & CANx->sFIFOMailBox[FIFONumber].RXMIR; + + if(RxMessage->IDE == CAN_Id_Standard) + { + RxMessage->StdId = (uint32_t)0x000007FF & (CANx->sFIFOMailBox[FIFONumber].RXMIR >> 21); + } + else + { + RxMessage->ExtId = (uint32_t)0x1FFFFFFF & (CANx->sFIFOMailBox[FIFONumber].RXMIR >> 3); + } + + RxMessage->RTR = (uint8_t)0x02 & CANx->sFIFOMailBox[FIFONumber].RXMIR; + RxMessage->DLC = (uint8_t)0x0F & CANx->sFIFOMailBox[FIFONumber].RXMDTR; + RxMessage->FMI = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDTR >> 8); + RxMessage->Data[0] = (uint8_t)0xFF & CANx->sFIFOMailBox[FIFONumber].RXMDLR; + RxMessage->Data[1] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDLR >> 8); + RxMessage->Data[2] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDLR >> 16); + RxMessage->Data[3] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDLR >> 24); + RxMessage->Data[4] = (uint8_t)0xFF & CANx->sFIFOMailBox[FIFONumber].RXMDHR; + RxMessage->Data[5] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDHR >> 8); + RxMessage->Data[6] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDHR >> 16); + RxMessage->Data[7] = (uint8_t)0xFF & (CANx->sFIFOMailBox[FIFONumber].RXMDHR >> 24); + + if(FIFONumber == CAN_FIFO0) + { + CANx->RFIFO0 |= CAN_RFIFO0_RFOM0; + } + else + { + CANx->RFIFO1 |= CAN_RFIFO1_RFOM1; + } +} + +/********************************************************************* + * @fn CAN_FIFORelease + * + * @brief Releases the specified FIFO. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * FIFONumber - Receive FIFO number. + * CAN_FIFO0. + * CAN_FIFO1. + * + * @return none + */ +void CAN_FIFORelease(CAN_TypeDef *CANx, uint8_t FIFONumber) +{ + if(FIFONumber == CAN_FIFO0) + { + CANx->RFIFO0 |= CAN_RFIFO0_RFOM0; + } + else + { + CANx->RFIFO1 |= CAN_RFIFO1_RFOM1; + } +} + +/********************************************************************* + * @fn CAN_MessagePending + * + * @brief Returns the number of pending messages. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * FIFONumber - Receive FIFO number. + * CAN_FIFO0. + * CAN_FIFO1. + * + * @return message_pending: which is the number of pending message. + */ +uint8_t CAN_MessagePending(CAN_TypeDef *CANx, uint8_t FIFONumber) +{ + uint8_t message_pending = 0; + + if(FIFONumber == CAN_FIFO0) + { + message_pending = (uint8_t)(CANx->RFIFO0 & (uint32_t)0x03); + } + else if(FIFONumber == CAN_FIFO1) + { + message_pending = (uint8_t)(CANx->RFIFO1 & (uint32_t)0x03); + } + else + { + message_pending = 0; + } + + return message_pending; +} + +/********************************************************************* + * @fn CAN_OperatingModeRequest + * + * @brief Select the CAN Operation mode. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_OperatingMode - CAN Operating Mode. + * CAN_OperatingMode_Initialization. + * CAN_OperatingMode_Normal. + * CAN_OperatingMode_Sleep. + * + * @return status - + * CAN_ModeStatus_Failed - CAN failed entering the specific mode. + * CAN_ModeStatus_Success - CAN Succeed entering the specific mode. + */ +uint8_t CAN_OperatingModeRequest(CAN_TypeDef *CANx, uint8_t CAN_OperatingMode) +{ + uint8_t status = CAN_ModeStatus_Failed; + uint32_t timeout = INAK_TIMEOUT; + + if(CAN_OperatingMode == CAN_OperatingMode_Initialization) + { + CANx->CTLR = (uint32_t)((CANx->CTLR & (uint32_t)(~(uint32_t)CAN_CTLR_SLEEP)) | CAN_CTLR_INRQ); + + while(((CANx->STATR & CAN_MODE_MASK) != CAN_STATR_INAK) && (timeout != 0)) + { + timeout--; + } + if((CANx->STATR & CAN_MODE_MASK) != CAN_STATR_INAK) + { + status = CAN_ModeStatus_Failed; + } + else + { + status = CAN_ModeStatus_Success; + } + } + else if(CAN_OperatingMode == CAN_OperatingMode_Normal) + { + CANx->CTLR &= (uint32_t)(~(CAN_CTLR_SLEEP | CAN_CTLR_INRQ)); + + while(((CANx->STATR & CAN_MODE_MASK) != 0) && (timeout != 0)) + { + timeout--; + } + if((CANx->STATR & CAN_MODE_MASK) != 0) + { + status = CAN_ModeStatus_Failed; + } + else + { + status = CAN_ModeStatus_Success; + } + } + else if(CAN_OperatingMode == CAN_OperatingMode_Sleep) + { + CANx->CTLR = (uint32_t)((CANx->CTLR & (uint32_t)(~(uint32_t)CAN_CTLR_INRQ)) | CAN_CTLR_SLEEP); + + while(((CANx->STATR & CAN_MODE_MASK) != CAN_STATR_SLAK) && (timeout != 0)) + { + timeout--; + } + if((CANx->STATR & CAN_MODE_MASK) != CAN_STATR_SLAK) + { + status = CAN_ModeStatus_Failed; + } + else + { + status = CAN_ModeStatus_Success; + } + } + else + { + status = CAN_ModeStatus_Failed; + } + + return (uint8_t)status; +} + +/********************************************************************* + * @fn CAN_Sleep + * + * @brief Enters the low power mode. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * + * @return sleepstatus - + * CAN_Sleep_Ok. + * CAN_Sleep_Failed. + */ +uint8_t CAN_Sleep(CAN_TypeDef *CANx) +{ + uint8_t sleepstatus = CAN_Sleep_Failed; + + CANx->CTLR = (((CANx->CTLR) & (uint32_t)(~(uint32_t)CAN_CTLR_INRQ)) | CAN_CTLR_SLEEP); + + if((CANx->STATR & (CAN_STATR_SLAK | CAN_STATR_INAK)) == CAN_STATR_SLAK) + { + sleepstatus = CAN_Sleep_Ok; + } + + return (uint8_t)sleepstatus; +} + +/********************************************************************* + * @fn CAN_WakeUp + * + * @brief Wakes the CAN up. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * + * @return wakeupstatus - + * CAN_WakeUp_Ok. + * CAN_WakeUp_Failed. + */ +uint8_t CAN_WakeUp(CAN_TypeDef *CANx) +{ + uint32_t wait_slak = SLAK_TIMEOUT; + uint8_t wakeupstatus = CAN_WakeUp_Failed; + + CANx->CTLR &= ~(uint32_t)CAN_CTLR_SLEEP; + + while(((CANx->STATR & CAN_STATR_SLAK) == CAN_STATR_SLAK) && (wait_slak != 0x00)) + { + wait_slak--; + } + if((CANx->STATR & CAN_STATR_SLAK) != CAN_STATR_SLAK) + { + wakeupstatus = CAN_WakeUp_Ok; + } + + return (uint8_t)wakeupstatus; +} + +/********************************************************************* + * @fn CAN_GetLastErrorCode + * + * @brief Returns the CANx's last error code (LEC). + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * + * @return errorcode - specifies the Error code. + * CAN_ErrorCode_NoErr - No Error. + * CAN_ErrorCode_StuffErr - Stuff Error. + * CAN_ErrorCode_FormErr - Form Error. + * CAN_ErrorCode_ACKErr - Acknowledgment Error. + * CAN_ErrorCode_BitRecessiveErr - Bit Recessive Error. + * CAN_ErrorCode_BitDominantErr - Bit Dominant Error. + * CAN_ErrorCode_CRCErr - CRC Error. + * CAN_ErrorCode_SoftwareSetErr - Software Set Error. + */ +uint8_t CAN_GetLastErrorCode(CAN_TypeDef *CANx) +{ + uint8_t errorcode = 0; + + errorcode = (((uint8_t)CANx->ERRSR) & (uint8_t)CAN_ERRSR_LEC); + + return errorcode; +} + +/********************************************************************* + * @fn CAN_GetReceiveErrorCounter + * + * @brief Returns the CANx Receive Error Counter (REC). + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * + * @return counter - CAN Receive Error Counter. + */ +uint8_t CAN_GetReceiveErrorCounter(CAN_TypeDef *CANx) +{ + uint8_t counter = 0; + + counter = (uint8_t)((CANx->ERRSR & CAN_ERRSR_REC) >> 24); + + return counter; +} + +/********************************************************************* + * @fn CAN_GetLSBTransmitErrorCounter + * + * @brief Returns the LSB of the 9-bit CANx Transmit Error Counter(TEC). + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * + * @return counter - LSB of the 9-bit CAN Transmit Error Counter. + */ +uint8_t CAN_GetLSBTransmitErrorCounter(CAN_TypeDef *CANx) +{ + uint8_t counter = 0; + + counter = (uint8_t)((CANx->ERRSR & CAN_ERRSR_TEC) >> 16); + + return counter; +} + +/********************************************************************* + * @fn CAN_ITConfig + * + * @brief Enables or disables the specified CANx interrupts. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_IT - specifies the CAN interrupt sources to be enabled or disabled. + * CAN_IT_TME. + * CAN_IT_FMP0. + * CAN_IT_FF0. + * CAN_IT_FOV0. + * CAN_IT_FMP1. + * CAN_IT_FF1. + * CAN_IT_FOV1. + * CAN_IT_EWG. + * CAN_IT_EPV. + * CAN_IT_LEC. + * CAN_IT_ERR. + * CAN_IT_WKU. + * CAN_IT_SLK. + * NewState - ENABLE or DISABLE. + * + * @return counter - LSB of the 9-bit CAN Transmit Error Counter. + */ +void CAN_ITConfig(CAN_TypeDef *CANx, uint32_t CAN_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + CANx->INTENR |= CAN_IT; + } + else + { + CANx->INTENR &= ~CAN_IT; + } +} + +/********************************************************************* + * @fn CAN_GetFlagStatus + * + * @brief Checks whether the specified CAN flag is set or not. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_FLAG - specifies the flag to check. + * CAN_FLAG_EWG. + * CAN_FLAG_EPV. + * CAN_FLAG_BOF. + * CAN_FLAG_RQCP0. + * CAN_FLAG_RQCP1. + * CAN_FLAG_RQCP2. + * CAN_FLAG_FMP1. + * CAN_FLAG_FF1. + * CAN_FLAG_FOV1. + * CAN_FLAG_FMP0. + * CAN_FLAG_FF0. + * CAN_FLAG_FOV0. + * CAN_FLAG_WKU. + * CAN_FLAG_SLAK. + * CAN_FLAG_LEC. + * NewState - ENABLE or DISABLE. + * + * @return FlagStatus - SET or RESET. + */ +FlagStatus CAN_GetFlagStatus(CAN_TypeDef *CANx, uint32_t CAN_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((CAN_FLAG & CAN_FLAGS_ERRSR) != (uint32_t)RESET) + { + if((CANx->ERRSR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else if((CAN_FLAG & CAN_FLAGS_STATR) != (uint32_t)RESET) + { + if((CANx->STATR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else if((CAN_FLAG & CAN_FLAGS_TSTATR) != (uint32_t)RESET) + { + if((CANx->TSTATR & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else if((CAN_FLAG & CAN_FLAGS_RFIFO0) != (uint32_t)RESET) + { + if((CANx->RFIFO0 & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else + { + if((uint32_t)(CANx->RFIFO1 & (CAN_FLAG & 0x000FFFFF)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + + return bitstatus; +} + +/********************************************************************* + * @fn CAN_ClearFlag + * + * @brief Clears the CAN's pending flags. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_FLAG - specifies the flag to clear. + * CAN_FLAG_RQCP0. + * CAN_FLAG_RQCP1. + * CAN_FLAG_RQCP2. + * CAN_FLAG_FF1. + * CAN_FLAG_FOV1. + * CAN_FLAG_FF0. + * CAN_FLAG_FOV0. + * CAN_FLAG_WKU. + * CAN_FLAG_SLAK. + * CAN_FLAG_LEC. + * + * @return none + */ +void CAN_ClearFlag(CAN_TypeDef *CANx, uint32_t CAN_FLAG) +{ + uint32_t flagtmp = 0; + + if(CAN_FLAG == CAN_FLAG_LEC) + { + CANx->ERRSR = (uint32_t)RESET; + } + else + { + flagtmp = CAN_FLAG & 0x000FFFFF; + + if((CAN_FLAG & CAN_FLAGS_RFIFO0) != (uint32_t)RESET) + { + CANx->RFIFO0 = (uint32_t)(flagtmp); + } + else if((CAN_FLAG & CAN_FLAGS_RFIFO1) != (uint32_t)RESET) + { + CANx->RFIFO1 = (uint32_t)(flagtmp); + } + else if((CAN_FLAG & CAN_FLAGS_TSTATR) != (uint32_t)RESET) + { + CANx->TSTATR = (uint32_t)(flagtmp); + } + else + { + CANx->STATR = (uint32_t)(flagtmp); + } + } +} + +/********************************************************************* + * @fn CAN_GetITStatus + * + * @brief Checks whether the specified CANx interrupt has occurred or not. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_IT - specifies the CAN interrupt source to check. + * CAN_IT_TME. + * CAN_IT_FMP0. + * CAN_IT_FF0. + * CAN_IT_FOV0. + * CAN_IT_FMP1. + * CAN_IT_FF1. + * CAN_IT_FOV1. + * CAN_IT_WKU. + * CAN_IT_SLK. + * CAN_IT_EWG. + * CAN_IT_EPV. + * CAN_IT_BOF. + * CAN_IT_LEC. + * CAN_IT_ERR. + * + * @return ITStatus - SET or RESET. + */ +ITStatus CAN_GetITStatus(CAN_TypeDef *CANx, uint32_t CAN_IT) +{ + ITStatus itstatus = RESET; + + if((CANx->INTENR & CAN_IT) != RESET) + { + switch(CAN_IT) + { + case CAN_IT_TME: + itstatus = CheckITStatus(CANx->TSTATR, CAN_TSTATR_RQCP0 | CAN_TSTATR_RQCP1 | CAN_TSTATR_RQCP2); + break; + + case CAN_IT_FMP0: + itstatus = CheckITStatus(CANx->RFIFO0, CAN_RFIFO0_FMP0); + break; + + case CAN_IT_FF0: + itstatus = CheckITStatus(CANx->RFIFO0, CAN_RFIFO0_FULL0); + break; + + case CAN_IT_FOV0: + itstatus = CheckITStatus(CANx->RFIFO0, CAN_RFIFO0_FOVR0); + break; + + case CAN_IT_FMP1: + itstatus = CheckITStatus(CANx->RFIFO1, CAN_RFIFO1_FMP1); + break; + + case CAN_IT_FF1: + itstatus = CheckITStatus(CANx->RFIFO1, CAN_RFIFO1_FULL1); + break; + + case CAN_IT_FOV1: + itstatus = CheckITStatus(CANx->RFIFO1, CAN_RFIFO1_FOVR1); + break; + + case CAN_IT_WKU: + itstatus = CheckITStatus(CANx->STATR, CAN_STATR_WKUI); + break; + + case CAN_IT_SLK: + itstatus = CheckITStatus(CANx->STATR, CAN_STATR_SLAKI); + break; + + case CAN_IT_EWG: + itstatus = CheckITStatus(CANx->ERRSR, CAN_ERRSR_EWGF); + break; + + case CAN_IT_EPV: + itstatus = CheckITStatus(CANx->ERRSR, CAN_ERRSR_EPVF); + break; + + case CAN_IT_BOF: + itstatus = CheckITStatus(CANx->ERRSR, CAN_ERRSR_BOFF); + break; + + case CAN_IT_LEC: + itstatus = CheckITStatus(CANx->ERRSR, CAN_ERRSR_LEC); + break; + + case CAN_IT_ERR: + itstatus = CheckITStatus(CANx->STATR, CAN_STATR_ERRI); + break; + + default: + itstatus = RESET; + break; + } + } + else + { + itstatus = RESET; + } + + return itstatus; +} + +/********************************************************************* + * @fn CAN_ClearITPendingBit + * + * @brief Clears the CANx's interrupt pending bits. + * + * @param CANx - where x can be 1 to select the CAN peripheral. + * CAN_IT - specifies the interrupt pending bit to clear. + * CAN_IT_TME. + * CAN_IT_FF0. + * CAN_IT_FOV0. + * CAN_IT_FF1. + * CAN_IT_FOV1. + * CAN_IT_WKU. + * CAN_IT_SLK. + * CAN_IT_EWG. + * CAN_IT_EPV. + * CAN_IT_BOF. + * CAN_IT_LEC. + * CAN_IT_ERR. + * + * @return none + */ +void CAN_ClearITPendingBit(CAN_TypeDef *CANx, uint32_t CAN_IT) +{ + switch(CAN_IT) + { + case CAN_IT_TME: + CANx->TSTATR = CAN_TSTATR_RQCP0 | CAN_TSTATR_RQCP1 | CAN_TSTATR_RQCP2; + break; + + case CAN_IT_FF0: + CANx->RFIFO0 = CAN_RFIFO0_FULL0; + break; + + case CAN_IT_FOV0: + CANx->RFIFO0 = CAN_RFIFO0_FOVR0; + break; + + case CAN_IT_FF1: + CANx->RFIFO1 = CAN_RFIFO1_FULL1; + break; + + case CAN_IT_FOV1: + CANx->RFIFO1 = CAN_RFIFO1_FOVR1; + break; + + case CAN_IT_WKU: + CANx->STATR = CAN_STATR_WKUI; + break; + + case CAN_IT_SLK: + CANx->STATR = CAN_STATR_SLAKI; + break; + + case CAN_IT_EWG: + CANx->STATR = CAN_STATR_ERRI; + break; + + case CAN_IT_EPV: + CANx->STATR = CAN_STATR_ERRI; + break; + + case CAN_IT_BOF: + CANx->STATR = CAN_STATR_ERRI; + break; + + case CAN_IT_LEC: + CANx->ERRSR = RESET; + CANx->STATR = CAN_STATR_ERRI; + break; + + case CAN_IT_ERR: + CANx->ERRSR = RESET; + CANx->STATR = CAN_STATR_ERRI; + break; + + default: + break; + } +} + +/********************************************************************* + * @fn CheckITStatus + * + * @brief Checks whether the CAN interrupt has occurred or not. + * + * @param CAN_Reg - specifies the CAN interrupt register to check + * It_Bit - specifies the interrupt source bit to check. + * + * @return ITStatus - SET or RESET. + */ +static ITStatus CheckITStatus(uint32_t CAN_Reg, uint32_t It_Bit) +{ + ITStatus pendingbitstatus = RESET; + + if((CAN_Reg & It_Bit) != (uint32_t)RESET) + { + pendingbitstatus = SET; + } + else + { + pendingbitstatus = RESET; + } + + return pendingbitstatus; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_crc.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_crc.c new file mode 100755 index 000000000..5165be811 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_crc.c @@ -0,0 +1,98 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_crc.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the CRC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_crc.h" + +/********************************************************************* + * @fn CRC_ResetDR + * + * @brief Resets the CRC Data register (DR). + * + * @return none + */ +void CRC_ResetDR(void) +{ + CRC->CTLR = CRC_CTLR_RESET; +} + +/********************************************************************* + * @fn CRC_CalcCRC + * + * @brief Computes the 32-bit CRC of a given data word(32-bit). + * + * @param Data - data word(32-bit) to compute its CRC. + * + * @return 32-bit CRC. + */ +uint32_t CRC_CalcCRC(uint32_t Data) +{ + CRC->DATAR = Data; + + return (CRC->DATAR); +} + +/********************************************************************* + * @fn CRC_CalcBlockCRC + * + * @brief Computes the 32-bit CRC of a given buffer of data word(32-bit). + * + * @param pBuffer - pointer to the buffer containing the data to be computed. + * BufferLength - length of the buffer to be computed. + * + * @return 32-bit CRC. + */ +uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength) +{ + uint32_t index = 0; + + for(index = 0; index < BufferLength; index++) + { + CRC->DATAR = pBuffer[index]; + } + + return (CRC->DATAR); +} + +/********************************************************************* + * @fn CRC_GetCRC + * + * @brief Returns the current CRC value. + * + * @return 32-bit CRC. + */ +uint32_t CRC_GetCRC(void) +{ + return (CRC->IDATAR); +} + +/********************************************************************* + * @fn CRC_SetIDRegister + * + * @brief Stores a 8-bit data in the Independent Data(ID) register. + * + * @param IDValue - 8-bit value to be stored in the ID register. + * + * @return none + */ +void CRC_SetIDRegister(uint8_t IDValue) +{ + CRC->IDATAR = IDValue; +} + +/********************************************************************* + * @fn CRC_GetIDRegister + * + * @brief Returns the 8-bit data stored in the Independent Data(ID) register. + * + * @return 8-bit value of the ID register. + */ +uint8_t CRC_GetIDRegister(void) +{ + return (CRC->IDATAR); +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dac.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dac.c new file mode 100755 index 000000000..e8f1739b9 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dac.c @@ -0,0 +1,302 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dac.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the DAC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +****************************************************************************************/ +#include "ch32v30x_dac.h" +#include "ch32v30x_rcc.h" + +/* CTLR register Mask */ +#define CTLR_CLEAR_MASK ((uint32_t)0x00000FFE) + +/* DAC Dual Channels SWTR masks */ +#define DUAL_SWTR_SET ((uint32_t)0x00000003) +#define DUAL_SWTR_RESET ((uint32_t)0xFFFFFFFC) + +/* DHR registers offsets */ +#define DHR12R1_OFFSET ((uint32_t)0x00000008) +#define DHR12R2_OFFSET ((uint32_t)0x00000014) +#define DHR12RD_OFFSET ((uint32_t)0x00000020) + +/* DOR register offset */ +#define DOR_OFFSET ((uint32_t)0x0000002C) + +/********************************************************************* + * @fn DAC_DeInit + * + * @brief Deinitializes the DAC peripheral registers to their default reset values. + * + * @return none + */ +void DAC_DeInit(void) +{ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_DAC, DISABLE); +} + +/********************************************************************* + * @fn DAC_Init + * + * @brief Initializes the DAC peripheral according to the specified parameters in + * the DAC_InitStruct. + * + * @param DAC_Channel - the selected DAC channel. + * DAC_Channel_1 - DAC Channel1 selected + * DAC_Channel_2 - DAC Channel2 selected + * DAC_InitStruct - pointer to a DAC_InitTypeDef structure. + * + * @return none + */ +void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef *DAC_InitStruct) +{ + uint32_t tmpreg1 = 0, tmpreg2 = 0; + + tmpreg1 = DAC->CTLR; + tmpreg1 &= ~(CTLR_CLEAR_MASK << DAC_Channel); + tmpreg2 = (DAC_InitStruct->DAC_Trigger | DAC_InitStruct->DAC_WaveGeneration | + DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude | DAC_InitStruct->DAC_OutputBuffer); + tmpreg1 |= tmpreg2 << DAC_Channel; + DAC->CTLR = tmpreg1; +} + +/********************************************************************* + * @fn DAC_StructInit + * + * @brief Fills each DAC_InitStruct member with its default value. + * + * @param DAC_InitStruct - pointer to a DAC_InitTypeDef structure which will be initialized. + * + * @return none + */ +void DAC_StructInit(DAC_InitTypeDef *DAC_InitStruct) +{ + DAC_InitStruct->DAC_Trigger = DAC_Trigger_None; + DAC_InitStruct->DAC_WaveGeneration = DAC_WaveGeneration_None; + DAC_InitStruct->DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0; + DAC_InitStruct->DAC_OutputBuffer = DAC_OutputBuffer_Enable; +} + +/********************************************************************* + * @fn DAC_Cmd + * + * @brief Enables or disables the specified DAC channel. + * + * @param DAC_Channel - the selected DAC channel. + * DAC_Channel_1 - DAC Channel1 selected + * DAC_Channel_2 - DAC Channel2 selected + * NewState - new state of the DAC channel(ENABLE or DISABLE). + * + * @return none + */ +void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DAC->CTLR |= (DAC_EN1 << DAC_Channel); + } + else + { + DAC->CTLR &= ~(DAC_EN1 << DAC_Channel); + } +} + +/********************************************************************* + * @fn DAC_DMACmd + * + * @brief Enables or disables the specified DAC channel DMA request. + * + * @param DAC_Channel - the selected DAC channel. + * DAC_Channel_1 - DAC Channel1 selected + * DAC_Channel_2 - DAC Channel2 selected + * NewState - new state of the DAC channel(ENABLE or DISABLE). + * + * @return none + */ +void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DAC->CTLR |= (DAC_DMAEN1 << DAC_Channel); + } + else + { + DAC->CTLR &= ~(DAC_DMAEN1 << DAC_Channel); + } +} + +/********************************************************************* + * @fn DAC_SoftwareTriggerCmd + * + * @brief Enables or disables the selected DAC channel software trigger. + * + * @param DAC_Channel - the selected DAC channel. + * DAC_Channel_1 - DAC Channel1 selected + * DAC_Channel_2 - DAC Channel2 selected + * NewState - new state of the DAC channel(ENABLE or DISABLE). + * + * @return none + */ +void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DAC->SWTR |= (uint32_t)DAC_SWTRIG1 << (DAC_Channel >> 4); + } + else + { + DAC->SWTR &= ~((uint32_t)DAC_SWTRIG1 << (DAC_Channel >> 4)); + } +} + +/********************************************************************* + * @fn DAC_DualSoftwareTriggerCmd + * + * @brief Enables or disables the two DAC channel software trigger. + * + * @param NewState - new state of the DAC channel(ENABLE or DISABLE). + * + * @return none + */ +void DAC_DualSoftwareTriggerCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DAC->SWTR |= DUAL_SWTR_SET; + } + else + { + DAC->SWTR &= DUAL_SWTR_RESET; + } +} + +/********************************************************************* + * @fn DAC_WaveGenerationCmd + * + * @brief Enables or disables the selected DAC channel wave generation. + * + * @param DAC_Channel - the selected DAC channel. + * DAC_Channel_1 - DAC Channel1 selected + * DAC_Channel_2 - DAC Channel2 selected + * DAC_Wave - Specifies the wave type to enable or disable. + * DAC_Wave_Noise - noise wave generation + * DAC_Wave_Triangle - triangle wave generation + * NewState - new state of the DAC channel(ENABLE or DISABLE). + * + * @return none + */ +void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DAC->CTLR |= DAC_Wave << DAC_Channel; + } + else + { + DAC->CTLR &= ~(DAC_Wave << DAC_Channel); + } +} + +/********************************************************************* + * @fn DAC_SetChannel1Data + * + * @brief Set the specified data holding register value for DAC channel1. + * + * @param DAC_Align - Specifies the data alignment for DAC channel1. + * DAC_Align_8b_R - 8bit right data alignment selected + * DAC_Align_12b_L - 12bit left data alignment selected + * DAC_Align_12b_R - 12bit right data alignment selected + * Data - Data to be loaded in the selected data holding register. + * + * @return none + */ +void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)DAC_BASE; + tmp += DHR12R1_OFFSET + DAC_Align; + + *(__IO uint32_t *)tmp = Data; +} + +/********************************************************************* + * @fn DAC_SetChannel2Data + * + * @brief Set the specified data holding register value for DAC channel2. + * + * @param DAC_Align - Specifies the data alignment for DAC channel1. + * DAC_Align_8b_R - 8bit right data alignment selected + * DAC_Align_12b_L - 12bit left data alignment selected + * DAC_Align_12b_R - 12bit right data alignment selected + * Data - Data to be loaded in the selected data holding register. + * + * @return none + */ +void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)DAC_BASE; + tmp += DHR12R2_OFFSET + DAC_Align; + + *(__IO uint32_t *)tmp = Data; +} + +/********************************************************************* + * @fn DAC_SetDualChannelData + * + * @brief Set the specified data holding register value for two DAC. + * + * @param DAC_Align - Specifies the data alignment for DAC channel1. + * DAC_Align_8b_R - 8bit right data alignment selected + * DAC_Align_12b_L - 12bit left data alignment selected + * DAC_Align_12b_R - 12bit right data alignment selected + * Data - Data to be loaded in the selected data holding register. + * Data1 - Data for DAC Channel1. + * Data2 - Data for DAC Channel2 + * + * @return none + */ +void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1) +{ + uint32_t data = 0, tmp = 0; + + if(DAC_Align == DAC_Align_8b_R) + { + data = ((uint32_t)Data2 << 8) | Data1; + } + else + { + data = ((uint32_t)Data2 << 16) | Data1; + } + + tmp = (uint32_t)DAC_BASE; + tmp += DHR12RD_OFFSET + DAC_Align; + + *(__IO uint32_t *)tmp = data; +} + +/********************************************************************* + * @fn DAC_GetDataOutputValue + * + * @brief Returns the last data output value of the selected DAC channel. + * + * @param DAC_Channel - the selected DAC channel. + * DAC_Channel_1 - DAC Channel1 selected + * DAC_Channel_2 - DAC Channel2 selected + * + * @return none + */ +uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)DAC_BASE; + tmp += DOR_OFFSET + ((uint32_t)DAC_Channel >> 2); + + return (uint16_t)(*(__IO uint32_t *)tmp); +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dbgmcu.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dbgmcu.c new file mode 100755 index 000000000..500ef87ae --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dbgmcu.c @@ -0,0 +1,36 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dbgmcu.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the DBGMCU firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +****************************************************************************************/ +#include "ch32v30x_dbgmcu.h" + +#define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF) + +/********************************************************************* + * @fn DBGMCU_GetREVID + * + * @brief Returns the device revision identifier. + * + * @return Revision identifier. + */ +uint32_t DBGMCU_GetREVID(void) +{ + return ((*(uint32_t *)0x1FFFF704) >> 16); +} + +/********************************************************************* + * @fn DBGMCU_GetDEVID + * + * @brief Returns the device identifier. + * + * @return Device identifier. + */ +uint32_t DBGMCU_GetDEVID(void) +{ + return ((*(uint32_t *)0x1FFFF704) & IDCODE_DEVID_MASK); +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dma.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dma.c new file mode 100755 index 000000000..3deb3cb3a --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dma.c @@ -0,0 +1,690 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dma.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the DMA firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_dma.h" +#include "ch32v30x_rcc.h" + +/* DMA1 Channelx interrupt pending bit masks */ +#define DMA1_Channel1_IT_Mask ((uint32_t)(DMA_GIF1 | DMA_TCIF1 | DMA_HTIF1 | DMA_TEIF1)) +#define DMA1_Channel2_IT_Mask ((uint32_t)(DMA_GIF2 | DMA_TCIF2 | DMA_HTIF2 | DMA_TEIF2)) +#define DMA1_Channel3_IT_Mask ((uint32_t)(DMA_GIF3 | DMA_TCIF3 | DMA_HTIF3 | DMA_TEIF3)) +#define DMA1_Channel4_IT_Mask ((uint32_t)(DMA_GIF4 | DMA_TCIF4 | DMA_HTIF4 | DMA_TEIF4)) +#define DMA1_Channel5_IT_Mask ((uint32_t)(DMA_GIF5 | DMA_TCIF5 | DMA_HTIF5 | DMA_TEIF5)) +#define DMA1_Channel6_IT_Mask ((uint32_t)(DMA_GIF6 | DMA_TCIF6 | DMA_HTIF6 | DMA_TEIF6)) +#define DMA1_Channel7_IT_Mask ((uint32_t)(DMA_GIF7 | DMA_TCIF7 | DMA_HTIF7 | DMA_TEIF7)) + +/* DMA2 Channelx interrupt pending bit masks */ +#define DMA2_Channel1_IT_Mask ((uint32_t)(DMA_GIF1 | DMA_TCIF1 | DMA_HTIF1 | DMA_TEIF1)) +#define DMA2_Channel2_IT_Mask ((uint32_t)(DMA_GIF2 | DMA_TCIF2 | DMA_HTIF2 | DMA_TEIF2)) +#define DMA2_Channel3_IT_Mask ((uint32_t)(DMA_GIF3 | DMA_TCIF3 | DMA_HTIF3 | DMA_TEIF3)) +#define DMA2_Channel4_IT_Mask ((uint32_t)(DMA_GIF4 | DMA_TCIF4 | DMA_HTIF4 | DMA_TEIF4)) +#define DMA2_Channel5_IT_Mask ((uint32_t)(DMA_GIF5 | DMA_TCIF5 | DMA_HTIF5 | DMA_TEIF5)) +#define DMA2_Channel6_IT_Mask ((uint32_t)(DMA_GIF6 | DMA_TCIF6 | DMA_HTIF6 | DMA_TEIF6)) +#define DMA2_Channel7_IT_Mask ((uint32_t)(DMA_GIF7 | DMA_TCIF7 | DMA_HTIF7 | DMA_TEIF7)) +#define DMA2_Channel8_IT_Mask ((uint32_t)(DMA_GIF8 | DMA_TCIF8 | DMA_HTIF8 | DMA_TEIF8)) +#define DMA2_Channel9_IT_Mask ((uint32_t)(DMA_GIF9 | DMA_TCIF9 | DMA_HTIF9 | DMA_TEIF9)) +#define DMA2_Channel10_IT_Mask ((uint32_t)(DMA_GIF10 | DMA_TCIF10 | DMA_HTIF10 | DMA_TEIF10)) +#define DMA2_Channel11_IT_Mask ((uint32_t)(DMA_GIF11 | DMA_TCIF11 | DMA_HTIF11 | DMA_TEIF11)) + +/* DMA2 FLAG mask */ +#define FLAG_Mask ((uint32_t)0x10000000) +#define DMA2_EXTEN_FLAG_Mask ((uint32_t)0x20000000) + +/* DMA registers Masks */ +#define CFGR_CLEAR_Mask ((uint32_t)0xFFFF800F) + +/********************************************************************* + * @fn DMA_DeInit + * + * @brief Deinitializes the DMAy Channelx registers to their default + * reset values. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * + * @return none + */ +void DMA_DeInit(DMA_Channel_TypeDef *DMAy_Channelx) +{ + DMAy_Channelx->CFGR &= (uint16_t)(~DMA_CFGR1_EN); + DMAy_Channelx->CFGR = 0; + DMAy_Channelx->CNTR = 0; + DMAy_Channelx->PADDR = 0; + DMAy_Channelx->MADDR = 0; + if(DMAy_Channelx == DMA1_Channel1) + { + DMA1->INTFCR |= DMA1_Channel1_IT_Mask; + } + else if(DMAy_Channelx == DMA1_Channel2) + { + DMA1->INTFCR |= DMA1_Channel2_IT_Mask; + } + else if(DMAy_Channelx == DMA1_Channel3) + { + DMA1->INTFCR |= DMA1_Channel3_IT_Mask; + } + else if(DMAy_Channelx == DMA1_Channel4) + { + DMA1->INTFCR |= DMA1_Channel4_IT_Mask; + } + else if(DMAy_Channelx == DMA1_Channel5) + { + DMA1->INTFCR |= DMA1_Channel5_IT_Mask; + } + else if(DMAy_Channelx == DMA1_Channel6) + { + DMA1->INTFCR |= DMA1_Channel6_IT_Mask; + } + else if(DMAy_Channelx == DMA1_Channel7) + { + DMA1->INTFCR |= DMA1_Channel7_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel1) + { + DMA2->INTFCR |= DMA2_Channel1_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel2) + { + DMA2->INTFCR |= DMA2_Channel2_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel3) + { + DMA2->INTFCR |= DMA2_Channel3_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel4) + { + DMA2->INTFCR |= DMA2_Channel4_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel5) + { + DMA2->INTFCR |= DMA2_Channel5_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel6) + { + DMA2->INTFCR |= DMA2_Channel6_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel7) + { + DMA2->INTFCR |= DMA2_Channel7_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel8) + { + DMA2_EXTEN->INTFCR |= DMA2_Channel8_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel9) + { + DMA2_EXTEN->INTFCR |= DMA2_Channel9_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel10) + { + DMA2_EXTEN->INTFCR |= DMA2_Channel10_IT_Mask; + } + else if(DMAy_Channelx == DMA2_Channel11) + { + DMA2_EXTEN->INTFCR |= DMA2_Channel11_IT_Mask; + } +} + +/********************************************************************* + * @fn DMA_Init + * + * @brief Initializes the DMAy Channelx according to the specified + * parameters in the DMA_InitStruct. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * DMA_InitStruct - pointer to a DMA_InitTypeDef structure that contains + * contains the configuration information for the specified DMA Channel. + * + * @return none + */ +void DMA_Init(DMA_Channel_TypeDef *DMAy_Channelx, DMA_InitTypeDef *DMA_InitStruct) +{ + uint32_t tmpreg = 0; + + tmpreg = DMAy_Channelx->CFGR; + tmpreg &= CFGR_CLEAR_Mask; + tmpreg |= DMA_InitStruct->DMA_DIR | DMA_InitStruct->DMA_Mode | + DMA_InitStruct->DMA_PeripheralInc | DMA_InitStruct->DMA_MemoryInc | + DMA_InitStruct->DMA_PeripheralDataSize | DMA_InitStruct->DMA_MemoryDataSize | + DMA_InitStruct->DMA_Priority | DMA_InitStruct->DMA_M2M; + + DMAy_Channelx->CFGR = tmpreg; + DMAy_Channelx->CNTR = DMA_InitStruct->DMA_BufferSize; + DMAy_Channelx->PADDR = DMA_InitStruct->DMA_PeripheralBaseAddr; + DMAy_Channelx->MADDR = DMA_InitStruct->DMA_MemoryBaseAddr; +} + +/********************************************************************* + * @fn DMA_StructInit + * + * @brief Fills each DMA_InitStruct member with its default value. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * DMA_InitStruct - pointer to a DMA_InitTypeDef structure that contains + * contains the configuration information for the specified DMA Channel. + * + * @return none + */ +void DMA_StructInit(DMA_InitTypeDef *DMA_InitStruct) +{ + DMA_InitStruct->DMA_PeripheralBaseAddr = 0; + DMA_InitStruct->DMA_MemoryBaseAddr = 0; + DMA_InitStruct->DMA_DIR = DMA_DIR_PeripheralSRC; + DMA_InitStruct->DMA_BufferSize = 0; + DMA_InitStruct->DMA_PeripheralInc = DMA_PeripheralInc_Disable; + DMA_InitStruct->DMA_MemoryInc = DMA_MemoryInc_Disable; + DMA_InitStruct->DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; + DMA_InitStruct->DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; + DMA_InitStruct->DMA_Mode = DMA_Mode_Normal; + DMA_InitStruct->DMA_Priority = DMA_Priority_Low; + DMA_InitStruct->DMA_M2M = DMA_M2M_Disable; +} + +/********************************************************************* + * @fn DMA_Cmd + * + * @brief Enables or disables the specified DMAy Channelx. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * NewState - new state of the DMAy Channelx(ENABLE or DISABLE). + * + * @return none + */ +void DMA_Cmd(DMA_Channel_TypeDef *DMAy_Channelx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMAy_Channelx->CFGR |= DMA_CFGR1_EN; + } + else + { + DMAy_Channelx->CFGR &= (uint16_t)(~DMA_CFGR1_EN); + } +} + +/********************************************************************* + * @fn DMA_ITConfig + * + * @brief Enables or disables the specified DMAy Channelx interrupts. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * DMA_IT - specifies the DMA interrupts sources to be enabled + * or disabled. + * DMA_IT_TC - Transfer complete interrupt mask + * DMA_IT_HT - Half transfer interrupt mask + * DMA_IT_TE - Transfer error interrupt mask + * NewState - new state of the DMAy Channelx(ENABLE or DISABLE). + * + * @return none + */ +void DMA_ITConfig(DMA_Channel_TypeDef *DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMAy_Channelx->CFGR |= DMA_IT; + } + else + { + DMAy_Channelx->CFGR &= ~DMA_IT; + } +} + +/********************************************************************* + * @fn DMA_SetCurrDataCounter + * + * @brief Sets the number of data units in the current DMAy Channelx transfer. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * DataNumber - The number of data units in the current DMAy Channelx + * transfer. + * + * @return none + */ +void DMA_SetCurrDataCounter(DMA_Channel_TypeDef *DMAy_Channelx, uint16_t DataNumber) +{ + DMAy_Channelx->CNTR = DataNumber; +} + +/********************************************************************* + * @fn DMA_GetCurrDataCounter + * + * @brief Returns the number of remaining data units in the current + * DMAy Channelx transfer. + * + * @param DMAy_Channelx - here y can be 1 or 2 to select the DMA and x can be + * 1 to 7 for DMA1 and 1 to 11 for DMA2 to select the DMA Channel. + * + * @return DataNumber - The number of remaining data units in the current + * DMAy Channelx transfer. + */ +uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef *DMAy_Channelx) +{ + return ((uint16_t)(DMAy_Channelx->CNTR)); +} + +/********************************************************************* + * @fn DMA_GetFlagStatus + * + * @brief Checks whether the specified DMAy Channelx flag is set or not. + * + * @param DMAy_FLAG - specifies the flag to check. + * DMA1_FLAG_GL1 - DMA1 Channel1 global flag. + * DMA1_FLAG_TC1 - DMA1 Channel1 transfer complete flag. + * DMA1_FLAG_HT1 - DMA1 Channel1 half transfer flag. + * DMA1_FLAG_TE1 - DMA1 Channel1 transfer error flag. + * DMA1_FLAG_GL2 - DMA1 Channel2 global flag. + * DMA1_FLAG_TC2 - DMA1 Channel2 transfer complete flag. + * DMA1_FLAG_HT2 - DMA1 Channel2 half transfer flag. + * DMA1_FLAG_TE2 - DMA1 Channel2 transfer error flag. + * DMA1_FLAG_GL3 - DMA1 Channel3 global flag. + * DMA1_FLAG_TC3 - DMA1 Channel3 transfer complete flag. + * DMA1_FLAG_HT3 - DMA1 Channel3 half transfer flag. + * DMA1_FLAG_TE3 - DMA1 Channel3 transfer error flag. + * DMA1_FLAG_GL4 - DMA1 Channel4 global flag. + * DMA1_FLAG_TC4 - DMA1 Channel4 transfer complete flag. + * DMA1_FLAG_HT4 - DMA1 Channel4 half transfer flag. + * DMA1_FLAG_TE4 - DMA1 Channel4 transfer error flag. + * DMA1_FLAG_GL5 - DMA1 Channel5 global flag. + * DMA1_FLAG_TC5 - DMA1 Channel5 transfer complete flag. + * DMA1_FLAG_HT5 - DMA1 Channel5 half transfer flag. + * DMA1_FLAG_TE5 - DMA1 Channel5 transfer error flag. + * DMA1_FLAG_GL6 - DMA1 Channel6 global flag. + * DMA1_FLAG_TC6 - DMA1 Channel6 transfer complete flag. + * DMA1_FLAG_HT6 - DMA1 Channel6 half transfer flag. + * DMA1_FLAG_TE6 - DMA1 Channel6 transfer error flag. + * DMA1_FLAG_GL7 - DMA1 Channel7 global flag. + * DMA1_FLAG_TC7 - DMA1 Channel7 transfer complete flag. + * DMA1_FLAG_HT7 - DMA1 Channel7 half transfer flag. + * DMA1_FLAG_TE7 - DMA1 Channel7 transfer error flag. + * DMA2_FLAG_GL1 - DMA2 Channel1 global flag. + * DMA2_FLAG_TC1 - DMA2 Channel1 transfer complete flag. + * DMA2_FLAG_HT1 - DMA2 Channel1 half transfer flag. + * DMA2_FLAG_TE1 - DMA2 Channel1 transfer error flag. + * DMA2_FLAG_GL2 - DMA2 Channel2 global flag. + * DMA2_FLAG_TC2 - DMA2 Channel2 transfer complete flag. + * DMA2_FLAG_HT2 - DMA2 Channel2 half transfer flag. + * DMA2_FLAG_TE2 - DMA2 Channel2 transfer error flag. + * DMA2_FLAG_GL3 - DMA2 Channel3 global flag. + * DMA2_FLAG_TC3 - DMA2 Channel3 transfer complete flag. + * DMA2_FLAG_HT3 - DMA2 Channel3 half transfer flag. + * DMA2_FLAG_TE3 - DMA2 Channel3 transfer error flag. + * DMA2_FLAG_GL4 - DMA2 Channel4 global flag. + * DMA2_FLAG_TC4 - DMA2 Channel4 transfer complete flag. + * DMA2_FLAG_HT4 - DMA2 Channel4 half transfer flag. + * DMA2_FLAG_TE4 - DMA2 Channel4 transfer error flag. + * DMA2_FLAG_GL5 - DMA2 Channel5 global flag. + * DMA2_FLAG_TC5 - DMA2 Channel5 transfer complete flag. + * DMA2_FLAG_HT5 - DMA2 Channel5 half transfer flag. + * DMA2_FLAG_TE5 - DMA2 Channel5 transfer error flag. + * DMA2_FLAG_GL6 - DMA2 Channel6 global flag. + * DMA2_FLAG_TC6 - DMA2 Channel6 transfer complete flag. + * DMA2_FLAG_HT6 - DMA2 Channel6 half transfer flag. + * DMA2_FLAG_TE6 - DMA2 Channel6 transfer error flag. + * DMA2_FLAG_GL7 - DMA2 Channel7 global flag. + * DMA2_FLAG_TC7 - DMA2 Channel7 transfer complete flag. + * DMA2_FLAG_HT7 - DMA2 Channel7 half transfer flag. + * DMA2_FLAG_TE7 - DMA2 Channel7 transfer error flag. + * DMA2_FLAG_GL8 - DMA2 Channel8 global flag. + * DMA2_FLAG_TC8 - DMA2 Channel8 transfer complete flag. + * DMA2_FLAG_HT8 - DMA2 Channel8 half transfer flag. + * DMA2_FLAG_TE8 - DMA2 Channel8 transfer error flag. + * DMA2_FLAG_GL9 - DMA2 Channel9 global flag. + * DMA2_FLAG_TC9 - DMA2 Channel9 transfer complete flag. + * DMA2_FLAG_HT9 - DMA2 Channel9 half transfer flag. + * DMA2_FLAG_TE9 - DMA2 Channel9 transfer error flag. + * DMA2_FLAG_GL10 - DMA2 Channel10 global flag. + * DMA2_FLAG_TC10 - DMA2 Channel10 transfer complete flag. + * DMA2_FLAG_HT10 - DMA2 Channel10 half transfer flag. + * DMA2_FLAG_TE10 - DMA2 Channel10 transfer error flag. + * DMA2_FLAG_GL11 - DMA2 Channel11 global flag. + * DMA2_FLAG_TC11 - DMA2 Channel11 transfer complete flag. + * DMA2_FLAG_HT11 - DMA2 Channel11 half transfer flag. + * DMA2_FLAG_TE11 - DMA2 Channel11 transfer error flag. + * + * @return The new state of DMAy_FLAG (SET or RESET). + */ +FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG) +{ + FlagStatus bitstatus = RESET; + uint32_t tmpreg = 0; + + if((DMAy_FLAG & FLAG_Mask) == FLAG_Mask) + { + tmpreg = DMA2->INTFR; + } + else if((DMAy_FLAG & DMA2_EXTEN_FLAG_Mask) == DMA2_EXTEN_FLAG_Mask) + { + tmpreg = DMA2_EXTEN->INTFR; + } + else + { + tmpreg = DMA1->INTFR; + } + + if((tmpreg & DMAy_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn DMA_ClearFlag + * + * @brief Clears the DMAy Channelx's pending flags. + * + * @param DMAy_FLAG - specifies the flag to check. + * DMA1_FLAG_GL1 - DMA1 Channel1 global flag. + * DMA1_FLAG_TC1 - DMA1 Channel1 transfer complete flag. + * DMA1_FLAG_HT1 - DMA1 Channel1 half transfer flag. + * DMA1_FLAG_TE1 - DMA1 Channel1 transfer error flag. + * DMA1_FLAG_GL2 - DMA1 Channel2 global flag. + * DMA1_FLAG_TC2 - DMA1 Channel2 transfer complete flag. + * DMA1_FLAG_HT2 - DMA1 Channel2 half transfer flag. + * DMA1_FLAG_TE2 - DMA1 Channel2 transfer error flag. + * DMA1_FLAG_GL3 - DMA1 Channel3 global flag. + * DMA1_FLAG_TC3 - DMA1 Channel3 transfer complete flag. + * DMA1_FLAG_HT3 - DMA1 Channel3 half transfer flag. + * DMA1_FLAG_TE3 - DMA1 Channel3 transfer error flag. + * DMA1_FLAG_GL4 - DMA1 Channel4 global flag. + * DMA1_FLAG_TC4 - DMA1 Channel4 transfer complete flag. + * DMA1_FLAG_HT4 - DMA1 Channel4 half transfer flag. + * DMA1_FLAG_TE4 - DMA1 Channel4 transfer error flag. + * DMA1_FLAG_GL5 - DMA1 Channel5 global flag. + * DMA1_FLAG_TC5 - DMA1 Channel5 transfer complete flag. + * DMA1_FLAG_HT5 - DMA1 Channel5 half transfer flag. + * DMA1_FLAG_TE5 - DMA1 Channel5 transfer error flag. + * DMA1_FLAG_GL6 - DMA1 Channel6 global flag. + * DMA1_FLAG_TC6 - DMA1 Channel6 transfer complete flag. + * DMA1_FLAG_HT6 - DMA1 Channel6 half transfer flag. + * DMA1_FLAG_TE6 - DMA1 Channel6 transfer error flag. + * DMA1_FLAG_GL7 - DMA1 Channel7 global flag. + * DMA1_FLAG_TC7 - DMA1 Channel7 transfer complete flag. + * DMA1_FLAG_HT7 - DMA1 Channel7 half transfer flag. + * DMA1_FLAG_TE7 - DMA1 Channel7 transfer error flag. + * DMA2_FLAG_GL1 - DMA2 Channel1 global flag. + * DMA2_FLAG_TC1 - DMA2 Channel1 transfer complete flag. + * DMA2_FLAG_HT1 - DMA2 Channel1 half transfer flag. + * DMA2_FLAG_TE1 - DMA2 Channel1 transfer error flag. + * DMA2_FLAG_GL2 - DMA2 Channel2 global flag. + * DMA2_FLAG_TC2 - DMA2 Channel2 transfer complete flag. + * DMA2_FLAG_HT2 - DMA2 Channel2 half transfer flag. + * DMA2_FLAG_TE2 - DMA2 Channel2 transfer error flag. + * DMA2_FLAG_GL3 - DMA2 Channel3 global flag. + * DMA2_FLAG_TC3 - DMA2 Channel3 transfer complete flag. + * DMA2_FLAG_HT3 - DMA2 Channel3 half transfer flag. + * DMA2_FLAG_TE3 - DMA2 Channel3 transfer error flag. + * DMA2_FLAG_GL4 - DMA2 Channel4 global flag. + * DMA2_FLAG_TC4 - DMA2 Channel4 transfer complete flag. + * DMA2_FLAG_HT4 - DMA2 Channel4 half transfer flag. + * DMA2_FLAG_TE4 - DMA2 Channel4 transfer error flag. + * DMA2_FLAG_GL5 - DMA2 Channel5 global flag. + * DMA2_FLAG_TC5 - DMA2 Channel5 transfer complete flag. + * DMA2_FLAG_HT5 - DMA2 Channel5 half transfer flag. + * DMA2_FLAG_TE5 - DMA2 Channel5 transfer error flag. + * DMA2_FLAG_GL6 - DMA2 Channel6 global flag. + * DMA2_FLAG_TC6 - DMA2 Channel6 transfer complete flag. + * DMA2_FLAG_HT6 - DMA2 Channel6 half transfer flag. + * DMA2_FLAG_TE6 - DMA2 Channel6 transfer error flag. + * DMA2_FLAG_GL7 - DMA2 Channel7 global flag. + * DMA2_FLAG_TC7 - DMA2 Channel7 transfer complete flag. + * DMA2_FLAG_HT7 - DMA2 Channel7 half transfer flag. + * DMA2_FLAG_TE7 - DMA2 Channel7 transfer error flag. + * DMA2_FLAG_GL8 - DMA2 Channel8 global flag. + * DMA2_FLAG_TC8 - DMA2 Channel8 transfer complete flag. + * DMA2_FLAG_HT8 - DMA2 Channel8 half transfer flag. + * DMA2_FLAG_TE8 - DMA2 Channel8 transfer error flag. + * DMA2_FLAG_GL9 - DMA2 Channel9 global flag. + * DMA2_FLAG_TC9 - DMA2 Channel9 transfer complete flag. + * DMA2_FLAG_HT9 - DMA2 Channel9 half transfer flag. + * DMA2_FLAG_TE9 - DMA2 Channel9 transfer error flag. + * DMA2_FLAG_GL10 - DMA2 Channel10 global flag. + * DMA2_FLAG_TC10 - DMA2 Channel10 transfer complete flag. + * DMA2_FLAG_HT10 - DMA2 Channel10 half transfer flag. + * DMA2_FLAG_TE10 - DMA2 Channel10 transfer error flag. + * DMA2_FLAG_GL11 - DMA2 Channel11 global flag. + * DMA2_FLAG_TC11 - DMA2 Channel11 transfer complete flag. + * DMA2_FLAG_HT11 - DMA2 Channel11 half transfer flag. + * DMA2_FLAG_TE11 - DMA2 Channel11 transfer error flag. + * + * @return none + */ +void DMA_ClearFlag(uint32_t DMAy_FLAG) +{ + if((DMAy_FLAG & FLAG_Mask) == FLAG_Mask) + { + DMA2->INTFCR = DMAy_FLAG; + } + else if((DMAy_FLAG & DMA2_EXTEN_FLAG_Mask) == DMA2_EXTEN_FLAG_Mask) + { + DMA2_EXTEN->INTFCR = DMAy_FLAG; + } + else + { + DMA1->INTFCR = DMAy_FLAG; + } +} + +/********************************************************************* + * @fn DMA_GetITStatus + * + * @brief Checks whether the specified DMAy Channelx interrupt has + * occurred or not. + * + * @param DMAy_IT - specifies the DMAy interrupt source to check. + * DMA1_IT_GL1 - DMA1 Channel1 global flag. + * DMA1_IT_TC1 - DMA1 Channel1 transfer complete flag. + * DMA1_IT_HT1 - DMA1 Channel1 half transfer flag. + * DMA1_IT_TE1 - DMA1 Channel1 transfer error flag. + * DMA1_IT_GL2 - DMA1 Channel2 global flag. + * DMA1_IT_TC2 - DMA1 Channel2 transfer complete flag. + * DMA1_IT_HT2 - DMA1 Channel2 half transfer flag. + * DMA1_IT_TE2 - DMA1 Channel2 transfer error flag. + * DMA1_IT_GL3 - DMA1 Channel3 global flag. + * DMA1_IT_TC3 - DMA1 Channel3 transfer complete flag. + * DMA1_IT_HT3 - DMA1 Channel3 half transfer flag. + * DMA1_IT_TE3 - DMA1 Channel3 transfer error flag. + * DMA1_IT_GL4 - DMA1 Channel4 global flag. + * DMA1_IT_TC4 - DMA1 Channel4 transfer complete flag. + * DMA1_IT_HT4 - DMA1 Channel4 half transfer flag. + * DMA1_IT_TE4 - DMA1 Channel4 transfer error flag. + * DMA1_IT_GL5 - DMA1 Channel5 global flag. + * DMA1_IT_TC5 - DMA1 Channel5 transfer complete flag. + * DMA1_IT_HT5 - DMA1 Channel5 half transfer flag. + * DMA1_IT_TE5 - DMA1 Channel5 transfer error flag. + * DMA1_IT_GL6 - DMA1 Channel6 global flag. + * DMA1_IT_TC6 - DMA1 Channel6 transfer complete flag. + * DMA1_IT_HT6 - DMA1 Channel6 half transfer flag. + * DMA1_IT_TE6 - DMA1 Channel6 transfer error flag. + * DMA1_IT_GL7 - DMA1 Channel7 global flag. + * DMA1_IT_TC7 - DMA1 Channel7 transfer complete flag. + * DMA1_IT_HT7 - DMA1 Channel7 half transfer flag. + * DMA1_IT_TE7 - DMA1 Channel7 transfer error flag. + * DMA2_IT_GL1 - DMA2 Channel1 global flag. + * DMA2_IT_TC1 - DMA2 Channel1 transfer complete flag. + * DMA2_IT_HT1 - DMA2 Channel1 half transfer flag. + * DMA2_IT_TE1 - DMA2 Channel1 transfer error flag. + * DMA2_IT_GL2 - DMA2 Channel2 global flag. + * DMA2_IT_TC2 - DMA2 Channel2 transfer complete flag. + * DMA2_IT_HT2 - DMA2 Channel2 half transfer flag. + * DMA2_IT_TE2 - DMA2 Channel2 transfer error flag. + * DMA2_IT_GL3 - DMA2 Channel3 global flag. + * DMA2_IT_TC3 - DMA2 Channel3 transfer complete flag. + * DMA2_IT_HT3 - DMA2 Channel3 half transfer flag. + * DMA2_IT_TE3 - DMA2 Channel3 transfer error flag. + * DMA2_IT_GL4 - DMA2 Channel4 global flag. + * DMA2_IT_TC4 - DMA2 Channel4 transfer complete flag. + * DMA2_IT_HT4 - DMA2 Channel4 half transfer flag. + * DMA2_IT_TE4 - DMA2 Channel4 transfer error flag. + * DMA2_IT_GL5 - DMA2 Channel5 global flag. + * DMA2_IT_TC5 - DMA2 Channel5 transfer complete flag. + * DMA2_IT_HT5 - DMA2 Channel5 half transfer flag. + * DMA2_IT_TE5 - DMA2 Channel5 transfer error flag. + * DMA2_IT_GL6 - DMA2 Channel6 global flag. + * DMA2_IT_TC6 - DMA2 Channel6 transfer complete flag. + * DMA2_IT_HT6 - DMA2 Channel6 half transfer flag. + * DMA2_IT_TE6 - DMA2 Channel6 transfer error flag. + * DMA2_IT_GL7 - DMA2 Channel7 global flag. + * DMA2_IT_TC7 - DMA2 Channel7 transfer complete flag. + * DMA2_IT_HT7 - DMA2 Channel7 half transfer flag. + * DMA2_IT_TE7 - DMA2 Channel7 transfer error flag. + * DMA2_IT_GL8 - DMA2 Channel8 global flag. + * DMA2_IT_TC8 - DMA2 Channel8 transfer complete flag. + * DMA2_IT_HT8 - DMA2 Channel8 half transfer flag. + * DMA2_IT_TE8 - DMA2 Channel8 transfer error flag. + * DMA2_IT_GL9 - DMA2 Channel9 global flag. + * DMA2_IT_TC9 - DMA2 Channel9 transfer complete flag. + * DMA2_IT_HT9 - DMA2 Channel9 half transfer flag. + * DMA2_IT_TE9 - DMA2 Channel9 transfer error flag. + * DMA2_IT_GL10 - DMA2 Channel10 global flag. + * DMA2_IT_TC10 - DMA2 Channel10 transfer complete flag. + * DMA2_IT_HT10 - DMA2 Channel10 half transfer flag. + * DMA2_IT_TE10 - DMA2 Channel10 transfer error flag. + * DMA2_IT_GL11 - DMA2 Channel11 global flag. + * DMA2_IT_TC11 - DMA2 Channel11 transfer complete flag. + * DMA2_IT_HT11 - DMA2 Channel11 half transfer flag. + * DMA2_IT_TE11 - DMA2 Channel11 transfer error flag. + * + * @return The new state of DMAy_IT (SET or RESET). + */ +ITStatus DMA_GetITStatus(uint32_t DMAy_IT) +{ + ITStatus bitstatus = RESET; + uint32_t tmpreg = 0; + + if((DMAy_IT & FLAG_Mask) == FLAG_Mask) + { + tmpreg = DMA2->INTFR; + } + else if((DMAy_IT & DMA2_EXTEN_FLAG_Mask) == DMA2_EXTEN_FLAG_Mask) + { + tmpreg = DMA2_EXTEN->INTFR; + } + else + { + tmpreg = DMA1->INTFR; + } + + if((tmpreg & DMAy_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn DMA_ClearITPendingBit + * + * @brief Clears the DMAy Channelx's interrupt pending bits. + * + * @param DMAy_IT - specifies the DMAy interrupt source to check. + * DMA1_IT_GL1 - DMA1 Channel1 global flag. + * DMA1_IT_TC1 - DMA1 Channel1 transfer complete flag. + * DMA1_IT_HT1 - DMA1 Channel1 half transfer flag. + * DMA1_IT_TE1 - DMA1 Channel1 transfer error flag. + * DMA1_IT_GL2 - DMA1 Channel2 global flag. + * DMA1_IT_TC2 - DMA1 Channel2 transfer complete flag. + * DMA1_IT_HT2 - DMA1 Channel2 half transfer flag. + * DMA1_IT_TE2 - DMA1 Channel2 transfer error flag. + * DMA1_IT_GL3 - DMA1 Channel3 global flag. + * DMA1_IT_TC3 - DMA1 Channel3 transfer complete flag. + * DMA1_IT_HT3 - DMA1 Channel3 half transfer flag. + * DMA1_IT_TE3 - DMA1 Channel3 transfer error flag. + * DMA1_IT_GL4 - DMA1 Channel4 global flag. + * DMA1_IT_TC4 - DMA1 Channel4 transfer complete flag. + * DMA1_IT_HT4 - DMA1 Channel4 half transfer flag. + * DMA1_IT_TE4 - DMA1 Channel4 transfer error flag. + * DMA1_IT_GL5 - DMA1 Channel5 global flag. + * DMA1_IT_TC5 - DMA1 Channel5 transfer complete flag. + * DMA1_IT_HT5 - DMA1 Channel5 half transfer flag. + * DMA1_IT_TE5 - DMA1 Channel5 transfer error flag. + * DMA1_IT_GL6 - DMA1 Channel6 global flag. + * DMA1_IT_TC6 - DMA1 Channel6 transfer complete flag. + * DMA1_IT_HT6 - DMA1 Channel6 half transfer flag. + * DMA1_IT_TE6 - DMA1 Channel6 transfer error flag. + * DMA1_IT_GL7 - DMA1 Channel7 global flag. + * DMA1_IT_TC7 - DMA1 Channel7 transfer complete flag. + * DMA1_IT_HT7 - DMA1 Channel7 half transfer flag. + * DMA1_IT_TE7 - DMA1 Channel7 transfer error flag. + * DMA2_IT_GL1 - DMA2 Channel1 global flag. + * DMA2_IT_TC1 - DMA2 Channel1 transfer complete flag. + * DMA2_IT_HT1 - DMA2 Channel1 half transfer flag. + * DMA2_IT_TE1 - DMA2 Channel1 transfer error flag. + * DMA2_IT_GL2 - DMA2 Channel2 global flag. + * DMA2_IT_TC2 - DMA2 Channel2 transfer complete flag. + * DMA2_IT_HT2 - DMA2 Channel2 half transfer flag. + * DMA2_IT_TE2 - DMA2 Channel2 transfer error flag. + * DMA2_IT_GL3 - DMA2 Channel3 global flag. + * DMA2_IT_TC3 - DMA2 Channel3 transfer complete flag. + * DMA2_IT_HT3 - DMA2 Channel3 half transfer flag. + * DMA2_IT_TE3 - DMA2 Channel3 transfer error flag. + * DMA2_IT_GL4 - DMA2 Channel4 global flag. + * DMA2_IT_TC4 - DMA2 Channel4 transfer complete flag. + * DMA2_IT_HT4 - DMA2 Channel4 half transfer flag. + * DMA2_IT_TE4 - DMA2 Channel4 transfer error flag. + * DMA2_IT_GL5 - DMA2 Channel5 global flag. + * DMA2_IT_TC5 - DMA2 Channel5 transfer complete flag. + * DMA2_IT_HT5 - DMA2 Channel5 half transfer flag. + * DMA2_IT_TE5 - DMA2 Channel5 transfer error flag. + * DMA2_IT_GL6 - DMA2 Channel6 global flag. + * DMA2_IT_TC6 - DMA2 Channel6 transfer complete flag. + * DMA2_IT_HT6 - DMA2 Channel6 half transfer flag. + * DMA2_IT_TE6 - DMA2 Channel6 transfer error flag. + * DMA2_IT_GL7 - DMA2 Channel7 global flag. + * DMA2_IT_TC7 - DMA2 Channel7 transfer complete flag. + * DMA2_IT_HT7 - DMA2 Channel7 half transfer flag. + * DMA2_IT_TE7 - DMA2 Channel7 transfer error flag. + * DMA2_IT_GL8 - DMA2 Channel8 global flag. + * DMA2_IT_TC8 - DMA2 Channel8 transfer complete flag. + * DMA2_IT_HT8 - DMA2 Channel8 half transfer flag. + * DMA2_IT_TE8 - DMA2 Channel8 transfer error flag. + * DMA2_IT_GL9 - DMA2 Channel9 global flag. + * DMA2_IT_TC9 - DMA2 Channel9 transfer complete flag. + * DMA2_IT_HT9 - DMA2 Channel9 half transfer flag. + * DMA2_IT_TE9 - DMA2 Channel9 transfer error flag. + * DMA2_IT_GL10 - DMA2 Channel10 global flag. + * DMA2_IT_TC10 - DMA2 Channel10 transfer complete flag. + * DMA2_IT_HT10 - DMA2 Channel10 half transfer flag. + * DMA2_IT_TE10 - DMA2 Channel10 transfer error flag. + * DMA2_IT_GL11 - DMA2 Channel11 global flag. + * DMA2_IT_TC11 - DMA2 Channel11 transfer complete flag. + * DMA2_IT_HT11 - DMA2 Channel11 half transfer flag. + * DMA2_IT_TE11 - DMA2 Channel11 transfer error flag. + * + * @return none + */ +void DMA_ClearITPendingBit(uint32_t DMAy_IT) +{ + if((DMAy_IT & FLAG_Mask) == FLAG_Mask) + { + DMA2->INTFCR = DMAy_IT; + } + else if((DMAy_IT & DMA2_EXTEN_FLAG_Mask) == DMA2_EXTEN_FLAG_Mask) + { + DMA2_EXTEN->INTFCR = DMAy_IT; + } + else + { + DMA1->INTFCR = DMAy_IT; + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dvp.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dvp.c new file mode 100755 index 000000000..543645140 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_dvp.c @@ -0,0 +1,133 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_dvp.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the DVP firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_dvp.h" + +/********************************************************************* + * @fn DVP_INTCfg + * + * @brief DVP interrupt configuration + * + * @param s - interrupt enable + * ENABLE + * DISABLE + * i - interrupt type + * RB_DVP_IE_STP_FRM + * RB_DVP_IE_FIFO_OV + * RB_DVP_IE_FRM_DONE + * RB_DVP_IE_ROW_DONE + * RB_DVP_IE_STR_FRM + * + * @return none + */ +void DVP_INTCfg(uint8_t s, uint8_t i) +{ + if(s) + { + DVP->IER |= i; + } + else + { + DVP->IER &= ~i; + } +} + +/********************************************************************* + * @fn DVP_Mode + * + * @brief DVP mode + * + * @param s - data bit width + * RB_DVP_D8_MOD + * RB_DVP_D10_MOD + * RB_DVP_D12_MOD + * i - interrupt type + * Video_Mode + * JPEG_Mode + * + * @return none + */ +void DVP_Mode(uint8_t s, DVP_Data_ModeTypeDef i) +{ + DVP->CR0 &= ~RB_DVP_MSK_DAT_MOD; + + if(s) + { + DVP->CR0 |= s; + } + else + { + DVP->CR0 &= ~(3 << 4); + } + + if(i) + { + DVP->CR0 |= RB_DVP_JPEG; + } + else + { + DVP->CR0 &= ~RB_DVP_JPEG; + } +} + +/********************************************************************* + * @fn DVP_Cfg + * + * @brief DVP configuration + * + * @param s - DMA enable control + * DVP_DMA_Enable + * DVP_DMA_Disable + * i - DVP all clear + * DVP_FLAG_FIFO_RESET_Enable + * DVP_FLAG_FIFO_RESET_Disable + * j - receive reset enable + * DVP_RX_RESET_Enable + * DVP_RX_RESET_Disable + * + * @return none + */ +void DVP_Cfg(DVP_DMATypeDef s, DVP_FLAG_FIFO_RESETTypeDef i, DVP_RX_RESETTypeDef j) +{ + switch(s) + { + case DVP_DMA_Enable: + DVP->CR1 |= RB_DVP_DMA_EN; + break; + case DVP_DMA_Disable: + DVP->CR1 &= ~RB_DVP_DMA_EN; + break; + default: + break; + } + + switch(i) + { + case DVP_RX_RESET_Enable: + DVP->CR1 |= RB_DVP_ALL_CLR; + break; + case DVP_RX_RESET_Disable: + DVP->CR1 &= ~RB_DVP_ALL_CLR; + break; + default: + break; + } + + switch(j) + { + case DVP_RX_RESET_Enable: + DVP->CR1 |= RB_DVP_RCV_CLR; + break; + case DVP_RX_RESET_Disable: + DVP->CR1 &= ~RB_DVP_RCV_CLR; + break; + default: + break; + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_eth.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_eth.c new file mode 100755 index 000000000..e72ab1689 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_eth.c @@ -0,0 +1,2522 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_eth.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the ETH firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_eth.h" +#include "ch32v30x_rcc.h" + +ETH_DMADESCTypeDef *DMATxDescToSet; +ETH_DMADESCTypeDef *DMARxDescToGet; +ETH_DMADESCTypeDef *DMAPTPTxDescToSet; +ETH_DMADESCTypeDef *DMAPTPRxDescToGet; + +/********************************************************************* + * @fn ETH_DeInit + * + * @brief ETH hardware initialize again. + * + * @return none + */ +#ifdef CH32V30x_D8C +void ETH_DeInit(void) +{ + RCC_AHBPeriphResetCmd(RCC_AHBPeriph_ETH_MAC, ENABLE); + RCC_AHBPeriphResetCmd(RCC_AHBPeriph_ETH_MAC, DISABLE); +} + +#endif + +/********************************************************************* + * @fn ETH_StructInit + * + * @brief Fills each ETH_InitStruct member with its default value. + * + * @param ETH_InitStruct - pointer to a ETH_InitTypeDef structure + * which will be initialized. + * + * @return none + */ +void ETH_StructInit(ETH_InitTypeDef *ETH_InitStruct) +{ + /*------------------------ MAC -----------------------------------*/ + ETH_InitStruct->ETH_AutoNegotiation = ETH_AutoNegotiation_Disable; + ETH_InitStruct->ETH_Watchdog = ETH_Watchdog_Enable; + ETH_InitStruct->ETH_Jabber = ETH_Jabber_Enable; + ETH_InitStruct->ETH_InterFrameGap = ETH_InterFrameGap_96Bit; + ETH_InitStruct->ETH_CarrierSense = ETH_CarrierSense_Enable; + ETH_InitStruct->ETH_Speed = ETH_Speed_10M; + ETH_InitStruct->ETH_ReceiveOwn = ETH_ReceiveOwn_Enable; + ETH_InitStruct->ETH_LoopbackMode = ETH_LoopbackMode_Disable; + ETH_InitStruct->ETH_Mode = ETH_Mode_HalfDuplex; + ETH_InitStruct->ETH_ChecksumOffload = ETH_ChecksumOffload_Disable; + ETH_InitStruct->ETH_RetryTransmission = ETH_RetryTransmission_Enable; + ETH_InitStruct->ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; + ETH_InitStruct->ETH_BackOffLimit = ETH_BackOffLimit_10; + ETH_InitStruct->ETH_DeferralCheck = ETH_DeferralCheck_Disable; + ETH_InitStruct->ETH_ReceiveAll = ETH_ReceiveAll_Disable; + ETH_InitStruct->ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable; + ETH_InitStruct->ETH_PassControlFrames = ETH_PassControlFrames_BlockAll; + ETH_InitStruct->ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; + ETH_InitStruct->ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; + ETH_InitStruct->ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; + ETH_InitStruct->ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; + ETH_InitStruct->ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; + ETH_InitStruct->ETH_HashTableHigh = 0x0; + ETH_InitStruct->ETH_HashTableLow = 0x0; + ETH_InitStruct->ETH_PauseTime = 0x0; + ETH_InitStruct->ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable; + ETH_InitStruct->ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4; + ETH_InitStruct->ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable; + ETH_InitStruct->ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable; + ETH_InitStruct->ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; + ETH_InitStruct->ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit; + ETH_InitStruct->ETH_VLANTagIdentifier = 0x0; + /*------------------------ DMA -----------------------------------*/ + ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable; + ETH_InitStruct->ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable; + ETH_InitStruct->ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Enable; + ETH_InitStruct->ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable; + ETH_InitStruct->ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes; + ETH_InitStruct->ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable; + ETH_InitStruct->ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable; + ETH_InitStruct->ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes; + ETH_InitStruct->ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; + ETH_InitStruct->ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; + ETH_InitStruct->ETH_FixedBurst = ETH_FixedBurst_Disable; + ETH_InitStruct->ETH_RxDMABurstLength = ETH_RxDMABurstLength_1Beat; + ETH_InitStruct->ETH_TxDMABurstLength = ETH_TxDMABurstLength_1Beat; + ETH_InitStruct->ETH_DescriptorSkipLength = 0x0; + ETH_InitStruct->ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; +} + +/********************************************************************* + * @fn ETH_Start + * + * @brief Enables ENET MAC and DMA reception/transmission. + * + * @return none + */ +void ETH_Start(void) +{ + ETH_MACTransmissionCmd(ENABLE); + ETH_FlushTransmitFIFO(); + ETH_MACReceptionCmd(ENABLE); + ETH_DMATransmissionCmd(ENABLE); + ETH_DMAReceptionCmd(ENABLE); +} + +/********************************************************************* + * @fn ETH_HandleTxPkt + * + * @brief Transmits a packet, from application buffer, pointed by ppkt. + * + * @param ppkt - pointer to the application's packet buffer to transmit. + * FrameLength - Tx Packet size. + * + * @return ETH_ERROR - in case of Tx desc owned by DMA. + * ETH_SUCCESS - for correct transmission. + */ +uint32_t ETH_HandleTxPkt(uint8_t *ppkt, uint16_t FrameLength) +{ + uint32_t offset = 0; + + if((DMATxDescToSet->Status & ETH_DMATxDesc_OWN) != (uint32_t)RESET) + { + return ETH_ERROR; + } + + for(offset = 0; offset < FrameLength; offset++) + { + (*(__IO uint8_t *)((DMATxDescToSet->Buffer1Addr) + offset)) = (*(ppkt + offset)); + } + + DMATxDescToSet->ControlBufferSize = (FrameLength & ETH_DMATxDesc_TBS1); + DMATxDescToSet->Status |= ETH_DMATxDesc_LS | ETH_DMATxDesc_FS; + DMATxDescToSet->Status |= ETH_DMATxDesc_OWN; + + if((ETH->DMASR & ETH_DMASR_TBUS) != (uint32_t)RESET) + { + ETH->DMASR = ETH_DMASR_TBUS; + ETH->DMATPDR = 0; + } + + if((DMATxDescToSet->Status & ETH_DMATxDesc_TCH) != (uint32_t)RESET) + { + DMATxDescToSet = (ETH_DMADESCTypeDef *)(DMATxDescToSet->Buffer2NextDescAddr); + } + else + { + if((DMATxDescToSet->Status & ETH_DMATxDesc_TER) != (uint32_t)RESET) + { + DMATxDescToSet = (ETH_DMADESCTypeDef *)(ETH->DMATDLAR); + } + else + { + DMATxDescToSet = (ETH_DMADESCTypeDef *)((uint32_t)DMATxDescToSet + 0x10 + ((ETH->DMABMR & ETH_DMABMR_DSL) >> 2)); + } + } + + return ETH_SUCCESS; +} + +/********************************************************************* + * @fn ETH_HandleRxPkt + * + * @brief Receives a packet and copies it to memory pointed by ppkt. + * + * @param ppkt - pointer to the application packet receive buffer. + * + * @return ETH_ERROR - if there is error in reception + * framelength - received packet size if packet reception is correct + */ +uint32_t ETH_HandleRxPkt(uint8_t *ppkt) +{ + uint32_t offset = 0, framelength = 0; + + if((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) != (uint32_t)RESET) + { + return ETH_ERROR; + } + + if(((DMARxDescToGet->Status & ETH_DMARxDesc_ES) == (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_LS) != (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_FS) != (uint32_t)RESET)) + { + framelength = ((DMARxDescToGet->Status & ETH_DMARxDesc_FL) >> ETH_DMARXDESC_FRAME_LENGTHSHIFT) - 4; + + for(offset = 0; offset < framelength; offset++) + { + (*(ppkt + offset)) = (*(__IO uint8_t *)((DMARxDescToGet->Buffer1Addr) + offset)); + } + } + else + { + framelength = ETH_ERROR; + } + + DMARxDescToGet->Status = ETH_DMARxDesc_OWN; + + if((ETH->DMASR & ETH_DMASR_RBUS) != (uint32_t)RESET) + { + ETH->DMASR = ETH_DMASR_RBUS; + ETH->DMARPDR = 0; + } + + if((DMARxDescToGet->ControlBufferSize & ETH_DMARxDesc_RCH) != (uint32_t)RESET) + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)(DMARxDescToGet->Buffer2NextDescAddr); + } + else + { + if((DMARxDescToGet->ControlBufferSize & ETH_DMARxDesc_RER) != (uint32_t)RESET) + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)(ETH->DMARDLAR); + } + else + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)((uint32_t)DMARxDescToGet + 0x10 + ((ETH->DMABMR & ETH_DMABMR_DSL) >> 2)); + } + } + + return (framelength); +} + +/********************************************************************* + * @fn ETH_GetRxPktSize + * + * @brief Get the size of received the received packet. + * + * @return framelength - received packet size + */ +uint32_t ETH_GetRxPktSize(void) +{ + uint32_t frameLength = 0; + if(((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) == (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_ES) == (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_LS) != (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_FS) != (uint32_t)RESET)) + { + frameLength = ETH_GetDMARxDescFrameLength(DMARxDescToGet); + } + + return frameLength; +} + +/********************************************************************* + * @fn ETH_DropRxPkt + * + * @brief Drop a Received packet. + * + * @return none + */ +void ETH_DropRxPkt(void) +{ + DMARxDescToGet->Status = ETH_DMARxDesc_OWN; + + if((DMARxDescToGet->ControlBufferSize & ETH_DMARxDesc_RCH) != (uint32_t)RESET) + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)(DMARxDescToGet->Buffer2NextDescAddr); + } + else + { + if((DMARxDescToGet->ControlBufferSize & ETH_DMARxDesc_RER) != (uint32_t)RESET) + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)(ETH->DMARDLAR); + } + else + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)((uint32_t)DMARxDescToGet + 0x10 + ((ETH->DMABMR & ETH_DMABMR_DSL) >> 2)); + } + } +} + +/********************************************************************* + * @fn ETH_ReadPHYRegister + * + * @brief Read a PHY register. + * + * @param PHYAddress - PHY device address, is the index of one of supported 32 PHY devices. + * PHYReg - PHY register address, is the index of one of the 32 PHY register. + * + * @return ETH_ERROR - in case of timeout. + * MAC MIIDR register value - Data read from the selected PHY register. + */ +uint16_t ETH_ReadPHYRegister(uint16_t PHYAddress, uint16_t PHYReg) +{ + uint32_t tmpreg = 0; + __IO uint32_t timeout = 0; + + tmpreg = ETH->MACMIIAR; + tmpreg &= ~MACMIIAR_CR_MASK; + tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA); + tmpreg |= (((uint32_t)PHYReg << 6) & ETH_MACMIIAR_MR); + tmpreg &= ~ETH_MACMIIAR_MW; + tmpreg |= ETH_MACMIIAR_MB; + ETH->MACMIIAR = tmpreg; + + do + { + timeout++; + tmpreg = ETH->MACMIIAR; + } while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO)); + + if(timeout == PHY_READ_TO) + { + return (uint16_t)ETH_ERROR; + } + + return (uint16_t)(ETH->MACMIIDR); +} + +/********************************************************************* + * @fn ETH_WritePHYRegister + * + * @brief Write to a PHY register. + * + * @param PHYAddress - PHY device address, is the index of one of supported 32 PHY devices. + * PHYReg - PHY register address, is the index of one of the 32 PHY register. + * PHYValue - the value to write. + * + * @return ETH_ERROR - in case of timeout. + * ETH_SUCCESS - for correct write + */ +uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg, uint16_t PHYValue) +{ + uint32_t tmpreg = 0; + __IO uint32_t timeout = 0; + + tmpreg = ETH->MACMIIAR; + tmpreg &= ~MACMIIAR_CR_MASK; + tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA); + tmpreg |= (((uint32_t)PHYReg << 6) & ETH_MACMIIAR_MR); + tmpreg |= ETH_MACMIIAR_MW; + tmpreg |= ETH_MACMIIAR_MB; + ETH->MACMIIDR = PHYValue; + ETH->MACMIIAR = tmpreg; + + do + { + timeout++; + tmpreg = ETH->MACMIIAR; + } while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_WRITE_TO)); + + if(timeout >= PHY_WRITE_TO) + { + return ETH_ERROR; + } + + return ETH_SUCCESS; +} + +/********************************************************************* + * @fn ETH_PHYLoopBackCmd + * + * @brief Enables or disables the PHY loopBack mode. + * + * @param PHYAddress - PHY device address, is the index of one of supported 32 PHY devices. + * NewState - new state of the PHY loopBack mode. + * + * @return ETH_ERROR - in case of bad PHY configuration. + * ETH_SUCCESS - for correct PHY configuration. + */ +uint32_t ETH_PHYLoopBackCmd(uint16_t PHYAddress, FunctionalState NewState) +{ + uint16_t tmpreg = 0; + + tmpreg = ETH_ReadPHYRegister(PHYAddress, PHY_BCR); + + if(NewState != DISABLE) + { + tmpreg |= PHY_Loopback; + } + else + { + tmpreg &= (uint16_t)(~(uint16_t)PHY_Loopback); + } + + if(ETH_WritePHYRegister(PHYAddress, PHY_BCR, tmpreg) != (uint32_t)RESET) + { + return ETH_SUCCESS; + } + else + { + return ETH_ERROR; + } +} + +/********************************************************************* + * @fn ETH_MACTransmissionCmd + * + * @brief Enables or disables the MAC transmission. + * + * @param NewState - new state of the MAC transmission. + * + * @return none + */ +void ETH_MACTransmissionCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACCR |= ETH_MACCR_TE; + } + else + { + ETH->MACCR &= ~ETH_MACCR_TE; + } +} + +/********************************************************************* + * @fn ETH_MACReceptionCmd + * + * @brief Enables or disables the MAC reception. + * + * @param NewState - new state of the MAC reception. + * + * @return none + */ +void ETH_MACReceptionCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACCR |= ETH_MACCR_RE; + } + else + { + ETH->MACCR &= ~ETH_MACCR_RE; + } +} + +/********************************************************************* + * @fn ETH_GetFlowControlBusyStatus + * + * @brief Enables or disables the MAC reception. + * + * @return The new state of flow control busy status bit (SET or RESET). + */ +FlagStatus ETH_GetFlowControlBusyStatus(void) +{ + FlagStatus bitstatus = RESET; + + if((ETH->MACFCR & ETH_MACFCR_FCBBPA) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_InitiatePauseControlFrame + * + * @brief Initiate a Pause Control Frame (Full-duplex only). + * + * @return none + */ +void ETH_InitiatePauseControlFrame(void) +{ + ETH->MACFCR |= ETH_MACFCR_FCBBPA; +} + +/********************************************************************* + * @fn ETH_BackPressureActivationCmd + * + * @brief Enables or disables the MAC BackPressure operation activation (Half-duplex only). + * + * @param NewState - new state of the MAC BackPressure operation activation. + * + * @return none + */ +void ETH_BackPressureActivationCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACFCR |= ETH_MACFCR_FCBBPA; + } + else + { + ETH->MACFCR &= ~ETH_MACFCR_FCBBPA; + } +} + +/********************************************************************* + * @fn ETH_GetMACFlagStatus + * + * @brief Checks whether the specified ETHERNET MAC flag is set or not. + * + * @param ETH_MAC_FLAG - specifies the flag to check. + * + * @return The new state of ETHERNET MAC flag (SET or RESET). + */ +FlagStatus ETH_GetMACFlagStatus(uint32_t ETH_MAC_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((ETH->MACSR & ETH_MAC_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_GetMACITStatus + * + * @brief Checks whether the specified ETHERNET MAC interrupt has occurred or not. + * + * @param ETH_MAC_IT - specifies the interrupt source to check. + * + * @return The new state of ETHERNET MAC interrupt (SET or RESET). + */ +ITStatus ETH_GetMACITStatus(uint32_t ETH_MAC_IT) +{ + FlagStatus bitstatus = RESET; + + if((ETH->MACSR & ETH_MAC_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_MACITConfig + * + * @brief Enables or disables the specified ETHERNET MAC interrupts. + * + * @param ETH_MAC_IT - specifies the interrupt source to check. + * NewState - new state of the specified ETHERNET MAC interrupts. + * + * @return none + */ +void ETH_MACITConfig(uint32_t ETH_MAC_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACIMR &= (~(uint32_t)ETH_MAC_IT); + } + else + { + ETH->MACIMR |= ETH_MAC_IT; + } +} + +/********************************************************************* + * @fn ETH_MACAddressConfig + * + * @brief Configures the selected MAC address. + * + * @param MacAddr - The MAC addres to configure. + * ETH_MAC_Address0 - MAC Address0 + * ETH_MAC_Address1 - MAC Address1 + * ETH_MAC_Address2 - MAC Address2 + * ETH_MAC_Address3 - MAC Address3 + * Addr - Pointer on MAC address buffer data (6 bytes). + * + * @return none + */ +void ETH_MACAddressConfig(uint32_t MacAddr, uint8_t *Addr) +{ + uint32_t tmpreg; + + tmpreg = ((uint32_t)Addr[5] << 8) | (uint32_t)Addr[4]; + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) = tmpreg; + tmpreg = ((uint32_t)Addr[3] << 24) | ((uint32_t)Addr[2] << 16) | ((uint32_t)Addr[1] << 8) | Addr[0]; + + (*(__IO uint32_t *)(ETH_MAC_ADDR_LBASE + MacAddr)) = tmpreg; +} + +/********************************************************************* + * @fn ETH_GetMACAddress + * + * @brief Get the selected MAC address. + * + * @param MacAddr - The MAC address to return. + * ETH_MAC_Address0 - MAC Address0 + * ETH_MAC_Address1 - MAC Address1 + * ETH_MAC_Address2 - MAC Address2 + * ETH_MAC_Address3 - MAC Address3 + * Addr - Pointer on MAC address buffer data (6 bytes). + * + * @return none + */ +void ETH_GetMACAddress(uint32_t MacAddr, uint8_t *Addr) +{ + uint32_t tmpreg; + + tmpreg = (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)); + + Addr[5] = ((tmpreg >> 8) & (uint8_t)0xFF); + Addr[4] = (tmpreg & (uint8_t)0xFF); + tmpreg = (*(__IO uint32_t *)(ETH_MAC_ADDR_LBASE + MacAddr)); + Addr[3] = ((tmpreg >> 24) & (uint8_t)0xFF); + Addr[2] = ((tmpreg >> 16) & (uint8_t)0xFF); + Addr[1] = ((tmpreg >> 8) & (uint8_t)0xFF); + Addr[0] = (tmpreg & (uint8_t)0xFF); +} + +/********************************************************************* + * @fn ETH_MACAddressPerfectFilterCmd + * + * @brief Enables or disables the Address filter module uses the specified. + * + * @param MacAddr - The MAC address to return. + * ETH_MAC_Address0 - MAC Address0 + * ETH_MAC_Address1 - MAC Address1 + * ETH_MAC_Address2 - MAC Address2 + * ETH_MAC_Address3 - MAC Address3 + * NewState - new state of the specified ETHERNET MAC address use. + * + * @return none + */ +void ETH_MACAddressPerfectFilterCmd(uint32_t MacAddr, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) |= ETH_MACA1HR_AE; + } + else + { + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) &= (~(uint32_t)ETH_MACA1HR_AE); + } +} + +/********************************************************************* + * @fn ETH_MACAddressFilterConfig + * + * @brief Set the filter type for the specified ETHERNET MAC address. + * + * @param MacAddr - specifies the ETHERNET MAC address. + * ETH_MAC_Address0 - MAC Address0 + * ETH_MAC_Address1 - MAC Address1 + * ETH_MAC_Address2 - MAC Address2 + * ETH_MAC_Address3 - MAC Address3 + * Filter - specifies the used frame received field for comparaison. + * ETH_MAC_AddressFilter_SA - MAC Address is used to compare with the + * SA fields of the received frame. + * ETH_MAC_AddressFilter_DA - MAC Address is used to compare with the + * DA fields of the received frame. + * + * @return none + */ +void ETH_MACAddressFilterConfig(uint32_t MacAddr, uint32_t Filter) +{ + if(Filter != ETH_MAC_AddressFilter_DA) + { + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) |= ETH_MACA1HR_SA; + } + else + { + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) &= (~(uint32_t)ETH_MACA1HR_SA); + } +} + +/********************************************************************* + * @fn ETH_MACAddressMaskBytesFilterConfig + * + * @brief Set the filter type for the specified ETHERNET MAC address. + * + * @param MacAddr - specifies the ETHERNET MAC address. + * ETH_MAC_Address1 - MAC Address1 + * ETH_MAC_Address2 - MAC Address2 + * ETH_MAC_Address3 - MAC Address3 + * MaskByte - specifies the used address bytes for comparaison + * ETH_MAC_AddressMask_Byte5 - Mask MAC Address high reg bits [7:0]. + * ETH_MAC_AddressMask_Byte4 - Mask MAC Address low reg bits [31:24]. + * ETH_MAC_AddressMask_Byte3 - Mask MAC Address low reg bits [23:16]. + * ETH_MAC_AddressMask_Byte2 - Mask MAC Address low reg bits [15:8]. + * ETH_MAC_AddressMask_Byte1 - Mask MAC Address low reg bits [7:0]. + * + * @return none + */ +void ETH_MACAddressMaskBytesFilterConfig(uint32_t MacAddr, uint32_t MaskByte) +{ + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) &= (~(uint32_t)ETH_MACA1HR_MBC); + (*(__IO uint32_t *)(ETH_MAC_ADDR_HBASE + MacAddr)) |= MaskByte; +} + +/********************************************************************* + * @fn ETH_DMATxDescChainInit + * + * @brief Initializes the DMA Tx descriptors in chain mode. + * + * @param DMATxDescTab - Pointer on the first Tx desc list + * TxBuff - Pointer on the first TxBuffer list + * TxBuffCount - Number of the used Tx desc in the list + * + * @return none + */ +void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount) +{ + uint32_t i = 0; + ETH_DMADESCTypeDef *DMATxDesc; + + DMATxDescToSet = DMATxDescTab; + + for(i = 0; i < TxBuffCount; i++) + { + DMATxDesc = DMATxDescTab + i; + DMATxDesc->Status = ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC; + DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i * ETH_MAX_PACKET_SIZE]); + + if(i < (TxBuffCount - 1)) + { + DMATxDesc->Buffer2NextDescAddr = (uint32_t)(DMATxDescTab + i + 1); + } + else + { + DMATxDesc->Buffer2NextDescAddr = (uint32_t)DMATxDescTab; + } + } + + ETH->DMATDLAR = (uint32_t)DMATxDescTab; +} + +/********************************************************************* + * @fn ETH_DMATxDescRingInit + * + * @brief Initializes the DMA Tx descriptors in ring mode. + * + * @param DMATxDescTab - Pointer on the first Tx desc list. + * TxBuff1 - Pointer on the first TxBuffer1 list. + * TxBuff2 - Pointer on the first TxBuffer2 list. + * TxBuffCount - Number of the used Tx desc in the list. + * + * @return none + */ +void ETH_DMATxDescRingInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t *TxBuff1, uint8_t *TxBuff2, uint32_t TxBuffCount) +{ + uint32_t i = 0; + ETH_DMADESCTypeDef *DMATxDesc; + + DMATxDescToSet = DMATxDescTab; + + for(i = 0; i < TxBuffCount; i++) + { + DMATxDesc = DMATxDescTab + i; + DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff1[i * ETH_MAX_PACKET_SIZE]); + DMATxDesc->Buffer2NextDescAddr = (uint32_t)(&TxBuff2[i * ETH_MAX_PACKET_SIZE]); + + if(i == (TxBuffCount - 1)) + { + DMATxDesc->Status = ETH_DMATxDesc_TER; + } + } + + ETH->DMATDLAR = (uint32_t)DMATxDescTab; +} + +/********************************************************************* + * @fn ETH_GetDMATxDescFlagStatus + * + * @brief Checks whether the specified ETHERNET DMA Tx Desc flag is set or not. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor + * ETH_DMATxDescFlag - specifies the flag to check. + * ETH_DMATxDesc_OWN - OWN bit - descriptor is owned by DMA engine + * ETH_DMATxDesc_IC - Interrupt on completetion + * ETH_DMATxDesc_LS - Last Segment + * ETH_DMATxDesc_FS - First Segment + * ETH_DMATxDesc_DC - Disable CRC + * ETH_DMATxDesc_DP - Disable Pad + * ETH_DMATxDesc_TTSE - Transmit Time Stamp Enable + * ETH_DMATxDesc_TER - Transmit End of Ring + * ETH_DMATxDesc_TCH - Second Address Chained + * ETH_DMATxDesc_TTSS - Tx Time Stamp Status + * ETH_DMATxDesc_IHE - IP Header Error + * ETH_DMATxDesc_ES - Error summary + * ETH_DMATxDesc_JT - Jabber Timeout + * ETH_DMATxDesc_FF - Frame Flushed - DMA/MTL flushed the frame due to SW flush + * ETH_DMATxDesc_PCE - Payload Checksum Error + * ETH_DMATxDesc_LCA - Loss of Carrier - carrier lost during tramsmission + * ETH_DMATxDesc_NC - No Carrier - no carrier signal from the tranceiver + * ETH_DMATxDesc_LCO - Late Collision - transmission aborted due to collision + * ETH_DMATxDesc_EC - Excessive Collision - transmission aborted after 16 collisions + * ETH_DMATxDesc_VF - VLAN Frame + * ETH_DMATxDesc_CC - Collision Count + * ETH_DMATxDesc_ED - Excessive Deferral + * ETH_DMATxDesc_UF - Underflow Error - late data arrival from the memory + * ETH_DMATxDesc_DB - Deferred Bit + * + * @return The new state of ETH_DMATxDescFlag (SET or RESET). + */ +FlagStatus ETH_GetDMATxDescFlagStatus(ETH_DMADESCTypeDef *DMATxDesc, uint32_t ETH_DMATxDescFlag) +{ + FlagStatus bitstatus = RESET; + + if((DMATxDesc->Status & ETH_DMATxDescFlag) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_GetDMATxDescCollisionCount + * + * @brief Returns the specified ETHERNET DMA Tx Desc collision count. + * + * @param pointer on a DMA Tx descriptor. + * + * @return The Transmit descriptor collision counter value. + */ +uint32_t ETH_GetDMATxDescCollisionCount(ETH_DMADESCTypeDef *DMATxDesc) +{ + return ((DMATxDesc->Status & ETH_DMATxDesc_CC) >> ETH_DMATXDESC_COLLISION_COUNTSHIFT); +} + +/********************************************************************* + * @fn ETH_SetDMATxDescOwnBit + * + * @brief Set the specified DMA Tx Desc Own bit. + * + * @param DMATxDesc - Pointer on a Tx desc + * + * @return none + */ +void ETH_SetDMATxDescOwnBit(ETH_DMADESCTypeDef *DMATxDesc) +{ + DMATxDesc->Status |= ETH_DMATxDesc_OWN; +} + +/********************************************************************* + * @fn ETH_DMATxDescTransmitITConfig + * + * @brief Enables or disables the specified DMA Tx Desc Transmit interrupt. + * + * @param Pointer on a Tx desc. + * NewState - new state of the DMA Tx Desc transmit interrupt. + * + * @return none + */ +void ETH_DMATxDescTransmitITConfig(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMATxDesc->Status |= ETH_DMATxDesc_IC; + } + else + { + DMATxDesc->Status &= (~(uint32_t)ETH_DMATxDesc_IC); + } +} + +/********************************************************************* + * @fn ETH_DMATxDescFrameSegmentConfig + * + * @brief Enables or disables the specified DMA Tx Desc Transmit interrupt. + * + * @param PDMATxDesc - Pointer on a Tx desc. + * ETH_DMATxDesc_FirstSegment - actual Tx desc contain first segment. + * + * @return none + */ +void ETH_DMATxDescFrameSegmentConfig(ETH_DMADESCTypeDef *DMATxDesc, uint32_t DMATxDesc_FrameSegment) +{ + DMATxDesc->Status |= DMATxDesc_FrameSegment; +} + +/********************************************************************* + * @fn ETH_DMATxDescChecksumInsertionConfig + * + * @brief Selects the specified ETHERNET DMA Tx Desc Checksum Insertion. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor. + * DMATxDesc_Checksum - specifies is the DMA Tx desc checksum insertion. + * + * @return none + */ +void ETH_DMATxDescChecksumInsertionConfig(ETH_DMADESCTypeDef *DMATxDesc, uint32_t DMATxDesc_Checksum) +{ + DMATxDesc->Status |= DMATxDesc_Checksum; +} + +/********************************************************************* + * @fn ETH_DMATxDescCRCCmd + * + * @brief Enables or disables the DMA Tx Desc CRC. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor + * NewState - new state of the specified DMA Tx Desc CRC. + * + * @return none + */ +void ETH_DMATxDescCRCCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMATxDesc->Status &= (~(uint32_t)ETH_DMATxDesc_DC); + } + else + { + DMATxDesc->Status |= ETH_DMATxDesc_DC; + } +} + +/********************************************************************* + * @fn ETH_DMATxDescEndOfRingCmd + * + * @brief Enables or disables the DMA Tx Desc end of ring. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor. + * NewState - new state of the specified DMA Tx Desc end of ring. + * + * @return none + */ +void ETH_DMATxDescEndOfRingCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMATxDesc->Status |= ETH_DMATxDesc_TER; + } + else + { + DMATxDesc->Status &= (~(uint32_t)ETH_DMATxDesc_TER); + } +} + +/********************************************************************* + * @fn ETH_DMATxDescSecondAddressChainedCmd + * + * @brief Enables or disables the DMA Tx Desc second address chained. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor + * NewState - new state of the specified DMA Tx Desc second address chained. + * + * @return none + */ +void ETH_DMATxDescSecondAddressChainedCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMATxDesc->Status |= ETH_DMATxDesc_TCH; + } + else + { + DMATxDesc->Status &= (~(uint32_t)ETH_DMATxDesc_TCH); + } +} + +/********************************************************************* + * @fn ETH_DMATxDescShortFramePaddingCmd + * + * @brief Enables or disables the DMA Tx Desc padding for frame shorter than 64 bytes. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor. + * NewState - new state of the specified DMA Tx Desc padding for frame shorter than 64 bytes. + * + * @return none + */ +void ETH_DMATxDescShortFramePaddingCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMATxDesc->Status &= (~(uint32_t)ETH_DMATxDesc_DP); + } + else + { + DMATxDesc->Status |= ETH_DMATxDesc_DP; + } +} + +/********************************************************************* + * @fn ETH_DMATxDescTimeStampCmd + * + * @brief Enables or disables the DMA Tx Desc time stamp. + * + * @param DMATxDesc - pointer on a DMA Tx descriptor + * NewState - new state of the specified DMA Tx Desc time stamp. + * + * @return none + */ +void ETH_DMATxDescTimeStampCmd(ETH_DMADESCTypeDef *DMATxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMATxDesc->Status |= ETH_DMATxDesc_TTSE; + } + else + { + DMATxDesc->Status &= (~(uint32_t)ETH_DMATxDesc_TTSE); + } +} + +/********************************************************************* + * @fn ETH_DMATxDescBufferSizeConfig + * + * @brief Configures the specified DMA Tx Desc buffer1 and buffer2 sizes. + * + * @param DMATxDesc - Pointer on a Tx desc. + * BufferSize1 - specifies the Tx desc buffer1 size. + * RxBuff2 - Pointer on the first RxBuffer2 list + * BufferSize2 - specifies the Tx desc buffer2 size (put "0" if not used). + * + * @return none + */ +void ETH_DMATxDescBufferSizeConfig(ETH_DMADESCTypeDef *DMATxDesc, uint32_t BufferSize1, uint32_t BufferSize2) +{ + DMATxDesc->ControlBufferSize |= (BufferSize1 | (BufferSize2 << ETH_DMATXDESC_BUFFER2_SIZESHIFT)); +} + +/********************************************************************* + * @fn ETH_DMARxDescChainInit + * + * @brief Initializes the DMA Rx descriptors in chain mode. + * + * @param DMARxDescTab - Pointer on the first Rx desc list. + * RxBuff - Pointer on the first RxBuffer list. + * RxBuffCount - Number of the used Rx desc in the list. + * + * @return none + */ +void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount) +{ + uint32_t i = 0; + ETH_DMADESCTypeDef *DMARxDesc; + + DMARxDescToGet = DMARxDescTab; + + for(i = 0; i < RxBuffCount; i++) + { + DMARxDesc = DMARxDescTab + i; + DMARxDesc->Status = ETH_DMARxDesc_OWN; + DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_MAX_PACKET_SIZE; + DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i * ETH_MAX_PACKET_SIZE]); + + if(i < (RxBuffCount - 1)) + { + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab + i + 1); + } + else + { + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab); + } + } + + ETH->DMARDLAR = (uint32_t)DMARxDescTab; +} + +/********************************************************************* + * @fn ETH_DMARxDescRingInit + * + * @brief Initializes the DMA Rx descriptors in ring mode. + * + * @param DMARxDescTab - Pointer on the first Rx desc list. + * RxBuff1 - Pointer on the first RxBuffer1 list. + * RxBuff2 - Pointer on the first RxBuffer2 list + * RxBuffCount - Number of the used Rx desc in the list. + * + * @return none + */ +void ETH_DMARxDescRingInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff1, uint8_t *RxBuff2, uint32_t RxBuffCount) +{ + uint32_t i = 0; + ETH_DMADESCTypeDef *DMARxDesc; + + DMARxDescToGet = DMARxDescTab; + + for(i = 0; i < RxBuffCount; i++) + { + DMARxDesc = DMARxDescTab + i; + DMARxDesc->Status = ETH_DMARxDesc_OWN; + DMARxDesc->ControlBufferSize = ETH_MAX_PACKET_SIZE; + DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff1[i * ETH_MAX_PACKET_SIZE]); + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(&RxBuff2[i * ETH_MAX_PACKET_SIZE]); + + if(i == (RxBuffCount - 1)) + { + DMARxDesc->ControlBufferSize |= ETH_DMARxDesc_RER; + } + } + + ETH->DMARDLAR = (uint32_t)DMARxDescTab; +} + +/********************************************************************* + * @fn ETH_GetDMARxDescFlagStatus + * + * @brief Checks whether the specified ETHERNET Rx Desc flag is set or not. + * + * @param DMARxDesc - pointer on a DMA Rx descriptor. + * ETH_DMARxDescFlag - specifies the flag to check. + * ETH_DMARxDesc_OWN - OWN bit: descriptor is owned by DMA engine + * ETH_DMARxDesc_AFM - DA Filter Fail for the rx frame + * ETH_DMARxDesc_ES - Error summary + * ETH_DMARxDesc_DE - Desciptor error: no more descriptors for receive frame + * ETH_DMARxDesc_SAF - SA Filter Fail for the received frame + * ETH_DMARxDesc_LE - Frame size not matching with length field + * ETH_DMARxDesc_OE - Overflow Error: Frame was damaged due to buffer overflow + * ETH_DMARxDesc_VLAN - VLAN Tag: received frame is a VLAN frame + * ETH_DMARxDesc_FS - First descriptor of the frame + * ETH_DMARxDesc_LS - Last descriptor of the frame + * ETH_DMARxDesc_IPV4HCE - IPC Checksum Error/Giant Frame: Rx Ipv4 header checksum error + * ETH_DMARxDesc_LC - Late collision occurred during reception + * ETH_DMARxDesc_FT - Frame type - Ethernet, otherwise 802.3 + * ETH_DMARxDesc_RWT - Receive Watchdog Timeout: watchdog timer expired during reception + * ETH_DMARxDesc_RE - Receive error: error reported by MII interface + * ETH_DMARxDesc_DE - Dribble bit error: frame contains non int multiple of 8 bits + * ETH_DMARxDesc_CE - CRC error + * ETH_DMARxDesc_MAMPCE - Rx MAC Address/Payload Checksum Error: Rx MAC address matched/ Rx Payload Checksum Error + * + * @return The new state of ETH_DMARxDescFlag (SET or RESET). + */ +FlagStatus ETH_GetDMARxDescFlagStatus(ETH_DMADESCTypeDef *DMARxDesc, uint32_t ETH_DMARxDescFlag) +{ + FlagStatus bitstatus = RESET; + + if((DMARxDesc->Status & ETH_DMARxDescFlag) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_SetDMARxDescOwnBit + * + * @brief Set the specified DMA Rx Desc Own bit. + * + * @param DMARxDesc - Pointer on a Rx desc + * + * @return none + */ +void ETH_SetDMARxDescOwnBit(ETH_DMADESCTypeDef *DMARxDesc) +{ + DMARxDesc->Status |= ETH_DMARxDesc_OWN; +} + +/********************************************************************* + * @fn ETH_GetDMARxDescFrameLength + * + * @brief Returns the specified DMA Rx Desc frame length. + * + * @param DMARxDesc - pointer on a DMA Rx descriptor + * + * @return The Rx descriptor received frame length. + */ +uint32_t ETH_GetDMARxDescFrameLength(ETH_DMADESCTypeDef *DMARxDesc) +{ + return ((DMARxDesc->Status & ETH_DMARxDesc_FL) >> ETH_DMARXDESC_FRAME_LENGTHSHIFT); +} + +/********************************************************************* + * @fn ETH_DMARxDescReceiveITConfig + * + * @brief Enables or disables the specified DMA Rx Desc receive interrupt. + * + * @param DMARxDesc - Pointer on a Rx desc + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void ETH_DMARxDescReceiveITConfig(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMARxDesc->ControlBufferSize &= (~(uint32_t)ETH_DMARxDesc_DIC); + } + else + { + DMARxDesc->ControlBufferSize |= ETH_DMARxDesc_DIC; + } +} + +/********************************************************************* + * @fn ETH_DMARxDescEndOfRingCmd + * + * @brief Enables or disables the DMA Rx Desc end of ring. + * + * @param DMARxDesc - pointer on a DMA Rx descriptor. + * NewState - new state of the specified DMA Rx Desc end of ring. + * + * @return none + */ +void ETH_DMARxDescEndOfRingCmd(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMARxDesc->ControlBufferSize |= ETH_DMARxDesc_RER; + } + else + { + DMARxDesc->ControlBufferSize &= (~(uint32_t)ETH_DMARxDesc_RER); + } +} + +/********************************************************************* + * @fn ETH_DMARxDescSecondAddressChainedCmd + * + * @brief Returns the specified ETHERNET DMA Rx Desc buffer size. + * + * @param DMARxDesc - pointer on a DMA Rx descriptor. + * NewState - new state of the specified DMA Rx Desc second address chained. + * + * @return none + */ +void ETH_DMARxDescSecondAddressChainedCmd(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + DMARxDesc->ControlBufferSize |= ETH_DMARxDesc_RCH; + } + else + { + DMARxDesc->ControlBufferSize &= (~(uint32_t)ETH_DMARxDesc_RCH); + } +} + +/********************************************************************* + * @fn ETH_GetDMARxDescBufferSize + * + * @brief Returns the specified ETHERNET DMA Rx Desc buffer size. + * + * @param DMARxDesc - pointer on a DMA Rx descriptor. + * DMARxDesc_Buffer - specifies the DMA Rx Desc buffer. + * ETH_DMARxDesc_Buffer1 - DMA Rx Desc Buffer1 + * ETH_DMARxDesc_Buffer2 - DMA Rx Desc Buffer2 + * + * @return The Receive descriptor frame length. + */ +uint32_t ETH_GetDMARxDescBufferSize(ETH_DMADESCTypeDef *DMARxDesc, uint32_t DMARxDesc_Buffer) +{ + if(DMARxDesc_Buffer != ETH_DMARxDesc_Buffer1) + { + return ((DMARxDesc->ControlBufferSize & ETH_DMARxDesc_RBS2) >> ETH_DMARXDESC_BUFFER2_SIZESHIFT); + } + else + { + return (DMARxDesc->ControlBufferSize & ETH_DMARxDesc_RBS1); + } +} + +/********************************************************************* + * @fn ETH_SoftwareReset + * + * @brief Resets all MAC subsystem internal registers and logic. + * + * @return none + */ +void ETH_SoftwareReset(void) +{ + ETH->DMABMR |= ETH_DMABMR_SR; +} + +/********************************************************************* + * @fn ETH_GetSoftwareResetStatus + * + * @brief Checks whether the ETHERNET software reset bit is set or not. + * + * @return The new state of DMA Bus Mode register SR bit (SET or RESET). + */ +FlagStatus ETH_GetSoftwareResetStatus(void) +{ + FlagStatus bitstatus = RESET; + if((ETH->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + printf("ETH->DMABMR is:%08x\n", ETH->DMABMR); + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_GetlinkStaus + * + * @brief Checks whether the internal 10BASE-T PHY is link or not. + * + * @return Internal 10BASE-T PHY is link or not. + */ +FlagStatus ETH_GetlinkStaus(void) +{ + FlagStatus bitstatus = RESET; + + if((ETH->DMASR & 0x80000000) != (uint32_t)RESET) + { + bitstatus = PHY_10BASE_T_LINKED; + } + else + { + bitstatus = PHY_10BASE_T_NOT_LINKED; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_GetDMAFlagStatus + * + * @brief Checks whether the specified ETHERNET DMA flag is set or not. + * + * @param ETH_DMA_FLAG - specifies the flag to check. + * ETH_DMA_FLAG_TST - Time-stamp trigger flag + * ETH_DMA_FLAG_PMT - PMT flag + * ETH_DMA_FLAG_MMC - MMC flag + * ETH_DMA_FLAG_DataTransferError - Error bits 0-data buffer, 1-desc. access + * ETH_DMA_FLAG_ReadWriteError - Error bits 0-write trnsf, 1-read transfr + * ETH_DMA_FLAG_AccessError - Error bits 0-Rx DMA, 1-Tx DMA + * ETH_DMA_FLAG_NIS - Normal interrupt summary flag + * ETH_DMA_FLAG_AIS - Abnormal interrupt summary flag + * ETH_DMA_FLAG_ER - Early receive flag + * ETH_DMA_FLAG_FBE - Fatal bus error flag + * ETH_DMA_FLAG_ET - Early transmit flag + * ETH_DMA_FLAG_RWT - Receive watchdog timeout flag + * ETH_DMA_FLAG_RPS - Receive process stopped flag + * ETH_DMA_FLAG_RBU - Receive buffer unavailable flag + * ETH_DMA_FLAG_R - Receive flag + * ETH_DMA_FLAG_TU - Underflow flag + * ETH_DMA_FLAG_RO - Overflow flag + * ETH_DMA_FLAG_TJT - Transmit jabber timeout flag + * ETH_DMA_FLAG_TBU - Transmit buffer unavailable flag + * ETH_DMA_FLAG_TPS - Transmit process stopped flag + * ETH_DMA_FLAG_T - Transmit flag + * + * @return Internal 10BASE-T PHY is link or not. + */ +FlagStatus ETH_GetDMAFlagStatus(uint32_t ETH_DMA_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((ETH->DMASR & ETH_DMA_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_DMAClearFlag + * + * @brief Checks whether the specified ETHERNET DMA interrupt has occured or not. + * + * @param ETH_DMA_FLAG - specifies the flag to clear. + * ETH_DMA_FLAG_NIS - Normal interrupt summary flag + * ETH_DMA_FLAG_AIS - Abnormal interrupt summary flag + * ETH_DMA_FLAG_ER - Early receive flag + * ETH_DMA_FLAG_FBE - Fatal bus error flag + * ETH_DMA_FLAG_ETI - Early transmit flag + * ETH_DMA_FLAG_RWT - Receive watchdog timeout flag + * ETH_DMA_FLAG_RPS - Receive process stopped flag + * ETH_DMA_FLAG_RBU - Receive buffer unavailable flag + * ETH_DMA_FLAG_R - Receive flag + * ETH_DMA_FLAG_TU - Transmit Underflow flag + * ETH_DMA_FLAG_RO - Receive Overflow flag + * ETH_DMA_FLAG_TJT - Transmit jabber timeout flag + * ETH_DMA_FLAG_TBU - Transmit buffer unavailable flag + * ETH_DMA_FLAG_TPS - Transmit process stopped flag + * ETH_DMA_FLAG_T - Transmit flag + * + * @return none + */ +void ETH_DMAClearFlag(uint32_t ETH_DMA_FLAG) +{ + ETH->DMASR = (uint32_t)ETH_DMA_FLAG; +} + +/********************************************************************* + * @fn ETH_GetDMAITStatus + * + * @brief Checks whether the specified ETHERNET DMA interrupt has occured or not. + * + * @param ETH_DMA_IT - specifies the interrupt pending bit to clear. + * ETH_DMA_IT_TST - Time-stamp trigger interrupt + * ETH_DMA_IT_PMT - PMT interrupt + * ETH_DMA_IT_MMC - MMC interrupt + * ETH_DMA_IT_NIS - Normal interrupt summary + * ETH_DMA_IT_AIS - Abnormal interrupt summary + * ETH_DMA_IT_ER - Early receive interrupt + * ETH_DMA_IT_FBE - Fatal bus error interrupt + * ETH_DMA_IT_ET - Early transmit interrupt + * ETH_DMA_IT_RWT - Receive watchdog timeout interrupt + * ETH_DMA_IT_RPS - Receive process stopped interrupt + * ETH_DMA_IT_RBU - Receive buffer unavailable interrupt + * ETH_DMA_IT_R - Receive interrupt + * ETH_DMA_IT_TU - Underflow interrupt + * ETH_DMA_IT_RO - Overflow interrupt + * ETH_DMA_IT_TJT - Transmit jabber timeout interrupt + * ETH_DMA_IT_TBU - Transmit buffer unavailable interrupt + * ETH_DMA_IT_TPS - Transmit process stopped interrupt + * ETH_DMA_IT_T - Transmit interrupt + * + * @return The new state of ETH_DMA_IT (SET or RESET). + */ +ITStatus ETH_GetDMAITStatus(uint32_t ETH_DMA_IT) +{ + ITStatus bitstatus = RESET; + + if((ETH->DMASR & ETH_DMA_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_DMAClearITPendingBit + * + * @brief Clears the ETHERNET’s DMA IT pending bit. + * + * @param ETH_DMA_IT - specifies the interrupt pending bit to clear. + * ETH_DMA_IT_NIS - Normal interrupt summary + * ETH_DMA_IT_AIS - Abnormal interrupt summary + * ETH_DMA_IT_ER - Early receive interrupt + * ETH_DMA_IT_FBE - Fatal bus error interrupt + * ETH_DMA_IT_ETI - Early transmit interrupt + * ETH_DMA_IT_RWT - Receive watchdog timeout interrupt + * ETH_DMA_IT_RPS - Receive process stopped interrupt + * ETH_DMA_IT_RBU - Receive buffer unavailable interrupt + * ETH_DMA_IT_R - Receive interrupt + * ETH_DMA_IT_TU - Transmit Underflow interrupt + * ETH_DMA_IT_RO - Receive Overflow interrupt + * ETH_DMA_IT_TJT - Transmit jabber timeout interrupt + * ETH_DMA_IT_TBU - Transmit buffer unavailable interrupt + * ETH_DMA_IT_TPS - Transmit process stopped interrupt + * ETH_DMA_IT_T - Transmit interrupt + * + * @return none + */ +void ETH_DMAClearITPendingBit(uint32_t ETH_DMA_IT) +{ + ETH->DMASR = (uint32_t)ETH_DMA_IT; +} + +/********************************************************************* + * @fn ETH_GetTransmitProcessState + * + * @brief Returns the ETHERNET DMA Transmit Process State. + * + * @return The new ETHERNET DMA Transmit Process State - + * ETH_DMA_TransmitProcess_Stopped - Stopped - Reset or Stop Tx Command issued + * ETH_DMA_TransmitProcess_Fetching - Running - fetching the Tx descriptor + * ETH_DMA_TransmitProcess_Waiting - Running - waiting for status + * ETH_DMA_TransmitProcess_Reading - unning - reading the data from host memory + * ETH_DMA_TransmitProcess_Suspended - Suspended - Tx Desciptor unavailabe + * ETH_DMA_TransmitProcess_Closing - Running - closing Rx descriptor + */ +uint32_t ETH_GetTransmitProcessState(void) +{ + return ((uint32_t)(ETH->DMASR & ETH_DMASR_TS)); +} + +/********************************************************************* + * @fn ETH_GetReceiveProcessState + * + * @brief Returns the ETHERNET DMA Receive Process State. + * + * @return The new ETHERNET DMA Receive Process State: + * ETH_DMA_ReceiveProcess_Stopped - Stopped - Reset or Stop Rx Command issued + * ETH_DMA_ReceiveProcess_Fetching - Running - fetching the Rx descriptor + * ETH_DMA_ReceiveProcess_Waiting - Running - waiting for packet + * ETH_DMA_ReceiveProcess_Suspended - Suspended - Rx Desciptor unavailable + * ETH_DMA_ReceiveProcess_Closing - Running - closing descriptor + * ETH_DMA_ReceiveProcess_Queuing - Running - queuing the recieve frame into host memory + */ +uint32_t ETH_GetReceiveProcessState(void) +{ + return ((uint32_t)(ETH->DMASR & ETH_DMASR_RS)); +} + +/********************************************************************* + * @fn ETH_FlushTransmitFIFO + * + * @brief Clears the ETHERNET transmit FIFO. + * + * @return none + */ +void ETH_FlushTransmitFIFO(void) +{ + ETH->DMAOMR |= ETH_DMAOMR_FTF; +} + +/********************************************************************* + * @fn ETH_GetFlushTransmitFIFOStatus + * + * @brief Checks whether the ETHERNET transmit FIFO bit is cleared or not. + * + * @return The new state of ETHERNET flush transmit FIFO bit (SET or RESET). + */ +FlagStatus ETH_GetFlushTransmitFIFOStatus(void) +{ + FlagStatus bitstatus = RESET; + if((ETH->DMAOMR & ETH_DMAOMR_FTF) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_DMATransmissionCmd + * + * @brief Enables or disables the DMA transmission. + * + * @param NewState - new state of the DMA transmission. + * + * @return none + */ +void ETH_DMATransmissionCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->DMAOMR |= ETH_DMAOMR_ST; + } + else + { + ETH->DMAOMR &= ~ETH_DMAOMR_ST; + } +} + +/********************************************************************* + * @fn ETH_DMAReceptionCmd + * + * @brief Enables or disables the DMA reception. + * + * @param NewState - new state of the DMA reception. + * + * @return none + */ +void ETH_DMAReceptionCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->DMAOMR |= ETH_DMAOMR_SR; + } + else + { + ETH->DMAOMR &= ~ETH_DMAOMR_SR; + } +} + +/********************************************************************* + * @fn ETH_DMAITConfig + * + * @brief Enables or disables the specified ETHERNET DMA interrupts. + * + * @param ETH_DMA_IT - specifies the ETHERNET DMA interrupt sources to be enabled or disabled. + * ETH_DMA_IT_NIS - Normal interrupt summary + * ETH_DMA_IT_AIS - Abnormal interrupt summary + * ETH_DMA_IT_ER - Early receive interrupt + * ETH_DMA_IT_FBE - Fatal bus error interrupt + * ETH_DMA_IT_ET - Early transmit interrupt + * ETH_DMA_IT_RWT - Receive watchdog timeout interrupt + * ETH_DMA_IT_RPS - Receive process stopped interrupt + * ETH_DMA_IT_RBU - Receive buffer unavailable interrupt + * ETH_DMA_IT_R - Receive interrupt + * ETH_DMA_IT_TU - Underflow interrupt + * ETH_DMA_IT_RO - Overflow interrupt + * ETH_DMA_IT_TJT - Transmit jabber timeout interrupt + * ETH_DMA_IT_TBU - Transmit buffer unavailable interrupt + * ETH_DMA_IT_TPS - Transmit process stopped interrupt + * ETH_DMA_IT_T - Transmit interrupt + * ETH_DMA_Overflow_RxFIFOCounter - Overflow for FIFO Overflow Counter + * ETH_DMA_Overflow_MissedFrameCounter - Overflow for Missed Frame Counter + * NewState - new state of the specified ETHERNET DMA interrupts. + * + * @return new state of the specified ETHERNET DMA interrupts. + */ +void ETH_DMAITConfig(uint32_t ETH_DMA_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->DMAIER |= ETH_DMA_IT; + } + else + { + ETH->DMAIER &= (~(uint32_t)ETH_DMA_IT); + } +} + +/********************************************************************* + * @fn ETH_GetDMAOverflowStatus + * + * @brief Checks whether the specified ETHERNET DMA overflow flag is set or not. + * + * @param ETH_DMA_Overflow - specifies the DMA overflow flag to check. + * ETH_DMA_Overflow_RxFIFOCounter - Overflow for FIFO Overflow Counter + * ETH_DMA_Overflow_MissedFrameCounter - Overflow for Missed Frame Counter + * + * @return The new state of ETHERNET DMA overflow Flag (SET or RESET). + */ +FlagStatus ETH_GetDMAOverflowStatus(uint32_t ETH_DMA_Overflow) +{ + FlagStatus bitstatus = RESET; + + if((ETH->DMAMFBOCR & ETH_DMA_Overflow) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_GetRxOverflowMissedFrameCounter + * + * @brief Get the ETHERNET DMA Rx Overflow Missed Frame Counter value. + * + * @return The value of Rx overflow Missed Frame Counter. + */ +uint32_t ETH_GetRxOverflowMissedFrameCounter(void) +{ + return ((uint32_t)((ETH->DMAMFBOCR & ETH_DMAMFBOCR_MFA) >> ETH_DMA_RX_OVERFLOW_MISSEDFRAMES_COUNTERSHIFT)); +} + +/********************************************************************* + * @fn ETH_GetBufferUnavailableMissedFrameCounter + * + * @brief Get the ETHERNET DMA Buffer Unavailable Missed Frame Counter value. + * + * @return The value of Buffer unavailable Missed Frame Counter. + */ +uint32_t ETH_GetBufferUnavailableMissedFrameCounter(void) +{ + return ((uint32_t)(ETH->DMAMFBOCR) & ETH_DMAMFBOCR_MFC); +} + +/********************************************************************* + * @fn ETH_GetCurrentTxDescStartAddress + * + * @brief Get the ETHERNET DMA DMACHTDR register value. + * + * @return The value of the current Tx desc start address. + */ +uint32_t ETH_GetCurrentTxDescStartAddress(void) +{ + return ((uint32_t)(ETH->DMACHTDR)); +} + +/********************************************************************* + * @fn ETH_GetCurrentRxDescStartAddress + * + * @brief Get the ETHERNET DMA DMACHRDR register value. + * + * @return The value of the current Rx desc start address. + */ +uint32_t ETH_GetCurrentRxDescStartAddress(void) +{ + return ((uint32_t)(ETH->DMACHRDR)); +} + +/********************************************************************* + * @fn ETH_GetCurrentTxBufferAddress + * + * @brief Get the ETHERNET DMA DMACHTBAR register value. + * + * @return The value of the current Tx buffer address. + */ +uint32_t ETH_GetCurrentTxBufferAddress(void) +{ + return (DMATxDescToSet->Buffer1Addr); +} + +/********************************************************************* + * @fn ETH_GetCurrentRxBufferAddress + * + * @brief Get the ETHERNET DMA DMACHRBAR register value. + * + * @return The value of the current Rx buffer address. + */ +uint32_t ETH_GetCurrentRxBufferAddress(void) +{ + return ((uint32_t)(ETH->DMACHRBAR)); +} + +/********************************************************************* + * @fn ETH_ResumeDMATransmission + * + * @brief Resumes the DMA Transmission by writing to the DmaTxPollDemand register + * + * @return none + */ +void ETH_ResumeDMATransmission(void) +{ + ETH->DMATPDR = 0; +} + +/********************************************************************* + * @fn ETH_ResumeDMAReception + * + * @brief Resumes the DMA Transmission by writing to the DmaRxPollDemand register. + * + * @return none + */ +void ETH_ResumeDMAReception(void) +{ + ETH->DMARPDR = 0; +} + +/********************************************************************* + * @fn ETH_ResetWakeUpFrameFilterRegisterPointer + * + * @brief Reset Wakeup frame filter register pointer. + * + * @return none + */ +void ETH_ResetWakeUpFrameFilterRegisterPointer(void) +{ + ETH->MACPMTCSR |= ETH_MACPMTCSR_WFFRPR; +} + +/********************************************************************* + * @fn ETH_SetWakeUpFrameFilterRegister + * + * @brief Populates the remote wakeup frame registers. + * + * @param Buffer - Pointer on remote WakeUp Frame Filter Register buffer data (8 words). + * + * @return none + */ +void ETH_SetWakeUpFrameFilterRegister(uint32_t *Buffer) +{ + uint32_t i = 0; + + for(i = 0; i < ETH_WAKEUP_REGISTER_LENGTH; i++) + { + ETH->MACRWUFFR = Buffer[i]; + } +} + +/********************************************************************* + * @fn ETH_GlobalUnicastWakeUpCmd + * + * @brief Enables or disables any unicast packet filtered by the MAC address. + * + * @param NewState - new state of the MAC Global Unicast Wake-Up. + * + * @return none + */ +void ETH_GlobalUnicastWakeUpCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACPMTCSR |= ETH_MACPMTCSR_GU; + } + else + { + ETH->MACPMTCSR &= ~ETH_MACPMTCSR_GU; + } +} + +/********************************************************************* + * @fn ETH_GetPMTFlagStatus + * + * @brief Checks whether the specified ETHERNET PMT flag is set or not. + * + * @param ETH_PMT_FLAG - specifies the flag to check. + * + * @return The new state of ETHERNET PMT Flag (SET or RESET). + */ +FlagStatus ETH_GetPMTFlagStatus(uint32_t ETH_PMT_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((ETH->MACPMTCSR & ETH_PMT_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_WakeUpFrameDetectionCmd + * + * @brief Enables or disables the MAC Wake-Up Frame Detection. + * + * @param NewState - new state of the MAC Wake-Up Frame Detection. + * + * @return none + */ +void ETH_WakeUpFrameDetectionCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACPMTCSR |= ETH_MACPMTCSR_WFE; + } + else + { + ETH->MACPMTCSR &= ~ETH_MACPMTCSR_WFE; + } +} + +/********************************************************************* + * @fn ETH_MagicPacketDetectionCmd + * + * @brief Enables or disables the MAC Magic Packet Detection. + * + * @param NewState - new state of the MAC Magic Packet Detection. + * + * @return none + */ +void ETH_MagicPacketDetectionCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACPMTCSR |= ETH_MACPMTCSR_MPE; + } + else + { + ETH->MACPMTCSR &= ~ETH_MACPMTCSR_MPE; + } +} + +/********************************************************************* + * @fn ETH_PowerDownCmd + * + * @brief Enables or disables the MAC Power Down. + * + * @param NewState - new state of the MAC Power Down. + * + * @return none + */ +void ETH_PowerDownCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MACPMTCSR |= ETH_MACPMTCSR_PD; + } + else + { + ETH->MACPMTCSR &= ~ETH_MACPMTCSR_PD; + } +} + +/********************************************************************* + * @fn ETH_MMCCounterFreezeCmd + * + * @brief Enables or disables the MMC Counter Freeze. + * + * @param NewState - new state of the MMC Counter Freeze. + * + * @return none + */ +void ETH_MMCCounterFreezeCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MMCCR |= ETH_MMCCR_MCF; + } + else + { + ETH->MMCCR &= ~ETH_MMCCR_MCF; + } +} + +/********************************************************************* + * @fn ETH_MMCResetOnReadCmd + * + * @brief Enables or disables the MMC Reset On Read. + * + * @param NewState - new state of the MMC Reset On Read. + * + * @return none + */ +void ETH_MMCResetOnReadCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MMCCR |= ETH_MMCCR_ROR; + } + else + { + ETH->MMCCR &= ~ETH_MMCCR_ROR; + } +} + +/********************************************************************* + * @fn ETH_MMCCounterRolloverCmd + * + * @brief Enables or disables the MMC Counter Stop Rollover. + * + * @param NewState - new state of the MMC Counter Stop Rollover. + * + * @return none + */ +void ETH_MMCCounterRolloverCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->MMCCR &= ~ETH_MMCCR_CSR; + } + else + { + ETH->MMCCR |= ETH_MMCCR_CSR; + } +} + +/********************************************************************* + * @fn ETH_MMCCountersReset + * + * @brief Resets the MMC Counters. + * + * @return none + */ +void ETH_MMCCountersReset(void) +{ + ETH->MMCCR |= ETH_MMCCR_CR; +} + +/********************************************************************* + * @fn ETH_MMCITConfig + * + * @brief Enables or disables the specified ETHERNET MMC interrupts. + * + * @param ETH_MMC_IT - specifies the ETHERNET MMC interrupt. + * ETH_MMC_IT_TGF - When Tx good frame counter reaches half the maximum value. + * ETH_MMC_IT_TGFMSC - When Tx good multi col counter reaches half the maximum value. + * ETH_MMC_IT_TGFSC - When Tx good single col counter reaches half the maximum value. + * ETH_MMC_IT_RGUF - When Rx good unicast frames counter reaches half the maximum value. + * ETH_MMC_IT_RFAE - When Rx alignment error counter reaches half the maximum value. + * ETH_MMC_IT_RFCE - When Rx crc error counter reaches half the maximum value. + * NewState - new state of the specified ETHERNET MMC interrupts. + * + * @return none + */ +void ETH_MMCITConfig(uint32_t ETH_MMC_IT, FunctionalState NewState) +{ + if((ETH_MMC_IT & (uint32_t)0x10000000) != (uint32_t)RESET) + { + ETH_MMC_IT &= 0xEFFFFFFF; + + if(NewState != DISABLE) + { + ETH->MMCRIMR &= (~(uint32_t)ETH_MMC_IT); + } + else + { + ETH->MMCRIMR |= ETH_MMC_IT; + } + } + else + { + if(NewState != DISABLE) + { + ETH->MMCTIMR &= (~(uint32_t)ETH_MMC_IT); + } + else + { + ETH->MMCTIMR |= ETH_MMC_IT; + } + } +} + +/********************************************************************* + * @fn ETH_GetMMCITStatus + * + * @brief Checks whether the specified ETHERNET MMC IT is set or not. + * + * @param ETH_MMC_IT - specifies the ETHERNET MMC interrupt. + * ETH_MMC_IT_TxFCGC - When Tx good frame counter reaches half the maximum value. + * ETH_MMC_IT_TxMCGC - When Tx good multi col counter reaches half the maximum value. + * ETH_MMC_IT_TxSCGC - When Tx good single col counter reaches half the maximum value . + * ETH_MMC_IT_RxUGFC - When Rx good unicast frames counter reaches half the maximum value. + * ETH_MMC_IT_RxAEC - When Rx alignment error counter reaches half the maximum value. + * ETH_MMC_IT_RxCEC - When Rx crc error counter reaches half the maximum value. + * + * @return The value of ETHERNET MMC IT (SET or RESET). + */ +ITStatus ETH_GetMMCITStatus(uint32_t ETH_MMC_IT) +{ + ITStatus bitstatus = RESET; + + if((ETH_MMC_IT & (uint32_t)0x10000000) != (uint32_t)RESET) + { + if((((ETH->MMCRIR & ETH_MMC_IT) != (uint32_t)RESET)) && ((ETH->MMCRIMR & ETH_MMC_IT) != (uint32_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else + { + if((((ETH->MMCTIR & ETH_MMC_IT) != (uint32_t)RESET)) && ((ETH->MMCRIMR & ETH_MMC_IT) != (uint32_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + + return bitstatus; +} + +/********************************************************************* + * @fn ETH_GetMMCRegister + * + * @brief Get the specified ETHERNET MMC register value. + * + * @param ETH_MMCReg - specifies the ETHERNET MMC register. + * ETH_MMCCR - MMC CR register + * ETH_MMCRIR - MMC RIR register + * ETH_MMCTIR - MMC TIR register + * ETH_MMCRIMR - MMC RIMR register + * ETH_MMCTIMR - MMC TIMR register + * ETH_MMCTGFSCCR - MMC TGFSCCR register + * ETH_MMCTGFMSCCR - MMC TGFMSCCR register + * ETH_MMCTGFCR - MMC TGFCR register + * ETH_MMCRFCECR - MMC RFCECR register + * ETH_MMCRFAECR - MMC RFAECR register + * ETH_MMCRGUFCR - MMC RGUFCRregister + * + * @return The value of ETHERNET MMC Register value. + */ +uint32_t ETH_GetMMCRegister(uint32_t ETH_MMCReg) +{ + return (*(__IO uint32_t *)(ETH_MAC_BASE + ETH_MMCReg)); +} + +/********************************************************************* + * @fn ETH_EnablePTPTimeStampAddend + * + * @brief Updated the PTP block for fine correction with the Time Stamp Addend register value. + * + * @return none + */ +void ETH_EnablePTPTimeStampAddend(void) +{ + ETH->PTPTSCR |= ETH_PTPTSCR_TSARU; +} + +/********************************************************************* + * @fn ETH_EnablePTPTimeStampInterruptTrigger + * + * @brief Enable the PTP Time Stamp interrupt trigger + * + * @return none + */ +void ETH_EnablePTPTimeStampInterruptTrigger(void) +{ + ETH->PTPTSCR |= ETH_PTPTSCR_TSITE; +} + +/********************************************************************* + * @fn ETH_EnablePTPTimeStampUpdate + * + * @brief Updated the PTP system time with the Time Stamp Update register value. + * + * @return none + */ +void ETH_EnablePTPTimeStampUpdate(void) +{ + ETH->PTPTSCR |= ETH_PTPTSCR_TSSTU; +} + +/********************************************************************* + * @fn ETH_InitializePTPTimeStamp + * + * @brief Initialize the PTP Time Stamp. + * + * @return none + */ +void ETH_InitializePTPTimeStamp(void) +{ + ETH->PTPTSCR |= ETH_PTPTSCR_TSSTI; +} + +/********************************************************************* + * @fn ETH_PTPUpdateMethodConfig + * + * @brief Selects the PTP Update method. + * + * @param UpdateMethod - the PTP Update method. + * + * @return none + */ +void ETH_PTPUpdateMethodConfig(uint32_t UpdateMethod) +{ + if(UpdateMethod != ETH_PTP_CoarseUpdate) + { + ETH->PTPTSCR |= ETH_PTPTSCR_TSFCU; + } + else + { + ETH->PTPTSCR &= (~(uint32_t)ETH_PTPTSCR_TSFCU); + } +} + +/********************************************************************* + * @fn ETH_PTPTimeStampCmd + * + * @brief Enables or disables the PTP time stamp for transmit and receive frames. + * + * @param NewState - new state of the PTP time stamp for transmit and receive frames. + * + * @return none + */ +void ETH_PTPTimeStampCmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + ETH->PTPTSCR |= ETH_PTPTSCR_TSE; + } + else + { + ETH->PTPTSCR &= (~(uint32_t)ETH_PTPTSCR_TSE); + } +} + +/********************************************************************* + * @fn ETH_GetPTPFlagStatus + * + * @brief Checks whether the specified ETHERNET PTP flag is set or not. + * + * @param The new state of ETHERNET PTP Flag (SET or RESET). + * + * @return none + */ +FlagStatus ETH_GetPTPFlagStatus(uint32_t ETH_PTP_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((ETH->PTPTSCR & ETH_PTP_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn ETH_SetPTPSubSecondIncrement + * + * @brief Sets the system time Sub-Second Increment value. + * + * @param SubSecondValue - specifies the PTP Sub-Second Increment Register value. + * + * @return none + */ +void ETH_SetPTPSubSecondIncrement(uint32_t SubSecondValue) +{ + ETH->PTPSSIR = SubSecondValue; +} + +/********************************************************************* + * @fn ETH_SetPTPTimeStampUpdate + * + * @brief Sets the Time Stamp update sign and values. + * + * @param Sign - specifies the PTP Time update value sign. + * SecondValue - specifies the PTP Time update second value. + * SubSecondValue - specifies the PTP Time update sub-second value. + * + * @return none + */ +void ETH_SetPTPTimeStampUpdate(uint32_t Sign, uint32_t SecondValue, uint32_t SubSecondValue) +{ + ETH->PTPTSHUR = SecondValue; + ETH->PTPTSLUR = Sign | SubSecondValue; +} + +/********************************************************************* + * @fn ETH_SetPTPTimeStampAddend + * + * @brief Sets the Time Stamp Addend value. + * + * @param Value - specifies the PTP Time Stamp Addend Register value. + * + * @return none + */ +void ETH_SetPTPTimeStampAddend(uint32_t Value) +{ + /* Set the PTP Time Stamp Addend Register */ + ETH->PTPTSAR = Value; +} + +/********************************************************************* + * @fn ETH_SetPTPTargetTime + * + * @brief Sets the Target Time registers values. + * + * @param HighValue - specifies the PTP Target Time High Register value. + * LowValue - specifies the PTP Target Time Low Register value. + * + * @return none + */ +void ETH_SetPTPTargetTime(uint32_t HighValue, uint32_t LowValue) +{ + ETH->PTPTTHR = HighValue; + ETH->PTPTTLR = LowValue; +} + +/********************************************************************* + * @fn ETH_GetPTPRegister + * + * @brief Get the specified ETHERNET PTP register value. + * + * @param ETH_PTPReg - specifies the ETHERNET PTP register. + * ETH_PTPTSCR - Sub-Second Increment Register + * ETH_PTPSSIR - Sub-Second Increment Register + * ETH_PTPTSHR - Time Stamp High Register + * ETH_PTPTSLR - Time Stamp Low Register + * ETH_PTPTSHUR - Time Stamp High Update Register + * ETH_PTPTSLUR - Time Stamp Low Update Register + * ETH_PTPTSAR - Time Stamp Addend Register + * ETH_PTPTTHR - Target Time High Register + * ETH_PTPTTLR - Target Time Low Register + * + * @return The value of ETHERNET PTP Register value. + */ +uint32_t ETH_GetPTPRegister(uint32_t ETH_PTPReg) +{ + return (*(__IO uint32_t *)(ETH_MAC_BASE + ETH_PTPReg)); +} + +/********************************************************************* + * @fn ETH_DMAPTPTxDescChainInit + * + * @brief Initializes the DMA Tx descriptors in chain mode with PTP. + * + * @param DMATxDescTab - Pointer on the first Tx desc list. + * DMAPTPTxDescTab - Pointer on the first PTP Tx desc list. + * TxBuff - Pointer on the first TxBuffer list. + * TxBuffCount - Number of the used Tx desc in the list. + * + * @return none. + */ +void ETH_DMAPTPTxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, ETH_DMADESCTypeDef *DMAPTPTxDescTab, + uint8_t *TxBuff, uint32_t TxBuffCount) +{ + uint32_t i = 0; + ETH_DMADESCTypeDef *DMATxDesc; + + DMATxDescToSet = DMATxDescTab; + DMAPTPTxDescToSet = DMAPTPTxDescTab; + + for(i = 0; i < TxBuffCount; i++) + { + DMATxDesc = DMATxDescTab + i; + DMATxDesc->Status = ETH_DMATxDesc_TCH | ETH_DMATxDesc_TTSE; + DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i * ETH_MAX_PACKET_SIZE]); + + if(i < (TxBuffCount - 1)) + { + DMATxDesc->Buffer2NextDescAddr = (uint32_t)(DMATxDescTab + i + 1); + } + else + { + DMATxDesc->Buffer2NextDescAddr = (uint32_t)DMATxDescTab; + } + + (&DMAPTPTxDescTab[i])->Buffer1Addr = DMATxDesc->Buffer1Addr; + (&DMAPTPTxDescTab[i])->Buffer2NextDescAddr = DMATxDesc->Buffer2NextDescAddr; + } + + (&DMAPTPTxDescTab[i - 1])->Status = (uint32_t)DMAPTPTxDescTab; + + ETH->DMATDLAR = (uint32_t)DMATxDescTab; +} + +/********************************************************************* + * @fn ETH_DMAPTPRxDescChainInit + * + * @brief Initializes the DMA Rx descriptors in chain mode. + * + * @param DMARxDescTab - Pointer on the first Rx desc list. + * DMAPTPRxDescTab - Pointer on the first PTP Rx desc list. + * RxBuff - Pointer on the first RxBuffer list. + * RxBuffCount - Number of the used Rx desc in the list. + * + * @return none. + */ +void ETH_DMAPTPRxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, ETH_DMADESCTypeDef *DMAPTPRxDescTab, + uint8_t *RxBuff, uint32_t RxBuffCount) +{ + uint32_t i = 0; + ETH_DMADESCTypeDef *DMARxDesc; + + DMARxDescToGet = DMARxDescTab; + DMAPTPRxDescToGet = DMAPTPRxDescTab; + + for(i = 0; i < RxBuffCount; i++) + { + DMARxDesc = DMARxDescTab + i; + DMARxDesc->Status = ETH_DMARxDesc_OWN; + DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_MAX_PACKET_SIZE; + DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i * ETH_MAX_PACKET_SIZE]); + + if(i < (RxBuffCount - 1)) + { + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab + i + 1); + } + else + { + DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab); + } + + (&DMAPTPRxDescTab[i])->Buffer1Addr = DMARxDesc->Buffer1Addr; + (&DMAPTPRxDescTab[i])->Buffer2NextDescAddr = DMARxDesc->Buffer2NextDescAddr; + } + + (&DMAPTPRxDescTab[i - 1])->Status = (uint32_t)DMAPTPRxDescTab; + ETH->DMARDLAR = (uint32_t)DMARxDescTab; +} + +/********************************************************************* + * @fn ETH_HandlePTPTxPkt + * + * @brief Transmits a packet, from application buffer, pointed by ppkt with Time Stamp values. + * + * @param ppkt - pointer to application packet buffer to transmit. + * FrameLength - Tx Packet size. + * PTPTxTab - Pointer on the first PTP Tx table to store Time stamp values. + * + * @return none. + */ +uint32_t ETH_HandlePTPTxPkt(uint8_t *ppkt, uint16_t FrameLength, uint32_t *PTPTxTab) +{ + uint32_t offset = 0, timeout = 0; + + if((DMATxDescToSet->Status & ETH_DMATxDesc_OWN) != (uint32_t)RESET) + { + return ETH_ERROR; + } + + for(offset = 0; offset < FrameLength; offset++) + { + (*(__IO uint8_t *)((DMAPTPTxDescToSet->Buffer1Addr) + offset)) = (*(ppkt + offset)); + } + + DMATxDescToSet->ControlBufferSize = (FrameLength & (uint32_t)0x1FFF); + DMATxDescToSet->Status |= ETH_DMATxDesc_LS | ETH_DMATxDesc_FS; + DMATxDescToSet->Status |= ETH_DMATxDesc_OWN; + + if((ETH->DMASR & ETH_DMASR_TBUS) != (uint32_t)RESET) + { + ETH->DMASR = ETH_DMASR_TBUS; + ETH->DMATPDR = 0; + } + + do + { + timeout++; + } while(!(DMATxDescToSet->Status & ETH_DMATxDesc_TTSS) && (timeout < 0xFFFF)); + + if(timeout == PHY_READ_TO) + { + return ETH_ERROR; + } + + DMATxDescToSet->Status &= ~ETH_DMATxDesc_TTSS; + *PTPTxTab++ = DMATxDescToSet->Buffer1Addr; + *PTPTxTab = DMATxDescToSet->Buffer2NextDescAddr; + + if((DMATxDescToSet->Status & ETH_DMATxDesc_TCH) != (uint32_t)RESET) + { + DMATxDescToSet = (ETH_DMADESCTypeDef *)(DMAPTPTxDescToSet->Buffer2NextDescAddr); + if(DMAPTPTxDescToSet->Status != 0) + { + DMAPTPTxDescToSet = (ETH_DMADESCTypeDef *)(DMAPTPTxDescToSet->Status); + } + else + { + DMAPTPTxDescToSet++; + } + } + else + { + if((DMATxDescToSet->Status & ETH_DMATxDesc_TER) != (uint32_t)RESET) + { + DMATxDescToSet = (ETH_DMADESCTypeDef *)(ETH->DMATDLAR); + DMAPTPTxDescToSet = (ETH_DMADESCTypeDef *)(ETH->DMATDLAR); + } + else + { + DMATxDescToSet = (ETH_DMADESCTypeDef *)((uint32_t)DMATxDescToSet + 0x10 + ((ETH->DMABMR & ETH_DMABMR_DSL) >> 2)); + DMAPTPTxDescToSet = (ETH_DMADESCTypeDef *)((uint32_t)DMAPTPTxDescToSet + 0x10 + ((ETH->DMABMR & ETH_DMABMR_DSL) >> 2)); + } + } + + return ETH_SUCCESS; +} + +/********************************************************************* + * @fn ETH_HandlePTPRxPkt + * + * @brief Receives a packet and copies it to memory pointed by ppkt with Time Stamp values. + * + * @param ppkt - pointer to application packet receive buffer. + * PTPRxTab - Pointer on the first PTP Rx table to store Time stamp values. + * + * @return ETH_ERROR - if there is error in reception. + * framelength - received packet size if packet reception is correct. + */ +uint32_t ETH_HandlePTPRxPkt(uint8_t *ppkt, uint32_t *PTPRxTab) +{ + uint32_t offset = 0, framelength = 0; + + if((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) != (uint32_t)RESET) + { + return ETH_ERROR; + } + if(((DMARxDescToGet->Status & ETH_DMARxDesc_ES) == (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_LS) != (uint32_t)RESET) && + ((DMARxDescToGet->Status & ETH_DMARxDesc_FS) != (uint32_t)RESET)) + { + framelength = ((DMARxDescToGet->Status & ETH_DMARxDesc_FL) >> ETH_DMARXDESC_FRAME_LENGTHSHIFT) - 4; + + for(offset = 0; offset < framelength; offset++) + { + (*(ppkt + offset)) = (*(__IO uint8_t *)((DMAPTPRxDescToGet->Buffer1Addr) + offset)); + } + } + else + { + framelength = ETH_ERROR; + } + + if((ETH->DMASR & ETH_DMASR_RBUS) != (uint32_t)RESET) + { + ETH->DMASR = ETH_DMASR_RBUS; + ETH->DMARPDR = 0; + } + + *PTPRxTab++ = DMARxDescToGet->Buffer1Addr; + *PTPRxTab = DMARxDescToGet->Buffer2NextDescAddr; + DMARxDescToGet->Status |= ETH_DMARxDesc_OWN; + + if((DMARxDescToGet->ControlBufferSize & ETH_DMARxDesc_RCH) != (uint32_t)RESET) + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)(DMAPTPRxDescToGet->Buffer2NextDescAddr); + if(DMAPTPRxDescToGet->Status != 0) + { + DMAPTPRxDescToGet = (ETH_DMADESCTypeDef *)(DMAPTPRxDescToGet->Status); + } + else + { + DMAPTPRxDescToGet++; + } + } + else + { + if((DMARxDescToGet->ControlBufferSize & ETH_DMARxDesc_RER) != (uint32_t)RESET) + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)(ETH->DMARDLAR); + } + else + { + DMARxDescToGet = (ETH_DMADESCTypeDef *)((uint32_t)DMARxDescToGet + 0x10 + ((ETH->DMABMR & ETH_DMABMR_DSL) >> 2)); + } + } + + return (framelength); +} + +/********************************************************************* + * @fn RGMII_TXC_Delay + * + * @brief Delay time. + * + * @return none + */ +void RGMII_TXC_Delay(uint8_t clock_polarity, uint8_t delay_time) +{ + if(clock_polarity) + { + ETH->MACCR |= (uint32_t)(1 << 1); + } + else + { + ETH->MACCR &= ~(uint32_t)(1 << 1); + } + if(delay_time <= 7) + { + ETH->MACCR |= (uint32_t)(delay_time << 29); + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_exti.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_exti.c new file mode 100755 index 000000000..2debd2ff3 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_exti.c @@ -0,0 +1,180 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_exti.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the EXTI firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +***************************************************************************************/ +#include "ch32v30x_exti.h" + +/* No interrupt selected */ +#define EXTI_LINENONE ((uint32_t)0x00000) + +/********************************************************************* + * @fn EXTI_DeInit + * + * @brief Deinitializes the EXTI peripheral registers to their default + * reset values. + * + * @return none. + */ +void EXTI_DeInit(void) +{ + EXTI->INTENR = 0x00000000; + EXTI->EVENR = 0x00000000; + EXTI->RTENR = 0x00000000; + EXTI->FTENR = 0x00000000; + EXTI->INTFR = 0x000FFFFF; +} + +/********************************************************************* + * @fn EXTI_Init + * + * @brief Initializes the EXTI peripheral according to the specified + * parameters in the EXTI_InitStruct. + * + * @param EXTI_InitStruct - pointer to a EXTI_InitTypeDef structure + * + * @return none. + */ +void EXTI_Init(EXTI_InitTypeDef *EXTI_InitStruct) +{ + uint32_t tmp = 0; + + tmp = (uint32_t)EXTI_BASE; + if(EXTI_InitStruct->EXTI_LineCmd != DISABLE) + { + EXTI->INTENR &= ~EXTI_InitStruct->EXTI_Line; + EXTI->EVENR &= ~EXTI_InitStruct->EXTI_Line; + tmp += EXTI_InitStruct->EXTI_Mode; + *(__IO uint32_t *)tmp |= EXTI_InitStruct->EXTI_Line; + EXTI->RTENR &= ~EXTI_InitStruct->EXTI_Line; + EXTI->FTENR &= ~EXTI_InitStruct->EXTI_Line; + if(EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling) + { + EXTI->RTENR |= EXTI_InitStruct->EXTI_Line; + EXTI->FTENR |= EXTI_InitStruct->EXTI_Line; + } + else + { + tmp = (uint32_t)EXTI_BASE; + tmp += EXTI_InitStruct->EXTI_Trigger; + *(__IO uint32_t *)tmp |= EXTI_InitStruct->EXTI_Line; + } + } + else + { + tmp += EXTI_InitStruct->EXTI_Mode; + *(__IO uint32_t *)tmp &= ~EXTI_InitStruct->EXTI_Line; + } +} + +/********************************************************************* + * @fn EXTI_StructInit + * + * @brief Fills each EXTI_InitStruct member with its reset value. + * + * @param EXTI_InitStruct - pointer to a EXTI_InitTypeDef structure + * + * @return none. + */ +void EXTI_StructInit(EXTI_InitTypeDef *EXTI_InitStruct) +{ + EXTI_InitStruct->EXTI_Line = EXTI_LINENONE; + EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt; + EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling; + EXTI_InitStruct->EXTI_LineCmd = DISABLE; +} + +/********************************************************************* + * @fn EXTI_GenerateSWInterrupt + * + * @brief Generates a Software interrupt. + * + * @param EXTI_Line - specifies the EXTI lines to be enabled or disabled. + * + * @return none. + */ +void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line) +{ + EXTI->SWIEVR |= EXTI_Line; +} + +/********************************************************************* + * @fn EXTI_GetFlagStatus + * + * @brief Checks whether the specified EXTI line flag is set or not. + * + * @param EXTI_Line - specifies the EXTI lines to be enabled or disabled. + * + * @return The new state of EXTI_Line (SET or RESET). + */ +FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line) +{ + FlagStatus bitstatus = RESET; + if((EXTI->INTFR & EXTI_Line) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn EXTI_ClearFlag + * + * @brief Clears the EXTI's line pending flags. + * + * @param EXTI_Line - specifies the EXTI lines to be enabled or disabled. + * + * @return None + */ +void EXTI_ClearFlag(uint32_t EXTI_Line) +{ + EXTI->INTFR = EXTI_Line; +} + +/********************************************************************* + * @fn EXTI_GetITStatus + * + * @brief Checks whether the specified EXTI line is asserted or not. + * + * @param EXTI_Line - specifies the EXTI lines to be enabled or disabled. + * + * @return The new state of EXTI_Line (SET or RESET). + */ +ITStatus EXTI_GetITStatus(uint32_t EXTI_Line) +{ + ITStatus bitstatus = RESET; + uint32_t enablestatus = 0; + + enablestatus = EXTI->INTENR & EXTI_Line; + if(((EXTI->INTFR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn EXTI_ClearITPendingBit + * + * @brief Clears the EXTI's line pending bits. + * + * @param EXTI_Line - specifies the EXTI lines to be enabled or disabled. + * + * @return none + */ +void EXTI_ClearITPendingBit(uint32_t EXTI_Line) +{ + EXTI->INTFR = EXTI_Line; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_flash.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_flash.c new file mode 100755 index 000000000..44e36b1a7 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_flash.c @@ -0,0 +1,968 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_flash.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the FLASH firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +***************************************************************************************/ +#include "ch32v30x_flash.h" + +/* Flash Control Register bits */ +#define CR_PG_Set ((uint32_t)0x00000001) +#define CR_PG_Reset ((uint32_t)0x00001FFE) +#define CR_PER_Set ((uint32_t)0x00000002) +#define CR_PER_Reset ((uint32_t)0x00001FFD) +#define CR_MER_Set ((uint32_t)0x00000004) +#define CR_MER_Reset ((uint32_t)0x00001FFB) +#define CR_OPTPG_Set ((uint32_t)0x00000010) +#define CR_OPTPG_Reset ((uint32_t)0x00001FEF) +#define CR_OPTER_Set ((uint32_t)0x00000020) +#define CR_OPTER_Reset ((uint32_t)0x00001FDF) +#define CR_STRT_Set ((uint32_t)0x00000040) +#define CR_LOCK_Set ((uint32_t)0x00000080) +#define CR_FAST_LOCK_Set ((uint32_t)0x00008000) +#define CR_PAGE_PG ((uint32_t)0x00010000) +#define CR_PAGE_ER ((uint32_t)0x00020000) +#define CR_BER32 ((uint32_t)0x00040000) +#define CR_BER64 ((uint32_t)0x00080000) +#define CR_PG_STRT ((uint32_t)0x00200000) + +/* FLASH Status Register bits */ +#define SR_BSY ((uint32_t)0x00000001) +#define SR_WR_BSY ((uint32_t)0x00000002) +#define SR_WRPRTERR ((uint32_t)0x00000010) +#define SR_EOP ((uint32_t)0x00000020) + +/* FLASH Mask */ +#define RDPRT_Mask ((uint32_t)0x00000002) +#define WRP0_Mask ((uint32_t)0x000000FF) +#define WRP1_Mask ((uint32_t)0x0000FF00) +#define WRP2_Mask ((uint32_t)0x00FF0000) +#define WRP3_Mask ((uint32_t)0xFF000000) +#define OB_USER_BFB2 ((uint16_t)0x0008) + +/* FLASH Keys */ +#define RDP_Key ((uint16_t)0x00A5) +#define FLASH_KEY1 ((uint32_t)0x45670123) +#define FLASH_KEY2 ((uint32_t)0xCDEF89AB) + +/* FLASH BANK address */ +#define FLASH_BANK1_END_ADDRESS ((uint32_t)0x807FFFF) + +/* Delay definition */ +#define EraseTimeout ((uint32_t)0x000B0000) +#define ProgramTimeout ((uint32_t)0x00005000) + +/********************************************************************* + * @fn FLASH_Unlock + * + * @brief Unlocks the FLASH Program Erase Controller. + * + * @return none + */ +void FLASH_Unlock(void) +{ + /* Authorize the FPEC of Bank1 Access */ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; +} + +/********************************************************************* + * @fn FLASH_UnlockBank1 + * + * @brief Unlocks the FLASH Bank1 Program Erase Controller. + * equivalent to FLASH_Unlock function. + * + * @return none + */ +void FLASH_UnlockBank1(void) +{ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; +} + +/********************************************************************* + * @fn FLASH_Lock + * + * @brief Locks the FLASH Program Erase Controller. + * + * @return none + */ +void FLASH_Lock(void) +{ + FLASH->CTLR |= CR_LOCK_Set; +} + +/********************************************************************* + * @fn FLASH_LockBank1 + * + * @brief Locks the FLASH Bank1 Program Erase Controller. + * + * @return none + */ +void FLASH_LockBank1(void) +{ + FLASH->CTLR |= CR_LOCK_Set; +} + +/********************************************************************* + * @fn FLASH_ErasePage + * + * @brief Erases a specified FLASH page(page size 4KB). + * + * @param Page_Address - The page address to be erased. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ErasePage(uint32_t Page_Address) +{ + FLASH_Status status = FLASH_COMPLETE; + + status = FLASH_WaitForLastOperation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + FLASH->CTLR |= CR_PER_Set; + FLASH->ADDR = Page_Address; + FLASH->CTLR |= CR_STRT_Set; + + status = FLASH_WaitForLastOperation(EraseTimeout); + + FLASH->CTLR &= CR_PER_Reset; + } + + return status; +} + +/********************************************************************* + * @fn FLASH_EraseAllPages + * + * @brief Erases all FLASH pages. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseAllPages(void) +{ + FLASH_Status status = FLASH_COMPLETE; + + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + FLASH->CTLR |= CR_MER_Set; + FLASH->CTLR |= CR_STRT_Set; + + status = FLASH_WaitForLastOperation(EraseTimeout); + + FLASH->CTLR &= CR_MER_Reset; + } + + return status; +} + +/********************************************************************* + * @fn FLASH_EraseAllBank1Pages + * + * @brief Erases all Bank1 FLASH pages. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseAllBank1Pages(void) +{ + FLASH_Status status = FLASH_COMPLETE; + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + FLASH->CTLR |= CR_MER_Set; + FLASH->CTLR |= CR_STRT_Set; + + status = FLASH_WaitForLastBank1Operation(EraseTimeout); + + FLASH->CTLR &= CR_MER_Reset; + } + return status; +} + +/********************************************************************* + * @fn FLASH_EraseOptionBytes + * + * @brief Erases the FLASH option bytes. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EraseOptionBytes(void) +{ + uint16_t rdptmp = RDP_Key; + uint32_t Address = 0x1FFFF800; + __IO uint8_t i; + + FLASH_Status status = FLASH_COMPLETE; + if(FLASH_GetReadOutProtectionStatus() != RESET) + { + rdptmp = 0x00; + } + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + FLASH->OBKEYR = FLASH_KEY1; + FLASH->OBKEYR = FLASH_KEY2; + + FLASH->CTLR |= CR_OPTER_Set; + FLASH->CTLR |= CR_STRT_Set; + status = FLASH_WaitForLastOperation(EraseTimeout); + + if(status == FLASH_COMPLETE) + { + FLASH->CTLR &= CR_OPTER_Reset; + FLASH->CTLR |= CR_OPTPG_Set; + OB->RDPR = (uint16_t)rdptmp; + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status != FLASH_TIMEOUT) + { + FLASH->CTLR &= CR_OPTPG_Reset; + } + } + else + { + if(status != FLASH_TIMEOUT) + { + FLASH->CTLR &= CR_OPTPG_Reset; + } + } + + /* Write 0xFF */ + FLASH->CTLR |= CR_OPTPG_Set; + + for(i = 0; i < 8; i++) + { + *(uint16_t *)(Address + 2 * i) = 0x00FF; + while(FLASH->STATR & SR_BSY) + ; + } + + FLASH->CTLR &= ~CR_OPTPG_Set; + } + return status; +} + +/********************************************************************* + * @fn FLASH_ProgramWord + * + * @brief Programs a word at a specified address. + * + * @param Address - specifies the address to be programmed. + * Data - specifies the data to be programmed. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data) +{ + FLASH_Status status = FLASH_COMPLETE; + __IO uint32_t tmp = 0; + + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + FLASH->CTLR |= CR_PG_Set; + + *(__IO uint16_t *)Address = (uint16_t)Data; + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + tmp = Address + 2; + *(__IO uint16_t *)tmp = Data >> 16; + status = FLASH_WaitForLastOperation(ProgramTimeout); + FLASH->CTLR &= CR_PG_Reset; + } + else + { + FLASH->CTLR &= CR_PG_Reset; + } + } + + return status; +} + +/********************************************************************* + * @fn FLASH_ProgramHalfWord + * + * @brief Programs a half word at a specified address. + * + * @param Address - specifies the address to be programmed. + * Data - specifies the data to be programmed. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) +{ + FLASH_Status status = FLASH_COMPLETE; + + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + FLASH->CTLR |= CR_PG_Set; + *(__IO uint16_t *)Address = Data; + status = FLASH_WaitForLastOperation(ProgramTimeout); + FLASH->CTLR &= CR_PG_Reset; + } + + return status; +} + +/********************************************************************* + * @fn FLASH_ProgramOptionByteData + * + * @brief Programs a half word at a specified Option Byte Data address. + * + * @param Address - specifies the address to be programmed. + * Data - specifies the data to be programmed. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data) +{ + FLASH_Status status = FLASH_COMPLETE; + uint32_t Addr = 0x1FFFF800; + __IO uint8_t i; + uint16_t pbuf[8]; + + status = FLASH_WaitForLastOperation(ProgramTimeout); + if(status == FLASH_COMPLETE) + { + FLASH->OBKEYR = FLASH_KEY1; + FLASH->OBKEYR = FLASH_KEY2; + + /* Read optionbytes */ + for(i = 0; i < 8; i++) + { + pbuf[i] = *(uint16_t *)(Addr + 2 * i); + } + + /* Erase optionbytes */ + FLASH->CTLR |= CR_OPTER_Set; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_OPTER_Set; + + /* Write optionbytes */ + pbuf[((Address - 0x1FFFF800) / 2)] = ((((uint16_t) ~(Data)) << 8) | ((uint16_t)Data)); + + FLASH->CTLR |= CR_OPTPG_Set; + + for(i = 0; i < 8; i++) + { + *(uint16_t *)(Addr + 2 * i) = pbuf[i]; + while(FLASH->STATR & SR_BSY) + ; + } + + FLASH->CTLR &= ~CR_OPTPG_Set; + } + + return status; +} + +/********************************************************************* + * @fn FLASH_EnableWriteProtection + * + * @brief Write protects the desired sectors + * + * @param FLASH_Sectors - specifies the address of the pages to be write protected. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Sectors) +{ + uint16_t WRP0_Data = 0xFFFF, WRP1_Data = 0xFFFF, WRP2_Data = 0xFFFF, WRP3_Data = 0xFFFF; + FLASH_Status status = FLASH_COMPLETE; + uint32_t Addr = 0x1FFFF800; + __IO uint8_t i; + uint16_t pbuf[8]; + + FLASH_Sectors = (uint32_t)(~FLASH_Sectors); + WRP0_Data = (uint16_t)(FLASH_Sectors & WRP0_Mask); + WRP1_Data = (uint16_t)((FLASH_Sectors & WRP1_Mask) >> 8); + WRP2_Data = (uint16_t)((FLASH_Sectors & WRP2_Mask) >> 16); + WRP3_Data = (uint16_t)((FLASH_Sectors & WRP3_Mask) >> 24); + + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + FLASH->OBKEYR = FLASH_KEY1; + FLASH->OBKEYR = FLASH_KEY2; + + /* Read optionbytes */ + for(i = 0; i < 8; i++) + { + pbuf[i] = *(uint16_t *)(Addr + 2 * i); + } + + /* Erase optionbytes */ + FLASH->CTLR |= CR_OPTER_Set; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_OPTER_Set; + + /* Write optionbytes */ + pbuf[4] = WRP0_Data; + pbuf[5] = WRP1_Data; + pbuf[6] = WRP2_Data; + pbuf[7] = WRP3_Data; + + FLASH->CTLR |= CR_OPTPG_Set; + for(i = 0; i < 8; i++) + { + *(uint16_t *)(Addr + 2 * i) = pbuf[i]; + while(FLASH->STATR & SR_BSY) + ; + } + FLASH->CTLR &= ~CR_OPTPG_Set; + } + return status; +} + +/********************************************************************* + * @fn FLASH_ReadOutProtection + * + * @brief Enables or disables the read out protection. + * + * @param Newstate - new state of the ReadOut Protection(ENABLE or DISABLE). + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState) +{ + FLASH_Status status = FLASH_COMPLETE; + uint32_t Addr = 0x1FFFF800; + __IO uint8_t i; + uint16_t pbuf[8]; + + status = FLASH_WaitForLastOperation(EraseTimeout); + if(status == FLASH_COMPLETE) + { + FLASH->OBKEYR = FLASH_KEY1; + FLASH->OBKEYR = FLASH_KEY2; + + /* Read optionbytes */ + for(i = 0; i < 8; i++) + { + pbuf[i] = *(uint16_t *)(Addr + 2 * i); + } + + /* Erase optionbytes */ + FLASH->CTLR |= CR_OPTER_Set; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_OPTER_Set; + + /* Write optionbytes */ + if(NewState == DISABLE) + pbuf[0] = 0x5AA5; + else + pbuf[0] = 0x00FF; + + FLASH->CTLR |= CR_OPTPG_Set; + for(i = 0; i < 8; i++) + { + *(uint16_t *)(Addr + 2 * i) = pbuf[i]; + while(FLASH->STATR & SR_BSY) + ; + } + FLASH->CTLR &= ~CR_OPTPG_Set; + } + return status; +} + +/********************************************************************* + * @fn FLASH_UserOptionByteConfig + * + * @brief Programs the FLASH User Option Byte - IWDG_SW / RST_STOP / RST_STDBY. + * + * @param OB_IWDG - Selects the IWDG mode + * OB_IWDG_SW - Software IWDG selected + * OB_IWDG_HW - Hardware IWDG selected + * OB_STOP - Reset event when entering STOP mode. + * OB_STOP_NoRST - No reset generated when entering in STOP + * OB_STOP_RST - Reset generated when entering in STOP + * OB_STDBY - Reset event when entering Standby mode. + * OB_STDBY_NoRST - No reset generated when entering in STANDBY + * OB_STDBY_RST - Reset generated when entering in STANDBY + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. + */ +FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY) +{ + FLASH_Status status = FLASH_COMPLETE; + uint32_t Addr = 0x1FFFF800; + __IO uint8_t i; + uint16_t pbuf[8]; + + FLASH->OBKEYR = FLASH_KEY1; + FLASH->OBKEYR = FLASH_KEY2; + status = FLASH_WaitForLastOperation(ProgramTimeout); + + if(status == FLASH_COMPLETE) + { + /* Read optionbytes */ + for(i = 0; i < 8; i++) + { + pbuf[i] = *(uint16_t *)(Addr + 2 * i); + } + + /* Erase optionbytes */ + FLASH->CTLR |= CR_OPTER_Set; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_OPTER_Set; + + /* Write optionbytes */ + pbuf[1] = OB_IWDG | (uint16_t)(OB_STOP | (uint16_t)(OB_STDBY | ((uint16_t)0xF8))); + + FLASH->CTLR |= CR_OPTPG_Set; + for(i = 0; i < 8; i++) + { + *(uint16_t *)(Addr + 2 * i) = pbuf[i]; + while(FLASH->STATR & SR_BSY) + ; + } + FLASH->CTLR &= ~CR_OPTPG_Set; + } + return status; +} + +/********************************************************************* + * @fn FLASH_GetUserOptionByte + * + * @brief Returns the FLASH User Option Bytes values. + * + * @return The FLASH User Option Bytes values:IWDG_SW(Bit0), RST_STOP(Bit1) + * and RST_STDBY(Bit2). + */ +uint32_t FLASH_GetUserOptionByte(void) +{ + return (uint32_t)(FLASH->OBR >> 2); +} + +/********************************************************************* + * @fn FLASH_GetWriteProtectionOptionByte + * + * @brief Returns the FLASH Write Protection Option Bytes Register value. + * + * @return The FLASH Write Protection Option Bytes Register value. + */ +uint32_t FLASH_GetWriteProtectionOptionByte(void) +{ + return (uint32_t)(FLASH->WPR); +} + +/********************************************************************* + * @fn FLASH_GetReadOutProtectionStatus + * + * @brief Checks whether the FLASH Read Out Protection Status is set or not. + * + * @return FLASH ReadOut Protection Status(SET or RESET) + */ +FlagStatus FLASH_GetReadOutProtectionStatus(void) +{ + FlagStatus readoutstatus = RESET; + if((FLASH->OBR & RDPRT_Mask) != (uint32_t)RESET) + { + readoutstatus = SET; + } + else + { + readoutstatus = RESET; + } + return readoutstatus; +} + +/********************************************************************* + * @fn FLASH_ITConfig + * + * @brief Enables or disables the specified FLASH interrupts. + * + * @param FLASH_IT - specifies the FLASH interrupt sources to be enabled or disabled. + * FLASH_IT_ERROR - FLASH Error Interrupt + * FLASH_IT_EOP - FLASH end of operation Interrupt + * NewState - new state of the specified Flash interrupts(ENABLE or DISABLE). + * + * @return FLASH Prefetch Buffer Status (SET or RESET). + */ +void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + FLASH->CTLR |= FLASH_IT; + } + else + { + FLASH->CTLR &= ~(uint32_t)FLASH_IT; + } +} + +/********************************************************************* + * @fn FLASH_GetFlagStatus + * + * @brief Checks whether the specified FLASH flag is set or not. + * + * @param FLASH_FLAG - specifies the FLASH flag to check. + * FLASH_FLAG_BSY - FLASH Busy flag + * FLASH_FLAG_PGERR - FLASH Program error flag + * FLASH_FLAG_WRPRTERR - FLASH Write protected error flag + * FLASH_FLAG_EOP - FLASH End of Operation flag + * FLASH_FLAG_OPTERR - FLASH Option Byte error flag + * + * @return The new state of FLASH_FLAG (SET or RESET). + */ +FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG) +{ + FlagStatus bitstatus = RESET; + + if(FLASH_FLAG == FLASH_FLAG_OPTERR) + { + if((FLASH->OBR & FLASH_FLAG_OPTERR) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + else + { + if((FLASH->STATR & FLASH_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + } + return bitstatus; +} + +/********************************************************************* + * @fn FLASH_ClearFlag + * + * @brief Clears the FLASH's pending flags. + * + * @param FLASH_FLAG - specifies the FLASH flags to clear. + * FLASH_FLAG_PGERR - FLASH Program error flag + * FLASH_FLAG_WRPRTERR - FLASH Write protected error flag + * FLASH_FLAG_EOP - FLASH End of Operation flag + * + * @return none + */ +void FLASH_ClearFlag(uint32_t FLASH_FLAG) +{ + FLASH->STATR = FLASH_FLAG; +} + +/********************************************************************* + * @fn FLASH_GetStatus + * + * @brief Returns the FLASH Status. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE. + */ +FLASH_Status FLASH_GetStatus(void) +{ + FLASH_Status flashstatus = FLASH_COMPLETE; + + if((FLASH->STATR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY) + { + flashstatus = FLASH_BUSY; + } + else + { + if((FLASH->STATR & FLASH_FLAG_PGERR) != 0) + { + flashstatus = FLASH_ERROR_PG; + } + else + { + if((FLASH->STATR & FLASH_FLAG_WRPRTERR) != 0) + { + flashstatus = FLASH_ERROR_WRP; + } + else + { + flashstatus = FLASH_COMPLETE; + } + } + } + return flashstatus; +} + +/********************************************************************* + * @fn FLASH_GetBank1Status + * + * @brief Returns the FLASH Bank1 Status. + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE. + */ +FLASH_Status FLASH_GetBank1Status(void) +{ + FLASH_Status flashstatus = FLASH_COMPLETE; + + if((FLASH->STATR & FLASH_FLAG_BANK1_BSY) == FLASH_FLAG_BSY) + { + flashstatus = FLASH_BUSY; + } + else + { + if((FLASH->STATR & FLASH_FLAG_BANK1_PGERR) != 0) + { + flashstatus = FLASH_ERROR_PG; + } + else + { + if((FLASH->STATR & FLASH_FLAG_BANK1_WRPRTERR) != 0) + { + flashstatus = FLASH_ERROR_WRP; + } + else + { + flashstatus = FLASH_COMPLETE; + } + } + } + return flashstatus; +} + +/********************************************************************* + * @fn FLASH_WaitForLastOperation + * + * @brief Waits for a Flash operation to complete or a TIMEOUT to occur. + * + * @param Timeout - FLASH programming Timeout + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE. + */ +FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout) +{ + FLASH_Status status = FLASH_COMPLETE; + + status = FLASH_GetBank1Status(); + while((status == FLASH_BUSY) && (Timeout != 0x00)) + { + status = FLASH_GetBank1Status(); + Timeout--; + } + if(Timeout == 0x00) + { + status = FLASH_TIMEOUT; + } + return status; +} + +/********************************************************************* + * @fn FLASH_WaitForLastBank1Operation + * + * @brief Waits for a Flash operation on Bank1 to complete or a TIMEOUT to occur. + * + * @param Timeout - FLASH programming Timeout + * + * @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG, + * FLASH_ERROR_WRP or FLASH_COMPLETE. + */ +FLASH_Status FLASH_WaitForLastBank1Operation(uint32_t Timeout) +{ + FLASH_Status status = FLASH_COMPLETE; + + status = FLASH_GetBank1Status(); + while((status == FLASH_FLAG_BANK1_BSY) && (Timeout != 0x00)) + { + status = FLASH_GetBank1Status(); + Timeout--; + } + if(Timeout == 0x00) + { + status = FLASH_TIMEOUT; + } + return status; +} + +/********************************************************************* + * @fn FLASH_Unlock_Fast + * + * @brief Unlocks the Fast Program Erase Mode. + * + * @return none + */ +void FLASH_Unlock_Fast(void) +{ + /* Authorize the FPEC of Bank1 Access */ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; + + /* Fast program mode unlock */ + FLASH->MODEKEYR = FLASH_KEY1; + FLASH->MODEKEYR = FLASH_KEY2; +} + +/********************************************************************* + * @fn FLASH_Lock_Fast + * + * @brief Locks the Fast Program Erase Mode. + * + * @return none + */ +void FLASH_Lock_Fast(void) +{ + FLASH->CTLR |= CR_LOCK_Set; +} + +/********************************************************************* + * @fn FLASH_ErasePage_Fast + * + * @brief Erases a specified FLASH page (1page = 256Byte). + * + * @param Page_Address - The page address to be erased. + * + * @return none + */ +void FLASH_ErasePage_Fast(uint32_t Page_Address) +{ + Page_Address &= 0xFFFFFF00; + + FLASH->CTLR |= CR_PAGE_ER; + FLASH->ADDR = Page_Address; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_PAGE_ER; +} + +/********************************************************************* + * @fn FLASH_EraseBlock_32K_Fast + * + * @brief Erases a specified FLASH Block (1Block = 32KByte). + * + * @param Block_Address - The block address to be erased. + * + * @return none + */ +void FLASH_EraseBlock_32K_Fast(uint32_t Block_Address) +{ + Block_Address &= 0xFFFF8000; + + FLASH->CTLR |= CR_BER32; + FLASH->ADDR = Block_Address; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_BER32; +} + +/********************************************************************* + * @fn FLASH_EraseBlock_64K_Fast + * + * @brief Erases a specified FLASH Block (1Block = 64KByte). + * + * @param Block_Address - The block address to be erased. + * + * @return none + */ +void FLASH_EraseBlock_64K_Fast(uint32_t Block_Address) +{ + Block_Address &= 0xFFFF0000; + + FLASH->CTLR |= CR_BER64; + FLASH->ADDR = Block_Address; + FLASH->CTLR |= CR_STRT_Set; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_BER64; +} + +/********************************************************************* + * @fn FLASH_ProgramPage_Fast + * + * @brief Program a specified FLASH page (1page = 256Byte). + * + * @param Page_Address - The page address to be programed. + * + * @return none + */ +void FLASH_ProgramPage_Fast(uint32_t Page_Address, uint32_t *pbuf) +{ + uint8_t size = 64; + + Page_Address &= 0xFFFFFF00; + + FLASH->CTLR |= CR_PAGE_PG; + while(FLASH->STATR & SR_BSY) + ; + while(FLASH->STATR & SR_WR_BSY) + ; + + while(size) + { + *(uint32_t *)Page_Address = *(uint32_t *)pbuf; + Page_Address += 4; + pbuf += 1; + size -= 1; + while(FLASH->STATR & SR_WR_BSY) + ; + } + + FLASH->CTLR |= CR_PG_STRT; + while(FLASH->STATR & SR_BSY) + ; + FLASH->CTLR &= ~CR_PAGE_PG; +} + +/********************************************************************* + * @fn FLASH_Enhance_Mode + * + * @brief Read FLASH Enhance Mode + * + * @param FLASH_Enhance_CLK - + * FLASH_Enhance_SYSTEM_HALF - System clock/2 + * FLASH_Enhance_SYSTEM - System clock + * Newstate - new state of the ReadOut Protection(ENABLE or DISABLE). + * + * @return none + */ +void FLASH_Enhance_Mode(uint32_t FLASH_Enhance_CLK, FunctionalState NewState) +{ + FLASH->CTLR &= ~(1 << 25); + FLASH->CTLR |= FLASH_Enhance_CLK; + + if(NewState) + { + FLASH->CTLR |= (1 << 24); + } + else + { + FLASH->CTLR &= ~(1 << 24); + FLASH->CTLR |= (1 << 22); + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_fsmc.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_fsmc.c new file mode 100755 index 000000000..8e941be1d --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_fsmc.c @@ -0,0 +1,501 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_fsmc.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the FSMC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_fsmc.h" +#include "ch32v30x_rcc.h" + +/* FSMC BCRx Mask */ +#define BCR_MBKEN_Set ((uint32_t)0x00000001) +#define BCR_MBKEN_Reset ((uint32_t)0x000FFFFE) +#define BCR_FACCEN_Set ((uint32_t)0x00000040) + +/* FSMC PCRx Mask */ +#define PCR_PBKEN_Set ((uint32_t)0x00000004) +#define PCR_PBKEN_Reset ((uint32_t)0x000FFFFB) +#define PCR_ECCEN_Set ((uint32_t)0x00000040) +#define PCR_ECCEN_Reset ((uint32_t)0x000FFFBF) +#define PCR_MemoryType_NAND ((uint32_t)0x00000008) + +/********************************************************************* + * @fn FSMC_NORSRAMDeInit + * + * @brief Deinitializes the FSMC NOR/SRAM Banks registers to their default + * reset values. + * + * @param FSMC_Bank- + * FSMC_Bank1_NORSRAM1 - FSMC Bank1 NOR/SRAM1. + * + * @return none + */ +void FSMC_NORSRAMDeInit(uint32_t FSMC_Bank) +{ + if(FSMC_Bank == FSMC_Bank1_NORSRAM1) + { + FSMC_Bank1->BTCR[FSMC_Bank] = 0x000030DB; + } + else + { + FSMC_Bank1->BTCR[FSMC_Bank] = 0x000030D2; + } + FSMC_Bank1->BTCR[FSMC_Bank + 1] = 0x0FFFFFFF; + FSMC_Bank1E->BWTR[FSMC_Bank] = 0x0FFFFFFF; +} + +/********************************************************************* + * @fn FSMC_NANDDeInit + * + * @brief Deinitializes the FSMC NAND Banks registers to their default + * reset values. + * + * @param FSMC_Bank - + * FSMC_Bank2_NAND - FSMC Bank2 NAND. + * + * @return none + */ +void FSMC_NANDDeInit(uint32_t FSMC_Bank) +{ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 = 0x00000018; + FSMC_Bank2->SR2 = 0x00000040; + FSMC_Bank2->PMEM2 = 0xFCFCFCFC; + FSMC_Bank2->PATT2 = 0xFCFCFCFC; + } +} + +/********************************************************************* + * @fn FSMC_NORSRAMInit + * + * @brief Initializes the FSMC NOR/SRAM Banks according to the specified + * parameters in the FSMC_NORSRAMInitStruct. + * + * @param SMC_NORSRAMInitStruct:pointer to a FSMC_NORSRAMInitTypeDef + * structure that contains the configuration information for the FSMC NOR/SRAM + * specified Banks. + * + * @return none + */ +void FSMC_NORSRAMInit(FSMC_NORSRAMInitTypeDef *FSMC_NORSRAMInitStruct) +{ + FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] = + (uint32_t)FSMC_NORSRAMInitStruct->FSMC_DataAddressMux | + FSMC_NORSRAMInitStruct->FSMC_MemoryType | + FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth | + FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode | + FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait | + FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity | + FSMC_NORSRAMInitStruct->FSMC_WrapMode | + FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive | + FSMC_NORSRAMInitStruct->FSMC_WriteOperation | + FSMC_NORSRAMInitStruct->FSMC_WaitSignal | + FSMC_NORSRAMInitStruct->FSMC_ExtendedMode | + FSMC_NORSRAMInitStruct->FSMC_WriteBurst; + + if(FSMC_NORSRAMInitStruct->FSMC_MemoryType == FSMC_MemoryType_NOR) + { + FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] |= (uint32_t)BCR_FACCEN_Set; + } + + FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank + 1] = + (uint32_t)FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime << 4) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime << 8) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration << 16) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision << 20) | + (FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency << 24) | + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode; + + if(FSMC_NORSRAMInitStruct->FSMC_ExtendedMode == FSMC_ExtendedMode_Enable) + { + FSMC_Bank1E->BWTR[FSMC_NORSRAMInitStruct->FSMC_Bank] = + (uint32_t)FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime << 4) | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime << 8) | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision << 20) | + (FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency << 24) | + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode; + } + else + { + FSMC_Bank1E->BWTR[FSMC_NORSRAMInitStruct->FSMC_Bank] = 0x0FFFFFFF; + } +} + +/********************************************************************* + * @fn FSMC_NANDInit + * + * @brief Initializes the FSMC NAND Banks according to the specified + * parameters in the FSMC_NANDInitStruct. + * + * @param FSMC_NANDInitStruct - pointer to a FSMC_NANDInitTypeDef + * structure that contains the configuration information for the FSMC + * NAND specified Banks. + * + * @return none + */ +void FSMC_NANDInit(FSMC_NANDInitTypeDef *FSMC_NANDInitStruct) +{ + uint32_t tmppcr = 0x00000000, tmppmem = 0x00000000, tmppatt = 0x00000000; + + tmppcr = (uint32_t)FSMC_NANDInitStruct->FSMC_Waitfeature | + PCR_MemoryType_NAND | + FSMC_NANDInitStruct->FSMC_MemoryDataWidth | + FSMC_NANDInitStruct->FSMC_ECC | + FSMC_NANDInitStruct->FSMC_ECCPageSize | + (FSMC_NANDInitStruct->FSMC_TCLRSetupTime << 9) | + (FSMC_NANDInitStruct->FSMC_TARSetupTime << 13); + + tmppmem = (uint32_t)FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime | + (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime << 16) | + (FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime << 24); + + tmppatt = (uint32_t)FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime | + (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime << 8) | + (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime << 16) | + (FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime << 24); + + if(FSMC_NANDInitStruct->FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 = tmppcr; + FSMC_Bank2->PMEM2 = tmppmem; + FSMC_Bank2->PATT2 = tmppatt; + } +} + +/********************************************************************* + * @fn FSMC_NORSRAMStructInit + * + * @brief Fills each FSMC_NORSRAMInitStruct member with its default value. + * + * @param FSMC_NORSRAMInitStruct - pointer to a FSMC_NORSRAMInitTypeDef + * structure which will be initialized. + * + * @return none + */ +void FSMC_NORSRAMStructInit(FSMC_NORSRAMInitTypeDef *FSMC_NORSRAMInitStruct) +{ + FSMC_NORSRAMInitStruct->FSMC_Bank = FSMC_Bank1_NORSRAM1; + FSMC_NORSRAMInitStruct->FSMC_DataAddressMux = FSMC_DataAddressMux_Enable; + FSMC_NORSRAMInitStruct->FSMC_MemoryType = FSMC_MemoryType_SRAM; + FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; + FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; + FSMC_NORSRAMInitStruct->FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; + FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; + FSMC_NORSRAMInitStruct->FSMC_WrapMode = FSMC_WrapMode_Disable; + FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; + FSMC_NORSRAMInitStruct->FSMC_WriteOperation = FSMC_WriteOperation_Enable; + FSMC_NORSRAMInitStruct->FSMC_WaitSignal = FSMC_WaitSignal_Enable; + FSMC_NORSRAMInitStruct->FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; + FSMC_NORSRAMInitStruct->FSMC_WriteBurst = FSMC_WriteBurst_Disable; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime = 0xFF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency = 0xF; + FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode = FSMC_AccessMode_A; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressSetupTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AddressHoldTime = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataSetupTime = 0xFF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_BusTurnAroundDuration = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_CLKDivision = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_DataLatency = 0xF; + FSMC_NORSRAMInitStruct->FSMC_WriteTimingStruct->FSMC_AccessMode = FSMC_AccessMode_A; +} + +/********************************************************************* + * @fn FSMC_NANDStructInit + * + * @brief Fills each FSMC_NANDInitStruct member with its default value. + * + * @param FSMC_NANDInitStruct - pointer to a FSMC_NANDInitTypeDef + * structure which will be initialized. + * + * @return none + */ +void FSMC_NANDStructInit(FSMC_NANDInitTypeDef *FSMC_NANDInitStruct) +{ + FSMC_NANDInitStruct->FSMC_Bank = FSMC_Bank2_NAND; + FSMC_NANDInitStruct->FSMC_Waitfeature = FSMC_Waitfeature_Disable; + FSMC_NANDInitStruct->FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; + FSMC_NANDInitStruct->FSMC_ECC = FSMC_ECC_Disable; + FSMC_NANDInitStruct->FSMC_ECCPageSize = FSMC_ECCPageSize_256Bytes; + FSMC_NANDInitStruct->FSMC_TCLRSetupTime = 0x0; + FSMC_NANDInitStruct->FSMC_TARSetupTime = 0x0; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_CommonSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_SetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_WaitSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HoldSetupTime = 0xFC; + FSMC_NANDInitStruct->FSMC_AttributeSpaceTimingStruct->FSMC_HiZSetupTime = 0xFC; +} + +/********************************************************************* + * @fn FSMC_NORSRAMCmd + * + * @brief Enables or disables the specified NOR/SRAM Memory Bank. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank1_NORSRAM1 - FSMC Bank1 NOR/SRAM1 + * FSMC_Bank1_NORSRAM2 - FSMC Bank1 NOR/SRAM2 + * FSMC_Bank1_NORSRAM3 - FSMC Bank1 NOR/SRAM3 + * FSMC_Bank1_NORSRAM4 - FSMC Bank1 NOR/SRAM4 + * NewState£ºENABLE or DISABLE. + * + * @return none + */ +void FSMC_NORSRAMCmd(uint32_t FSMC_Bank, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + FSMC_Bank1->BTCR[FSMC_Bank] |= BCR_MBKEN_Set; + } + else + { + FSMC_Bank1->BTCR[FSMC_Bank] &= BCR_MBKEN_Reset; + } +} + +/********************************************************************* + * @fn FSMC_NANDCmd + * + * @brief Enables or disables the specified NAND Memory Bank. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * FSMC_Bank3_NAND - FSMC Bank3 NAND + * NewStat - ENABLE or DISABLE. + * + * @return none + */ +void FSMC_NANDCmd(uint32_t FSMC_Bank, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 |= PCR_PBKEN_Set; + } + } + else + { + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 &= PCR_PBKEN_Reset; + } + } +} + +/********************************************************************* + * @fn FSMC_NANDECCCmd + * + * @brief Enables or disables the FSMC NAND ECC feature. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void FSMC_NANDECCCmd(uint32_t FSMC_Bank, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 |= PCR_ECCEN_Set; + } + } + else + { + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->PCR2 &= PCR_ECCEN_Reset; + } + } +} + +/********************************************************************* + * @fn FSMC_GetECC + * + * @brief Returns the error correction code register value. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * NewState - ENABLE or DISABLE. + * + * @return eccval - The Error Correction Code (ECC) value. + */ +uint32_t FSMC_GetECC(uint32_t FSMC_Bank) +{ + uint32_t eccval = 0x00000000; + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + eccval = FSMC_Bank2->ECCR2; + } + + return (eccval); +} + +/********************************************************************* + * @fn FSMC_ITConfig + * + * @brief Enables or disables the specified FSMC interrupts. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * FSMC_IT - specifies the FSMC interrupt sources to be enabled or disabled. + * FSMC_IT_RisingEdge - Rising edge detection interrupt. + * FSMC_IT_Level - Level edge detection interrupt. + * FSMC_IT_FallingEdge - Falling edge detection interrupt. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void FSMC_ITConfig(uint32_t FSMC_Bank, uint32_t FSMC_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 |= FSMC_IT; + } + } + else + { + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 &= (uint32_t)~FSMC_IT; + } + } +} + +/********************************************************************* + * @fn FSMC_GetFlagStatus + * + * @brief Checks whether the specified FSMC flag is set or not. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * FSMC_FLAG - specifies the flag to check. + * FSMC_FLAG_RisingEdge - Rising egde detection Flag. + * FSMC_FLAG_Level - Level detection Flag. + * FSMC_FLAG_FallingEdge - Falling egde detection Flag. + * FSMC_FLAG_FEMPT - Fifo empty Flag. + * NewState - ENABLE or DISABLE. + * + * @return FlagStatus - The new state of FSMC_FLAG (SET or RESET). + */ +FlagStatus FSMC_GetFlagStatus(uint32_t FSMC_Bank, uint32_t FSMC_FLAG) +{ + FlagStatus bitstatus = RESET; + uint32_t tmpsr = 0x00000000; + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + tmpsr = FSMC_Bank2->SR2; + } + + if((tmpsr & FSMC_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn FSMC_ClearFlag + * + * @brief Clears the FSMC's pending flags. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * FSMC_FLAG - specifies the flag to check. + * FSMC_FLAG_RisingEdge - Rising egde detection Flag. + * FSMC_FLAG_Level - Level detection Flag. + * FSMC_FLAG_FallingEdge - Falling egde detection Flag. + * + * @return none + */ +void FSMC_ClearFlag(uint32_t FSMC_Bank, uint32_t FSMC_FLAG) +{ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 &= ~FSMC_FLAG; + } +} + +/********************************************************************* + * @fn FSMC_GetITStatus + * + * @brief Checks whether the specified FSMC interrupt has occurred or not. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * FSMC_IT - specifies the FSMC interrupt source to check. + * FSMC_IT_RisingEdge - Rising edge detection interrupt. + * FSMC_IT_Level - Level edge detection interrupt. + * FSMC_IT_FallingEdge - Falling edge detection interrupt. + * + * @return ITStatus - The new state of FSMC_IT (SET or RESET). + */ +ITStatus FSMC_GetITStatus(uint32_t FSMC_Bank, uint32_t FSMC_IT) +{ + ITStatus bitstatus = RESET; + uint32_t tmpsr = 0x0, itstatus = 0x0, itenable = 0x0; + + if(FSMC_Bank == FSMC_Bank2_NAND) + { + tmpsr = FSMC_Bank2->SR2; + } + + itstatus = tmpsr & FSMC_IT; + + itenable = tmpsr & (FSMC_IT >> 3); + if((itstatus != (uint32_t)RESET) && (itenable != (uint32_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn FSMC_ClearITPendingBit + * + * @brief Clears the FSMC's interrupt pending bits. + * + * @param FSMC_Bank - specifies the FSMC Bank to be used + * FSMC_Bank2_NAND - FSMC Bank2 NAND + * FSMC_IT - specifies the FSMC interrupt source to check. + * FSMC_IT_RisingEdge - Rising edge detection interrupt. + * FSMC_IT_Level - Level edge detection interrupt. + * FSMC_IT_FallingEdge - Falling edge detection interrupt. + * + * @return none + */ +void FSMC_ClearITPendingBit(uint32_t FSMC_Bank, uint32_t FSMC_IT) +{ + if(FSMC_Bank == FSMC_Bank2_NAND) + { + FSMC_Bank2->SR2 &= ~(FSMC_IT >> 3); + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_gpio.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_gpio.c new file mode 100755 index 000000000..4cbcc7af7 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_gpio.c @@ -0,0 +1,566 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_gpio.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the GPIO firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_gpio.h" +#include "ch32v30x_rcc.h" + +/* MASK */ +#define ECR_PORTPINCONFIG_MASK ((uint16_t)0xFF80) +#define LSB_MASK ((uint16_t)0xFFFF) +#define DBGAFR_POSITION_MASK ((uint32_t)0x000F0000) +#define DBGAFR_SWJCFG_MASK ((uint32_t)0xF0FFFFFF) +#define DBGAFR_LOCATION_MASK ((uint32_t)0x00200000) +#define DBGAFR_NUMBITS_MASK ((uint32_t)0x00100000) + +/********************************************************************* + * @fn GPIO_DeInit + * + * @brief Deinitializes the GPIOx peripheral registers to their default + * reset values. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * + * @return none + */ +void GPIO_DeInit(GPIO_TypeDef *GPIOx) +{ + if(GPIOx == GPIOA) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE); + } + else if(GPIOx == GPIOB) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, DISABLE); + } + else if(GPIOx == GPIOC) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, DISABLE); + } + else if(GPIOx == GPIOD) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, DISABLE); + } + else if(GPIOx == GPIOE) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, DISABLE); + } +} + +/********************************************************************* + * @fn GPIO_AFIODeInit + * + * @brief Deinitializes the Alternate Functions (remap, event control + * and EXTI configuration) registers to their default reset values. + * + * @return none + */ +void GPIO_AFIODeInit(void) +{ + RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, DISABLE); +} + +/********************************************************************* + * @fn GPIO_Init + * + * @brief GPIOx - where x can be (A..G) to select the GPIO peripheral. + * + * @param GPIO_InitStruct - pointer to a GPIO_InitTypeDef structure that + * contains the configuration information for the specified GPIO peripheral. + * + * @return none + */ +void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct) +{ + uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; + uint32_t tmpreg = 0x00, pinmask = 0x00; + + currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F); + + if((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00) + { + currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed; + } + + if(((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00) + { + tmpreg = GPIOx->CFGLR; + + for(pinpos = 0x00; pinpos < 0x08; pinpos++) + { + pos = ((uint32_t)0x01) << pinpos; + currentpin = (GPIO_InitStruct->GPIO_Pin) & pos; + + if(currentpin == pos) + { + pos = pinpos << 2; + pinmask = ((uint32_t)0x0F) << pos; + tmpreg &= ~pinmask; + tmpreg |= (currentmode << pos); + + if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) + { + GPIOx->BCR = (((uint32_t)0x01) << pinpos); + } + else + { + if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU) + { + GPIOx->BSHR = (((uint32_t)0x01) << pinpos); + } + } + } + } + GPIOx->CFGLR = tmpreg; + } + + if(GPIO_InitStruct->GPIO_Pin > 0x00FF) + { + tmpreg = GPIOx->CFGHR; + + for(pinpos = 0x00; pinpos < 0x08; pinpos++) + { + pos = (((uint32_t)0x01) << (pinpos + 0x08)); + currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos); + + if(currentpin == pos) + { + pos = pinpos << 2; + pinmask = ((uint32_t)0x0F) << pos; + tmpreg &= ~pinmask; + tmpreg |= (currentmode << pos); + + if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD) + { + GPIOx->BCR = (((uint32_t)0x01) << (pinpos + 0x08)); + } + + if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU) + { + GPIOx->BSHR = (((uint32_t)0x01) << (pinpos + 0x08)); + } + } + } + GPIOx->CFGHR = tmpreg; + } +} + +/********************************************************************* + * @fn GPIO_StructInit + * + * @brief Fills each GPIO_InitStruct member with its default + * + * @param GPIO_InitStruct - pointer to a GPIO_InitTypeDef structure + * which will be initialized. + * + * @return none + */ +void GPIO_StructInit(GPIO_InitTypeDef *GPIO_InitStruct) +{ + GPIO_InitStruct->GPIO_Pin = GPIO_Pin_All; + GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING; +} + +/********************************************************************* + * @fn GPIO_ReadInputDataBit + * + * @brief GPIOx - where x can be (A..G) to select the GPIO peripheral. + * + * @param GPIO_Pin - specifies the port bit to read. + * This parameter can be GPIO_Pin_x where x can be (0..15). + * + * @return The input port pin value. + */ +uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + uint8_t bitstatus = 0x00; + + if((GPIOx->INDR & GPIO_Pin) != (uint32_t)Bit_RESET) + { + bitstatus = (uint8_t)Bit_SET; + } + else + { + bitstatus = (uint8_t)Bit_RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn GPIO_ReadInputData + * + * @brief Reads the specified GPIO input data port. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * + * @return The output port pin value. + */ +uint16_t GPIO_ReadInputData(GPIO_TypeDef *GPIOx) +{ + return ((uint16_t)GPIOx->INDR); +} + +/********************************************************************* + * @fn GPIO_ReadOutputDataBit + * + * @brief Reads the specified output data port bit. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * GPIO_Pin - specifies the port bit to read. + * This parameter can be GPIO_Pin_x where x can be (0..15). + * + * @return none + */ +uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + uint8_t bitstatus = 0x00; + + if((GPIOx->OUTDR & GPIO_Pin) != (uint32_t)Bit_RESET) + { + bitstatus = (uint8_t)Bit_SET; + } + else + { + bitstatus = (uint8_t)Bit_RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn GPIO_ReadOutputData + * + * @brief Reads the specified GPIO output data port. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * + * @return GPIO output port pin value. + */ +uint16_t GPIO_ReadOutputData(GPIO_TypeDef *GPIOx) +{ + return ((uint16_t)GPIOx->OUTDR); +} + +/********************************************************************* + * @fn GPIO_SetBits + * + * @brief Sets the selected data port bits. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * GPIO_Pin - specifies the port bits to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * + * @return none + */ +void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + GPIOx->BSHR = GPIO_Pin; +} + +/********************************************************************* + * @fn GPIO_ResetBits + * + * @brief Clears the selected data port bits. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * GPIO_Pin - specifies the port bits to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * + * @return none + */ +void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + GPIOx->BCR = GPIO_Pin; +} + +/********************************************************************* + * @fn GPIO_WriteBit + * + * @brief Sets or clears the selected data port bit. + * + * @param GPIO_Pin - specifies the port bit to be written. + * This parameter can be one of GPIO_Pin_x where x can be (0..15). + * BitVal - specifies the value to be written to the selected bit. + * Bit_SetL - to clear the port pin. + * Bit_SetH - to set the port pin. + * + * @return none + */ +void GPIO_WriteBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, BitAction BitVal) +{ + if(BitVal != Bit_RESET) + { + GPIOx->BSHR = GPIO_Pin; + } + else + { + GPIOx->BCR = GPIO_Pin; + } +} + +/********************************************************************* + * @fn GPIO_Write + * + * @brief Writes data to the specified GPIO data port. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * PortVal - specifies the value to be written to the port output data register. + * + * @return none + */ +void GPIO_Write(GPIO_TypeDef *GPIOx, uint16_t PortVal) +{ + GPIOx->OUTDR = PortVal; +} + +/********************************************************************* + * @fn GPIO_PinLockConfig + * + * @brief Locks GPIO Pins configuration registers. + * + * @param GPIOx - where x can be (A..G) to select the GPIO peripheral. + * GPIO_Pin - specifies the port bit to be written. + * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). + * + * @return none + */ +void GPIO_PinLockConfig(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + uint32_t tmp = 0x00010000; + + tmp |= GPIO_Pin; + GPIOx->LCKR = tmp; + GPIOx->LCKR = GPIO_Pin; + GPIOx->LCKR = tmp; + tmp = GPIOx->LCKR; + tmp = GPIOx->LCKR; +} + +/********************************************************************* + * @fn GPIO_EventOutputConfig + * + * @brief Selects the GPIO pin used as Event output. + * + * @param GPIO_PortSource - selects the GPIO port to be used as source + * for Event output. + * This parameter can be GPIO_PortSourceGPIOx where x can be (A..E). + * GPIO_PinSource - specifies the pin for the Event output. + * This parameter can be GPIO_PinSourcex where x can be (0..15). + * + * @return none + */ +void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource) +{ + uint32_t tmpreg = 0x00; + + tmpreg = AFIO->ECR; + tmpreg &= ECR_PORTPINCONFIG_MASK; + tmpreg |= (uint32_t)GPIO_PortSource << 0x04; + tmpreg |= GPIO_PinSource; + AFIO->ECR = tmpreg; +} + +/********************************************************************* + * @fn GPIO_EventOutputCmd + * + * @brief Enables or disables the Event Output. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void GPIO_EventOutputCmd(FunctionalState NewState) +{ + if(NewState) + { + AFIO->ECR |= (1 << 7); + } + else + { + AFIO->ECR &= ~(1 << 7); + } +} + +/********************************************************************* + * @fn GPIO_PinRemapConfig + * + * @brief Changes the mapping of the specified pin. + * + * @param GPIO_Remap - selects the pin to remap. + * GPIO_Remap_SPI1 - SPI1 Alternate Function mapping + * GPIO_Remap_I2C1 - I2C1 Alternate Function mapping + * GPIO_Remap_USART1 - USART1 Alternate Function mapping + * GPIO_Remap_USART2 - USART2 Alternate Function mapping + * GPIO_PartialRemap_USART3 - USART3 Partial Alternate Function mapping + * GPIO_FullRemap_USART3 - USART3 Full Alternate Function mapping + * GPIO_PartialRemap_TIM1 - TIM1 Partial Alternate Function mapping + * GPIO_FullRemap_TIM1 - TIM1 Full Alternate Function mapping + * GPIO_PartialRemap1_TIM2 - TIM2 Partial1 Alternate Function mapping + * GPIO_PartialRemap2_TIM2 - TIM2 Partial2 Alternate Function mapping + * GPIO_FullRemap_TIM2 - TIM2 Full Alternate Function mapping + * GPIO_PartialRemap_TIM3 - TIM3 Partial Alternate Function mapping + * GPIO_FullRemap_TIM3 - TIM3 Full Alternate Function mapping + * GPIO_Remap_TIM4 - TIM4 Alternate Function mapping + * GPIO_Remap1_CAN1 - CAN1 Alternate Function mapping + * GPIO_Remap2_CAN1 - CAN1 Alternate Function mapping + * GPIO_Remap_PD01 - PD01 Alternate Function mapping + * GPIO_Remap_ADC1_ETRGINJ - ADC1 External Trigger Injected Conversion remapping + * GPIO_Remap_ADC1_ETRGREG - ADC1 External Trigger Regular Conversion remapping + * GPIO_Remap_ADC2_ETRGINJ - ADC2 External Trigger Injected Conversion remapping + * GPIO_Remap_ADC2_ETRGREG - ADC2 External Trigger Regular Conversion remapping + * GPIO_Remap_ETH - Ethernet remapping + * GPIO_Remap_CAN2 - CAN2 remapping + * GPIO_Remap_MII_RMII_SEL - MII or RMII selection + * GPIO_Remap_SWJ_NoJTRST - Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST + * GPIO_Remap_SWJ_JTAGDisable - JTAG-DP Disabled and SW-DP Enabled + * GPIO_Remap_SWJ_Disable - Full SWJ Disabled (JTAG-DP + SW-DP) + * GPIO_Remap_TIM2ITR1_PTP_SOF - Ethernet PTP output or USB OTG SOF (Start of Frame) connected + * to TIM2 Internal Trigger 1 for calibration + * GPIO_Remap_TIM2ITR1_PTP_SOF - Ethernet PTP output or USB OTG SOF (Start of Frame) + * GPIO_Remap_TIM8 - TIM8 Alternate Function mapping + * GPIO_PartialRemap_TIM9 - TIM9 Partial Alternate Function mapping + * GPIO_FullRemap_TIM9 - TIM9 Full Alternate Function mapping + * GPIO_PartialRemap_TIM10 - TIM10 Partial Alternate Function mapping + * GPIO_FullRemap_TIM10 - TIM10 Full Alternate Function mapping + * GPIO_Remap_FSMC_NADV - FSMC_NADV Alternate Function mapping + * GPIO_PartialRemap_USART4 - USART4 Partial Alternate Function mapping + * GPIO_FullRemap_USART4 - USART4 Full Alternate Function mapping + * GPIO_PartialRemap_USART5 - USART5 Partial Alternate Function mapping + * GPIO_FullRemap_USART5 - USART5 Full Alternate Function mapping + * GPIO_PartialRemap_USART6 - USART6 Partial Alternate Function mapping + * GPIO_FullRemap_USART6 - USART6 Full Alternate Function mapping + * GPIO_PartialRemap_USART7 - USART7 Partial Alternate Function mapping + * GPIO_FullRemap_USART7 - USART7 Full Alternate Function mapping + * GPIO_PartialRemap_USART8 - USART8 Partial Alternate Function mapping + * GPIO_FullRemap_USART8 - USART8 Full Alternate Function mapping + * GPIO_Remap_USART1_HighBit - USART1 Alternate Function mapping high bit + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState) +{ + uint32_t tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00; + + if((GPIO_Remap & 0x80000000) == 0x80000000) + { + tmpreg = AFIO->PCFR2; + } + else + { + tmpreg = AFIO->PCFR1; + } + + tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10; + tmp = GPIO_Remap & LSB_MASK; + + /* Clear bit */ + if((GPIO_Remap & 0x80000000) == 0x80000000) + { /* PCFR2 */ + if((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) /* [31:16] 2bit */ + { + tmp1 = ((uint32_t)0x03) << (tmpmask + 0x10); + tmpreg &= ~tmp1; + } + else if((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK) /* [15:0] 2bit */ + { + tmp1 = ((uint32_t)0x03) << tmpmask; + tmpreg &= ~tmp1; + } + else /* [31:0] 1bit */ + { + tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15) * 0x10)); + } + } + else + { /* PCFR1 */ + if((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) /* [26:24] 3bit SWD_JTAG */ + { + tmpreg &= DBGAFR_SWJCFG_MASK; + AFIO->PCFR1 &= DBGAFR_SWJCFG_MASK; + } + else if((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK) /* [15:0] 2bit */ + { + tmp1 = ((uint32_t)0x03) << tmpmask; + tmpreg &= ~tmp1; + tmpreg |= ~DBGAFR_SWJCFG_MASK; + } + else /* [31:0] 1bit */ + { + tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15) * 0x10)); + tmpreg |= ~DBGAFR_SWJCFG_MASK; + } + } + + /* Set bit */ + if(NewState != DISABLE) + { + tmpreg |= (tmp << ((GPIO_Remap >> 0x15) * 0x10)); + } + + if((GPIO_Remap & 0x80000000) == 0x80000000) + { + AFIO->PCFR2 = tmpreg; + } + else + { + AFIO->PCFR1 = tmpreg; + } +} + +/********************************************************************* + * @fn GPIO_EXTILineConfig + * + * @brief Selects the GPIO pin used as EXTI Line. + * + * @param GPIO_PortSource - selects the GPIO port to be used as source for EXTI lines. + * This parameter can be GPIO_PortSourceGPIOx where x can be (A..G). + * GPIO_PinSource - specifies the EXTI line to be configured. + * This parameter can be GPIO_PinSourcex where x can be (0..15). + * + * @return none + */ +void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource) +{ + uint32_t tmp = 0x00; + + tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)); + AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp; + AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03))); +} + +/********************************************************************* + * @fn GPIO_ETH_MediaInterfaceConfig + * + * @brief Selects the Ethernet media interface. + * + * @param GPIO_ETH_MediaInterface - specifies the Media Interface mode. + * GPIO_ETH_MediaInterface_MII - MII mode + * GPIO_ETH_MediaInterface_RMII - RMII mode + * + * @return none + */ +void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface) +{ + if(GPIO_ETH_MediaInterface) + { + AFIO->PCFR1 |= (1 << 23); + } + else + { + AFIO->PCFR1 &= ~(1 << 23); + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_i2c.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_i2c.c new file mode 100755 index 000000000..7ff46275a --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_i2c.c @@ -0,0 +1,972 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_i2c.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the I2C firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_i2c.h" +#include "ch32v30x_rcc.h" + +/* I2C SPE mask */ +#define CTLR1_PE_Set ((uint16_t)0x0001) +#define CTLR1_PE_Reset ((uint16_t)0xFFFE) + +/* I2C START mask */ +#define CTLR1_START_Set ((uint16_t)0x0100) +#define CTLR1_START_Reset ((uint16_t)0xFEFF) + +/* I2C STOP mask */ +#define CTLR1_STOP_Set ((uint16_t)0x0200) +#define CTLR1_STOP_Reset ((uint16_t)0xFDFF) + +/* I2C ACK mask */ +#define CTLR1_ACK_Set ((uint16_t)0x0400) +#define CTLR1_ACK_Reset ((uint16_t)0xFBFF) + +/* I2C ENGC mask */ +#define CTLR1_ENGC_Set ((uint16_t)0x0040) +#define CTLR1_ENGC_Reset ((uint16_t)0xFFBF) + +/* I2C SWRST mask */ +#define CTLR1_SWRST_Set ((uint16_t)0x8000) +#define CTLR1_SWRST_Reset ((uint16_t)0x7FFF) + +/* I2C PEC mask */ +#define CTLR1_PEC_Set ((uint16_t)0x1000) +#define CTLR1_PEC_Reset ((uint16_t)0xEFFF) + +/* I2C ENPEC mask */ +#define CTLR1_ENPEC_Set ((uint16_t)0x0020) +#define CTLR1_ENPEC_Reset ((uint16_t)0xFFDF) + +/* I2C ENARP mask */ +#define CTLR1_ENARP_Set ((uint16_t)0x0010) +#define CTLR1_ENARP_Reset ((uint16_t)0xFFEF) + +/* I2C NOSTRETCH mask */ +#define CTLR1_NOSTRETCH_Set ((uint16_t)0x0080) +#define CTLR1_NOSTRETCH_Reset ((uint16_t)0xFF7F) + +/* I2C registers Masks */ +#define CTLR1_CLEAR_Mask ((uint16_t)0xFBF5) + +/* I2C DMAEN mask */ +#define CTLR2_DMAEN_Set ((uint16_t)0x0800) +#define CTLR2_DMAEN_Reset ((uint16_t)0xF7FF) + +/* I2C LAST mask */ +#define CTLR2_LAST_Set ((uint16_t)0x1000) +#define CTLR2_LAST_Reset ((uint16_t)0xEFFF) + +/* I2C FREQ mask */ +#define CTLR2_FREQ_Reset ((uint16_t)0xFFC0) + +/* I2C ADD0 mask */ +#define OADDR1_ADD0_Set ((uint16_t)0x0001) +#define OADDR1_ADD0_Reset ((uint16_t)0xFFFE) + +/* I2C ENDUAL mask */ +#define OADDR2_ENDUAL_Set ((uint16_t)0x0001) +#define OADDR2_ENDUAL_Reset ((uint16_t)0xFFFE) + +/* I2C ADD2 mask */ +#define OADDR2_ADD2_Reset ((uint16_t)0xFF01) + +/* I2C F/S mask */ +#define CKCFGR_FS_Set ((uint16_t)0x8000) + +/* I2C CCR mask */ +#define CKCFGR_CCR_Set ((uint16_t)0x0FFF) + +/* I2C FLAG mask */ +#define FLAG_Mask ((uint32_t)0x00FFFFFF) + +/* I2C Interrupt Enable mask */ +#define ITEN_Mask ((uint32_t)0x07000000) + +/********************************************************************* + * @fn I2C_DeInit + * + * @brief Deinitializes the I2Cx peripheral registers to their default + * reset values. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * + * @return none + */ +void I2C_DeInit(I2C_TypeDef *I2Cx) +{ + if(I2Cx == I2C1) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE); + } + else + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE); + } +} + +/********************************************************************* + * @fn I2C_Init + * + * @brief Initializes the I2Cx peripheral according to the specified + * parameters in the I2C_InitStruct. + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_InitStruct - pointer to a I2C_InitTypeDef structure that + * contains the configuration information for the specified I2C peripheral. + * + * @return none + */ +void I2C_Init(I2C_TypeDef *I2Cx, I2C_InitTypeDef *I2C_InitStruct) +{ + uint16_t tmpreg = 0, freqrange = 0; + uint16_t result = 0x04; + uint32_t pclk1 = 8000000; + + RCC_ClocksTypeDef rcc_clocks; + + tmpreg = I2Cx->CTLR2; + tmpreg &= CTLR2_FREQ_Reset; + RCC_GetClocksFreq(&rcc_clocks); + pclk1 = rcc_clocks.PCLK1_Frequency; + freqrange = (uint16_t)(pclk1 / 1000000); + tmpreg |= freqrange; + I2Cx->CTLR2 = tmpreg; + + I2Cx->CTLR1 &= CTLR1_PE_Reset; + tmpreg = 0; + + if(I2C_InitStruct->I2C_ClockSpeed <= 100000) + { + result = (uint16_t)(pclk1 / (I2C_InitStruct->I2C_ClockSpeed << 1)); + + if(result < 0x04) + { + result = 0x04; + } + + tmpreg |= result; + I2Cx->RTR = freqrange + 1; + } + else + { + if(I2C_InitStruct->I2C_DutyCycle == I2C_DutyCycle_2) + { + result = (uint16_t)(pclk1 / (I2C_InitStruct->I2C_ClockSpeed * 3)); + } + else + { + result = (uint16_t)(pclk1 / (I2C_InitStruct->I2C_ClockSpeed * 25)); + result |= I2C_DutyCycle_16_9; + } + + if((result & CKCFGR_CCR_Set) == 0) + { + result |= (uint16_t)0x0001; + } + + tmpreg |= (uint16_t)(result | CKCFGR_FS_Set); + I2Cx->RTR = (uint16_t)(((freqrange * (uint16_t)300) / (uint16_t)1000) + (uint16_t)1); + } + + I2Cx->CKCFGR = tmpreg; + I2Cx->CTLR1 |= CTLR1_PE_Set; + + tmpreg = I2Cx->CTLR1; + tmpreg &= CTLR1_CLEAR_Mask; + tmpreg |= (uint16_t)((uint32_t)I2C_InitStruct->I2C_Mode | I2C_InitStruct->I2C_Ack); + I2Cx->CTLR1 = tmpreg; + + I2Cx->OADDR1 = (I2C_InitStruct->I2C_AcknowledgedAddress | I2C_InitStruct->I2C_OwnAddress1); +} + +/********************************************************************* + * @fn I2C_StructInit + * + * @brief Fills each I2C_InitStruct member with its default value. + * + * @param I2C_InitStruct - pointer to an I2C_InitTypeDef structure which + * will be initialized. + * + * @return none + */ +void I2C_StructInit(I2C_InitTypeDef *I2C_InitStruct) +{ + I2C_InitStruct->I2C_ClockSpeed = 5000; + I2C_InitStruct->I2C_Mode = I2C_Mode_I2C; + I2C_InitStruct->I2C_DutyCycle = I2C_DutyCycle_2; + I2C_InitStruct->I2C_OwnAddress1 = 0; + I2C_InitStruct->I2C_Ack = I2C_Ack_Disable; + I2C_InitStruct->I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; +} + +/********************************************************************* + * @fn I2C_Cmd + * + * @brief Enables or disables the specified I2C peripheral. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_Cmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_PE_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_PE_Reset; + } +} + +/********************************************************************* + * @fn I2C_DMACmd + * + * @brief Enables or disables the specified I2C DMA requests. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_DMACmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR2 |= CTLR2_DMAEN_Set; + } + else + { + I2Cx->CTLR2 &= CTLR2_DMAEN_Reset; + } +} + +/********************************************************************* + * @fn I2C_DMALastTransferCmd + * + * @brief Specifies if the next DMA transfer will be the last one. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_DMALastTransferCmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR2 |= CTLR2_LAST_Set; + } + else + { + I2Cx->CTLR2 &= CTLR2_LAST_Reset; + } +} + +/********************************************************************* + * @fn I2C_GenerateSTART + * + * @brief Generates I2Cx communication START condition. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_GenerateSTART(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_START_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_START_Reset; + } +} + +/********************************************************************* + * @fn I2C_GenerateSTOP + * + * @brief Generates I2Cx communication STOP condition. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_GenerateSTOP(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_STOP_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_STOP_Reset; + } +} + +/********************************************************************* + * @fn I2C_AcknowledgeConfig + * + * @brief Enables or disables the specified I2C acknowledge feature. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_AcknowledgeConfig(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_ACK_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_ACK_Reset; + } +} + +/********************************************************************* + * @fn I2C_OwnAddress2Config + * + * @brief Configures the specified I2C own address2. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * Address - specifies the 7bit I2C own address2. + * + * @return none + */ +void I2C_OwnAddress2Config(I2C_TypeDef *I2Cx, uint8_t Address) +{ + uint16_t tmpreg = 0; + + tmpreg = I2Cx->OADDR2; + tmpreg &= OADDR2_ADD2_Reset; + tmpreg |= (uint16_t)((uint16_t)Address & (uint16_t)0x00FE); + I2Cx->OADDR2 = tmpreg; +} + +/********************************************************************* + * @fn I2C_DualAddressCmd + * + * @brief Enables or disables the specified I2C dual addressing mode. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_DualAddressCmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->OADDR2 |= OADDR2_ENDUAL_Set; + } + else + { + I2Cx->OADDR2 &= OADDR2_ENDUAL_Reset; + } +} + +/********************************************************************* + * @fn I2C_GeneralCallCmd + * + * @brief Enables or disables the specified I2C general call feature. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_GeneralCallCmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_ENGC_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_ENGC_Reset; + } +} + +/********************************************************************* + * @fn I2C_ITConfig + * + * @brief Enables or disables the specified I2C interrupts. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_IT - specifies the I2C interrupts sources to be enabled or disabled. + * I2C_IT_BUF - Buffer interrupt mask. + * I2C_IT_EVT - Event interrupt mask. + * I2C_IT_ERR - Error interrupt mask. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_ITConfig(I2C_TypeDef *I2Cx, uint16_t I2C_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR2 |= I2C_IT; + } + else + { + I2Cx->CTLR2 &= (uint16_t)~I2C_IT; + } +} + +/********************************************************************* + * @fn I2C_SendData + * + * @brief Sends a data byte through the I2Cx peripheral. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * Data - Byte to be transmitted. + * + * @return none + */ +void I2C_SendData(I2C_TypeDef *I2Cx, uint8_t Data) +{ + I2Cx->DATAR = Data; +} + +/********************************************************************* + * @fn I2C_ReceiveData + * + * @brief Returns the most recent received data by the I2Cx peripheral. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * + * @return The value of the received data. + */ +uint8_t I2C_ReceiveData(I2C_TypeDef *I2Cx) +{ + return (uint8_t)I2Cx->DATAR; +} + +/********************************************************************* + * @fn I2C_Send7bitAddress + * + * @brief Transmits the address byte to select the slave device. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * Address - specifies the slave address which will be transmitted. + * I2C_Direction - specifies whether the I2C device will be a + * Transmitter or a Receiver. + * I2C_Direction_Transmitter - Transmitter mode. + * I2C_Direction_Receiver - Receiver mode. + * + * @return none + */ +void I2C_Send7bitAddress(I2C_TypeDef *I2Cx, uint8_t Address, uint8_t I2C_Direction) +{ + if(I2C_Direction != I2C_Direction_Transmitter) + { + Address |= OADDR1_ADD0_Set; + } + else + { + Address &= OADDR1_ADD0_Reset; + } + + I2Cx->DATAR = Address; +} + +/********************************************************************* + * @fn I2C_ReadRegister + * + * @brief Reads the specified I2C register and returns its value. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_Register - specifies the register to read. + * I2C_Register_CTLR1. + * I2C_Register_CTLR2. + * I2C_Register_OADDR1. + * I2C_Register_OADDR2. + * I2C_Register_DATAR. + * I2C_Register_STAR1. + * I2C_Register_STAR2. + * I2C_Register_CKCFGR. + * I2C_Register_RTR. + * + * @return none + */ +uint16_t I2C_ReadRegister(I2C_TypeDef *I2Cx, uint8_t I2C_Register) +{ + __IO uint32_t tmp = 0; + + tmp = (uint32_t)I2Cx; + tmp += I2C_Register; + + return (*(__IO uint16_t *)tmp); +} + +/********************************************************************* + * @fn I2C_SoftwareResetCmd + * + * @brief Enables or disables the specified I2C software reset. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_SoftwareResetCmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_SWRST_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_SWRST_Reset; + } +} + +/********************************************************************* + * @fn I2C_NACKPositionConfig + * + * @brief Selects the specified I2C NACK position in master receiver mode. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_NACKPosition - specifies the NACK position. + * I2C_NACKPosition_Next - indicates that the next byte will be + * the last received byte. + * I2C_NACKPosition_Current - indicates that current byte is the + * last received byte. + * + * @return none + */ +void I2C_NACKPositionConfig(I2C_TypeDef *I2Cx, uint16_t I2C_NACKPosition) +{ + if(I2C_NACKPosition == I2C_NACKPosition_Next) + { + I2Cx->CTLR1 |= I2C_NACKPosition_Next; + } + else + { + I2Cx->CTLR1 &= I2C_NACKPosition_Current; + } +} + +/********************************************************************* + * @fn I2C_SMBusAlertConfig + * + * @brief Drives the SMBusAlert pin high or low for the specified I2C. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_SMBusAlert - specifies SMBAlert pin level. + * I2C_SMBusAlert_Low - SMBAlert pin driven low. + * I2C_SMBusAlert_High - SMBAlert pin driven high. + * + * @return none + */ +void I2C_SMBusAlertConfig(I2C_TypeDef *I2Cx, uint16_t I2C_SMBusAlert) +{ + if(I2C_SMBusAlert == I2C_SMBusAlert_Low) + { + I2Cx->CTLR1 |= I2C_SMBusAlert_Low; + } + else + { + I2Cx->CTLR1 &= I2C_SMBusAlert_High; + } +} + +/********************************************************************* + * @fn I2C_TransmitPEC + * + * @brief Enables or disables the specified I2C PEC transfer. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_TransmitPEC(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_PEC_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_PEC_Reset; + } +} + +/********************************************************************* + * @fn I2C_PECPositionConfig + * + * @brief Selects the specified I2C PEC position. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_PECPosition - specifies the PEC position. + * I2C_PECPosition_Next - indicates that the next byte is PEC. + * I2C_PECPosition_Current - indicates that current byte is PEC. + * + * @return none + */ +void I2C_PECPositionConfig(I2C_TypeDef *I2Cx, uint16_t I2C_PECPosition) +{ + if(I2C_PECPosition == I2C_PECPosition_Next) + { + I2Cx->CTLR1 |= I2C_PECPosition_Next; + } + else + { + I2Cx->CTLR1 &= I2C_PECPosition_Current; + } +} + +/********************************************************************* + * @fn I2C_CalculatePEC + * + * @brief Enables or disables the PEC value calculation of the transferred bytes. + * + * @param I2Cx- where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_CalculatePEC(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_ENPEC_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_ENPEC_Reset; + } +} + +/********************************************************************* + * @fn I2C_GetPEC + * + * @brief Returns the PEC value for the specified I2C. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * + * @return The PEC value. + */ +uint8_t I2C_GetPEC(I2C_TypeDef *I2Cx) +{ + return ((I2Cx->STAR2) >> 8); +} + +/********************************************************************* + * @fn I2C_ARPCmd + * + * @brief Enables or disables the specified I2C ARP. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return The PEC value. + */ +void I2C_ARPCmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + I2Cx->CTLR1 |= CTLR1_ENARP_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_ENARP_Reset; + } +} + +/********************************************************************* + * @fn I2C_StretchClockCmd + * + * @brief Enables or disables the specified I2C Clock stretching. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2C_StretchClockCmd(I2C_TypeDef *I2Cx, FunctionalState NewState) +{ + if(NewState == DISABLE) + { + I2Cx->CTLR1 |= CTLR1_NOSTRETCH_Set; + } + else + { + I2Cx->CTLR1 &= CTLR1_NOSTRETCH_Reset; + } +} + +/********************************************************************* + * @fn I2C_FastModeDutyCycleConfig + * + * @brief Selects the specified I2C fast mode duty cycle. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_DutyCycle - specifies the fast mode duty cycle. + * I2C_DutyCycle_2 - I2C fast mode Tlow/Thigh = 2. + * I2C_DutyCycle_16_9 - I2C fast mode Tlow/Thigh = 16/9. + * + * @return none + */ +void I2C_FastModeDutyCycleConfig(I2C_TypeDef *I2Cx, uint16_t I2C_DutyCycle) +{ + if(I2C_DutyCycle != I2C_DutyCycle_16_9) + { + I2Cx->CKCFGR &= I2C_DutyCycle_2; + } + else + { + I2Cx->CKCFGR |= I2C_DutyCycle_16_9; + } +} + +/********************************************************************* + * @fn I2C_CheckEvent + * + * @brief Checks whether the last I2Cx Event is equal to the one passed + * as parameter. + * + * @param I2Cx- where x can be 1 or 2 to select the I2C peripheral. + * I2C_EVENT: specifies the event to be checked. + * I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED - EV1. + * I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED - EV1. + * I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED - EV1. + * I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED - EV1. + * I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED - EV1. + * I2C_EVENT_SLAVE_BYTE_RECEIVED - EV2. + * (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_DUALF) - EV2. + * (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_GENCALL) - EV2. + * I2C_EVENT_SLAVE_BYTE_TRANSMITTED - EV3. + * (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_DUALF) - EV3. + * (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_GENCALL) - EV3. + * I2C_EVENT_SLAVE_ACK_FAILURE - EV3_2. + * I2C_EVENT_SLAVE_STOP_DETECTED - EV4. + * I2C_EVENT_MASTER_MODE_SELECT - EV5. + * I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED - EV6. + * I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED - EV6. + * I2C_EVENT_MASTER_BYTE_RECEIVED - EV7. + * I2C_EVENT_MASTER_BYTE_TRANSMITTING - EV8. + * I2C_EVENT_MASTER_BYTE_TRANSMITTED - EV8_2. + * I2C_EVENT_MASTER_MODE_ADDRESS10 - EV9. + * + * @return none + */ +ErrorStatus I2C_CheckEvent(I2C_TypeDef *I2Cx, uint32_t I2C_EVENT) +{ + uint32_t lastevent = 0; + uint32_t flag1 = 0, flag2 = 0; + ErrorStatus status = StatERROR; + + flag1 = I2Cx->STAR1; + flag2 = I2Cx->STAR2; + flag2 = flag2 << 16; + + lastevent = (flag1 | flag2) & FLAG_Mask; + + if((lastevent & I2C_EVENT) == I2C_EVENT) + { + status = SUCCESS; + } + else + { + status = StatERROR; + } + + return status; +} + +/********************************************************************* + * @fn I2C_GetLastEvent + * + * @brief Returns the last I2Cx Event. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * + * @return none + */ +uint32_t I2C_GetLastEvent(I2C_TypeDef *I2Cx) +{ + uint32_t lastevent = 0; + uint32_t flag1 = 0, flag2 = 0; + + flag1 = I2Cx->STAR1; + flag2 = I2Cx->STAR2; + flag2 = flag2 << 16; + lastevent = (flag1 | flag2) & FLAG_Mask; + + return lastevent; +} + +/********************************************************************* + * @fn I2C_GetFlagStatus + * + * @brief Checks whether the last I2Cx Event is equal to the one passed + * as parameter. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_FLAG - specifies the flag to check. + * I2C_FLAG_DUALF - Dual flag (Slave mode). + * I2C_FLAG_SMBHOST - SMBus host header (Slave mode). + * I2C_FLAG_SMBDEFAULT - SMBus default header (Slave mode). + * I2C_FLAG_GENCALL - General call header flag (Slave mode). + * I2C_FLAG_TRA - Transmitter/Receiver flag. + * I2C_FLAG_BUSY - Bus busy flag. + * I2C_FLAG_MSL - Master/Slave flag. + * I2C_FLAG_SMBALERT - SMBus Alert flag. + * I2C_FLAG_TIMEOUT - Timeout or Tlow error flag. + * I2C_FLAG_PECERR - PEC error in reception flag. + * I2C_FLAG_OVR - Overrun/Underrun flag (Slave mode). + * I2C_FLAG_AF - Acknowledge failure flag. + * I2C_FLAG_ARLO - Arbitration lost flag (Master mode). + * I2C_FLAG_BERR - Bus error flag. + * I2C_FLAG_TXE - Data register empty flag (Transmitter). + * I2C_FLAG_RXNE- Data register not empty (Receiver) flag. + * I2C_FLAG_STOPF - Stop detection flag (Slave mode). + * I2C_FLAG_ADD10 - 10-bit header sent flag (Master mode). + * I2C_FLAG_BTF - Byte transfer finished flag. + * I2C_FLAG_ADDR - Address sent flag (Master mode) "ADSL" + * Address matched flag (Slave mode)"ENDA". + * I2C_FLAG_SB - Start bit flag (Master mode). + * + * @return none + */ +FlagStatus I2C_GetFlagStatus(I2C_TypeDef *I2Cx, uint32_t I2C_FLAG) +{ + FlagStatus bitstatus = RESET; + __IO uint32_t i2creg = 0, i2cxbase = 0; + + i2cxbase = (uint32_t)I2Cx; + i2creg = I2C_FLAG >> 28; + I2C_FLAG &= FLAG_Mask; + + if(i2creg != 0) + { + i2cxbase += 0x14; + } + else + { + I2C_FLAG = (uint32_t)(I2C_FLAG >> 16); + i2cxbase += 0x18; + } + + if(((*(__IO uint32_t *)i2cxbase) & I2C_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn I2C_ClearFlag + * + * @brief Clears the I2Cx's pending flags. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_FLAG - specifies the flag to clear. + * I2C_FLAG_SMBALERT - SMBus Alert flag. + * I2C_FLAG_TIMEOUT - Timeout or Tlow error flag. + * I2C_FLAG_PECERR - PEC error in reception flag. + * I2C_FLAG_OVR - Overrun/Underrun flag (Slave mode). + * I2C_FLAG_AF - Acknowledge failure flag. + * I2C_FLAG_ARLO - Arbitration lost flag (Master mode). + * I2C_FLAG_BERR - Bus error flag. + * + * @return none + */ +void I2C_ClearFlag(I2C_TypeDef *I2Cx, uint32_t I2C_FLAG) +{ + uint32_t flagpos = 0; + + flagpos = I2C_FLAG & FLAG_Mask; + I2Cx->STAR1 = (uint16_t)~flagpos; +} + +/********************************************************************* + * @fn I2C_GetITStatus + * + * @brief Checks whether the specified I2C interrupt has occurred or not. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * II2C_IT - specifies the interrupt source to check. + * I2C_IT_SMBALERT - SMBus Alert flag. + * I2C_IT_TIMEOUT - Timeout or Tlow error flag. + * I2C_IT_PECERR - PEC error in reception flag. + * I2C_IT_OVR - Overrun/Underrun flag (Slave mode). + * I2C_IT_AF - Acknowledge failure flag. + * I2C_IT_ARLO - Arbitration lost flag (Master mode). + * I2C_IT_BERR - Bus error flag. + * I2C_IT_TXE - Data register empty flag (Transmitter). + * I2C_IT_RXNE - Data register not empty (Receiver) flag. + * I2C_IT_STOPF - Stop detection flag (Slave mode). + * I2C_IT_ADD10 - 10-bit header sent flag (Master mode). + * I2C_IT_BTF - Byte transfer finished flag. + * I2C_IT_ADDR - Address sent flag (Master mode) "ADSL" Address matched + * flag (Slave mode)"ENDAD". + * I2C_IT_SB - Start bit flag (Master mode). + * + * @return none + */ +ITStatus I2C_GetITStatus(I2C_TypeDef *I2Cx, uint32_t I2C_IT) +{ + ITStatus bitstatus = RESET; + uint32_t enablestatus = 0; + + enablestatus = (uint32_t)(((I2C_IT & ITEN_Mask) >> 16) & (I2Cx->CTLR2)); + I2C_IT &= FLAG_Mask; + + if(((I2Cx->STAR1 & I2C_IT) != (uint32_t)RESET) && enablestatus) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn I2C_ClearITPendingBit + * + * @brief Clears the I2Cx interrupt pending bits. + * + * @param I2Cx - where x can be 1 or 2 to select the I2C peripheral. + * I2C_IT - specifies the interrupt pending bit to clear. + * I2C_IT_SMBALERT - SMBus Alert interrupt. + * I2C_IT_TIMEOUT - Timeout or Tlow error interrupt. + * I2C_IT_PECERR - PEC error in reception interrupt. + * I2C_IT_OVR - Overrun/Underrun interrupt (Slave mode). + * I2C_IT_AF - Acknowledge failure interrupt. + * I2C_IT_ARLO - Arbitration lost interrupt (Master mode). + * I2C_IT_BERR - Bus error interrupt. + * + * @return none + */ +void I2C_ClearITPendingBit(I2C_TypeDef *I2Cx, uint32_t I2C_IT) +{ + uint32_t flagpos = 0; + + flagpos = I2C_IT & FLAG_Mask; + I2Cx->STAR1 = (uint16_t)~flagpos; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_iwdg.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_iwdg.c new file mode 100755 index 000000000..8bac46480 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_iwdg.c @@ -0,0 +1,120 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_iwdg.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the IWDG firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_iwdg.h" + +/* CTLR register bit mask */ +#define CTLR_KEY_Reload ((uint16_t)0xAAAA) +#define CTLR_KEY_Enable ((uint16_t)0xCCCC) + +/********************************************************************* + * @fn IWDG_WriteAccessCmd + * + * @brief Enables or disables write access to IWDG_PSCR and IWDG_RLDR registers. + * + * @param WDG_WriteAccess - new state of write access to IWDG_PSCR and + * IWDG_RLDR registers. + * IWDG_WriteAccess_Enable - Enable write access to IWDG_PSCR and + * IWDG_RLDR registers. + * IWDG_WriteAccess_Disable - Disable write access to IWDG_PSCR + * and IWDG_RLDR registers. + * + * @return none + */ +void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess) +{ + IWDG->CTLR = IWDG_WriteAccess; +} + +/********************************************************************* + * @fn IWDG_SetPrescaler + * + * @brief Sets IWDG Prescaler value. + * + * @param IWDG_Prescaler - specifies the IWDG Prescaler value. + * IWDG_Prescaler_4 - IWDG prescaler set to 4. + * IWDG_Prescaler_8 - IWDG prescaler set to 8. + * IWDG_Prescaler_16 - IWDG prescaler set to 16. + * IWDG_Prescaler_32 - IWDG prescaler set to 32. + * IWDG_Prescaler_64 - IWDG prescaler set to 64. + * IWDG_Prescaler_128 - IWDG prescaler set to 128. + * IWDG_Prescaler_256 - IWDG prescaler set to 256. + * + * @return none + */ +void IWDG_SetPrescaler(uint8_t IWDG_Prescaler) +{ + IWDG->PSCR = IWDG_Prescaler; +} + +/********************************************************************* + * @fn IWDG_SetReload + * + * @brief Sets IWDG Reload value. + * + * @param Reload - specifies the IWDG Reload value. + * This parameter must be a number between 0 and 0x0FFF. + * + * @return none + */ +void IWDG_SetReload(uint16_t Reload) +{ + IWDG->RLDR = Reload; +} + +/********************************************************************* + * @fn IWDG_ReloadCounter + * + * @brief Reloads IWDG counter with value defined in the reload register. + * + * @return none + */ +void IWDG_ReloadCounter(void) +{ + IWDG->CTLR = CTLR_KEY_Reload; +} + +/********************************************************************* + * @fn IWDG_Enable + * + * @brief Enables IWDG (write access to IWDG_PSCR and IWDG_RLDR registers disabled). + * + * @return none + */ +void IWDG_Enable(void) +{ + IWDG->CTLR = CTLR_KEY_Enable; +} + +/********************************************************************* + * @fn IWDG_GetFlagStatus + * + * @brief Checks whether the specified IWDG flag is set or not. + * + * @param IWDG_FLAG - specifies the flag to check. + * IWDG_FLAG_PVU - Prescaler Value Update on going. + * IWDG_FLAG_RVU - Reload Value Update on going. + * + * @return none + */ +FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((IWDG->STATR & IWDG_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_misc.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_misc.c new file mode 100755 index 000000000..bc74e906e --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_misc.c @@ -0,0 +1,107 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_misc.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the miscellaneous firmware functions . +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*********************************************************************************/ +#include "ch32v30x_misc.h" + +__IO uint32_t NVIC_Priority_Group = 0; + +/********************************************************************* + * @fn NVIC_PriorityGroupConfig + * + * @brief Configures the priority grouping - pre-emption priority and subpriority. + * + * @param NVIC_PriorityGroup - specifies the priority grouping bits length. + * NVIC_PriorityGroup_0 - 0 bits for pre-emption priority + * 4 bits for subpriority + * NVIC_PriorityGroup_1 - 1 bits for pre-emption priority + * 3 bits for subpriority + * NVIC_PriorityGroup_2 - 2 bits for pre-emption priority + * 2 bits for subpriority + * NVIC_PriorityGroup_3 - 3 bits for pre-emption priority + * 1 bits for subpriority + * NVIC_PriorityGroup_4 - 4 bits for pre-emption priority + * 0 bits for subpriority + * + * @return none + */ +void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup) +{ + NVIC_Priority_Group = NVIC_PriorityGroup; +} + +/********************************************************************* + * @fn NVIC_Init + * + * @brief Initializes the NVIC peripheral according to the specified parameters in + * the NVIC_InitStruct. + * + * @param NVIC_InitStruct - pointer to a NVIC_InitTypeDef structure that contains the + * configuration information for the specified NVIC peripheral. + * + * @return none + */ +void NVIC_Init(NVIC_InitTypeDef *NVIC_InitStruct) +{ + uint8_t tmppre = 0; + + if(NVIC_Priority_Group == NVIC_PriorityGroup_0) + { + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, NVIC_InitStruct->NVIC_IRQChannelSubPriority << 4); + } + else if(NVIC_Priority_Group == NVIC_PriorityGroup_1) + { + if(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority == 1) + { + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (1 << 7) | (NVIC_InitStruct->NVIC_IRQChannelSubPriority << 4)); + } + else + { + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (0 << 7) | (NVIC_InitStruct->NVIC_IRQChannelSubPriority << 4)); + } + } + else if(NVIC_Priority_Group == NVIC_PriorityGroup_2) + { + if(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority <= 1) + { + tmppre = NVIC_InitStruct->NVIC_IRQChannelSubPriority + (4 * NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority); + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (0 << 7) | (tmppre << 4)); + } + else + { + tmppre = NVIC_InitStruct->NVIC_IRQChannelSubPriority + (4 * (NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority - 2)); + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (1 << 7) | (tmppre << 4)); + } + } + else if(NVIC_Priority_Group == NVIC_PriorityGroup_3) + { + if(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority <= 3) + { + tmppre = NVIC_InitStruct->NVIC_IRQChannelSubPriority + (2 * NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority); + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (0 << 7) | (tmppre << 4)); + } + else + { + tmppre = NVIC_InitStruct->NVIC_IRQChannelSubPriority + (2 * (NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority - 4)); + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (1 << 7) | (tmppre << 4)); + } + } + else if(NVIC_Priority_Group == NVIC_PriorityGroup_4) + { + NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << 4); + } + + if(NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE) + { + NVIC_EnableIRQ(NVIC_InitStruct->NVIC_IRQChannel); + } + else + { + NVIC_DisableIRQ(NVIC_InitStruct->NVIC_IRQChannel); + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_opa.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_opa.c new file mode 100755 index 000000000..77f132728 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_opa.c @@ -0,0 +1,84 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_opa.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the OPA firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +***************************************************************************************/ +#include "ch32v30x_opa.h" + +#define OPA_MASK ((uint32_t)0x000F) +#define OPA_Total_NUM 4 + +/********************************************************************* + * @fn OPA_DeInit + * + * @brief Deinitializes the OPA peripheral registers to their default + * reset values. + * + * @return none + */ +void OPA_DeInit(void) +{ + OPA->CR = 0; +} + +/********************************************************************* + * @fn OPA_Init + * + * @brief Initializes the OPA peripheral according to the specified + * parameters in the OPA_InitStruct. + * + * @param OPA_InitStruct - pointer to a OPA_InitTypeDef structure + * + * @return none + */ +void OPA_Init(OPA_InitTypeDef *OPA_InitStruct) +{ + uint32_t tmp = 0; + tmp = OPA->CR; + tmp &= ~(OPA_MASK << (OPA_InitStruct->OPA_NUM * OPA_Total_NUM)); + tmp |= (((OPA_InitStruct->PSEL << OPA_PSEL_OFFSET) | (OPA_InitStruct->NSEL << OPA_NSEL_OFFSET) | (OPA_InitStruct->Mode << OPA_MODE_OFFSET)) << (OPA_InitStruct->OPA_NUM * OPA_Total_NUM)); + OPA->CR = tmp; +} + +/********************************************************************* + * @fn OPA_StructInit + * + * @brief Fills each OPA_StructInit member with its reset value. + * + * @param OPA_StructInit - pointer to a OPA_InitTypeDef structure + * + * @return none + */ +void OPA_StructInit(OPA_InitTypeDef *OPA_InitStruct) +{ + OPA_InitStruct->Mode = OUT_IO; + OPA_InitStruct->PSEL = CHP0; + OPA_InitStruct->NSEL = CHN0; + OPA_InitStruct->OPA_NUM = OPA1; +} + +/********************************************************************* + * @fn OPA_Cmd + * + * @brief Enables or disables the specified OPA peripheral. + * + * @param OPA_NUM - Select OPA + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void OPA_Cmd(OPA_Num_TypeDef OPA_NUM, FunctionalState NewState) +{ + if(NewState == ENABLE) + { + OPA->CR |= (1 << (OPA_NUM * OPA_Total_NUM)); + } + else + { + OPA->CR &= ~(1 << (OPA_NUM * OPA_Total_NUM)); + } +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_pwr.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_pwr.c new file mode 100755 index 000000000..1a32e99d1 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_pwr.c @@ -0,0 +1,321 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_pwr.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the PWR firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +********************************************************************************/ +#include "ch32v30x_pwr.h" +#include "ch32v30x_rcc.h" + +/* PWR registers bit mask */ +/* CTLR register bit mask */ +#define CTLR_DS_MASK ((uint32_t)0xFFFFFFFC) +#define CTLR_PLS_MASK ((uint32_t)0xFFFFFF1F) + +/********************************************************************* + * @fn PWR_DeInit + * + * @brief Deinitializes the PWR peripheral registers to their default + * reset values. + * + * @return none + */ +void PWR_DeInit(void) +{ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_PWR, DISABLE); +} + +/********************************************************************* + * @fn PWR_BackupAccessCmd + * + * @brief Enables or disables access to the RTC and backup registers. + * + * @param NewState - new state of the access to the RTC and backup registers, + * This parameter can be: ENABLE or DISABLE. + * + * @return none + */ +void PWR_BackupAccessCmd(FunctionalState NewState) +{ + if(NewState) + { + PWR->CTLR |= (1 << 8); + } + else + { + PWR->CTLR &= ~(1 << 8); + } +} + +/********************************************************************* + * @fn PWR_PVDCmd + * + * @brief Enables or disables the Power Voltage Detector(PVD). + * + * @param NewState - new state of the PVD(ENABLE or DISABLE). + * + * @return none + */ +void PWR_PVDCmd(FunctionalState NewState) +{ + if(NewState) + { + PWR->CTLR |= (1 << 4); + } + else + { + PWR->CTLR &= ~(1 << 4); + } +} + +/********************************************************************* + * @fn PWR_PVDLevelConfig + * + * @brief Configures the voltage threshold detected by the Power Voltage + * Detector(PVD). + * + * @param PWR_PVDLevel - specifies the PVD detection level + * PWR_PVDLevel_2V2 - PVD detection level set to 2.2V + * PWR_PVDLevel_2V3 - PVD detection level set to 2.3V + * PWR_PVDLevel_2V4 - PVD detection level set to 2.4V + * PWR_PVDLevel_2V5 - PVD detection level set to 2.5V + * PWR_PVDLevel_2V6 - PVD detection level set to 2.6V + * PWR_PVDLevel_2V7 - PVD detection level set to 2.7V + * PWR_PVDLevel_2V8 - PVD detection level set to 2.8V + * PWR_PVDLevel_2V9 - PVD detection level set to 2.9V + * + * @return none + */ +void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel) +{ + uint32_t tmpreg = 0; + tmpreg = PWR->CTLR; + tmpreg &= CTLR_PLS_MASK; + tmpreg |= PWR_PVDLevel; + PWR->CTLR = tmpreg; +} + +/********************************************************************* + * @fn PWR_WakeUpPinCmd + * + * @brief Enables or disables the WakeUp Pin functionality. + * + * @param NewState - new state of the WakeUp Pin functionality + * (ENABLE or DISABLE). + * + * @return none + */ +void PWR_WakeUpPinCmd(FunctionalState NewState) +{ + if(NewState) + { + PWR->CSR |= (1 << 8); + } + else + { + PWR->CSR &= ~(1 << 8); + } +} + +/********************************************************************* + * @fn PWR_EnterSTOPMode + * + * @brief Enters STOP mode. + * + * @param PWR_Regulator - specifies the regulator state in STOP mode. + * PWR_Regulator_ON - STOP mode with regulator ON + * PWR_Regulator_LowPower - STOP mode with regulator in low power mode + * PWR_STOPEntry - specifies if STOP mode in entered with WFI or WFE instruction. + * PWR_STOPEntry_WFI - enter STOP mode with WFI instruction + * PWR_STOPEntry_WFE - enter STOP mode with WFE instruction + * + * @return none + */ +void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry) +{ + uint32_t tmpreg = 0; + tmpreg = PWR->CTLR; + tmpreg &= CTLR_DS_MASK; + tmpreg |= PWR_Regulator; + PWR->CTLR = tmpreg; + + NVIC->SCTLR |= (1 << 2); + + if(PWR_STOPEntry == PWR_STOPEntry_WFI) + { + __WFI(); + } + else + { + __WFE(); + } + + NVIC->SCTLR &= ~(1 << 2); +} + +/********************************************************************* + * @fn PWR_EnterSTANDBYMode + * + * @brief Enters STANDBY mode. + * + * @return none + */ +void PWR_EnterSTANDBYMode(void) +{ + PWR->CTLR |= PWR_CTLR_CWUF; + PWR->CTLR |= PWR_CTLR_PDDS; + NVIC->SCTLR |= (1 << 2); + + __WFI(); +} + +/********************************************************************* + * @fn PWR_GetFlagStatus + * + * @brief Checks whether the specified PWR flag is set or not. + * + * @param PWR_FLAG - specifies the flag to check. + * PWR_FLAG_WU - Wake Up flag + * PWR_FLAG_SB - StandBy flag + * PWR_FLAG_PVDO - PVD Output + * + * @return none + */ +FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((PWR->CSR & PWR_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn PWR_ClearFlag + * + * @brief Clears the PWR's pending flags. + * + * @param PWR_FLAG - specifies the flag to clear. + * PWR_FLAG_WU - Wake Up flag + * PWR_FLAG_SB - StandBy flag + * + * @return none + */ +void PWR_ClearFlag(uint32_t PWR_FLAG) +{ + PWR->CTLR |= PWR_FLAG << 2; +} + +/********************************************************************* + * @fn PWR_EnterSTANDBYMode_RAM + * + * @brief Enters STANDBY mode with RAM data retention function on. + * + * @return none + */ +void PWR_EnterSTANDBYMode_RAM(void) +{ + uint32_t tmpreg = 0; + tmpreg = PWR->CTLR; + + tmpreg |= PWR_CTLR_CWUF; + tmpreg |= PWR_CTLR_PDDS; + + //2K+30K in standby w power. + tmpreg |= (0x1 << 16) | (0x1 << 17); + + PWR->CTLR = tmpreg; + + NVIC->SCTLR |= (1 << 2); + + __WFI(); +} + +/********************************************************************* + * @fn PWR_EnterSTANDBYMode_RAM_LV + * + * @brief Enters STANDBY mode with RAM data retention function and LV mode on. + * + * @return none + */ +void PWR_EnterSTANDBYMode_RAM_LV(void) +{ + uint32_t tmpreg = 0; + tmpreg = PWR->CTLR; + + tmpreg |= PWR_CTLR_CWUF; + tmpreg |= PWR_CTLR_PDDS; + + //2K+30K in standby power. + tmpreg |= (0x1 << 16) | (0x1 << 17); + //2K+30K in standby LV . + tmpreg |= (0x1 << 20); + + PWR->CTLR = tmpreg; + + NVIC->SCTLR |= (1 << 2); + + __WFI(); +} + +/********************************************************************* + * @fn PWR_EnterSTANDBYMode_RAM_VBAT_EN + * + * @brief Enters STANDBY mode with RAM data retention function on (VBAT Enable). + * + * @return none + */ +void PWR_EnterSTANDBYMode_RAM_VBAT_EN(void) +{ + uint32_t tmpreg = 0; + tmpreg = PWR->CTLR; + + tmpreg |= PWR_CTLR_CWUF; + tmpreg |= PWR_CTLR_PDDS; + + //2K+30K in standby power (VBAT Enable). + tmpreg |= (0x1 << 18) | (0x1 << 19); + + PWR->CTLR = tmpreg; + + NVIC->SCTLR |= (1 << 2); + + __WFI(); +} + +/********************************************************************* + * @fn PWR_EnterSTANDBYMode_RAM_LV_VBAT_EN + * + * @brief Enters STANDBY mode with RAM data retention function and LV mode on(VBAT Enable). + * + * @return none + */ +void PWR_EnterSTANDBYMode_RAM_LV_VBAT_EN(void) +{ + uint32_t tmpreg = 0; + tmpreg = PWR->CTLR; + + tmpreg |= PWR_CTLR_CWUF; + tmpreg |= PWR_CTLR_PDDS; + + //2K+30K in standby power (VBAT Enable). + tmpreg |= (0x1 << 18) | (0x1 << 19); + //2K+30K in standby LV . + tmpreg |= (0x1 << 20); + + PWR->CTLR = tmpreg; + + NVIC->SCTLR |= (1 << 2); + + __WFI(); +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rcc.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rcc.c new file mode 100755 index 000000000..d7ff7e510 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rcc.c @@ -0,0 +1,1424 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_rcc.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the RCC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_rcc.h" + +/* RCC registers bit address in the alias region */ +#define RCC_OFFSET (RCC_BASE - PERIPH_BASE) + +/* BDCTLR Register */ +#define BDCTLR_OFFSET (RCC_OFFSET + 0x20) + +/* RCC registers bit mask */ + +/* CTLR register bit mask */ +#define CTLR_HSEBYP_Reset ((uint32_t)0xFFFBFFFF) +#define CTLR_HSEBYP_Set ((uint32_t)0x00040000) +#define CTLR_HSEON_Reset ((uint32_t)0xFFFEFFFF) +#define CTLR_HSEON_Set ((uint32_t)0x00010000) +#define CTLR_HSITRIM_Mask ((uint32_t)0xFFFFFF07) + +#define CFGR0_PLL_Mask ((uint32_t)0xFFC0FFFF) /* 103 */ +#define CFGR0_PLL_Mask_1 ((uint32_t)0xFFC2FFFF) /* 107 */ + +#define CFGR0_PLLMull_Mask ((uint32_t)0x003C0000) +#define CFGR0_PLLSRC_Mask ((uint32_t)0x00010000) +#define CFGR0_PLLXTPRE_Mask ((uint32_t)0x00020000) +#define CFGR0_SWS_Mask ((uint32_t)0x0000000C) +#define CFGR0_SW_Mask ((uint32_t)0xFFFFFFFC) +#define CFGR0_HPRE_Reset_Mask ((uint32_t)0xFFFFFF0F) +#define CFGR0_HPRE_Set_Mask ((uint32_t)0x000000F0) +#define CFGR0_PPRE1_Reset_Mask ((uint32_t)0xFFFFF8FF) +#define CFGR0_PPRE1_Set_Mask ((uint32_t)0x00000700) +#define CFGR0_PPRE2_Reset_Mask ((uint32_t)0xFFFFC7FF) +#define CFGR0_PPRE2_Set_Mask ((uint32_t)0x00003800) +#define CFGR0_ADCPRE_Reset_Mask ((uint32_t)0xFFFF3FFF) +#define CFGR0_ADCPRE_Set_Mask ((uint32_t)0x0000C000) + +/* RSTSCKR register bit mask */ +#define RSTSCKR_RMVF_Set ((uint32_t)0x01000000) + +/* CFGR2 register bit mask */ +#define CFGR2_PREDIV1SRC ((uint32_t)0x00010000) +#define CFGR2_PREDIV1 ((uint32_t)0x0000000F) +#define CFGR2_PREDIV2 ((uint32_t)0x000000F0) +#define CFGR2_PLL2MUL ((uint32_t)0x00000F00) +#define CFGR2_PLL3MUL ((uint32_t)0x0000F000) + +/* RCC Flag Mask */ +#define FLAG_Mask ((uint8_t)0x1F) + +/* INTR register byte 2 (Bits[15:8]) base address */ +#define INTR_BYTE2_ADDRESS ((uint32_t)0x40021009) + +/* INTR register byte 3 (Bits[23:16]) base address */ +#define INTR_BYTE3_ADDRESS ((uint32_t)0x4002100A) + +/* CFGR0 register byte 4 (Bits[31:24]) base address */ +#define CFGR0_BYTE4_ADDRESS ((uint32_t)0x40021007) + +/* BDCTLR register base address */ +#define BDCTLR_ADDRESS (PERIPH_BASE + BDCTLR_OFFSET) + +static __I uint8_t APBAHBPrescTable[16] = {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9}; +static __I uint8_t ADCPrescTable[4] = {2, 4, 6, 8}; + +/********************************************************************* + * @fn RCC_DeInit + * + * @brief Resets the RCC clock configuration to the default reset state. + * + * @return none + */ +void RCC_DeInit(void) +{ + RCC->CTLR |= (uint32_t)0x00000001; + +#ifdef CH32V30x_D8C + RCC->CFGR0 &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR0 &= (uint32_t)0xF0FF0000; +#endif + + RCC->CTLR &= (uint32_t)0xFEF6FFFF; + RCC->CTLR &= (uint32_t)0xFFFBFFFF; + RCC->CFGR0 &= (uint32_t)0xFF80FFFF; + +#ifdef CH32V30x_D8C + RCC->CTLR &= (uint32_t)0xEBFFFFFF; + RCC->INTR = 0x00FF0000; + RCC->CFGR2 = 0x00000000; +#else + RCC->INTR = 0x009F0000; +#endif +} + +/********************************************************************* + * @fn RCC_HSEConfig + * + * @brief Configures the External High Speed oscillator (HSE). + * + * @param RCC_HSE - + * RCC_HSE_OFF - HSE oscillator OFF. + * RCC_HSE_ON - HSE oscillator ON. + * RCC_HSE_Bypass - HSE oscillator bypassed with external clock. + * + * @return none + */ +void RCC_HSEConfig(uint32_t RCC_HSE) +{ + RCC->CTLR &= CTLR_HSEON_Reset; + RCC->CTLR &= CTLR_HSEBYP_Reset; + + switch(RCC_HSE) + { + case RCC_HSE_ON: + RCC->CTLR |= CTLR_HSEON_Set; + break; + + case RCC_HSE_Bypass: + RCC->CTLR |= CTLR_HSEBYP_Set | CTLR_HSEON_Set; + break; + + default: + break; + } +} + +/********************************************************************* + * @fn RCC_WaitForHSEStartUp + * + * @brief Waits for HSE start-up. + * + * @return SUCCESS - HSE oscillator is stable and ready to use. + * ERROR - HSE oscillator not yet ready. + */ +ErrorStatus RCC_WaitForHSEStartUp(void) +{ + __IO uint32_t StartUpCounter = 0; + + ErrorStatus status = StatERROR; + FlagStatus HSEStatus = RESET; + + do + { + HSEStatus = RCC_GetFlagStatus(RCC_FLAG_HSERDY); + StartUpCounter++; + } while((StartUpCounter != HSE_STARTUP_TIMEOUT) && (HSEStatus == RESET)); + + if(RCC_GetFlagStatus(RCC_FLAG_HSERDY) != RESET) + { + status = SUCCESS; + } + else + { + status = StatERROR; + } + + return (status); +} + +/********************************************************************* + * @fn RCC_AdjustHSICalibrationValue + * + * @brief Adjusts the Internal High Speed oscillator (HSI) calibration value. + * + * @param HSICalibrationValue - specifies the calibration trimming value. + * This parameter must be a number between 0 and 0x1F. + * + * @return none + */ +void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CTLR; + tmpreg &= CTLR_HSITRIM_Mask; + tmpreg |= (uint32_t)HSICalibrationValue << 3; + RCC->CTLR = tmpreg; +} + +/********************************************************************* + * @fn RCC_HSICmd + * + * @brief Enables or disables the Internal High Speed oscillator (HSI). + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_HSICmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->CTLR |= (1 << 0); + } + else + { + RCC->CTLR &= ~(1 << 0); + } +} + +/********************************************************************* + * @fn RCC_PLLConfig + * + * @brief Configures the PLL clock source and multiplication factor. + * + * @param RCC_PLLSource - specifies the PLL entry clock source. + * RCC_PLLSource_HSI_Div2 - HSI oscillator clock divided by 2 + * selected as PLL clock entry. + * RCC_PLLSource_PREDIV1 - PREDIV1 clock selected as PLL clock + * entry. + * RCC_PLLMul - specifies the PLL multiplication factor. + * This parameter can be RCC_PLLMul_x where x:[2,16]. + * For CH32V307 - + * RCC_PLLMul_18_EXTEN + * RCC_PLLMul_3_EXTEN + * RCC_PLLMul_4_EXTEN + * RCC_PLLMul_5_EXTEN + * RCC_PLLMul_6_EXTEN + * RCC_PLLMul_7_EXTEN + * RCC_PLLMul_8_EXTEN + * RCC_PLLMul_9_EXTEN + * RCC_PLLMul_10_EXTEN + * RCC_PLLMul_11_EXTEN + * RCC_PLLMul_12_EXTEN + * RCC_PLLMul_13_EXTEN + * RCC_PLLMul_14_EXTEN + * RCC_PLLMul_6_5_EXTEN + * RCC_PLLMul_15_EXTEN + * RCC_PLLMul_16_EXTEN + * For other CH32V30x - + * RCC_PLLMul_2 + * RCC_PLLMul_3 + * RCC_PLLMul_4 + * RCC_PLLMul_5 + * RCC_PLLMul_6 + * RCC_PLLMul_7 + * RCC_PLLMul_8 + * RCC_PLLMul_9 + * RCC_PLLMul_10 + * RCC_PLLMul_11 + * RCC_PLLMul_12 + * RCC_PLLMul_13 + * RCC_PLLMul_14 + * RCC_PLLMul_15 + * RCC_PLLMul_16 + * RCC_PLLMul_18 + * + * @return none + */ +void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR0; + + if(((*(uint32_t *)0x1FFFF70C) & (1 << 14)) != (1 << 14)) + { /* for other CH32V30x */ + tmpreg &= CFGR0_PLL_Mask; + } + else + { /* for CH32V307 */ + tmpreg &= CFGR0_PLL_Mask_1; + } + + tmpreg |= RCC_PLLSource | RCC_PLLMul; + RCC->CFGR0 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PLLCmd + * + * @brief Enables or disables the PLL. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_PLLCmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->CTLR |= (1 << 24); + } + else + { + RCC->CTLR &= ~(1 << 24); + } +} + +/********************************************************************* + * @fn RCC_SYSCLKConfig + * + * @brief Configures the system clock (SYSCLK). + * + * @param RCC_SYSCLKSource - specifies the clock source used as system clock. + * RCC_SYSCLKSource_HSI - HSI selected as system clock. + * RCC_SYSCLKSource_HSE - HSE selected as system clock. + * RCC_SYSCLKSource_PLLCLK - PLL selected as system clock. + * + * @return none + */ +void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR0; + tmpreg &= CFGR0_SW_Mask; + tmpreg |= RCC_SYSCLKSource; + RCC->CFGR0 = tmpreg; +} + +/********************************************************************* + * @fn RCC_GetSYSCLKSource + * + * @brief Returns the clock source used as system clock. + * + * @return 0x00 - HSI used as system clock. + * 0x04 - HSE used as system clock. + * 0x08 - PLL used as system clock. + */ +uint8_t RCC_GetSYSCLKSource(void) +{ + return ((uint8_t)(RCC->CFGR0 & CFGR0_SWS_Mask)); +} + +/********************************************************************* + * @fn RCC_HCLKConfig + * + * @brief Configures the AHB clock (HCLK). + * + * @param RCC_SYSCLK - defines the AHB clock divider. This clock is derived from + * the system clock (SYSCLK). + * RCC_SYSCLK_Div1 - AHB clock = SYSCLK. + * RCC_SYSCLK_Div2 - AHB clock = SYSCLK/2. + * RCC_SYSCLK_Div4 - AHB clock = SYSCLK/4. + * RCC_SYSCLK_Div8 - AHB clock = SYSCLK/8. + * RCC_SYSCLK_Div16 - AHB clock = SYSCLK/16. + * RCC_SYSCLK_Div64 - AHB clock = SYSCLK/64. + * RCC_SYSCLK_Div128 - AHB clock = SYSCLK/128. + * RCC_SYSCLK_Div256 - AHB clock = SYSCLK/256. + * RCC_SYSCLK_Div512 - AHB clock = SYSCLK/512. + * + * @return none + */ +void RCC_HCLKConfig(uint32_t RCC_SYSCLK) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR0; + tmpreg &= CFGR0_HPRE_Reset_Mask; + tmpreg |= RCC_SYSCLK; + RCC->CFGR0 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PCLK1Config + * + * @brief Configures the Low Speed APB clock (PCLK1). + * + * @param RCC_HCLK - defines the APB1 clock divider. This clock is derived from + * the AHB clock (HCLK). + * RCC_HCLK_Div1 - APB1 clock = HCLK. + * RCC_HCLK_Div2 - APB1 clock = HCLK/2. + * RCC_HCLK_Div4 - APB1 clock = HCLK/4. + * RCC_HCLK_Div8 - APB1 clock = HCLK/8. + * RCC_HCLK_Div16 - APB1 clock = HCLK/16. + * + * @return none + */ +void RCC_PCLK1Config(uint32_t RCC_HCLK) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR0; + tmpreg &= CFGR0_PPRE1_Reset_Mask; + tmpreg |= RCC_HCLK; + RCC->CFGR0 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PCLK2Config + * + * @brief Configures the High Speed APB clock (PCLK2). + * + * @param RCC_HCLK - defines the APB2 clock divider. This clock is derived from + * the AHB clock (HCLK). + * RCC_HCLK_Div1 - APB1 clock = HCLK. + * RCC_HCLK_Div2 - APB1 clock = HCLK/2. + * RCC_HCLK_Div4 - APB1 clock = HCLK/4. + * RCC_HCLK_Div8 - APB1 clock = HCLK/8. + * RCC_HCLK_Div16 - APB1 clock = HCLK/16. + * + * @return none + */ +void RCC_PCLK2Config(uint32_t RCC_HCLK) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR0; + tmpreg &= CFGR0_PPRE2_Reset_Mask; + tmpreg |= RCC_HCLK << 3; + RCC->CFGR0 = tmpreg; +} + +/********************************************************************* + * @fn RCC_ITConfig + * + * @brief Enables or disables the specified RCC interrupts. + * + * @param RCC_IT - specifies the RCC interrupt sources to be enabled or disabled. + * RCC_IT_LSIRDY - LSI ready interrupt. + * RCC_IT_LSERDY - LSE ready interrupt. + * RCC_IT_HSIRDY - HSI ready interrupt. + * RCC_IT_HSERDY - HSE ready interrupt. + * RCC_IT_PLLRDY - PLL ready interrupt. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + *(__IO uint8_t *)INTR_BYTE2_ADDRESS |= RCC_IT; + } + else + { + *(__IO uint8_t *)INTR_BYTE2_ADDRESS &= (uint8_t)~RCC_IT; + } +} + +/********************************************************************* + * @fn RCC_ADCCLKConfig + * + * @brief Configures the ADC clock (ADCCLK). + * + * @param RCC_PCLK2 - defines the ADC clock divider. This clock is derived from + * the APB2 clock (PCLK2). + * RCC_PCLK2_Div2 - ADC clock = PCLK2/2. + * RCC_PCLK2_Div4 - ADC clock = PCLK2/4. + * RCC_PCLK2_Div6 - ADC clock = PCLK2/6. + * RCC_PCLK2_Div8 - ADC clock = PCLK2/8. + * + * @return none + */ +void RCC_ADCCLKConfig(uint32_t RCC_PCLK2) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR0; + tmpreg &= CFGR0_ADCPRE_Reset_Mask; + tmpreg |= RCC_PCLK2; + RCC->CFGR0 = tmpreg; +} + +/********************************************************************* + * @fn RCC_LSEConfig + * + * @brief Configures the External Low Speed oscillator (LSE). + * + * @param RCC_LSE - specifies the new state of the LSE. + * RCC_LSE_OFF - LSE oscillator OFF. + * RCC_LSE_ON - LSE oscillator ON. + * RCC_LSE_Bypass - LSE oscillator bypassed with external clock. + * + * @return none + */ +void RCC_LSEConfig(uint8_t RCC_LSE) +{ + *(__IO uint8_t *)BDCTLR_ADDRESS = RCC_LSE_OFF; + *(__IO uint8_t *)BDCTLR_ADDRESS = RCC_LSE_OFF; + + switch(RCC_LSE) + { + case RCC_LSE_ON: + *(__IO uint8_t *)BDCTLR_ADDRESS = RCC_LSE_ON; + break; + + case RCC_LSE_Bypass: + *(__IO uint8_t *)BDCTLR_ADDRESS = RCC_LSE_Bypass | RCC_LSE_ON; + break; + + default: + break; + } +} + +/********************************************************************* + * @fn RCC_LSICmd + * + * @brief Enables or disables the Internal Low Speed oscillator (LSI). + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_LSICmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->RSTSCKR |= (1 << 0); + } + else + { + RCC->RSTSCKR &= ~(1 << 0); + } +} + +/********************************************************************* + * @fn RCC_RTCCLKConfig + * + * @brief Once the RTC clock is selected it can't be changed unless the Backup domain is reset. + * + * @param RCC_RTCCLKSource - specifies the RTC clock source. + * RCC_RTCCLKSource_LSE - LSE selected as RTC clock. + * RCC_RTCCLKSource_LSI - LSI selected as RTC clock. + * RCC_RTCCLKSource_HSE_Div128 - HSE clock divided by 128 selected as RTC clock. + * + * @return none + */ +void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource) +{ + RCC->BDCTLR |= RCC_RTCCLKSource; +} + +/********************************************************************* + * @fn RCC_RTCCLKCmd + * + * @brief This function must be used only after the RTC clock was selected + * using the RCC_RTCCLKConfig function. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_RTCCLKCmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->BDCTLR |= (1 << 15); + } + else + { + RCC->BDCTLR &= ~(1 << 15); + } +} + +/********************************************************************* + * @fn RCC_GetClocksFreq + * + * @brief The result of this function could be not correct when using + * fractional value for HSE crystal. + * + * @param RCC_Clocks - pointer to a RCC_ClocksTypeDef structure which will hold + * the clocks frequencies. + * + * @return none + */ +void RCC_GetClocksFreq(RCC_ClocksTypeDef *RCC_Clocks) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, presc = 0, Pll_6_5 = 0; + + tmp = RCC->CFGR0 & CFGR0_SWS_Mask; + + switch(tmp) + { + case 0x00: + RCC_Clocks->SYSCLK_Frequency = HSI_VALUE; + break; + + case 0x04: + RCC_Clocks->SYSCLK_Frequency = HSE_VALUE; + break; + + case 0x08: + pllmull = RCC->CFGR0 & CFGR0_PLLMull_Mask; + pllsource = RCC->CFGR0 & CFGR0_PLLSRC_Mask; + + pllmull = (pllmull >> 18) + 2; + + if(((*(uint32_t *)0x1FFFF70C) & (1 << 14)) != (1 << 14)) + { /* for other CH32V30x */ + if(pllmull == 17) + pllmull = 18; + } + else + { /* for CH32V307 */ + if(pllmull == 2) + pllmull = 18; + if(pllmull == 15) + { + pllmull = 13; /* *6.5 */ + Pll_6_5 = 1; + } + if(pllmull == 16) + pllmull = 15; + if(pllmull == 17) + pllmull = 16; + } + + if(pllsource == 0x00) + { + if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE) + { + RCC_Clocks->SYSCLK_Frequency = (HSI_VALUE)*pllmull; + } + else + { + RCC_Clocks->SYSCLK_Frequency = (HSI_VALUE >> 1) * pllmull; + } + } + else + { + if((RCC->CFGR0 & CFGR0_PLLXTPRE_Mask) != (uint32_t)RESET) + { + RCC_Clocks->SYSCLK_Frequency = (HSE_VALUE >> 1) * pllmull; + } + else + { + RCC_Clocks->SYSCLK_Frequency = HSE_VALUE * pllmull; + } + } + + if(Pll_6_5 == 1) + RCC_Clocks->SYSCLK_Frequency = (RCC_Clocks->SYSCLK_Frequency / 2); + + break; + + default: + RCC_Clocks->SYSCLK_Frequency = HSI_VALUE; + break; + } + + tmp = RCC->CFGR0 & CFGR0_HPRE_Set_Mask; + tmp = tmp >> 4; + presc = APBAHBPrescTable[tmp]; + RCC_Clocks->HCLK_Frequency = RCC_Clocks->SYSCLK_Frequency >> presc; + tmp = RCC->CFGR0 & CFGR0_PPRE1_Set_Mask; + tmp = tmp >> 8; + presc = APBAHBPrescTable[tmp]; + RCC_Clocks->PCLK1_Frequency = RCC_Clocks->HCLK_Frequency >> presc; + tmp = RCC->CFGR0 & CFGR0_PPRE2_Set_Mask; + tmp = tmp >> 11; + presc = APBAHBPrescTable[tmp]; + RCC_Clocks->PCLK2_Frequency = RCC_Clocks->HCLK_Frequency >> presc; + tmp = RCC->CFGR0 & CFGR0_ADCPRE_Set_Mask; + tmp = tmp >> 14; + presc = ADCPrescTable[tmp]; + RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK2_Frequency / presc; +} + +/********************************************************************* + * @fn RCC_AHBPeriphClockCmd + * + * @brief Enables or disables the AHB peripheral clock. + * + * @param RCC_AHBPeriph - specifies the AHB peripheral to gates its clock. + * RCC_AHBPeriph_DMA1. + * RCC_AHBPeriph_DMA2. + * RCC_AHBPeriph_SRAM. + * RCC_AHBPeriph_CRC. + * RCC_AHBPeriph_FSMC + * RCC_AHBPeriph_RNG + * RCC_AHBPeriph_SDIO + * RCC_AHBPeriph_USBHS + * RCC_AHBPeriph_OTG_FS + * RCC_AHBPeriph_DVP + * RCC_AHBPeriph_ETH_MAC + * RCC_AHBPeriph_ETH_MAC_Tx + * RCC_AHBPeriph_ETH_MAC_Rx + * NewState: ENABLE or DISABLE. + * + * @return none + */ +void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->AHBPCENR |= RCC_AHBPeriph; + } + else + { + RCC->AHBPCENR &= ~RCC_AHBPeriph; + } +} + +/********************************************************************* + * @fn RCC_APB2PeriphClockCmd + * + * @brief Enables or disables the High Speed APB (APB2) peripheral clock. + * + * @param RCC_APB2Periph - specifies the APB2 peripheral to gates its clock. + * RCC_APB2Periph_AFIO. + * RCC_APB2Periph_GPIOA. + * RCC_APB2Periph_GPIOB. + * RCC_APB2Periph_GPIOC. + * RCC_APB2Periph_GPIOD. + * RCC_APB2Periph_GPIOE + * RCC_APB2Periph_ADC1. + * RCC_APB2Periph_ADC2 + * RCC_APB2Periph_TIM1. + * RCC_APB2Periph_SPI1. + * RCC_APB2Periph_TIM8 + * RCC_APB2Periph_USART1. + * RCC_APB2Periph_TIM9 + * RCC_APB2Periph_TIM10 + * NewState - ENABLE or DISABLE + * + * @return none + */ +void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->APB2PCENR |= RCC_APB2Periph; + } + else + { + RCC->APB2PCENR &= ~RCC_APB2Periph; + } +} + +/********************************************************************* + * @fn RCC_APB1PeriphClockCmd + * + * @brief Enables or disables the Low Speed APB (APB1) peripheral clock. + * + * @param RCC_APB1Periph - specifies the APB1 peripheral to gates its clock. + * RCC_APB1Periph_TIM2. + * RCC_APB1Periph_TIM3. + * RCC_APB1Periph_TIM4. + * RCC_APB1Periph_TIM5 + * RCC_APB1Periph_TIM6 + * RCC_APB1Periph_TIM7 + * RCC_APB1Periph_UART6 + * RCC_APB1Periph_UART7 + * RCC_APB1Periph_UART8 + * RCC_APB1Periph_WWDG. + * RCC_APB1Periph_SPI2. + * RCC_APB1Periph_SPI3. + * RCC_APB1Periph_USART2. + * RCC_APB1Periph_USART3. + * RCC_APB1Periph_UART4 + * RCC_APB1Periph_UART5 + * RCC_APB1Periph_I2C1. + * RCC_APB1Periph_I2C2. + * RCC_APB1Periph_USB. + * RCC_APB1Periph_CAN1. + * RCC_APB1Periph_BKP. + * RCC_APB1Periph_PWR. + * RCC_APB1Periph_DAC. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->APB1PCENR |= RCC_APB1Periph; + } + else + { + RCC->APB1PCENR &= ~RCC_APB1Periph; + } +} + +/********************************************************************* + * @fn RCC_APB2PeriphResetCmd + * + * @brief Forces or releases High Speed APB (APB2) peripheral reset. + * + * @param RCC_APB2Periph - specifies the APB2 peripheral to reset. + * RCC_APB2Periph_AFIO. + * RCC_APB2Periph_GPIOA. + * RCC_APB2Periph_GPIOB. + * RCC_APB2Periph_GPIOC. + * RCC_APB2Periph_GPIOD. + * RCC_APB2Periph_GPIOE + * RCC_APB2Periph_ADC1. + * RCC_APB2Periph_ADC2 + * RCC_APB2Periph_TIM1. + * RCC_APB2Periph_SPI1. + * RCC_APB2Periph_TIM8 + * RCC_APB2Periph_USART1. + * RCC_APB2Periph_TIM9 + * RCC_APB2Periph_TIM10 + * NewState - ENABLE or DISABLE + * + * @return none + */ +void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) +{ + if (NewState != DISABLE) + { + RCC->APB2PRSTR |= RCC_APB2Periph; + } + else + { + RCC->APB2PRSTR &= ~RCC_APB2Periph; + } +} + +/********************************************************************* + * @fn RCC_APB1PeriphResetCmd + * + * @brief Forces or releases Low Speed APB (APB1) peripheral reset. + * + * @param RCC_APB1Periph - specifies the APB1 peripheral to reset. + * RCC_APB1Periph_TIM2. + * RCC_APB1Periph_TIM3. + * RCC_APB1Periph_TIM4. + * RCC_APB1Periph_TIM5 + * RCC_APB1Periph_TIM6 + * RCC_APB1Periph_TIM7 + * RCC_APB1Periph_UART6 + * RCC_APB1Periph_UART7 + * RCC_APB1Periph_UART8 + * RCC_APB1Periph_WWDG. + * RCC_APB1Periph_SPI2. + * RCC_APB1Periph_SPI3. + * RCC_APB1Periph_USART2. + * RCC_APB1Periph_USART3. + * RCC_APB1Periph_UART4 + * RCC_APB1Periph_UART5 + * RCC_APB1Periph_I2C1. + * RCC_APB1Periph_I2C2. + * RCC_APB1Periph_USB. + * RCC_APB1Periph_CAN1. + * RCC_APB1Periph_BKP. + * RCC_APB1Periph_PWR. + * RCC_APB1Periph_DAC. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->APB1PRSTR |= RCC_APB1Periph; + } + else + { + RCC->APB1PRSTR &= ~RCC_APB1Periph; + } +} + +/********************************************************************* + * @fn RCC_BackupResetCmd + * + * @brief Forces or releases the Backup domain reset. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_BackupResetCmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->BDCTLR |= (1 << 16); + } + else + { + RCC->BDCTLR &= ~(1 << 16); + } +} + +/********************************************************************* + * @fn RCC_ClockSecuritySystemCmd + * + * @brief Enables or disables the Clock Security System. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_ClockSecuritySystemCmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->CTLR |= (1 << 19); + } + else + { + RCC->CTLR &= ~(1 << 19); + } +} + +/********************************************************************* + * @fn RCC_MCOConfig + * + * @brief Selects the clock source to output on MCO pin. + * + * @param RCC_MCO - specifies the clock source to output. + * RCC_MCO_NoClock - No clock selected. + * RCC_MCO_SYSCLK - System clock selected. + * RCC_MCO_HSI - HSI oscillator clock selected. + * RCC_MCO_HSE - HSE oscillator clock selected. + * RCC_MCO_PLLCLK_Div2 - PLL clock divided by 2 selected. + * RCC_MCO_PLL2CLK - PLL2 clock selected + * RCC_MCO_PLL3CLK_Div2 - PLL3 clock divided by 2 selected + * RCC_MCO_XT1 - External 3-25 MHz oscillator clock selected + * RCC_MCO_PLL3CLK - PLL3 clock selected + * + * @return none + */ +void RCC_MCOConfig(uint8_t RCC_MCO) +{ + *(__IO uint8_t *)CFGR0_BYTE4_ADDRESS = RCC_MCO; +} + +/********************************************************************* + * @fn RCC_GetFlagStatus + * + * @brief Checks whether the specified RCC flag is set or not. + * + * @param RCC_FLAG - specifies the flag to check. + * RCC_FLAG_HSIRDY - HSI oscillator clock ready. + * RCC_FLAG_HSERDY - HSE oscillator clock ready. + * RCC_FLAG_PLLRDY - PLL clock ready. + * RCC_FLAG_PLL2RDY - PLL2 clock ready. + * RCC_FLAG_PLL3RDY - PLL3 clock ready. + * RCC_FLAG_LSERDY - LSE oscillator clock ready. + * RCC_FLAG_LSIRDY - LSI oscillator clock ready. + * RCC_FLAG_PINRST - Pin reset. + * RCC_FLAG_PORRST - POR/PDR reset. + * RCC_FLAG_SFTRST - Software reset. + * RCC_FLAG_IWDGRST - Independent Watchdog reset. + * RCC_FLAG_WWDGRST - Window Watchdog reset. + * RCC_FLAG_LPWRRST - Low Power reset. + * + * @return FlagStatus - SET or RESET. + */ +FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG) +{ + uint32_t tmp = 0; + uint32_t statusreg = 0; + + FlagStatus bitstatus = RESET; + tmp = RCC_FLAG >> 5; + + if(tmp == 1) + { + statusreg = RCC->CTLR; + } + else if(tmp == 2) + { + statusreg = RCC->BDCTLR; + } + else + { + statusreg = RCC->RSTSCKR; + } + + tmp = RCC_FLAG & FLAG_Mask; + + if((statusreg & ((uint32_t)1 << tmp)) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn RCC_ClearFlag + * + * @brief Clears the RCC reset flags. + * + * @return none + */ +void RCC_ClearFlag(void) +{ + RCC->RSTSCKR |= RSTSCKR_RMVF_Set; +} + +/********************************************************************* + * @fn RCC_GetITStatus + * + * @brief Checks whether the specified RCC interrupt has occurred or not. + * + * @param RCC_IT - specifies the RCC interrupt source to check. + * RCC_IT_LSIRDY - LSI ready interrupt. + * RCC_IT_LSERDY - LSE ready interrupt. + * RCC_IT_HSIRDY - HSI ready interrupt. + * RCC_IT_HSERDY - HSE ready interrupt. + * RCC_IT_PLLRDY - PLL ready interrupt. + * RCC_IT_PLL2RDY - PLL2 ready interrupt. + * RCC_IT_PLL3RDY - PLL3 ready interrupt. + * RCC_IT_CSS - Clock Security System interrupt. + * + * @return ITStatus - SET or RESET. + */ + +ITStatus RCC_GetITStatus(uint8_t RCC_IT) +{ + ITStatus bitstatus = RESET; + + if((RCC->INTR & RCC_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn RCC_ClearITPendingBit + * + * @brief Clears the RCC's interrupt pending bits. + * + * @param RCC_IT - specifies the interrupt pending bit to clear. + * RCC_IT_LSIRDY - LSI ready interrupt. + * RCC_IT_LSERDY - LSE ready interrupt. + * RCC_IT_HSIRDY - HSI ready interrupt. + * RCC_IT_HSERDY - HSE ready interrupt. + * RCC_IT_PLLRDY - PLL ready interrupt. + * RCC_IT_PLL2RDY - PLL2 ready interrupt. + * RCC_IT_PLL3RDY - PLL3 ready interrupt. + * RCC_IT_CSS - Clock Security System interrupt. + * + * @return none + */ +void RCC_ClearITPendingBit(uint8_t RCC_IT) +{ + *(__IO uint8_t *)INTR_BYTE3_ADDRESS = RCC_IT; +} + +/********************************************************************* + * @fn RCC_PREDIV1Config + * + * @brief Configures the PREDIV1 division factor. + * + * @param RCC_PREDIV1_Source - specifies the PREDIV1 clock source. + * RCC_PREDIV1_Source_HSE - HSE selected as PREDIV1 clock + * RCC_PREDIV1_Source_PLL2 - PLL2 selected as PREDIV1 clock + * RCC_PREDIV1_Div - specifies the PREDIV1 clock division factor. + * This parameter can be RCC_PREDIV1_Divx where x[1,16] + * + * @return none + */ +void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Source, uint32_t RCC_PREDIV1_Div) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR2; + tmpreg &= ~(CFGR2_PREDIV1 | CFGR2_PREDIV1SRC); + tmpreg |= RCC_PREDIV1_Source | RCC_PREDIV1_Div; + RCC->CFGR2 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PREDIV2Config + * + * @brief Configures the PREDIV2 division factor. + * + * @param RCC_PREDIV2_Div - specifies the PREDIV2 clock division factor. + * This parameter can be RCC_PREDIV2_Divx where x:[1,16] + * + * @return none + */ +void RCC_PREDIV2Config(uint32_t RCC_PREDIV2_Div) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR2; + tmpreg &= ~CFGR2_PREDIV2; + tmpreg |= RCC_PREDIV2_Div; + RCC->CFGR2 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PLL2Config + * + * @brief Configures the PLL2 multiplication factor. + * + * @param RCC_PLL2Mul - specifies the PLL2 multiplication factor. + * This parameter can be RCC_PLL2Mul_x where x:{[8,14], 16, 20} + * + * @return none + */ +void RCC_PLL2Config(uint32_t RCC_PLL2Mul) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR2; + tmpreg &= ~CFGR2_PLL2MUL; + tmpreg |= RCC_PLL2Mul; + RCC->CFGR2 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PLL2Cmd + * + * @brief Enables or disables the PLL2. + * + * @param NewState - new state of the PLL2. This parameter can be + * ENABLE or DISABLE. + * + * @return none + */ +void RCC_PLL2Cmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->CTLR |= (1 << 26); + } + else + { + RCC->CTLR &= ~(1 << 26); + } +} + +/********************************************************************* + * @fn RCC_PLL3Config + * + * @brief Configures the PLL3 multiplication factor. + * + * @param RCC_PLL3Mul - specifies the PLL2 multiplication factor. + * This parameter can be RCC_PLL2Mul_x where x:{[8,14], 16, 20} + * + * @return none + */ +void RCC_PLL3Config(uint32_t RCC_PLL3Mul) +{ + uint32_t tmpreg = 0; + + tmpreg = RCC->CFGR2; + tmpreg &= ~CFGR2_PLL3MUL; + tmpreg |= RCC_PLL3Mul; + RCC->CFGR2 = tmpreg; +} + +/********************************************************************* + * @fn RCC_PLL3Cmd + * + * @brief Enables or disables the PLL3. + * + * @param NewState - new state of the PLL2. This parameter can be + * ENABLE or DISABLE. + * + * @return none + */ +void RCC_PLL3Cmd(FunctionalState NewState) +{ + if(NewState) + { + RCC->CTLR |= (1 << 28); + } + else + { + RCC->CTLR &= ~(1 << 28); + } +} + +/********************************************************************* + * @fn RCC_OTGFSCLKConfig + * + * @brief Configures the USB OTG FS clock (OTGFSCLK). + * + * @param RCC_OTGFSCLKSource - specifies the USB OTG FS clock source. + * RCC_OTGFSCLKSource_PLLCLK_Div1 - PLL clock divided by 1 + * selected as USB OTG FS clock source + * RCC_OTGFSCLKSource_PLLCLK_Div2 - PLL clock divided by 2 + * selected as USB OTG FS clock source + * RCC_OTGFSCLKSource_PLLCLK_Div3 - PLL clock divided by 3 + * selected as USB OTG FS clock source + * + * @return none + */ +void RCC_OTGFSCLKConfig(uint32_t RCC_OTGFSCLKSource) +{ + RCC->CFGR0 &= ~(3 << 22); + RCC->CFGR0 |= RCC_OTGFSCLKSource << 22; +} + +/********************************************************************* + * @fn RCC_I2S2CLKConfig + * + * @brief Configures the I2S2 clock source(I2S2CLK). + * + * @param RCC_I2S2CLKSource - specifies the I2S2 clock source. + * RCC_I2S2CLKSource_SYSCLK - system clock selected as I2S2 clock entry + * RCC_I2S2CLKSource_PLL3_VCO - PLL3 VCO clock selected as I2S2 clock entry + * + * @return none + */ +void RCC_I2S2CLKConfig(uint32_t RCC_I2S2CLKSource) +{ + RCC->CFGR2 &= ~(1 << 17); + RCC->CFGR2 |= RCC_I2S2CLKSource << 17; +} + +/********************************************************************* + * @fn RCC_I2S3CLKConfig + * + * @brief Configures the I2S3 clock source(I2S2CLK). + * + * @param RCC_I2S3CLKSource - specifies the I2S3 clock source. + * RCC_I2S3CLKSource_SYSCLK - system clock selected as I2S3 clock entry + * RCC_I2S3CLKSource_PLL3_VCO - PLL3 VCO clock selected as I2S3 clock entry + * + * @return none + */ +void RCC_I2S3CLKConfig(uint32_t RCC_I2S3CLKSource) +{ + RCC->CFGR2 &= ~(1 << 18); + RCC->CFGR2 |= RCC_I2S3CLKSource << 18; +} + +/********************************************************************* + * @fn RCC_AHBPeriphResetCmd + * + * @brief Forces or releases AHB peripheral reset. + * + * @param RCC_AHBPeriph - specifies the AHB peripheral to reset. + * RCC_AHBPeriph_OTG_FS + * RCC_AHBPeriph_ETH_MAC + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->AHBRSTR |= RCC_AHBPeriph; + } + else + { + RCC->AHBRSTR &= ~RCC_AHBPeriph; + } +} + +/********************************************************************* + * @fn RCC_ADCCLKADJcmd + * + * @brief Enable ADC clock duty cycle adjustment. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_ADCCLKADJcmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->CFGR0 |= (1 << 31); + } + else + { + RCC->CFGR0 &= ~(1 << 31); + } +} + +/********************************************************************* + * @fn RCC_RNGCLKConfig + * + * @brief Configures the RNG clock source. + * + * @param RCC_RNGCLKSource - specifies the RNG clock source. + * RCC_RNGCLKSource_SYSCLK - system clock selected as RNG clock entry + * RCC_RNGCLKSource_PLL3_VCO - PLL3 VCO clock selected as RNG clock entry + * + * @return none + */ +void RCC_RNGCLKConfig(uint32_t RCC_RNGCLKSource) +{ + RCC->CFGR2 &= ~(1 << 19); + RCC->CFGR2 |= RCC_RNGCLKSource << 19; +} + +/********************************************************************* + * @fn RCC_ETH1GCLKConfig + * + * @brief Configures the ETH1G clock source. + * + * @param RCC_RNGCLKSource - specifies the ETH1G clock source. + * RCC_ETH1GCLKSource_PLL2_VCO - system clock selected as ETH1G clock entry + * RCC_ETH1GCLKSource_PLL3_VCO - PLL3 VCO clock selected as ETH1G clock entry + * RCC_ETH1GCLKSource_PB1_IN - GPIO PB1 input clock selected as ETH1G clock entry + * + * @return none + */ +void RCC_ETH1GCLKConfig(uint32_t RCC_ETH1GCLKSource) +{ + RCC->CFGR2 &= ~(3 << 20); + RCC->CFGR2 |= RCC_ETH1GCLKSource << 20; +} + +/********************************************************************* + * @fn RCC_ETH1G_125Mcmd + * + * @brief Enable ETH1G 125M. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_ETH1G_125Mcmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->CFGR2 |= (1 << 22); + } + else + { + RCC->CFGR2 &= ~(1 << 22); + } +} + +/********************************************************************* + * @fn RCC_USBHSConfig + * + * @brief Configures the USBHS clock. + * + * @param RCC_USBHS - defines the USBHS clock divider. + * RCC_USBPLL_Div1 - USBHS clock = USBPLL. + * RCC_USBPLL_Div2 - USBHS clock = USBPLL/2. + * RCC_USBPLL_Div3 - USBHS clock = USBPLL/3. + * RCC_USBPLL_Div4 - USBHS clock = USBPLL/4. + * RCC_USBPLL_Div5 - USBHS clock = USBPLL/5. + * RCC_USBPLL_Div6 - USBHS clock = USBPLL/6. + * RCC_USBPLL_Div7 - USBHS clock = USBPLL/7. + * RCC_USBPLL_Div8 - USBHS clock = USBPLL/8. + * + * @return none + */ +void RCC_USBHSConfig(uint32_t RCC_USBHS) +{ + RCC->CFGR2 &= ~(7 << 24); + RCC->CFGR2 |= RCC_USBHS << 24; +} + +/********************************************************************* + * @fn RCC_USBHSPLLCLKConfig + * + * @brief Configures the USBHSPLL clock source. + * + * @param RCC_HSBHSPLLCLKSource - specifies the USBHSPLL clock source. + * RCC_HSBHSPLLCLKSource_HSE - HSE clock selected as USBHSPLL clock entry + * RCC_HSBHSPLLCLKSource_HSI - HSI clock selected as USBHSPLL clock entry + * + * @return none + */ +void RCC_USBHSPLLCLKConfig(uint32_t RCC_USBHSPLLCLKSource) +{ + RCC->CFGR2 &= ~(1 << 27); + RCC->CFGR2 |= RCC_USBHSPLLCLKSource << 27; +} + +/********************************************************************* + * @fn RCC_USBHSPLLCKREFCLKConfig + * + * @brief Configures the USBHSPLL reference clock. + * + * @param RCC_USBHSPLLCKREFCLKSource - Select reference clock. + * RCC_USBHSPLLCKREFCLK_3M - reference clock 3Mhz. + * RCC_USBHSPLLCKREFCLK_4M - reference clock 4Mhz. + * RCC_USBHSPLLCKREFCLK_8M - reference clock 8Mhz. + * RCC_USBHSPLLCKREFCLK_5M - reference clock 5Mhz. + * + * @return none + */ +void RCC_USBHSPLLCKREFCLKConfig(uint32_t RCC_USBHSPLLCKREFCLKSource) +{ + RCC->CFGR2 &= ~(3 << 28); + RCC->CFGR2 |= RCC_USBHSPLLCKREFCLKSource << 28; +} + +/********************************************************************* + * @fn RCC_USBHSPHYPLLALIVEcmd + * + * @brief Enable USBHS PHY control. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RCC_USBHSPHYPLLALIVEcmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RCC->CFGR2 |= (1 << 30); + } + else + { + RCC->CFGR2 &= ~(1 << 30); + } +} + +/********************************************************************* + * @fn RCC_USBCLK48MConfig + * + * @brief Configures the USB clock 48MHz source. + * + * @param RCC_USBCLK48MSource - specifies the USB clock 48MHz source. + * RCC_USBCLK48MCLKSource_PLLCLK - PLLCLK clock selected as USB clock 48MHz clock entry + * RCC_USBCLK48MCLKSource_USBPHY - USBPHY clock selected as USB clock 48MHz clock entry + * + * @return none + */ +void RCC_USBCLK48MConfig(uint32_t RCC_USBCLK48MSource) +{ + RCC->CFGR2 &= ~(1 << 31); + RCC->CFGR2 |= RCC_USBCLK48MSource << 31; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rng.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rng.c new file mode 100755 index 000000000..54ccb1a86 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rng.c @@ -0,0 +1,152 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_rng.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the RNG firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +********************************************************************************/ +#include "ch32v30x_rng.h" +#include "ch32v30x_rcc.h" + +/********************************************************************* + * @fn RNG_Cmd + * + * @brief Enables or disables the RNG peripheral. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void RNG_Cmd(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RNG->CR |= RNG_CR_RNGEN; + } + else + { + RNG->CR &= ~RNG_CR_RNGEN; + } +} + +/********************************************************************* + * @fn RNG_GetRandomNumber + * + * @brief Returns a 32-bit random number. + * + * @return 32-bit random number. + */ +uint32_t RNG_GetRandomNumber(void) +{ + return RNG->DR; +} + +/********************************************************************* + * @fn RNG_ITConfig + * + * @brief Enables or disables the RNG interrupt. + * + * @param NewState - ENABLE or DISABLE. + * + * @return 32-bit random number. + */ +void RNG_ITConfig(FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RNG->CR |= RNG_CR_IE; + } + else + { + RNG->CR &= ~RNG_CR_IE; + } +} + +/********************************************************************* + * @fn RNG_GetFlagStatus + * + * @brief Checks whether the specified RNG flag is set or not. + * + * @param RNG_FLAG - specifies the RNG flag to check. + * RNG_FLAG_DRDY - Data Ready flag. + * RNG_FLAG_CECS - Clock Error Current flag. + * RNG_FLAG_SECS - Seed Error Current flag. + * + * @return 32-bit random number. + */ +FlagStatus RNG_GetFlagStatus(uint8_t RNG_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((RNG->SR & RNG_FLAG) != (uint8_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn RNG_ClearFlag + * + * @brief Clears the RNG flags. + * + * @param RNG_FLAG - specifies the flag to clear. + * RNG_FLAG_CECS - Clock Error Current flag. + * RNG_FLAG_SECS - Seed Error Current flag. + * + * @return 32-bit random number. + */ +void RNG_ClearFlag(uint8_t RNG_FLAG) +{ + RNG->SR = ~(uint32_t)(((uint32_t)RNG_FLAG) << 4); +} + +/********************************************************************* + * @fn RNG_GetFlagStatus + * + * @brief Checks whether the specified RNG interrupt has occurred or not. + * + * @param RNG_IT - specifies the RNG interrupt source to check. + * RNG_IT_CEI - Clock Error Interrupt. + * RNG_IT_SEI - Seed Error Interrupt. + * + * @return bitstatus£ºSET or RESET. + */ +ITStatus RNG_GetITStatus(uint8_t RNG_IT) +{ + ITStatus bitstatus = RESET; + + if((RNG->SR & RNG_IT) != (uint8_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn RNG_ClearITPendingBit + * + * @brief Clears the RNG interrupt pending bit(s). + * + * @param RNG_IT - specifies the RNG interrupt pending bit(s) to clear. + * RNG_IT_CEI - Clock Error Interrupt. + * RNG_IT_SEI - Seed Error Interrupt. + * + * @return None + */ +void RNG_ClearITPendingBit(uint8_t RNG_IT) +{ + RNG->SR = (uint8_t)~RNG_IT; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rtc.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rtc.c new file mode 100755 index 000000000..18f0c7511 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_rtc.c @@ -0,0 +1,273 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_rtc.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the RTC firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +********************************************************************************/ +#include "ch32v30x_rtc.h" + +/* RTC_Private_Defines */ +#define RTC_LSB_MASK ((uint32_t)0x0000FFFF) /* RTC LSB Mask */ +#define PRLH_MSB_MASK ((uint32_t)0x000F0000) /* RTC Prescaler MSB Mask */ + +/********************************************************************* + * @fn RTC_ITConfig + * + * @brief Enables or disables the specified RTC interrupts. + * + * @param RTC_IT - specifies the RTC interrupts sources to be enabled or disabled. + * RTC_IT_OW - Overflow interrupt + * RTC_IT_ALR - Alarm interrupt + * RTC_IT_SEC - Second interrupt + * + * @return NewState - new state of the specified RTC interrupts(ENABLE or DISABLE). + */ +void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + RTC->CTLRH |= RTC_IT; + } + else + { + RTC->CTLRH &= (uint16_t)~RTC_IT; + } +} + +/********************************************************************* + * @fn RTC_EnterConfigMode + * + * @brief Enters the RTC configuration mode. + * + * @return none + */ +void RTC_EnterConfigMode(void) +{ + RTC->CTLRL |= RTC_CTLRL_CNF; +} + +/********************************************************************* + * @fn RTC_ExitConfigMode + * + * @brief Exits from the RTC configuration mode. + * + * @return none + */ +void RTC_ExitConfigMode(void) +{ + RTC->CTLRL &= (uint16_t) ~((uint16_t)RTC_CTLRL_CNF); +} + +/********************************************************************* + * @fn RTC_GetCounter + * + * @brief Gets the RTC counter value + * + * @return RTC counter value + */ +uint32_t RTC_GetCounter(void) +{ + uint16_t high1 = 0, high2 = 0, low = 0; + + high1 = RTC->CNTH; + low = RTC->CNTL; + high2 = RTC->CNTH; + + if(high1 != high2) + { + return (((uint32_t)high2 << 16) | RTC->CNTL); + } + else + { + return (((uint32_t)high1 << 16) | low); + } +} + +/********************************************************************* + * @fn RTC_SetCounter + * + * @brief Sets the RTC counter value. + * + * @param CounterValue - RTC counter new value. + * + * @return RTC counter value + */ +void RTC_SetCounter(uint32_t CounterValue) +{ + RTC_EnterConfigMode(); + RTC->CNTH = CounterValue >> 16; + RTC->CNTL = (CounterValue & RTC_LSB_MASK); + RTC_ExitConfigMode(); +} + +/********************************************************************* + * @fn RTC_SetPrescaler + * + * @brief Sets the RTC prescaler value + * + * @param PrescalerValue - RTC prescaler new value + * + * @return none + */ +void RTC_SetPrescaler(uint32_t PrescalerValue) +{ + RTC_EnterConfigMode(); + RTC->PSCRH = (PrescalerValue & PRLH_MSB_MASK) >> 16; + RTC->PSCRL = (PrescalerValue & RTC_LSB_MASK); + RTC_ExitConfigMode(); +} + +/********************************************************************* + * @fn RTC_SetAlarm + * + * @brief Sets the RTC alarm value + * + * @param AlarmValue - RTC alarm new value + * + * @return none + */ +void RTC_SetAlarm(uint32_t AlarmValue) +{ + RTC_EnterConfigMode(); + RTC->ALRMH = AlarmValue >> 16; + RTC->ALRML = (AlarmValue & RTC_LSB_MASK); + RTC_ExitConfigMode(); +} + +/********************************************************************* + * @fn RTC_GetDivider + * + * @brief Gets the RTC divider value + * + * @return RTC Divider value + */ +uint32_t RTC_GetDivider(void) +{ + uint32_t tmp = 0x00; + tmp = ((uint32_t)RTC->DIVH & (uint32_t)0x000F) << 16; + tmp |= RTC->DIVL; + return tmp; +} + +/********************************************************************* + * @fn RTC_WaitForLastTask + * + * @brief Waits until last write operation on RTC registers has finished + * + * @return none + */ +void RTC_WaitForLastTask(void) +{ + while((RTC->CTLRL & RTC_FLAG_RTOFF) == (uint16_t)RESET) + { + } +} + +/********************************************************************* + * @fn RTC_WaitForSynchro + * + * @brief Waits until the RTC registers are synchronized with RTC APB clock + * + * @return none + */ +void RTC_WaitForSynchro(void) +{ + RTC->CTLRL &= (uint16_t)~RTC_FLAG_RSF; + while((RTC->CTLRL & RTC_FLAG_RSF) == (uint16_t)RESET) + { + } +} + +/********************************************************************* + * @fn RTC_GetFlagStatus + * + * @brief Checks whether the specified RTC flag is set or not + * + * @param RTC_FLAG- specifies the flag to check + * RTC_FLAG_RTOFF - RTC Operation OFF flag + * RTC_FLAG_RSF - Registers Synchronized flag + * RTC_FLAG_OW - Overflow flag + * RTC_FLAG_ALR - Alarm flag + * RTC_FLAG_SEC - Second flag + * + * @return none + */ +FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG) +{ + FlagStatus bitstatus = RESET; + if((RTC->CTLRL & RTC_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn RTC_ClearFlag + * + * @brief Clears the RTC's pending flags + * + * @param RTC_FLAG - specifies the flag to clear + * RTC_FLAG_RSF - Registers Synchronized flag + * RTC_FLAG_OW - Overflow flag + * RTC_FLAG_ALR - Alarm flag + * RTC_FLAG_SEC - Second flag + * + * @return none + */ +void RTC_ClearFlag(uint16_t RTC_FLAG) +{ + RTC->CTLRL &= (uint16_t)~RTC_FLAG; +} + +/********************************************************************* + * @fn RTC_GetITStatus + * + * @brief Checks whether the specified RTC interrupt has occurred or not + * + * @param RTC_IT - specifies the RTC interrupts sources to check + * RTC_FLAG_OW - Overflow interrupt + * RTC_FLAG_ALR - Alarm interrupt + * RTC_FLAG_SEC - Second interrupt + * + * @return The new state of the RTC_IT (SET or RESET) + */ +ITStatus RTC_GetITStatus(uint16_t RTC_IT) +{ + ITStatus bitstatus = RESET; + + bitstatus = (ITStatus)(RTC->CTLRL & RTC_IT); + if(((RTC->CTLRH & RTC_IT) != (uint16_t)RESET) && (bitstatus != (uint16_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn RTC_ClearITPendingBit + * + * @brief Clears the RTC's interrupt pending bits + * + * @param RTC_IT - specifies the interrupt pending bit to clear + * RTC_FLAG_OW - Overflow interrupt + * RTC_FLAG_ALR - Alarm interrupt + * RTC_FLAG_SEC - Second interrupt + * + * @return none + */ +void RTC_ClearITPendingBit(uint16_t RTC_IT) +{ + RTC->CTLRL &= (uint16_t)~RTC_IT; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_sdio.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_sdio.c new file mode 100755 index 000000000..1d9cd53b5 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_sdio.c @@ -0,0 +1,670 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_SDIO.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the SDIO firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_sdio.h" +#include "ch32v30x_rcc.h" + +#define SDIO_OFFSET (SDIO_BASE - PERIPH_BASE) + +/* CLKCR register clear mask */ +#define CLKCR_CLEAR_MASK ((uint32_t)0xFFFF8100) + +/* SDIO PWRCTRL Mask */ +#define PWR_PWRCTRL_MASK ((uint32_t)0xFFFFFFFC) + +/* SDIO DCTRL Clear Mask */ +#define DCTRL_CLEAR_MASK ((uint32_t)0xFFFFFF08) + +/* CMD Register clear mask */ +#define CMD_CLEAR_MASK ((uint32_t)0xFFFFF800) + +/* SDIO RESP Registers Address */ +#define SDIO_RESP_ADDR ((uint32_t)(SDIO_BASE + 0x14)) + +/********************************************************************* + * @fn SDIO_DeInit + * + * @brief Deinitializes the SDIO peripheral registers to their default + * reset values. + * + * @return RTC counter value + */ +void SDIO_DeInit(void) +{ + SDIO->POWER = 0x00000000; + SDIO->CLKCR = 0x00000000; + SDIO->ARG = 0x00000000; + SDIO->CMD = 0x00000000; + SDIO->DTIMER = 0x00000000; + SDIO->DLEN = 0x00000000; + SDIO->DCTRL = 0x00000000; + SDIO->ICR = 0x00C007FF; + SDIO->MASK = 0x00000000; +} + +/********************************************************************* + * @fn SDIO_Init + * + * @brief Initializes the SDIO peripheral according to the specified + * parameters in the SDIO_InitStruct. + * + * @param SDIO_InitStruct - pointer to a SDIO_InitTypeDef structure + * that contains the configuration information for the SDIO peripheral. + * + * @return None + */ +void SDIO_Init(SDIO_InitTypeDef *SDIO_InitStruct) +{ + uint32_t tmpreg = 0; + + tmpreg = SDIO->CLKCR; + tmpreg &= CLKCR_CLEAR_MASK; + tmpreg |= (SDIO_InitStruct->SDIO_ClockDiv | SDIO_InitStruct->SDIO_ClockPowerSave | + SDIO_InitStruct->SDIO_ClockBypass | SDIO_InitStruct->SDIO_BusWide | + SDIO_InitStruct->SDIO_ClockEdge | SDIO_InitStruct->SDIO_HardwareFlowControl); + + SDIO->CLKCR = tmpreg; +} + +/********************************************************************* + * @fn SDIO_StructInit + * + * @brief Fills each SDIO_InitStruct member with its default value. + * + * @param SDIO_InitStruct - pointer to an SDIO_InitTypeDef structure which + * will be initialized. + * + * @return none + */ +void SDIO_StructInit(SDIO_InitTypeDef *SDIO_InitStruct) +{ + SDIO_InitStruct->SDIO_ClockDiv = 0x00; + SDIO_InitStruct->SDIO_ClockEdge = SDIO_ClockEdge_Rising; + SDIO_InitStruct->SDIO_ClockBypass = SDIO_ClockBypass_Disable; + SDIO_InitStruct->SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable; + SDIO_InitStruct->SDIO_BusWide = SDIO_BusWide_1b; + SDIO_InitStruct->SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable; +} + +/********************************************************************* + * @fn SDIO_ClockCmd + * + * @brief Enables or disables the SDIO Clock. + * + * @param SDIO_InitStruct - pointer to an SDIO_InitTypeDef structure which + * will be initialized. + * + * @return none + */ +void SDIO_ClockCmd(FunctionalState NewState) +{ + if(NewState) + SDIO->CLKCR |= (1 << 8); + else + SDIO->CLKCR &= ~(1 << 8); +} + +/********************************************************************* + * @fn SDIO_SetPowerState + * + * @brief Sets the power status of the controller. + * + * @param SDIO_PowerState - new state of the Power state. + * SDIO_PowerState_OFF + * SDIO_PowerState_ON + * + * @return none + */ +void SDIO_SetPowerState(uint32_t SDIO_PowerState) +{ + SDIO->POWER &= PWR_PWRCTRL_MASK; + SDIO->POWER |= SDIO_PowerState; +} + +/********************************************************************* + * @fn SDIO_GetPowerState + * + * @brief Gets the power status of the controller. + * + * @param CounterValue - RTC counter new value. + * + * @return power state - + * 0x00 - Power OFF + * 0x02 - Power UP + * 0x03 - Power ON + */ +uint32_t SDIO_GetPowerState(void) +{ + return (SDIO->POWER & (~PWR_PWRCTRL_MASK)); +} + +/********************************************************************* + * @fn SDIO_ITConfig + * + * @brief Enables or disables the SDIO interrupts. + * + * @param DIO_IT - specifies the SDIO interrupt sources to be enabled or disabled. + * SDIO_IT_CCRCFAIL + * SDIO_IT_DCRCFAIL + * SDIO_IT_CTIMEOUT + * SDIO_IT_DTIMEOUT + * SDIO_IT_TXUNDERR + * SDIO_IT_RXOVERR + * SDIO_IT_CMDREND + * SDIO_IT_CMDSENT + * SDIO_IT_DATAEND + * SDIO_IT_STBITERR + * SDIO_IT_DBCKEND + * SDIO_IT_CMDACT + * SDIO_IT_TXACT + * SDIO_IT_RXACT + * SDIO_IT_TXFIFOHE + * SDIO_IT_RXFIFOHF + * SDIO_IT_TXFIFOF + * SDIO_IT_RXFIFOF + * SDIO_IT_TXFIFOE + * SDIO_IT_RXFIFOE + * SDIO_IT_TXDAVL + * SDIO_IT_RXDAVL + * SDIO_IT_SDIOIT + * SDIO_IT_CEATAEND + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_ITConfig(uint32_t SDIO_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + SDIO->MASK |= SDIO_IT; + } + else + { + SDIO->MASK &= ~SDIO_IT; + } +} + +/********************************************************************* + * @fn SDIO_DMACmd + * + * @brief Enables or disables the SDIO DMA request. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_DMACmd(FunctionalState NewState) +{ + if(NewState) + SDIO->DCTRL |= (1 << 3); + else + SDIO->DCTRL &= ~(1 << 3); +} + +/********************************************************************* + * @fn SDIO_SendCommand + * + * @brief Initializes the SDIO Command according to the specified + * parameters in the SDIO_CmdInitStruct and send the command. + * @param SDIO_CmdInitStruct - pointer to a SDIO_CmdInitTypeDef + * structure that contains the configuration information for + * ddthe SDIO command. + * + * @return none + */ +void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct) +{ + uint32_t tmpreg = 0; + + SDIO->ARG = SDIO_CmdInitStruct->SDIO_Argument; + + tmpreg = SDIO->CMD; + tmpreg &= CMD_CLEAR_MASK; + tmpreg |= (uint32_t)SDIO_CmdInitStruct->SDIO_CmdIndex | SDIO_CmdInitStruct->SDIO_Response | SDIO_CmdInitStruct->SDIO_Wait | SDIO_CmdInitStruct->SDIO_CPSM; + + SDIO->CMD = tmpreg; +} + +/********************************************************************* + * @fn SDIO_CmdStructInit + * + * @brief Fills each SDIO_CmdInitStruct member with its default value. + * + * @param SDIO_CmdInitStruct - pointer to an SDIO_CmdInitTypeDef + * structure which will be initialized. + * + * @return none + */ +void SDIO_CmdStructInit(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct) +{ + SDIO_CmdInitStruct->SDIO_Argument = 0x00; + SDIO_CmdInitStruct->SDIO_CmdIndex = 0x00; + SDIO_CmdInitStruct->SDIO_Response = SDIO_Response_No; + SDIO_CmdInitStruct->SDIO_Wait = SDIO_Wait_No; + SDIO_CmdInitStruct->SDIO_CPSM = SDIO_CPSM_Disable; +} + +/********************************************************************* + * @fn SDIO_GetCommandResponse + * + * @brief Returns command index of last command for which response received. + * + * @return Returns the command index of the last command response received. + */ +uint8_t SDIO_GetCommandResponse(void) +{ + return (uint8_t)(SDIO->RESPCMD); +} + +/********************************************************************* + * @fn SDIO_GetResponse + * + * @brief Returns response received from the card for the last command. + * + * @param SDIO_RESP - Specifies the SDIO response register. + * SDIO_RESP1 - Response Register 1 + * SDIO_RESP2 - Response Register 2 + * SDIO_RESP3 - Response Register 3 + * SDIO_RESP4 - Response Register 4 + * + * @return Returns the command index of the last command response received. + */ +uint32_t SDIO_GetResponse(uint32_t SDIO_RESP) +{ + __IO uint32_t tmp = 0; + + tmp = SDIO_RESP_ADDR + SDIO_RESP; + + return (*(__IO uint32_t *)tmp); +} + +/********************************************************************* + * @fn SDIO_DataConfig + * + * @brief Initializes the SDIO data path according to the specified + * + * @param SDIO_DataInitStruct - pointer to a SDIO_DataInitTypeDef structure that + * contains the configuration information for the SDIO command. + * + * @return none + */ +void SDIO_DataConfig(SDIO_DataInitTypeDef *SDIO_DataInitStruct) +{ + uint32_t tmpreg = 0; + + SDIO->DTIMER = SDIO_DataInitStruct->SDIO_DataTimeOut; + SDIO->DLEN = SDIO_DataInitStruct->SDIO_DataLength; + tmpreg = SDIO->DCTRL; + tmpreg &= DCTRL_CLEAR_MASK; + tmpreg |= (uint32_t)SDIO_DataInitStruct->SDIO_DataBlockSize | SDIO_DataInitStruct->SDIO_TransferDir | SDIO_DataInitStruct->SDIO_TransferMode | SDIO_DataInitStruct->SDIO_DPSM; + + SDIO->DCTRL = tmpreg; +} + +/********************************************************************* + * @fn SDIO_DataStructInit + * + * @brief Fills each SDIO_DataInitStruct member with its default value. + * + * @param SDIO_DataInitStruct - pointer to an SDIO_DataInitTypeDef + * structure which will be initialized. + * + * @return RTC counter value + */ +void SDIO_DataStructInit(SDIO_DataInitTypeDef *SDIO_DataInitStruct) +{ + SDIO_DataInitStruct->SDIO_DataTimeOut = 0xFFFFFFFF; + SDIO_DataInitStruct->SDIO_DataLength = 0x00; + SDIO_DataInitStruct->SDIO_DataBlockSize = SDIO_DataBlockSize_1b; + SDIO_DataInitStruct->SDIO_TransferDir = SDIO_TransferDir_ToCard; + SDIO_DataInitStruct->SDIO_TransferMode = SDIO_TransferMode_Block; + SDIO_DataInitStruct->SDIO_DPSM = SDIO_DPSM_Disable; +} + +/********************************************************************* + * @fn SDIO_GetDataCounter + * + * @brief Returns number of remaining data bytes to be transferred. + * + * @return Number of remaining data bytes to be transferred + */ +uint32_t SDIO_GetDataCounter(void) +{ + return SDIO->DCOUNT; +} + +/********************************************************************* + * @fn SDIO_ReadData + * + * @brief Read one data word from Rx FIFO. + * + * @return Data received + */ +uint32_t SDIO_ReadData(void) +{ + return SDIO->FIFO; +} + +/********************************************************************* + * @fn SDIO_WriteData + * + * @brief Write one data word to Tx FIFO. + * + * @param Data - 32-bit data word to write. + * + * @return RTC counter value + */ +void SDIO_WriteData(uint32_t Data) +{ + SDIO->FIFO = Data; +} + +/********************************************************************* + * @fn SDIO_GetFIFOCount + * + * @brief Returns the number of words left to be written to or read from FIFO. + * + * @return Remaining number of words. + */ +uint32_t SDIO_GetFIFOCount(void) +{ + return SDIO->FIFOCNT; +} + +/********************************************************************* + * @fn SDIO_StartSDIOReadWait + * + * @brief Starts the SD I/O Read Wait operation. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_StartSDIOReadWait(FunctionalState NewState) +{ + if(NewState) + SDIO->DCTRL |= (1 << 8); + else + SDIO->DCTRL &= ~(1 << 8); +} + +/********************************************************************* + * @fn SDIO_StopSDIOReadWait + * + * @brief Stops the SD I/O Read Wait operation. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_StopSDIOReadWait(FunctionalState NewState) +{ + if(NewState) + SDIO->DCTRL |= (1 << 9); + else + SDIO->DCTRL &= ~(1 << 9); +} + +/********************************************************************* + * @fn SDIO_SetSDIOReadWaitMode + * + * @brief Sets one of the two options of inserting read wait interval. + * + * @param SDIO_ReadWaitMode - SD I/O Read Wait operation mode. + * SDIO_ReadWaitMode_CLK - Read Wait control by stopping SDIOCLK + * SDIO_ReadWaitMode_DATA2 - Read Wait control using SDIO_DATA2 + * + * @return none + */ +void SDIO_SetSDIOReadWaitMode(uint32_t SDIO_ReadWaitMode) +{ + if(SDIO_ReadWaitMode) + SDIO->DCTRL |= (1 << 10); + else + SDIO->DCTRL &= ~(1 << 10); +} + +/********************************************************************* + * @fn SDIO_SetSDIOOperation + * + * @brief Enables or disables the SD I/O Mode Operation. + * + * @param NewState: ENABLE or DISABLE. + * + * @return none + */ +void SDIO_SetSDIOOperation(FunctionalState NewState) +{ + if(NewState) + SDIO->DCTRL |= (1 << 11); + else + SDIO->DCTRL &= ~(1 << 11); +} + +/********************************************************************* + * @fn SDIO_SendSDIOSuspendCmd + * + * @brief Enables or disables the SD I/O Mode suspend command sending. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_SendSDIOSuspendCmd(FunctionalState NewState) +{ + if(NewState) + SDIO->CMD |= (1 << 11); + else + SDIO->CMD &= ~(1 << 11); +} + +/********************************************************************* + * @fn SDIO_CommandCompletionCmd + * + * @brief Enables or disables the command completion signal. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_CommandCompletionCmd(FunctionalState NewState) +{ + if(NewState) + SDIO->CMD |= (1 << 12); + else + SDIO->CMD &= ~(1 << 12); +} + +/********************************************************************* + * @fn SDIO_CEATAITCmd + * + * @brief Enables or disables the CE-ATA interrupt. + * + * @param NewState - ENABLE or DISABLE. + * + * @return none + */ +void SDIO_CEATAITCmd(FunctionalState NewState) +{ + if(NewState) + SDIO->CMD |= (1 << 13); + else + SDIO->CMD &= ~(1 << 13); +} + +/********************************************************************* + * @fn SDIO_SendCEATACmd + * + * @brief Sends CE-ATA command (CMD61). + * + * @param NewState - ENABLE or DISABLE. + * + * @return RTC counter value + */ +void SDIO_SendCEATACmd(FunctionalState NewState) +{ + if(NewState) + SDIO->CMD |= (1 << 14); + else + SDIO->CMD &= ~(1 << 14); +} + +/********************************************************************* + * @fn SDIO_GetFlagStatus + * + * @brief Checks whether the specified SDIO flag is set or not. + * + * @param SDIO_FLAG - specifies the flag to check. + * SDIO_FLAG_CCRCFAIL - Command response received (CRC check failed) + * SDIO_FLAG_DCRCFAIL - Data block sent/received (CRC check failed) + * SDIO_FLAG_CTIMEOUT - Command response timeout + * SDIO_FLAG_DTIMEOUT - Data timeout + * SDIO_FLAG_TXUNDERR - Transmit FIFO underrun error + * SDIO_FLAG_RXOVERR - Received FIFO overrun error + * SDIO_FLAG_CMDREND - Command response received (CRC check passed) + * SDIO_FLAG_CMDSENT - Command sent (no response required) + * SDIO_FLAG_DATAEND - Data end (data counter, SDIDCOUNT, is zero) + * SDIO_FLAG_STBITERR - Start bit not detected on all data signals + * in wide bus mode. + * SDIO_FLAG_DBCKEND - Data block sent/received (CRC check passed) + * SDIO_FLAG_CMDACT - Command transfer in progress + * SDIO_FLAG_TXACT - Data transmit in progress + * SDIO_FLAG_RXACT - Data receive in progress + * SDIO_FLAG_TXFIFOHE - Transmit FIFO Half Empty + * SDIO_FLAG_RXFIFOHF - Receive FIFO Half Full + * SDIO_FLAG_TXFIFOF - Transmit FIFO full + * SDIO_FLAG_RXFIFOF - Receive FIFO full + * SDIO_FLAG_TXFIFOE - Transmit FIFO empty + * SDIO_FLAG_RXFIFOE - Receive FIFO empty + * SDIO_FLAG_TXDAVL - Data available in transmit FIFO + * SDIO_FLAG_RXDAVL - Data available in receive FIFO + * SDIO_FLAG_SDIOIT - SD I/O interrupt received + * SDIO_FLAG_CEATAEND - CE-ATA command completion signal received + * for CMD61 + * + * @return ITStatus - SET or RESET + */ +FlagStatus SDIO_GetFlagStatus(uint32_t SDIO_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((SDIO->STA & SDIO_FLAG) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn SDIO_ClearFlag + * + * @brief Clears the SDIO's pending flags. + * + * @param SDIO_FLAG - specifies the flag to clear. + * SDIO_FLAG_CCRCFAIL - Command response received (CRC check failed) + * SDIO_FLAG_DCRCFAIL - Data block sent/received (CRC check failed) + * SDIO_FLAG_CTIMEOUT - Command response timeout + * SDIO_FLAG_DTIMEOUT - Data timeout + * SDIO_FLAG_TXUNDERR - Transmit FIFO underrun error + * SDIO_FLAG_RXOVERR - Received FIFO overrun error + * SDIO_FLAG_CMDREND - Command response received (CRC check passed) + * SDIO_FLAG_CMDSENT - Command sent (no response required) + * SDIO_FLAG_DATAEND - Data end (data counter, SDIDCOUNT, is zero) + * SDIO_FLAG_STBITERR - Start bit not detected on all data signals + * in wide bus mode + * SDIO_FLAG_DBCKEND - Data block sent/received (CRC check passed) + * SDIO_FLAG_SDIOIT - SD I/O interrupt received + * SDIO_FLAG_CEATAEND - CE-ATA command completion signal received for CMD61 + * + * @return none + */ +void SDIO_ClearFlag(uint32_t SDIO_FLAG) +{ + SDIO->ICR = SDIO_FLAG; +} + +/********************************************************************* + * @fn SDIO_GetITStatus + * + * @brief Checks whether the specified SDIO interrupt has occurred or not. + * + * @param SDIO_IT: specifies the SDIO interrupt source to check. + * SDIO_IT_CCRCFAIL - Command response received (CRC check failed) interrupt + * SDIO_IT_DCRCFAIL - Data block sent/received (CRC check failed) interrupt + * SDIO_IT_CTIMEOUT - Command response timeout interrupt + * SDIO_IT_DTIMEOUT - Data timeout interrupt + * SDIO_IT_TXUNDERR - Transmit FIFO underrun error interrupt + * SDIO_IT_RXOVERR - Received FIFO overrun error interrupt + * SDIO_IT_CMDREND - Command response received (CRC check passed) interrupt + * SDIO_IT_CMDSENT - Command sent (no response required) interrupt + * SDIO_IT_DATAEND - Data end (data counter, SDIDCOUNT, is zero) interrupt + * SDIO_IT_STBITERR - Start bit not detected on all data signals in wide + * bus mode interrupt + * SDIO_IT_DBCKEND - Data block sent/received (CRC check passed) interrupt + * SDIO_IT_CMDACT - Command transfer in progress interrupt + * SDIO_IT_TXACT - Data transmit in progress interrupt + * SDIO_IT_RXACT - Data receive in progress interrupt + * SDIO_IT_TXFIFOHE - Transmit FIFO Half Empty interrupt + * SDIO_IT_RXFIFOHF - Receive FIFO Half Full interrupt + * SDIO_IT_TXFIFOF - Transmit FIFO full interrupt + * SDIO_IT_RXFIFOF - Receive FIFO full interrupt + * SDIO_IT_TXFIFOE - Transmit FIFO empty interrupt + * SDIO_IT_RXFIFOE - Receive FIFO empty interrupt + * SDIO_IT_TXDAVL - Data available in transmit FIFO interrupt + * SDIO_IT_RXDAVL - Data available in receive FIFO interrupt + * SDIO_IT_SDIOIT - SD I/O interrupt received interrupt + * SDIO_IT_CEATAEND - CE-ATA command completion signal received for CMD61 interrupt + * + * @return ITStatus£ºSET or RESET + */ +ITStatus SDIO_GetITStatus(uint32_t SDIO_IT) +{ + ITStatus bitstatus = RESET; + + if((SDIO->STA & SDIO_IT) != (uint32_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn SDIO_ClearITPendingBit + * + * @brief Clears the SDIO's interrupt pending bits. + * + * @param SDIO_IT - specifies the interrupt pending bit to clear. + * SDIO_IT_CCRCFAIL - Command response received (CRC check failed) interrupt + * SDIO_IT_DCRCFAIL - Data block sent/received (CRC check failed) interrupt + * SDIO_IT_CTIMEOUT - Command response timeout interrupt + * SDIO_IT_DTIMEOUT - Data timeout interrupt + * SDIO_IT_TXUNDERR - Transmit FIFO underrun error interrupt + * SDIO_IT_RXOVERR - Received FIFO overrun error interrupt + * SDIO_IT_CMDREND - Command response received (CRC check passed) interrupt + * SDIO_IT_CMDSENT - Command sent (no response required) interrupt + * SDIO_IT_DATAEND - Data end (data counter, SDIDCOUNT, is zero) interrupt + * SDIO_IT_STBITERR - Start bit not detected on all data signals in wide + * bus mode interrupt + * SDIO_IT_SDIOIT - SD I/O interrupt received interrupt + * SDIO_IT_CEATAEND - CE-ATA command completion signal received for CMD61 + * + * @return RTC counter value + */ +void SDIO_ClearITPendingBit(uint32_t SDIO_IT) +{ + SDIO->ICR = SDIO_IT; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_spi.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_spi.c new file mode 100755 index 000000000..75ae004c5 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_spi.c @@ -0,0 +1,646 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_spi.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the SPI firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*********************************************************************************/ +#include "ch32v30x_spi.h" +#include "ch32v30x_rcc.h" + +/* SPI SPE mask */ +#define CTLR1_SPE_Set ((uint16_t)0x0040) +#define CTLR1_SPE_Reset ((uint16_t)0xFFBF) + +/* I2S I2SE mask */ +#define I2SCFGR_I2SE_Set ((uint16_t)0x0400) +#define I2SCFGR_I2SE_Reset ((uint16_t)0xFBFF) + +/* SPI CRCNext mask */ +#define CTLR1_CRCNext_Set ((uint16_t)0x1000) + +/* SPI CRCEN mask */ +#define CTLR1_CRCEN_Set ((uint16_t)0x2000) +#define CTLR1_CRCEN_Reset ((uint16_t)0xDFFF) + +/* SPI SSOE mask */ +#define CTLR2_SSOE_Set ((uint16_t)0x0004) +#define CTLR2_SSOE_Reset ((uint16_t)0xFFFB) + +/* SPI registers Masks */ +#define CTLR1_CLEAR_Mask ((uint16_t)0x3040) +#define I2SCFGR_CLEAR_Mask ((uint16_t)0xF040) + +/* SPI or I2S mode selection masks */ +#define SPI_Mode_Select ((uint16_t)0xF7FF) +#define I2S_Mode_Select ((uint16_t)0x0800) + +/* I2S clock source selection masks */ +#define I2S2_CLOCK_SRC ((uint32_t)(0x00020000)) +#define I2S3_CLOCK_SRC ((uint32_t)(0x00040000)) +#define I2S_MUL_MASK ((uint32_t)(0x0000F000)) +#define I2S_DIV_MASK ((uint32_t)(0x000000F0)) + +/********************************************************************* + * @fn SPI_I2S_DeInit + * + * @brief Deinitializes the SPIx peripheral registers to their default + * reset values (Affects also the I2Ss). + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * + * @return none + */ +void SPI_I2S_DeInit(SPI_TypeDef *SPIx) +{ + if(SPIx == SPI1) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE); + } + else if(SPIx == SPI2) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE); + } + else + { + if(SPIx == SPI3) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, DISABLE); + } + } +} + +/********************************************************************* + * @fn SPI_Init + * + * @brief Initializes the SPIx peripheral according to the specified + * parameters in the SPI_InitStruct. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * SPI_InitStruct - pointer to a SPI_InitTypeDef structure that + * contains the configuration information for the specified SPI peripheral. + * + * @return none + */ +void SPI_Init(SPI_TypeDef *SPIx, SPI_InitTypeDef *SPI_InitStruct) +{ + uint16_t tmpreg = 0; + + tmpreg = SPIx->CTLR1; + tmpreg &= CTLR1_CLEAR_Mask; + tmpreg |= (uint16_t)((uint32_t)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode | + SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL | + SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS | + SPI_InitStruct->SPI_BaudRatePrescaler | SPI_InitStruct->SPI_FirstBit); + + SPIx->CTLR1 = tmpreg; + SPIx->I2SCFGR &= SPI_Mode_Select; + SPIx->CRCR = SPI_InitStruct->SPI_CRCPolynomial; +} + +/********************************************************************* + * @fn I2S_Init + * + * @brief Initializes the SPIx peripheral according to the specified + * parameters in the I2S_InitStruct. + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * (configured in I2S mode). + * I2S_InitStruct - pointer to an I2S_InitTypeDef structure that + * contains the configuration information for the specified SPI peripheral + * configured in I2S mode. + * @return none + */ +void I2S_Init(SPI_TypeDef *SPIx, I2S_InitTypeDef *I2S_InitStruct) +{ + uint16_t tmpreg = 0, i2sdiv = 2, i2sodd = 0, packetlength = 1; + uint32_t tmp = 0; + RCC_ClocksTypeDef RCC_Clocks; + uint32_t sourceclock = 0; + + SPIx->I2SCFGR &= I2SCFGR_CLEAR_Mask; + SPIx->I2SPR = 0x0002; + tmpreg = SPIx->I2SCFGR; + + if(I2S_InitStruct->I2S_AudioFreq == I2S_AudioFreq_Default) + { + i2sodd = (uint16_t)0; + i2sdiv = (uint16_t)2; + } + else + { + if(I2S_InitStruct->I2S_DataFormat == I2S_DataFormat_16b) + { + packetlength = 1; + } + else + { + packetlength = 2; + } + + if(((uint32_t)SPIx) == SPI2_BASE) + { + tmp = I2S2_CLOCK_SRC; + } + else + { + tmp = I2S3_CLOCK_SRC; + } + + RCC_GetClocksFreq(&RCC_Clocks); + + sourceclock = RCC_Clocks.SYSCLK_Frequency; + + if(I2S_InitStruct->I2S_MCLKOutput == I2S_MCLKOutput_Enable) + { + tmp = (uint16_t)(((((sourceclock / 256) * 10) / I2S_InitStruct->I2S_AudioFreq)) + 5); + } + else + { + tmp = (uint16_t)(((((sourceclock / (32 * packetlength)) * 10) / I2S_InitStruct->I2S_AudioFreq)) + 5); + } + + tmp = tmp / 10; + i2sodd = (uint16_t)(tmp & (uint16_t)0x0001); + i2sdiv = (uint16_t)((tmp - i2sodd) / 2); + i2sodd = (uint16_t)(i2sodd << 8); + } + + if((i2sdiv < 2) || (i2sdiv > 0xFF)) + { + i2sdiv = 2; + i2sodd = 0; + } + + SPIx->I2SPR = (uint16_t)(i2sdiv | (uint16_t)(i2sodd | (uint16_t)I2S_InitStruct->I2S_MCLKOutput)); + tmpreg |= (uint16_t)(I2S_Mode_Select | (uint16_t)(I2S_InitStruct->I2S_Mode | + (uint16_t)(I2S_InitStruct->I2S_Standard | (uint16_t)(I2S_InitStruct->I2S_DataFormat | + (uint16_t)I2S_InitStruct->I2S_CPOL)))); + SPIx->I2SCFGR = tmpreg; +} + +/********************************************************************* + * @fn SPI_StructInit + * + * @brief Fills each SPI_InitStruct member with its default value. + * + * @param SPI_InitStruct - pointer to a SPI_InitTypeDef structure which + * will be initialized. + * + * @return none + */ +void SPI_StructInit(SPI_InitTypeDef *SPI_InitStruct) +{ + SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex; + SPI_InitStruct->SPI_Mode = SPI_Mode_Slave; + SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b; + SPI_InitStruct->SPI_CPOL = SPI_CPOL_Low; + SPI_InitStruct->SPI_CPHA = SPI_CPHA_1Edge; + SPI_InitStruct->SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; + SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB; + SPI_InitStruct->SPI_CRCPolynomial = 7; +} + +/********************************************************************* + * @fn I2S_StructInit + * + * @brief Fills each I2S_InitStruct member with its default value. + * + * @param I2S_InitStruct - pointer to a I2S_InitTypeDef structure which + * will be initialized. + * + * @return none + */ +void I2S_StructInit(I2S_InitTypeDef *I2S_InitStruct) +{ + I2S_InitStruct->I2S_Mode = I2S_Mode_SlaveTx; + I2S_InitStruct->I2S_Standard = I2S_Standard_Phillips; + I2S_InitStruct->I2S_DataFormat = I2S_DataFormat_16b; + I2S_InitStruct->I2S_MCLKOutput = I2S_MCLKOutput_Disable; + I2S_InitStruct->I2S_AudioFreq = I2S_AudioFreq_Default; + I2S_InitStruct->I2S_CPOL = I2S_CPOL_Low; +} + +/********************************************************************* + * @fn SPI_Cmd + * + * @brief Enables or disables the specified SPI peripheral. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void SPI_Cmd(SPI_TypeDef *SPIx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + SPIx->CTLR1 |= CTLR1_SPE_Set; + } + else + { + SPIx->CTLR1 &= CTLR1_SPE_Reset; + } +} + +/********************************************************************* + * @fn I2S_Cmd + * + * @brief Enables or disables the specified SPI peripheral (in I2S mode). + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void I2S_Cmd(SPI_TypeDef *SPIx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + SPIx->I2SCFGR |= I2SCFGR_I2SE_Set; + } + else + { + SPIx->I2SCFGR &= I2SCFGR_I2SE_Reset; + } +} + +/********************************************************************* + * @fn SPI_I2S_ITConfig + * + * @brief Enables or disables the specified SPI/I2S interrupts. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * SPI_I2S_IT - specifies the SPI/I2S interrupt source to be + * enabled or disabled. + * SPI_I2S_IT_TXE - Tx buffer empty interrupt mask. + * SPI_I2S_IT_RXNE - Rx buffer not empty interrupt mask. + * SPI_I2S_IT_ERR - Error interrupt mask. + * NewState: ENABLE or DISABLE. + * @return none + */ +void SPI_I2S_ITConfig(SPI_TypeDef *SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState) +{ + uint16_t itpos = 0, itmask = 0; + + itpos = SPI_I2S_IT >> 4; + itmask = (uint16_t)1 << (uint16_t)itpos; + + if(NewState != DISABLE) + { + SPIx->CTLR2 |= itmask; + } + else + { + SPIx->CTLR2 &= (uint16_t)~itmask; + } +} + +/********************************************************************* + * @fn SPI_I2S_DMACmd + * + * @brief Enables or disables the SPIx/I2Sx DMA interface. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * SPI_I2S_DMAReq - specifies the SPI/I2S DMA transfer request to + * be enabled or disabled. + * SPI_I2S_DMAReq_Tx - Tx buffer DMA transfer request. + * SPI_I2S_DMAReq_Rx - Rx buffer DMA transfer request. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void SPI_I2S_DMACmd(SPI_TypeDef *SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + SPIx->CTLR2 |= SPI_I2S_DMAReq; + } + else + { + SPIx->CTLR2 &= (uint16_t)~SPI_I2S_DMAReq; + } +} + +/********************************************************************* + * @fn SPI_I2S_SendData + * + * @brief Transmits a Data through the SPIx/I2Sx peripheral. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * Data - Data to be transmitted. + * + * @return none + */ +void SPI_I2S_SendData(SPI_TypeDef *SPIx, uint16_t Data) +{ + SPIx->DATAR = Data; +} + +/********************************************************************* + * @fn SPI_I2S_ReceiveData + * + * @brief Returns the most recent received data by the SPIx/I2Sx peripheral. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * Data - Data to be transmitted. + * + * @return SPIx->DATAR - The value of the received data. + */ +uint16_t SPI_I2S_ReceiveData(SPI_TypeDef *SPIx) +{ + return SPIx->DATAR; +} + +/********************************************************************* + * @fn SPI_NSSInternalSoftwareConfig + * + * @brief Configures internally by software the NSS pin for the selected SPI. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * SPI_NSSInternalSoft - + * SPI_NSSInternalSoft_Set - Set NSS pin internally. + * SPI_NSSInternalSoft_Reset - Reset NSS pin internally. + * + * @return none + */ +void SPI_NSSInternalSoftwareConfig(SPI_TypeDef *SPIx, uint16_t SPI_NSSInternalSoft) +{ + if(SPI_NSSInternalSoft != SPI_NSSInternalSoft_Reset) + { + SPIx->CTLR1 |= SPI_NSSInternalSoft_Set; + } + else + { + SPIx->CTLR1 &= SPI_NSSInternalSoft_Reset; + } +} + +/********************************************************************* + * @fn SPI_SSOutputCmd + * + * @brief Enables or disables the SS output for the selected SPI. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * NewState - new state of the SPIx SS output. + * + * @return none + */ +void SPI_SSOutputCmd(SPI_TypeDef *SPIx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + SPIx->CTLR2 |= CTLR2_SSOE_Set; + } + else + { + SPIx->CTLR2 &= CTLR2_SSOE_Reset; + } +} + +/********************************************************************* + * @fn SPI_DataSizeConfig + * + * @brief Configures the data size for the selected SPI. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * SPI_DataSize - specifies the SPI data size. + * SPI_DataSize_16b - Set data frame format to 16bit. + * SPI_DataSize_8b - Set data frame format to 8bit. + * + * @return none + */ +void SPI_DataSizeConfig(SPI_TypeDef *SPIx, uint16_t SPI_DataSize) +{ + SPIx->CTLR1 &= (uint16_t)~SPI_DataSize_16b; + SPIx->CTLR1 |= SPI_DataSize; +} + +/********************************************************************* + * @fn SPI_TransmitCRC + * + * @brief Transmit the SPIx CRC value. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * + * @return none + */ +void SPI_TransmitCRC(SPI_TypeDef *SPIx) +{ + SPIx->CTLR1 |= CTLR1_CRCNext_Set; +} + +/********************************************************************* + * @fn SPI_CalculateCRC + * + * @brief Enables or disables the CRC value calculation of the transferred bytes. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * NewState - new state of the SPIx CRC value calculation. + * + * @return none + */ +void SPI_CalculateCRC(SPI_TypeDef *SPIx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + SPIx->CTLR1 |= CTLR1_CRCEN_Set; + } + else + { + SPIx->CTLR1 &= CTLR1_CRCEN_Reset; + } +} + +/********************************************************************* + * @fn SPI_GetCRC + * + * @brief Returns the transmit or the receive CRC register value for the specified SPI. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * SPI_CRC - specifies the CRC register to be read. + * SPI_CRC_Tx - Selects Tx CRC register. + * SPI_CRC_Rx - Selects Rx CRC register. + * + * @return crcreg: The selected CRC register value. + */ +uint16_t SPI_GetCRC(SPI_TypeDef *SPIx, uint8_t SPI_CRC) +{ + uint16_t crcreg = 0; + + if(SPI_CRC != SPI_CRC_Rx) + { + crcreg = SPIx->TCRCR; + } + else + { + crcreg = SPIx->RCRCR; + } + + return crcreg; +} + +/********************************************************************* + * @fn SPI_GetCRCPolynomial + * + * @brief Returns the CRC Polynomial register value for the specified SPI. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * + * @return SPIx->CRCR - The CRC Polynomial register value. + */ +uint16_t SPI_GetCRCPolynomial(SPI_TypeDef *SPIx) +{ + return SPIx->CRCR; +} + +/********************************************************************* + * @fn SPI_BiDirectionalLineConfig + * + * @brief Selects the data transfer direction in bi-directional mode + * for the specified SPI. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * SPI_Direction - specifies the data transfer direction in + * bi-directional mode. + * SPI_Direction_Tx - Selects Tx transmission direction. + * SPI_Direction_Rx - Selects Rx receive direction. + * + * @return none + */ +void SPI_BiDirectionalLineConfig(SPI_TypeDef *SPIx, uint16_t SPI_Direction) +{ + if(SPI_Direction == SPI_Direction_Tx) + { + SPIx->CTLR1 |= SPI_Direction_Tx; + } + else + { + SPIx->CTLR1 &= SPI_Direction_Rx; + } +} + +/********************************************************************* + * @fn SPI_I2S_GetFlagStatus + * + * @brief Checks whether the specified SPI/I2S flag is set or not. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * SPI_I2S_FLAG - specifies the SPI/I2S flag to check. + * SPI_I2S_FLAG_TXE - Transmit buffer empty flag. + * SPI_I2S_FLAG_RXNE - Receive buffer not empty flag. + * SPI_I2S_FLAG_BSY - Busy flag. + * SPI_I2S_FLAG_OVR - Overrun flag. + * SPI_FLAG_MODF - Mode Fault flag. + * SPI_FLAG_CRCERR - CRC Error flag. + * I2S_FLAG_UDR - Underrun Error flag. + * I2S_FLAG_CHSIDE - Channel Side flag. + * + * @return none + */ +FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef *SPIx, uint16_t SPI_I2S_FLAG) +{ + FlagStatus bitstatus = RESET; + + if((SPIx->STATR & SPI_I2S_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn SPI_I2S_ClearFlag + * + * @brief Clears the SPIx CRC Error (CRCERR) flag. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * SPI_I2S_FLAG - specifies the SPI flag to clear. + * SPI_FLAG_CRCERR - CRC Error flag. + * + * @return none + */ +void SPI_I2S_ClearFlag(SPI_TypeDef *SPIx, uint16_t SPI_I2S_FLAG) +{ + SPIx->STATR = (uint16_t)~SPI_I2S_FLAG; +} + +/********************************************************************* + * @fn SPI_I2S_GetITStatus + * + * @brief Checks whether the specified SPI/I2S interrupt has occurred or not. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * - 2 or 3 in I2S mode. + * SPI_I2S_IT - specifies the SPI/I2S interrupt source to check.. + * SPI_I2S_IT_TXE - Transmit buffer empty interrupt. + * SPI_I2S_IT_RXNE - Receive buffer not empty interrupt. + * SPI_I2S_IT_OVR - Overrun interrupt. + * SPI_IT_MODF - Mode Fault interrupt. + * SPI_IT_CRCERR - CRC Error interrupt. + * I2S_IT_UDR - Underrun Error interrupt. + * + * @return FlagStatus: SET or RESET. + */ +ITStatus SPI_I2S_GetITStatus(SPI_TypeDef *SPIx, uint8_t SPI_I2S_IT) +{ + ITStatus bitstatus = RESET; + uint16_t itpos = 0, itmask = 0, enablestatus = 0; + + itpos = 0x01 << (SPI_I2S_IT & 0x0F); + itmask = SPI_I2S_IT >> 4; + itmask = 0x01 << itmask; + enablestatus = (SPIx->CTLR2 & itmask); + + if(((SPIx->STATR & itpos) != (uint16_t)RESET) && enablestatus) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn SPI_I2S_ClearITPendingBit + * + * @brief Clears the SPIx CRC Error (CRCERR) interrupt pending bit. + * + * @param SPIx - where x can be + * - 1, 2 or 3 in SPI mode. + * SPI_I2S_IT - specifies the SPI interrupt pending bit to clear. + * SPI_IT_CRCERR - CRC Error interrupt. + * + * @return none + */ +void SPI_I2S_ClearITPendingBit(SPI_TypeDef *SPIx, uint8_t SPI_I2S_IT) +{ + uint16_t itpos = 0; + + itpos = 0x01 << (SPI_I2S_IT & 0x0F); + SPIx->STATR = (uint16_t)~itpos; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_tim.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_tim.c new file mode 100755 index 000000000..90464d80f --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_tim.c @@ -0,0 +1,2366 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_tim.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the TIM firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_tim.h" +#include "ch32v30x_rcc.h" + +/* TIM registers bit mask */ +#define SMCFGR_ETR_Mask ((uint16_t)0x00FF) +#define CHCTLR_Offset ((uint16_t)0x0018) +#define CCER_CCE_Set ((uint16_t)0x0001) +#define CCER_CCNE_Set ((uint16_t)0x0004) + +static void TI1_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +static void TI2_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +static void TI3_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); +static void TI4_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter); + +/********************************************************************* + * @fn TIM_DeInit + * + * @brief Deinitializes the TIMx peripheral registers to their default + * reset values. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * + * @return none + */ +void TIM_DeInit(TIM_TypeDef *TIMx) +{ + if(TIMx == TIM1) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE); + } + else if(TIMx == TIM8) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM8, DISABLE); + } + else if(TIMx == TIM9) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM9, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM9, DISABLE); + } + else if(TIMx == TIM10) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, DISABLE); + } + else if(TIMx == TIM2) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM2, DISABLE); + } + else if(TIMx == TIM3) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, DISABLE); + } + else if(TIMx == TIM4) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4, DISABLE); + } + else if(TIMx == TIM5) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, DISABLE); + } + else if(TIMx == TIM6) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM6, DISABLE); + } + else if(TIMx == TIM7) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM7, DISABLE); + } +} + +/********************************************************************* + * @fn TIM_TimeBaseInit + * + * @brief Initializes the TIMx Time Base Unit peripheral according to + * the specified parameters in the TIM_TimeBaseInitStruct. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_TimeBaseInitStruct - pointer to a TIM_TimeBaseInitTypeDef + * structure. + * + * @return none + */ +void TIM_TimeBaseInit(TIM_TypeDef *TIMx, TIM_TimeBaseInitTypeDef *TIM_TimeBaseInitStruct) +{ + uint16_t tmpcr1 = 0; + + tmpcr1 = TIMx->CTLR1; + + if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3) || (TIMx == TIM4) || + (TIMx == TIM5) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_DIR | TIM_CMS))); + tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode; + } + + if((TIMx != TIM6) && (TIMx != TIM7)) + { + tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CTLR1_CKD)); + tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision; + } + + TIMx->CTLR1 = tmpcr1; + TIMx->ATRLR = TIM_TimeBaseInitStruct->TIM_Period; + TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler; + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + TIMx->RPTCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter; + } + + TIMx->SWEVGR = TIM_PSCReloadMode_Immediate; +} + +/********************************************************************* + * @fn TIM_OC1Init + * + * @brief Initializes the TIMx Channel1 according to the specified + * parameters in the TIM_OCInitStruct. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCInitStruct - pointer to a TIM_OCInitTypeDef structure. + * + * @return none + */ +void TIM_OC1Init(TIM_TypeDef *TIMx, TIM_OCInitTypeDef *TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + TIMx->CCER &= (uint16_t)(~(uint16_t)TIM_CC1E); + tmpccer = TIMx->CCER; + tmpcr2 = TIMx->CTLR2; + tmpccmrx = TIMx->CHCTLR1; + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_OC1M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CC1S)); + tmpccmrx |= TIM_OCInitStruct->TIM_OCMode; + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC1P)); + tmpccer |= TIM_OCInitStruct->TIM_OCPolarity; + tmpccer |= TIM_OCInitStruct->TIM_OutputState; + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC1NP)); + tmpccer |= TIM_OCInitStruct->TIM_OCNPolarity; + + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC1NE)); + tmpccer |= TIM_OCInitStruct->TIM_OutputNState; + + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS1)); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS1N)); + + tmpcr2 |= TIM_OCInitStruct->TIM_OCIdleState; + tmpcr2 |= TIM_OCInitStruct->TIM_OCNIdleState; + } + + TIMx->CTLR2 = tmpcr2; + TIMx->CHCTLR1 = tmpccmrx; + TIMx->CH1CVR = TIM_OCInitStruct->TIM_Pulse; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC2Init + * + * @brief Initializes the TIMx Channel2 according to the specified + * parameters in the TIM_OCInitStruct. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCInitStruct - pointer to a TIM_OCInitTypeDef structure. + * + * @return none + */ +void TIM_OC2Init(TIM_TypeDef *TIMx, TIM_OCInitTypeDef *TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CC2E)); + tmpccer = TIMx->CCER; + tmpcr2 = TIMx->CTLR2; + tmpccmrx = TIMx->CHCTLR1; + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_OC2M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CC2S)); + tmpccmrx |= (uint16_t)(TIM_OCInitStruct->TIM_OCMode << 8); + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC2P)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 4); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 4); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC2NP)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCNPolarity << 4); + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC2NE)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputNState << 4); + + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS2)); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS2N)); + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 2); + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCNIdleState << 2); + } + + TIMx->CTLR2 = tmpcr2; + TIMx->CHCTLR1 = tmpccmrx; + TIMx->CH2CVR = TIM_OCInitStruct->TIM_Pulse; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC3Init + * + * @brief Initializes the TIMx Channel3 according to the specified + * parameters in the TIM_OCInitStruct. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCInitStruct - pointer to a TIM_OCInitTypeDef structure. + * + * @return none + */ +void TIM_OC3Init(TIM_TypeDef *TIMx, TIM_OCInitTypeDef *TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CC3E)); + tmpccer = TIMx->CCER; + tmpcr2 = TIMx->CTLR2; + tmpccmrx = TIMx->CHCTLR2; + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_OC3M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CC3S)); + tmpccmrx |= TIM_OCInitStruct->TIM_OCMode; + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC3P)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 8); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 8); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC3NP)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCNPolarity << 8); + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC3NE)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputNState << 8); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS3)); + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS3N)); + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 4); + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCNIdleState << 4); + } + + TIMx->CTLR2 = tmpcr2; + TIMx->CHCTLR2 = tmpccmrx; + TIMx->CH3CVR = TIM_OCInitStruct->TIM_Pulse; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC4Init + * + * @brief Initializes the TIMx Channel4 according to the specified + * parameters in the TIM_OCInitStruct. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCInitStruct - pointer to a TIM_OCInitTypeDef structure. + * + * @return none + */ +void TIM_OC4Init(TIM_TypeDef *TIMx, TIM_OCInitTypeDef *TIM_OCInitStruct) +{ + uint16_t tmpccmrx = 0, tmpccer = 0, tmpcr2 = 0; + + TIMx->CCER &= (uint16_t)(~((uint16_t)TIM_CC4E)); + tmpccer = TIMx->CCER; + tmpcr2 = TIMx->CTLR2; + tmpccmrx = TIMx->CHCTLR2; + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_OC4M)); + tmpccmrx &= (uint16_t)(~((uint16_t)TIM_CC4S)); + tmpccmrx |= (uint16_t)(TIM_OCInitStruct->TIM_OCMode << 8); + tmpccer &= (uint16_t)(~((uint16_t)TIM_CC4P)); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OCPolarity << 12); + tmpccer |= (uint16_t)(TIM_OCInitStruct->TIM_OutputState << 12); + + if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpcr2 &= (uint16_t)(~((uint16_t)TIM_OIS4)); + tmpcr2 |= (uint16_t)(TIM_OCInitStruct->TIM_OCIdleState << 6); + } + + TIMx->CTLR2 = tmpcr2; + TIMx->CHCTLR2 = tmpccmrx; + TIMx->CH4CVR = TIM_OCInitStruct->TIM_Pulse; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_ICInit + * + * @brief IInitializes the TIM peripheral according to the specified + * parameters in the TIM_ICInitStruct. + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ICInitStruct - pointer to a TIM_ICInitTypeDef structure. + * + * @return none + */ +void TIM_ICInit(TIM_TypeDef *TIMx, TIM_ICInitTypeDef *TIM_ICInitStruct) +{ + if(TIM_ICInitStruct->TIM_Channel == TIM_Channel_1) + { + TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else if(TIM_ICInitStruct->TIM_Channel == TIM_Channel_2) + { + TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else if(TIM_ICInitStruct->TIM_Channel == TIM_Channel_3) + { + TI3_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC3Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else + { + TI4_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, + TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC4Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } +} + +/********************************************************************* + * @fn TIM_PWMIConfig + * + * @brief Configures the TIM peripheral according to the specified + * parameters in the TIM_ICInitStruct to measure an external + * PWM signal. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ICInitStruct - pointer to a TIM_ICInitTypeDef structure. + * + * @return none + */ +void TIM_PWMIConfig(TIM_TypeDef *TIMx, TIM_ICInitTypeDef *TIM_ICInitStruct) +{ + uint16_t icoppositepolarity = TIM_ICPolarity_Rising; + uint16_t icoppositeselection = TIM_ICSelection_DirectTI; + + if(TIM_ICInitStruct->TIM_ICPolarity == TIM_ICPolarity_Rising) + { + icoppositepolarity = TIM_ICPolarity_Falling; + } + else + { + icoppositepolarity = TIM_ICPolarity_Rising; + } + + if(TIM_ICInitStruct->TIM_ICSelection == TIM_ICSelection_DirectTI) + { + icoppositeselection = TIM_ICSelection_IndirectTI; + } + else + { + icoppositeselection = TIM_ICSelection_DirectTI; + } + + if(TIM_ICInitStruct->TIM_Channel == TIM_Channel_1) + { + TI1_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + TI2_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } + else + { + TI2_Config(TIMx, TIM_ICInitStruct->TIM_ICPolarity, TIM_ICInitStruct->TIM_ICSelection, + TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + TI1_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct->TIM_ICFilter); + TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct->TIM_ICPrescaler); + } +} + +/********************************************************************* + * @fn TIM_BDTRConfig + * + * @brief Configures the: Break feature, dead time, Lock level, the OSSI, + * the OSSR State and the AOE(automatic output enable). + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_BDTRInitStruct - pointer to a TIM_BDTRInitTypeDef structure. + * + * @return none + */ +void TIM_BDTRConfig(TIM_TypeDef *TIMx, TIM_BDTRInitTypeDef *TIM_BDTRInitStruct) +{ + TIMx->BDTR = (uint32_t)TIM_BDTRInitStruct->TIM_OSSRState | TIM_BDTRInitStruct->TIM_OSSIState | + TIM_BDTRInitStruct->TIM_LOCKLevel | TIM_BDTRInitStruct->TIM_DeadTime | + TIM_BDTRInitStruct->TIM_Break | TIM_BDTRInitStruct->TIM_BreakPolarity | + TIM_BDTRInitStruct->TIM_AutomaticOutput; +} + +/********************************************************************* + * @fn TIM_TimeBaseStructInit + * + * @brief Fills each TIM_TimeBaseInitStruct member with its default value. + * + * @param TIM_TimeBaseInitStruct - pointer to a TIM_TimeBaseInitTypeDef structure. + * + * @return none + */ +void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef *TIM_TimeBaseInitStruct) +{ + TIM_TimeBaseInitStruct->TIM_Period = 0xFFFF; + TIM_TimeBaseInitStruct->TIM_Prescaler = 0x0000; + TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1; + TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up; + TIM_TimeBaseInitStruct->TIM_RepetitionCounter = 0x0000; +} + +/********************************************************************* + * @fn TIM_OCStructInit + * + * @brief Fills each TIM_OCInitStruct member with its default value. + * + * @param TIM_OCInitStruct - pointer to a TIM_OCInitTypeDef structure. + * + * @return none + */ +void TIM_OCStructInit(TIM_OCInitTypeDef *TIM_OCInitStruct) +{ + TIM_OCInitStruct->TIM_OCMode = TIM_OCMode_Timing; + TIM_OCInitStruct->TIM_OutputState = TIM_OutputState_Disable; + TIM_OCInitStruct->TIM_OutputNState = TIM_OutputNState_Disable; + TIM_OCInitStruct->TIM_Pulse = 0x0000; + TIM_OCInitStruct->TIM_OCPolarity = TIM_OCPolarity_High; + TIM_OCInitStruct->TIM_OCNPolarity = TIM_OCPolarity_High; + TIM_OCInitStruct->TIM_OCIdleState = TIM_OCIdleState_Reset; + TIM_OCInitStruct->TIM_OCNIdleState = TIM_OCNIdleState_Reset; +} + +/********************************************************************* + * @fn TIM_ICStructInit + * + * @brief Fills each TIM_ICInitStruct member with its default value. + * + * @param TIM_ICInitStruct - pointer to a TIM_ICInitTypeDef structure. + * + * @return none + */ +void TIM_ICStructInit(TIM_ICInitTypeDef *TIM_ICInitStruct) +{ + TIM_ICInitStruct->TIM_Channel = TIM_Channel_1; + TIM_ICInitStruct->TIM_ICPolarity = TIM_ICPolarity_Rising; + TIM_ICInitStruct->TIM_ICSelection = TIM_ICSelection_DirectTI; + TIM_ICInitStruct->TIM_ICPrescaler = TIM_ICPSC_DIV1; + TIM_ICInitStruct->TIM_ICFilter = 0x00; +} + +/********************************************************************* + * @fn TIM_BDTRStructInit + * + * @brief Fills each TIM_BDTRInitStruct member with its default value. + * + * @param TIM_BDTRInitStruct - pointer to a TIM_BDTRInitTypeDef structure. + * + * @return none + */ +void TIM_BDTRStructInit(TIM_BDTRInitTypeDef *TIM_BDTRInitStruct) +{ + TIM_BDTRInitStruct->TIM_OSSRState = TIM_OSSRState_Disable; + TIM_BDTRInitStruct->TIM_OSSIState = TIM_OSSIState_Disable; + TIM_BDTRInitStruct->TIM_LOCKLevel = TIM_LOCKLevel_OFF; + TIM_BDTRInitStruct->TIM_DeadTime = 0x00; + TIM_BDTRInitStruct->TIM_Break = TIM_Break_Disable; + TIM_BDTRInitStruct->TIM_BreakPolarity = TIM_BreakPolarity_Low; + TIM_BDTRInitStruct->TIM_AutomaticOutput = TIM_AutomaticOutput_Disable; +} + +/********************************************************************* + * @fn TIM_Cmd + * + * @brief Enables or disables the specified TIM peripheral. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_Cmd(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR1 |= TIM_CEN; + } + else + { + TIMx->CTLR1 &= (uint16_t)(~((uint16_t)TIM_CEN)); + } +} + +/********************************************************************* + * @fn TIM_CtrlPWMOutputs + * + * @brief Enables or disables the TIM peripheral Main Outputs. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_CtrlPWMOutputs(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->BDTR |= TIM_MOE; + } + else + { + TIMx->BDTR &= (uint16_t)(~((uint16_t)TIM_MOE)); + } +} + +/********************************************************************* + * @fn TIM_ITConfig + * + * @brief Enables or disables the specified TIM interrupts. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_IT - specifies the TIM interrupts sources to be enabled or disabled. + * TIM_IT_Update - TIM update Interrupt source. + * TIM_IT_CC1 - TIM Capture Compare 1 Interrupt source. + * TIM_IT_CC2 - TIM Capture Compare 2 Interrupt source + * TIM_IT_CC3 - TIM Capture Compare 3 Interrupt source. + * TIM_IT_CC4 - TIM Capture Compare 4 Interrupt source. + * TIM_IT_COM - TIM Commutation Interrupt source. + * TIM_IT_Trigger - TIM Trigger Interrupt source. + * TIM_IT_Break - TIM Break Interrupt source. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_ITConfig(TIM_TypeDef *TIMx, uint16_t TIM_IT, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->DMAINTENR |= TIM_IT; + } + else + { + TIMx->DMAINTENR &= (uint16_t)~TIM_IT; + } +} + +void TIM_GenerateEvent(TIM_TypeDef *TIMx, uint16_t TIM_EventSource) +{ + TIMx->SWEVGR = TIM_EventSource; +} + +/********************************************************************* + * @fn TIM_DMAConfig + * + * @brief Configures the TIMx's DMA interface. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_DMABase: DMA Base address. + * TIM_DMABase_CR. + * TIM_DMABase_CR2. + * TIM_DMABase_SMCR. + * TIM_DMABase_DIER. + * TIM1_DMABase_SR. + * TIM_DMABase_EGR. + * TIM_DMABase_CCMR1. + * TIM_DMABase_CCMR2. + * TIM_DMABase_CCER. + * TIM_DMABase_CNT. + * TIM_DMABase_PSC. + * TIM_DMABase_CCR1. + * TIM_DMABase_CCR2. + * TIM_DMABase_CCR3. + * TIM_DMABase_CCR4. + * TIM_DMABase_BDTR. + * TIM_DMABase_DCR. + * TIM_DMABurstLength - DMA Burst length. + * TIM_DMABurstLength_1Transfer. + * TIM_DMABurstLength_18Transfers. + * + * @return none + */ +void TIM_DMAConfig(TIM_TypeDef *TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength) +{ + TIMx->DMACFGR = TIM_DMABase | TIM_DMABurstLength; +} + +/********************************************************************* + * @fn TIM_DMACmd + * + * @brief Enables or disables the TIMx's DMA Requests. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_DMASource - specifies the DMA Request sources. + * TIM_DMA_Update - TIM update Interrupt source. + * TIM_DMA_CC1 - TIM Capture Compare 1 DMA source. + * TIM_DMA_CC2 - TIM Capture Compare 2 DMA source. + * TIM_DMA_CC3 - TIM Capture Compare 3 DMA source. + * TIM_DMA_CC4 - TIM Capture Compare 4 DMA source. + * TIM_DMA_COM - TIM Commutation DMA source. + * TIM_DMA_Trigger - TIM Trigger DMA source. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_DMACmd(TIM_TypeDef *TIMx, uint16_t TIM_DMASource, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->DMAINTENR |= TIM_DMASource; + } + else + { + TIMx->DMAINTENR &= (uint16_t)~TIM_DMASource; + } +} + +/********************************************************************* + * @fn TIM_InternalClockConfig + * + * @brief Configures the TIMx internal Clock. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * + * @return none + */ +void TIM_InternalClockConfig(TIM_TypeDef *TIMx) +{ + TIMx->SMCFGR &= (uint16_t)(~((uint16_t)TIM_SMS)); +} + +/********************************************************************* + * @fn TIM_ITRxExternalClockConfig + * + * @brief Configures the TIMx Internal Trigger as External Clock. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_InputTriggerSource: Trigger source. + * TIM_TS_ITR0 - Internal Trigger 0. + * TIM_TS_ITR1 - Internal Trigger 1. + * TIM_TS_ITR2 - Internal Trigger 2. + * TIM_TS_ITR3 - Internal Trigger 3. + * + * @return none + */ +void TIM_ITRxExternalClockConfig(TIM_TypeDef *TIMx, uint16_t TIM_InputTriggerSource) +{ + TIM_SelectInputTrigger(TIMx, TIM_InputTriggerSource); + TIMx->SMCFGR |= TIM_SlaveMode_External1; +} + +/********************************************************************* + * @fn TIM_TIxExternalClockConfig + * + * @brief Configures the TIMx Trigger as External Clock. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_TIxExternalCLKSource - Trigger source. + * TIM_TIxExternalCLK1Source_TI1ED - TI1 Edge Detector. + * TIM_TIxExternalCLK1Source_TI1 - Filtered Timer Input 1. + * TIM_TIxExternalCLK1Source_TI2 - Filtered Timer Input 2. + * TIM_ICPolarity - specifies the TIx Polarity. + * TIM_ICPolarity_Rising. + * TIM_ICPolarity_Falling. + * TIM_DMA_COM - TIM Commutation DMA source. + * TIM_DMA_Trigger - TIM Trigger DMA source. + * ICFilter - specifies the filter value. + * This parameter must be a value between 0x0 and 0xF. + * + * @return none + */ +void TIM_TIxExternalClockConfig(TIM_TypeDef *TIMx, uint16_t TIM_TIxExternalCLKSource, + uint16_t TIM_ICPolarity, uint16_t ICFilter) +{ + if(TIM_TIxExternalCLKSource == TIM_TIxExternalCLK1Source_TI2) + { + TI2_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter); + } + else + { + TI1_Config(TIMx, TIM_ICPolarity, TIM_ICSelection_DirectTI, ICFilter); + } + + TIM_SelectInputTrigger(TIMx, TIM_TIxExternalCLKSource); + TIMx->SMCFGR |= TIM_SlaveMode_External1; +} + +/********************************************************************* + * @fn TIM_ETRClockMode1Config + * + * @brief Configures the External clock Mode1. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ExtTRGPrescaler - The external Trigger Prescaler. + * TIM_ExtTRGPSC_OFF - ETRP Prescaler OFF. + * TIM_ExtTRGPSC_DIV2 - ETRP frequency divided by 2. + * TIM_ExtTRGPSC_DIV4 - ETRP frequency divided by 4. + * TIM_ExtTRGPSC_DIV8 - ETRP frequency divided by 8. + * TIM_ExtTRGPolarity - The external Trigger Polarity. + * TIM_ExtTRGPolarity_Inverted - active low or falling edge active. + * TIM_ExtTRGPolarity_NonInverted - active high or rising edge active. + * ExtTRGFilter - External Trigger Filter. + * This parameter must be a value between 0x0 and 0xF. + * + * @return none + */ +void TIM_ETRClockMode1Config(TIM_TypeDef *TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter) +{ + uint16_t tmpsmcr = 0; + + TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); + tmpsmcr = TIMx->SMCFGR; + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMS)); + tmpsmcr |= TIM_SlaveMode_External1; + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_TS)); + tmpsmcr |= TIM_TS_ETRF; + TIMx->SMCFGR = tmpsmcr; +} + +/********************************************************************* + * @fn TIM_ETRClockMode2Config + * + * @brief Configures the External clock Mode2. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ExtTRGPrescaler - The external Trigger Prescaler. + * TIM_ExtTRGPSC_OFF - ETRP Prescaler OFF. + * TIM_ExtTRGPSC_DIV2 - ETRP frequency divided by 2. + * TIM_ExtTRGPSC_DIV4 - ETRP frequency divided by 4. + * TIM_ExtTRGPSC_DIV8 - ETRP frequency divided by 8. + * TIM_ExtTRGPolarity - The external Trigger Polarity. + * TIM_ExtTRGPolarity_Inverted - active low or falling edge active. + * TIM_ExtTRGPolarity_NonInverted - active high or rising edge active. + * ExtTRGFilter - External Trigger Filter. + * This parameter must be a value between 0x0 and 0xF. + * + * @return none + */ +void TIM_ETRClockMode2Config(TIM_TypeDef *TIMx, uint16_t TIM_ExtTRGPrescaler, + uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter) +{ + TIM_ETRConfig(TIMx, TIM_ExtTRGPrescaler, TIM_ExtTRGPolarity, ExtTRGFilter); + TIMx->SMCFGR |= TIM_ECE; +} + +/********************************************************************* + * @fn TIM_ETRConfig + * + * @brief Configures the TIMx External Trigger (ETR). + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ExtTRGPrescaler - The external Trigger Prescaler. + * TIM_ExtTRGPSC_OFF - ETRP Prescaler OFF. + * TIM_ExtTRGPSC_DIV2 - ETRP frequency divided by 2. + * TIM_ExtTRGPSC_DIV4 - ETRP frequency divided by 4. + * TIM_ExtTRGPSC_DIV8 - ETRP frequency divided by 8. + * TIM_ExtTRGPolarity - The external Trigger Polarity. + * TIM_ExtTRGPolarity_Inverted - active low or falling edge active. + * TIM_ExtTRGPolarity_NonInverted - active high or rising edge active. + * ExtTRGFilter - External Trigger Filter. + * This parameter must be a value between 0x0 and 0xF. + * + * @return none + */ +void TIM_ETRConfig(TIM_TypeDef *TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, + uint16_t ExtTRGFilter) +{ + uint16_t tmpsmcr = 0; + + tmpsmcr = TIMx->SMCFGR; + tmpsmcr &= SMCFGR_ETR_Mask; + tmpsmcr |= (uint16_t)(TIM_ExtTRGPrescaler | (uint16_t)(TIM_ExtTRGPolarity | (uint16_t)(ExtTRGFilter << (uint16_t)8))); + TIMx->SMCFGR = tmpsmcr; +} + +/********************************************************************* + * @fn TIM_PrescalerConfig + * + * @brief Configures the TIMx Prescaler. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * Prescaler - specifies the Prescaler Register value. + * TIM_PSCReloadMode - specifies the TIM Prescaler Reload mode. + * TIM_PSCReloadMode - specifies the TIM Prescaler Reload mode. + * TIM_PSCReloadMode_Update - The Prescaler is loaded at the update event. + * TIM_PSCReloadMode_Immediate - The Prescaler is loaded immediately. + * + * @return none + */ +void TIM_PrescalerConfig(TIM_TypeDef *TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode) +{ + TIMx->PSC = Prescaler; + TIMx->SWEVGR = TIM_PSCReloadMode; +} + +/********************************************************************* + * @fn TIM_CounterModeConfig + * + * @brief Specifies the TIMx Counter Mode to be used. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_CounterMode - specifies the Counter Mode to be used. + * TIM_CounterMode_Up - TIM Up Counting Mode. + * TIM_CounterMode_Down - TIM Down Counting Mode. + * TIM_CounterMode_CenterAligned1 - TIM Center Aligned Mode1. + * TIM_CounterMode_CenterAligned2 - TIM Center Aligned Mode2. + * TIM_CounterMode_CenterAligned3 - TIM Center Aligned Mode3. + * + * @return none + */ +void TIM_CounterModeConfig(TIM_TypeDef *TIMx, uint16_t TIM_CounterMode) +{ + uint16_t tmpcr1 = 0; + + tmpcr1 = TIMx->CTLR1; + tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_DIR | TIM_CMS))); + tmpcr1 |= TIM_CounterMode; + TIMx->CTLR1 = tmpcr1; +} + +/********************************************************************* + * @fn TIM_SelectInputTrigger + * + * @brief Selects the Input Trigger source. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_InputTriggerSource - The Input Trigger source. + * TIM_TS_ITR0 - Internal Trigger 0. + * TIM_TS_ITR1 - Internal Trigger 1. + * TIM_TS_ITR2 - Internal Trigger 2. + * TIM_TS_ITR3 - Internal Trigger 3. + * TIM_TS_TI1F_ED - TI1 Edge Detector. + * TIM_TS_TI1FP1 - Filtered Timer Input 1. + * TIM_TS_TI2FP2 - Filtered Timer Input 2. + * TIM_TS_ETRF - External Trigger input. + * + * @return none + */ +void TIM_SelectInputTrigger(TIM_TypeDef *TIMx, uint16_t TIM_InputTriggerSource) +{ + uint16_t tmpsmcr = 0; + + tmpsmcr = TIMx->SMCFGR; + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_TS)); + tmpsmcr |= TIM_InputTriggerSource; + TIMx->SMCFGR = tmpsmcr; +} + +/********************************************************************* + * @fn TIM_EncoderInterfaceConfig + * + * @brief Configures the TIMx Encoder Interface. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_EncoderMode - specifies the TIMx Encoder Mode. + * TIM_EncoderMode_TI1 - Counter counts on TI1FP1 edge depending + * on TI2FP2 level. + * TIM_EncoderMode_TI2 - Counter counts on TI2FP2 edge depending + * on TI1FP1 level. + * TIM_EncoderMode_TI12 - Counter counts on both TI1FP1 and + * TI2FP2 edges depending. + * TIM_IC1Polarity - specifies the IC1 Polarity. + * TIM_ICPolarity_Falling - IC Falling edge. + * TTIM_ICPolarity_Rising - IC Rising edge. + * TIM_IC2Polarity - specifies the IC2 Polarity. + * TIM_ICPolarity_Falling - IC Falling edge. + * TIM_ICPolarity_Rising - IC Rising edge. + * + * @return none + */ +void TIM_EncoderInterfaceConfig(TIM_TypeDef *TIMx, uint16_t TIM_EncoderMode, + uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity) +{ + uint16_t tmpsmcr = 0; + uint16_t tmpccmr1 = 0; + uint16_t tmpccer = 0; + + tmpsmcr = TIMx->SMCFGR; + tmpccmr1 = TIMx->CHCTLR1; + tmpccer = TIMx->CCER; + tmpsmcr &= (uint16_t)(~((uint16_t)TIM_SMS)); + tmpsmcr |= TIM_EncoderMode; + tmpccmr1 &= (uint16_t)(((uint16_t) ~((uint16_t)TIM_CC1S)) & (uint16_t)(~((uint16_t)TIM_CC2S))); + tmpccmr1 |= TIM_CC1S_0 | TIM_CC2S_0; + tmpccer &= (uint16_t)(((uint16_t) ~((uint16_t)TIM_CC1P)) & ((uint16_t) ~((uint16_t)TIM_CC2P))); + tmpccer |= (uint16_t)(TIM_IC1Polarity | (uint16_t)(TIM_IC2Polarity << (uint16_t)4)); + TIMx->SMCFGR = tmpsmcr; + TIMx->CHCTLR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_ForcedOC1Config + * + * @brief Forces the TIMx output 1 waveform to active or inactive level. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ForcedAction - specifies the forced Action to be set to the + * output waveform. + * TIM_ForcedAction_Active - Force active level on OC1REF. + * TIM_ForcedAction_InActive - Force inactive level on OC1REF. + * + * @return none + */ +void TIM_ForcedOC1Config(TIM_TypeDef *TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC1M); + tmpccmr1 |= TIM_ForcedAction; + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_ForcedOC2Config + * + * @brief Forces the TIMx output 2 waveform to active or inactive level. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ForcedAction - specifies the forced Action to be set to the + * output waveform. + * TIM_ForcedAction_Active - Force active level on OC2REF. + * TIM_ForcedAction_InActive - Force inactive level on OC2REF. + * + * @return none + */ +void TIM_ForcedOC2Config(TIM_TypeDef *TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC2M); + tmpccmr1 |= (uint16_t)(TIM_ForcedAction << 8); + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_ForcedOC3Config + * + * @brief Forces the TIMx output 3 waveform to active or inactive level. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ForcedAction - specifies the forced Action to be set to the + * output waveform. + * TIM_ForcedAction_Active - Force active level on OC3REF. + * TIM_ForcedAction_InActive - Force inactive level on OC3REF. + * + * @return none + */ +void TIM_ForcedOC3Config(TIM_TypeDef *TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC3M); + tmpccmr2 |= TIM_ForcedAction; + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_ForcedOC4Config + * + * @brief Forces the TIMx output 4 waveform to active or inactive level. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_ForcedAction - specifies the forced Action to be set to the + * output waveform. + * TIM_ForcedAction_Active - Force active level on OC4REF. + * TIM_ForcedAction_InActive - Force inactive level on OC4REF. + * + * @return none + */ +void TIM_ForcedOC4Config(TIM_TypeDef *TIMx, uint16_t TIM_ForcedAction) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC4M); + tmpccmr2 |= (uint16_t)(TIM_ForcedAction << 8); + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_ARRPreloadConfig + * + * @brief Enables or disables TIMx peripheral Preload register on ARR. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_ARRPreloadConfig(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR1 |= TIM_ARPE; + } + else + { + TIMx->CTLR1 &= (uint16_t) ~((uint16_t)TIM_ARPE); + } +} + +/********************************************************************* + * @fn TIM_SelectCOM + * + * @brief Selects the TIM peripheral Commutation event. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_SelectCOM(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR2 |= TIM_CCUS; + } + else + { + TIMx->CTLR2 &= (uint16_t) ~((uint16_t)TIM_CCUS); + } +} + +/********************************************************************* + * @fn TIM_SelectCCDMA + * + * @brief Selects the TIMx peripheral Capture Compare DMA source. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_SelectCCDMA(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR2 |= TIM_CCDS; + } + else + { + TIMx->CTLR2 &= (uint16_t) ~((uint16_t)TIM_CCDS); + } +} + +/********************************************************************* + * @fn TIM_CCPreloadControl + * + * @brief DSets or Resets the TIM peripheral Capture Compare Preload Control bit. + * reset values (Affects also the I2Ss). + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_CCPreloadControl(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR2 |= TIM_CCPC; + } + else + { + TIMx->CTLR2 &= (uint16_t) ~((uint16_t)TIM_CCPC); + } +} + +/********************************************************************* + * @fn TIM_OC1PreloadConfig + * + * @brief Enables or disables the TIMx peripheral Preload register on CCR1. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCPreload - new state of the TIMx peripheral Preload register. + * TIM_OCPreload_Enable. + * TIM_OCPreload_Disable. + * + * @return none + */ +void TIM_OC1PreloadConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC1PE); + tmpccmr1 |= TIM_OCPreload; + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_OC2PreloadConfig + * + * @brief Enables or disables the TIMx peripheral Preload register on CCR2. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCPreload - new state of the TIMx peripheral Preload register. + * TIM_OCPreload_Enable. + * TIM_OCPreload_Disable. + * + * @return none + */ +void TIM_OC2PreloadConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC2PE); + tmpccmr1 |= (uint16_t)(TIM_OCPreload << 8); + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_OC3PreloadConfig + * + * @brief Enables or disables the TIMx peripheral Preload register on CCR3. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCPreload - new state of the TIMx peripheral Preload register. + * TIM_OCPreload_Enable. + * TIM_OCPreload_Disable. + * + * @return none + */ +void TIM_OC3PreloadConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC3PE); + tmpccmr2 |= TIM_OCPreload; + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_OC4PreloadConfig + * + * @brief Enables or disables the TIMx peripheral Preload register on CCR4. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCPreload - new state of the TIMx peripheral Preload register. + * TIM_OCPreload_Enable. + * TIM_OCPreload_Disable. + * + * @return none + */ +void TIM_OC4PreloadConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPreload) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC4PE); + tmpccmr2 |= (uint16_t)(TIM_OCPreload << 8); + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_OC1FastConfig + * + * @brief Configures the TIMx Output Compare 1 Fast feature. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCFast - new state of the Output Compare Fast Enable Bit. + * TIM_OCFast_Enable - TIM output compare fast enable. + * TIM_OCFast_Disable - TIM output compare fast disable. + * + * @return none + */ +void TIM_OC1FastConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC1FE); + tmpccmr1 |= TIM_OCFast; + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_OC2FastConfig + * + * @brief Configures the TIMx Output Compare 2 Fast feature. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCFast - new state of the Output Compare Fast Enable Bit. + * TIM_OCFast_Enable - TIM output compare fast enable. + * TIM_OCFast_Disable - TIM output compare fast disable. + * + * @return none + */ +void TIM_OC2FastConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC2FE); + tmpccmr1 |= (uint16_t)(TIM_OCFast << 8); + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_OC3FastConfig + * + * @brief Configures the TIMx Output Compare 3 Fast feature. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCFast - new state of the Output Compare Fast Enable Bit. + * TIM_OCFast_Enable - TIM output compare fast enable. + * TIM_OCFast_Disable - TIM output compare fast disable. + * + * @return none + */ +void TIM_OC3FastConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC3FE); + tmpccmr2 |= TIM_OCFast; + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_OC4FastConfig + * + * @brief Configures the TIMx Output Compare 4 Fast feature. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCFast - new state of the Output Compare Fast Enable Bit. + * TIM_OCFast_Enable - TIM output compare fast enable. + * TIM_OCFast_Disable - TIM output compare fast disable. + * + * @return none + */ +void TIM_OC4FastConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCFast) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC4FE); + tmpccmr2 |= (uint16_t)(TIM_OCFast << 8); + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_ClearOC1Ref + * + * @brief Clears or safeguards the OCREF1 signal on an external event. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCClear - new state of the Output Compare Clear Enable Bit. + * TIM_OCClear_Enable - TIM Output clear enable. + * TIM_OCClear_Disable - TIM Output clear disable. + * + * @return none + */ +void TIM_ClearOC1Ref(TIM_TypeDef *TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC1CE); + tmpccmr1 |= TIM_OCClear; + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_ClearOC2Ref + * + * @brief Clears or safeguards the OCREF2 signal on an external event. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCClear - new state of the Output Compare Clear Enable Bit. + * TIM_OCClear_Enable - TIM Output clear enable. + * TIM_OCClear_Disable - TIM Output clear disable. + * + * @return none + */ +void TIM_ClearOC2Ref(TIM_TypeDef *TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr1 = 0; + + tmpccmr1 = TIMx->CHCTLR1; + tmpccmr1 &= (uint16_t) ~((uint16_t)TIM_OC2CE); + tmpccmr1 |= (uint16_t)(TIM_OCClear << 8); + TIMx->CHCTLR1 = tmpccmr1; +} + +/********************************************************************* + * @fn TIM_ClearOC3Ref + * + * @brief Clears or safeguards the OCREF3 signal on an external event. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCClear - new state of the Output Compare Clear Enable Bit. + * TIM_OCClear_Enable - TIM Output clear enable. + * TIM_OCClear_Disable - TIM Output clear disable. + * + * @return none + */ +void TIM_ClearOC3Ref(TIM_TypeDef *TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC3CE); + tmpccmr2 |= TIM_OCClear; + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_ClearOC4Ref + * + * @brief Clears or safeguards the OCREF4 signal on an external event. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCClear - new state of the Output Compare Clear Enable Bit. + * TIM_OCClear_Enable - TIM Output clear enable. + * TIM_OCClear_Disable - TIM Output clear disable. + * + * @return none + */ +void TIM_ClearOC4Ref(TIM_TypeDef *TIMx, uint16_t TIM_OCClear) +{ + uint16_t tmpccmr2 = 0; + + tmpccmr2 = TIMx->CHCTLR2; + tmpccmr2 &= (uint16_t) ~((uint16_t)TIM_OC4CE); + tmpccmr2 |= (uint16_t)(TIM_OCClear << 8); + TIMx->CHCTLR2 = tmpccmr2; +} + +/********************************************************************* + * @fn TIM_OC1PolarityConfig + * + * @brief Configures the TIMx channel 1 polarity. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCPolarity - specifies the OC1 Polarity. + * TIM_OCPolarity_High - Output Compare active high. + * TIM_OCPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC1PolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC1P); + tmpccer |= TIM_OCPolarity; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC1NPolarityConfig + * + * @brief Configures the TIMx channel 1 polarity. + * + * @param TIMx - where x can be 1 to select the TIM peripheral. + * TIM_OCNPolarity - specifies the OC1N Polarity. + * TIM_OCNPolarity_High - Output Compare active high. + * TIM_OCNPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC1NPolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCNPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC1NP); + tmpccer |= TIM_OCNPolarity; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC2PolarityConfig + * + * @brief Configures the TIMx channel 2 polarity. + * + * @param TIMx - where x can be 1 to 4 to select the TIM peripheral. + * TIM_OCPolarity - specifies the OC2 Polarity. + * TIM_OCPolarity_High - Output Compare active high. + * TIM_OCPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC2PolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC2P); + tmpccer |= (uint16_t)(TIM_OCPolarity << 4); + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC2NPolarityConfig + * + * @brief Configures the TIMx channel 2 polarity. + * + * @param TIMx - where x can be 1 to select the TIM peripheral. + * TIM_OCNPolarity - specifies the OC1N Polarity. + * TIM_OCNPolarity_High - Output Compare active high. + * TIM_OCNPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC2NPolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCNPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC2NP); + tmpccer |= (uint16_t)(TIM_OCNPolarity << 4); + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC3PolarityConfig + * + * @brief Configures the TIMx Channel 3 polarity. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_OCPolarit - specifies the OC3 Polarity. + * TIM_OCPolarity_High - Output Compare active high. + * TIM_OCPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC3PolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC3P); + tmpccer |= (uint16_t)(TIM_OCPolarity << 8); + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC3NPolarityConfig + * + * @brief Configures the TIMx Channel 3N polarity. + * + * @param TIMx - where x can be 1 to select the TIM peripheral. + * TIM_OCNPolarity - specifies the OC2N Polarity. + * TIM_OCNPolarity_High - Output Compare active high. + * TIM_OCNPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC3NPolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCNPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC3NP); + tmpccer |= (uint16_t)(TIM_OCNPolarity << 8); + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_OC4PolarityConfig + * + * @brief Configures the TIMx Channel 4 polarity. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_OCPolarit - specifies the OC3 Polarity. + * TIM_OCPolarity_High - Output Compare active high. + * TIM_OCPolarity_Low - Output Compare active low. + * + * @return none + */ +void TIM_OC4PolarityConfig(TIM_TypeDef *TIMx, uint16_t TIM_OCPolarity) +{ + uint16_t tmpccer = 0; + + tmpccer = TIMx->CCER; + tmpccer &= (uint16_t) ~((uint16_t)TIM_CC4P); + tmpccer |= (uint16_t)(TIM_OCPolarity << 12); + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TIM_CCxCmd + * + * @brief Enables or disables the TIM Capture Compare Channel x. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_Channel - specifies the TIM Channel. + * TIM_Channel_1 - TIM Channel 1. + * TIM_Channel_2 - TIM Channel 2. + * TIM_Channel_3 - TIM Channel 3. + * TIM_Channel_4 - TIM Channel 4. + * TIM_CCx - specifies the TIM Channel CCxE bit new state. + * TIM_CCx_Enable. + * TIM_CCx_Disable. + * + * @return none + */ +void TIM_CCxCmd(TIM_TypeDef *TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx) +{ + uint16_t tmp = 0; + + tmp = CCER_CCE_Set << TIM_Channel; + TIMx->CCER &= (uint16_t)~tmp; + TIMx->CCER |= (uint16_t)(TIM_CCx << TIM_Channel); +} + +/********************************************************************* + * @fn TIM_CCxNCmd + * + * @brief Enables or disables the TIM Capture Compare Channel xN. + * + * @param TIMx - where x can be 1 select the TIM peripheral. + * TIM_Channel - specifies the TIM Channel. + * TIM_Channel_1 - TIM Channel 1. + * TIM_Channel_2 - TIM Channel 2. + * TIM_Channel_3 - TIM Channel 3. + * TIM_CCxN - specifies the TIM Channel CCxNE bit new state. + * TIM_CCxN_Enable. + * TIM_CCxN_Disable. + * + * @return none + */ +void TIM_CCxNCmd(TIM_TypeDef *TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN) +{ + uint16_t tmp = 0; + + tmp = CCER_CCNE_Set << TIM_Channel; + TIMx->CCER &= (uint16_t)~tmp; + TIMx->CCER |= (uint16_t)(TIM_CCxN << TIM_Channel); +} + +/********************************************************************* + * @fn TIM_SelectOCxM + * + * @brief Selects the TIM Output Compare Mode. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_Channel - specifies the TIM Channel. + * TIM_Channel_1 - TIM Channel 1. + * TIM_Channel_2 - TIM Channel 2. + * TIM_Channel_3 - TIM Channel 3. + * TIM_Channel_4 - TIM Channel 4. + * TIM_OCMode - specifies the TIM Output Compare Mode. + * TIM_OCMode_Timing. + * TIM_OCMode_Active. + * TIM_OCMode_Toggle. + * TIM_OCMode_PWM1. + * TIM_OCMode_PWM2. + * TIM_ForcedAction_Active. + * TIM_ForcedAction_InActive. + * + * @return none + */ +void TIM_SelectOCxM(TIM_TypeDef *TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode) +{ + uint32_t tmp = 0; + uint16_t tmp1 = 0; + + tmp = (uint32_t)TIMx; + tmp += CHCTLR_Offset; + tmp1 = CCER_CCE_Set << (uint16_t)TIM_Channel; + TIMx->CCER &= (uint16_t)~tmp1; + + if((TIM_Channel == TIM_Channel_1) || (TIM_Channel == TIM_Channel_3)) + { + tmp += (TIM_Channel >> 1); + *(__IO uint32_t *)tmp &= (uint32_t) ~((uint32_t)TIM_OC1M); + *(__IO uint32_t *)tmp |= TIM_OCMode; + } + else + { + tmp += (uint16_t)(TIM_Channel - (uint16_t)4) >> (uint16_t)1; + *(__IO uint32_t *)tmp &= (uint32_t) ~((uint32_t)TIM_OC2M); + *(__IO uint32_t *)tmp |= (uint16_t)(TIM_OCMode << 8); + } +} + +/********************************************************************* + * @fn TIM_UpdateDisableConfig + * + * @brief Enables or Disables the TIMx Update event. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_UpdateDisableConfig(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR1 |= TIM_UDIS; + } + else + { + TIMx->CTLR1 &= (uint16_t) ~((uint16_t)TIM_UDIS); + } +} + +/********************************************************************* + * @fn TIM_UpdateRequestConfig + * + * @brief Configures the TIMx Update Request Interrupt source. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_UpdateSource - specifies the Update source. + * TIM_UpdateSource_Regular. + * TIM_UpdateSource_Global. + * + * @return none + */ +void TIM_UpdateRequestConfig(TIM_TypeDef *TIMx, uint16_t TIM_UpdateSource) +{ + if(TIM_UpdateSource != TIM_UpdateSource_Global) + { + TIMx->CTLR1 |= TIM_URS; + } + else + { + TIMx->CTLR1 &= (uint16_t) ~((uint16_t)TIM_URS); + } +} + +/********************************************************************* + * @fn TIM_SelectHallSensor + * + * @brief Enables or disables the TIMx's Hall sensor interface. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void TIM_SelectHallSensor(TIM_TypeDef *TIMx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + TIMx->CTLR2 |= TIM_TI1S; + } + else + { + TIMx->CTLR2 &= (uint16_t) ~((uint16_t)TIM_TI1S); + } +} + +/********************************************************************* + * @fn TIM_SelectOnePulseMode + * + * @brief Selects the TIMx's One Pulse Mode. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_OPMode - specifies the OPM Mode to be used. + * TIM_OPMode_Single. + * TIM_OPMode_Repetitive. + * + * @return none + */ +void TIM_SelectOnePulseMode(TIM_TypeDef *TIMx, uint16_t TIM_OPMode) +{ + TIMx->CTLR1 &= (uint16_t) ~((uint16_t)TIM_OPM); + TIMx->CTLR1 |= TIM_OPMode; +} + +/********************************************************************* + * @fn TIM_SelectOutputTrigger + * + * @brief Selects the TIMx Trigger Output Mode. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_TRGOSource - specifies the Trigger Output source. + * TIM_TRGOSource_Reset - The UG bit in the TIM_EGR register is + * used as the trigger output (TRGO). + * TIM_TRGOSource_Enable - The Counter Enable CEN is used as the + * trigger output (TRGO). + * TIM_TRGOSource_Update - The update event is selected as the + * trigger output (TRGO). + * TIM_TRGOSource_OC1 - The trigger output sends a positive pulse + * when the CC1IF flag is to be set, as soon as a capture or compare match occurs (TRGO). + * TIM_TRGOSource_OC1Ref - OC1REF signal is used as the trigger output (TRGO). + * TIM_TRGOSource_OC2Ref - OC2REF signal is used as the trigger output (TRGO). + * TIM_TRGOSource_OC3Ref - OC3REF signal is used as the trigger output (TRGO). + * TIM_TRGOSource_OC4Ref - OC4REF signal is used as the trigger output (TRGO). + * + * @return none + */ +void TIM_SelectOutputTrigger(TIM_TypeDef *TIMx, uint16_t TIM_TRGOSource) +{ + TIMx->CTLR2 &= (uint16_t) ~((uint16_t)TIM_MMS); + TIMx->CTLR2 |= TIM_TRGOSource; +} + +/********************************************************************* + * @fn TIM_SelectSlaveMode + * + * @brief Selects the TIMx Slave Mode. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_SlaveMode - specifies the Timer Slave Mode. + * TIM_SlaveMode_Reset - Rising edge of the selected trigger + * signal (TRGI) re-initializes. + * TIM_SlaveMode_Gated - The counter clock is enabled when the + * trigger signal (TRGI) is high. + * TIM_SlaveMode_Trigger - The counter starts at a rising edge + * of the trigger TRGI. + * TIM_SlaveMode_External1 - Rising edges of the selected trigger + * (TRGI) clock the counter. + * + * @return none + */ +void TIM_SelectSlaveMode(TIM_TypeDef *TIMx, uint16_t TIM_SlaveMode) +{ + TIMx->SMCFGR &= (uint16_t) ~((uint16_t)TIM_SMS); + TIMx->SMCFGR |= TIM_SlaveMode; +} + +/********************************************************************* + * @fn TIM_SelectMasterSlaveMode + * + * @brief Sets or Resets the TIMx Master/Slave Mode. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_MasterSlaveMode - specifies the Timer Master Slave Mode. + * TIM_MasterSlaveMode_Enable - synchronization between the current + * timer and its slaves (through TRGO). + * TIM_MasterSlaveMode_Disable - No action. + * + * @return none + */ +void TIM_SelectMasterSlaveMode(TIM_TypeDef *TIMx, uint16_t TIM_MasterSlaveMode) +{ + TIMx->SMCFGR &= (uint16_t) ~((uint16_t)TIM_MSM); + TIMx->SMCFGR |= TIM_MasterSlaveMode; +} + +/********************************************************************* + * @fn TIM_SetCounter + * + * @brief Sets the TIMx Counter Register value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * Counter - specifies the Counter register new value. + * + * @return none + */ +void TIM_SetCounter(TIM_TypeDef *TIMx, uint16_t Counter) +{ + TIMx->CNT = Counter; +} + +/********************************************************************* + * @fn TIM_SetAutoreload + * + * @brief Sets the TIMx Autoreload Register value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * Autoreload - specifies the Autoreload register new value. + * + * @return none + */ +void TIM_SetAutoreload(TIM_TypeDef *TIMx, uint16_t Autoreload) +{ + TIMx->ATRLR = Autoreload; +} + +/********************************************************************* + * @fn TIM_SetCompare1 + * + * @brief Sets the TIMx Capture Compare1 Register value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * Compare1 - specifies the Capture Compare1 register new value. + * + * @return none + */ +void TIM_SetCompare1(TIM_TypeDef *TIMx, uint16_t Compare1) +{ + TIMx->CH1CVR = Compare1; +} + +/********************************************************************* + * @fn TIM_SetCompare2 + * + * @brief Sets the TIMx Capture Compare2 Register value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * Compare1 - specifies the Capture Compare1 register new value. + * + * @return none + */ +void TIM_SetCompare2(TIM_TypeDef *TIMx, uint16_t Compare2) +{ + TIMx->CH2CVR = Compare2; +} + +/********************************************************************* + * @fn TIM_SetCompare3 + * + * @brief Sets the TIMx Capture Compare3 Register value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * Compare1 - specifies the Capture Compare1 register new value. + * + * @return none + */ +void TIM_SetCompare3(TIM_TypeDef *TIMx, uint16_t Compare3) +{ + TIMx->CH3CVR = Compare3; +} + +/********************************************************************* + * @fn TIM_SetCompare4 + * + * @brief Sets the TIMx Capture Compare4 Register value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * Compare1 - specifies the Capture Compare1 register new value. + * + * @return none + */ +void TIM_SetCompare4(TIM_TypeDef *TIMx, uint16_t Compare4) +{ + TIMx->CH4CVR = Compare4; +} + +/********************************************************************* + * @fn TIM_SetIC1Prescaler + * + * @brief Sets the TIMx Input Capture 1 prescaler. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_ICPSC - specifies the Input Capture1 prescaler new value. + * TIM_ICPSC_DIV1 - no prescaler. + * TIM_ICPSC_DIV2 - capture is done once every 2 events. + * TIM_ICPSC_DIV4 - capture is done once every 4 events. + * TIM_ICPSC_DIV8 - capture is done once every 8 events. + * + * @return none + */ +void TIM_SetIC1Prescaler(TIM_TypeDef *TIMx, uint16_t TIM_ICPSC) +{ + TIMx->CHCTLR1 &= (uint16_t) ~((uint16_t)TIM_IC1PSC); + TIMx->CHCTLR1 |= TIM_ICPSC; +} + +/********************************************************************* + * @fn TIM_SetIC2Prescaler + * + * @brief Sets the TIMx Input Capture 2 prescaler. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_ICPSC - specifies the Input Capture1 prescaler new value. + * TIM_ICPSC_DIV1 - no prescaler. + * TIM_ICPSC_DIV2 - capture is done once every 2 events. + * TIM_ICPSC_DIV4 - capture is done once every 4 events. + * TIM_ICPSC_DIV8 - capture is done once every 8 events. + * + * @return none + */ +void TIM_SetIC2Prescaler(TIM_TypeDef *TIMx, uint16_t TIM_ICPSC) +{ + TIMx->CHCTLR1 &= (uint16_t) ~((uint16_t)TIM_IC2PSC); + TIMx->CHCTLR1 |= (uint16_t)(TIM_ICPSC << 8); +} + +/********************************************************************* + * @fn TIM_SetIC3Prescaler + * + * @brief Sets the TIMx Input Capture 3 prescaler. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_ICPSC - specifies the Input Capture1 prescaler new value. + * TIM_ICPSC_DIV1 - no prescaler. + * TIM_ICPSC_DIV2 - capture is done once every 2 events. + * TIM_ICPSC_DIV4 - capture is done once every 4 events. + * TIM_ICPSC_DIV8 - capture is done once every 8 events. + * + * @return none + */ +void TIM_SetIC3Prescaler(TIM_TypeDef *TIMx, uint16_t TIM_ICPSC) +{ + TIMx->CHCTLR2 &= (uint16_t) ~((uint16_t)TIM_IC3PSC); + TIMx->CHCTLR2 |= TIM_ICPSC; +} + +/********************************************************************* + * @fn TIM_SetIC4Prescaler + * + * @brief Sets the TIMx Input Capture 4 prescaler. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_ICPSC - specifies the Input Capture1 prescaler new value. + * TIM_ICPSC_DIV1 - no prescaler. + * TIM_ICPSC_DIV2 - capture is done once every 2 events. + * TIM_ICPSC_DIV4 - capture is done once every 4 events. + * TIM_ICPSC_DIV8 - capture is done once every 8 events. + * + * @return none + */ +void TIM_SetIC4Prescaler(TIM_TypeDef *TIMx, uint16_t TIM_ICPSC) +{ + TIMx->CHCTLR2 &= (uint16_t) ~((uint16_t)TIM_IC4PSC); + TIMx->CHCTLR2 |= (uint16_t)(TIM_ICPSC << 8); +} + +/********************************************************************* + * @fn TIM_SetClockDivision + * + * @brief Sets the TIMx Clock Division value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_CKD - specifies the clock division value. + * TIM_CKD_DIV1 - TDTS = Tck_tim. + * TIM_CKD_DIV2 - TDTS = 2*Tck_tim. + * TIM_CKD_DIV4 - TDTS = 4*Tck_tim. + * + * @return none + */ +void TIM_SetClockDivision(TIM_TypeDef *TIMx, uint16_t TIM_CKD) +{ + TIMx->CTLR1 &= (uint16_t) ~((uint16_t)TIM_CTLR1_CKD); + TIMx->CTLR1 |= TIM_CKD; +} + +/********************************************************************* + * @fn TIM_GetCapture1 + * + * @brief Gets the TIMx Input Capture 1 value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * + * @return TIMx->CH1CVR - Capture Compare 1 Register value. + */ +uint16_t TIM_GetCapture1(TIM_TypeDef *TIMx) +{ + return TIMx->CH1CVR; +} + +/********************************************************************* + * @fn TIM_GetCapture2 + * + * @brief Gets the TIMx Input Capture 2 value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * + * @return TIMx->CH2CVR - Capture Compare 2 Register value. + */ +uint16_t TIM_GetCapture2(TIM_TypeDef *TIMx) +{ + return TIMx->CH2CVR; +} + +/********************************************************************* + * @fn TIM_GetCapture3 + * + * @brief Gets the TIMx Input Capture 3 value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * + * @return TIMx->CH3CVR - Capture Compare 3 Register value. + */ +uint16_t TIM_GetCapture3(TIM_TypeDef *TIMx) +{ + return TIMx->CH3CVR; +} + +/********************************************************************* + * @fn TIM_GetCapture4 + * + * @brief Gets the TIMx Input Capture 4 value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * + * @return TIMx->CH4CVR - Capture Compare 4 Register value. + */ +uint16_t TIM_GetCapture4(TIM_TypeDef *TIMx) +{ + return TIMx->CH4CVR; +} + +/********************************************************************* + * @fn TIM_GetCounter + * + * @brief Gets the TIMx Counter value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * + * @return TIMx->CNT - Counter Register value. + */ +uint16_t TIM_GetCounter(TIM_TypeDef *TIMx) +{ + return TIMx->CNT; +} + +/********************************************************************* + * @fn TIM_GetPrescaler + * + * @brief Gets the TIMx Prescaler value. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * + * @return TIMx->PSC - Prescaler Register value. + */ +uint16_t TIM_GetPrescaler(TIM_TypeDef *TIMx) +{ + return TIMx->PSC; +} + +/********************************************************************* + * @fn TIM_GetFlagStatus + * + * @brief Checks whether the specified TIM flag is set or not. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_FLAG - specifies the flag to check. + * TIM_FLAG_Update - TIM update Flag. + * TIM_FLAG_CC1 - TIM Capture Compare 1 Flag. + * TIM_FLAG_CC2 - TIM Capture Compare 2 Flag. + * TIM_FLAG_CC3 - TIM Capture Compare 3 Flag. + * TIM_FLAG_CC4 - TIM Capture Compare 4 Flag. + * TIM_FLAG_COM - TIM Commutation Flag. + * TIM_FLAG_Trigger - TIM Trigger Flag. + * TIM_FLAG_Break - TIM Break Flag. + * TIM_FLAG_CC1OF - TIM Capture Compare 1 overcapture Flag. + * TIM_FLAG_CC2OF - TIM Capture Compare 2 overcapture Flag. + * TIM_FLAG_CC3OF - TIM Capture Compare 3 overcapture Flag. + * TIM_FLAG_CC4OF - TIM Capture Compare 4 overcapture Flag. + * + * @return none + */ +FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, uint16_t TIM_FLAG) +{ + ITStatus bitstatus = RESET; + + if((TIMx->INTFR & TIM_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn TIM_ClearFlag + * + * @brief Clears the TIMx's pending flags. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_FLAG - specifies the flag to check. + * TIM_FLAG_Update - TIM update Flag. + * TIM_FLAG_CC1 - TIM Capture Compare 1 Flag. + * TIM_FLAG_CC2 - TIM Capture Compare 2 Flag. + * TIM_FLAG_CC3 - TIM Capture Compare 3 Flag. + * TIM_FLAG_CC4 - TIM Capture Compare 4 Flag. + * TIM_FLAG_COM - TIM Commutation Flag. + * TIM_FLAG_Trigger - TIM Trigger Flag. + * TIM_FLAG_Break - TIM Break Flag. + * TIM_FLAG_CC1OF - TIM Capture Compare 1 overcapture Flag. + * TIM_FLAG_CC2OF - TIM Capture Compare 2 overcapture Flag. + * TIM_FLAG_CC3OF - TIM Capture Compare 3 overcapture Flag. + * TIM_FLAG_CC4OF - TIM Capture Compare 4 overcapture Flag. + * + * @return none + */ +void TIM_ClearFlag(TIM_TypeDef *TIMx, uint16_t TIM_FLAG) +{ + TIMx->INTFR = (uint16_t)~TIM_FLAG; +} + +/********************************************************************* + * @fn TIM_GetITStatus + * + * @brief Checks whether the TIM interrupt has occurred or not. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_IT - specifies the TIM interrupt source to check. + * TIM_IT_Update - TIM update Interrupt source. + * TIM_IT_CC1 - TIM Capture Compare 1 Interrupt source. + * TIM_IT_CC2 - TIM Capture Compare 2 Interrupt source. + * TIM_IT_CC3 - TIM Capture Compare 3 Interrupt source. + * TIM_IT_CC4 - TIM Capture Compare 4 Interrupt source. + * TIM_IT_COM - TIM Commutation Interrupt source. + * TIM_IT_Trigger - TIM Trigger Interrupt source. + * TIM_IT_Break - TIM Break Interrupt source. + * + * @return none + */ +ITStatus TIM_GetITStatus(TIM_TypeDef *TIMx, uint16_t TIM_IT) +{ + ITStatus bitstatus = RESET; + uint16_t itstatus = 0x0, itenable = 0x0; + + itstatus = TIMx->INTFR & TIM_IT; + + itenable = TIMx->DMAINTENR & TIM_IT; + if((itstatus != (uint16_t)RESET) && (itenable != (uint16_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn TIM_ClearITPendingBit + * + * @brief Clears the TIMx's interrupt pending bits. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * TIM_IT - specifies the TIM interrupt source to check. + * TIM_IT_Update - TIM update Interrupt source. + * TIM_IT_CC1 - TIM Capture Compare 1 Interrupt source. + * TIM_IT_CC2 - TIM Capture Compare 2 Interrupt source. + * TIM_IT_CC3 - TIM Capture Compare 3 Interrupt source. + * TIM_IT_CC4 - TIM Capture Compare 4 Interrupt source. + * TIM_IT_COM - TIM Commutation Interrupt source. + * TIM_IT_Trigger - TIM Trigger Interrupt source. + * TIM_IT_Break - TIM Break Interrupt source. + * + * @return none + */ +void TIM_ClearITPendingBit(TIM_TypeDef *TIMx, uint16_t TIM_IT) +{ + TIMx->INTFR = (uint16_t)~TIM_IT; +} + +/********************************************************************* + * @fn TI1_Config + * + * @brief Configure the TI1 as Input. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * IM_ICPolarity - The Input Polarity. + * TIM_ICPolarity_Rising. + * TIM_ICPolarity_Falling. + * TIM_ICSelection - specifies the input to be used. + * TIM_ICSelection_DirectTI - TIM Input 1 is selected to be + * connected to IC1. + * TIM_ICSelection_IndirectTI - TIM Input 1 is selected to be + * connected to IC2. + * TIM_ICSelection_TRC - TIM Input 1 is selected to be connected + * to TRC. + * TIM_ICFilter - Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * + * @return none + */ +static void TI1_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr1 = 0, tmpccer = 0; + + TIMx->CCER &= (uint16_t) ~((uint16_t)TIM_CC1E); + tmpccmr1 = TIMx->CHCTLR1; + tmpccer = TIMx->CCER; + tmpccmr1 &= (uint16_t)(((uint16_t) ~((uint16_t)TIM_CC1S)) & ((uint16_t) ~((uint16_t)TIM_IC1F))); + tmpccmr1 |= (uint16_t)(TIM_ICSelection | (uint16_t)(TIM_ICFilter << (uint16_t)4)); + + if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3) || (TIMx == TIM4) || + (TIMx == TIM5) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC1P)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CC1E); + } + else + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC1P | TIM_CC1NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CC1E); + } + + TIMx->CHCTLR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TI2_Config + * + * @brief Configure the TI2 as Input. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * IM_ICPolarity - The Input Polarity. + * TIM_ICPolarity_Rising. + * TIM_ICPolarity_Falling. + * TIM_ICSelection - specifies the input to be used. + * TIM_ICSelection_DirectTI - TIM Input 1 is selected to be + * connected to IC1. + * TIM_ICSelection_IndirectTI - TIM Input 1 is selected to be + * connected to IC2. + * TIM_ICSelection_TRC - TIM Input 1 is selected to be connected + * to TRC. + * TIM_ICFilter - Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * + * @return none + */ +static void TI2_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr1 = 0, tmpccer = 0, tmp = 0; + + TIMx->CCER &= (uint16_t) ~((uint16_t)TIM_CC2E); + tmpccmr1 = TIMx->CHCTLR1; + tmpccer = TIMx->CCER; + tmp = (uint16_t)(TIM_ICPolarity << 4); + tmpccmr1 &= (uint16_t)(((uint16_t) ~((uint16_t)TIM_CC2S)) & ((uint16_t) ~((uint16_t)TIM_IC2F))); + tmpccmr1 |= (uint16_t)(TIM_ICFilter << 12); + tmpccmr1 |= (uint16_t)(TIM_ICSelection << 8); + + if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3) || (TIMx == TIM4) || + (TIMx == TIM5) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC2P)); + tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CC2E); + } + else + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC2P | TIM_CC2NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CC2E); + } + + TIMx->CHCTLR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TI3_Config + * + * @brief Configure the TI3 as Input. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * IM_ICPolarity - The Input Polarity. + * TIM_ICPolarity_Rising. + * TIM_ICPolarity_Falling. + * TIM_ICSelection - specifies the input to be used. + * TIM_ICSelection_DirectTI - TIM Input 1 is selected to be + * connected to IC1. + * TIM_ICSelection_IndirectTI - TIM Input 1 is selected to be + * connected to IC2. + * TIM_ICSelection_TRC - TIM Input 1 is selected to be connected + * to TRC. + * TIM_ICFilter - Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * + * @return none + */ +static void TI3_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr2 = 0, tmpccer = 0, tmp = 0; + + TIMx->CCER &= (uint16_t) ~((uint16_t)TIM_CC3E); + tmpccmr2 = TIMx->CHCTLR2; + tmpccer = TIMx->CCER; + tmp = (uint16_t)(TIM_ICPolarity << 8); + tmpccmr2 &= (uint16_t)(((uint16_t) ~((uint16_t)TIM_CC3S)) & ((uint16_t) ~((uint16_t)TIM_IC3F))); + tmpccmr2 |= (uint16_t)(TIM_ICSelection | (uint16_t)(TIM_ICFilter << (uint16_t)4)); + + if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3) || (TIMx == TIM4) || + (TIMx == TIM5) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC3P)); + tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CC3E); + } + else + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC3P | TIM_CC3NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CC3E); + } + + TIMx->CHCTLR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} + +/********************************************************************* + * @fn TI4_Config + * + * @brief Configure the TI4 as Input. + * + * @param TIMx - where x can be 1 to 4 select the TIM peripheral. + * IM_ICPolarity - The Input Polarity. + * TIM_ICPolarity_Rising. + * TIM_ICPolarity_Falling. + * TIM_ICSelection - specifies the input to be used. + * TIM_ICSelection_DirectTI - TIM Input 1 is selected to be + * connected to IC1. + * TIM_ICSelection_IndirectTI - TIM Input 1 is selected to be + * connected to IC2. + * TIM_ICSelection_TRC - TIM Input 1 is selected to be connected + * to TRC. + * TIM_ICFilter - Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * + * @return none + */ +static void TI4_Config(TIM_TypeDef *TIMx, uint16_t TIM_ICPolarity, uint16_t TIM_ICSelection, + uint16_t TIM_ICFilter) +{ + uint16_t tmpccmr2 = 0, tmpccer = 0, tmp = 0; + + TIMx->CCER &= (uint16_t) ~((uint16_t)TIM_CC4E); + tmpccmr2 = TIMx->CHCTLR2; + tmpccer = TIMx->CCER; + tmp = (uint16_t)(TIM_ICPolarity << 12); + tmpccmr2 &= (uint16_t)((uint16_t)(~(uint16_t)TIM_CC4S) & ((uint16_t) ~((uint16_t)TIM_IC4F))); + tmpccmr2 |= (uint16_t)(TIM_ICSelection << 8); + tmpccmr2 |= (uint16_t)(TIM_ICFilter << 12); + + if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3) || (TIMx == TIM4) || + (TIMx == TIM5) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)) + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC4P)); + tmpccer |= (uint16_t)(tmp | (uint16_t)TIM_CC4E); + } + else + { + tmpccer &= (uint16_t) ~((uint16_t)(TIM_CC3P | TIM_CC4NP)); + tmpccer |= (uint16_t)(TIM_ICPolarity | (uint16_t)TIM_CC4E); + } + + TIMx->CHCTLR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_usart.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_usart.c new file mode 100755 index 000000000..222b6bc7b --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_usart.c @@ -0,0 +1,826 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_usart.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the USART firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_usart.h" +#include "ch32v30x_rcc.h" + +/* USART_Private_Defines */ +#define CTLR1_UE_Set ((uint16_t)0x2000) /* USART Enable Mask */ +#define CTLR1_UE_Reset ((uint16_t)0xDFFF) /* USART Disable Mask */ + +#define CTLR1_WAKE_Mask ((uint16_t)0xF7FF) /* USART WakeUp Method Mask */ + +#define CTLR1_RWU_Set ((uint16_t)0x0002) /* USART mute mode Enable Mask */ +#define CTLR1_RWU_Reset ((uint16_t)0xFFFD) /* USART mute mode Enable Mask */ +#define CTLR1_SBK_Set ((uint16_t)0x0001) /* USART Break Character send Mask */ +#define CTLR1_CLEAR_Mask ((uint16_t)0xE9F3) /* USART CR1 Mask */ +#define CTLR2_Address_Mask ((uint16_t)0xFFF0) /* USART address Mask */ + +#define CTLR2_LINEN_Set ((uint16_t)0x4000) /* USART LIN Enable Mask */ +#define CTLR2_LINEN_Reset ((uint16_t)0xBFFF) /* USART LIN Disable Mask */ + +#define CTLR2_LBDL_Mask ((uint16_t)0xFFDF) /* USART LIN Break detection Mask */ +#define CTLR2_STOP_CLEAR_Mask ((uint16_t)0xCFFF) /* USART CR2 STOP Bits Mask */ +#define CTLR2_CLOCK_CLEAR_Mask ((uint16_t)0xF0FF) /* USART CR2 Clock Mask */ + +#define CTLR3_SCEN_Set ((uint16_t)0x0020) /* USART SC Enable Mask */ +#define CTLR3_SCEN_Reset ((uint16_t)0xFFDF) /* USART SC Disable Mask */ + +#define CTLR3_NACK_Set ((uint16_t)0x0010) /* USART SC NACK Enable Mask */ +#define CTLR3_NACK_Reset ((uint16_t)0xFFEF) /* USART SC NACK Disable Mask */ + +#define CTLR3_HDSEL_Set ((uint16_t)0x0008) /* USART Half-Duplex Enable Mask */ +#define CTLR3_HDSEL_Reset ((uint16_t)0xFFF7) /* USART Half-Duplex Disable Mask */ + +#define CTLR3_IRLP_Mask ((uint16_t)0xFFFB) /* USART IrDA LowPower mode Mask */ +#define CTLR3_CLEAR_Mask ((uint16_t)0xFCFF) /* USART CR3 Mask */ + +#define CTLR3_IREN_Set ((uint16_t)0x0002) /* USART IrDA Enable Mask */ +#define CTLR3_IREN_Reset ((uint16_t)0xFFFD) /* USART IrDA Disable Mask */ +#define GPR_LSB_Mask ((uint16_t)0x00FF) /* Guard Time Register LSB Mask */ +#define GPR_MSB_Mask ((uint16_t)0xFF00) /* Guard Time Register MSB Mask */ +#define IT_Mask ((uint16_t)0x001F) /* USART Interrupt Mask */ + +/* USART OverSampling-8 Mask */ +#define CTLR1_OVER8_Set ((uint16_t)0x8000) /* USART OVER8 mode Enable Mask */ +#define CTLR1_OVER8_Reset ((uint16_t)0x7FFF) /* USART OVER8 mode Disable Mask */ + +/* USART One Bit Sampling Mask */ +#define CTLR3_ONEBITE_Set ((uint16_t)0x0800) /* USART ONEBITE mode Enable Mask */ +#define CTLR3_ONEBITE_Reset ((uint16_t)0xF7FF) /* USART ONEBITE mode Disable Mask */ + +/********************************************************************* + * @fn USART_DeInit + * + * @brief Deinitializes the USARTx peripheral registers to their default + * reset values. + * + * @param USARTx - where x can be 1, 2 or 3 to select the UART peripheral. + * + * @return none + */ +void USART_DeInit(USART_TypeDef *USARTx) +{ + if (USARTx == USART1) + { + RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE); + RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE); + } + else if(USARTx == USART2) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE); + } + else if(USARTx == USART3) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE); + } + else if(USARTx == UART4) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE); + } + else if(USARTx == UART5) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE); + } + else if(USARTx == UART6) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART6, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART6, DISABLE); + } + else if(USARTx == UART7) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART7, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART7, DISABLE); + } + else if(USARTx == UART8) + { + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART8, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART8, DISABLE); + } +} + +/********************************************************************* + * @fn USART_Init + * + * @brief Initializes the USARTx peripheral according to the specified + * parameters in the USART_InitStruct. + * + * @param USARTx - where x can be 1, 2 or 3 to select the UART peripheral. + * USART_InitStruct - pointer to a USART_InitTypeDef structure + * that contains the configuration information for the specified + * USART peripheral. + * + * @return none + */ +void USART_Init(USART_TypeDef *USARTx, USART_InitTypeDef *USART_InitStruct) +{ + uint32_t tmpreg = 0x00, apbclock = 0x00; + uint32_t integerdivider = 0x00; + uint32_t fractionaldivider = 0x00; + uint32_t usartxbase = 0; + RCC_ClocksTypeDef RCC_ClocksStatus; + + if(USART_InitStruct->USART_HardwareFlowControl != USART_HardwareFlowControl_None) + { + } + + usartxbase = (uint32_t)USARTx; + tmpreg = USARTx->CTLR2; + tmpreg &= CTLR2_STOP_CLEAR_Mask; + tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits; + + USARTx->CTLR2 = (uint16_t)tmpreg; + tmpreg = USARTx->CTLR1; + tmpreg &= CTLR1_CLEAR_Mask; + tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity | + USART_InitStruct->USART_Mode; + USARTx->CTLR1 = (uint16_t)tmpreg; + + tmpreg = USARTx->CTLR3; + tmpreg &= CTLR3_CLEAR_Mask; + tmpreg |= USART_InitStruct->USART_HardwareFlowControl; + USARTx->CTLR3 = (uint16_t)tmpreg; + + RCC_GetClocksFreq(&RCC_ClocksStatus); + + if(usartxbase == USART1_BASE) + { + apbclock = RCC_ClocksStatus.PCLK2_Frequency; + } + else + { + apbclock = RCC_ClocksStatus.PCLK1_Frequency; + } + + if((USARTx->CTLR1 & CTLR1_OVER8_Set) != 0) + { + integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate))); + } + else + { + integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate))); + } + tmpreg = (integerdivider / 100) << 4; + + fractionaldivider = integerdivider - (100 * (tmpreg >> 4)); + + if((USARTx->CTLR1 & CTLR1_OVER8_Set) != 0) + { + tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07); + } + else + { + tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F); + } + + USARTx->BRR = (uint16_t)tmpreg; +} + +/********************************************************************* + * @fn USART_StructInit + * + * @brief Fills each USART_InitStruct member with its default value. + * + * @param SPIx - where x can be 1, 2 or 3 to select the SPI peripheral. + * + * @return none + */ +void USART_StructInit(USART_InitTypeDef *USART_InitStruct) +{ + USART_InitStruct->USART_BaudRate = 9600; + USART_InitStruct->USART_WordLength = USART_WordLength_8b; + USART_InitStruct->USART_StopBits = USART_StopBits_1; + USART_InitStruct->USART_Parity = USART_Parity_No; + USART_InitStruct->USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + USART_InitStruct->USART_HardwareFlowControl = USART_HardwareFlowControl_None; +} + +/********************************************************************* + * @fn USART_ClockInit + * + * @brief Initializes the USARTx peripheral Clock according to the + * specified parameters in the USART_ClockInitStruct . + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_ClockInitStruct - pointer to a USART_ClockInitTypeDef + * structure that contains the configuration information for the specified + * USART peripheral. + * + * @return none + */ +void USART_ClockInit(USART_TypeDef *USARTx, USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + uint32_t tmpreg = 0x00; + + tmpreg = USARTx->CTLR2; + tmpreg &= CTLR2_CLOCK_CLEAR_Mask; + tmpreg |= (uint32_t)USART_ClockInitStruct->USART_Clock | USART_ClockInitStruct->USART_CPOL | + USART_ClockInitStruct->USART_CPHA | USART_ClockInitStruct->USART_LastBit; + USARTx->CTLR2 = (uint16_t)tmpreg; +} + +/********************************************************************* + * @fn USART_ClockStructInit + * + * @brief Fills each USART_ClockStructInit member with its default value. + * + * @param USART_ClockInitStruct - pointer to a USART_ClockInitTypeDef + * structure which will be initialized. + * + * @return none + */ +void USART_ClockStructInit(USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + USART_ClockInitStruct->USART_Clock = USART_Clock_Disable; + USART_ClockInitStruct->USART_CPOL = USART_CPOL_Low; + USART_ClockInitStruct->USART_CPHA = USART_CPHA_1Edge; + USART_ClockInitStruct->USART_LastBit = USART_LastBit_Disable; +} + +/********************************************************************* + * @fn USART_Cmd + * + * @brief Enables or disables the specified USART peripheral. + * reset values (Affects also the I2Ss). + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState: ENABLE or DISABLE. + * + * @return none + */ +void USART_Cmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR1 |= CTLR1_UE_Set; + } + else + { + USARTx->CTLR1 &= CTLR1_UE_Reset; + } +} + +/********************************************************************* + * @fn USART_ITConfig + * + * @brief Enables or disables the specified USART interrupts. + * reset values (Affects also the I2Ss). + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_IT - specifies the USART interrupt sources to be enabled or disabled. + * USART_IT_CTS - CTS change interrupt. + * USART_IT_LBD - LIN Break detection interrupt. + * USART_IT_TXE - Transmit Data Register empty interrupt. + * USART_IT_TC - Transmission complete interrupt. + * USART_IT_RXNE - Receive Data register not empty interrupt. + * USART_IT_IDLE - Idle line detection interrupt. + * USART_IT_PE - Parity Error interrupt. + * USART_IT_ERR - Error interrupt. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_ITConfig(USART_TypeDef *USARTx, uint16_t USART_IT, FunctionalState NewState) +{ + uint32_t usartreg = 0x00, itpos = 0x00, itmask = 0x00; + uint32_t usartxbase = 0x00; + + if(USART_IT == USART_IT_CTS) + { + } + + usartxbase = (uint32_t)USARTx; + usartreg = (((uint8_t)USART_IT) >> 0x05); + itpos = USART_IT & IT_Mask; + itmask = (((uint32_t)0x01) << itpos); + + if(usartreg == 0x01) + { + usartxbase += 0x0C; + } + else if(usartreg == 0x02) + { + usartxbase += 0x10; + } + else + { + usartxbase += 0x14; + } + + if(NewState != DISABLE) + { + *(__IO uint32_t *)usartxbase |= itmask; + } + else + { + *(__IO uint32_t *)usartxbase &= ~itmask; + } +} + +/********************************************************************* + * @fn USART_DMACmd + * + * @brief Enables or disables the USART DMA interface. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_DMAReq - specifies the DMA request. + * USART_DMAReq_Tx - USART DMA transmit request. + * USART_DMAReq_Rx - USART DMA receive request. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_DMACmd(USART_TypeDef *USARTx, uint16_t USART_DMAReq, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR3 |= USART_DMAReq; + } + else + { + USARTx->CTLR3 &= (uint16_t)~USART_DMAReq; + } +} + +/********************************************************************* + * @fn USART_SetAddress + * + * @brief Sets the address of the USART node. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_Address - Indicates the address of the USART node. + * + * @return none + */ +void USART_SetAddress(USART_TypeDef *USARTx, uint8_t USART_Address) +{ + USARTx->CTLR2 &= CTLR2_Address_Mask; + USARTx->CTLR2 |= USART_Address; +} + +/********************************************************************* + * @fn USART_WakeUpConfig + * + * @brief Selects the USART WakeUp method. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_WakeUp - specifies the USART wakeup method. + * USART_WakeUp_IdleLine - WakeUp by an idle line detection. + * USART_WakeUp_AddressMark - WakeUp by an address mark. + * + * @return none + */ +void USART_WakeUpConfig(USART_TypeDef *USARTx, uint16_t USART_WakeUp) +{ + USARTx->CTLR1 &= CTLR1_WAKE_Mask; + USARTx->CTLR1 |= USART_WakeUp; +} + +/********************************************************************* + * @fn USART_ReceiverWakeUpCmd + * + * @brief Determines if the USART is in mute mode or not. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_ReceiverWakeUpCmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR1 |= CTLR1_RWU_Set; + } + else + { + USARTx->CTLR1 &= CTLR1_RWU_Reset; + } +} + +/********************************************************************* + * @fn USART_LINBreakDetectLengthConfig + * + * @brief Sets the USART LIN Break detection length. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_LINBreakDetectLength - specifies the LIN break detection length. + * USART_LINBreakDetectLength_10b - 10-bit break detection. + * USART_LINBreakDetectLength_11b - 11-bit break detection. + * + * @return none + */ +void USART_LINBreakDetectLengthConfig(USART_TypeDef *USARTx, uint16_t USART_LINBreakDetectLength) +{ + USARTx->CTLR2 &= CTLR2_LBDL_Mask; + USARTx->CTLR2 |= USART_LINBreakDetectLength; +} + +/********************************************************************* + * @fn USART_LINCmd + * + * @brief Enables or disables the USART LIN mode. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_LINCmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR2 |= CTLR2_LINEN_Set; + } + else + { + USARTx->CTLR2 &= CTLR2_LINEN_Reset; + } +} + +/********************************************************************* + * @fn USART_SendData + * + * @brief Transmits single data through the USARTx peripheral. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * Data - the data to transmit. + * + * @return none + */ +void USART_SendData(USART_TypeDef *USARTx, uint16_t Data) +{ + USARTx->DATAR = (Data & (uint16_t)0x01FF); +} + +/********************************************************************* + * @fn USART_ReceiveData + * + * @brief Returns the most recent received data by the USARTx peripheral. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * + * @return The received data. + */ +uint16_t USART_ReceiveData(USART_TypeDef *USARTx) +{ + return (uint16_t)(USARTx->DATAR & (uint16_t)0x01FF); +} + +/********************************************************************* + * @fn USART_SendBreak + * + * @brief Transmits break characters. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * + * @return none + */ +void USART_SendBreak(USART_TypeDef *USARTx) +{ + USARTx->CTLR1 |= CTLR1_SBK_Set; +} + +/********************************************************************* + * @fn USART_SetGuardTime + * + * @brief Sets the specified USART guard time. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_GuardTime - specifies the guard time. + * + * @return none + */ +void USART_SetGuardTime(USART_TypeDef *USARTx, uint8_t USART_GuardTime) +{ + USARTx->GPR &= GPR_LSB_Mask; + USARTx->GPR |= (uint16_t)((uint16_t)USART_GuardTime << 0x08); +} + +/********************************************************************* + * @fn USART_SetPrescaler + * + * @brief Sets the system clock prescaler. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_Prescaler - specifies the prescaler clock. + * + * @return none + */ +void USART_SetPrescaler(USART_TypeDef *USARTx, uint8_t USART_Prescaler) +{ + USARTx->GPR &= GPR_MSB_Mask; + USARTx->GPR |= USART_Prescaler; +} + +/********************************************************************* + * @fn USART_SmartCardCmd + * + * @brief Enables or disables the USART Smart Card mode. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_SmartCardCmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR3 |= CTLR3_SCEN_Set; + } + else + { + USARTx->CTLR3 &= CTLR3_SCEN_Reset; + } +} + +/********************************************************************* + * @fn USART_SmartCardNACKCmd + * + * @brief Enables or disables NACK transmission. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_SmartCardNACKCmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR3 |= CTLR3_NACK_Set; + } + else + { + USARTx->CTLR3 &= CTLR3_NACK_Reset; + } +} + +/********************************************************************* + * @fn USART_HalfDuplexCmd + * + * @brief Enables or disables the USART Half Duplex communication. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_HalfDuplexCmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR3 |= CTLR3_HDSEL_Set; + } + else + { + USARTx->CTLR3 &= CTLR3_HDSEL_Reset; + } +} + +/********************************************************************* + * @fn USART_OverSampling8Cmd + * + * @brief Enables or disables the USART's 8x oversampling mode. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_OverSampling8Cmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR1 |= CTLR1_OVER8_Set; + } + else + { + USARTx->CTLR1 &= CTLR1_OVER8_Reset; + } +} + +/********************************************************************* + * @fn USART_OneBitMethodCmd + * + * @brief Enables or disables the USART's one bit sampling method. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_OneBitMethodCmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR3 |= CTLR3_ONEBITE_Set; + } + else + { + USARTx->CTLR3 &= CTLR3_ONEBITE_Reset; + } +} + +/********************************************************************* + * @fn USART_IrDAConfig + * + * @brief Configures the USART's IrDA interface. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_IrDAMode - specifies the IrDA mode. + * USART_IrDAMode_LowPower. + * USART_IrDAMode_Normal. + * + * @return none + */ +void USART_IrDAConfig(USART_TypeDef *USARTx, uint16_t USART_IrDAMode) +{ + USARTx->CTLR3 &= CTLR3_IRLP_Mask; + USARTx->CTLR3 |= USART_IrDAMode; +} + +/********************************************************************* + * @fn USART_IrDACmd + * + * @brief Enables or disables the USART's IrDA interface. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * NewState - ENABLE or DISABLE. + * + * @return none + */ +void USART_IrDACmd(USART_TypeDef *USARTx, FunctionalState NewState) +{ + if(NewState != DISABLE) + { + USARTx->CTLR3 |= CTLR3_IREN_Set; + } + else + { + USARTx->CTLR3 &= CTLR3_IREN_Reset; + } +} + +/********************************************************************* + * @fn USART_GetFlagStatus + * + * @brief Checks whether the specified USART flag is set or not. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_FLAG - specifies the flag to check. + * USART_FLAG_CTS - CTS Change flag. + * USART_FLAG_LBD - LIN Break detection flag. + * USART_FLAG_TXE - Transmit data register empty flag. + * USART_FLAG_TC - Transmission Complete flag. + * USART_FLAG_RXNE - Receive data register not empty flag. + * USART_FLAG_IDLE - Idle Line detection flag. + * USART_FLAG_ORE - OverRun Error flag. + * USART_FLAG_NE - Noise Error flag. + * USART_FLAG_FE - Framing Error flag. + * USART_FLAG_PE - Parity Error flag. + * + * @return none + */ +FlagStatus USART_GetFlagStatus(USART_TypeDef *USARTx, uint16_t USART_FLAG) +{ + FlagStatus bitstatus = RESET; + + if(USART_FLAG == USART_FLAG_CTS) + { + } + + if((USARTx->STATR & USART_FLAG) != (uint16_t)RESET) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + return bitstatus; +} + +/********************************************************************* + * @fn USART_ClearFlag + * + * @brief Clears the USARTx's pending flags. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_FLAG - specifies the flag to clear. + * USART_FLAG_CTS - CTS Change flag. + * USART_FLAG_LBD - LIN Break detection flag. + * USART_FLAG_TC - Transmission Complete flag. + * USART_FLAG_RXNE - Receive data register not empty flag. + * + * @return none + */ +void USART_ClearFlag(USART_TypeDef *USARTx, uint16_t USART_FLAG) +{ + if((USART_FLAG & USART_FLAG_CTS) == USART_FLAG_CTS) + { + } + + USARTx->STATR = (uint16_t)~USART_FLAG; +} + +/********************************************************************* + * @fn USART_GetITStatus + * + * @brief Checks whether the specified USART interrupt has occurred or not. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_IT - specifies the USART interrupt source to check. + * USART_IT_CTS - CTS change interrupt. + * USART_IT_LBD - LIN Break detection interrupt. + * USART_IT_TXE - Tansmit Data Register empty interrupt. + * USART_IT_TC - Transmission complete interrupt. + * USART_IT_RXNE - Receive Data register not empty interrupt. + * USART_IT_IDLE - Idle line detection interrupt. + * USART_IT_ORE_RX - OverRun Error interrupt if the RXNEIE bit is set. + * USART_IT_ORE_ER - OverRun Error interrupt if the EIE bit is set. + * USART_IT_NE - Noise Error interrupt. + * USART_IT_FE - Framing Error interrupt. + * USART_IT_PE - Parity Error interrupt. + * + * @return none + */ +ITStatus USART_GetITStatus(USART_TypeDef *USARTx, uint16_t USART_IT) +{ + uint32_t bitpos = 0x00, itmask = 0x00, usartreg = 0x00; + ITStatus bitstatus = RESET; + + if(USART_IT == USART_IT_CTS) + { + } + + usartreg = (((uint8_t)USART_IT) >> 0x05); + itmask = USART_IT & IT_Mask; + itmask = (uint32_t)0x01 << itmask; + + if(usartreg == 0x01) + { + itmask &= USARTx->CTLR1; + } + else if(usartreg == 0x02) + { + itmask &= USARTx->CTLR2; + } + else + { + itmask &= USARTx->CTLR3; + } + + bitpos = USART_IT >> 0x08; + bitpos = (uint32_t)0x01 << bitpos; + bitpos &= USARTx->STATR; + + if((itmask != (uint16_t)RESET) && (bitpos != (uint16_t)RESET)) + { + bitstatus = SET; + } + else + { + bitstatus = RESET; + } + + return bitstatus; +} + +/********************************************************************* + * @fn USART_ClearITPendingBit + * + * @brief Clears the USARTx's interrupt pending bits. + * + * @param USARTx - where x can be 1, 2, 3 to select the USART peripheral. + * USART_IT - specifies the interrupt pending bit to clear. + * USART_IT_CTS - CTS change interrupt. + * USART_IT_LBD - LIN Break detection interrupt. + * USART_IT_TC - Transmission complete interrupt. + * USART_IT_RXNE - Receive Data register not empty interrupt. + * + * @return none + */ +void USART_ClearITPendingBit(USART_TypeDef *USARTx, uint16_t USART_IT) +{ + uint16_t bitpos = 0x00, itmask = 0x00; + + if(USART_IT == USART_IT_CTS) + { + } + + bitpos = USART_IT >> 0x08; + itmask = ((uint16_t)0x01 << (uint16_t)bitpos); + USARTx->STATR = (uint16_t)~itmask; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_wwdg.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_wwdg.c new file mode 100755 index 000000000..73159c0f5 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/Peripheral/src/ch32v30x_wwdg.c @@ -0,0 +1,139 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_wwdg.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file provides all the WWDG firmware functions. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +**********************************************************************************/ +#include "ch32v30x_wwdg.h" +#include "ch32v30x_rcc.h" + +/* CTLR register bit mask */ +#define CTLR_WDGA_Set ((uint32_t)0x00000080) + +/* CFGR register bit mask */ +#define CFGR_WDGTB_Mask ((uint32_t)0xFFFFFE7F) +#define CFGR_W_Mask ((uint32_t)0xFFFFFF80) +#define BIT_Mask ((uint8_t)0x7F) + +/********************************************************************* + * @fn WWDG_DeInit + * + * @brief Deinitializes the WWDG peripheral registers to their default reset values + * + * @return none + */ +void WWDG_DeInit(void) +{ + RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, ENABLE); + RCC_APB1PeriphResetCmd(RCC_APB1Periph_WWDG, DISABLE); +} + +/********************************************************************* + * @fn WWDG_SetPrescaler + * + * @brief Sets the WWDG Prescaler + * + * @param WWDG_Prescaler - specifies the WWDG Prescaler + * WWDG_Prescaler_1 - WWDG counter clock = (PCLK1/4096)/1 + * WWDG_Prescaler_2 - WWDG counter clock = (PCLK1/4096)/2 + * WWDG_Prescaler_4 - WWDG counter clock = (PCLK1/4096)/4 + * WWDG_Prescaler_8 - WWDG counter clock = (PCLK1/4096)/8 + * + * @return none + */ +void WWDG_SetPrescaler(uint32_t WWDG_Prescaler) +{ + uint32_t tmpreg = 0; + tmpreg = WWDG->CFGR & CFGR_WDGTB_Mask; + tmpreg |= WWDG_Prescaler; + WWDG->CFGR = tmpreg; +} + +/********************************************************************* + * @fn WWDG_SetWindowValue + * + * @brief Sets the WWDG window value + * + * @param WindowValue - specifies the window value to be compared to the + * downcounter,which must be lower than 0x80 + * + * @return none + */ +void WWDG_SetWindowValue(uint8_t WindowValue) +{ + __IO uint32_t tmpreg = 0; + + tmpreg = WWDG->CFGR & CFGR_W_Mask; + + tmpreg |= WindowValue & (uint32_t)BIT_Mask; + + WWDG->CFGR = tmpreg; +} + +/********************************************************************* + * @fn WWDG_EnableIT + * + * @brief Enables the WWDG Early Wakeup interrupt(EWI) + * + * @return none + */ +void WWDG_EnableIT(void) +{ + WWDG->CFGR |= (1 << 9); +} + +/********************************************************************* + * @fn WWDG_SetCounter + * + * @brief Sets the WWDG counter value + * + * @param Counter - specifies the watchdog counter value,which must be a + * number between 0x40 and 0x7F + * + * @return none + */ +void WWDG_SetCounter(uint8_t Counter) +{ + WWDG->CTLR = Counter & BIT_Mask; +} + +/********************************************************************* + * @fn WWDG_Enable + * + * @brief Enables WWDG and load the counter value + * + * @param Counter - specifies the watchdog counter value,which must be a + * number between 0x40 and 0x7F + * @return none + */ +void WWDG_Enable(uint8_t Counter) +{ + WWDG->CTLR = CTLR_WDGA_Set | Counter; +} + +/********************************************************************* + * @fn WWDG_GetFlagStatus + * + * @brief Checks whether the Early Wakeup interrupt flag is set or not + * + * @return The new state of the Early Wakeup interrupt flag (SET or RESET) + */ +FlagStatus WWDG_GetFlagStatus(void) +{ + return (FlagStatus)(WWDG->STATR); +} + +/********************************************************************* + * @fn WWDG_ClearFlag + * + * @brief Clears Early Wakeup interrupt flag + * + * @return none + */ +void WWDG_ClearFlag(void) +{ + WWDG->STATR = (uint32_t)RESET; +} diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/Makefile b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/Makefile new file mode 100644 index 000000000..5319a52d8 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/Makefile @@ -0,0 +1,3 @@ +SRC_FILES := ch32v30x_it.c system_ch32v30x.c + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_conf.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_conf.h new file mode 100644 index 000000000..92ec0caeb --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_conf.h @@ -0,0 +1,43 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_conf.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : Library configuration file. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_CONF_H +#define __CH32V30x_CONF_H + +#include "ch32v30x_adc.h" +#include "ch32v30x_bkp.h" +#include "ch32v30x_can.h" +#include "ch32v30x_crc.h" +#include "ch32v30x_dac.h" +#include "ch32v30x_dbgmcu.h" +#include "ch32v30x_dma.h" +#include "ch32v30x_exti.h" +#include "ch32v30x_flash.h" +#include "ch32v30x_fsmc.h" +#include "ch32v30x_gpio.h" +#include "ch32v30x_i2c.h" +#include "ch32v30x_iwdg.h" +#include "ch32v30x_pwr.h" +#include "ch32v30x_rcc.h" +#include "ch32v30x_rtc.h" +#include "ch32v30x_sdio.h" +#include "ch32v30x_spi.h" +#include "ch32v30x_tim.h" +#include "ch32v30x_usart.h" +#include "ch32v30x_wwdg.h" +#include "ch32v30x_it.h" +#include "ch32v30x_misc.h" + + +#endif /* __CH32V30x_CONF_H */ + + + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_it.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_it.c new file mode 100644 index 000000000..b7fe20861 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_it.c @@ -0,0 +1,53 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v10x_it.c +* Author : WCH +* Version : V1.0.0 +* Date : 2020/04/30 +* Description : Main Interrupt Service Routines. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#include "ch32v30x_it.h" +#include "board.h" +#include + + + +void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void UART4_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); + +/********************************************************************* + * @fn NMI_Handler + * + * @brief This function handles NMI exception. + * + * @return none + */ +void NMI_Handler(void) +{ + GET_INT_SP(); + isrManager.done->incCounter(); + KPrintf("NMI_Handler.\n"); + isrManager.done->decCounter(); + FREE_INT_SP(); +} + +/********************************************************************* + * @fn HardFault_Handler + * + * @brief This function handles Hard Fault exception. + * + * @return none + */ +void HardFault_Handler(void) +{ + GET_INT_SP(); + isrManager.done->incCounter(); + KPrintf("HardFault_Handler.\n"); + isrManager.done->decCounter(); + FREE_INT_SP(); +} + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_it.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_it.h new file mode 100644 index 000000000..ce05d04a3 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/ch32v30x_it.h @@ -0,0 +1,21 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_it.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains the headers of the interrupt handlers. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_IT_H +#define __CH32V30x_IT_H + +#include "debug.h" + +#define GET_INT_SP() asm("csrrw sp,mscratch,sp") +#define FREE_INT_SP() asm("csrrw sp,mscratch,sp") + + +#endif /* __CH32V30x_IT_H */ + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/system_ch32v30x.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/system_ch32v30x.c new file mode 100644 index 000000000..7d27b189c --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/system_ch32v30x.c @@ -0,0 +1,776 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : system_ch32v30x.c +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : CH32V30x Device Peripheral Access Layer System Source File. +* For HSE = 8Mhz +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*********************************************************************************/ +#include "ch32v30x.h" + +/* +* Uncomment the line corresponding to the desired System clock (SYSCLK) frequency (after +* reset the HSI is used as SYSCLK source). +* If none of the define below is enabled, the HSI is used as System clock source. +*/ +// #define SYSCLK_FREQ_HSE HSE_VALUE +/* #define SYSCLK_FREQ_24MHz 24000000 */ +//#define SYSCLK_FREQ_48MHz 48000000 +/* #define SYSCLK_FREQ_56MHz 56000000 */ +//#define SYSCLK_FREQ_72MHz 72000000 +//#define SYSCLK_FREQ_96MHz 96000000 +//#define SYSCLK_FREQ_120MHz 120000000 +#define SYSCLK_FREQ_144MHz 144000000 + +/* Clock Definitions */ +#ifdef SYSCLK_FREQ_HSE + uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_24MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_48MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_56MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_72MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /* System Clock Frequency (Core Clock) */ + +#elif defined SYSCLK_FREQ_96MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_96MHz; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_120MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_120MHz; /* System Clock Frequency (Core Clock) */ +#elif defined SYSCLK_FREQ_144MHz + uint32_t SystemCoreClock = SYSCLK_FREQ_144MHz; /* System Clock Frequency (Core Clock) */ + +#else /* HSI Selected as System Clock source */ + uint32_t SystemCoreClock = HSI_VALUE; /* System Clock Frequency (Core Clock) */ +#endif + +__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + + +/* system_private_function_proto_types */ +static void SetSysClock(void); + +#ifdef SYSCLK_FREQ_HSE + static void SetSysClockToHSE(void); +#elif defined SYSCLK_FREQ_24MHz + static void SetSysClockTo24(void); +#elif defined SYSCLK_FREQ_48MHz + static void SetSysClockTo48(void); +#elif defined SYSCLK_FREQ_56MHz + static void SetSysClockTo56(void); +#elif defined SYSCLK_FREQ_72MHz + static void SetSysClockTo72(void); + +#elif defined SYSCLK_FREQ_96MHz + static void SetSysClockTo96(void); +#elif defined SYSCLK_FREQ_120MHz + static void SetSysClockTo120(void); +#elif defined SYSCLK_FREQ_144MHz + static void SetSysClockTo144(void); + +#endif + + +/********************************************************************* + * @fn SystemInit + * + * @brief Setup the microcontroller system Initialize the Embedded Flash Interface, + * the PLL and update the SystemCoreClock variable. + * + * @return none + */ +void SystemInit (void) +{ + RCC->CTLR |= (uint32_t)0x00000001; + +#ifdef CH32V30x_D8C + RCC->CFGR0 &= (uint32_t)0xF8FF0000; +#else + RCC->CFGR0 &= (uint32_t)0xF0FF0000; +#endif + + RCC->CTLR &= (uint32_t)0xFEF6FFFF; + RCC->CTLR &= (uint32_t)0xFFFBFFFF; + RCC->CFGR0 &= (uint32_t)0xFF80FFFF; + +#ifdef CH32V30x_D8C + RCC->CTLR &= (uint32_t)0xEBFFFFFF; + RCC->INTR = 0x00FF0000; + RCC->CFGR2 = 0x00000000; +#else + RCC->INTR = 0x009F0000; +#endif + SetSysClock(); +} + +/********************************************************************* + * @fn SystemCoreClockUpdate + * + * @brief Update SystemCoreClock variable according to Clock Register Values. + * + * @return none + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0, pllmull = 0, pllsource = 0, Pll_6_5 = 0; + + tmp = RCC->CFGR0 & RCC_SWS; + + switch (tmp) + { + case 0x00: + SystemCoreClock = HSI_VALUE; + break; + case 0x04: + SystemCoreClock = HSE_VALUE; + break; + case 0x08: + pllmull = RCC->CFGR0 & RCC_PLLMULL; + pllsource = RCC->CFGR0 & RCC_PLLSRC; + pllmull = ( pllmull >> 18) + 2; + +#ifdef CH32V30x_D8 + if(pllmull == 17) pllmull = 18; +#else + if(pllmull == 2) pllmull = 18; + if(pllmull == 15){ + pllmull = 13; /* *6.5 */ + Pll_6_5 = 1; + } + if(pllmull == 16) pllmull = 15; + if(pllmull == 17) pllmull = 16; +#endif + + if (pllsource == 0x00) + { + SystemCoreClock = (HSI_VALUE >> 1) * pllmull; + } + else + { + if ((RCC->CFGR0 & RCC_PLLXTPRE) != (uint32_t)RESET) + { + SystemCoreClock = (HSE_VALUE >> 1) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + } + + if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2); + + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + + tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)]; + SystemCoreClock >>= tmp; +} + +/********************************************************************* + * @fn SetSysClock + * + * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClock(void) +{ +#ifdef SYSCLK_FREQ_HSE + SetSysClockToHSE(); +#elif defined SYSCLK_FREQ_24MHz + SetSysClockTo24(); +#elif defined SYSCLK_FREQ_48MHz + SetSysClockTo48(); +#elif defined SYSCLK_FREQ_56MHz + SetSysClockTo56(); +#elif defined SYSCLK_FREQ_72MHz + SetSysClockTo72(); +#elif defined SYSCLK_FREQ_96MHz + SetSysClockTo96(); +#elif defined SYSCLK_FREQ_120MHz + SetSysClockTo120(); +#elif defined SYSCLK_FREQ_144MHz + SetSysClockTo144(); + +#endif + + /* If none of the define above is enabled, the HSI is used as System clock + * source (default after reset) + */ +} + + +#ifdef SYSCLK_FREQ_HSE + +/********************************************************************* + * @fn SetSysClockToHSE + * + * @brief Sets HSE as System clock source and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockToHSE(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV1; + + /* Select HSE as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_HSE; + + /* Wait till HSE is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x04) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_24MHz + +/********************************************************************* + * @fn SetSysClockTo24 + * + * @brief Sets System clock frequency to 24MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo24(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV1; + + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL3); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL3_EXTEN); +#endif + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_48MHz + +/********************************************************************* + * @fn SetSysClockTo48 + * + * @brief Sets System clock frequency to 48MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo48(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSE * 6 = 48 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL6); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL6_EXTEN); +#endif + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_56MHz + +/********************************************************************* + * @fn SetSysClockTo56 + * + * @brief Sets System clock frequency to 56MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo56(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSE * 7 = 56 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL7); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL7_EXTEN); +#endif + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + +#elif defined SYSCLK_FREQ_72MHz + +/********************************************************************* + * @fn SetSysClockTo72 + * + * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo72(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL9); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL9_EXTEN); +#endif + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_96MHz + +/********************************************************************* + * @fn SetSysClockTo96 + * + * @brief Sets System clock frequency to 96MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo96(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSE * 12 = 96 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL12); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL12_EXTEN); +#endif + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_120MHz + +/********************************************************************* + * @fn SetSysClockTo120 + * + * @brief Sets System clock frequency to 120MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo120(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSE * 15 = 120 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL15); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL15_EXTEN); +#endif + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#elif defined SYSCLK_FREQ_144MHz + +/********************************************************************* + * @fn SetSysClockTo144 + * + * @brief Sets System clock frequency to 144MHz and configure HCLK, PCLK2 and PCLK1 prescalers. + * + * @return none + */ +static void SetSysClockTo144(void) +{ + __IO uint32_t StartUpCounter = 0, HSEStatus = 0; + + RCC->CTLR |= ((uint32_t)RCC_HSEON); + + /* Wait till HSE is ready and if Time out is reached exit */ + do + { + HSEStatus = RCC->CTLR & RCC_HSERDY; + StartUpCounter++; + } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); + + if ((RCC->CTLR & RCC_HSERDY) != RESET) + { + HSEStatus = (uint32_t)0x01; + } + else + { + HSEStatus = (uint32_t)0x00; + } + + if (HSEStatus == (uint32_t)0x01) + { + /* HCLK = SYSCLK */ + RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1; + /* PCLK2 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1; + /* PCLK1 = HCLK */ + RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2; + + /* PLL configuration: PLLCLK = HSE * 18 = 144 MHz */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | + RCC_PLLMULL)); + +#ifdef CH32V30x_D8 + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18); +#else + RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18_EXTEN); +#endif + + /* Enable PLL */ + RCC->CTLR |= RCC_PLLON; + /* Wait till PLL is ready */ + while((RCC->CTLR & RCC_PLLRDY) == 0) + { + } + /* Select PLL as system clock source */ + RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW)); + RCC->CFGR0 |= (uint32_t)RCC_SW_PLL; + /* Wait till PLL is used as system clock source */ + while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08) + { + } + } + else + { + /* + * If HSE fails to start-up, the application will have wrong clock + * configuration. User can add here some code to deal with this error + */ + } +} + + +#endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/system_ch32v30x.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/system_ch32v30x.h new file mode 100644 index 000000000..8d3d053f9 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/User/system_ch32v30x.h @@ -0,0 +1,31 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : system_ch32v30x.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : CH32V30x Device Peripheral Access Layer System Header File. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __SYSTEM_CH32V30x_H +#define __SYSTEM_CH32V30x_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include +extern uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock) */ + +/* System_Exported_Functions */ +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); + +#ifdef __cplusplus +} +#endif + +#endif /*__CH32V30x_SYSTEM_H */ + + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/arch_interrupt.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/arch_interrupt.h new file mode 100755 index 000000000..a78b17b8f --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/arch_interrupt.h @@ -0,0 +1,13 @@ +#ifndef ARCH_INTERRUPT_H__ +#define ARCH_INTERRUPT_H__ + +#include "ch32v30x.h" +#include "core_riscv.h" + +#define ARCH_MAX_IRQ_NUM 128 +#define ARCH_IRQ_NUM_OFFSET 0 + +int ArchEnableHwIrq(uint32_t irq_num); +int ArchDisableHwIrq(uint32_t irq_num); + +#endif \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/boot.S b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/boot.S new file mode 100644 index 000000000..ae66d5dd8 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/boot.S @@ -0,0 +1,389 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : boot.S +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : CH32V30x vector table for eclipse toolchain. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ + + .section .init,"ax",@progbits + .global _start + .align 1 +_start: + j handle_reset + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00000013 + .word 0x00100073 + .section .vector,"ax",@progbits + .align 1 +_vector_base: + .option norvc; + .word _start + .word 0 + .word NMI_Handler /* NMI */ + .word HardFault_Handler /* Hard Fault */ + .word 0 + .word Ecall_M_Mode_Handler /* Ecall M Mode */ + .word 0 + .word 0 + .word Ecall_U_Mode_Handler /* Ecall U Mode */ + .word Break_Point_Handler /* Break Point */ + .word 0 + .word 0 + .word SysTick_Handler /* SysTick */ + .word 0 + .word SW_handler /* SW */ + .word 0 + /* External Interrupts */ + .word WWDG_IRQHandler /* Window Watchdog */ + .word PVD_IRQHandler /* PVD through EXTI Line detect */ + .word TAMPER_IRQHandler /* TAMPER */ + .word RTC_IRQHandler /* RTC */ + .word FLASH_IRQHandler /* Flash */ + .word RCC_IRQHandler /* RCC */ + .word EXTI0_IRQHandler /* EXTI Line 0 */ + .word EXTI1_IRQHandler /* EXTI Line 1 */ + .word EXTI2_IRQHandler /* EXTI Line 2 */ + .word EXTI3_IRQHandler /* EXTI Line 3 */ + .word EXTI4_IRQHandler /* EXTI Line 4 */ + .word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ + .word DMA1_Channel2_IRQHandler /* DMA1 Channel 2 */ + .word DMA1_Channel3_IRQHandler /* DMA1 Channel 3 */ + .word DMA1_Channel4_IRQHandler /* DMA1 Channel 4 */ + .word DMA1_Channel5_IRQHandler /* DMA1 Channel 5 */ + .word DMA1_Channel6_IRQHandler /* DMA1 Channel 6 */ + .word DMA1_Channel7_IRQHandler /* DMA1 Channel 7 */ + .word ADC1_2_IRQHandler /* ADC1_2 */ + .word USB_HP_CAN1_TX_IRQHandler /* USB HP and CAN1 TX */ + .word USB_LP_CAN1_RX0_IRQHandler /* USB LP and CAN1RX0 */ + .word CAN1_RX1_IRQHandler /* CAN1 RX1 */ + .word CAN1_SCE_IRQHandler /* CAN1 SCE */ + .word EXTI9_5_IRQHandler /* EXTI Line 9..5 */ + .word TIM1_BRK_IRQHandler /* TIM1 Break */ + .word TIM1_UP_IRQHandler /* TIM1 Update */ + .word TIM1_TRG_COM_IRQHandler /* TIM1 Trigger and Commutation */ + .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ + .word TIM2_IRQHandler /* TIM2 */ + .word TIM3_IRQHandler /* TIM3 */ + .word TIM4_IRQHandler /* TIM4 */ + .word I2C1_EV_IRQHandler /* I2C1 Event */ + .word I2C1_ER_IRQHandler /* I2C1 Error */ + .word I2C2_EV_IRQHandler /* I2C2 Event */ + .word I2C2_ER_IRQHandler /* I2C2 Error */ + .word SPI1_IRQHandler /* SPI1 */ + .word SPI2_IRQHandler /* SPI2 */ + .word USART1_IRQHandler /* USART1 */ + .word USART2_IRQHandler /* USART2 */ + .word USART3_IRQHandler /* USART3 */ + .word EXTI15_10_IRQHandler /* EXTI Line 15..10 */ + .word RTCAlarm_IRQHandler /* RTC Alarm through EXTI Line */ + .word USBWakeUp_IRQHandler /* USB Wakeup from suspend */ + .word TIM8_BRK_IRQHandler /* TIM8 Break */ + .word TIM8_UP_IRQHandler /* TIM8 Update */ + .word TIM8_TRG_COM_IRQHandler /* TIM8 Trigger and Commutation */ + .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ + .word RNG_IRQHandler /* RNG */ + .word FSMC_IRQHandler /* FSMC */ + .word SDIO_IRQHandler /* SDIO */ + .word TIM5_IRQHandler /* TIM5 */ + .word SPI3_IRQHandler /* SPI3 */ + .word UART4_IRQHandler /* UART4 */ + .word UART5_IRQHandler /* UART5 */ + .word TIM6_IRQHandler /* TIM6 */ + .word TIM7_IRQHandler /* TIM7 */ + .word DMA2_Channel1_IRQHandler /* DMA2 Channel 1 */ + .word DMA2_Channel2_IRQHandler /* DMA2 Channel 2 */ + .word DMA2_Channel3_IRQHandler /* DMA2 Channel 3 */ + .word DMA2_Channel4_IRQHandler /* DMA2 Channel 4 */ + .word DMA2_Channel5_IRQHandler /* DMA2 Channel 5 */ + .word ETH_IRQHandler /* ETH */ + .word ETH_WKUP_IRQHandler /* ETH WakeUp */ + .word CAN2_TX_IRQHandler /* CAN2 TX */ + .word CAN2_RX0_IRQHandler /* CAN2 RX0 */ + .word CAN2_RX1_IRQHandler /* CAN2 RX1 */ + .word CAN2_SCE_IRQHandler /* CAN2 SCE */ + .word OTG_FS_IRQHandler /* OTGFS */ + .word USBHSWakeup_IRQHandler /* USBHS Wakeup */ + .word USBHS_IRQHandler /* USBHS */ + .word DVP_IRQHandler /* DVP */ + .word UART6_IRQHandler /* UART6 */ + .word UART7_IRQHandler /* UART7 */ + .word UART8_IRQHandler /* UART8 */ + .word TIM9_BRK_IRQHandler /* TIM9 Break */ + .word TIM9_UP_IRQHandler /* TIM9 Update */ + .word TIM9_TRG_COM_IRQHandler /* TIM9 Trigger and Commutation */ + .word TIM9_CC_IRQHandler /* TIM9 Capture Compare */ + .word TIM10_BRK_IRQHandler /* TIM10 Break */ + .word TIM10_UP_IRQHandler /* TIM10 Update */ + .word TIM10_TRG_COM_IRQHandler /* TIM10 Trigger and Commutation */ + .word TIM10_CC_IRQHandler /* TIM10 Capture Compare */ + .word DMA2_Channel6_IRQHandler /* DMA2 Channel 6 */ + .word DMA2_Channel7_IRQHandler /* DMA2 Channel 7 */ + .word DMA2_Channel8_IRQHandler /* DMA2 Channel 8 */ + .word DMA2_Channel9_IRQHandler /* DMA2 Channel 9 */ + .word DMA2_Channel10_IRQHandler /* DMA2 Channel 10 */ + .word DMA2_Channel11_IRQHandler /* DMA2 Channel 11 */ + + .option rvc; + + .section .text.vector_handler, "ax", @progbits + .weak NMI_Handler /* NMI */ + .weak HardFault_Handler /* Hard Fault */ + .weak Ecall_M_Mode_Handler /* Ecall M Mode */ + .weak Ecall_U_Mode_Handler /* Ecall U Mode */ + .weak Break_Point_Handler /* Break Point */ + .weak SysTick_Handler /* SysTick */ + .weak SW_handler /* SW */ + .weak WWDG_IRQHandler /* Window Watchdog */ + .weak PVD_IRQHandler /* PVD through EXTI Line detect */ + .weak TAMPER_IRQHandler /* TAMPER */ + .weak RTC_IRQHandler /* RTC */ + .weak FLASH_IRQHandler /* Flash */ + .weak RCC_IRQHandler /* RCC */ + .weak EXTI0_IRQHandler /* EXTI Line 0 */ + .weak EXTI1_IRQHandler /* EXTI Line 1 */ + .weak EXTI2_IRQHandler /* EXTI Line 2 */ + .weak EXTI3_IRQHandler /* EXTI Line 3 */ + .weak EXTI4_IRQHandler /* EXTI Line 4 */ + .weak DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ + .weak DMA1_Channel2_IRQHandler /* DMA1 Channel 2 */ + .weak DMA1_Channel3_IRQHandler /* DMA1 Channel 3 */ + .weak DMA1_Channel4_IRQHandler /* DMA1 Channel 4 */ + .weak DMA1_Channel5_IRQHandler /* DMA1 Channel 5 */ + .weak DMA1_Channel6_IRQHandler /* DMA1 Channel 6 */ + .weak DMA1_Channel7_IRQHandler /* DMA1 Channel 7 */ + .weak ADC1_2_IRQHandler /* ADC1_2 */ + .weak USB_HP_CAN1_TX_IRQHandler /* USB HP and CAN1 TX */ + .weak USB_LP_CAN1_RX0_IRQHandler /* USB LP and CAN1RX0 */ + .weak CAN1_RX1_IRQHandler /* CAN1 RX1 */ + .weak CAN1_SCE_IRQHandler /* CAN1 SCE */ + .weak EXTI9_5_IRQHandler /* EXTI Line 9..5 */ + .weak TIM1_BRK_IRQHandler /* TIM1 Break */ + .weak TIM1_UP_IRQHandler /* TIM1 Update */ + .weak TIM1_TRG_COM_IRQHandler /* TIM1 Trigger and Commutation */ + .weak TIM1_CC_IRQHandler /* TIM1 Capture Compare */ + .weak TIM2_IRQHandler /* TIM2 */ + .weak TIM3_IRQHandler /* TIM3 */ + .weak TIM4_IRQHandler /* TIM4 */ + .weak I2C1_EV_IRQHandler /* I2C1 Event */ + .weak I2C1_ER_IRQHandler /* I2C1 Error */ + .weak I2C2_EV_IRQHandler /* I2C2 Event */ + .weak I2C2_ER_IRQHandler /* I2C2 Error */ + .weak SPI1_IRQHandler /* SPI1 */ + .weak SPI2_IRQHandler /* SPI2 */ + .weak USART1_IRQHandler /* USART1 */ + .weak USART2_IRQHandler /* USART2 */ + .weak USART3_IRQHandler /* USART3 */ + .weak EXTI15_10_IRQHandler /* EXTI Line 15..10 */ + .weak RTCAlarm_IRQHandler /* RTC Alarm through EXTI Line */ + .weak USBWakeUp_IRQHandler /* USB Wakeup from suspend */ + .weak TIM8_BRK_IRQHandler /* TIM8 Break */ + .weak TIM8_UP_IRQHandler /* TIM8 Update */ + .weak TIM8_TRG_COM_IRQHandler /* TIM8 Trigger and Commutation */ + .weak TIM8_CC_IRQHandler /* TIM8 Capture Compare */ + .weak RNG_IRQHandler /* RNG */ + .weak FSMC_IRQHandler /* FSMC */ + .weak SDIO_IRQHandler /* SDIO */ + .weak TIM5_IRQHandler /* TIM5 */ + .weak SPI3_IRQHandler /* SPI3 */ + .weak UART4_IRQHandler /* UART4 */ + .weak UART5_IRQHandler /* UART5 */ + .weak TIM6_IRQHandler /* TIM6 */ + .weak TIM7_IRQHandler /* TIM7 */ + .weak DMA2_Channel1_IRQHandler /* DMA2 Channel 1 */ + .weak DMA2_Channel2_IRQHandler /* DMA2 Channel 2 */ + .weak DMA2_Channel3_IRQHandler /* DMA2 Channel 3 */ + .weak DMA2_Channel4_IRQHandler /* DMA2 Channel 4 */ + .weak DMA2_Channel5_IRQHandler /* DMA2 Channel 5 */ + .weak ETH_IRQHandler /* ETH */ + .weak ETH_WKUP_IRQHandler /* ETH WakeUp */ + .weak CAN2_TX_IRQHandler /* CAN2 TX */ + .weak CAN2_RX0_IRQHandler /* CAN2 RX0 */ + .weak CAN2_RX1_IRQHandler /* CAN2 RX1 */ + .weak CAN2_SCE_IRQHandler /* CAN2 SCE */ + .weak OTG_FS_IRQHandler /* OTGFS */ + .weak USBHSWakeup_IRQHandler /* USBHS Wakeup */ + .weak USBHS_IRQHandler /* USBHS */ + .weak DVP_IRQHandler /* DVP */ + .weak UART6_IRQHandler /* UART6 */ + .weak UART7_IRQHandler /* UART7 */ + .weak UART8_IRQHandler /* UART8 */ + .weak TIM9_BRK_IRQHandler /* TIM9 Break */ + .weak TIM9_UP_IRQHandler /* TIM9 Update */ + .weak TIM9_TRG_COM_IRQHandler /* TIM9 Trigger and Commutation */ + .weak TIM9_CC_IRQHandler /* TIM9 Capture Compare */ + .weak TIM10_BRK_IRQHandler /* TIM10 Break */ + .weak TIM10_UP_IRQHandler /* TIM10 Update */ + .weak TIM10_TRG_COM_IRQHandler /* TIM10 Trigger and Commutation */ + .weak TIM10_CC_IRQHandler /* TIM10 Capture Compare */ + .weak DMA2_Channel6_IRQHandler /* DMA2 Channel 6 */ + .weak DMA2_Channel7_IRQHandler /* DMA2 Channel 7 */ + .weak DMA2_Channel8_IRQHandler /* DMA2 Channel 8 */ + .weak DMA2_Channel9_IRQHandler /* DMA2 Channel 9 */ + .weak DMA2_Channel10_IRQHandler /* DMA2 Channel 10 */ + .weak DMA2_Channel11_IRQHandler /* DMA2 Channel 11 */ + +NMI_Handler: 1: j 1b +HardFault_Handler: 1: j 1b +Ecall_M_Mode_Handler: 1: j 1b +Ecall_U_Mode_Handler: 1: j 1b +Break_Point_Handler: 1: j 1b +SysTick_Handler: 1: j 1b +SW_handler: 1: j 1b +WWDG_IRQHandler: 1: j 1b +PVD_IRQHandler: 1: j 1b +TAMPER_IRQHandler: 1: j 1b +RTC_IRQHandler: 1: j 1b +FLASH_IRQHandler: 1: j 1b +RCC_IRQHandler: 1: j 1b +EXTI0_IRQHandler: 1: j 1b +EXTI1_IRQHandler: 1: j 1b +EXTI2_IRQHandler: 1: j 1b +EXTI3_IRQHandler: 1: j 1b +EXTI4_IRQHandler: 1: j 1b +DMA1_Channel1_IRQHandler: 1: j 1b +DMA1_Channel2_IRQHandler: 1: j 1b +DMA1_Channel3_IRQHandler: 1: j 1b +DMA1_Channel4_IRQHandler: 1: j 1b +DMA1_Channel5_IRQHandler: 1: j 1b +DMA1_Channel6_IRQHandler: 1: j 1b +DMA1_Channel7_IRQHandler: 1: j 1b +ADC1_2_IRQHandler: 1: j 1b +USB_HP_CAN1_TX_IRQHandler: 1: j 1b +USB_LP_CAN1_RX0_IRQHandler: 1: j 1b +CAN1_RX1_IRQHandler: 1: j 1b +CAN1_SCE_IRQHandler: 1: j 1b +EXTI9_5_IRQHandler: 1: j 1b +TIM1_BRK_IRQHandler: 1: j 1b +TIM1_UP_IRQHandler: 1: j 1b +TIM1_TRG_COM_IRQHandler: 1: j 1b +TIM1_CC_IRQHandler: 1: j 1b +TIM2_IRQHandler: 1: j 1b +TIM3_IRQHandler: 1: j 1b +TIM4_IRQHandler: 1: j 1b +I2C1_EV_IRQHandler: 1: j 1b +I2C1_ER_IRQHandler: 1: j 1b +I2C2_EV_IRQHandler: 1: j 1b +I2C2_ER_IRQHandler: 1: j 1b +SPI1_IRQHandler: 1: j 1b +SPI2_IRQHandler: 1: j 1b +USART1_IRQHandler: 1: j 1b +USART2_IRQHandler: 1: j 1b +USART3_IRQHandler: 1: j 1b +EXTI15_10_IRQHandler: 1: j 1b +RTCAlarm_IRQHandler: 1: j 1b +USBWakeUp_IRQHandler: 1: j 1b +TIM8_BRK_IRQHandler: 1: j 1b +TIM8_UP_IRQHandler: 1: j 1b +TIM8_TRG_COM_IRQHandler: 1: j 1b +TIM8_CC_IRQHandler: 1: j 1b +RNG_IRQHandler: 1: j 1b +FSMC_IRQHandler: 1: j 1b +SDIO_IRQHandler: 1: j 1b +TIM5_IRQHandler: 1: j 1b +SPI3_IRQHandler: 1: j 1b +UART4_IRQHandler: 1: j 1b +UART5_IRQHandler: 1: j 1b +TIM6_IRQHandler: 1: j 1b +TIM7_IRQHandler: 1: j 1b +DMA2_Channel1_IRQHandler: 1: j 1b +DMA2_Channel2_IRQHandler: 1: j 1b +DMA2_Channel3_IRQHandler: 1: j 1b +DMA2_Channel4_IRQHandler: 1: j 1b +DMA2_Channel5_IRQHandler: 1: j 1b +ETH_IRQHandler: 1: j 1b +ETH_WKUP_IRQHandler: 1: j 1b +CAN2_TX_IRQHandler: 1: j 1b +CAN2_RX0_IRQHandler: 1: j 1b +CAN2_RX1_IRQHandler: 1: j 1b +CAN2_SCE_IRQHandler: 1: j 1b +OTG_FS_IRQHandler: 1: j 1b +USBHSWakeup_IRQHandler: 1: j 1b +USBHS_IRQHandler: 1: j 1b +DVP_IRQHandler: 1: j 1b +UART6_IRQHandler: 1: j 1b +UART7_IRQHandler: 1: j 1b +UART8_IRQHandler: 1: j 1b +TIM9_BRK_IRQHandler: 1: j 1b +TIM9_UP_IRQHandler: 1: j 1b +TIM9_TRG_COM_IRQHandler: 1: j 1b +TIM9_CC_IRQHandler: 1: j 1b +TIM10_BRK_IRQHandler: 1: j 1b +TIM10_UP_IRQHandler: 1: j 1b +TIM10_TRG_COM_IRQHandler: 1: j 1b +TIM10_CC_IRQHandler: 1: j 1b +DMA2_Channel6_IRQHandler: 1: j 1b +DMA2_Channel7_IRQHandler: 1: j 1b +DMA2_Channel8_IRQHandler: 1: j 1b +DMA2_Channel9_IRQHandler: 1: j 1b +DMA2_Channel10_IRQHandler: 1: j 1b +DMA2_Channel11_IRQHandler: 1: j 1b + + + .section .text.handle_reset,"ax",@progbits + .weak handle_reset + .align 1 +handle_reset: +.option push +.option norelax + csrw mepc, t0 + la gp, __global_pointer$ +.option pop +1: + la sp, _eusrstack +2: + /* Load data section from flash to RAM */ + la a0, _data_lma + la a1, _data_vma + la a2, _edata + bgeu a1, a2, 2f +1: + lw t0, (a0) + sw t0, (a1) + addi a0, a0, 4 + addi a1, a1, 4 + bltu a1, a2, 1b +2: + /* Clear bss section */ + la a0, _sbss + la a1, _ebss + bgeu a0, a1, 2f +1: + sw zero, (a0) + addi a0, a0, 4 + bltu a0, a1, 1b +2: + li t0, 0x1f + csrw 0xbc0, t0 + + /* Enable nested and hardware stack */ + li t0, 0x1f + csrw 0x804, t0 +# csrw 0x804, zero + + /* Enable floating point and interrupt */ + li t0, 0x7800 + csrs mstatus, t0 + + la t0, _vector_base + ori t0, t0, 3 + csrw mtvec, t0 + + jal SystemInit + la t0, entry + csrw mepc, t0 + mret + + diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/cpuport.h b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/cpuport.h new file mode 100644 index 000000000..d24cc474d --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/cpuport.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-09-09 WCH the first version + */ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +#ifndef CPUPORT_H__ +#define CPUPORT_H__ + +/* bytes of register width */ +//#define ARCH_RISCV_FPU +#define ARCH_RISCV_FPU_S + +#ifdef ARCH_CPU_64BIT +#define STORE sd +#define LOAD ld +#define StoreDS "sd" +#define LoadDS "ld" +#define REGBYTES 8 +#define RegLength 8 +#define RegLengthS "8" +#else +#define STORE sw +#define LOAD lw +#define StoreDS "sw" +#define LoadDS "lw" +#define RegLength 4 +#define REGBYTES 4 +#define RegLengthS "4" +#endif + +/* FPU */ +#ifdef ARCH_RISCV_FPU +#ifdef ARCH_RISCV_FPU_D +#define FSTORE fsd +#define FLOAD fld +#define FREGBYTES 8 +#endif +#ifdef ARCH_RISCV_FPU_S +#define FSTORE fsw +#define FLOAD flw +#define FREGBYTES 4 +#endif +#endif + +#endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/interrupt.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/interrupt.c new file mode 100644 index 000000000..45366c612 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/interrupt.c @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ +#include +#include +#include +#include +#include "ch32v30x.h" +#include "cpuport.h" +#include "core_riscv.h" +#ifdef TASK_ISOLATION +#include +#endif + +extern x_ubase interrupt_from_sp; +extern x_ubase interrupt_to_sp; +extern x_ubase interrupt_new_task; + +void sw_setpend(void) +{ + SysTick->CTLR |= (1<<31); +} + +/* + * clear soft interrupt + */ +void sw_clearpend(void) +{ + SysTick->CTLR &= ~(1<<31); +} + +x_base DisableLocalInterrupt() +{ + x_base level; + asm volatile ("csrrci %0, mstatus, 8" : "=r"(level)); + return level; +} + +void EnableLocalInterrupt(x_base level) +{ + asm volatile ("csrw mstatus, %0" :: "r"(level)); +} + +int ArchEnableHwIrq(uint32_t irq_num) +{ + NVIC_SetPriority(irq_num, 1); + NVIC_EnableIRQ(irq_num); +} + +int ArchDisableHwIrq(uint32_t irq_num) +{ + NVIC_DisableIRQ(irq_num); +} + +struct ExceptionStackFrame +{ + uint64_t x1; + uint64_t x2; + uint64_t x3; + uint64_t x4; + uint64_t x5; + uint64_t x6; + uint64_t x7; + uint64_t x8; + uint64_t x9; + uint64_t x10; + uint64_t x11; + uint64_t x12; + uint64_t x13; + uint64_t x14; + uint64_t x15; + uint64_t x16; + uint64_t x17; + uint64_t x18; + uint64_t x19; + uint64_t x20; + uint64_t x21; + uint64_t x22; + uint64_t x23; + uint64_t x24; + uint64_t x25; + uint64_t x26; + uint64_t x27; + uint64_t x28; + uint64_t x29; + uint64_t x30; + uint64_t x31; +}; + +void PrintStackFrame(uintptr_t * sp) +{ + struct ExceptionStackFrame * esf = (struct ExceptionStackFrame *)(sp+1); + + KPrintf("\n=================================================================\n"); + KPrintf("x1 (ra : Return address ) ==> 0x%08x%08x\n", esf->x1 >> 32 , esf->x1 & UINT32_MAX); + KPrintf("x2 (sp : Stack pointer ) ==> 0x%08x%08x\n", esf->x2 >> 32 , esf->x2 & UINT32_MAX); + KPrintf("x3 (gp : Global pointer ) ==> 0x%08x%08x\n", esf->x3 >> 32 , esf->x3 & UINT32_MAX); + KPrintf("x4 (tp : Task pointer ) ==> 0x%08x%08x\n", esf->x4 >> 32 , esf->x4 & UINT32_MAX); + KPrintf("x5 (t0 : Temporary ) ==> 0x%08x%08x\n", esf->x5 >> 32 , esf->x5 & UINT32_MAX); + KPrintf("x6 (t1 : Temporary ) ==> 0x%08x%08x\n", esf->x6 >> 32 , esf->x6 & UINT32_MAX); + KPrintf("x7 (t2 : Temporary ) ==> 0x%08x%08x\n", esf->x7 >> 32 , esf->x7 & UINT32_MAX); + KPrintf("x8 (s0/fp: Save register,frame pointer ) ==> 0x%08x%08x\n", esf->x8 >> 32 , esf->x8 & UINT32_MAX); + KPrintf("x9 (s1 : Save register ) ==> 0x%08x%08x\n", esf->x9 >> 32 , esf->x9 & UINT32_MAX); + KPrintf("x10(a0 : Function argument,return value) ==> 0x%08x%08x\n", esf->x10 >> 32 , esf->x10 & UINT32_MAX); + KPrintf("x11(a1 : Function argument,return value) ==> 0x%08x%08x\n", esf->x11 >> 32 , esf->x11 & UINT32_MAX); + KPrintf("x12(a2 : Function argument ) ==> 0x%08x%08x\n", esf->x12 >> 32 , esf->x12 & UINT32_MAX); + KPrintf("x13(a3 : Function argument ) ==> 0x%08x%08x\n", esf->x13 >> 32 , esf->x13 & UINT32_MAX); + KPrintf("x14(a4 : Function argument ) ==> 0x%08x%08x\n", esf->x14 >> 32 , esf->x14 & UINT32_MAX); + KPrintf("x15(a5 : Function argument ) ==> 0x%08x%08x\n", esf->x15 >> 32 , esf->x15 & UINT32_MAX); + KPrintf("x16(a6 : Function argument ) ==> 0x%08x%08x\n", esf->x16 >> 32 , esf->x16 & UINT32_MAX); + KPrintf("x17(a7 : Function argument ) ==> 0x%08x%08x\n", esf->x17 >> 32 , esf->x17 & UINT32_MAX); + KPrintf("x18(s2 : Save register ) ==> 0x%08x%08x\n", esf->x18 >> 32 , esf->x18 & UINT32_MAX); + KPrintf("x19(s3 : Save register ) ==> 0x%08x%08x\n", esf->x19 >> 32 , esf->x19 & UINT32_MAX); + KPrintf("x20(s4 : Save register ) ==> 0x%08x%08x\n", esf->x20 >> 32 , esf->x20 & UINT32_MAX); + KPrintf("x21(s5 : Save register ) ==> 0x%08x%08x\n", esf->x21 >> 32 , esf->x21 & UINT32_MAX); + KPrintf("x22(s6 : Save register ) ==> 0x%08x%08x\n", esf->x22 >> 32 , esf->x22 & UINT32_MAX); + KPrintf("x23(s7 : Save register ) ==> 0x%08x%08x\n", esf->x23 >> 32 , esf->x23 & UINT32_MAX); + KPrintf("x24(s8 : Save register ) ==> 0x%08x%08x\n", esf->x24 >> 32 , esf->x24 & UINT32_MAX); + KPrintf("x25(s9 : Save register ) ==> 0x%08x%08x\n", esf->x25 >> 32 , esf->x25 & UINT32_MAX); + KPrintf("x26(s10 : Save register ) ==> 0x%08x%08x\n", esf->x26 >> 32 , esf->x26 & UINT32_MAX); + KPrintf("x27(s11 : Save register ) ==> 0x%08x%08x\n", esf->x27 >> 32 , esf->x27 & UINT32_MAX); + KPrintf("x28(t3 : Temporary ) ==> 0x%08x%08x\n", esf->x28 >> 32 , esf->x28 & UINT32_MAX); + KPrintf("x29(t4 : Temporary ) ==> 0x%08x%08x\n", esf->x29 >> 32 , esf->x29 & UINT32_MAX); + KPrintf("x30(t5 : Temporary ) ==> 0x%08x%08x\n", esf->x30 >> 32 , esf->x30 & UINT32_MAX); + KPrintf("x31(t6 : Temporary ) ==> 0x%08x%08x\n", esf->x31 >> 32 , esf->x31 & UINT32_MAX); + KPrintf("=================================================================\n"); +} + +void HwInterruptcontextSwitch(x_ubase from_sp, x_ubase to_sp, struct TaskDescriptor* new_task, void* context) { + interrupt_from_sp = from_sp; + interrupt_to_sp = to_sp; + interrupt_new_task = new_task; + sw_setpend(); +} \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/interrupt_switch.S b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/interrupt_switch.S new file mode 100644 index 000000000..e89fea31e --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/interrupt_switch.S @@ -0,0 +1,115 @@ +#include "cpuport.h" + +.global SW_handler +.align 2 +SW_handler: + /* save all from thread context */ +#ifdef ARCH_RISCV_FPU + addi sp, sp, -32 * FREGBYTES + FSTORE f0, 0 * FREGBYTES(sp) + FSTORE f1, 1 * FREGBYTES(sp) + FSTORE f2, 2 * FREGBYTES(sp) + FSTORE f3, 3 * FREGBYTES(sp) + FSTORE f4, 4 * FREGBYTES(sp) + FSTORE f5, 5 * FREGBYTES(sp) + FSTORE f6, 6 * FREGBYTES(sp) + FSTORE f7, 7 * FREGBYTES(sp) + FSTORE f8, 8 * FREGBYTES(sp) + FSTORE f9, 9 * FREGBYTES(sp) + FSTORE f10, 10 * FREGBYTES(sp) + FSTORE f11, 11 * FREGBYTES(sp) + FSTORE f12, 12 * FREGBYTES(sp) + FSTORE f13, 13 * FREGBYTES(sp) + FSTORE f14, 14 * FREGBYTES(sp) + FSTORE f15, 15 * FREGBYTES(sp) + FSTORE f16, 16 * FREGBYTES(sp) + FSTORE f17, 17 * FREGBYTES(sp) + FSTORE f18, 18 * FREGBYTES(sp) + FSTORE f19, 19 * FREGBYTES(sp) + FSTORE f20, 20 * FREGBYTES(sp) + FSTORE f21, 21 * FREGBYTES(sp) + FSTORE f22, 22 * FREGBYTES(sp) + FSTORE f23, 23 * FREGBYTES(sp) + FSTORE f24, 24 * FREGBYTES(sp) + FSTORE f25, 25 * FREGBYTES(sp) + FSTORE f26, 26 * FREGBYTES(sp) + FSTORE f27, 27 * FREGBYTES(sp) + FSTORE f28, 28 * FREGBYTES(sp) + FSTORE f29, 29 * FREGBYTES(sp) + FSTORE f30, 30 * FREGBYTES(sp) + FSTORE f31, 31 * FREGBYTES(sp) +#endif + + addi sp, sp, -32 * REGBYTES + STORE x5, 5 * REGBYTES(sp) + + /* saved MPIE */ + li t0, 0x80 + STORE t0, 2 * REGBYTES(sp) + + /* Temporarily disable HPE */ + li t0, 0x20 + csrs 0x804, t0 + + STORE x1, 1 * REGBYTES(sp) + STORE x4, 4 * REGBYTES(sp) + STORE x6, 6 * REGBYTES(sp) + STORE x7, 7 * REGBYTES(sp) + STORE x8, 8 * REGBYTES(sp) + STORE x9, 9 * REGBYTES(sp) + STORE x10, 10 * REGBYTES(sp) + STORE x11, 11 * REGBYTES(sp) + STORE x12, 12 * REGBYTES(sp) + STORE x13, 13 * REGBYTES(sp) + STORE x14, 14 * REGBYTES(sp) + STORE x15, 15 * REGBYTES(sp) + STORE x16, 16 * REGBYTES(sp) + STORE x17, 17 * REGBYTES(sp) + STORE x18, 18 * REGBYTES(sp) + STORE x19, 19 * REGBYTES(sp) + STORE x20, 20 * REGBYTES(sp) + STORE x21, 21 * REGBYTES(sp) + STORE x22, 22 * REGBYTES(sp) + STORE x23, 23 * REGBYTES(sp) + STORE x24, 24 * REGBYTES(sp) + STORE x25, 25 * REGBYTES(sp) + STORE x26, 26 * REGBYTES(sp) + STORE x27, 27 * REGBYTES(sp) + STORE x28, 28 * REGBYTES(sp) + STORE x29, 29 * REGBYTES(sp) + STORE x30, 30 * REGBYTES(sp) + STORE x31, 31 * REGBYTES(sp) + + csrr a0, mepc + STORE a0, 0 * REGBYTES(sp) + + /* switch to interrupt stack */ + csrrw sp,mscratch,sp + /* clear interrupt */ + jal sw_clearpend + /* switch to from thread stack */ + csrrw sp,mscratch,sp + + csrr a0, mepc + STORE a0, 0 * REGBYTES(sp) + + la s0, interrupt_from_sp + LOAD s1, 0(s0) + STORE sp, 0(s1) + + la s0, interrupt_to_sp + LOAD s1, 0(s0) + LOAD sp, 0(s1) + + + LOAD a0, 0 * REGBYTES(sp) + csrw mepc, a0 + + LOAD x1, 1 * REGBYTES(sp) + + li t0,0x7800 + csrs mstatus, t0 + LOAD t0, 2*REGBYTES(sp) + csrs mstatus, t0 + + j SwitchKTaskContextExit \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/prepare_rhwstack.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/prepare_rhwstack.c new file mode 100644 index 000000000..b6b686cdb --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/prepare_rhwstack.c @@ -0,0 +1,151 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +#include "cpuport.h" +#include +#include +#include +#include +#ifdef TASK_ISOLATION +#include "encoding.h" +#include +#include +#endif + +volatile x_ubase interrupt_from_sp = 0; +volatile x_ubase interrupt_to_sp = 0; +volatile x_ubase interrupt_new_task = 0; + +struct StackRegisterContext +{ + x_ubase epc; + x_ubase ra; + x_ubase mstatus; + x_ubase gp; + x_ubase tp; + x_ubase t0; + x_ubase t1; + x_ubase t2; + x_ubase s0_fp; + x_ubase s1; + x_ubase a0; + x_ubase a1; + x_ubase a2; + x_ubase a3; + x_ubase a4; + x_ubase a5; + x_ubase a6; + x_ubase a7; + x_ubase s2; + x_ubase s3; + x_ubase s4; + x_ubase s5; + x_ubase s6; + x_ubase s7; + x_ubase s8; + x_ubase s9; + x_ubase s10; + x_ubase s11; + x_ubase t3; + x_ubase t4; + x_ubase t5; + x_ubase t6; + +/* float register */ +#ifdef ARCH_RISCV_FPU + x_ubase f0; /* f0 */ + x_ubase f1; /* f1 */ + x_ubase f2; /* f2 */ + x_ubase f3; /* f3 */ + x_ubase f4; /* f4 */ + x_ubase f5; /* f5 */ + x_ubase f6; /* f6 */ + x_ubase f7; /* f7 */ + x_ubase f8; /* f8 */ + x_ubase f9; /* f9 */ + x_ubase f10; /* f10 */ + x_ubase f11; /* f11 */ + x_ubase f12; /* f12 */ + x_ubase f13; /* f13 */ + x_ubase f14; /* f14 */ + x_ubase f15; /* f15 */ + x_ubase f16; /* f16 */ + x_ubase f17; /* f17 */ + x_ubase f18; /* f18 */ + x_ubase f19; /* f19 */ + x_ubase f20; /* f20 */ + x_ubase f21; /* f21 */ + x_ubase f22; /* f22 */ + x_ubase f23; /* f23 */ + x_ubase f24; /* f24 */ + x_ubase f25; /* f25 */ + x_ubase f26; /* f26 */ + x_ubase f27; /* f27 */ + x_ubase f28; /* f28 */ + x_ubase f29; /* f29 */ + x_ubase f30; /* f30 */ + x_ubase f31; /* f31 */ +#endif +}; + +uint8 KTaskStackSetup(struct TaskDescriptor *task) +{ + struct StackRegisterContext *stack_contex; + int i; + + task->stack_point = (uint8 *)ALIGN_MEN_DOWN((x_ubase)(task->task_base_info.stack_start + task->task_base_info.stack_depth), RegLength); + task->stack_point -= sizeof(struct StackRegisterContext); + stack_contex = (struct StackRegisterContext *)task->stack_point; + + for (i = 0; i < sizeof(struct StackRegisterContext) / sizeof(x_ubase); i++) + ((x_ubase *)stack_contex)[i] = 0xfadeface; + +#ifdef SEPARATE_COMPILE + if (task->task_dync_sched_member.isolation_flag == 1) { + stack_contex->ra = (unsigned long)USERSPACE->us_taskquit; + } else { + stack_contex->ra = (x_ubase)KTaskQuit; + } + +#else + stack_contex->ra = (x_ubase)KTaskQuit; +#endif + + stack_contex->a0 = (x_ubase)task->task_base_info.func_param; + stack_contex->epc = (x_ubase)task->task_base_info.func_entry; + +#ifdef TASK_ISOLATION + stack_contex->tp = (x_ubase)task; + if(task->task_dync_sched_member.isolation_flag == 1) + stack_contex->mstatus = 0x00006080; + else +#endif + stack_contex->mstatus = 0x00007880; + + return EOK; +} + +#ifdef TASK_ISOLATION +void RestoreMstatus(uintptr_t *sp) +{ + struct TaskDescriptor *tid; + tid = (struct TaskDescriptor *)(sp[4]); + if(tid->task_dync_sched_member.isolation_flag == 1 && tid->task_dync_sched_member.isolation_status == 0){ + CLEAR_CSR(mstatus, (MSTATUS_MPP)); +#ifdef MOMERY_PROTECT_ENABLE + mem_access.Load(tid->task_dync_sched_member.isolation); +#endif + }else{ + SET_CSR(mstatus, MSTATUS_MPP); + } +} +#endif diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/switch.S b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/switch.S new file mode 100644 index 000000000..ab1b937a1 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/switch.S @@ -0,0 +1,189 @@ +#include "cpuport.h" + + .global SwitchKTaskContextExit +SwitchKTaskContextExit: + /* resw ra to mepc */ + LOAD a0, 0 * REGBYTES(sp) + csrw mepc, a0 + + LOAD ra, 1 * REGBYTES(sp) + + /* keep machine mode */ + li a0, 0x7800 + csrw mstatus, a0 + /* resume MPIE */ + LOAD a0, 2*REGBYTES(sp) + csrs mstatus, a0 + + LOAD x4, 4 * REGBYTES(sp) + LOAD x5, 5 * REGBYTES(sp) + LOAD x6, 6 * REGBYTES(sp) + LOAD x7, 7 * REGBYTES(sp) + LOAD x8, 8 * REGBYTES(sp) + LOAD x9, 9 * REGBYTES(sp) + LOAD x10, 10 * REGBYTES(sp) + LOAD x11, 11 * REGBYTES(sp) + LOAD x12, 12 * REGBYTES(sp) + LOAD x13, 13 * REGBYTES(sp) + LOAD x14, 14 * REGBYTES(sp) + LOAD x15, 15 * REGBYTES(sp) + LOAD x16, 16 * REGBYTES(sp) + LOAD x17, 17 * REGBYTES(sp) + LOAD x18, 18 * REGBYTES(sp) + LOAD x19, 19 * REGBYTES(sp) + LOAD x20, 20 * REGBYTES(sp) + LOAD x21, 21 * REGBYTES(sp) + LOAD x22, 22 * REGBYTES(sp) + LOAD x23, 23 * REGBYTES(sp) + LOAD x24, 24 * REGBYTES(sp) + LOAD x25, 25 * REGBYTES(sp) + LOAD x26, 26 * REGBYTES(sp) + LOAD x27, 27 * REGBYTES(sp) + LOAD x28, 28 * REGBYTES(sp) + LOAD x29, 29 * REGBYTES(sp) + LOAD x30, 30 * REGBYTES(sp) + LOAD x31, 31 * REGBYTES(sp) + addi sp, sp, 32 * REGBYTES + + /* load float reg */ +#ifdef ARCH_RISCV_FPU + + FLOAD f0, 0 * FREGBYTES(sp) + FLOAD f1, 1 * FREGBYTES(sp) + FLOAD f2, 2 * FREGBYTES(sp) + FLOAD f3, 3 * FREGBYTES(sp) + FLOAD f4, 4 * FREGBYTES(sp) + FLOAD f5, 5 * FREGBYTES(sp) + FLOAD f6, 6 * FREGBYTES(sp) + FLOAD f7, 7 * FREGBYTES(sp) + FLOAD f8, 8 * FREGBYTES(sp) + FLOAD f9, 9 * FREGBYTES(sp) + FLOAD f10, 10 * FREGBYTES(sp) + FLOAD f11, 11 * FREGBYTES(sp) + FLOAD f12, 12 * FREGBYTES(sp) + FLOAD f13, 13 * FREGBYTES(sp) + FLOAD f14, 14 * FREGBYTES(sp) + FLOAD f15, 15 * FREGBYTES(sp) + FLOAD f16, 16 * FREGBYTES(sp) + FLOAD f17, 17 * FREGBYTES(sp) + FLOAD f18, 18 * FREGBYTES(sp) + FLOAD f19, 19 * FREGBYTES(sp) + FLOAD f20, 20 * FREGBYTES(sp) + FLOAD f21, 21 * FREGBYTES(sp) + FLOAD f22, 22 * FREGBYTES(sp) + FLOAD f23, 23 * FREGBYTES(sp) + FLOAD f24, 24 * FREGBYTES(sp) + FLOAD f25, 25 * FREGBYTES(sp) + FLOAD f26, 26 * FREGBYTES(sp) + FLOAD f27, 27 * FREGBYTES(sp) + FLOAD f28, 28 * FREGBYTES(sp) + FLOAD f29, 29 * FREGBYTES(sp) + FLOAD f30, 30 * FREGBYTES(sp) + FLOAD f31, 31 * FREGBYTES(sp) + addi sp, sp, 32 * FREGBYTES +#endif + mret + + .global SwitchKtaskContextTo +SwitchKtaskContextTo: + /* first save interrupt stack */ + la t0, _eusrstack + addi t0, t0, -512 + csrw mscratch,t0 + + LOAD sp, (a0) + MOVE a0, a1 + jal RestoreCpusLockStatus + LOAD a0, 2 * REGBYTES(sp) + csrw mstatus, a0 + j SwitchKTaskContextExit + + .global SwitchKtaskContext +SwitchKtaskContext: + /* switch in thread */ +#ifdef ARCH_RISCV_FPU + addi sp, sp, -32*FREGBYTES + + FSTORE f0, 0 * FREGBYTES(sp) + FSTORE f1, 1 * FREGBYTES(sp) + FSTORE f2, 2 * FREGBYTES(sp) + FSTORE f3, 3 * FREGBYTES(sp) + FSTORE f4, 4 * FREGBYTES(sp) + FSTORE f5, 5 * FREGBYTES(sp) + FSTORE f6, 6 * FREGBYTES(sp) + FSTORE f7, 7 * FREGBYTES(sp) + FSTORE f8, 8 * FREGBYTES(sp) + FSTORE f9, 9 * FREGBYTES(sp) + FSTORE f10, 10 * FREGBYTES(sp) + FSTORE f11, 11 * FREGBYTES(sp) + FSTORE f12, 12 * FREGBYTES(sp) + FSTORE f13, 13 * FREGBYTES(sp) + FSTORE f14, 14 * FREGBYTES(sp) + FSTORE f15, 15 * FREGBYTES(sp) + FSTORE f16, 16 * FREGBYTES(sp) + FSTORE f17, 17 * FREGBYTES(sp) + FSTORE f18, 18 * FREGBYTES(sp) + FSTORE f19, 19 * FREGBYTES(sp) + FSTORE f20, 20 * FREGBYTES(sp) + FSTORE f21, 21 * FREGBYTES(sp) + FSTORE f22, 22 * FREGBYTES(sp) + FSTORE f23, 23 * FREGBYTES(sp) + FSTORE f24, 24 * FREGBYTES(sp) + FSTORE f25, 25 * FREGBYTES(sp) + FSTORE f26, 26 * FREGBYTES(sp) + FSTORE f27, 27 * FREGBYTES(sp) + FSTORE f28, 28 * FREGBYTES(sp) + FSTORE f29, 29 * FREGBYTES(sp) + FSTORE f30, 30 * FREGBYTES(sp) + FSTORE f31, 31 * FREGBYTES(sp) +#endif + + addi sp, sp, -32 * REGBYTES + /* save from sp */ + STORE sp, 0(a0) + /* save ra to epc */ + STORE x1, 0 * REGBYTES(sp) + STORE x1, 1 * REGBYTES(sp) + STORE x5, 5 * REGBYTES(sp) + + csrr t0, mstatus + andi t0, t0, 8 + /* if MIE be enabled,set MPIE */ + beqz t0, 1f + li t0, 0x80 + +1: STORE t0, 2 * REGBYTES(sp) + STORE x4, 4 * REGBYTES(sp) + + STORE x6, 6 * REGBYTES(sp) + STORE x7, 7 * REGBYTES(sp) + STORE x8, 8 * REGBYTES(sp) + STORE x9, 9 * REGBYTES(sp) + STORE x10, 10 * REGBYTES(sp) + STORE x11, 11 * REGBYTES(sp) + STORE x12, 12 * REGBYTES(sp) + STORE x13, 13 * REGBYTES(sp) + STORE x14, 14 * REGBYTES(sp) + STORE x15, 15 * REGBYTES(sp) + STORE x16, 16 * REGBYTES(sp) + STORE x17, 17 * REGBYTES(sp) + STORE x18, 18 * REGBYTES(sp) + STORE x19, 19 * REGBYTES(sp) + STORE x20, 20 * REGBYTES(sp) + STORE x21, 21 * REGBYTES(sp) + STORE x22, 22 * REGBYTES(sp) + STORE x23, 23 * REGBYTES(sp) + STORE x24, 24 * REGBYTES(sp) + STORE x25, 25 * REGBYTES(sp) + STORE x26, 26 * REGBYTES(sp) + STORE x27, 27 * REGBYTES(sp) + STORE x28, 28 * REGBYTES(sp) + STORE x29, 29 * REGBYTES(sp) + STORE x30, 30 * REGBYTES(sp) + STORE x31, 31 * REGBYTES(sp) + + /* get "to" thread sp */ + LOAD sp, (a1) + /*MOVE a0, a2 + jal RestoreCpusLockStatus*/ + j SwitchKTaskContextExit \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/tick.c b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/tick.c new file mode 100644 index 000000000..a273b40d0 --- /dev/null +++ b/Ubiquitous/XiZi/arch/risc-v/ch32v307vct6/tick.c @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +#include +#include +#include +#include "ch32v30x.h" +#include "ch32v30x_it.h" +#include "core_riscv.h" + +void SysTick_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void SysTick_Handler(void) +{ + GET_INT_SP(); + /* enter interrupt */ + x_base level; + level = DisableLocalInterrupt(); + isrManager.done->incCounter(); + EnableLocalInterrupt(level); + SysTick->SR = 0; + TickAndTaskTimesliceUpdate(); + KTaskOsAssignAfterIrq(NONE); + /* leave interrupt */ + level = DisableLocalInterrupt(); + isrManager.done->decCounter(); + EnableLocalInterrupt(level); + FREE_INT_SP(); +} \ No newline at end of file diff --git a/Ubiquitous/XiZi/arch/risc-v/k210/interrupt.c b/Ubiquitous/XiZi/arch/risc-v/k210/interrupt.c index 9edc34fff..8a1d26b9a 100644 --- a/Ubiquitous/XiZi/arch/risc-v/k210/interrupt.c +++ b/Ubiquitous/XiZi/arch/risc-v/k210/interrupt.c @@ -115,7 +115,7 @@ void InitHwinterrupt(void) SET_CSR(mie, MIP_MEIP); } -void InitHwScondaryInterrupt(void) +void InitHwSecondaryInterrupt(void) { int idx; int cpuid; diff --git a/Ubiquitous/XiZi/arch/risc-v/k210/smp_support.c b/Ubiquitous/XiZi/arch/risc-v/k210/smp_support.c index c3ebc8d33..29ea35b35 100644 --- a/Ubiquitous/XiZi/arch/risc-v/k210/smp_support.c +++ b/Ubiquitous/XiZi/arch/risc-v/k210/smp_support.c @@ -65,14 +65,14 @@ void StartupSecondaryCpu(void) cpu2_boot_flag = 0x2018050420191010; } -extern void InitHwScondaryInterrupt(void); +extern void InitHwSecondaryInterrupt(void); extern int InitHwTick(void); extern int EnableHwclintIpi(void); void SecondaryCpuCStart(void) { HwLockSpinlock(&AssignSpinLock); - InitHwScondaryInterrupt(); + InitHwSecondaryInterrupt(); InitHwTick(); diff --git a/Ubiquitous/XiZi/arch/risc-v/shared/prepare_rhwstack.c b/Ubiquitous/XiZi/arch/risc-v/shared/prepare_rhwstack.c index 2d1835abe..e46ccc2b7 100644 --- a/Ubiquitous/XiZi/arch/risc-v/shared/prepare_rhwstack.c +++ b/Ubiquitous/XiZi/arch/risc-v/shared/prepare_rhwstack.c @@ -54,7 +54,43 @@ struct StackRegisterContext x_ubase t3; x_ubase t4; x_ubase t5; - x_ubase t6; + x_ubase t6; + +/* float register */ +#ifdef ARCH_RISCV_FPU + x_ubase f0; /* f0 */ + x_ubase f1; /* f1 */ + x_ubase f2; /* f2 */ + x_ubase f3; /* f3 */ + x_ubase f4; /* f4 */ + x_ubase f5; /* f5 */ + x_ubase f6; /* f6 */ + x_ubase f7; /* f7 */ + x_ubase f8; /* f8 */ + x_ubase f9; /* f9 */ + x_ubase f10; /* f10 */ + x_ubase f11; /* f11 */ + x_ubase f12; /* f12 */ + x_ubase f13; /* f13 */ + x_ubase f14; /* f14 */ + x_ubase f15; /* f15 */ + x_ubase f16; /* f16 */ + x_ubase f17; /* f17 */ + x_ubase f18; /* f18 */ + x_ubase f19; /* f19 */ + x_ubase f20; /* f20 */ + x_ubase f21; /* f21 */ + x_ubase f22; /* f22 */ + x_ubase f23; /* f23 */ + x_ubase f24; /* f24 */ + x_ubase f25; /* f25 */ + x_ubase f26; /* f26 */ + x_ubase f27; /* f27 */ + x_ubase f28; /* f28 */ + x_ubase f29; /* f29 */ + x_ubase f30; /* f30 */ + x_ubase f31; /* f31 */ +#endif }; uint8 KTaskStackSetup(struct TaskDescriptor *task) diff --git a/Ubiquitous/XiZi/arch/risc-v/shared/riscv64_switch.c b/Ubiquitous/XiZi/arch/risc-v/shared/riscv64_switch.c index cabc6612b..c6776812b 100644 --- a/Ubiquitous/XiZi/arch/risc-v/shared/riscv64_switch.c +++ b/Ubiquitous/XiZi/arch/risc-v/shared/riscv64_switch.c @@ -59,11 +59,86 @@ void __attribute__((naked)) SwitchKTaskContextExit() asm volatile (LoadDS " t5, 30 * " RegLengthS "(sp)"); asm volatile (LoadDS " t6, 31 * " RegLengthS "(sp)"); asm volatile ("addi sp, sp, 32 * " RegLengthS ""); + +#ifdef ARCH_RISCV_FPU + asm volatile (FLOAD " f0, 0 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f1, 1 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f2, 2 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f3, 3 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f4, 4 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f5, 5 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f6, 6 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f7, 7 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f8, 8 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f9, 9 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f10, 10 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f11, 11 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f12, 12 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f13, 13 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f14, 14 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f15, 15 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f16, 16 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f17, 17 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f18, 18 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f19, 19 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f20, 20 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f21, 21 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f22, 22 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f23, 23 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f24, 24 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f25, 25 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f26, 26 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f27, 27 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f28, 28 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f29, 29 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f30, 30 *" FREGBYTES "(sp)"); + asm volatile (FLOAD " f31, 31 *" FREGBYTES "(sp)"); + asm volatile ("addi sp, sp, 32 *" FREGBYTES); +#endif + asm volatile ("mret"); } void __attribute__((naked)) SaveMpie() { + +#ifdef ARCH_RISCV_FPV + asm volatile ("addi sp, sp, -32 *" FREGBYTES); + + asm volatile (FSTORE " f0, 0 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f1, 1 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f2, 2 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f3, 3 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f4, 4 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f5, 5 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f6, 6 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f7, 7 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f8, 8 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f9, 9 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f10, 10 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f11, 11 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f12, 12 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f13, 13 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f14, 14 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f15, 15 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f16, 16 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f17, 17 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f18, 18 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f19, 19 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f20, 20 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f21, 21 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f22, 22 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f23, 23 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f24, 24 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f25, 25 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f26, 26 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f27, 27 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f28, 28 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f29, 29 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f30, 30 *" FREGBYTES "(sp)"); + asm volatile (FSTORE " f31, 31 *" FREGBYTES "(sp)"); +#endif + asm volatile (StoreDS " a0, 2 * " RegLengthS "(sp)"); asm volatile (StoreDS " tp, 4 * " RegLengthS "(sp)"); asm volatile (StoreDS " t0, 5 * " RegLengthS "(sp)"); diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/Kconfig b/Ubiquitous/XiZi/board/ch32v307vct6/Kconfig new file mode 100755 index 000000000..c4c769410 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/Kconfig @@ -0,0 +1,31 @@ +mainmenu "XiZi Project Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config KERNEL_DIR + string + option env="KERNEL_ROOT" + default "../.." + +config BOARD_CH32V307VCT6 + bool + select ARCH_RISCV + default y + +source "$KERNEL_DIR/arch/Kconfig" + +menu "ch32v307vct6 feature" + source "$BSP_DIR/third_party_driver/Kconfig" +endmenu + + +menu "Hardware feature" + source "$KERNEL_DIR/resources/Kconfig" +endmenu + +source "$KERNEL_DIR/Kconfig" + + diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/Makefile b/Ubiquitous/XiZi/board/ch32v307vct6/Makefile new file mode 100755 index 000000000..12f414817 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/Makefile @@ -0,0 +1,6 @@ +SRC_FILES := board.c + +SRC_DIR := third_party_driver + + +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/board.c b/Ubiquitous/XiZi/board/ch32v307vct6/board.c new file mode 100644 index 000000000..6bdfc5ac8 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/board.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2006-2019, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2017-07-24 Tanek the first version + * 2018-11-12 Ernest Chen modify copyright + */ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file board.c +* @brief support ch32v307 init configure and start-up +* @version 1.0 +* @author AIIT XUOS Lab +* @date 2022-08-08 +*/ +#include +#include +#include +#include + +#include "xsconfig.h" +#include "ch32v30x.h" +#include "core_riscv.h" + // #include + + // core clock. +extern uint32_t SystemCoreClock; + +static uint32_t _SysTick_Config(uint32_t ticks) +{ + NVIC_SetPriority(SysTicK_IRQn,0xf0); + NVIC_SetPriority(Software_IRQn,0xf0); + NVIC_EnableIRQ(SysTicK_IRQn); + NVIC_EnableIRQ(Software_IRQn); + SysTick->CTLR=0; + SysTick->SR=0; + SysTick->CNT=0; + SysTick->CMP=ticks-1; + SysTick->CTLR=0xF; + return 0; +} + +/** + * This function will initial your board. + */ +void InitBoardHardware() +{ + /* System Tick Configuration */ + _SysTick_Config(SystemCoreClock / TICK_PER_SECOND); + /* initialize memory system */ + InitBoardMemory(MEMORY_START_ADDRESS, (void*)MEMORY_END_ADDRESS); + + InitHwUart(); + InstallConsole("uart1", "uart1_drv", "uart1_dev1"); + + KPrintf("consle init completed.\n"); + KPrintf("board initialization......\n"); + + // KPrintf("memory address range: [0x%08x - 0x%08x], size: %d\n", (x_ubase) MEMORY_START_ADDRESS, (x_ubase) MEMORY_END_ADDRESS, gd32vf103_SRAM_SIZE); + /* initialize memory system */ + + KPrintf("board init done.\n"); + KPrintf("start okernel...\n"); +} + diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/board.h b/Ubiquitous/XiZi/board/ch32v307vct6/board.h new file mode 100644 index 000000000..2745247e0 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/board.h @@ -0,0 +1,50 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file board.h +* @brief define rvstar-board init configure and start-up function +* @version 1.0 +* @author AIIT XUOS Lab +* @date 2021-09-02 +*/ + +/************************************************* +File name: board.h +Description: define ch32v307-board init configure and start-up function +Others: +History: +1. Date: 2022-08-08 +Author: AIIT XUOS Lab +Modification: +1. define rvstar-board InitBoardHardware +2. define rvstar-board data and bss struct +*************************************************/ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include "ch32v30x.h" +#include + +#define CH32V30X_PIN_NUMBERS 100 +/* board configuration */ +#define SRAM_SIZE 64 +#define SRAM_END (0x20000000 + SRAM_SIZE * 1024) + +extern int _ebss; +extern int __stack_size; +#define MEMORY_START_ADDRESS ((void *)&_ebss) +#define MEMORY_END_ADDRESS (SRAM_END-__stack_size) + +void InitBoardHardware(void); + +#endif /* __BOARD_H__ */ diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/config.mk b/Ubiquitous/XiZi/board/ch32v307vct6/config.mk new file mode 100755 index 000000000..5e4eba29b --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/config.mk @@ -0,0 +1,22 @@ + +export CFLAGS := -march=rv32imac -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -g +export AFLAGS := -march=rv32imac -mabi=ilp32 -x assembler-with-cpp -ggdb +export LFLAGS := -march=rv32imac -mabi=ilp32 -nostartfiles -Wl,--gc-sections,-Map=XiZi-ch32v307vct6.map,-cref,-u,_start -T $(BSP_ROOT)/link.ld + +# export CFLAGS := -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -g -std=gnu99 +# export AFLAGS := -march=rv32imac -mabi=ilp32 -x assembler-with-cpp -ggdb +# export LFLAGS := -march=rv32imacxw -mabi=ilp32 -msmall-data-limit=8 -msave-restore -Os -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common -g -T $(BSP_ROOT)/link.ld -nostartfiles -Xlinker --gc-sections -Wl,-Map,"XiZi-ch32v307vct6.map" --specs=nano.specs --specs=nosys.specs + +export APPLFLAGS := -nostartfiles -Wl,--gc-sections,-Map=XiZi-app.map,-cref,-u, -T $(BSP_ROOT)/link_userspace.lds + +export CXXFLAGS := -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -fno-common # -std=gnu99 + +export CROSS_COMPILE ?=/opt/riscv-embedded-gcc/bin/riscv-none-embed- + +export DEFINES := -DHAVE_CCONFIG_H -DHAVE_SIGINFO + +export ARCH = risc-v +export MCU = GH32V307 + + + diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/link.ld b/Ubiquitous/XiZi/board/ch32v307vct6/link.ld new file mode 100644 index 000000000..484c4befe --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/link.ld @@ -0,0 +1,194 @@ +ENTRY( _start) + +__stack_size = 3072; + +PROVIDE( _stack_size = __stack_size ); + + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K +} + + +SECTIONS +{ + + .init : + { + _sinit = .; + . = ALIGN(4); + KEEP(*(SORT_NONE(.init))) + . = ALIGN(4); + _einit = .; + } >FLASH AT>FLASH + + .vector : + { + *(.vector); + . = ALIGN(64); + } >FLASH AT>FLASH + + .text : + { + . = ALIGN(4); + *(.text) + *(.text.*) + *(.rodata) + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t.*) + + /* section information for shell */ + . = ALIGN(4); + _shell_command_start = .; + KEEP (*(shellCommand)) + _shell_command_end = .; + . = ALIGN(4); + + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + __isrtbl_idx_start = .; + KEEP(*(.isrtbl.idx)) + __isrtbl_start = .; + KEEP(*(.isrtbl)) + __isrtbl_end = .; + . = ALIGN(4); + + PROVIDE(g_service_table_start = ABSOLUTE(.)); + KEEP(*(.g_service_table)) + PROVIDE(g_service_table_end = ABSOLUTE(.)); + + *(.gnu.linkonce.t.*) + } >FLASH AT>FLASH + + .fini : + { + KEEP(*(SORT_NONE(.fini))) + . = ALIGN(4); + } >FLASH AT>FLASH + + PROVIDE( _etext = . ); + PROVIDE( _eitcm = . ); + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH AT>FLASH + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH AT>FLASH + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH AT>FLASH + + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } >FLASH AT>FLASH + + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } >FLASH AT>FLASH + + .dalign : + { + . = ALIGN(4); + PROVIDE(_data_vma = .); + } >RAM AT>FLASH + + .dlalign : + { + . = ALIGN(4); + PROVIDE(_data_lma = .); + } >FLASH AT>FLASH + + .data : + { + *(.gnu.linkonce.r.*) + *(.data .data.*) + *(.gnu.linkonce.d.*) + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800 ); + *(.sdata .sdata.*) + *(.sdata2.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); + *(.srodata.cst16) + *(.srodata.cst8) + *(.srodata.cst4) + *(.srodata.cst2) + *(.srodata .srodata.*) + . = ALIGN(4); + PROVIDE( _edata = .); + } >RAM AT>FLASH + + .bss : + { + . = ALIGN(4); + PROVIDE( _sbss = .); + *(.sbss*) + *(.gnu.linkonce.sb.*) + *(.bss*) + *(.gnu.linkonce.b.*) + *(COMMON*) + . = ALIGN(4); + PROVIDE( _ebss = .); + } >RAM AT>FLASH + + PROVIDE( _end = _ebss); + PROVIDE( end = . ); + + .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size : + { + PROVIDE( _heap_end = . ); + . = ALIGN(4); + PROVIDE(_susrstack = . ); + . = . + __stack_size; + PROVIDE( _eusrstack = .); + } >RAM + +} + + + diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/Kconfig b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/Kconfig new file mode 100755 index 000000000..ef7bb1505 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/Kconfig @@ -0,0 +1,18 @@ + +menuconfig BSP_USING_UART + bool "Using UART device" + default y + select RESOURCES_SERIAL + if BSP_USING_UART + source "$BSP_DIR/third_party_driver/uart/Kconfig" + endif + +menuconfig BSP_USING_GPIO + bool "Using GPIO" + default y + select RESOURCES_SERIAL + if BSP_USING_GPIO + source "$BSP_DIR/third_party_driver/gpio/Kconfig" + endif + + \ No newline at end of file diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/Makefile b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/Makefile new file mode 100644 index 000000000..c51ba55d7 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/Makefile @@ -0,0 +1,12 @@ +SRC_FILES := +SRC_DIR := + +ifeq ($(CONFIG_BSP_USING_UART),y) + SRC_DIR += uart +endif + +ifeq ($(CONFIG_BSP_USING_GPIO),y) + SRC_DIR += gpio +endif + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/gpio/Kconfig b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/gpio/Kconfig new file mode 100755 index 000000000..35dce7392 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/gpio/Kconfig @@ -0,0 +1,11 @@ +config PIN_BUS_NAME + string "pin bus name" + default "pin" + +config PIN_DRIVER_NAME + string "pin driver name" + default "pin_drv" + +config PIN_DEVICE_NAME + string "pin device name" + default "pin_dev" diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/gpio/Makefile b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/gpio/Makefile new file mode 100644 index 000000000..df52367af --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/gpio/Makefile @@ -0,0 +1,3 @@ +SRC_FILES := + +include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/include/ch32v30x_usart.h b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/include/ch32v30x_usart.h new file mode 100755 index 000000000..2867a0259 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/include/ch32v30x_usart.h @@ -0,0 +1,195 @@ +/********************************** (C) COPYRIGHT ******************************* +* File Name : ch32v30x_usart.h +* Author : WCH +* Version : V1.0.0 +* Date : 2021/06/06 +* Description : This file contains all the functions prototypes for the +* USART firmware library. +* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. +* SPDX-License-Identifier: Apache-2.0 +*******************************************************************************/ +#ifndef __CH32V30x_USART_H +#define __CH32V30x_USART_H + +#ifdef __cplusplus + extern "C" { +#endif + +#include "ch32v30x.h" + + +/* USART Init Structure definition */ +typedef struct +{ + uint32_t USART_BaudRate; /* This member configures the USART communication baud rate. + The baud rate is computed using the following formula: + - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate))) + - FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 16) + 0.5 */ + + uint16_t USART_WordLength; /* Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_Word_Length */ + + uint16_t USART_StopBits; /* Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_Stop_Bits */ + + uint16_t USART_Parity; /* Specifies the parity mode. + This parameter can be a value of @ref USART_Parity + @note When parity is enabled, the computed parity is inserted + at the MSB position of the transmitted data (9th bit when + the word length is set to 9 data bits; 8th bit when the + word length is set to 8 data bits). */ + + uint16_t USART_Mode; /* Specifies wether the Receive or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_Mode */ + + uint16_t USART_HardwareFlowControl; /* Specifies wether the hardware flow control mode is enabled + or disabled. + This parameter can be a value of @ref USART_Hardware_Flow_Control */ +} USART_InitTypeDef; + +/* USART Clock Init Structure definition */ +typedef struct +{ + + uint16_t USART_Clock; /* Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_Clock */ + + uint16_t USART_CPOL; /* Specifies the steady state value of the serial clock. + This parameter can be a value of @ref USART_Clock_Polarity */ + + uint16_t USART_CPHA; /* Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_Clock_Phase */ + + uint16_t USART_LastBit; /* Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_Last_Bit */ +} USART_ClockInitTypeDef; + +/* USART_Word_Length */ +#define USART_WordLength_8b ((uint16_t)0x0000) +#define USART_WordLength_9b ((uint16_t)0x1000) + +/* USART_Stop_Bits */ +#define USART_StopBits_1 ((uint16_t)0x0000) +#define USART_StopBits_0_5 ((uint16_t)0x1000) +#define USART_StopBits_2 ((uint16_t)0x2000) +#define USART_StopBits_1_5 ((uint16_t)0x3000) + +/* USART_Parity */ +#define USART_Parity_No ((uint16_t)0x0000) +#define USART_Parity_Even ((uint16_t)0x0400) +#define USART_Parity_Odd ((uint16_t)0x0600) + +/* USART_Mode */ +#define USART_Mode_Rx ((uint16_t)0x0004) +#define USART_Mode_Tx ((uint16_t)0x0008) + +/* USART_Hardware_Flow_Control */ +#define USART_HardwareFlowControl_None ((uint16_t)0x0000) +#define USART_HardwareFlowControl_RTS ((uint16_t)0x0100) +#define USART_HardwareFlowControl_CTS ((uint16_t)0x0200) +#define USART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300) + +/* USART_Clock */ +#define USART_Clock_Disable ((uint16_t)0x0000) +#define USART_Clock_Enable ((uint16_t)0x0800) + +/* USART_Clock_Polarity */ +#define USART_CPOL_Low ((uint16_t)0x0000) +#define USART_CPOL_High ((uint16_t)0x0400) + +/* USART_Clock_Phase */ +#define USART_CPHA_1Edge ((uint16_t)0x0000) +#define USART_CPHA_2Edge ((uint16_t)0x0200) + +/* USART_Last_Bit */ +#define USART_LastBit_Disable ((uint16_t)0x0000) +#define USART_LastBit_Enable ((uint16_t)0x0100) + +/* USART_Interrupt_definition */ +#define USART_IT_PE ((uint16_t)0x0028) +#define USART_IT_TXE ((uint16_t)0x0727) +#define USART_IT_TC ((uint16_t)0x0626) +#define USART_IT_RXNE ((uint16_t)0x0525) +#define USART_IT_ORE_RX ((uint16_t)0x0325) +#define USART_IT_IDLE ((uint16_t)0x0424) +#define USART_IT_LBD ((uint16_t)0x0846) +#define USART_IT_CTS ((uint16_t)0x096A) +#define USART_IT_ERR ((uint16_t)0x0060) +#define USART_IT_ORE_ER ((uint16_t)0x0360) +#define USART_IT_NE ((uint16_t)0x0260) +#define USART_IT_FE ((uint16_t)0x0160) + +#define USART_IT_ORE USART_IT_ORE_ER + +/* USART_DMA_Requests */ +#define USART_DMAReq_Tx ((uint16_t)0x0080) +#define USART_DMAReq_Rx ((uint16_t)0x0040) + +/* USART_WakeUp_methods */ +#define USART_WakeUp_IdleLine ((uint16_t)0x0000) +#define USART_WakeUp_AddressMark ((uint16_t)0x0800) + +/* USART_LIN_Break_Detection_Length */ +#define USART_LINBreakDetectLength_10b ((uint16_t)0x0000) +#define USART_LINBreakDetectLength_11b ((uint16_t)0x0020) + +/* USART_IrDA_Low_Power */ +#define USART_IrDAMode_LowPower ((uint16_t)0x0004) +#define USART_IrDAMode_Normal ((uint16_t)0x0000) + +/* USART_Flags */ +#define USART_FLAG_CTS ((uint16_t)0x0200) +#define USART_FLAG_LBD ((uint16_t)0x0100) +#define USART_FLAG_TXE ((uint16_t)0x0080) +#define USART_FLAG_TC ((uint16_t)0x0040) +#define USART_FLAG_RXNE ((uint16_t)0x0020) +#define USART_FLAG_IDLE ((uint16_t)0x0010) +#define USART_FLAG_ORE ((uint16_t)0x0008) +#define USART_FLAG_NE ((uint16_t)0x0004) +#define USART_FLAG_FE ((uint16_t)0x0002) +#define USART_FLAG_PE ((uint16_t)0x0001) + + +void USART_DeInit(USART_TypeDef* USARTx); +void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); +void USART_StructInit(USART_InitTypeDef* USART_InitStruct); +void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct); +void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState); +void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState); +void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address); +void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp); +void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength); +void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); +uint16_t USART_ReceiveData(USART_TypeDef* USARTx); +void USART_SendBreak(USART_TypeDef* USARTx); +void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime); +void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler); +void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState); +void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode); +void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState); +FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); +void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG); +ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); +void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT); + +#ifdef __cplusplus +} +#endif + +#endif + + + + + + + diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/include/connect_uart.h b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/include/connect_uart.h new file mode 100644 index 000000000..3e2e4aadf --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/include/connect_uart.h @@ -0,0 +1,38 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file connect_uart.h +* @brief define rvstar uart function +* @version 1.0 +* @author AIIT XUOS Lab +* @date 2022-08-01 +*/ + +#ifndef CONNECT_UART_H +#define CONNECT_UART_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + + +int InitHwUart(void); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/Kconfig b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/Kconfig new file mode 100755 index 000000000..54c333882 --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/Kconfig @@ -0,0 +1,14 @@ +menuconfig BSP_USING_UART1 + bool "Enable UART1" + default y + if BSP_USING_UART1 + config SERIAL_BUS_NAME_1 + string "serial bus name" + default "uart1" + config SERIAL_DRV_NAME_1 + string "serial bus driver name" + default "uart1_drv" + config SERIAL_1_DEVICE_NAME_0 + string "serial bus device name" + default "uart1_dev1" + endif diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/Makefile b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/Makefile new file mode 100755 index 000000000..d75c1d8bc --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/Makefile @@ -0,0 +1,4 @@ +SRC_FILES := connect_uart.c + + +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/connect_uart.c b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/connect_uart.c new file mode 100644 index 000000000..0725728ab --- /dev/null +++ b/Ubiquitous/XiZi/board/ch32v307vct6/third_party_driver/uart/connect_uart.c @@ -0,0 +1,396 @@ +/* +* Copyright (c) 2020 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ + +/** +* @file connect_usart.c +* @brief supportrvstar-board uart function and register to bus framework +* @version 1.0 +* @author AIIT XUOS Lab +* @date 2022-08-01 +*/ + +#include +#include "ch32v30x.h" +#include "connect_uart.h" +#include "ch32v30x_usart.h" + +/* uart driver */ + +static void SerialCfgParamCheck(struct SerialCfgParam* serial_cfg_default, struct SerialCfgParam* serial_cfg_new) +{ + struct SerialDataCfg *data_cfg_default = &serial_cfg_default->data_cfg; + struct SerialDataCfg *data_cfg_new = &serial_cfg_new->data_cfg; + + if ((data_cfg_default->serial_baud_rate != data_cfg_new->serial_baud_rate) && (data_cfg_new->serial_baud_rate)) { + data_cfg_default->serial_baud_rate = data_cfg_new->serial_baud_rate; + } + + if ((data_cfg_default->serial_bit_order != data_cfg_new->serial_bit_order) && (data_cfg_new->serial_bit_order)) { + data_cfg_default->serial_bit_order = data_cfg_new->serial_bit_order; + } + + if ((data_cfg_default->serial_buffer_size != data_cfg_new->serial_buffer_size) && (data_cfg_new->serial_buffer_size)) { + data_cfg_default->serial_buffer_size = data_cfg_new->serial_buffer_size; + } + + if ((data_cfg_default->serial_data_bits != data_cfg_new->serial_data_bits) && (data_cfg_new->serial_data_bits)) { + data_cfg_default->serial_data_bits = data_cfg_new->serial_data_bits; + } + + if ((data_cfg_default->serial_invert_mode != data_cfg_new->serial_invert_mode) && (data_cfg_new->serial_invert_mode)) { + data_cfg_default->serial_invert_mode = data_cfg_new->serial_invert_mode; + } + + if ((data_cfg_default->serial_parity_mode != data_cfg_new->serial_parity_mode) && (data_cfg_new->serial_parity_mode)) { + data_cfg_default->serial_parity_mode = data_cfg_new->serial_parity_mode; + } + + if ((data_cfg_default->serial_stop_bits != data_cfg_new->serial_stop_bits) && (data_cfg_new->serial_stop_bits)) { + data_cfg_default->serial_stop_bits = data_cfg_new->serial_stop_bits; + } + + if ((data_cfg_default->serial_timeout != data_cfg_new->serial_timeout) && (data_cfg_new->serial_timeout)) { + data_cfg_default->serial_timeout = data_cfg_new->serial_timeout; + } +} + +static void UartIsr(struct SerialDriver *serial_drv, struct SerialHardwareDevice *serial_dev) +{ + struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data; + + if (RESET != USART_GetITStatus((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, USART_IT_RXNE)) + { + SerialSetIsr(serial_dev, SERIAL_EVENT_RX_IND); + USART_ClearITPendingBit((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, USART_IT_RXNE); + } +} + +static uint32 SerialInit(struct SerialDriver *serial_drv, struct BusConfigureInfo *configure_info) +{ + NULL_PARAM_CHECK(serial_drv); + struct SerialCfgParam* serial_cfg = (struct SerialCfgParam*)serial_drv->private_data; + // struct UsartHwCfg *serial_hw_cfg = (struct UsartHwCfg *)serial_cfg->hw_cfg.private_data; + + if (configure_info->private_data) { + struct SerialCfgParam *serial_cfg_new = (struct SerialCfgParam *)configure_info->private_data; + SerialCfgParamCheck(serial_cfg, serial_cfg_new); + } + + struct SerialHardwareDevice *serial_dev = (struct SerialHardwareDevice *)serial_drv->driver.owner_bus->owner_haldev; + struct SerialDevParam *dev_param = (struct SerialDevParam *)serial_dev->haldev.private_data; + + // config serial receive sem timeout + dev_param->serial_timeout = serial_cfg->data_cfg.serial_timeout; + + // init usart type def + // USART_DeInit((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base); + USART_InitTypeDef usart_init_struct; + usart_init_struct.USART_BaudRate = serial_cfg->data_cfg.serial_baud_rate; + + switch (serial_cfg->data_cfg.serial_data_bits) + { + case DATA_BITS_8: + usart_init_struct.USART_WordLength = USART_WordLength_8b; + break; + + case DATA_BITS_9: + usart_init_struct.USART_WordLength = USART_WordLength_9b; + break; + default: + usart_init_struct.USART_WordLength = USART_WordLength_8b; + break; + } + + switch (serial_cfg->data_cfg.serial_stop_bits) + { + case STOP_BITS_1: + usart_init_struct.USART_StopBits = USART_StopBits_1; + break; + case STOP_BITS_2: + usart_init_struct.USART_StopBits = USART_StopBits_2; + break; + default: + usart_init_struct.USART_StopBits = USART_StopBits_1; + break; + } + + switch (serial_cfg->data_cfg.serial_parity_mode) + { + case PARITY_NONE: + usart_init_struct.USART_Parity = USART_Parity_No; + break; + case PARITY_ODD: + usart_init_struct.USART_Parity = USART_Parity_Odd; + break; + case PARITY_EVEN: + usart_init_struct.USART_Parity = USART_Parity_Even; + break; + default: + usart_init_struct.USART_Parity = USART_Parity_No; + break; + } + + usart_init_struct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; + + if (serial_cfg->hw_cfg.serial_register_base == USART1) { + // GPIO_InitTypeDef gpio_init_struct; + // RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); + // gpio_init_struct.GPIO_Pin = GPIO_Pin_9; + // gpio_init_struct.GPIO_Speed = GPIO_Speed_50MHz; + // gpio_init_struct.GPIO_Mode = GPIO_Mode_AF_PP; + // GPIO_Init(GPIOA, &gpio_init_struct); + // gpio_init_struct.GPIO_Pin = GPIO_Pin_10; + // gpio_init_struct.GPIO_Speed = GPIO_Speed_50MHz; + // gpio_init_struct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + // GPIO_Init(GPIOA, &gpio_init_struct); + // USART_Init((USART_TypeDef*)serial_cfg->hw_cfg.serial_register_base, &usart_init_struct); + // USART_Cmd(serial_cfg->hw_cfg.serial_register_base, ENABLE); + } + + // usart_hardware_flow_rts_config(serial_cfg->hw_cfg.serial_register_base, USART_RTS_DISABLE); + // usart_hardware_flow_cts_config(serial_cfg->hw_cfg.serial_register_base, USART_CTS_DISABLE); + + + return EOK; +} + +static uint32 SerialConfigure(struct SerialDriver *serial_drv, int serial_operation_cmd) +{ + NULL_PARAM_CHECK(serial_drv); + + struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_drv->private_data; + + switch (serial_operation_cmd) + { + case OPER_CLR_INT: + NVIC_DisableIRQ(serial_cfg->hw_cfg.serial_irq_interrupt); + USART_ITConfig((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, USART_IT_RXNE, DISABLE); + break; + case OPER_SET_INT: + NVIC_EnableIRQ(serial_cfg->hw_cfg.serial_irq_interrupt); + /* enable USART0 receive interrupt */ + USART_ITConfig((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, USART_IT_RXNE, ENABLE); + break; + } + + return EOK; +} + +static uint32 SerialDrvConfigure(void *drv, struct BusConfigureInfo *configure_info) +{ + NULL_PARAM_CHECK(drv); + NULL_PARAM_CHECK(configure_info); + + x_err_t ret = EOK; + int serial_operation_cmd; + struct SerialDriver *serial_drv = (struct SerialDriver *)drv; + + switch (configure_info->configure_cmd) + { + case OPE_INT: + ret = SerialInit(serial_drv, configure_info); + break; + case OPE_CFG: + serial_operation_cmd = *(int *)configure_info->private_data; + ret = SerialConfigure(serial_drv, serial_operation_cmd); + break; + default: + break; + } + + return ret; +} + +static int SerialPutChar(struct SerialHardwareDevice *serial_dev, char c) +{ + struct SerialCfgParam* serial_cfg = (struct SerialCfgParam*)serial_dev->private_data; + + while (USART_GetFlagStatus((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, USART_FLAG_TXE) == RESET); + USART_SendData((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, (uint8_t) c); + return 0; +} + +static int SerialGetChar(struct SerialHardwareDevice *serial_dev) +{ + int ch = -1; + struct SerialCfgParam *serial_cfg = (struct SerialCfgParam *)serial_dev->private_data; + + if (RESET != USART_GetFlagStatus((USART_TypeDef *)serial_cfg->hw_cfg.serial_register_base, USART_FLAG_RXNE)) + { + ch = USART_ReceiveData((USART_TypeDef*)serial_cfg->hw_cfg.serial_register_base) & 0xff; + } + + return ch; +} + +static const struct SerialDataCfg data_cfg_init = +{ + .serial_baud_rate = BAUD_RATE_115200, + .serial_data_bits = DATA_BITS_8, + .serial_stop_bits = STOP_BITS_1, + .serial_parity_mode = PARITY_NONE, + .serial_bit_order = BIT_ORDER_LSB, + .serial_invert_mode = NRZ_NORMAL, + .serial_buffer_size = SERIAL_RB_BUFSZ, + .serial_timeout = WAITING_FOREVER, +}; + +/*manage the serial device operations*/ +static const struct SerialDrvDone drv_done = +{ + .init = SerialInit, + .configure = SerialConfigure, +}; + +/*manage the serial device hal operations*/ +static struct SerialHwDevDone hwdev_done = +{ + .put_char = SerialPutChar, + .get_char = SerialGetChar, +}; + +static int BoardSerialBusInit(struct SerialBus *serial_bus, struct SerialDriver *serial_driver, const char *bus_name, const char *drv_name) +{ + x_err_t ret = EOK; + + /*Init the serial bus */ + ret = SerialBusInit(serial_bus, bus_name); + if (EOK != ret) { + KPrintf("InitHwUart SerialBusInit error %d\n", ret); + return ERROR; + } + + /*Init the serial driver*/ + ret = SerialDriverInit(serial_driver, drv_name); + if (EOK != ret) { + KPrintf("InitHwUart SerialDriverInit error %d\n", ret); + return ERROR; + } + + /*Attach the serial driver to the serial bus*/ + ret = SerialDriverAttachToBus(drv_name, bus_name); + if (EOK != ret) { + KPrintf("InitHwUart SerialDriverAttachToBus error %d\n", ret); + return ERROR; + } + + return ret; +} + +/*Attach the serial device to the serial bus*/ +static int BoardSerialDevBend(struct SerialHardwareDevice *serial_device, void *serial_param, const char *bus_name, const char *dev_name) +{ + x_err_t ret = EOK; + + ret = SerialDeviceRegister(serial_device, serial_param, dev_name); + if (EOK != ret) { + KPrintf("InitHwUart SerialDeviceInit device %s error %d\n", dev_name, ret); + return ERROR; + } + + ret = SerialDeviceAttachToBus(dev_name, bus_name); + if (EOK != ret) { + KPrintf("InitHwUart SerialDeviceAttachToBus device %s error %d\n", dev_name, ret); + return ERROR; + } + + return ret; +} + +#ifdef BSP_USING_UART1 +struct SerialDriver serial_driver_1; +struct SerialHardwareDevice serial_device_1; + +void USART1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); +void USART1_IRQHandler(void) +{ + GET_INT_SP(); + x_base level; + level= DisableLocalInterrupt(); + isrManager.done->incCounter(); + EnableLocalInterrupt(level); + UartIsr(&serial_driver_1, &serial_device_1); + level = DisableLocalInterrupt(); + isrManager.done->decCounter(); + EnableLocalInterrupt(level); + FREE_INT_SP(); +} +#endif + +int InitHwUart(void) +{ + x_err_t ret = EOK; + +#ifdef BSP_USING_UART1 + static struct SerialBus serial_bus; + memset(&serial_bus, 0, sizeof(struct SerialBus)); + + memset(&serial_driver_1, 0, sizeof(struct SerialDriver)); + + memset(&serial_device_1, 0, sizeof(struct SerialHardwareDevice)); + + static struct SerialCfgParam serial_cfg; + memset(&serial_cfg, 0, sizeof(struct SerialCfgParam)); + + static struct SerialDevParam serial_dev_param; + memset(&serial_dev_param, 0, sizeof(struct SerialDevParam)); + + serial_driver_1.drv_done = &drv_done; + serial_driver_1.configure = &SerialDrvConfigure; + serial_device_1.hwdev_done = &hwdev_done; + + serial_cfg.data_cfg = data_cfg_init; + + serial_cfg.hw_cfg.serial_register_base = USART1; + serial_cfg.hw_cfg.serial_irq_interrupt = USART1_IRQn; + + serial_driver_1.private_data = (void *)&serial_cfg; + + serial_dev_param.serial_work_mode = SIGN_OPER_INT_RX; + serial_device_1.haldev.private_data = (void *)&serial_dev_param; + + ret = BoardSerialBusInit(&serial_bus, &serial_driver_1, SERIAL_BUS_NAME_1, SERIAL_DRV_NAME_1); + if (EOK != ret) { + KPrintf("InitHwUart uarths error ret %u\n", ret); + return ERROR; + } + + ret = BoardSerialDevBend(&serial_device_1, (void *)&serial_cfg, SERIAL_BUS_NAME_1, SERIAL_1_DEVICE_NAME_0); + if (EOK != ret) { + KPrintf("InitHwUart uarths error ret %u\n", ret); + return ERROR; + } + + GPIO_InitTypeDef gpio_init_struct; + RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); + gpio_init_struct.GPIO_Pin = GPIO_Pin_9; + gpio_init_struct.GPIO_Speed = GPIO_Speed_50MHz; + gpio_init_struct.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_Init(GPIOA, &gpio_init_struct); + gpio_init_struct.GPIO_Pin = GPIO_Pin_10; + gpio_init_struct.GPIO_Speed = GPIO_Speed_50MHz; + gpio_init_struct.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_Init(GPIOA, &gpio_init_struct); + + USART_InitTypeDef usart_init_struct; + usart_init_struct.USART_BaudRate = 115200; + usart_init_struct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; + usart_init_struct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; + usart_init_struct.USART_WordLength = USART_WordLength_8b; + usart_init_struct.USART_StopBits = USART_StopBits_1; + usart_init_struct.USART_Parity = USART_Parity_No; + USART_Init((USART_TypeDef *)serial_cfg.hw_cfg.serial_register_base, &usart_init_struct); + USART_Cmd((USART_TypeDef *)serial_cfg.hw_cfg.serial_register_base, ENABLE); +#endif + + return ret; +} \ No newline at end of file diff --git a/Ubiquitous/XiZi/kernel/thread/appstartup.c b/Ubiquitous/XiZi/kernel/thread/appstartup.c index 78d0443bf..718a63a66 100644 --- a/Ubiquitous/XiZi/kernel/thread/appstartup.c +++ b/Ubiquitous/XiZi/kernel/thread/appstartup.c @@ -64,8 +64,8 @@ void CreateMainTask(void) if(main < 0) { KPrintf("main create failed ...%s %d.\n",__FUNCTION__,__LINE__); return; - } - + } + StartupKTask(main); } diff --git a/Ubiquitous/XiZi/link.mk b/Ubiquitous/XiZi/link.mk index 4a9106b8a..55f5c40c8 100644 --- a/Ubiquitous/XiZi/link.mk +++ b/Ubiquitous/XiZi/link.mk @@ -6,4 +6,5 @@ $(TARGET): $(OBJS) @$(CROSS_COMPILE)g++ -o $@ $($(LINK_FLAGS)) $(OBJS) $(LINK_LWIP) $(LINK_MUSLLIB) $(LIBCC) @echo ------------------------------------------------ @$(CROSS_COMPILE)objcopy -O binary $@ XiZi-$(BOARD)$(COMPILE_TYPE).bin + @$(CROSS_COMPILE)objcopy -O ihex $@ XiZi-$(BOARD)$(COMPILE_TYPE).hex @$(CROSS_COMPILE)size $@ \ No newline at end of file diff --git a/Ubiquitous/XiZi/npm-debug.log b/Ubiquitous/XiZi/npm-debug.log new file mode 100644 index 000000000..73cd2b0a6 --- /dev/null +++ b/Ubiquitous/XiZi/npm-debug.log @@ -0,0 +1,11902 @@ +2001 silly gunzTarPerm extractEntry node_modules/wscript-avoider/scripts/run-travis.sh +2002 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh +2003 silly gunzTarPerm extractEntry node_modules/wscript-avoider/scripts/travis.sh +2004 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.d.ts +2005 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.d.ts +2006 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/array.d.ts +2007 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/array.d.ts +2008 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/assert.d.ts +2009 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/assign.d.ts +2010 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +2011 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/providers/async.d.ts +2012 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/async.d.ts +2013 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/async.d.ts +2014 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/async.d.ts +2015 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/async.d.ts +2016 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/blank-drop.d.ts +2017 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/block-drop.d.ts +2018 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/context/block-mode.d.ts +2019 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/block.d.ts +2020 silly gunzTarPerm extractEntry node_modules/any-promise/register/bluebird.d.ts +2021 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/boolean.d.ts +2022 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/break.d.ts +2023 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/browser.d.ts +2024 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/cache/cache.d.ts +2025 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/capture.d.ts +2026 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/case.d.ts +2027 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/character.d.ts +2028 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/collection.d.ts +2029 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/comment.d.ts +2030 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +2031 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/common.d.ts +2032 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/comparable.d.ts +2033 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/constants.d.ts +2034 silly gunzTarPerm extractEntry node_modules/socks/typings/common/constants.d.ts +2035 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/context/context.d.ts +2036 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/continue.d.ts +2037 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/cycle.d.ts +2038 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/date.d.ts +2039 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/decrement.d.ts +2040 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/deep.d.ts +2041 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/delimited-token.d.ts +2042 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/drop.d.ts +2043 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/echo.d.ts +2044 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/emitter.d.ts +2045 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/empty-drop.d.ts +2046 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/entry.d.ts +2047 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/transformers/entry.d.ts +2048 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/errno.d.ts +2049 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/error.d.ts +2050 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/error.d.ts +2051 silly gunzTarPerm extractEntry node_modules/any-promise/register/es6-promise.d.ts +2052 silly gunzTarPerm extractEntry node_modules/fastq/test/example.ts +2053 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/expression.d.ts +2054 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/filter-arg.d.ts +2055 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter-impl-options.d.ts +2056 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter-impl.d.ts +2057 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter-map.d.ts +2058 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/filter-token.d.ts +2059 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter.d.ts +2060 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/for.d.ts +2061 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/forloop-drop.d.ts +2062 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +2063 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2064 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +2065 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/fs.d.ts +2066 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/fs.d.ts +2067 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/hash-token.d.ts +2068 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/hash.d.ts +2069 silly gunzTarPerm extractEntry node_modules/socks/typings/common/helpers.d.ts +2070 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/html-token.d.ts +2071 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/html.d.ts +2072 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/html.d.ts +2073 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/identifier-token.d.ts +2074 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/if.d.ts +2075 silly gunzTarPerm extractEntry node_modules/any-promise/implementation.d.ts +2076 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/include.d.ts +2077 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/increment.d.ts +2078 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/index.d.ts +2079 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/types/index.d.ts +2080 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2081 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/index.d.ts +2082 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/types/index.d.ts +2083 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/index.d.ts +2084 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/index.d.ts +2085 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/types/index.d.ts +2086 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/dist/index.d.ts +2087 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.d.ts +2088 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/index.d.ts +2089 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/index.d.ts +2090 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.d.ts +2091 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.d.ts +2092 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.d.ts +2093 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.d.ts +2094 silly gunzTarPerm extractEntry node_modules/any-promise/index.d.ts +2095 silly gunzTarPerm extractEntry node_modules/array-union/index.d.ts +2096 silly gunzTarPerm extractEntry node_modules/base64-js/index.d.ts +2097 silly gunzTarPerm extractEntry node_modules/bl/node_modules/safe-buffer/index.d.ts +2098 silly gunzTarPerm extractEntry node_modules/buffer/index.d.ts +2099 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/index.d.ts +2100 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/lowercase-keys/index.d.ts +2101 silly gunzTarPerm extractEntry node_modules/ci-info/index.d.ts +2102 silly gunzTarPerm extractEntry node_modules/clean-stack/index.d.ts +2103 silly gunzTarPerm extractEntry node_modules/commander/typings/index.d.ts +2104 silly gunzTarPerm extractEntry node_modules/cp-file/index.d.ts +2105 silly gunzTarPerm extractEntry node_modules/defer-to-connect/dist/index.d.ts +2106 silly gunzTarPerm extractEntry node_modules/del/index.d.ts +2107 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.d.ts +2108 silly gunzTarPerm extractEntry node_modules/env-paths/index.d.ts +2109 silly gunzTarPerm extractEntry node_modules/fast-glob/out/index.d.ts +2110 silly gunzTarPerm extractEntry node_modules/fast-glob/out/types/index.d.ts +2111 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/index.d.ts +2112 silly gunzTarPerm extractEntry node_modules/fastq/index.d.ts +2113 silly gunzTarPerm extractEntry node_modules/global-dirs/index.d.ts +2114 silly gunzTarPerm extractEntry node_modules/globby/index.d.ts +2115 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.d.ts +2116 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.d.ts +2117 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.d.ts +2118 silly gunzTarPerm extractEntry node_modules/ieee754/index.d.ts +2119 silly gunzTarPerm extractEntry node_modules/ignore/index.d.ts +2120 silly gunzTarPerm extractEntry node_modules/indent-string/index.d.ts +2121 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.d.ts +2122 silly gunzTarPerm extractEntry node_modules/is-installed-globally/index.d.ts +2123 silly gunzTarPerm extractEntry node_modules/is-path-cwd/index.d.ts +2124 silly gunzTarPerm extractEntry node_modules/is-path-inside/index.d.ts +2125 silly gunzTarPerm extractEntry node_modules/latest-version/index.d.ts +2126 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/index.d.ts +2127 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/index.d.ts +2128 silly gunzTarPerm extractEntry node_modules/lru-cache/index.d.ts +2129 silly gunzTarPerm extractEntry node_modules/make-dir/index.d.ts +2130 silly gunzTarPerm extractEntry node_modules/minipass/index.d.ts +2131 silly gunzTarPerm extractEntry node_modules/normalize-url/index.d.ts +2132 silly gunzTarPerm extractEntry node_modules/p-cancelable/index.d.ts +2133 silly gunzTarPerm extractEntry node_modules/p-event/index.d.ts +2134 silly gunzTarPerm extractEntry node_modules/p-map/index.d.ts +2135 silly gunzTarPerm extractEntry node_modules/p-timeout/index.d.ts +2136 silly gunzTarPerm extractEntry node_modules/package-json/index.d.ts +2137 silly gunzTarPerm extractEntry node_modules/path-key/index.d.ts +2138 silly gunzTarPerm extractEntry node_modules/path-type/index.d.ts +2139 silly gunzTarPerm extractEntry node_modules/queue-microtask/index.d.ts +2140 silly gunzTarPerm extractEntry node_modules/registry-url/index.d.ts +2141 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.d.ts +2142 silly gunzTarPerm extractEntry node_modules/semver-diff/index.d.ts +2143 silly gunzTarPerm extractEntry node_modules/shebang-regex/index.d.ts +2144 silly gunzTarPerm extractEntry node_modules/slash/index.d.ts +2145 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.d.ts +2146 silly gunzTarPerm extractEntry node_modules/socks/typings/index.d.ts +2147 silly gunzTarPerm extractEntry node_modules/string-width/index.d.ts +2148 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.d.ts +2149 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/safe-buffer/index.d.ts +2150 silly gunzTarPerm extractEntry node_modules/agent-base/src/index.ts +2151 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/inline-comment.d.ts +2152 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/keeping-type-emitter.d.ts +2153 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/layout.d.ts +2154 silly gunzTarPerm extractEntry node_modules/any-promise/register/lie.d.ts +2155 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/liquid-date.d.ts +2156 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid-options.d.ts +2157 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/liquid-tag-token.d.ts +2158 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/liquid.d.ts +2159 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.d.ts +2160 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/literal-token.d.ts +2161 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/literal.d.ts +2162 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/loader.d.ts +2163 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/lib/logger.d.ts +2164 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/cache/lru.d.ts +2165 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/match-operator.d.ts +2166 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/matchers/matcher.d.ts +2167 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/math.d.ts +2168 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/misc.d.ts +2169 silly gunzTarPerm extractEntry node_modules/any-promise/register/native-promise-only.d.ts +2170 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/node-require.d.ts +2171 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/node.d.ts +2172 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/null-drop.d.ts +2173 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/number-token.d.ts +2174 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/operator-token.d.ts +2175 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/operator-trie.d.ts +2176 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/operator.d.ts +2177 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/output-token.d.ts +2178 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/output.d.ts +2179 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts +2180 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +2181 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/parse-stream.d.ts +2182 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/parse-string-literal.d.ts +2183 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/parser.d.ts +2184 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/matchers/partial.d.ts +2185 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/path.d.ts +2186 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/pattern.d.ts +2187 silly gunzTarPerm extractEntry node_modules/fast-glob/out/managers/patterns.d.ts +2188 silly gunzTarPerm extractEntry node_modules/any-promise/register/pinkie.d.ts +2189 silly gunzTarPerm extractEntry node_modules/any-promise/register/promise.d.ts +2190 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.d.ts +2191 silly gunzTarPerm extractEntry node_modules/agent-base/src/promisify.ts +2192 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/property-access-token.d.ts +2193 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/provider.d.ts +2194 silly gunzTarPerm extractEntry node_modules/any-promise/register/q.d.ts +2195 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/quoted-token.d.ts +2196 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/range-token.d.ts +2197 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/raw.d.ts +2198 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +2199 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/reader.d.ts +2200 silly gunzTarPerm extractEntry node_modules/socks/typings/common/receivebuffer.d.ts +2201 silly gunzTarPerm extractEntry node_modules/any-promise/register.d.ts +2202 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/render.d.ts +2203 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/render.d.ts +2204 silly gunzTarPerm extractEntry node_modules/any-promise/register/rsvp.d.ts +2205 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/context/scope.d.ts +2206 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/settings.d.ts +2207 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/settings.d.ts +2208 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/settings.d.ts +2209 silly gunzTarPerm extractEntry node_modules/fast-glob/out/settings.d.ts +2210 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/simple-emitter.d.ts +2211 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/smartbuffer.d.ts +2212 silly gunzTarPerm extractEntry node_modules/socks/typings/client/socksclient.d.ts +2213 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +2214 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/stream.d.ts +2215 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/stream.d.ts +2216 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/stream.d.ts +2217 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/streamed-emitter-browser.d.ts +2218 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/streamed-emitter.d.ts +2219 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/strftime.d.ts +2220 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/string.d.ts +2221 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/string.d.ts +2222 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +2223 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +2224 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +2225 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +2226 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/sync.d.ts +2227 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/sync.d.ts +2228 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/tablerow.d.ts +2229 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/tablerowloop-drop.d.ts +2230 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag-impl-options.d.ts +2231 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag-impl.d.ts +2232 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag-map.d.ts +2233 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/tag-token.d.ts +2234 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag.d.ts +2235 silly gunzTarPerm extractEntry node_modules/fast-glob/out/managers/tasks.d.ts +2236 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/template-impl.d.ts +2237 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/template.d.ts +2238 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/timezone-date.d.ts +2239 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/token-kind.d.ts +2240 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/token.d.ts +2241 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/tokenizer.d.ts +2242 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/toplevel-token.d.ts +2243 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/type-guards.d.ts +2244 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.d.ts +2245 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/types.d.ts +2246 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/underscore.d.ts +2247 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/unless.d.ts +2248 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/url.d.ts +2249 silly gunzTarPerm extractEntry node_modules/socks/typings/common/util.d.ts +2250 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/utils.d.ts +2251 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/value-token.d.ts +2252 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/value.d.ts +2253 silly gunzTarPerm extractEntry node_modules/any-promise/register/vow.d.ts +2254 silly gunzTarPerm extractEntry node_modules/any-promise/register/when.d.ts +2255 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/whitespace-ctrl.d.ts +2256 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/lib/xpm-liquid.d.ts +2257 silly gunzTarPerm extractEntry node_modules/emoji-regex/LICENSE-MIT.txt +2258 silly gunzTarPerm extractEntry node_modules/set-blocking/LICENSE.txt +2259 silly gunzTarPerm extractEntry node_modules/signal-exit/LICENSE.txt +2260 silly gunzTarPerm extractEntry node_modules/whatwg-url/LICENSE.txt +2261 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/requirements_dev.txt +2262 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt +2263 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt +2264 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Express.txt +2265 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt +2266 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt +2267 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt +2268 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt +2269 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec +2270 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +2271 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/modules.xml +2272 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +2273 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/codeStyles/Project.xml +2274 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/vcs.xml +2275 silly gunzTarPerm extractEntry node_modules/smart-buffer/.prettierrc.yaml +2276 silly gunzTarPerm extractEntry node_modules/socks/.prettierrc.yaml +2277 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/.appveyor.yml +2278 silly gunzTarPerm extractEntry node_modules/reusify/.coveralls.yml +2279 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/.travis.yml +2280 silly gunzTarPerm extractEntry node_modules/bl/.travis.yml +2281 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/.travis.yml +2282 silly gunzTarPerm extractEntry node_modules/bl/node_modules/string_decoder/.travis.yml +2283 silly gunzTarPerm extractEntry node_modules/concat-map/.travis.yml +2284 silly gunzTarPerm extractEntry node_modules/encoding/.travis.yml +2285 silly gunzTarPerm extractEntry node_modules/err-code/.travis.yml +2286 silly gunzTarPerm extractEntry node_modules/fd-slicer/.travis.yml +2287 silly gunzTarPerm extractEntry node_modules/function-bind/.travis.yml +2288 silly gunzTarPerm extractEntry node_modules/is-lambda/.travis.yml +2289 silly gunzTarPerm extractEntry node_modules/isarray/.travis.yml +2290 silly gunzTarPerm extractEntry node_modules/json-buffer/.travis.yml +2291 silly gunzTarPerm extractEntry node_modules/minimist/.travis.yml +2292 silly gunzTarPerm extractEntry node_modules/promise-retry/.travis.yml +2293 silly gunzTarPerm extractEntry node_modules/pump/.travis.yml +2294 silly gunzTarPerm extractEntry node_modules/retry/.travis.yml +2295 silly gunzTarPerm extractEntry node_modules/reusify/.travis.yml +2296 silly gunzTarPerm extractEntry node_modules/smart-buffer/.travis.yml +2297 silly gunzTarPerm extractEntry node_modules/socks/.travis.yml +2298 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/.travis.yml +2299 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/string_decoder/.travis.yml +2300 silly gunzTarPerm extractEntry node_modules/through/.travis.yml +2301 silly gunzTarPerm extractEntry node_modules/to-buffer/.travis.yml +2302 silly gunzTarPerm extractEntry node_modules/unique-slug/.travis.yml +2303 silly gunzTarPerm extractEntry node_modules/wscript-avoider/.travis.yml +2304 silly gunzTarPerm extractEntry node_modules/fastq/.github/workflows/ci.yml +2305 silly gunzTarPerm extractEntry node_modules/fastq/.github/dependabot.yml +2306 silly gunzTarPerm extractEntry node_modules/iconv-lite/.github/dependabot.yml +2307 silly gunzTarPerm extractEntry node_modules/balanced-match/.github/FUNDING.yml +2308 silly gunzTarPerm extractEntry node_modules/brace-expansion/.github/FUNDING.yml +2309 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/node-gyp.yml +2310 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/nodejs-windows.yml +2311 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/Python_tests.yml +2312 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/release-please.yml +2313 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/release-please.yml +2314 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/.github/settings.yml +2315 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/tests.yml +2316 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/visual-studio.yml +2317 silly addBundled read tarball +2318 silly cleanup remove extracted module +2319 silly fetchNamedPackageData npm +2320 silly mapToRegistry name npm +2321 silly mapToRegistry using default registry +2322 silly mapToRegistry registry https://registry.npmjs.org/ +2323 silly mapToRegistry uri https://registry.npmjs.org/npm +2324 verbose request uri https://registry.npmjs.org/npm +2325 verbose request no auth needed +2326 info attempt registry request try #1 at 7:53:20 PM +2327 verbose etag W/"85a5f510d11fa6edcdb765682e471119" +2328 verbose lastModified Wed, 03 Aug 2022 16:19:56 GMT +2329 http request GET https://registry.npmjs.org/npm +2330 http 304 https://registry.npmjs.org/npm +2331 verbose headers { date: 'Thu, 04 Aug 2022 02:53:20 GMT', +2331 verbose headers connection: 'keep-alive', +2331 verbose headers 'cf-ray': '7354008baf04969f-SJC', +2331 verbose headers age: '193', +2331 verbose headers 'cache-control': 'public, max-age=300', +2331 verbose headers etag: '"85a5f510d11fa6edcdb765682e471119"', +2331 verbose headers 'last-modified': 'Wed, 03 Aug 2022 16:19:56 GMT', +2331 verbose headers vary: 'Accept-Encoding', +2331 verbose headers 'cf-cache-status': 'HIT', +2331 verbose headers 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', +2331 verbose headers 'x-amz-replication-status': 'PENDING', +2331 verbose headers server: 'cloudflare' } +2332 silly get cb [ 304, +2332 silly get { date: 'Thu, 04 Aug 2022 02:53:20 GMT', +2332 silly get connection: 'keep-alive', +2332 silly get 'cf-ray': '7354008baf04969f-SJC', +2332 silly get age: '193', +2332 silly get 'cache-control': 'public, max-age=300', +2332 silly get etag: '"85a5f510d11fa6edcdb765682e471119"', +2332 silly get 'last-modified': 'Wed, 03 Aug 2022 16:19:56 GMT', +2332 silly get vary: 'Accept-Encoding', +2332 silly get 'cf-cache-status': 'HIT', +2332 silly get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', +2332 silly get 'x-amz-replication-status': 'PENDING', +2332 silly get server: 'cloudflare' } ] +2333 verbose etag https://registry.npmjs.org/npm from cache +2334 verbose get saving npm to /home/tuyuyang/.npm/registry.npmjs.org/npm/.cache.json +2335 silly resolveWithNewModule npm@8.16.0 checking installable status +2336 silly cache add args [ 'npm@^8.13.2', null ] +2337 verbose cache add spec npm@^8.13.2 +2338 silly cache add parsed spec Result { +2338 silly cache add raw: 'npm@^8.13.2', +2338 silly cache add scope: null, +2338 silly cache add name: 'npm', +2338 silly cache add rawSpec: '^8.13.2', +2338 silly cache add spec: '>=8.13.2 <9.0.0', +2338 silly cache add type: 'range' } +2339 silly addNamed npm@>=8.13.2 <9.0.0 +2340 verbose addNamed ">=8.13.2 <9.0.0" is a valid semver range for npm +2341 silly addNameRange { name: 'npm', range: '>=8.13.2 <9.0.0', hasData: false } +2342 silly mapToRegistry name npm +2343 silly mapToRegistry using default registry +2344 silly mapToRegistry registry https://registry.npmjs.org/ +2345 silly mapToRegistry uri https://registry.npmjs.org/npm +2346 verbose addNameRange registry:https://registry.npmjs.org/npm not in flight; fetching +2347 verbose get https://registry.npmjs.org/npm not expired, no request +2348 silly addNameRange number 2 { name: 'npm', range: '>=8.13.2 <9.0.0', hasData: true } +2349 silly addNameRange versions [ 'npm', +2349 silly addNameRange [ '1.1.25', +2349 silly addNameRange '1.2.32', +2349 silly addNameRange '1.3.2', +2349 silly addNameRange '1.3.4', +2349 silly addNameRange '1.2.20', +2349 silly addNameRange '1.2.21', +2349 silly addNameRange '1.2.22', +2349 silly addNameRange '1.2.23', +2349 silly addNameRange '1.2.24', +2349 silly addNameRange '1.2.25', +2349 silly addNameRange '1.2.27', +2349 silly addNameRange '1.2.28', +2349 silly addNameRange '1.2.30', +2349 silly addNameRange '1.2.31', +2349 silly addNameRange '1.3.0', +2349 silly addNameRange '1.3.1', +2349 silly addNameRange '1.2.19', +2349 silly addNameRange '1.1.70', +2349 silly addNameRange '1.1.71', +2349 silly addNameRange '1.3.5', +2349 silly addNameRange '1.3.6', +2349 silly addNameRange '1.3.7', +2349 silly addNameRange '1.3.8', +2349 silly addNameRange '1.3.9', +2349 silly addNameRange '1.3.10', +2349 silly addNameRange '1.3.11', +2349 silly addNameRange '1.3.12', +2349 silly addNameRange '1.3.13', +2349 silly addNameRange '1.3.14', +2349 silly addNameRange '1.3.15', +2349 silly addNameRange '1.3.16', +2349 silly addNameRange '1.3.17', +2349 silly addNameRange '1.3.18', +2349 silly addNameRange '1.3.20', +2349 silly addNameRange '1.3.21', +2349 silly addNameRange '1.3.22', +2349 silly addNameRange '1.3.23', +2349 silly addNameRange '1.3.24', +2349 silly addNameRange '1.3.25', +2349 silly addNameRange '1.3.26', +2349 silly addNameRange '1.4.0', +2349 silly addNameRange '1.4.1', +2349 silly addNameRange '1.4.2', +2349 silly addNameRange '1.4.3', +2349 silly addNameRange '1.4.4', +2349 silly addNameRange '1.4.5', +2349 silly addNameRange '1.4.6', +2349 silly addNameRange '1.4.7', +2349 silly addNameRange '1.4.8', +2349 silly addNameRange '1.4.9', +2349 silly addNameRange '1.4.10', +2349 silly addNameRange '1.4.11', +2349 silly addNameRange '1.4.12', +2349 silly addNameRange '1.4.13', +2349 silly addNameRange '1.4.14', +2349 silly addNameRange '1.4.15', +2349 silly addNameRange '1.4.16', +2349 silly addNameRange '1.2.8000', +2349 silly addNameRange '1.4.17', +2349 silly addNameRange '1.4.18', +2349 silly addNameRange '1.4.19', +2349 silly addNameRange '1.5.0-alpha-0', +2349 silly addNameRange '1.5.0-alpha-1', +2349 silly addNameRange '1.4.20', +2349 silly addNameRange '1.5.0-alpha-2', +2349 silly addNameRange '1.4.21', +2349 silly addNameRange '1.5.0-alpha-3', +2349 silly addNameRange '1.5.0-alpha-4', +2349 silly addNameRange '2.0.0-alpha-5', +2349 silly addNameRange '1.4.22', +2349 silly addNameRange '1.4.23', +2349 silly addNameRange '2.0.0-alpha.6.0', +2349 silly addNameRange '1.4.24', +2349 silly addNameRange '2.0.0-alpha.6', +2349 silly addNameRange '2.0.0-alpha.7', +2349 silly addNameRange '2.0.0-beta.0', +2349 silly addNameRange '1.4.25', +2349 silly addNameRange '2.0.0-beta.1', +2349 silly addNameRange '1.4.26', +2349 silly addNameRange '2.0.0-beta.2', +2349 silly addNameRange '1.4.27', +2349 silly addNameRange '2.0.0-beta.3', +2349 silly addNameRange '1.4.28', +2349 silly addNameRange '2.0.0', +2349 silly addNameRange '2.0.1', +2349 silly addNameRange '2.0.2', +2349 silly addNameRange '2.1.0', +2349 silly addNameRange '2.1.1', +2349 silly addNameRange '2.1.2', +2349 silly addNameRange '2.1.3', +2349 silly addNameRange '2.1.4', +2349 silly addNameRange '2.1.5', +2349 silly addNameRange '2.1.6', +2349 silly addNameRange '2.1.7', +2349 silly addNameRange '2.1.8', +2349 silly addNameRange '2.1.9', +2349 silly addNameRange '2.1.10', +2349 silly addNameRange '2.1.11', +2349 silly addNameRange '2.1.12', +2349 silly addNameRange '2.1.13', +2349 silly addNameRange ... 385 more items ] ] +2350 silly addNamed npm@8.16.0 +2351 verbose addNamed "8.16.0" is a plain semver version for npm +2352 silly cache afterAdd npm@8.16.0 +2353 verbose afterAdd /home/tuyuyang/.npm/npm/8.16.0/package/package.json not in flight; writing +2354 verbose afterAdd /home/tuyuyang/.npm/npm/8.16.0/package/package.json written +2355 verbose addBundled extract /home/tuyuyang/.npm/npm/8.16.0/package.tgz +2356 verbose tar unpack /home/tuyuyang/.npm/npm/8.16.0/package.tgz +2357 verbose tar unpacking to /tmp/npm-18996-d7180216/unpack-10d93007 +2358 silly gentlyRm /tmp/npm-18996-d7180216/unpack-10d93007 is being purged +2359 verbose gentlyRm don't care about contents; nuking /tmp/npm-18996-d7180216/unpack-10d93007 +2360 silly gunzTarPerm modes [ '755', '644' ] +2361 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.flake8 +2362 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/AUTHORS +2363 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/AUTHORS +2364 silly gunzTarPerm extractEntry node_modules/cssesc/bin/cssesc +2365 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp +2366 silly gunzTarPerm extractEntry LICENSE +2367 silly gunzTarPerm extractEntry node_modules/@colors/colors/LICENSE +2368 silly gunzTarPerm extractEntry node_modules/@isaacs/string-locale-compare/LICENSE +2369 silly gunzTarPerm extractEntry node_modules/@npmcli/ci-detect/LICENSE +2370 silly gunzTarPerm extractEntry node_modules/@npmcli/config/LICENSE +2371 silly gunzTarPerm extractEntry node_modules/@npmcli/disparity-colors/LICENSE +2372 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/LICENSE +2373 silly gunzTarPerm extractEntry node_modules/@npmcli/git/LICENSE +2374 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/LICENSE +2375 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/LICENSE +2376 silly gunzTarPerm extractEntry node_modules/@npmcli/name-from-folder/LICENSE +2377 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/LICENSE +2378 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/LICENSE +2379 silly gunzTarPerm extractEntry node_modules/@npmcli/query/LICENSE +2380 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/LICENSE +2381 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/LICENSE +2382 silly gunzTarPerm extractEntry node_modules/abbrev/LICENSE +2383 silly gunzTarPerm extractEntry node_modules/agentkeepalive/LICENSE +2384 silly gunzTarPerm extractEntry node_modules/aggregate-error/license +2385 silly gunzTarPerm extractEntry node_modules/ansi-regex/license +2386 silly gunzTarPerm extractEntry node_modules/ansi-styles/license +2387 silly gunzTarPerm extractEntry node_modules/aproba/LICENSE +2388 silly gunzTarPerm extractEntry node_modules/archy/LICENSE +2389 silly gunzTarPerm extractEntry node_modules/bin-links/LICENSE +2390 silly gunzTarPerm extractEntry node_modules/binary-extensions/license +2391 silly gunzTarPerm extractEntry node_modules/brace-expansion/LICENSE +2392 silly gunzTarPerm extractEntry node_modules/builtins/License +2393 silly gunzTarPerm extractEntry node_modules/chalk/license +2394 silly gunzTarPerm extractEntry node_modules/chownr/LICENSE +2395 silly gunzTarPerm extractEntry node_modules/cidr-regex/LICENSE +2396 silly gunzTarPerm extractEntry node_modules/clean-stack/license +2397 silly gunzTarPerm extractEntry node_modules/cli-columns/LICENSE +2398 silly gunzTarPerm extractEntry node_modules/cli-table3/LICENSE +2399 silly gunzTarPerm extractEntry node_modules/clone/LICENSE +2400 silly gunzTarPerm extractEntry node_modules/cmd-shim/LICENSE +2401 silly gunzTarPerm extractEntry node_modules/color-convert/LICENSE +2402 silly gunzTarPerm extractEntry node_modules/color-name/LICENSE +2403 silly gunzTarPerm extractEntry node_modules/color-support/LICENSE +2404 silly gunzTarPerm extractEntry node_modules/columnify/LICENSE +2405 silly gunzTarPerm extractEntry node_modules/common-ancestor-path/LICENSE +2406 silly gunzTarPerm extractEntry node_modules/concat-map/LICENSE +2407 silly gunzTarPerm extractEntry node_modules/console-control-strings/LICENSE +2408 silly gunzTarPerm extractEntry node_modules/debug/LICENSE +2409 silly gunzTarPerm extractEntry node_modules/debuglog/LICENSE +2410 silly gunzTarPerm extractEntry node_modules/defaults/LICENSE +2411 silly gunzTarPerm extractEntry node_modules/delegates/License +2412 silly gunzTarPerm extractEntry node_modules/depd/LICENSE +2413 silly gunzTarPerm extractEntry node_modules/dezalgo/LICENSE +2414 silly gunzTarPerm extractEntry node_modules/diff/LICENSE +2415 silly gunzTarPerm extractEntry node_modules/encoding/LICENSE +2416 silly gunzTarPerm extractEntry node_modules/env-paths/license +2417 silly gunzTarPerm extractEntry node_modules/fs-minipass/LICENSE +2418 silly gunzTarPerm extractEntry node_modules/fs.realpath/LICENSE +2419 silly gunzTarPerm extractEntry node_modules/function-bind/LICENSE +2420 silly gunzTarPerm extractEntry node_modules/glob/LICENSE +2421 silly gunzTarPerm extractEntry node_modules/graceful-fs/LICENSE +2422 silly gunzTarPerm extractEntry node_modules/has-flag/license +2423 silly gunzTarPerm extractEntry node_modules/has-unicode/LICENSE +2424 silly gunzTarPerm extractEntry node_modules/hosted-git-info/LICENSE +2425 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/LICENSE +2426 silly gunzTarPerm extractEntry node_modules/humanize-ms/LICENSE +2427 silly gunzTarPerm extractEntry node_modules/iconv-lite/LICENSE +2428 silly gunzTarPerm extractEntry node_modules/ignore-walk/LICENSE +2429 silly gunzTarPerm extractEntry node_modules/indent-string/license +2430 silly gunzTarPerm extractEntry node_modules/infer-owner/LICENSE +2431 silly gunzTarPerm extractEntry node_modules/inflight/LICENSE +2432 silly gunzTarPerm extractEntry node_modules/inherits/LICENSE +2433 silly gunzTarPerm extractEntry node_modules/ini/LICENSE +2434 silly gunzTarPerm extractEntry node_modules/ip-regex/license +2435 silly gunzTarPerm extractEntry node_modules/is-cidr/LICENSE +2436 silly gunzTarPerm extractEntry node_modules/is-core-module/LICENSE +2437 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/license +2438 silly gunzTarPerm extractEntry node_modules/is-lambda/LICENSE +2439 silly gunzTarPerm extractEntry node_modules/isexe/LICENSE +2440 silly gunzTarPerm extractEntry node_modules/json-stringify-nice/LICENSE +2441 silly gunzTarPerm extractEntry node_modules/jsonparse/LICENSE +2442 silly gunzTarPerm extractEntry node_modules/just-diff-apply/LICENSE +2443 silly gunzTarPerm extractEntry node_modules/just-diff/LICENSE +2444 silly gunzTarPerm extractEntry node_modules/libnpmaccess/LICENSE +2445 silly gunzTarPerm extractEntry node_modules/libnpmdiff/LICENSE +2446 silly gunzTarPerm extractEntry node_modules/libnpmexec/LICENSE +2447 silly gunzTarPerm extractEntry node_modules/libnpmfund/LICENSE +2448 silly gunzTarPerm extractEntry node_modules/libnpmorg/LICENSE +2449 silly gunzTarPerm extractEntry node_modules/libnpmpack/LICENSE +2450 silly gunzTarPerm extractEntry node_modules/libnpmpublish/LICENSE +2451 silly gunzTarPerm extractEntry node_modules/libnpmsearch/LICENSE +2452 silly gunzTarPerm extractEntry node_modules/libnpmteam/LICENSE +2453 silly gunzTarPerm extractEntry node_modules/libnpmversion/LICENSE +2454 silly gunzTarPerm extractEntry node_modules/lru-cache/LICENSE +2455 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/LICENSE +2456 silly gunzTarPerm extractEntry node_modules/minimatch/LICENSE +2457 silly gunzTarPerm extractEntry node_modules/minipass-collect/LICENSE +2458 silly gunzTarPerm extractEntry node_modules/minipass-fetch/LICENSE +2459 silly gunzTarPerm extractEntry node_modules/minipass-flush/LICENSE +2460 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/LICENSE +2461 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/LICENSE +2462 silly gunzTarPerm extractEntry node_modules/minipass-sized/LICENSE +2463 silly gunzTarPerm extractEntry node_modules/minipass/LICENSE +2464 silly gunzTarPerm extractEntry node_modules/minizlib/LICENSE +2465 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/LICENSE +2466 silly gunzTarPerm extractEntry node_modules/mkdirp/LICENSE +2467 silly gunzTarPerm extractEntry node_modules/mute-stream/LICENSE +2468 silly gunzTarPerm extractEntry node_modules/negotiator/LICENSE +2469 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/LICENSE +2470 silly gunzTarPerm extractEntry node_modules/node-gyp/LICENSE +2471 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/LICENSE +2472 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/LICENSE +2473 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/LICENSE +2474 silly gunzTarPerm extractEntry node_modules/nopt/LICENSE +2475 silly gunzTarPerm extractEntry node_modules/normalize-package-data/LICENSE +2476 silly gunzTarPerm extractEntry node_modules/npm-audit-report/LICENSE +2477 silly gunzTarPerm extractEntry node_modules/npm-bundled/LICENSE +2478 silly gunzTarPerm extractEntry node_modules/npm-install-checks/LICENSE +2479 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/LICENSE +2480 silly gunzTarPerm extractEntry node_modules/npm-package-arg/LICENSE +2481 silly gunzTarPerm extractEntry node_modules/npm-packlist/LICENSE +2482 silly gunzTarPerm extractEntry node_modules/npm-user-validate/LICENSE +2483 silly gunzTarPerm extractEntry node_modules/once/LICENSE +2484 silly gunzTarPerm extractEntry node_modules/p-map/license +2485 silly gunzTarPerm extractEntry node_modules/pacote/LICENSE +2486 silly gunzTarPerm extractEntry node_modules/path-is-absolute/license +2487 silly gunzTarPerm extractEntry node_modules/proc-log/LICENSE +2488 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/LICENSE +2489 silly gunzTarPerm extractEntry node_modules/promise-call-limit/LICENSE +2490 silly gunzTarPerm extractEntry node_modules/promise-inflight/LICENSE +2491 silly gunzTarPerm extractEntry node_modules/promise-retry/LICENSE +2492 silly gunzTarPerm extractEntry node_modules/promzard/LICENSE +2493 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/LICENSE +2494 silly gunzTarPerm extractEntry node_modules/read-cmd-shim/LICENSE +2495 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/LICENSE +2496 silly gunzTarPerm extractEntry node_modules/read-package-json/LICENSE +2497 silly gunzTarPerm extractEntry node_modules/read/LICENSE +2498 silly gunzTarPerm extractEntry node_modules/readable-stream/LICENSE +2499 silly gunzTarPerm extractEntry node_modules/readdir-scoped-modules/LICENSE +2500 silly gunzTarPerm extractEntry node_modules/retry/License +2501 silly gunzTarPerm extractEntry node_modules/rimraf/LICENSE +2502 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/LICENSE +2503 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/LICENSE +2504 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/LICENSE +2505 silly gunzTarPerm extractEntry node_modules/safe-buffer/LICENSE +2506 silly gunzTarPerm extractEntry node_modules/safer-buffer/LICENSE +2507 silly gunzTarPerm extractEntry node_modules/semver/LICENSE +2508 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/LICENSE +2509 silly gunzTarPerm extractEntry node_modules/smart-buffer/LICENSE +2510 silly gunzTarPerm extractEntry node_modules/socks/LICENSE +2511 silly gunzTarPerm extractEntry node_modules/spdx-correct/LICENSE +2512 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/LICENSE +2513 silly gunzTarPerm extractEntry node_modules/string_decoder/LICENSE +2514 silly gunzTarPerm extractEntry node_modules/string-width/license +2515 silly gunzTarPerm extractEntry node_modules/strip-ansi/license +2516 silly gunzTarPerm extractEntry node_modules/supports-color/license +2517 silly gunzTarPerm extractEntry node_modules/tar/LICENSE +2518 silly gunzTarPerm extractEntry node_modules/text-table/LICENSE +2519 silly gunzTarPerm extractEntry node_modules/treeverse/LICENSE +2520 silly gunzTarPerm extractEntry node_modules/unique-filename/LICENSE +2521 silly gunzTarPerm extractEntry node_modules/unique-slug/LICENSE +2522 silly gunzTarPerm extractEntry node_modules/util-deprecate/LICENSE +2523 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/LICENSE +2524 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/LICENSE +2525 silly gunzTarPerm extractEntry node_modules/walk-up-path/LICENSE +2526 silly gunzTarPerm extractEntry node_modules/wcwidth/LICENSE +2527 silly gunzTarPerm extractEntry node_modules/which/LICENSE +2528 silly gunzTarPerm extractEntry node_modules/wide-align/LICENSE +2529 silly gunzTarPerm extractEntry node_modules/wrappy/LICENSE +2530 silly gunzTarPerm extractEntry node_modules/yallist/LICENSE +2531 silly gunzTarPerm extractEntry node_modules/has/LICENSE-MIT +2532 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/LICENSE-MIT +2533 silly gunzTarPerm extractEntry node_modules/columnify/Makefile +2534 silly gunzTarPerm extractEntry node_modules/delegates/Makefile +2535 silly gunzTarPerm extractEntry node_modules/retry/Makefile +2536 silly gunzTarPerm extractEntry bin/node-gyp-bin/node-gyp +2537 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp +2538 silly gunzTarPerm extractEntry node_modules/which/bin/node-which +2539 silly gunzTarPerm extractEntry bin/npm +2540 silly gunzTarPerm extractEntry bin/npx +2541 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/README +2542 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/README +2543 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/README +2544 silly gunzTarPerm extractEntry node_modules/cssesc/man/cssesc.1 +2545 silly gunzTarPerm extractEntry man/man1/npm-access.1 +2546 silly gunzTarPerm extractEntry man/man1/npm-adduser.1 +2547 silly gunzTarPerm extractEntry man/man1/npm-audit.1 +2548 silly gunzTarPerm extractEntry man/man1/npm-bin.1 +2549 silly gunzTarPerm extractEntry man/man1/npm-bugs.1 +2550 silly gunzTarPerm extractEntry man/man1/npm-cache.1 +2551 silly gunzTarPerm extractEntry man/man1/npm-ci.1 +2552 silly gunzTarPerm extractEntry man/man1/npm-completion.1 +2553 silly gunzTarPerm extractEntry man/man1/npm-config.1 +2554 silly gunzTarPerm extractEntry man/man1/npm-dedupe.1 +2555 silly gunzTarPerm extractEntry man/man1/npm-deprecate.1 +2556 silly gunzTarPerm extractEntry man/man1/npm-diff.1 +2557 silly gunzTarPerm extractEntry man/man1/npm-dist-tag.1 +2558 silly gunzTarPerm extractEntry man/man1/npm-docs.1 +2559 silly gunzTarPerm extractEntry man/man1/npm-doctor.1 +2560 silly gunzTarPerm extractEntry man/man1/npm-edit.1 +2561 silly gunzTarPerm extractEntry man/man1/npm-exec.1 +2562 silly gunzTarPerm extractEntry man/man1/npm-explain.1 +2563 silly gunzTarPerm extractEntry man/man1/npm-explore.1 +2564 silly gunzTarPerm extractEntry man/man1/npm-find-dupes.1 +2565 silly gunzTarPerm extractEntry man/man1/npm-fund.1 +2566 silly gunzTarPerm extractEntry man/man1/npm-help-search.1 +2567 silly gunzTarPerm extractEntry man/man1/npm-help.1 +2568 silly gunzTarPerm extractEntry man/man1/npm-hook.1 +2569 silly gunzTarPerm extractEntry man/man1/npm-init.1 +2570 silly gunzTarPerm extractEntry man/man1/npm-install-ci-test.1 +2571 silly gunzTarPerm extractEntry man/man1/npm-install-test.1 +2572 silly gunzTarPerm extractEntry man/man1/npm-install.1 +2573 silly gunzTarPerm extractEntry man/man1/npm-link.1 +2574 silly gunzTarPerm extractEntry man/man1/npm-logout.1 +2575 silly gunzTarPerm extractEntry man/man1/npm-ls.1 +2576 silly gunzTarPerm extractEntry man/man1/npm-org.1 +2577 silly gunzTarPerm extractEntry man/man1/npm-outdated.1 +2578 silly gunzTarPerm extractEntry man/man1/npm-owner.1 +2579 silly gunzTarPerm extractEntry man/man1/npm-pack.1 +2580 silly gunzTarPerm extractEntry man/man1/npm-ping.1 +2581 silly gunzTarPerm extractEntry man/man1/npm-pkg.1 +2582 silly gunzTarPerm extractEntry man/man1/npm-prefix.1 +2583 silly gunzTarPerm extractEntry man/man1/npm-profile.1 +2584 silly gunzTarPerm extractEntry man/man1/npm-prune.1 +2585 silly gunzTarPerm extractEntry man/man1/npm-publish.1 +2586 silly gunzTarPerm extractEntry man/man1/npm-query.1 +2587 silly gunzTarPerm extractEntry man/man1/npm-rebuild.1 +2588 silly gunzTarPerm extractEntry man/man1/npm-repo.1 +2589 silly gunzTarPerm extractEntry man/man1/npm-restart.1 +2590 silly gunzTarPerm extractEntry man/man1/npm-root.1 +2591 silly gunzTarPerm extractEntry man/man1/npm-run-script.1 +2592 silly gunzTarPerm extractEntry man/man1/npm-search.1 +2593 silly gunzTarPerm extractEntry man/man1/npm-set-script.1 +2594 silly gunzTarPerm extractEntry man/man1/npm-shrinkwrap.1 +2595 silly gunzTarPerm extractEntry man/man1/npm-star.1 +2596 silly gunzTarPerm extractEntry man/man1/npm-stars.1 +2597 silly gunzTarPerm extractEntry man/man1/npm-start.1 +2598 silly gunzTarPerm extractEntry man/man1/npm-stop.1 +2599 silly gunzTarPerm extractEntry man/man1/npm-team.1 +2600 silly gunzTarPerm extractEntry man/man1/npm-test.1 +2601 silly gunzTarPerm extractEntry man/man1/npm-token.1 +2602 silly gunzTarPerm extractEntry man/man1/npm-uninstall.1 +2603 silly gunzTarPerm extractEntry man/man1/npm-unpublish.1 +2604 silly gunzTarPerm extractEntry man/man1/npm-unstar.1 +2605 silly gunzTarPerm extractEntry man/man1/npm-update.1 +2606 silly gunzTarPerm extractEntry man/man1/npm-version.1 +2607 silly gunzTarPerm extractEntry man/man1/npm-view.1 +2608 silly gunzTarPerm extractEntry man/man1/npm-whoami.1 +2609 silly gunzTarPerm extractEntry man/man1/npm.1 +2610 silly gunzTarPerm extractEntry man/man1/npx.1 +2611 silly gunzTarPerm extractEntry man/man5/folders.5 +2612 silly gunzTarPerm extractEntry man/man5/install.5 +2613 silly gunzTarPerm extractEntry man/man5/npm-shrinkwrap-json.5 +2614 silly gunzTarPerm extractEntry man/man5/npmrc.5 +2615 silly gunzTarPerm extractEntry man/man5/package-json.5 +2616 silly gunzTarPerm extractEntry man/man5/package-lock-json.5 +2617 silly gunzTarPerm extractEntry man/man7/config.7 +2618 silly gunzTarPerm extractEntry man/man7/dependency-selectors.7 +2619 silly gunzTarPerm extractEntry man/man7/developers.7 +2620 silly gunzTarPerm extractEntry man/man7/logging.7 +2621 silly gunzTarPerm extractEntry man/man7/orgs.7 +2622 silly gunzTarPerm extractEntry man/man7/package-spec.7 +2623 silly gunzTarPerm extractEntry man/man7/registry.7 +2624 silly gunzTarPerm extractEntry man/man7/removal.7 +2625 silly gunzTarPerm extractEntry man/man7/scope.7 +2626 silly gunzTarPerm extractEntry man/man7/scripts.7 +2627 silly gunzTarPerm extractEntry man/man7/workspaces.7 +2628 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp.bat +2629 silly gunzTarPerm extractEntry node_modules/semver/range.bnf +2630 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +2631 silly gunzTarPerm extractEntry node_modules/node-gyp/src/win_delay_load_hook.cc +2632 silly gunzTarPerm extractEntry bin/node-gyp-bin/node-gyp.cmd +2633 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp.cmd +2634 silly gunzTarPerm extractEntry bin/npm.cmd +2635 silly gunzTarPerm extractEntry bin/npx.cmd +2636 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/ca-bundle.crt +2637 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/ca.crt +2638 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/server.crt +2639 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/Find-VisualStudio.cs +2640 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/base.css +2641 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/prettify.css +2642 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/gyp-tests.el +2643 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/gyp.el +2644 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified +2645 silly gunzTarPerm extractEntry node_modules/retry/equation.gif +2646 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp +2647 silly gunzTarPerm extractEntry node_modules/node-gyp/addon.gypi +2648 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi +2649 silly gunzTarPerm extractEntry docs/output/using-npm/config.html +2650 silly gunzTarPerm extractEntry docs/output/using-npm/dependency-selectors.html +2651 silly gunzTarPerm extractEntry docs/output/using-npm/developers.html +2652 silly gunzTarPerm extractEntry docs/output/configuring-npm/folders.html +2653 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/__root__/index.html +2654 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/index.html +2655 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/__root__/index.js.html +2656 silly gunzTarPerm extractEntry docs/output/configuring-npm/install.html +2657 silly gunzTarPerm extractEntry docs/output/using-npm/logging.html +2658 silly gunzTarPerm extractEntry docs/output/commands/npm-access.html +2659 silly gunzTarPerm extractEntry docs/output/commands/npm-adduser.html +2660 silly gunzTarPerm extractEntry docs/output/commands/npm-audit.html +2661 silly gunzTarPerm extractEntry docs/output/commands/npm-bin.html +2662 silly gunzTarPerm extractEntry docs/output/commands/npm-bugs.html +2663 silly gunzTarPerm extractEntry docs/output/commands/npm-cache.html +2664 silly gunzTarPerm extractEntry docs/output/commands/npm-ci.html +2665 silly gunzTarPerm extractEntry docs/output/commands/npm-completion.html +2666 silly gunzTarPerm extractEntry docs/output/commands/npm-config.html +2667 silly gunzTarPerm extractEntry docs/output/commands/npm-dedupe.html +2668 silly gunzTarPerm extractEntry docs/output/commands/npm-deprecate.html +2669 silly gunzTarPerm extractEntry docs/output/commands/npm-diff.html +2670 silly gunzTarPerm extractEntry docs/output/commands/npm-dist-tag.html +2671 silly gunzTarPerm extractEntry docs/output/commands/npm-docs.html +2672 silly gunzTarPerm extractEntry docs/output/commands/npm-doctor.html +2673 silly gunzTarPerm extractEntry docs/output/commands/npm-edit.html +2674 silly gunzTarPerm extractEntry docs/output/commands/npm-exec.html +2675 silly gunzTarPerm extractEntry docs/output/commands/npm-explain.html +2676 silly gunzTarPerm extractEntry docs/output/commands/npm-explore.html +2677 silly gunzTarPerm extractEntry docs/output/commands/npm-find-dupes.html +2678 silly gunzTarPerm extractEntry docs/output/commands/npm-fund.html +2679 silly gunzTarPerm extractEntry docs/output/commands/npm-help-search.html +2680 silly gunzTarPerm extractEntry docs/output/commands/npm-help.html +2681 silly gunzTarPerm extractEntry docs/output/commands/npm-hook.html +2682 silly gunzTarPerm extractEntry docs/output/commands/npm-init.html +2683 silly gunzTarPerm extractEntry docs/output/commands/npm-install-ci-test.html +2684 silly gunzTarPerm extractEntry docs/output/commands/npm-install-test.html +2685 silly gunzTarPerm extractEntry docs/output/commands/npm-install.html +2686 silly gunzTarPerm extractEntry docs/output/commands/npm-link.html +2687 silly gunzTarPerm extractEntry docs/output/commands/npm-logout.html +2688 silly gunzTarPerm extractEntry docs/output/commands/npm-ls.html +2689 silly gunzTarPerm extractEntry docs/output/commands/npm-org.html +2690 silly gunzTarPerm extractEntry docs/output/commands/npm-outdated.html +2691 silly gunzTarPerm extractEntry docs/output/commands/npm-owner.html +2692 silly gunzTarPerm extractEntry docs/output/commands/npm-pack.html +2693 silly gunzTarPerm extractEntry docs/output/commands/npm-ping.html +2694 silly gunzTarPerm extractEntry docs/output/commands/npm-pkg.html +2695 silly gunzTarPerm extractEntry docs/output/commands/npm-prefix.html +2696 silly gunzTarPerm extractEntry docs/output/commands/npm-profile.html +2697 silly gunzTarPerm extractEntry docs/output/commands/npm-prune.html +2698 silly gunzTarPerm extractEntry docs/output/commands/npm-publish.html +2699 silly gunzTarPerm extractEntry docs/output/commands/npm-query.html +2700 silly gunzTarPerm extractEntry docs/output/commands/npm-rebuild.html +2701 silly gunzTarPerm extractEntry docs/output/commands/npm-repo.html +2702 silly gunzTarPerm extractEntry docs/output/commands/npm-restart.html +2703 silly gunzTarPerm extractEntry docs/output/commands/npm-root.html +2704 silly gunzTarPerm extractEntry docs/output/commands/npm-run-script.html +2705 silly gunzTarPerm extractEntry docs/output/commands/npm-search.html +2706 silly gunzTarPerm extractEntry docs/output/commands/npm-set-script.html +2707 silly gunzTarPerm extractEntry docs/output/configuring-npm/npm-shrinkwrap-json.html +2708 silly gunzTarPerm extractEntry docs/output/commands/npm-shrinkwrap.html +2709 silly gunzTarPerm extractEntry docs/output/commands/npm-star.html +2710 silly gunzTarPerm extractEntry docs/output/commands/npm-stars.html +2711 silly gunzTarPerm extractEntry docs/output/commands/npm-start.html +2712 silly gunzTarPerm extractEntry docs/output/commands/npm-stop.html +2713 silly gunzTarPerm extractEntry docs/output/commands/npm-team.html +2714 silly gunzTarPerm extractEntry docs/output/commands/npm-test.html +2715 silly gunzTarPerm extractEntry docs/output/commands/npm-token.html +2716 silly gunzTarPerm extractEntry docs/output/commands/npm-uninstall.html +2717 silly gunzTarPerm extractEntry docs/output/commands/npm-unpublish.html +2718 silly gunzTarPerm extractEntry docs/output/commands/npm-unstar.html +2719 silly gunzTarPerm extractEntry docs/output/commands/npm-update.html +2720 silly gunzTarPerm extractEntry docs/output/commands/npm-version.html +2721 silly gunzTarPerm extractEntry docs/output/commands/npm-view.html +2722 silly gunzTarPerm extractEntry docs/output/commands/npm-whoami.html +2723 silly gunzTarPerm extractEntry docs/output/commands/npm.html +2724 silly gunzTarPerm extractEntry docs/output/configuring-npm/npmrc.html +2725 silly gunzTarPerm extractEntry docs/output/commands/npx.html +2726 silly gunzTarPerm extractEntry docs/output/using-npm/orgs.html +2727 silly gunzTarPerm extractEntry docs/output/configuring-npm/package-json.html +2728 silly gunzTarPerm extractEntry docs/output/configuring-npm/package-lock-json.html +2729 silly gunzTarPerm extractEntry docs/output/using-npm/package-spec.html +2730 silly gunzTarPerm extractEntry docs/output/using-npm/registry.html +2731 silly gunzTarPerm extractEntry docs/output/using-npm/removal.html +2732 silly gunzTarPerm extractEntry docs/output/using-npm/scope.html +2733 silly gunzTarPerm extractEntry docs/output/using-npm/scripts.html +2734 silly gunzTarPerm extractEntry docs/output/using-npm/workspaces.html +2735 silly gunzTarPerm extractEntry node_modules/clone/clone.iml +2736 silly gunzTarPerm extractEntry node_modules/promzard/test/exports.input +2737 silly gunzTarPerm extractEntry node_modules/promzard/test/fn.input +2738 silly gunzTarPerm extractEntry node_modules/promzard/test/simple.input +2739 silly gunzTarPerm extractEntry node_modules/promzard/test/validate.input +2740 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_duplex.js +2741 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_passthrough.js +2742 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_readable.js +2743 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_transform.js +2744 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_writable.js +2745 silly gunzTarPerm extractEntry node_modules/abbrev/abbrev.js +2746 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/abort-error.js +2747 silly gunzTarPerm extractEntry lib/commands/access.js +2748 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/actual.js +2749 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/add-git-sha.js +2750 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js +2751 silly gunzTarPerm extractEntry lib/commands/adduser.js +2752 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/advisory.js +2753 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/agent.js +2754 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.js +2755 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.js +2756 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/agent.js +2757 silly gunzTarPerm extractEntry node_modules/text-table/example/align.js +2758 silly gunzTarPerm extractEntry node_modules/text-table/test/align.js +2759 silly gunzTarPerm extractEntry node_modules/wide-align/align.js +2760 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/america.js +2761 silly gunzTarPerm extractEntry node_modules/text-table/test/ansi-colors.js +2762 silly gunzTarPerm extractEntry lib/utils/ansi-trim.js +2763 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/apply.js +2764 silly gunzTarPerm extractEntry lib/arborist-cmd.js +2765 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/array.js +2766 silly gunzTarPerm extractEntry node_modules/diff/lib/util/array.js +2767 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/array.js +2768 silly gunzTarPerm extractEntry node_modules/asap/asap.js +2769 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/async_iterator.js +2770 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/attribute.js +2771 silly gunzTarPerm extractEntry lib/utils/audit-error.js +2772 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/audit-report.js +2773 silly gunzTarPerm extractEntry lib/commands/audit.js +2774 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/audit.js +2775 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/audit.js +2776 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/auth.js +2777 silly gunzTarPerm extractEntry lib/base-command.js +2778 silly gunzTarPerm extractEntry node_modules/gauge/lib/base-theme.js +2779 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/base.js +2780 silly gunzTarPerm extractEntry node_modules/isexe/test/basic.js +2781 silly gunzTarPerm extractEntry node_modules/minipass-sized/test/basic.js +2782 silly gunzTarPerm extractEntry node_modules/promzard/test/basic.js +2783 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/basic.js +2784 silly gunzTarPerm extractEntry node_modules/archy/examples/beep.js +2785 silly gunzTarPerm extractEntry node_modules/archy/test/beep.js +2786 silly gunzTarPerm extractEntry node_modules/jsonparse/bench.js +2787 silly gunzTarPerm extractEntry node_modules/jsonparse/test/big-token.js +2788 silly gunzTarPerm extractEntry node_modules/bin-links/lib/bin-target.js +2789 silly gunzTarPerm extractEntry lib/commands/bin.js +2790 silly gunzTarPerm extractEntry node_modules/color-support/bin.js +2791 silly gunzTarPerm extractEntry node_modules/pacote/lib/bin.js +2792 silly gunzTarPerm extractEntry node_modules/rimraf/bin.js +2793 silly gunzTarPerm extractEntry lib/commands/birthday.js +2794 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/blob.js +2795 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/body.js +2796 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/bom-handling.js +2797 silly gunzTarPerm extractEntry node_modules/jsonparse/test/boundary.js +2798 silly gunzTarPerm extractEntry node_modules/treeverse/lib/breadth.js +2799 silly gunzTarPerm extractEntry node_modules/asap/browser-asap.js +2800 silly gunzTarPerm extractEntry node_modules/asap/browser-raw.js +2801 silly gunzTarPerm extractEntry node_modules/agentkeepalive/browser.js +2802 silly gunzTarPerm extractEntry node_modules/color-support/browser.js +2803 silly gunzTarPerm extractEntry node_modules/debug/src/browser.js +2804 silly gunzTarPerm extractEntry node_modules/supports-color/browser.js +2805 silly gunzTarPerm extractEntry node_modules/util-deprecate/browser.js +2806 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/buffer_list.js +2807 silly gunzTarPerm extractEntry node_modules/promzard/example/buffer.js +2808 silly gunzTarPerm extractEntry node_modules/promzard/test/buffer.js +2809 silly gunzTarPerm extractEntry lib/commands/bugs.js +2810 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +2811 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/build.js +2812 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/cache-dir.js +2813 silly gunzTarPerm extractEntry lib/commands/cache.js +2814 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/calc-dep-flags.js +2815 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/callback.js +2816 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/callsite-tostring.js +2817 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/can-place-dep.js +2818 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/case-insensitive-map.js +2819 silly gunzTarPerm extractEntry node_modules/cli-table3/src/cell.js +2820 silly gunzTarPerm extractEntry node_modules/text-table/example/center.js +2821 silly gunzTarPerm extractEntry node_modules/text-table/test/center.js +2822 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/character.js +2823 silly gunzTarPerm extractEntry node_modules/negotiator/lib/charset.js +2824 silly gunzTarPerm extractEntry node_modules/bin-links/lib/check-bin.js +2825 silly gunzTarPerm extractEntry node_modules/bin-links/lib/check-bins.js +2826 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/check-response.js +2827 silly gunzTarPerm extractEntry node_modules/chownr/chownr.js +2828 silly gunzTarPerm extractEntry lib/commands/ci.js +2829 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/className.js +2830 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/clean-url.js +2831 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/clean.js +2832 silly gunzTarPerm extractEntry node_modules/semver/functions/clean.js +2833 silly gunzTarPerm extractEntry lib/cli.js +2834 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/clone.js +2835 silly gunzTarPerm extractEntry node_modules/clone/clone.js +2836 silly gunzTarPerm extractEntry node_modules/graceful-fs/clone.js +2837 silly gunzTarPerm extractEntry lib/utils/cmd-list.js +2838 silly gunzTarPerm extractEntry node_modules/mkdirp/bin/cmd.js +2839 silly gunzTarPerm extractEntry node_modules/semver/functions/cmp.js +2840 silly gunzTarPerm extractEntry node_modules/semver/functions/coerce.js +2841 silly gunzTarPerm extractEntry node_modules/cli-columns/color.js +2842 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/colors.js +2843 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/colors.js +2844 silly gunzTarPerm extractEntry node_modules/columnify/columnify.js +2845 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/combinator.js +2846 silly gunzTarPerm extractEntry node_modules/wcwidth/combining.js +2847 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/comment.js +2848 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/commit.js +2849 silly gunzTarPerm extractEntry node_modules/debug/src/common.js +2850 silly gunzTarPerm extractEntry node_modules/glob/common.js +2851 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/common.js +2852 silly gunzTarPerm extractEntry node_modules/node-gyp/test/common.js +2853 silly gunzTarPerm extractEntry node_modules/retry/test/common.js +2854 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/common.js +2855 silly gunzTarPerm extractEntry node_modules/semver/classes/comparator.js +2856 silly gunzTarPerm extractEntry node_modules/semver/functions/compare-build.js +2857 silly gunzTarPerm extractEntry node_modules/semver/functions/compare-loose.js +2858 silly gunzTarPerm extractEntry node_modules/semver/functions/compare.js +2859 silly gunzTarPerm extractEntry lib/commands/completion.js +2860 silly gunzTarPerm extractEntry lib/commands/config.js +2861 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/configure.js +2862 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/consistent-resolve.js +2863 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/constants.js +2864 silly gunzTarPerm extractEntry node_modules/minizlib/constants.js +2865 silly gunzTarPerm extractEntry node_modules/semver/internal/constants.js +2866 silly gunzTarPerm extractEntry node_modules/socks/build/common/constants.js +2867 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/constructors.js +2868 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/container.js +2869 silly gunzTarPerm extractEntry node_modules/color-convert/conversions.js +2870 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/copy-file.js +2871 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/create-config-gypi.js +2872 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/create.js +2873 silly gunzTarPerm extractEntry node_modules/tar/lib/create.js +2874 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/css.js +2875 silly gunzTarPerm extractEntry node_modules/cssesc/cssesc.js +2876 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/da.js +2877 silly gunzTarPerm extractEntry node_modules/safer-buffer/dangerous.js +2878 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/dbcs-codec.js +2879 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/dbcs-data.js +2880 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/de.js +2881 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/debug.js +2882 silly gunzTarPerm extractEntry node_modules/cli-table3/src/debug.js +2883 silly gunzTarPerm extractEntry node_modules/semver/internal/debug.js +2884 silly gunzTarPerm extractEntry node_modules/debuglog/debuglog.js +2885 silly gunzTarPerm extractEntry lib/commands/dedupe.js +2886 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/deduper.js +2887 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/deepest-nesting-target.js +2888 silly gunzTarPerm extractEntry node_modules/init-package-json/lib/default-input.js +2889 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/default-opts.js +2890 silly gunzTarPerm extractEntry lib/utils/config/definition.js +2891 silly gunzTarPerm extractEntry lib/utils/config/definitions.js +2892 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/dep-valid.js +2893 silly gunzTarPerm extractEntry lib/commands/deprecate.js +2894 silly gunzTarPerm extractEntry node_modules/treeverse/lib/depth-descent.js +2895 silly gunzTarPerm extractEntry node_modules/treeverse/lib/depth.js +2896 silly gunzTarPerm extractEntry lib/utils/config/describe-all.js +2897 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/destroy.js +2898 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/detail.js +2899 silly gunzTarPerm extractEntry node_modules/dezalgo/dezalgo.js +2900 silly gunzTarPerm extractEntry lib/utils/did-you-mean.js +2901 silly gunzTarPerm extractEntry lib/commands/diff.js +2902 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/diff.js +2903 silly gunzTarPerm extractEntry node_modules/diff/dist/diff.js +2904 silly gunzTarPerm extractEntry node_modules/semver/functions/diff.js +2905 silly gunzTarPerm extractEntry node_modules/pacote/lib/dir.js +2906 silly gunzTarPerm extractEntry lib/utils/display.js +2907 silly gunzTarPerm extractEntry lib/commands/dist-tag.js +2908 silly gunzTarPerm extractEntry node_modules/diff/lib/util/distance-iterator.js +2909 silly gunzTarPerm extractEntry node_modules/diff/lib/convert/dmp.js +2910 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/dns.js +2911 silly gunzTarPerm extractEntry node_modules/retry/example/dns.js +2912 silly gunzTarPerm extractEntry lib/commands/docs.js +2913 silly gunzTarPerm extractEntry lib/commands/doctor.js +2914 silly gunzTarPerm extractEntry node_modules/text-table/example/dotalign.js +2915 silly gunzTarPerm extractEntry node_modules/text-table/test/dotalign.js +2916 silly gunzTarPerm extractEntry node_modules/text-table/example/doubledot.js +2917 silly gunzTarPerm extractEntry node_modules/text-table/test/doubledot.js +2918 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/edge.js +2919 silly gunzTarPerm extractEntry lib/commands/edit.js +2920 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/en-short.js +2921 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/en.js +2922 silly gunzTarPerm extractEntry node_modules/encoding/lib/encoding.js +2923 silly gunzTarPerm extractEntry node_modules/negotiator/lib/encoding.js +2924 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/end-of-stream.js +2925 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/enforce-clean.js +2926 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/ensureObject.js +2927 silly gunzTarPerm extractEntry node_modules/cacache/lib/entry-index.js +2928 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/entry.js +2929 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/env-replace.js +2930 silly gunzTarPerm extractEntry node_modules/semver/functions/eq.js +2931 silly gunzTarPerm extractEntry lib/utils/error-message.js +2932 silly gunzTarPerm extractEntry node_modules/gauge/lib/error.js +2933 silly gunzTarPerm extractEntry node_modules/readable-stream/errors-browser.js +2934 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/errors.js +2935 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/errors.js +2936 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/errors.js +2937 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/errors.js +2938 silly gunzTarPerm extractEntry node_modules/readable-stream/errors.js +2939 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/es.js +2940 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/escape.js +2941 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/event-listener-count.js +2942 silly gunzTarPerm extractEntry lib/commands/exec.js +2943 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/exit-code.js +2944 silly gunzTarPerm extractEntry lib/utils/exit-handler.js +2945 silly gunzTarPerm extractEntry node_modules/readable-stream/experimentalWarning.js +2946 silly gunzTarPerm extractEntry lib/utils/explain-dep.js +2947 silly gunzTarPerm extractEntry lib/utils/explain-eresolve.js +2948 silly gunzTarPerm extractEntry lib/commands/explain.js +2949 silly gunzTarPerm extractEntry lib/commands/explore.js +2950 silly gunzTarPerm extractEntry node_modules/promzard/test/exports.js +2951 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/extendStringPrototype.js +2952 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/extract_description.js +2953 silly gunzTarPerm extractEntry node_modules/tar/lib/extract.js +2954 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/lib/factory.js +2955 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/src/factory.js +2956 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/fetch-error.js +2957 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/fetch.js +2958 silly gunzTarPerm extractEntry node_modules/pacote/lib/fetcher.js +2959 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/file-exists.js +2960 silly gunzTarPerm extractEntry node_modules/pacote/lib/file.js +2961 silly gunzTarPerm extractEntry lib/commands/find-dupes.js +2962 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/find-made.js +2963 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-node-directory.js +2964 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-python.js +2965 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-visualstudio.js +2966 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/find.js +2967 silly gunzTarPerm extractEntry node_modules/bin-links/lib/fix-bin.js +2968 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/fix-owner.js +2969 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/fixer.js +2970 silly gunzTarPerm extractEntry lib/utils/config/flatten.js +2971 silly gunzTarPerm extractEntry node_modules/promzard/test/fn.js +2972 silly gunzTarPerm extractEntry lib/utils/format-bytes.js +2973 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/format-diff.js +2974 silly gunzTarPerm extractEntry lib/utils/format-search-stream.js +2975 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/from-browser.js +2976 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/from-path.js +2977 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/from.js +2978 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/fs.js +2979 silly gunzTarPerm extractEntry lib/commands/fund.js +2980 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/funding.js +2981 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/gather-dep-set.js +2982 silly gunzTarPerm extractEntry node_modules/@colors/colors/themes/generic-logging.js +2983 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/get-bin-from-manifest.js +2984 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/get-dep-spec.js +2985 silly gunzTarPerm extractEntry lib/utils/get-identity.js +2986 silly gunzTarPerm extractEntry node_modules/bin-links/lib/get-node-modules.js +2987 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/get-options.js +2988 silly gunzTarPerm extractEntry node_modules/bin-links/lib/get-paths.js +2989 silly gunzTarPerm extractEntry node_modules/bin-links/lib/get-prefix.js +2990 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/get-workspace-nodes.js +2991 silly gunzTarPerm extractEntry lib/workspaces/get-workspaces.js +2992 silly gunzTarPerm extractEntry node_modules/tar/lib/get-write-flag.js +2993 silly gunzTarPerm extractEntry lib/commands/get.js +2994 silly gunzTarPerm extractEntry node_modules/cacache/lib/get.js +2995 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/getProp.js +2996 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/git-host-info.js +2997 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/git-host.js +2998 silly gunzTarPerm extractEntry node_modules/pacote/lib/git.js +2999 silly gunzTarPerm extractEntry node_modules/glob/glob.js +3000 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/glob.js +3001 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/glob.js +3002 silly gunzTarPerm extractEntry node_modules/graceful-fs/graceful-fs.js +3003 silly gunzTarPerm extractEntry node_modules/semver/functions/gt.js +3004 silly gunzTarPerm extractEntry node_modules/semver/functions/gte.js +3005 silly gunzTarPerm extractEntry node_modules/semver/ranges/gtr.js +3006 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/guards.js +3007 silly gunzTarPerm extractEntry node_modules/gauge/lib/has-color.js +3008 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/system/has-flag.js +3009 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/hash-to-segments.js +3010 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/hash.js +3011 silly gunzTarPerm extractEntry node_modules/tar/lib/header.js +3012 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/headers.js +3013 silly gunzTarPerm extractEntry lib/commands/help-search.js +3014 silly gunzTarPerm extractEntry lib/commands/help.js +3015 silly gunzTarPerm extractEntry node_modules/socks/build/common/helpers.js +3016 silly gunzTarPerm extractEntry node_modules/tar/lib/high-level-opt.js +3017 silly gunzTarPerm extractEntry lib/commands/hook.js +3018 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/https_agent.js +3019 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/id.js +3020 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/ideal.js +3021 silly gunzTarPerm extractEntry node_modules/semver/internal/identifiers.js +3022 silly gunzTarPerm extractEntry node_modules/function-bind/implementation.js +3023 silly gunzTarPerm extractEntry node_modules/imurmurhash/imurmurhash.js +3024 silly gunzTarPerm extractEntry node_modules/imurmurhash/imurmurhash.min.js +3025 silly gunzTarPerm extractEntry node_modules/semver/functions/inc.js +3026 silly gunzTarPerm extractEntry node_modules/diff/lib/index.es6.js +3027 silly gunzTarPerm extractEntry index.js +3028 silly gunzTarPerm extractEntry lib/utils/config/index.js +3029 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/index.js +3030 silly gunzTarPerm extractEntry node_modules/@gar/promisify/index.js +3031 silly gunzTarPerm extractEntry node_modules/@isaacs/string-locale-compare/index.js +3032 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/index.js +3033 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/index.js +3034 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/index.js +3035 silly gunzTarPerm extractEntry node_modules/@npmcli/ci-detect/lib/index.js +3036 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/index.js +3037 silly gunzTarPerm extractEntry node_modules/@npmcli/disparity-colors/lib/index.js +3038 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/index.js +3039 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/index.js +3040 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/rm/index.js +3041 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/index.js +3042 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/index.js +3043 silly gunzTarPerm extractEntry node_modules/@npmcli/map-workspaces/lib/index.js +3044 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/index.js +3045 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/lib/index.js +3046 silly gunzTarPerm extractEntry node_modules/@npmcli/name-from-folder/index.js +3047 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/lib/index.js +3048 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/index.js +3049 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/lib/index.js +3050 silly gunzTarPerm extractEntry node_modules/@npmcli/query/lib/index.js +3051 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.js +3052 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.js +3053 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.js +3054 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.js +3055 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.js +3056 silly gunzTarPerm extractEntry node_modules/ansi-styles/index.js +3057 silly gunzTarPerm extractEntry node_modules/aproba/index.js +3058 silly gunzTarPerm extractEntry node_modules/archy/index.js +3059 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/index.js +3060 silly gunzTarPerm extractEntry node_modules/balanced-match/index.js +3061 silly gunzTarPerm extractEntry node_modules/bin-links/lib/index.js +3062 silly gunzTarPerm extractEntry node_modules/binary-extensions/index.js +3063 silly gunzTarPerm extractEntry node_modules/brace-expansion/index.js +3064 silly gunzTarPerm extractEntry node_modules/builtins/index.js +3065 silly gunzTarPerm extractEntry node_modules/cacache/lib/index.js +3066 silly gunzTarPerm extractEntry node_modules/chalk/source/index.js +3067 silly gunzTarPerm extractEntry node_modules/cidr-regex/index.js +3068 silly gunzTarPerm extractEntry node_modules/clean-stack/index.js +3069 silly gunzTarPerm extractEntry node_modules/cli-columns/index.js +3070 silly gunzTarPerm extractEntry node_modules/cli-table3/index.js +3071 silly gunzTarPerm extractEntry node_modules/cmd-shim/lib/index.js +3072 silly gunzTarPerm extractEntry node_modules/color-convert/index.js +3073 silly gunzTarPerm extractEntry node_modules/color-name/index.js +3074 silly gunzTarPerm extractEntry node_modules/color-support/index.js +3075 silly gunzTarPerm extractEntry node_modules/columnify/index.js +3076 silly gunzTarPerm extractEntry node_modules/common-ancestor-path/index.js +3077 silly gunzTarPerm extractEntry node_modules/concat-map/index.js +3078 silly gunzTarPerm extractEntry node_modules/console-control-strings/index.js +3079 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/index.js +3080 silly gunzTarPerm extractEntry node_modules/debug/src/index.js +3081 silly gunzTarPerm extractEntry node_modules/defaults/index.js +3082 silly gunzTarPerm extractEntry node_modules/delegates/index.js +3083 silly gunzTarPerm extractEntry node_modules/delegates/test/index.js +3084 silly gunzTarPerm extractEntry node_modules/depd/index.js +3085 silly gunzTarPerm extractEntry node_modules/depd/lib/browser/index.js +3086 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/index.js +3087 silly gunzTarPerm extractEntry node_modules/diff/lib/index.js +3088 silly gunzTarPerm extractEntry node_modules/emoji-regex/es2015/index.js +3089 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.js +3090 silly gunzTarPerm extractEntry node_modules/env-paths/index.js +3091 silly gunzTarPerm extractEntry node_modules/err-code/index.js +3092 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/index.js +3093 silly gunzTarPerm extractEntry node_modules/fs-minipass/index.js +3094 silly gunzTarPerm extractEntry node_modules/fs.realpath/index.js +3095 silly gunzTarPerm extractEntry node_modules/function-bind/index.js +3096 silly gunzTarPerm extractEntry node_modules/function-bind/test/index.js +3097 silly gunzTarPerm extractEntry node_modules/gauge/lib/index.js +3098 silly gunzTarPerm extractEntry node_modules/has-flag/index.js +3099 silly gunzTarPerm extractEntry node_modules/has-unicode/index.js +3100 silly gunzTarPerm extractEntry node_modules/has/src/index.js +3101 silly gunzTarPerm extractEntry node_modules/has/test/index.js +3102 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/index.js +3103 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/index.js +3104 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.js +3105 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.js +3106 silly gunzTarPerm extractEntry node_modules/humanize-ms/index.js +3107 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/index.js +3108 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.js +3109 silly gunzTarPerm extractEntry node_modules/ignore-walk/lib/index.js +3110 silly gunzTarPerm extractEntry node_modules/indent-string/index.js +3111 silly gunzTarPerm extractEntry node_modules/infer-owner/index.js +3112 silly gunzTarPerm extractEntry node_modules/ip-regex/index.js +3113 silly gunzTarPerm extractEntry node_modules/is-cidr/index.js +3114 silly gunzTarPerm extractEntry node_modules/is-core-module/index.js +3115 silly gunzTarPerm extractEntry node_modules/is-core-module/test/index.js +3116 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.js +3117 silly gunzTarPerm extractEntry node_modules/is-lambda/index.js +3118 silly gunzTarPerm extractEntry node_modules/isexe/index.js +3119 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/index.js +3120 silly gunzTarPerm extractEntry node_modules/json-stringify-nice/index.js +3121 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.js +3122 silly gunzTarPerm extractEntry node_modules/just-diff/index.js +3123 silly gunzTarPerm extractEntry node_modules/libnpmaccess/lib/index.js +3124 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/index.js +3125 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/index.js +3126 silly gunzTarPerm extractEntry node_modules/libnpmfund/lib/index.js +3127 silly gunzTarPerm extractEntry node_modules/libnpmhook/lib/index.js +3128 silly gunzTarPerm extractEntry node_modules/libnpmorg/lib/index.js +3129 silly gunzTarPerm extractEntry node_modules/libnpmpack/lib/index.js +3130 silly gunzTarPerm extractEntry node_modules/libnpmpublish/lib/index.js +3131 silly gunzTarPerm extractEntry node_modules/libnpmsearch/lib/index.js +3132 silly gunzTarPerm extractEntry node_modules/libnpmteam/lib/index.js +3133 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/index.js +3134 silly gunzTarPerm extractEntry node_modules/lru-cache/index.js +3135 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/index.js +3136 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/index.js +3137 silly gunzTarPerm extractEntry node_modules/minipass-collect/index.js +3138 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/index.js +3139 silly gunzTarPerm extractEntry node_modules/minipass-flush/index.js +3140 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/index.js +3141 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/index.js +3142 silly gunzTarPerm extractEntry node_modules/minipass-sized/index.js +3143 silly gunzTarPerm extractEntry node_modules/minipass/index.js +3144 silly gunzTarPerm extractEntry node_modules/minizlib/index.js +3145 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/index.js +3146 silly gunzTarPerm extractEntry node_modules/mkdirp/index.js +3147 silly gunzTarPerm extractEntry node_modules/ms/index.js +3148 silly gunzTarPerm extractEntry node_modules/negotiator/index.js +3149 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/index.js +3150 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/index.js +3151 silly gunzTarPerm extractEntry node_modules/npm-bundled/index.js +3152 silly gunzTarPerm extractEntry node_modules/npm-install-checks/lib/index.js +3153 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/index.js +3154 silly gunzTarPerm extractEntry node_modules/npm-packlist/bin/index.js +3155 silly gunzTarPerm extractEntry node_modules/npm-packlist/lib/index.js +3156 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/lib/index.js +3157 silly gunzTarPerm extractEntry node_modules/npm-profile/lib/index.js +3158 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/index.js +3159 silly gunzTarPerm extractEntry node_modules/p-map/index.js +3160 silly gunzTarPerm extractEntry node_modules/pacote/lib/index.js +3161 silly gunzTarPerm extractEntry node_modules/parse-conflict-json/lib/index.js +3162 silly gunzTarPerm extractEntry node_modules/path-is-absolute/index.js +3163 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/index.js +3164 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/index.js +3165 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/index.js +3166 silly gunzTarPerm extractEntry node_modules/proc-log/lib/index.js +3167 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/index.js +3168 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/test/index.js +3169 silly gunzTarPerm extractEntry node_modules/promise-call-limit/index.js +3170 silly gunzTarPerm extractEntry node_modules/promise-retry/index.js +3171 silly gunzTarPerm extractEntry node_modules/promzard/example/index.js +3172 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/index.js +3173 silly gunzTarPerm extractEntry node_modules/read-cmd-shim/lib/index.js +3174 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/index.js +3175 silly gunzTarPerm extractEntry node_modules/retry/index.js +3176 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/index.js +3177 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.js +3178 silly gunzTarPerm extractEntry node_modules/semver/classes/index.js +3179 silly gunzTarPerm extractEntry node_modules/semver/index.js +3180 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/index.js +3181 silly gunzTarPerm extractEntry node_modules/set-blocking/index.js +3182 silly gunzTarPerm extractEntry node_modules/signal-exit/index.js +3183 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.js +3184 silly gunzTarPerm extractEntry node_modules/socks/build/index.js +3185 silly gunzTarPerm extractEntry node_modules/spdx-correct/index.js +3186 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/index.js +3187 silly gunzTarPerm extractEntry node_modules/ssri/lib/index.js +3188 silly gunzTarPerm extractEntry node_modules/string-width/index.js +3189 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.js +3190 silly gunzTarPerm extractEntry node_modules/supports-color/index.js +3191 silly gunzTarPerm extractEntry node_modules/tar/index.js +3192 silly gunzTarPerm extractEntry node_modules/text-table/index.js +3193 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/lib/index.js +3194 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/src/index.js +3195 silly gunzTarPerm extractEntry node_modules/treeverse/lib/index.js +3196 silly gunzTarPerm extractEntry node_modules/unique-filename/index.js +3197 silly gunzTarPerm extractEntry node_modules/unique-filename/test/index.js +3198 silly gunzTarPerm extractEntry node_modules/unique-slug/index.js +3199 silly gunzTarPerm extractEntry node_modules/unique-slug/test/index.js +3200 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/index.js +3201 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/lib/index.js +3202 silly gunzTarPerm extractEntry node_modules/walk-up-path/index.js +3203 silly gunzTarPerm extractEntry node_modules/wcwidth/index.js +3204 silly gunzTarPerm extractEntry node_modules/wcwidth/test/index.js +3205 silly gunzTarPerm extractEntry node_modules/write-file-atomic/lib/index.js +3206 silly gunzTarPerm extractEntry node_modules/err-code/index.umd.js +3207 silly gunzTarPerm extractEntry node_modules/inflight/inflight.js +3208 silly gunzTarPerm extractEntry node_modules/promise-inflight/inflight.js +3209 silly gunzTarPerm extractEntry node_modules/inherits/inherits_browser.js +3210 silly gunzTarPerm extractEntry node_modules/inherits/inherits.js +3211 silly gunzTarPerm extractEntry node_modules/ini/lib/ini.js +3212 silly gunzTarPerm extractEntry node_modules/promzard/example/npm-init/init-input.js +3213 silly gunzTarPerm extractEntry node_modules/init-package-json/lib/init-package-json.js +3214 silly gunzTarPerm extractEntry lib/commands/init.js +3215 silly gunzTarPerm extractEntry node_modules/promzard/example/npm-init/init.js +3216 silly gunzTarPerm extractEntry lib/commands/install-ci-test.js +3217 silly gunzTarPerm extractEntry lib/commands/install-test.js +3218 silly gunzTarPerm extractEntry lib/commands/install.js +3219 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/install.js +3220 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/install.js +3221 silly gunzTarPerm extractEntry lib/utils/completion/installed-deep.js +3222 silly gunzTarPerm extractEntry lib/utils/completion/installed-shallow.js +3223 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/internal.js +3224 silly gunzTarPerm extractEntry node_modules/semver/ranges/intersects.js +3225 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/inventory.js +3226 silly gunzTarPerm extractEntry node_modules/ip/lib/ip.js +3227 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/is-clean.js +3228 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/is-package-bin.js +3229 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/is-server-package.js +3230 silly gunzTarPerm extractEntry lib/utils/is-windows.js +3231 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/is-windows.js +3232 silly gunzTarPerm extractEntry node_modules/bin-links/lib/is-windows.js +3233 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/is-windows.js +3234 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/is.js +3235 silly gunzTarPerm extractEntry node_modules/yallist/iterator.js +3236 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/json.js +3237 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/json.js +3238 silly gunzTarPerm extractEntry node_modules/jsonparse/jsonparse.js +3239 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/key.js +3240 silly gunzTarPerm extractEntry node_modules/negotiator/lib/language.js +3241 silly gunzTarPerm extractEntry node_modules/tar/lib/large-numbers.js +3242 silly gunzTarPerm extractEntry node_modules/cli-table3/src/layout-manager.js +3243 silly gunzTarPerm extractEntry node_modules/graceful-fs/legacy-streams.js +3244 silly gunzTarPerm extractEntry lib/auth/legacy.js +3245 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/license.js +3246 silly gunzTarPerm extractEntry lib/lifecycle-cmd.js +3247 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/line.js +3248 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/lines-to-revs.js +3249 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-bin.js +3250 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-bins.js +3251 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-gently.js +3252 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-mans.js +3253 silly gunzTarPerm extractEntry lib/commands/link.js +3254 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/link.js +3255 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/list.js +3256 silly gunzTarPerm extractEntry node_modules/tar/lib/list.js +3257 silly gunzTarPerm extractEntry lib/commands/ll.js +3258 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/load-actual.js +3259 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +3260 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/load-workspaces.js +3261 silly gunzTarPerm extractEntry lib/utils/log-file.js +3262 silly gunzTarPerm extractEntry lib/utils/log-shim.js +3263 silly gunzTarPerm extractEntry node_modules/npmlog/lib/log.js +3264 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/logging.js +3265 silly gunzTarPerm extractEntry lib/commands/logout.js +3266 silly gunzTarPerm extractEntry lib/commands/ls.js +3267 silly gunzTarPerm extractEntry node_modules/semver/functions/lt.js +3268 silly gunzTarPerm extractEntry node_modules/semver/functions/lte.js +3269 silly gunzTarPerm extractEntry node_modules/semver/ranges/ltr.js +3270 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/lib/main.js +3271 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/test/main.js +3272 silly gunzTarPerm extractEntry node_modules/semver/functions/major.js +3273 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/make_warning.js +3274 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/make-error.js +3275 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/make-spawn-args.js +3276 silly gunzTarPerm extractEntry node_modules/bin-links/lib/man-target.js +3277 silly gunzTarPerm extractEntry node_modules/concat-map/example/map.js +3278 silly gunzTarPerm extractEntry node_modules/concat-map/test/map.js +3279 silly gunzTarPerm extractEntry node_modules/semver/ranges/max-satisfying.js +3280 silly gunzTarPerm extractEntry node_modules/negotiator/lib/mediaType.js +3281 silly gunzTarPerm extractEntry node_modules/cacache/lib/memoization.js +3282 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/merge.js +3283 silly gunzTarPerm extractEntry node_modules/semver/ranges/min-satisfying.js +3284 silly gunzTarPerm extractEntry node_modules/semver/ranges/min-version.js +3285 silly gunzTarPerm extractEntry node_modules/minimatch/minimatch.js +3286 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/minimatch.js +3287 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/minimatch.js +3288 silly gunzTarPerm extractEntry node_modules/semver/functions/minor.js +3289 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdir.js +3290 silly gunzTarPerm extractEntry node_modules/tar/lib/mkdir.js +3291 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/mkdirp-manual.js +3292 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/mkdirp-native.js +3293 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdtemp.js +3294 silly gunzTarPerm extractEntry node_modules/tar/lib/mode-fix.js +3295 silly gunzTarPerm extractEntry node_modules/isexe/mode.js +3296 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/move-file.js +3297 silly gunzTarPerm extractEntry node_modules/archy/examples/multi_line.js +3298 silly gunzTarPerm extractEntry node_modules/archy/test/multi_line.js +3299 silly gunzTarPerm extractEntry node_modules/mute-stream/mute.js +3300 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/namespace.js +3301 silly gunzTarPerm extractEntry node_modules/semver/functions/neq.js +3302 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/nerf-dart.js +3303 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/nesting.js +3304 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/no-tty.js +3305 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/nobin.js +3306 silly gunzTarPerm extractEntry node_modules/node-gyp/bin/node-gyp.js +3307 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/node-gyp.js +3308 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/node.js +3309 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/node.js +3310 silly gunzTarPerm extractEntry node_modules/debug/src/node.js +3311 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/node.js +3312 silly gunzTarPerm extractEntry node_modules/util-deprecate/node.js +3313 silly gunzTarPerm extractEntry node_modules/archy/test/non_unicode.js +3314 silly gunzTarPerm extractEntry node_modules/nopt/bin/nopt.js +3315 silly gunzTarPerm extractEntry node_modules/nopt/lib/nopt.js +3316 silly gunzTarPerm extractEntry node_modules/@colors/colors/examples/normal-usage.js +3317 silly gunzTarPerm extractEntry node_modules/tar/lib/normalize-unicode.js +3318 silly gunzTarPerm extractEntry node_modules/tar/lib/normalize-windows-path.js +3319 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/normalize.js +3320 silly gunzTarPerm extractEntry node_modules/npm-package-arg/lib/npa.js +3321 silly gunzTarPerm extractEntry bin/npm-cli.js +3322 silly gunzTarPerm extractEntry lib/utils/npm-usage.js +3323 silly gunzTarPerm extractEntry node_modules/npm-user-validate/npm-user-validate.js +3324 silly gunzTarPerm extractEntry lib/npm.js +3325 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/npm.js +3326 silly gunzTarPerm extractEntry bin/npx-cli.js +3327 silly gunzTarPerm extractEntry lib/auth/oauth.js +3328 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/object.js +3329 silly gunzTarPerm extractEntry node_modules/jsonparse/test/offset.js +3330 silly gunzTarPerm extractEntry node_modules/fs.realpath/old.js +3331 silly gunzTarPerm extractEntry node_modules/once/once.js +3332 silly gunzTarPerm extractEntry lib/utils/open-url-prompt.js +3333 silly gunzTarPerm extractEntry lib/utils/open-url.js +3334 silly gunzTarPerm extractEntry node_modules/opener/bin/opener-bin.js +3335 silly gunzTarPerm extractEntry node_modules/opener/lib/opener.js +3336 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/optional-set.js +3337 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/options.js +3338 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/options.js +3339 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/opts-arg.js +3340 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/opts.js +3341 silly gunzTarPerm extractEntry lib/commands/org.js +3342 silly gunzTarPerm extractEntry lib/utils/otplease.js +3343 silly gunzTarPerm extractEntry lib/commands/outdated.js +3344 silly gunzTarPerm extractEntry node_modules/semver/ranges/outside.js +3345 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.js +3346 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/override-resolves.js +3347 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/override-set.js +3348 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/owner-sync.js +3349 silly gunzTarPerm extractEntry lib/commands/owner.js +3350 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/owner.js +3351 silly gunzTarPerm extractEntry lib/commands/pack.js +3352 silly gunzTarPerm extractEntry node_modules/tar/lib/pack.js +3353 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/package-envs.js +3354 silly gunzTarPerm extractEntry lib/package-url-cmd.js +3355 silly gunzTarPerm extractEntry node_modules/diff/lib/util/params.js +3356 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/parse-field.js +3357 silly gunzTarPerm extractEntry node_modules/semver/internal/parse-options.js +3358 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.js +3359 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/parse.js +3360 silly gunzTarPerm extractEntry node_modules/semver/functions/parse.js +3361 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/parse.js +3362 silly gunzTarPerm extractEntry node_modules/tar/lib/parse.js +3363 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/parser.js +3364 silly gunzTarPerm extractEntry node_modules/semver/functions/patch.js +3365 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/path-arg.js +3366 silly gunzTarPerm extractEntry node_modules/tar/lib/path-reservations.js +3367 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/path.js +3368 silly gunzTarPerm extractEntry node_modules/minimatch/lib/path.js +3369 silly gunzTarPerm extractEntry node_modules/tar/lib/pax.js +3370 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/peer-entry-sets.js +3371 silly gunzTarPerm extractEntry lib/commands/ping.js +3372 silly gunzTarPerm extractEntry lib/utils/ping.js +3373 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/pipeline.js +3374 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/pipeline.js +3375 silly gunzTarPerm extractEntry lib/commands/pkg.js +3376 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/place-dep.js +3377 silly gunzTarPerm extractEntry node_modules/gauge/lib/plumbing.js +3378 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/policy.js +3379 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/polyfill.js +3380 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/rm/polyfill.js +3381 silly gunzTarPerm extractEntry node_modules/graceful-fs/polyfills.js +3382 silly gunzTarPerm extractEntry lib/commands/prefix.js +3383 silly gunzTarPerm extractEntry node_modules/semver/preload.js +3384 silly gunzTarPerm extractEntry node_modules/semver/functions/prerelease.js +3385 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/prettify.js +3386 silly gunzTarPerm extractEntry node_modules/jsonparse/test/primitives.js +3387 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/print-tree.js +3388 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/printable.js +3389 silly gunzTarPerm extractEntry node_modules/node-gyp/test/process-exec-sync.js +3390 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/process-release.js +3391 silly gunzTarPerm extractEntry node_modules/gauge/lib/process.js +3392 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/processor.js +3393 silly gunzTarPerm extractEntry lib/commands/profile.js +3394 silly gunzTarPerm extractEntry node_modules/gauge/lib/progress-bar.js +3395 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.js +3396 silly gunzTarPerm extractEntry node_modules/promzard/promzard.js +3397 silly gunzTarPerm extractEntry lib/commands/prune.js +3398 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/prune.js +3399 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/pruner.js +3400 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/pseudo.js +3401 silly gunzTarPerm extractEntry lib/commands/publish.js +3402 silly gunzTarPerm extractEntry node_modules/libnpmpublish/lib/publish.js +3403 silly gunzTarPerm extractEntry lib/utils/pulse-till-done.js +3404 silly gunzTarPerm extractEntry node_modules/cacache/lib/put.js +3405 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QR8bitByte.js +3406 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRBitBuffer.js +3407 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/bin/qrcode-terminal.js +3408 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js +3409 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRMaskPattern.js +3410 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRMath.js +3411 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRMode.js +3412 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js +3413 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRRSBlock.js +3414 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRUtil.js +3415 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/query-selector-all.js +3416 silly gunzTarPerm extractEntry lib/commands/query.js +3417 silly gunzTarPerm extractEntry lib/utils/queryable.js +3418 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/quiet.js +3419 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/rainbow.js +3420 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/random.js +3421 silly gunzTarPerm extractEntry node_modules/semver/classes/range.js +3422 silly gunzTarPerm extractEntry node_modules/asap/raw.js +3423 silly gunzTarPerm extractEntry node_modules/semver/functions/rcompare.js +3424 silly gunzTarPerm extractEntry node_modules/semver/internal/re.js +3425 silly gunzTarPerm extractEntry node_modules/tar/lib/read-entry.js +3426 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/read-json.js +3427 silly gunzTarPerm extractEntry node_modules/read-package-json/lib/read-json.js +3428 silly gunzTarPerm extractEntry lib/utils/read-user-info.js +3429 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/read.js +3430 silly gunzTarPerm extractEntry node_modules/read/lib/read.js +3431 silly gunzTarPerm extractEntry node_modules/readable-stream/readable-browser.js +3432 silly gunzTarPerm extractEntry node_modules/readable-stream/readable.js +3433 silly gunzTarPerm extractEntry node_modules/readdir-scoped-modules/readdir.js +3434 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/realpath.js +3435 silly gunzTarPerm extractEntry lib/commands/rebuild.js +3436 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/rebuild.js +3437 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/rebuild.js +3438 silly gunzTarPerm extractEntry node_modules/socks/build/common/receivebuffer.js +3439 silly gunzTarPerm extractEntry node_modules/pacote/lib/registry.js +3440 silly gunzTarPerm extractEntry lib/utils/reify-finish.js +3441 silly gunzTarPerm extractEntry lib/utils/reify-output.js +3442 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/reify.js +3443 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/reify.js +3444 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/relpath.js +3445 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/remote.js +3446 silly gunzTarPerm extractEntry node_modules/pacote/lib/remote.js +3447 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/remove.js +3448 silly gunzTarPerm extractEntry node_modules/gauge/lib/render-template.js +3449 silly gunzTarPerm extractEntry lib/utils/replace-info.js +3450 silly gunzTarPerm extractEntry node_modules/tar/lib/replace.js +3451 silly gunzTarPerm extractEntry lib/commands/repo.js +3452 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/request.js +3453 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/reset-dep-flags.js +3454 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/response.js +3455 silly gunzTarPerm extractEntry lib/commands/restart.js +3456 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/retire-path.js +3457 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/retrieve-tag.js +3458 silly gunzTarPerm extractEntry node_modules/retry/lib/retry_operation.js +3459 silly gunzTarPerm extractEntry node_modules/retry/lib/retry.js +3460 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/revs.js +3461 silly gunzTarPerm extractEntry node_modules/rimraf/rimraf.js +3462 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/rm.js +3463 silly gunzTarPerm extractEntry node_modules/cacache/lib/rm.js +3464 silly gunzTarPerm extractEntry node_modules/just-diff-apply/rollup.config.js +3465 silly gunzTarPerm extractEntry node_modules/just-diff/rollup.config.js +3466 silly gunzTarPerm extractEntry lib/commands/root.js +3467 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/root.js +3468 silly gunzTarPerm extractEntry node_modules/color-convert/route.js +3469 silly gunzTarPerm extractEntry node_modules/semver/functions/rsort.js +3470 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/run-script-pkg.js +3471 silly gunzTarPerm extractEntry lib/commands/run-script.js +3472 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/run-script.js +3473 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/run-script.js +3474 silly gunzTarPerm extractEntry node_modules/diff/runtime.js +3475 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/safe_format.js +3476 silly gunzTarPerm extractEntry node_modules/@colors/colors/examples/safe-string.js +3477 silly gunzTarPerm extractEntry node_modules/@colors/colors/safe.js +3478 silly gunzTarPerm extractEntry node_modules/safer-buffer/safer.js +3479 silly gunzTarPerm extractEntry lib/auth/saml.js +3480 silly gunzTarPerm extractEntry node_modules/semver/functions/satisfies.js +3481 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-codec.js +3482 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-data-generated.js +3483 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-data.js +3484 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/scan.js +3485 silly gunzTarPerm extractEntry lib/commands/search.js +3486 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/selector.js +3487 silly gunzTarPerm extractEntry node_modules/semver/bin/semver.js +3488 silly gunzTarPerm extractEntry node_modules/semver/classes/semver.js +3489 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/sentence.js +3490 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/set-envs.js +3491 silly gunzTarPerm extractEntry node_modules/gauge/lib/set-immediate.js +3492 silly gunzTarPerm extractEntry node_modules/gauge/lib/set-interval.js +3493 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/set-path.js +3494 silly gunzTarPerm extractEntry lib/commands/set-script.js +3495 silly gunzTarPerm extractEntry lib/commands/set.js +3496 silly gunzTarPerm extractEntry node_modules/bin-links/lib/shim-bin.js +3497 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/should-print-patch.js +3498 silly gunzTarPerm extractEntry lib/commands/shrinkwrap.js +3499 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/shrinkwrap.js +3500 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/shrinkwrap.js +3501 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/signal-handling.js +3502 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/signal-manager.js +3503 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/signals.js +3504 silly gunzTarPerm extractEntry node_modules/signal-exit/signals.js +3505 silly gunzTarPerm extractEntry node_modules/node-gyp/test/simple-proxy.js +3506 silly gunzTarPerm extractEntry node_modules/promzard/test/simple.js +3507 silly gunzTarPerm extractEntry node_modules/semver/ranges/simplify.js +3508 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/small-qrcode.js +3509 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/smartbuffer.js +3510 silly gunzTarPerm extractEntry node_modules/socks/build/client/socksclient.js +3511 silly gunzTarPerm extractEntry node_modules/semver/functions/sort.js +3512 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/sortAscending.js +3513 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/sorter.js +3514 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/spawn.js +3515 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/spec-from-lock.js +3516 silly gunzTarPerm extractEntry node_modules/gauge/lib/spin.js +3517 silly gunzTarPerm extractEntry lib/auth/sso.js +3518 silly gunzTarPerm extractEntry lib/commands/star.js +3519 silly gunzTarPerm extractEntry lib/commands/stars.js +3520 silly gunzTarPerm extractEntry lib/commands/start.js +3521 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/state.js +3522 silly gunzTarPerm extractEntry lib/commands/stop.js +3523 silly gunzTarPerm extractEntry node_modules/retry/example/stop.js +3524 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/stream-browser.js +3525 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/stream.js +3526 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/streams.js +3527 silly gunzTarPerm extractEntry node_modules/string_decoder/lib/string_decoder.js +3528 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/string.js +3529 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/string.js +3530 silly gunzTarPerm extractEntry node_modules/tar/lib/strip-absolute-path.js +3531 silly gunzTarPerm extractEntry node_modules/tar/lib/strip-trailing-slashes.js +3532 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/stripComments.js +3533 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/styles.js +3534 silly gunzTarPerm extractEntry node_modules/semver/ranges/subset.js +3535 silly gunzTarPerm extractEntry node_modules/promzard/example/substack-input.js +3536 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/system/supports-colors.js +3537 silly gunzTarPerm extractEntry node_modules/jsonparse/test/surrogate.js +3538 silly gunzTarPerm extractEntry node_modules/glob/sync.js +3539 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/sync.js +3540 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/sync.js +3541 silly gunzTarPerm extractEntry node_modules/cli-table3/src/table.js +3542 silly gunzTarPerm extractEntry node_modules/text-table/example/table.js +3543 silly gunzTarPerm extractEntry node_modules/text-table/test/table.js +3544 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/tag.js +3545 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/tag.js +3546 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/tar-create-options.js +3547 silly gunzTarPerm extractEntry lib/utils/tar.js +3548 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/tarball.js +3549 silly gunzTarPerm extractEntry lib/commands/team.js +3550 silly gunzTarPerm extractEntry node_modules/gauge/lib/template-item.js +3551 silly gunzTarPerm extractEntry node_modules/chalk/source/templates.js +3552 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-addon.js +3553 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-configure-python.js +3554 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-create-config-gypi.js +3555 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-download.js +3556 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-accessible-sync.js +3557 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-node-directory.js +3558 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-python.js +3559 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-visualstudio.js +3560 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-forever.js +3561 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-install.js +3562 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-options.js +3563 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-process-release.js +3564 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-retry-operation.js +3565 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-retry-wrap.js +3566 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-timeouts.js +3567 silly gunzTarPerm extractEntry lib/commands/test.js +3568 silly gunzTarPerm extractEntry node_modules/cli-columns/test.js +3569 silly gunzTarPerm extractEntry node_modules/defaults/test.js +3570 silly gunzTarPerm extractEntry node_modules/encoding/test/test.js +3571 silly gunzTarPerm extractEntry node_modules/err-code/test/test.js +3572 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/test.js +3573 silly gunzTarPerm extractEntry node_modules/is-lambda/test.js +3574 silly gunzTarPerm extractEntry node_modules/promise-retry/test/test.js +3575 silly gunzTarPerm extractEntry node_modules/safer-buffer/tests.js +3576 silly gunzTarPerm extractEntry node_modules/emoji-regex/es2015/text.js +3577 silly gunzTarPerm extractEntry node_modules/emoji-regex/text.js +3578 silly gunzTarPerm extractEntry node_modules/gauge/lib/theme-set.js +3579 silly gunzTarPerm extractEntry node_modules/gauge/lib/themes.js +3580 silly gunzTarPerm extractEntry lib/utils/timers.js +3581 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/timers.js +3582 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/tmp.js +3583 silly gunzTarPerm extractEntry node_modules/cmd-shim/lib/to-batch-syntax.js +3584 silly gunzTarPerm extractEntry node_modules/semver/ranges/to-comparators.js +3585 silly gunzTarPerm extractEntry lib/commands/token.js +3586 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/tokenize.js +3587 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/tokenTypes.js +3588 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-base.js +3589 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-group.js +3590 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-stream.js +3591 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/tracker.js +3592 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker.js +3593 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/trailing-slashes.js +3594 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/custom/trap.js +3595 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/tree-check.js +3596 silly gunzTarPerm extractEntry node_modules/jsonparse/examples/twitterfeed.js +3597 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/type-defs.js +3598 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/type-description.js +3599 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.js +3600 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/types.js +3601 silly gunzTarPerm extractEntry node_modules/tar/lib/types.js +3602 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/umask.js +3603 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/unesc.js +3604 silly gunzTarPerm extractEntry lib/commands/uninstall.js +3605 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/universal.js +3606 silly gunzTarPerm extractEntry node_modules/tar/lib/unpack.js +3607 silly gunzTarPerm extractEntry lib/commands/unpublish.js +3608 silly gunzTarPerm extractEntry node_modules/libnpmpublish/lib/unpublish.js +3609 silly gunzTarPerm extractEntry lib/commands/unstar.js +3610 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/untar.js +3611 silly gunzTarPerm extractEntry node_modules/jsonparse/test/unvalid.js +3612 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/update-dependencies.js +3613 silly gunzTarPerm extractEntry lib/utils/update-notifier.js +3614 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/update-scripts.js +3615 silly gunzTarPerm extractEntry lib/workspaces/update-workspaces.js +3616 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/update-workspaces.js +3617 silly gunzTarPerm extractEntry lib/commands/update.js +3618 silly gunzTarPerm extractEntry node_modules/tar/lib/update.js +3619 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/use-native.js +3620 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf16.js +3621 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf32.js +3622 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf7.js +3623 silly gunzTarPerm extractEntry node_modules/jsonparse/test/utf8.js +3624 silly gunzTarPerm extractEntry node_modules/chalk/source/util.js +3625 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/util.js +3626 silly gunzTarPerm extractEntry node_modules/socks/build/common/util.js +3627 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/utils.js +3628 silly gunzTarPerm extractEntry node_modules/cli-table3/src/utils.js +3629 silly gunzTarPerm extractEntry node_modules/columnify/utils.js +3630 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/utils.js +3631 silly gunzTarPerm extractEntry node_modules/semver/functions/valid.js +3632 silly gunzTarPerm extractEntry node_modules/semver/ranges/valid.js +3633 silly gunzTarPerm extractEntry lib/utils/validate-lockfile.js +3634 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/validate-options.js +3635 silly gunzTarPerm extractEntry node_modules/promzard/test/validate.js +3636 silly gunzTarPerm extractEntry node_modules/cacache/lib/verify.js +3637 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/version-from-tgz.js +3638 silly gunzTarPerm extractEntry lib/commands/version.js +3639 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/version.js +3640 silly gunzTarPerm extractEntry lib/commands/view.js +3641 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/virtual.js +3642 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/vuln.js +3643 silly gunzTarPerm extractEntry node_modules/tar/lib/warn-mixin.js +3644 silly gunzTarPerm extractEntry lib/utils/web-auth.js +3645 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/which.js +3646 silly gunzTarPerm extractEntry node_modules/which/which.js +3647 silly gunzTarPerm extractEntry lib/commands/whoami.js +3648 silly gunzTarPerm extractEntry node_modules/gauge/lib/wide-truncate.js +3649 silly gunzTarPerm extractEntry node_modules/columnify/width.js +3650 silly gunzTarPerm extractEntry node_modules/tar/lib/winchars.js +3651 silly gunzTarPerm extractEntry node_modules/isexe/windows.js +3652 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-owner-sync.js +3653 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-owner.js +3654 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-temp-dir.js +3655 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/word.js +3656 silly gunzTarPerm extractEntry node_modules/wrappy/wrappy.js +3657 silly gunzTarPerm extractEntry node_modules/tar/lib/write-entry.js +3658 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/write-file.js +3659 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/write-json.js +3660 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/write.js +3661 silly gunzTarPerm extractEntry node_modules/diff/lib/convert/xml.js +3662 silly gunzTarPerm extractEntry node_modules/yallist/yallist.js +3663 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/yarn-lock.js +3664 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/custom/zalgo.js +3665 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/zebra.js +3666 silly gunzTarPerm extractEntry node_modules/jsonparse/samplejson/basic.json +3667 silly gunzTarPerm extractEntry node_modules/jsonparse/samplejson/basic2.json +3668 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/big5-added.json +3669 silly gunzTarPerm extractEntry node_modules/binary-extensions/binary-extensions.json +3670 silly gunzTarPerm extractEntry node_modules/err-code/bower.json +3671 silly gunzTarPerm extractEntry node_modules/is-core-module/core.json +3672 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp936.json +3673 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp949.json +3674 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp950.json +3675 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/deprecated.json +3676 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/eucjp.json +3677 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +3678 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/gbk-added.json +3679 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/index.json +3680 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/index.json +3681 silly gunzTarPerm extractEntry node_modules/minipass-sized/package-lock.json +3682 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/package-lock.json +3683 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/package-lock.json +3684 silly gunzTarPerm extractEntry node_modules/@colors/colors/package.json +3685 silly gunzTarPerm extractEntry node_modules/@gar/promisify/package.json +3686 silly gunzTarPerm extractEntry node_modules/@isaacs/string-locale-compare/package.json +3687 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/package.json +3688 silly gunzTarPerm extractEntry node_modules/@npmcli/ci-detect/package.json +3689 silly gunzTarPerm extractEntry node_modules/@npmcli/config/package.json +3690 silly gunzTarPerm extractEntry node_modules/@npmcli/disparity-colors/package.json +3691 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/package.json +3692 silly gunzTarPerm extractEntry node_modules/@npmcli/git/package.json +3693 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/package.json +3694 silly gunzTarPerm extractEntry node_modules/@npmcli/map-workspaces/package.json +3695 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/package.json +3696 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/package.json +3697 silly gunzTarPerm extractEntry node_modules/@npmcli/name-from-folder/package.json +3698 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/package.json +3699 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/package.json +3700 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/package.json +3701 silly gunzTarPerm extractEntry node_modules/@npmcli/query/package.json +3702 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/package.json +3703 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/package.json +3704 silly gunzTarPerm extractEntry node_modules/abbrev/package.json +3705 silly gunzTarPerm extractEntry node_modules/agent-base/package.json +3706 silly gunzTarPerm extractEntry node_modules/agentkeepalive/package.json +3707 silly gunzTarPerm extractEntry node_modules/aggregate-error/package.json +3708 silly gunzTarPerm extractEntry node_modules/ansi-regex/package.json +3709 silly gunzTarPerm extractEntry node_modules/ansi-styles/package.json +3710 silly gunzTarPerm extractEntry node_modules/aproba/package.json +3711 silly gunzTarPerm extractEntry node_modules/archy/package.json +3712 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/package.json +3713 silly gunzTarPerm extractEntry node_modules/asap/package.json +3714 silly gunzTarPerm extractEntry node_modules/balanced-match/package.json +3715 silly gunzTarPerm extractEntry node_modules/bin-links/package.json +3716 silly gunzTarPerm extractEntry node_modules/binary-extensions/package.json +3717 silly gunzTarPerm extractEntry node_modules/brace-expansion/package.json +3718 silly gunzTarPerm extractEntry node_modules/builtins/package.json +3719 silly gunzTarPerm extractEntry node_modules/cacache/package.json +3720 silly gunzTarPerm extractEntry node_modules/chalk/package.json +3721 silly gunzTarPerm extractEntry node_modules/chownr/package.json +3722 silly gunzTarPerm extractEntry node_modules/cidr-regex/package.json +3723 silly gunzTarPerm extractEntry node_modules/clean-stack/package.json +3724 silly gunzTarPerm extractEntry node_modules/cli-columns/package.json +3725 silly gunzTarPerm extractEntry node_modules/cli-table3/package.json +3726 silly gunzTarPerm extractEntry node_modules/clone/package.json +3727 silly gunzTarPerm extractEntry node_modules/cmd-shim/package.json +3728 silly gunzTarPerm extractEntry node_modules/color-convert/package.json +3729 silly gunzTarPerm extractEntry node_modules/color-name/package.json +3730 silly gunzTarPerm extractEntry node_modules/color-support/package.json +3731 silly gunzTarPerm extractEntry node_modules/columnify/package.json +3732 silly gunzTarPerm extractEntry node_modules/common-ancestor-path/package.json +3733 silly gunzTarPerm extractEntry node_modules/concat-map/package.json +3734 silly gunzTarPerm extractEntry node_modules/console-control-strings/package.json +3735 silly gunzTarPerm extractEntry node_modules/cssesc/package.json +3736 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/package.json +3737 silly gunzTarPerm extractEntry node_modules/debug/package.json +3738 silly gunzTarPerm extractEntry node_modules/debuglog/package.json +3739 silly gunzTarPerm extractEntry node_modules/defaults/package.json +3740 silly gunzTarPerm extractEntry node_modules/delegates/package.json +3741 silly gunzTarPerm extractEntry node_modules/depd/package.json +3742 silly gunzTarPerm extractEntry node_modules/dezalgo/package.json +3743 silly gunzTarPerm extractEntry node_modules/diff/package.json +3744 silly gunzTarPerm extractEntry node_modules/emoji-regex/package.json +3745 silly gunzTarPerm extractEntry node_modules/encoding/package.json +3746 silly gunzTarPerm extractEntry node_modules/env-paths/package.json +3747 silly gunzTarPerm extractEntry node_modules/err-code/package.json +3748 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/package.json +3749 silly gunzTarPerm extractEntry node_modules/fs-minipass/package.json +3750 silly gunzTarPerm extractEntry node_modules/fs.realpath/package.json +3751 silly gunzTarPerm extractEntry node_modules/function-bind/package.json +3752 silly gunzTarPerm extractEntry node_modules/gauge/package.json +3753 silly gunzTarPerm extractEntry node_modules/glob/package.json +3754 silly gunzTarPerm extractEntry node_modules/graceful-fs/package.json +3755 silly gunzTarPerm extractEntry node_modules/has-flag/package.json +3756 silly gunzTarPerm extractEntry node_modules/has-unicode/package.json +3757 silly gunzTarPerm extractEntry node_modules/has/package.json +3758 silly gunzTarPerm extractEntry node_modules/hosted-git-info/package.json +3759 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/package.json +3760 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/package.json +3761 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/package.json +3762 silly gunzTarPerm extractEntry node_modules/humanize-ms/package.json +3763 silly gunzTarPerm extractEntry node_modules/iconv-lite/package.json +3764 silly gunzTarPerm extractEntry node_modules/ignore-walk/package.json +3765 silly gunzTarPerm extractEntry node_modules/imurmurhash/package.json +3766 silly gunzTarPerm extractEntry node_modules/indent-string/package.json +3767 silly gunzTarPerm extractEntry node_modules/infer-owner/package.json +3768 silly gunzTarPerm extractEntry node_modules/inflight/package.json +3769 silly gunzTarPerm extractEntry node_modules/inherits/package.json +3770 silly gunzTarPerm extractEntry node_modules/ini/package.json +3771 silly gunzTarPerm extractEntry node_modules/init-package-json/package.json +3772 silly gunzTarPerm extractEntry node_modules/ip-regex/package.json +3773 silly gunzTarPerm extractEntry node_modules/ip/package.json +3774 silly gunzTarPerm extractEntry node_modules/is-cidr/package.json +3775 silly gunzTarPerm extractEntry node_modules/is-core-module/package.json +3776 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/package.json +3777 silly gunzTarPerm extractEntry node_modules/is-lambda/package.json +3778 silly gunzTarPerm extractEntry node_modules/isexe/package.json +3779 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/package.json +3780 silly gunzTarPerm extractEntry node_modules/json-stringify-nice/package.json +3781 silly gunzTarPerm extractEntry node_modules/jsonparse/package.json +3782 silly gunzTarPerm extractEntry node_modules/just-diff-apply/package.json +3783 silly gunzTarPerm extractEntry node_modules/just-diff/package.json +3784 silly gunzTarPerm extractEntry node_modules/libnpmaccess/package.json +3785 silly gunzTarPerm extractEntry node_modules/libnpmdiff/package.json +3786 silly gunzTarPerm extractEntry node_modules/libnpmexec/package.json +3787 silly gunzTarPerm extractEntry node_modules/libnpmfund/package.json +3788 silly gunzTarPerm extractEntry node_modules/libnpmhook/package.json +3789 silly gunzTarPerm extractEntry node_modules/libnpmorg/package.json +3790 silly gunzTarPerm extractEntry node_modules/libnpmpack/package.json +3791 silly gunzTarPerm extractEntry node_modules/libnpmpublish/package.json +3792 silly gunzTarPerm extractEntry node_modules/libnpmsearch/package.json +3793 silly gunzTarPerm extractEntry node_modules/libnpmteam/package.json +3794 silly gunzTarPerm extractEntry node_modules/libnpmversion/package.json +3795 silly gunzTarPerm extractEntry node_modules/lru-cache/package.json +3796 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/package.json +3797 silly gunzTarPerm extractEntry node_modules/minimatch/package.json +3798 silly gunzTarPerm extractEntry node_modules/minipass-collect/package.json +3799 silly gunzTarPerm extractEntry node_modules/minipass-fetch/package.json +3800 silly gunzTarPerm extractEntry node_modules/minipass-flush/package.json +3801 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/package.json +3802 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/package.json +3803 silly gunzTarPerm extractEntry node_modules/minipass-sized/package.json +3804 silly gunzTarPerm extractEntry node_modules/minipass/package.json +3805 silly gunzTarPerm extractEntry node_modules/minizlib/package.json +3806 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/package.json +3807 silly gunzTarPerm extractEntry node_modules/mkdirp/package.json +3808 silly gunzTarPerm extractEntry node_modules/ms/package.json +3809 silly gunzTarPerm extractEntry node_modules/mute-stream/package.json +3810 silly gunzTarPerm extractEntry node_modules/negotiator/package.json +3811 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/package.json +3812 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/package.json +3813 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/package.json +3814 silly gunzTarPerm extractEntry node_modules/node-gyp/package.json +3815 silly gunzTarPerm extractEntry node_modules/nopt/package.json +3816 silly gunzTarPerm extractEntry node_modules/normalize-package-data/package.json +3817 silly gunzTarPerm extractEntry node_modules/npm-audit-report/package.json +3818 silly gunzTarPerm extractEntry node_modules/npm-bundled/package.json +3819 silly gunzTarPerm extractEntry node_modules/npm-install-checks/package.json +3820 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/package.json +3821 silly gunzTarPerm extractEntry node_modules/npm-package-arg/package.json +3822 silly gunzTarPerm extractEntry node_modules/npm-packlist/package.json +3823 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/package.json +3824 silly gunzTarPerm extractEntry node_modules/npm-profile/package.json +3825 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/package.json +3826 silly gunzTarPerm extractEntry node_modules/npm-user-validate/package.json +3827 silly gunzTarPerm extractEntry node_modules/npmlog/package.json +3828 silly gunzTarPerm extractEntry node_modules/once/package.json +3829 silly gunzTarPerm extractEntry node_modules/opener/package.json +3830 silly gunzTarPerm extractEntry node_modules/p-map/package.json +3831 silly gunzTarPerm extractEntry node_modules/pacote/package.json +3832 silly gunzTarPerm extractEntry node_modules/parse-conflict-json/package.json +3833 silly gunzTarPerm extractEntry node_modules/path-is-absolute/package.json +3834 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/package.json +3835 silly gunzTarPerm extractEntry node_modules/proc-log/package.json +3836 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/package.json +3837 silly gunzTarPerm extractEntry node_modules/promise-call-limit/package.json +3838 silly gunzTarPerm extractEntry node_modules/promise-inflight/package.json +3839 silly gunzTarPerm extractEntry node_modules/promise-retry/package.json +3840 silly gunzTarPerm extractEntry node_modules/promzard/example/npm-init/package.json +3841 silly gunzTarPerm extractEntry node_modules/promzard/package.json +3842 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/package.json +3843 silly gunzTarPerm extractEntry node_modules/read-cmd-shim/package.json +3844 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/package.json +3845 silly gunzTarPerm extractEntry node_modules/read-package-json/package.json +3846 silly gunzTarPerm extractEntry node_modules/read/package.json +3847 silly gunzTarPerm extractEntry node_modules/readable-stream/package.json +3848 silly gunzTarPerm extractEntry node_modules/readdir-scoped-modules/package.json +3849 silly gunzTarPerm extractEntry node_modules/retry/package.json +3850 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/package.json +3851 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/package.json +3852 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/package.json +3853 silly gunzTarPerm extractEntry node_modules/rimraf/package.json +3854 silly gunzTarPerm extractEntry node_modules/safe-buffer/package.json +3855 silly gunzTarPerm extractEntry node_modules/safer-buffer/package.json +3856 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/package.json +3857 silly gunzTarPerm extractEntry node_modules/semver/package.json +3858 silly gunzTarPerm extractEntry node_modules/set-blocking/package.json +3859 silly gunzTarPerm extractEntry node_modules/signal-exit/package.json +3860 silly gunzTarPerm extractEntry node_modules/smart-buffer/package.json +3861 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/package.json +3862 silly gunzTarPerm extractEntry node_modules/socks/package.json +3863 silly gunzTarPerm extractEntry node_modules/spdx-correct/package.json +3864 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/package.json +3865 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/package.json +3866 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/package.json +3867 silly gunzTarPerm extractEntry node_modules/ssri/package.json +3868 silly gunzTarPerm extractEntry node_modules/string_decoder/package.json +3869 silly gunzTarPerm extractEntry node_modules/string-width/package.json +3870 silly gunzTarPerm extractEntry node_modules/strip-ansi/package.json +3871 silly gunzTarPerm extractEntry node_modules/supports-color/package.json +3872 silly gunzTarPerm extractEntry node_modules/tar/package.json +3873 silly gunzTarPerm extractEntry node_modules/text-table/package.json +3874 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/package.json +3875 silly gunzTarPerm extractEntry node_modules/treeverse/package.json +3876 silly gunzTarPerm extractEntry node_modules/unique-filename/package.json +3877 silly gunzTarPerm extractEntry node_modules/unique-slug/package.json +3878 silly gunzTarPerm extractEntry node_modules/util-deprecate/package.json +3879 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/package.json +3880 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/package.json +3881 silly gunzTarPerm extractEntry node_modules/walk-up-path/package.json +3882 silly gunzTarPerm extractEntry node_modules/wcwidth/package.json +3883 silly gunzTarPerm extractEntry node_modules/which/package.json +3884 silly gunzTarPerm extractEntry node_modules/wide-align/package.json +3885 silly gunzTarPerm extractEntry node_modules/wrappy/package.json +3886 silly gunzTarPerm extractEntry node_modules/write-file-atomic/package.json +3887 silly gunzTarPerm extractEntry node_modules/yallist/package.json +3888 silly gunzTarPerm extractEntry package.json +3889 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/shiftjis.json +3890 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/typos.json +3891 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/warning_messages.json +3892 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/server.key +3893 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.js.map +3894 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.js.map +3895 silly gunzTarPerm extractEntry node_modules/socks/build/common/constants.js.map +3896 silly gunzTarPerm extractEntry node_modules/socks/build/common/helpers.js.map +3897 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.js.map +3898 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.js.map +3899 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.js.map +3900 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.js.map +3901 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.js.map +3902 silly gunzTarPerm extractEntry node_modules/socks/build/index.js.map +3903 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.js.map +3904 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +3905 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.js.map +3906 silly gunzTarPerm extractEntry node_modules/socks/build/common/receivebuffer.js.map +3907 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/smartbuffer.js.map +3908 silly gunzTarPerm extractEntry node_modules/socks/build/client/socksclient.js.map +3909 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.js.map +3910 silly gunzTarPerm extractEntry node_modules/socks/build/common/util.js.map +3911 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/utils.js.map +3912 silly gunzTarPerm extractEntry node_modules/mkdirp/readme.markdown +3913 silly gunzTarPerm extractEntry node_modules/text-table/readme.markdown +3914 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/API.md +3915 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/associateExample.md +3916 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/associateExample.md +3917 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/bindExample.md +3918 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/bindExample.md +3919 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/binding.gyp-files-in-the-wild.md +3920 silly gunzTarPerm extractEntry node_modules/iconv-lite/Changelog.md +3921 silly gunzTarPerm extractEntry node_modules/mkdirp/CHANGELOG.md +3922 silly gunzTarPerm extractEntry node_modules/node-gyp/CHANGELOG.md +3923 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CHANGELOG.md +3924 silly gunzTarPerm extractEntry node_modules/nopt/CHANGELOG.md +3925 silly gunzTarPerm extractEntry node_modules/rimraf/CHANGELOG.md +3926 silly gunzTarPerm extractEntry node_modules/which/CHANGELOG.md +3927 silly gunzTarPerm extractEntry node_modules/asap/CHANGES.md +3928 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CODE_OF_CONDUCT.md +3929 silly gunzTarPerm extractEntry docs/content/using-npm/config.md +3930 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/connectExample.md +3931 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/connectExample.md +3932 silly gunzTarPerm extractEntry node_modules/diff/CONTRIBUTING.md +3933 silly gunzTarPerm extractEntry node_modules/node-gyp/CONTRIBUTING.md +3934 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CONTRIBUTING.md +3935 silly gunzTarPerm extractEntry node_modules/readable-stream/CONTRIBUTING.md +3936 silly gunzTarPerm extractEntry docs/content/using-npm/dependency-selectors.md +3937 silly gunzTarPerm extractEntry docs/content/using-npm/developers.md +3938 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Error-pre-versions-of-node-cannot-be-installed.md +3939 silly gunzTarPerm extractEntry docs/content/configuring-npm/folders.md +3940 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Force-npm-to-use-global-node-gyp.md +3941 silly gunzTarPerm extractEntry node_modules/readable-stream/GOVERNANCE.md +3942 silly gunzTarPerm extractEntry node_modules/agentkeepalive/History.md +3943 silly gunzTarPerm extractEntry node_modules/delegates/History.md +3944 silly gunzTarPerm extractEntry node_modules/depd/History.md +3945 silly gunzTarPerm extractEntry node_modules/humanize-ms/History.md +3946 silly gunzTarPerm extractEntry node_modules/negotiator/HISTORY.md +3947 silly gunzTarPerm extractEntry node_modules/util-deprecate/History.md +3948 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Home.md +3949 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/index.md +3950 silly gunzTarPerm extractEntry node_modules/socks/docs/index.md +3951 silly gunzTarPerm extractEntry node_modules/wcwidth/docs/index.md +3952 silly gunzTarPerm extractEntry docs/content/configuring-npm/install.md +3953 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/ISSUE_TEMPLATE.md +3954 silly gunzTarPerm extractEntry node_modules/@gar/promisify/LICENSE.md +3955 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/LICENSE.md +3956 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/LICENSE.md +3957 silly gunzTarPerm extractEntry node_modules/@npmcli/map-workspaces/LICENSE.md +3958 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/LICENSE.md +3959 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/LICENSE.md +3960 silly gunzTarPerm extractEntry node_modules/asap/LICENSE.md +3961 silly gunzTarPerm extractEntry node_modules/balanced-match/LICENSE.md +3962 silly gunzTarPerm extractEntry node_modules/cacache/LICENSE.md +3963 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/license.md +3964 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/LICENSE.md +3965 silly gunzTarPerm extractEntry node_modules/gauge/LICENSE.md +3966 silly gunzTarPerm extractEntry node_modules/init-package-json/LICENSE.md +3967 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/LICENSE.md +3968 silly gunzTarPerm extractEntry node_modules/libnpmhook/LICENSE.md +3969 silly gunzTarPerm extractEntry node_modules/ms/license.md +3970 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/LICENSE.md +3971 silly gunzTarPerm extractEntry node_modules/npm-profile/LICENSE.md +3972 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/LICENSE.md +3973 silly gunzTarPerm extractEntry node_modules/npmlog/LICENSE.md +3974 silly gunzTarPerm extractEntry node_modules/parse-conflict-json/LICENSE.md +3975 silly gunzTarPerm extractEntry node_modules/ssri/LICENSE.md +3976 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/LICENSE.md +3977 silly gunzTarPerm extractEntry node_modules/write-file-atomic/LICENSE.md +3978 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Linking-to-OpenSSL.md +3979 silly gunzTarPerm extractEntry docs/content/using-npm/logging.md +3980 silly gunzTarPerm extractEntry node_modules/node-gyp/macOS_Catalina.md +3981 silly gunzTarPerm extractEntry node_modules/socks/docs/migratingFromV1.md +3982 silly gunzTarPerm extractEntry docs/content/commands/npm-access.md +3983 silly gunzTarPerm extractEntry docs/content/commands/npm-adduser.md +3984 silly gunzTarPerm extractEntry docs/content/commands/npm-audit.md +3985 silly gunzTarPerm extractEntry docs/content/commands/npm-bin.md +3986 silly gunzTarPerm extractEntry docs/content/commands/npm-bugs.md +3987 silly gunzTarPerm extractEntry docs/content/commands/npm-cache.md +3988 silly gunzTarPerm extractEntry docs/content/commands/npm-ci.md +3989 silly gunzTarPerm extractEntry docs/content/commands/npm-completion.md +3990 silly gunzTarPerm extractEntry docs/content/commands/npm-config.md +3991 silly gunzTarPerm extractEntry docs/content/commands/npm-dedupe.md +3992 silly gunzTarPerm extractEntry docs/content/commands/npm-deprecate.md +3993 silly gunzTarPerm extractEntry docs/content/commands/npm-diff.md +3994 silly gunzTarPerm extractEntry docs/content/commands/npm-dist-tag.md +3995 silly gunzTarPerm extractEntry docs/content/commands/npm-docs.md +3996 silly gunzTarPerm extractEntry docs/content/commands/npm-doctor.md +3997 silly gunzTarPerm extractEntry docs/content/commands/npm-edit.md +3998 silly gunzTarPerm extractEntry docs/content/commands/npm-exec.md +3999 silly gunzTarPerm extractEntry docs/content/commands/npm-explain.md +4000 silly gunzTarPerm extractEntry docs/content/commands/npm-explore.md +4001 silly gunzTarPerm extractEntry docs/content/commands/npm-find-dupes.md +4002 silly gunzTarPerm extractEntry docs/content/commands/npm-fund.md +4003 silly gunzTarPerm extractEntry docs/content/commands/npm-help-search.md +4004 silly gunzTarPerm extractEntry docs/content/commands/npm-help.md +4005 silly gunzTarPerm extractEntry docs/content/commands/npm-hook.md +4006 silly gunzTarPerm extractEntry docs/content/commands/npm-init.md +4007 silly gunzTarPerm extractEntry docs/content/commands/npm-install-ci-test.md +4008 silly gunzTarPerm extractEntry docs/content/commands/npm-install-test.md +4009 silly gunzTarPerm extractEntry docs/content/commands/npm-install.md +4010 silly gunzTarPerm extractEntry docs/content/commands/npm-link.md +4011 silly gunzTarPerm extractEntry docs/content/commands/npm-logout.md +4012 silly gunzTarPerm extractEntry docs/content/commands/npm-ls.md +4013 silly gunzTarPerm extractEntry docs/content/commands/npm-org.md +4014 silly gunzTarPerm extractEntry docs/content/commands/npm-outdated.md +4015 silly gunzTarPerm extractEntry docs/content/commands/npm-owner.md +4016 silly gunzTarPerm extractEntry docs/content/commands/npm-pack.md +4017 silly gunzTarPerm extractEntry docs/content/commands/npm-ping.md +4018 silly gunzTarPerm extractEntry docs/content/commands/npm-pkg.md +4019 silly gunzTarPerm extractEntry docs/content/commands/npm-prefix.md +4020 silly gunzTarPerm extractEntry docs/content/commands/npm-profile.md +4021 silly gunzTarPerm extractEntry docs/content/commands/npm-prune.md +4022 silly gunzTarPerm extractEntry docs/content/commands/npm-publish.md +4023 silly gunzTarPerm extractEntry docs/content/commands/npm-query.md +4024 silly gunzTarPerm extractEntry docs/content/commands/npm-rebuild.md +4025 silly gunzTarPerm extractEntry docs/content/commands/npm-repo.md +4026 silly gunzTarPerm extractEntry docs/content/commands/npm-restart.md +4027 silly gunzTarPerm extractEntry docs/content/commands/npm-root.md +4028 silly gunzTarPerm extractEntry docs/content/commands/npm-run-script.md +4029 silly gunzTarPerm extractEntry docs/content/commands/npm-search.md +4030 silly gunzTarPerm extractEntry docs/content/commands/npm-set-script.md +4031 silly gunzTarPerm extractEntry docs/content/configuring-npm/npm-shrinkwrap-json.md +4032 silly gunzTarPerm extractEntry docs/content/commands/npm-shrinkwrap.md +4033 silly gunzTarPerm extractEntry docs/content/commands/npm-star.md +4034 silly gunzTarPerm extractEntry docs/content/commands/npm-stars.md +4035 silly gunzTarPerm extractEntry docs/content/commands/npm-start.md +4036 silly gunzTarPerm extractEntry docs/content/commands/npm-stop.md +4037 silly gunzTarPerm extractEntry docs/content/commands/npm-team.md +4038 silly gunzTarPerm extractEntry docs/content/commands/npm-test.md +4039 silly gunzTarPerm extractEntry docs/content/commands/npm-token.md +4040 silly gunzTarPerm extractEntry docs/content/commands/npm-uninstall.md +4041 silly gunzTarPerm extractEntry docs/content/commands/npm-unpublish.md +4042 silly gunzTarPerm extractEntry docs/content/commands/npm-unstar.md +4043 silly gunzTarPerm extractEntry docs/content/commands/npm-update.md +4044 silly gunzTarPerm extractEntry docs/content/commands/npm-version.md +4045 silly gunzTarPerm extractEntry docs/content/commands/npm-view.md +4046 silly gunzTarPerm extractEntry docs/content/commands/npm-whoami.md +4047 silly gunzTarPerm extractEntry docs/content/commands/npm.md +4048 silly gunzTarPerm extractEntry docs/content/configuring-npm/npmrc.md +4049 silly gunzTarPerm extractEntry docs/content/commands/npx.md +4050 silly gunzTarPerm extractEntry docs/content/using-npm/orgs.md +4051 silly gunzTarPerm extractEntry docs/content/configuring-npm/package-json.md +4052 silly gunzTarPerm extractEntry docs/content/configuring-npm/package-lock-json.md +4053 silly gunzTarPerm extractEntry docs/content/using-npm/package-spec.md +4054 silly gunzTarPerm extractEntry node_modules/safer-buffer/Porting-Buffer.md +4055 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/PULL_REQUEST_TEMPLATE.md +4056 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/README.md +4057 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/README.md +4058 silly gunzTarPerm extractEntry node_modules/aggregate-error/readme.md +4059 silly gunzTarPerm extractEntry node_modules/ansi-regex/readme.md +4060 silly gunzTarPerm extractEntry node_modules/ansi-styles/readme.md +4061 silly gunzTarPerm extractEntry node_modules/binary-extensions/readme.md +4062 silly gunzTarPerm extractEntry node_modules/builtins/Readme.md +4063 silly gunzTarPerm extractEntry node_modules/chalk/readme.md +4064 silly gunzTarPerm extractEntry node_modules/clean-stack/readme.md +4065 silly gunzTarPerm extractEntry node_modules/color-support/README.md +4066 silly gunzTarPerm extractEntry node_modules/columnify/Readme.md +4067 silly gunzTarPerm extractEntry node_modules/cssesc/README.md +4068 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/readme.md +4069 silly gunzTarPerm extractEntry node_modules/delegates/Readme.md +4070 silly gunzTarPerm extractEntry node_modules/depd/Readme.md +4071 silly gunzTarPerm extractEntry node_modules/env-paths/readme.md +4072 silly gunzTarPerm extractEntry node_modules/has-flag/readme.md +4073 silly gunzTarPerm extractEntry node_modules/indent-string/readme.md +4074 silly gunzTarPerm extractEntry node_modules/ip-regex/readme.md +4075 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/readme.md +4076 silly gunzTarPerm extractEntry node_modules/libnpmaccess/README.md +4077 silly gunzTarPerm extractEntry node_modules/libnpmdiff/README.md +4078 silly gunzTarPerm extractEntry node_modules/libnpmexec/README.md +4079 silly gunzTarPerm extractEntry node_modules/libnpmfund/README.md +4080 silly gunzTarPerm extractEntry node_modules/libnpmhook/README.md +4081 silly gunzTarPerm extractEntry node_modules/libnpmorg/README.md +4082 silly gunzTarPerm extractEntry node_modules/libnpmpack/README.md +4083 silly gunzTarPerm extractEntry node_modules/libnpmpublish/README.md +4084 silly gunzTarPerm extractEntry node_modules/libnpmsearch/README.md +4085 silly gunzTarPerm extractEntry node_modules/libnpmteam/README.md +4086 silly gunzTarPerm extractEntry node_modules/libnpmversion/README.md +4087 silly gunzTarPerm extractEntry node_modules/ms/readme.md +4088 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/README.md +4089 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/README.md +4090 silly gunzTarPerm extractEntry node_modules/node-gyp/README.md +4091 silly gunzTarPerm extractEntry node_modules/nopt/README.md +4092 silly gunzTarPerm extractEntry node_modules/npm-packlist/README.md +4093 silly gunzTarPerm extractEntry node_modules/opener/README.md +4094 silly gunzTarPerm extractEntry node_modules/p-map/readme.md +4095 silly gunzTarPerm extractEntry node_modules/pacote/README.md +4096 silly gunzTarPerm extractEntry node_modules/path-is-absolute/readme.md +4097 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/README.md +4098 silly gunzTarPerm extractEntry node_modules/rimraf/README.md +4099 silly gunzTarPerm extractEntry node_modules/safer-buffer/Readme.md +4100 silly gunzTarPerm extractEntry node_modules/semver/README.md +4101 silly gunzTarPerm extractEntry node_modules/string-width/readme.md +4102 silly gunzTarPerm extractEntry node_modules/strip-ansi/readme.md +4103 silly gunzTarPerm extractEntry node_modules/supports-color/readme.md +4104 silly gunzTarPerm extractEntry node_modules/wcwidth/Readme.md +4105 silly gunzTarPerm extractEntry node_modules/which/README.md +4106 silly gunzTarPerm extractEntry README.md +4107 silly gunzTarPerm extractEntry docs/content/using-npm/registry.md +4108 silly gunzTarPerm extractEntry node_modules/diff/release-notes.md +4109 silly gunzTarPerm extractEntry docs/content/using-npm/removal.md +4110 silly gunzTarPerm extractEntry node_modules/smart-buffer/docs/ROADMAP.md +4111 silly gunzTarPerm extractEntry docs/content/using-npm/scope.md +4112 silly gunzTarPerm extractEntry docs/content/using-npm/scripts.md +4113 silly gunzTarPerm extractEntry node_modules/node-gyp/SECURITY.md +4114 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Updating-npm-bundled-node-gyp.md +4115 silly gunzTarPerm extractEntry docs/content/using-npm/workspaces.md +4116 silly gunzTarPerm extractEntry node_modules/diff/lib/index.mjs +4117 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.mjs +4118 silly gunzTarPerm extractEntry node_modules/just-diff/index.mjs +4119 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.pbfilespec +4120 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/basic.png +4121 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/sort-arrow-sprite.png +4122 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__init__.py +4123 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +4124 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +4125 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +4126 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +4127 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/common_test.py +4128 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/common.py +4129 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +4130 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +4131 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +4132 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +4133 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +4134 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +4135 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/graphviz.py +4136 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp_main.py +4137 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +4138 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +4139 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/input_test.py +4140 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/input.py +4141 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +4142 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +4143 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +4144 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +4145 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +4146 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +4147 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +4148 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +4149 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +4150 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +4151 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +4152 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +4153 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +4154 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +4155 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +4156 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +4157 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_gyp.py +4158 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_sln.py +4159 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_vcproj.py +4160 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/setup.py +4161 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +4162 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/test_gyp.py +4163 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/test-charmap.py +4164 silly gunzTarPerm extractEntry node_modules/node-gyp/update-gyp.py +4165 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +4166 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +4167 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +4168 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +4169 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +4170 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +4171 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +4172 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/__init__.cpython-39.pyc +4173 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/__init__.cpython-39.pyc +4174 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/common.cpython-39.pyc +4175 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/input.cpython-39.pyc +4176 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/make.cpython-39.pyc +4177 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/msvs_emulation.cpython-39.pyc +4178 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSUtil.cpython-39.pyc +4179 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSVersion.cpython-39.pyc +4180 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/ninja_syntax.cpython-39.pyc +4181 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/ninja.cpython-39.pyc +4182 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/simple_copy.cpython-39.pyc +4183 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_emulation.cpython-39.pyc +4184 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_ninja.cpython-39.pyc +4185 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/xcode.cpython-39.pyc +4186 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcodeproj_file.cpython-39.pyc +4187 silly gunzTarPerm extractEntry lib/utils/completion.sh +4188 silly gunzTarPerm extractEntry node_modules/node-gyp/macOS_Catalina_acid_test.sh +4189 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh +4190 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.d.ts +4191 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.d.ts +4192 silly gunzTarPerm extractEntry node_modules/binary-extensions/binary-extensions.json.d.ts +4193 silly gunzTarPerm extractEntry node_modules/socks/typings/common/constants.d.ts +4194 silly gunzTarPerm extractEntry node_modules/socks/typings/common/helpers.d.ts +4195 silly gunzTarPerm extractEntry node_modules/@colors/colors/index.d.ts +4196 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.d.ts +4197 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.d.ts +4198 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.d.ts +4199 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.d.ts +4200 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.d.ts +4201 silly gunzTarPerm extractEntry node_modules/ansi-styles/index.d.ts +4202 silly gunzTarPerm extractEntry node_modules/binary-extensions/index.d.ts +4203 silly gunzTarPerm extractEntry node_modules/chalk/index.d.ts +4204 silly gunzTarPerm extractEntry node_modules/cidr-regex/index.d.ts +4205 silly gunzTarPerm extractEntry node_modules/clean-stack/index.d.ts +4206 silly gunzTarPerm extractEntry node_modules/cli-table3/index.d.ts +4207 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.d.ts +4208 silly gunzTarPerm extractEntry node_modules/env-paths/index.d.ts +4209 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/index.d.ts +4210 silly gunzTarPerm extractEntry node_modules/has-flag/index.d.ts +4211 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.d.ts +4212 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.d.ts +4213 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.d.ts +4214 silly gunzTarPerm extractEntry node_modules/indent-string/index.d.ts +4215 silly gunzTarPerm extractEntry node_modules/ip-regex/index.d.ts +4216 silly gunzTarPerm extractEntry node_modules/is-cidr/index.d.ts +4217 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.d.ts +4218 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.d.ts +4219 silly gunzTarPerm extractEntry node_modules/just-diff/index.d.ts +4220 silly gunzTarPerm extractEntry node_modules/lru-cache/index.d.ts +4221 silly gunzTarPerm extractEntry node_modules/minipass/index.d.ts +4222 silly gunzTarPerm extractEntry node_modules/p-map/index.d.ts +4223 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.d.ts +4224 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.d.ts +4225 silly gunzTarPerm extractEntry node_modules/socks/typings/index.d.ts +4226 silly gunzTarPerm extractEntry node_modules/string-width/index.d.ts +4227 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.d.ts +4228 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.tests.ts +4229 silly gunzTarPerm extractEntry node_modules/just-diff/index.tests.ts +4230 silly gunzTarPerm extractEntry node_modules/agent-base/src/index.ts +4231 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts +4232 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +4233 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/postcss-selector-parser.d.ts +4234 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.d.ts +4235 silly gunzTarPerm extractEntry node_modules/agent-base/src/promisify.ts +4236 silly gunzTarPerm extractEntry node_modules/socks/typings/common/receivebuffer.d.ts +4237 silly gunzTarPerm extractEntry node_modules/@colors/colors/safe.d.ts +4238 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/smartbuffer.d.ts +4239 silly gunzTarPerm extractEntry node_modules/socks/typings/client/socksclient.d.ts +4240 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.d.ts +4241 silly gunzTarPerm extractEntry node_modules/socks/typings/common/util.d.ts +4242 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/utils.d.ts +4243 silly gunzTarPerm extractEntry node_modules/cssesc/LICENSE-MIT.txt +4244 silly gunzTarPerm extractEntry node_modules/emoji-regex/LICENSE-MIT.txt +4245 silly gunzTarPerm extractEntry node_modules/opener/LICENSE.txt +4246 silly gunzTarPerm extractEntry node_modules/set-blocking/LICENSE.txt +4247 silly gunzTarPerm extractEntry node_modules/signal-exit/LICENSE.txt +4248 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/requirements_dev.txt +4249 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt +4250 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt +4251 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Express.txt +4252 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt +4253 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt +4254 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt +4255 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt +4256 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec +4257 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/.travis.yml +4258 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/node-gyp.yml +4259 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/nodejs-windows.yml +4260 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/Python_tests.yml +4261 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/release-please.yml +4262 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/release-please.yml +4263 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/tests.yml +4264 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/visual-studio.yml +4265 silly addBundled read tarball +4266 silly cleanup remove extracted module +4267 silly loadAllDepsIntoIdealTree Finishing +4268 silly idealTree:prePrune lib +4268 silly idealTree:prePrune └─┬ xpm@0.13.7 +4268 silly idealTree:prePrune ├── @gar/promisify@1.1.3 +4268 silly idealTree:prePrune ├── @ilg/cli-start-options@0.6.6 +4268 silly idealTree:prePrune ├── @ilg/es6-promisifier@0.3.1 +4268 silly idealTree:prePrune ├── @nodelib/fs.scandir@2.1.5 +4268 silly idealTree:prePrune ├── @nodelib/fs.stat@2.0.5 +4268 silly idealTree:prePrune ├── @nodelib/fs.walk@1.2.8 +4268 silly idealTree:prePrune ├── @npmcli/fs@2.1.0 +4268 silly idealTree:prePrune ├── @npmcli/git@3.0.1 +4268 silly idealTree:prePrune ├── @npmcli/installed-package-contents@1.0.7 +4268 silly idealTree:prePrune ├── @npmcli/move-file@2.0.0 +4268 silly idealTree:prePrune ├── @npmcli/node-gyp@2.0.0 +4268 silly idealTree:prePrune ├── @npmcli/promise-spawn@3.0.0 +4268 silly idealTree:prePrune ├── @npmcli/run-script@4.1.7 +4268 silly idealTree:prePrune ├── @sindresorhus/is@0.14.0 +4268 silly idealTree:prePrune ├── @szmarczak/http-timer@1.1.2 +4268 silly idealTree:prePrune ├── @tootallnate/once@2.0.0 +4268 silly idealTree:prePrune ├── @xpack/cmd-shim@4.1.0-2 +4268 silly idealTree:prePrune ├── @xpack/es6-promisifier@1.0.1 +4268 silly idealTree:prePrune ├── @xpack/logger@5.0.2 +4268 silly idealTree:prePrune ├── @xpack/xpm-liquid@1.2.1 +4268 silly idealTree:prePrune ├── abbrev@1.1.1 +4268 silly idealTree:prePrune ├── agent-base@6.0.2 +4268 silly idealTree:prePrune ├── agentkeepalive@4.2.1 +4268 silly idealTree:prePrune ├── aggregate-error@3.1.0 +4268 silly idealTree:prePrune ├── ansi-regex@5.0.1 +4268 silly idealTree:prePrune ├── any-promise@1.3.0 +4268 silly idealTree:prePrune ├── aproba@2.0.0 +4268 silly idealTree:prePrune ├── are-we-there-yet@3.0.0 +4268 silly idealTree:prePrune ├── array-union@2.1.0 +4268 silly idealTree:prePrune ├── balanced-match@1.0.2 +4268 silly idealTree:prePrune ├── base64-js@1.5.1 +4268 silly idealTree:prePrune ├─┬ bl@1.2.3 +4268 silly idealTree:prePrune │ ├── readable-stream@2.3.7 +4268 silly idealTree:prePrune │ ├── safe-buffer@5.1.2 +4268 silly idealTree:prePrune │ └── string_decoder@1.1.1 +4268 silly idealTree:prePrune ├── brace-expansion@2.0.1 +4268 silly idealTree:prePrune ├── braces@3.0.2 +4268 silly idealTree:prePrune ├── buffer-alloc-unsafe@1.1.0 +4268 silly idealTree:prePrune ├── buffer-alloc@1.2.0 +4268 silly idealTree:prePrune ├── buffer-crc32@0.2.13 +4268 silly idealTree:prePrune ├── buffer-fill@1.0.0 +4268 silly idealTree:prePrune ├── buffer@5.7.1 +4268 silly idealTree:prePrune ├── builtins@5.0.1 +4268 silly idealTree:prePrune ├── cacache@16.1.1 +4268 silly idealTree:prePrune ├─┬ cacheable-request@6.1.0 +4268 silly idealTree:prePrune │ ├── get-stream@5.2.0 +4268 silly idealTree:prePrune │ └── lowercase-keys@2.0.0 +4268 silly idealTree:prePrune ├── chownr@2.0.0 +4268 silly idealTree:prePrune ├── ci-info@3.3.2 +4268 silly idealTree:prePrune ├── clean-stack@2.2.0 +4268 silly idealTree:prePrune ├── clone-response@1.0.2 +4268 silly idealTree:prePrune ├── color-support@1.1.3 +4268 silly idealTree:prePrune ├── commander@2.20.3 +4268 silly idealTree:prePrune ├── concat-map@0.0.1 +4268 silly idealTree:prePrune ├── console-control-strings@1.1.0 +4268 silly idealTree:prePrune ├── core-util-is@1.0.3 +4268 silly idealTree:prePrune ├── cp-file@9.1.0 +4268 silly idealTree:prePrune ├── cross-spawn@7.0.3 +4268 silly idealTree:prePrune ├── debug@4.3.4 +4268 silly idealTree:prePrune ├── decompress-response@3.3.0 +4268 silly idealTree:prePrune ├── decompress-tar@4.1.1 +4268 silly idealTree:prePrune ├─┬ decompress-tarbz2@4.1.1 +4268 silly idealTree:prePrune │ └── file-type@6.2.0 +4268 silly idealTree:prePrune ├── decompress-targz@4.1.1 +4268 silly idealTree:prePrune ├─┬ decompress-unzip@4.0.1 +4268 silly idealTree:prePrune │ └── file-type@3.9.0 +4268 silly idealTree:prePrune ├─┬ decompress@4.2.1 +4268 silly idealTree:prePrune │ └─┬ make-dir@1.3.0 +4268 silly idealTree:prePrune │ └── pify@3.0.0 +4268 silly idealTree:prePrune ├── deep-extend@0.6.0 +4268 silly idealTree:prePrune ├── defer-to-connect@1.1.3 +4268 silly idealTree:prePrune ├── del@6.1.1 +4268 silly idealTree:prePrune ├── delegates@1.0.0 +4268 silly idealTree:prePrune ├── depd@1.1.2 +4268 silly idealTree:prePrune ├── dir-glob@3.0.1 +4268 silly idealTree:prePrune ├── duplexer3@0.1.5 +4268 silly idealTree:prePrune ├── emoji-regex@8.0.0 +4268 silly idealTree:prePrune ├── encoding@0.1.13 +4268 silly idealTree:prePrune ├── end-of-stream@1.4.4 +4268 silly idealTree:prePrune ├── env-paths@2.2.1 +4268 silly idealTree:prePrune ├── err-code@2.0.3 +4268 silly idealTree:prePrune ├── fast-glob@3.2.11 +4268 silly idealTree:prePrune ├── fastq@1.13.0 +4268 silly idealTree:prePrune ├── fd-slicer@1.1.0 +4268 silly idealTree:prePrune ├── file-type@5.2.0 +4268 silly idealTree:prePrune ├── fill-range@7.0.1 +4268 silly idealTree:prePrune ├── fs-constants@1.0.0 +4268 silly idealTree:prePrune ├── fs-minipass@2.1.0 +4268 silly idealTree:prePrune ├── fs.realpath@1.0.0 +4268 silly idealTree:prePrune ├── function-bind@1.1.1 +4268 silly idealTree:prePrune ├── gauge@4.0.4 +4268 silly idealTree:prePrune ├── get-stream@2.3.1 +4268 silly idealTree:prePrune ├── git-config-path@2.0.0 +4268 silly idealTree:prePrune ├── glob-parent@5.1.2 +4268 silly idealTree:prePrune ├── glob@8.0.3 +4268 silly idealTree:prePrune ├── global-dirs@3.0.0 +4268 silly idealTree:prePrune ├── globby@11.1.0 +4268 silly idealTree:prePrune ├─┬ got@9.6.0 +4268 silly idealTree:prePrune │ └── get-stream@4.1.0 +4268 silly idealTree:prePrune ├── graceful-fs@4.2.10 +4268 silly idealTree:prePrune ├── has-unicode@2.0.1 +4268 silly idealTree:prePrune ├── has@1.0.3 +4268 silly idealTree:prePrune ├── hosted-git-info@5.0.0 +4268 silly idealTree:prePrune ├── http-cache-semantics@4.1.0 +4268 silly idealTree:prePrune ├── http-proxy-agent@5.0.0 +4268 silly idealTree:prePrune ├── https-proxy-agent@5.0.1 +4268 silly idealTree:prePrune ├── humanize-ms@1.2.1 +4268 silly idealTree:prePrune ├── iconv-lite@0.6.3 +4268 silly idealTree:prePrune ├── ieee754@1.2.1 +4268 silly idealTree:prePrune ├── ignore-walk@5.0.1 +4268 silly idealTree:prePrune ├── ignore@5.2.0 +4268 silly idealTree:prePrune ├── imurmurhash@0.1.4 +4268 silly idealTree:prePrune ├── indent-string@4.0.0 +4268 silly idealTree:prePrune ├── infer-owner@1.0.4 +4268 silly idealTree:prePrune ├── inflight@1.0.6 +4268 silly idealTree:prePrune ├── inherits@2.0.4 +4268 silly idealTree:prePrune ├── ini@2.0.0 +4268 silly idealTree:prePrune ├── ip@1.1.8 +4268 silly idealTree:prePrune ├── is-ci@3.0.1 +4268 silly idealTree:prePrune ├── is-core-module@2.9.0 +4268 silly idealTree:prePrune ├── is-extglob@2.1.1 +4268 silly idealTree:prePrune ├── is-fullwidth-code-point@3.0.0 +4268 silly idealTree:prePrune ├── is-glob@4.0.3 +4268 silly idealTree:prePrune ├── is-installed-globally@0.4.0 +4268 silly idealTree:prePrune ├── is-lambda@1.0.1 +4268 silly idealTree:prePrune ├── is-natural-number@4.0.1 +4268 silly idealTree:prePrune ├── is-number@7.0.0 +4268 silly idealTree:prePrune ├── is-path-cwd@2.2.0 +4268 silly idealTree:prePrune ├── is-path-inside@3.0.3 +4268 silly idealTree:prePrune ├── is-stream@1.1.0 +4268 silly idealTree:prePrune ├── is-windows@1.0.2 +4268 silly idealTree:prePrune ├── isarray@1.0.0 +4268 silly idealTree:prePrune ├── isexe@2.0.0 +4268 silly idealTree:prePrune ├── json-buffer@3.0.0 +4268 silly idealTree:prePrune ├── json-parse-even-better-errors@2.3.1 +4268 silly idealTree:prePrune ├── jsonparse@1.3.1 +4268 silly idealTree:prePrune ├── keyv@3.1.0 +4268 silly idealTree:prePrune ├── latest-version@5.1.0 +4268 silly idealTree:prePrune ├── liquidjs@9.39.0 +4268 silly idealTree:prePrune ├── lowercase-keys@1.0.1 +4268 silly idealTree:prePrune ├── lru-cache@7.13.0 +4268 silly idealTree:prePrune ├─┬ make-dir@3.1.0 +4268 silly idealTree:prePrune │ └── semver@6.3.0 +4268 silly idealTree:prePrune ├── make-fetch-happen@10.1.8 +4268 silly idealTree:prePrune ├── merge2@1.4.1 +4268 silly idealTree:prePrune ├── micromatch@4.0.5 +4268 silly idealTree:prePrune ├── mimic-response@1.0.1 +4268 silly idealTree:prePrune ├── minimatch@5.1.0 +4268 silly idealTree:prePrune ├── minimist@1.2.6 +4268 silly idealTree:prePrune ├── minipass-collect@1.0.2 +4268 silly idealTree:prePrune ├── minipass-fetch@2.1.0 +4268 silly idealTree:prePrune ├── minipass-flush@1.0.5 +4268 silly idealTree:prePrune ├── minipass-json-stream@1.0.1 +4268 silly idealTree:prePrune ├── minipass-pipeline@1.2.4 +4268 silly idealTree:prePrune ├── minipass-sized@1.0.3 +4268 silly idealTree:prePrune ├── minipass@3.3.4 +4268 silly idealTree:prePrune ├── minizlib@2.1.2 +4268 silly idealTree:prePrune ├── mkdirp-infer-owner@2.0.0 +4268 silly idealTree:prePrune ├── mkdirp@1.0.4 +4268 silly idealTree:prePrune ├── ms@2.1.2 +4268 silly idealTree:prePrune ├── mz@2.7.0 +4268 silly idealTree:prePrune ├── negotiator@0.6.3 +4268 silly idealTree:prePrune ├── nested-error-stacks@2.1.1 +4268 silly idealTree:prePrune ├── node-fetch@2.6.7 +4268 silly idealTree:prePrune ├─┬ node-gyp@9.0.0 +4268 silly idealTree:prePrune │ ├── brace-expansion@1.1.11 +4268 silly idealTree:prePrune │ ├── glob@7.2.3 +4268 silly idealTree:prePrune │ └── minimatch@3.1.2 +4268 silly idealTree:prePrune ├── nopt@5.0.0 +4268 silly idealTree:prePrune ├── normalize-package-data@4.0.0 +4268 silly idealTree:prePrune ├── normalize-url@4.5.1 +4268 silly idealTree:prePrune ├── npm-bundled@1.1.2 +4268 silly idealTree:prePrune ├── npm-install-checks@5.0.0 +4268 silly idealTree:prePrune ├── npm-normalize-package-bin@1.0.1 +4268 silly idealTree:prePrune ├── npm-package-arg@9.1.0 +4268 silly idealTree:prePrune ├── npm-packlist@5.1.1 +4268 silly idealTree:prePrune ├── npm-pick-manifest@7.0.1 +4268 silly idealTree:prePrune ├── npm-registry-fetch@13.2.0 +4268 silly idealTree:prePrune ├─┬ npm@8.16.0 +4268 silly idealTree:prePrune │ ├── @colors/colors@1.5.0 +4268 silly idealTree:prePrune │ ├── @gar/promisify@1.1.3 +4268 silly idealTree:prePrune │ ├── @isaacs/string-locale-compare@1.1.0 +4268 silly idealTree:prePrune │ ├── @npmcli/arborist@5.4.0 +4268 silly idealTree:prePrune │ ├── @npmcli/ci-detect@2.0.0 +4268 silly idealTree:prePrune │ ├── @npmcli/config@4.2.0 +4268 silly idealTree:prePrune │ ├── @npmcli/disparity-colors@2.0.0 +4268 silly idealTree:prePrune │ ├── @npmcli/fs@2.1.1 +4268 silly idealTree:prePrune │ ├── @npmcli/git@3.0.1 +4268 silly idealTree:prePrune │ ├── @npmcli/installed-package-contents@1.0.7 +4268 silly idealTree:prePrune │ ├── @npmcli/map-workspaces@2.0.3 +4268 silly idealTree:prePrune │ ├── @npmcli/metavuln-calculator@3.1.1 +4268 silly idealTree:prePrune │ ├── @npmcli/move-file@2.0.0 +4268 silly idealTree:prePrune │ ├── @npmcli/name-from-folder@1.0.1 +4268 silly idealTree:prePrune │ ├── @npmcli/node-gyp@2.0.0 +4268 silly idealTree:prePrune │ ├── @npmcli/package-json@2.0.0 +4268 silly idealTree:prePrune │ ├── @npmcli/promise-spawn@3.0.0 +4268 silly idealTree:prePrune │ ├── @npmcli/query@1.1.1 +4268 silly idealTree:prePrune │ ├── @npmcli/run-script@4.2.0 +4268 silly idealTree:prePrune │ ├── @tootallnate/once@2.0.0 +4268 silly idealTree:prePrune │ ├── abbrev@1.1.1 +4268 silly idealTree:prePrune │ ├── agent-base@6.0.2 +4268 silly idealTree:prePrune │ ├── agentkeepalive@4.2.1 +4268 silly idealTree:prePrune │ ├── aggregate-error@3.1.0 +4268 silly idealTree:prePrune │ ├── ansi-regex@5.0.1 +4268 silly idealTree:prePrune │ ├── ansi-styles@4.3.0 +4268 silly idealTree:prePrune │ ├── aproba@2.0.0 +4268 silly idealTree:prePrune │ ├── archy@1.0.0 +4268 silly idealTree:prePrune │ ├── are-we-there-yet@3.0.0 +4268 silly idealTree:prePrune │ ├── asap@2.0.6 +4268 silly idealTree:prePrune │ ├── balanced-match@1.0.2 +4268 silly idealTree:prePrune │ ├── bin-links@3.0.1 +4268 silly idealTree:prePrune │ ├── binary-extensions@2.2.0 +4268 silly idealTree:prePrune │ ├── brace-expansion@2.0.1 +4268 silly idealTree:prePrune │ ├── builtins@5.0.1 +4268 silly idealTree:prePrune │ ├── cacache@16.1.1 +4268 silly idealTree:prePrune │ ├── chalk@4.1.2 +4268 silly idealTree:prePrune │ ├── chownr@2.0.0 +4268 silly idealTree:prePrune │ ├── cidr-regex@3.1.1 +4268 silly idealTree:prePrune │ ├── clean-stack@2.2.0 +4268 silly idealTree:prePrune │ ├── cli-columns@4.0.0 +4268 silly idealTree:prePrune │ ├── cli-table3@0.6.2 +4268 silly idealTree:prePrune │ ├── clone@1.0.4 +4268 silly idealTree:prePrune │ ├── cmd-shim@5.0.0 +4268 silly idealTree:prePrune │ ├── color-convert@2.0.1 +4268 silly idealTree:prePrune │ ├── color-name@1.1.4 +4268 silly idealTree:prePrune │ ├── color-support@1.1.3 +4268 silly idealTree:prePrune │ ├── columnify@1.6.0 +4268 silly idealTree:prePrune │ ├── common-ancestor-path@1.0.1 +4268 silly idealTree:prePrune │ ├── concat-map@0.0.1 +4268 silly idealTree:prePrune │ ├── console-control-strings@1.1.0 +4268 silly idealTree:prePrune │ ├── cssesc@3.0.0 +4268 silly idealTree:prePrune │ ├─┬ debug@4.3.4 +4268 silly idealTree:prePrune │ │ └── ms@2.1.2 +4268 silly idealTree:prePrune │ ├── debuglog@1.0.1 +4268 silly idealTree:prePrune │ ├── defaults@1.0.3 +4268 silly idealTree:prePrune │ ├── delegates@1.0.0 +4268 silly idealTree:prePrune │ ├── depd@1.1.2 +4268 silly idealTree:prePrune │ ├── dezalgo@1.0.4 +4268 silly idealTree:prePrune │ ├── diff@5.0.0 +4268 silly idealTree:prePrune │ ├── emoji-regex@8.0.0 +4268 silly idealTree:prePrune │ ├── encoding@0.1.13 +4268 silly idealTree:prePrune │ ├── env-paths@2.2.1 +4268 silly idealTree:prePrune │ ├── err-code@2.0.3 +4268 silly idealTree:prePrune │ ├── fastest-levenshtein@1.0.12 +4268 silly idealTree:prePrune │ ├── fs-minipass@2.1.0 +4268 silly idealTree:prePrune │ ├── fs.realpath@1.0.0 +4268 silly idealTree:prePrune │ ├── function-bind@1.1.1 +4268 silly idealTree:prePrune │ ├── gauge@4.0.4 +4268 silly idealTree:prePrune │ ├── glob@8.0.3 +4268 silly idealTree:prePrune │ ├── graceful-fs@4.2.10 +4268 silly idealTree:prePrune │ ├── has-flag@4.0.0 +4268 silly idealTree:prePrune │ ├── has-unicode@2.0.1 +4268 silly idealTree:prePrune │ ├── has@1.0.3 +4268 silly idealTree:prePrune │ ├── hosted-git-info@5.0.0 +4268 silly idealTree:prePrune │ ├── http-cache-semantics@4.1.0 +4268 silly idealTree:prePrune │ ├── http-proxy-agent@5.0.0 +4268 silly idealTree:prePrune │ ├── https-proxy-agent@5.0.1 +4268 silly idealTree:prePrune │ ├── humanize-ms@1.2.1 +4268 silly idealTree:prePrune │ ├── iconv-lite@0.6.3 +4268 silly idealTree:prePrune │ ├── ignore-walk@5.0.1 +4268 silly idealTree:prePrune │ ├── imurmurhash@0.1.4 +4268 silly idealTree:prePrune │ ├── indent-string@4.0.0 +4268 silly idealTree:prePrune │ ├── infer-owner@1.0.4 +4268 silly idealTree:prePrune │ ├── inflight@1.0.6 +4268 silly idealTree:prePrune │ ├── inherits@2.0.4 +4268 silly idealTree:prePrune │ ├── ini@3.0.0 +4268 silly idealTree:prePrune │ ├── init-package-json@3.0.2 +4268 silly idealTree:prePrune │ ├── ip-regex@4.3.0 +4268 silly idealTree:prePrune │ ├── ip@1.1.8 +4268 silly idealTree:prePrune │ ├── is-cidr@4.0.2 +4268 silly idealTree:prePrune │ ├── is-core-module@2.9.0 +4268 silly idealTree:prePrune │ ├── is-fullwidth-code-point@3.0.0 +4268 silly idealTree:prePrune │ ├── is-lambda@1.0.1 +4268 silly idealTree:prePrune │ ├── isexe@2.0.0 +4268 silly idealTree:prePrune │ ├── json-parse-even-better-errors@2.3.1 +4268 silly idealTree:prePrune │ ├── json-stringify-nice@1.1.4 +4268 silly idealTree:prePrune │ ├── jsonparse@1.3.1 +4268 silly idealTree:prePrune │ ├── just-diff-apply@5.3.1 +4268 silly idealTree:prePrune │ ├── just-diff@5.0.3 +4268 silly idealTree:prePrune │ ├── libnpmaccess@6.0.3 +4268 silly idealTree:prePrune │ ├── libnpmdiff@4.0.4 +4268 silly idealTree:prePrune │ ├── libnpmexec@4.0.9 +4268 silly idealTree:prePrune │ ├── libnpmfund@3.0.2 +4268 silly idealTree:prePrune │ ├── libnpmhook@8.0.3 +4268 silly idealTree:prePrune │ ├── libnpmorg@4.0.3 +4268 silly idealTree:prePrune │ ├── libnpmpack@4.1.2 +4268 silly idealTree:prePrune │ ├── libnpmpublish@6.0.4 +4268 silly idealTree:prePrune │ ├── libnpmsearch@5.0.3 +4268 silly idealTree:prePrune │ ├── libnpmteam@4.0.3 +4268 silly idealTree:prePrune │ ├── libnpmversion@3.0.6 +4268 silly idealTree:prePrune │ ├── lru-cache@7.12.0 +4268 silly idealTree:prePrune │ ├── make-fetch-happen@10.2.0 +4268 silly idealTree:prePrune │ ├── minimatch@5.1.0 +4268 silly idealTree:prePrune │ ├── minipass-collect@1.0.2 +4268 silly idealTree:prePrune │ ├── minipass-fetch@2.1.0 +4268 silly idealTree:prePrune │ ├── minipass-flush@1.0.5 +4268 silly idealTree:prePrune │ ├── minipass-json-stream@1.0.1 +4268 silly idealTree:prePrune │ ├── minipass-pipeline@1.2.4 +4268 silly idealTree:prePrune │ ├── minipass-sized@1.0.3 +4268 silly idealTree:prePrune │ ├── minipass@3.3.4 +4268 silly idealTree:prePrune │ ├── minizlib@2.1.2 +4268 silly idealTree:prePrune │ ├── mkdirp-infer-owner@2.0.0 +4268 silly idealTree:prePrune │ ├── mkdirp@1.0.4 +4268 silly idealTree:prePrune │ ├── ms@2.1.3 +4268 silly idealTree:prePrune │ ├── mute-stream@0.0.8 +4268 silly idealTree:prePrune │ ├── negotiator@0.6.3 +4268 silly idealTree:prePrune │ ├─┬ node-gyp@9.0.0 +4268 silly idealTree:prePrune │ │ ├── brace-expansion@1.1.11 +4268 silly idealTree:prePrune │ │ ├── glob@7.2.3 +4268 silly idealTree:prePrune │ │ └── minimatch@3.1.2 +4268 silly idealTree:prePrune │ ├── nopt@5.0.0 +4268 silly idealTree:prePrune │ ├── normalize-package-data@4.0.0 +4268 silly idealTree:prePrune │ ├── npm-audit-report@3.0.0 +4268 silly idealTree:prePrune │ ├── npm-bundled@1.1.2 +4268 silly idealTree:prePrune │ ├── npm-install-checks@5.0.0 +4268 silly idealTree:prePrune │ ├── npm-normalize-package-bin@1.0.1 +4268 silly idealTree:prePrune │ ├── npm-package-arg@9.1.0 +4268 silly idealTree:prePrune │ ├── npm-packlist@5.1.1 +4268 silly idealTree:prePrune │ ├── npm-pick-manifest@7.0.1 +4268 silly idealTree:prePrune │ ├── npm-profile@6.2.1 +4268 silly idealTree:prePrune │ ├── npm-registry-fetch@13.3.0 +4268 silly idealTree:prePrune │ ├── npm-user-validate@1.0.1 +4268 silly idealTree:prePrune │ ├── npmlog@6.0.2 +4268 silly idealTree:prePrune │ ├── once@1.4.0 +4268 silly idealTree:prePrune │ ├── opener@1.5.2 +4268 silly idealTree:prePrune │ ├── p-map@4.0.0 +4268 silly idealTree:prePrune │ ├── pacote@13.6.1 +4268 silly idealTree:prePrune │ ├── parse-conflict-json@2.0.2 +4268 silly idealTree:prePrune │ ├── path-is-absolute@1.0.1 +4268 silly idealTree:prePrune │ ├── postcss-selector-parser@6.0.10 +4268 silly idealTree:prePrune │ ├── proc-log@2.0.1 +4268 silly idealTree:prePrune │ ├── promise-all-reject-late@1.0.1 +4268 silly idealTree:prePrune │ ├── promise-call-limit@1.0.1 +4268 silly idealTree:prePrune │ ├── promise-inflight@1.0.1 +4268 silly idealTree:prePrune │ ├── promise-retry@2.0.1 +4268 silly idealTree:prePrune │ ├── promzard@0.3.0 +4268 silly idealTree:prePrune │ ├── qrcode-terminal@0.12.0 +4268 silly idealTree:prePrune │ ├── read-cmd-shim@3.0.0 +4268 silly idealTree:prePrune │ ├── read-package-json-fast@2.0.3 +4268 silly idealTree:prePrune │ ├── read-package-json@5.0.1 +4268 silly idealTree:prePrune │ ├── read@1.0.7 +4268 silly idealTree:prePrune │ ├── readable-stream@3.6.0 +4268 silly idealTree:prePrune │ ├── readdir-scoped-modules@1.1.0 +4268 silly idealTree:prePrune │ ├── retry@0.12.0 +4268 silly idealTree:prePrune │ ├─┬ rimraf@3.0.2 +4268 silly idealTree:prePrune │ │ ├── brace-expansion@1.1.11 +4268 silly idealTree:prePrune │ │ ├── glob@7.2.3 +4268 silly idealTree:prePrune │ │ └── minimatch@3.1.2 +4268 silly idealTree:prePrune │ ├── safe-buffer@5.2.1 +4268 silly idealTree:prePrune │ ├── safer-buffer@2.1.2 +4268 silly idealTree:prePrune │ ├─┬ semver@7.3.7 +4268 silly idealTree:prePrune │ │ └── lru-cache@6.0.0 +4268 silly idealTree:prePrune │ ├── set-blocking@2.0.0 +4268 silly idealTree:prePrune │ ├── signal-exit@3.0.7 +4268 silly idealTree:prePrune │ ├── smart-buffer@4.2.0 +4268 silly idealTree:prePrune │ ├── socks-proxy-agent@7.0.0 +4268 silly idealTree:prePrune │ ├── socks@2.6.2 +4268 silly idealTree:prePrune │ ├── spdx-correct@3.1.1 +4268 silly idealTree:prePrune │ ├── spdx-exceptions@2.3.0 +4268 silly idealTree:prePrune │ ├── spdx-expression-parse@3.0.1 +4268 silly idealTree:prePrune │ ├── spdx-license-ids@3.0.11 +4268 silly idealTree:prePrune │ ├── ssri@9.0.1 +4268 silly idealTree:prePrune │ ├── string_decoder@1.3.0 +4268 silly idealTree:prePrune │ ├── string-width@4.2.3 +4268 silly idealTree:prePrune │ ├── strip-ansi@6.0.1 +4268 silly idealTree:prePrune │ ├── supports-color@7.2.0 +4268 silly idealTree:prePrune │ ├── tar@6.1.11 +4268 silly idealTree:prePrune │ ├── text-table@0.2.0 +4268 silly idealTree:prePrune │ ├── tiny-relative-date@1.3.0 +4268 silly idealTree:prePrune │ ├── treeverse@2.0.0 +4268 silly idealTree:prePrune │ ├── unique-filename@1.1.1 +4268 silly idealTree:prePrune │ ├── unique-slug@2.0.2 +4268 silly idealTree:prePrune │ ├── util-deprecate@1.0.2 +4268 silly idealTree:prePrune │ ├── validate-npm-package-license@3.0.4 +4268 silly idealTree:prePrune │ ├── validate-npm-package-name@4.0.0 +4268 silly idealTree:prePrune │ ├── walk-up-path@1.0.0 +4268 silly idealTree:prePrune │ ├── wcwidth@1.0.1 +4268 silly idealTree:prePrune │ ├── which@2.0.2 +4268 silly idealTree:prePrune │ ├── wide-align@1.1.5 +4268 silly idealTree:prePrune │ ├── wrappy@1.0.2 +4268 silly idealTree:prePrune │ ├── write-file-atomic@4.0.1 +4268 silly idealTree:prePrune │ └── yallist@4.0.0 +4268 silly idealTree:prePrune ├── npmlog@6.0.2 +4268 silly idealTree:prePrune ├── object-assign@4.1.1 +4268 silly idealTree:prePrune ├── once@1.4.0 +4268 silly idealTree:prePrune ├── p-cancelable@1.1.0 +4268 silly idealTree:prePrune ├── p-event@4.2.0 +4268 silly idealTree:prePrune ├── p-finally@1.0.0 +4268 silly idealTree:prePrune ├── p-map@4.0.0 +4268 silly idealTree:prePrune ├── p-timeout@3.2.0 +4268 silly idealTree:prePrune ├─┬ package-json@6.5.0 +4268 silly idealTree:prePrune │ └── semver@6.3.0 +4268 silly idealTree:prePrune ├── pacote@13.6.1 +4268 silly idealTree:prePrune ├─┬ parse-git-config@3.0.0 +4268 silly idealTree:prePrune │ └── ini@1.3.8 +4268 silly idealTree:prePrune ├── path-is-absolute@1.0.1 +4268 silly idealTree:prePrune ├── path-key@3.1.1 +4268 silly idealTree:prePrune ├── path-type@4.0.0 +4268 silly idealTree:prePrune ├── pend@1.2.0 +4268 silly idealTree:prePrune ├── picomatch@2.3.1 +4268 silly idealTree:prePrune ├── pify@2.3.0 +4268 silly idealTree:prePrune ├── pinkie-promise@2.0.1 +4268 silly idealTree:prePrune ├── pinkie@2.0.4 +4268 silly idealTree:prePrune ├── prepend-http@2.0.0 +4268 silly idealTree:prePrune ├── proc-log@2.0.1 +4268 silly idealTree:prePrune ├── process-nextick-args@2.0.1 +4268 silly idealTree:prePrune ├── promise-inflight@1.0.1 +4268 silly idealTree:prePrune ├── promise-retry@2.0.1 +4268 silly idealTree:prePrune ├── pump@3.0.0 +4268 silly idealTree:prePrune ├── queue-microtask@1.2.3 +4268 silly idealTree:prePrune ├─┬ rc@1.2.8 +4268 silly idealTree:prePrune │ └── ini@1.3.8 +4268 silly idealTree:prePrune ├── read-package-json-fast@2.0.3 +4268 silly idealTree:prePrune ├── read-package-json@5.0.1 +4268 silly idealTree:prePrune ├── readable-stream@3.6.0 +4268 silly idealTree:prePrune ├── registry-auth-token@4.2.2 +4268 silly idealTree:prePrune ├── registry-url@5.1.0 +4268 silly idealTree:prePrune ├── responselike@1.0.2 +4268 silly idealTree:prePrune ├── retry@0.12.0 +4268 silly idealTree:prePrune ├── reusify@1.0.4 +4268 silly idealTree:prePrune ├─┬ rimraf@3.0.2 +4268 silly idealTree:prePrune │ ├── brace-expansion@1.1.11 +4268 silly idealTree:prePrune │ ├── glob@7.2.3 +4268 silly idealTree:prePrune │ └── minimatch@3.1.2 +4268 silly idealTree:prePrune ├── run-parallel@1.2.0 +4268 silly idealTree:prePrune ├── safe-buffer@5.2.1 +4268 silly idealTree:prePrune ├── safer-buffer@2.1.2 +4268 silly idealTree:prePrune ├── seek-bzip@1.0.6 +4268 silly idealTree:prePrune ├─┬ semver-diff@3.1.1 +4268 silly idealTree:prePrune │ └── semver@6.3.0 +4268 silly idealTree:prePrune ├─┬ semver@7.3.7 +4268 silly idealTree:prePrune │ └── lru-cache@6.0.0 +4268 silly idealTree:prePrune ├── set-blocking@2.0.0 +4268 silly idealTree:prePrune ├── shebang-command@2.0.0 +4268 silly idealTree:prePrune ├── shebang-regex@3.0.0 +4268 silly idealTree:prePrune ├── signal-exit@3.0.7 +4268 silly idealTree:prePrune ├── slash@3.0.0 +4268 silly idealTree:prePrune ├── smart-buffer@4.2.0 +4268 silly idealTree:prePrune ├── socks-proxy-agent@7.0.0 +4268 silly idealTree:prePrune ├── socks@2.6.2 +4268 silly idealTree:prePrune ├── spdx-correct@3.1.1 +4268 silly idealTree:prePrune ├── spdx-exceptions@2.3.0 +4268 silly idealTree:prePrune ├── spdx-expression-parse@3.0.1 +4268 silly idealTree:prePrune ├── spdx-license-ids@3.0.11 +4268 silly idealTree:prePrune ├── ssri@9.0.1 +4268 silly idealTree:prePrune ├── string_decoder@1.3.0 +4268 silly idealTree:prePrune ├── string-width@4.2.3 +4268 silly idealTree:prePrune ├── strip-ansi@6.0.1 +4268 silly idealTree:prePrune ├── strip-dirs@2.1.0 +4268 silly idealTree:prePrune ├── strip-json-comments@2.0.1 +4268 silly idealTree:prePrune ├─┬ tar-stream@1.6.2 +4268 silly idealTree:prePrune │ ├── readable-stream@2.3.7 +4268 silly idealTree:prePrune │ ├── safe-buffer@5.1.2 +4268 silly idealTree:prePrune │ └── string_decoder@1.1.1 +4268 silly idealTree:prePrune ├── tar@6.1.11 +4268 silly idealTree:prePrune ├── thenify-all@1.6.0 +4268 silly idealTree:prePrune ├── thenify@3.3.1 +4268 silly idealTree:prePrune ├── through@2.3.8 +4268 silly idealTree:prePrune ├── to-buffer@1.1.1 +4268 silly idealTree:prePrune ├── to-readable-stream@1.0.0 +4268 silly idealTree:prePrune ├── to-regex-range@5.0.1 +4268 silly idealTree:prePrune ├── tr46@0.0.3 +4268 silly idealTree:prePrune ├── unbzip2-stream@1.4.3 +4268 silly idealTree:prePrune ├── unique-filename@1.1.1 +4268 silly idealTree:prePrune ├── unique-slug@2.0.2 +4268 silly idealTree:prePrune ├── url-parse-lax@3.0.0 +4268 silly idealTree:prePrune ├── util-deprecate@1.0.2 +4268 silly idealTree:prePrune ├── validate-npm-package-license@3.0.4 +4268 silly idealTree:prePrune ├── validate-npm-package-name@4.0.0 +4268 silly idealTree:prePrune ├── webidl-conversions@3.0.1 +4268 silly idealTree:prePrune ├── whatwg-url@5.0.0 +4268 silly idealTree:prePrune ├── which@2.0.2 +4268 silly idealTree:prePrune ├── wide-align@1.1.5 +4268 silly idealTree:prePrune ├── wrappy@1.0.2 +4268 silly idealTree:prePrune ├── wscript-avoider@3.0.2 +4268 silly idealTree:prePrune ├── xtend@4.0.2 +4268 silly idealTree:prePrune ├── yallist@4.0.0 +4268 silly idealTree:prePrune └── yauzl@2.10.0 +4269 silly loadIdealTree Finishing +4270 silly currentTree lib +4271 silly idealTree lib +4271 silly idealTree └─┬ xpm@0.13.7 +4271 silly idealTree ├── @gar/promisify@1.1.3 +4271 silly idealTree ├── @ilg/cli-start-options@0.6.6 +4271 silly idealTree ├── @ilg/es6-promisifier@0.3.1 +4271 silly idealTree ├── @nodelib/fs.scandir@2.1.5 +4271 silly idealTree ├── @nodelib/fs.stat@2.0.5 +4271 silly idealTree ├── @nodelib/fs.walk@1.2.8 +4271 silly idealTree ├── @npmcli/fs@2.1.0 +4271 silly idealTree ├── @npmcli/git@3.0.1 +4271 silly idealTree ├── @npmcli/installed-package-contents@1.0.7 +4271 silly idealTree ├── @npmcli/move-file@2.0.0 +4271 silly idealTree ├── @npmcli/node-gyp@2.0.0 +4271 silly idealTree ├── @npmcli/promise-spawn@3.0.0 +4271 silly idealTree ├── @npmcli/run-script@4.1.7 +4271 silly idealTree ├── @sindresorhus/is@0.14.0 +4271 silly idealTree ├── @szmarczak/http-timer@1.1.2 +4271 silly idealTree ├── @tootallnate/once@2.0.0 +4271 silly idealTree ├── @xpack/cmd-shim@4.1.0-2 +4271 silly idealTree ├── @xpack/es6-promisifier@1.0.1 +4271 silly idealTree ├── @xpack/logger@5.0.2 +4271 silly idealTree ├── @xpack/xpm-liquid@1.2.1 +4271 silly idealTree ├── abbrev@1.1.1 +4271 silly idealTree ├── agent-base@6.0.2 +4271 silly idealTree ├── agentkeepalive@4.2.1 +4271 silly idealTree ├── aggregate-error@3.1.0 +4271 silly idealTree ├── ansi-regex@5.0.1 +4271 silly idealTree ├── any-promise@1.3.0 +4271 silly idealTree ├── aproba@2.0.0 +4271 silly idealTree ├── are-we-there-yet@3.0.0 +4271 silly idealTree ├── array-union@2.1.0 +4271 silly idealTree ├── balanced-match@1.0.2 +4271 silly idealTree ├── base64-js@1.5.1 +4271 silly idealTree ├─┬ bl@1.2.3 +4271 silly idealTree │ ├── readable-stream@2.3.7 +4271 silly idealTree │ ├── safe-buffer@5.1.2 +4271 silly idealTree │ └── string_decoder@1.1.1 +4271 silly idealTree ├── brace-expansion@2.0.1 +4271 silly idealTree ├── braces@3.0.2 +4271 silly idealTree ├── buffer-alloc-unsafe@1.1.0 +4271 silly idealTree ├── buffer-alloc@1.2.0 +4271 silly idealTree ├── buffer-crc32@0.2.13 +4271 silly idealTree ├── buffer-fill@1.0.0 +4271 silly idealTree ├── buffer@5.7.1 +4271 silly idealTree ├── builtins@5.0.1 +4271 silly idealTree ├── cacache@16.1.1 +4271 silly idealTree ├─┬ cacheable-request@6.1.0 +4271 silly idealTree │ ├── get-stream@5.2.0 +4271 silly idealTree │ └── lowercase-keys@2.0.0 +4271 silly idealTree ├── chownr@2.0.0 +4271 silly idealTree ├── ci-info@3.3.2 +4271 silly idealTree ├── clean-stack@2.2.0 +4271 silly idealTree ├── clone-response@1.0.2 +4271 silly idealTree ├── color-support@1.1.3 +4271 silly idealTree ├── commander@2.20.3 +4271 silly idealTree ├── concat-map@0.0.1 +4271 silly idealTree ├── console-control-strings@1.1.0 +4271 silly idealTree ├── core-util-is@1.0.3 +4271 silly idealTree ├── cp-file@9.1.0 +4271 silly idealTree ├── cross-spawn@7.0.3 +4271 silly idealTree ├── debug@4.3.4 +4271 silly idealTree ├── decompress-response@3.3.0 +4271 silly idealTree ├── decompress-tar@4.1.1 +4271 silly idealTree ├─┬ decompress-tarbz2@4.1.1 +4271 silly idealTree │ └── file-type@6.2.0 +4271 silly idealTree ├── decompress-targz@4.1.1 +4271 silly idealTree ├─┬ decompress-unzip@4.0.1 +4271 silly idealTree │ └── file-type@3.9.0 +4271 silly idealTree ├─┬ decompress@4.2.1 +4271 silly idealTree │ └─┬ make-dir@1.3.0 +4271 silly idealTree │ └── pify@3.0.0 +4271 silly idealTree ├── deep-extend@0.6.0 +4271 silly idealTree ├── defer-to-connect@1.1.3 +4271 silly idealTree ├── del@6.1.1 +4271 silly idealTree ├── delegates@1.0.0 +4271 silly idealTree ├── depd@1.1.2 +4271 silly idealTree ├── dir-glob@3.0.1 +4271 silly idealTree ├── duplexer3@0.1.5 +4271 silly idealTree ├── emoji-regex@8.0.0 +4271 silly idealTree ├── encoding@0.1.13 +4271 silly idealTree ├── end-of-stream@1.4.4 +4271 silly idealTree ├── env-paths@2.2.1 +4271 silly idealTree ├── err-code@2.0.3 +4271 silly idealTree ├── fast-glob@3.2.11 +4271 silly idealTree ├── fastq@1.13.0 +4271 silly idealTree ├── fd-slicer@1.1.0 +4271 silly idealTree ├── file-type@5.2.0 +4271 silly idealTree ├── fill-range@7.0.1 +4271 silly idealTree ├── fs-constants@1.0.0 +4271 silly idealTree ├── fs-minipass@2.1.0 +4271 silly idealTree ├── fs.realpath@1.0.0 +4271 silly idealTree ├── function-bind@1.1.1 +4271 silly idealTree ├── gauge@4.0.4 +4271 silly idealTree ├── get-stream@2.3.1 +4271 silly idealTree ├── git-config-path@2.0.0 +4271 silly idealTree ├── glob-parent@5.1.2 +4271 silly idealTree ├── glob@8.0.3 +4271 silly idealTree ├── global-dirs@3.0.0 +4271 silly idealTree ├── globby@11.1.0 +4271 silly idealTree ├─┬ got@9.6.0 +4271 silly idealTree │ └── get-stream@4.1.0 +4271 silly idealTree ├── graceful-fs@4.2.10 +4271 silly idealTree ├── has-unicode@2.0.1 +4271 silly idealTree ├── has@1.0.3 +4271 silly idealTree ├── hosted-git-info@5.0.0 +4271 silly idealTree ├── http-cache-semantics@4.1.0 +4271 silly idealTree ├── http-proxy-agent@5.0.0 +4271 silly idealTree ├── https-proxy-agent@5.0.1 +4271 silly idealTree ├── humanize-ms@1.2.1 +4271 silly idealTree ├── iconv-lite@0.6.3 +4271 silly idealTree ├── ieee754@1.2.1 +4271 silly idealTree ├── ignore-walk@5.0.1 +4271 silly idealTree ├── ignore@5.2.0 +4271 silly idealTree ├── imurmurhash@0.1.4 +4271 silly idealTree ├── indent-string@4.0.0 +4271 silly idealTree ├── infer-owner@1.0.4 +4271 silly idealTree ├── inflight@1.0.6 +4271 silly idealTree ├── inherits@2.0.4 +4271 silly idealTree ├── ini@2.0.0 +4271 silly idealTree ├── ip@1.1.8 +4271 silly idealTree ├── is-ci@3.0.1 +4271 silly idealTree ├── is-core-module@2.9.0 +4271 silly idealTree ├── is-extglob@2.1.1 +4271 silly idealTree ├── is-fullwidth-code-point@3.0.0 +4271 silly idealTree ├── is-glob@4.0.3 +4271 silly idealTree ├── is-installed-globally@0.4.0 +4271 silly idealTree ├── is-lambda@1.0.1 +4271 silly idealTree ├── is-natural-number@4.0.1 +4271 silly idealTree ├── is-number@7.0.0 +4271 silly idealTree ├── is-path-cwd@2.2.0 +4271 silly idealTree ├── is-path-inside@3.0.3 +4271 silly idealTree ├── is-stream@1.1.0 +4271 silly idealTree ├── is-windows@1.0.2 +4271 silly idealTree ├── isarray@1.0.0 +4271 silly idealTree ├── isexe@2.0.0 +4271 silly idealTree ├── json-buffer@3.0.0 +4271 silly idealTree ├── json-parse-even-better-errors@2.3.1 +4271 silly idealTree ├── jsonparse@1.3.1 +4271 silly idealTree ├── keyv@3.1.0 +4271 silly idealTree ├── latest-version@5.1.0 +4271 silly idealTree ├── liquidjs@9.39.0 +4271 silly idealTree ├── lowercase-keys@1.0.1 +4271 silly idealTree ├── lru-cache@7.13.0 +4271 silly idealTree ├─┬ make-dir@3.1.0 +4271 silly idealTree │ └── semver@6.3.0 +4271 silly idealTree ├── make-fetch-happen@10.1.8 +4271 silly idealTree ├── merge2@1.4.1 +4271 silly idealTree ├── micromatch@4.0.5 +4271 silly idealTree ├── mimic-response@1.0.1 +4271 silly idealTree ├── minimatch@5.1.0 +4271 silly idealTree ├── minimist@1.2.6 +4271 silly idealTree ├── minipass-collect@1.0.2 +4271 silly idealTree ├── minipass-fetch@2.1.0 +4271 silly idealTree ├── minipass-flush@1.0.5 +4271 silly idealTree ├── minipass-json-stream@1.0.1 +4271 silly idealTree ├── minipass-pipeline@1.2.4 +4271 silly idealTree ├── minipass-sized@1.0.3 +4271 silly idealTree ├── minipass@3.3.4 +4271 silly idealTree ├── minizlib@2.1.2 +4271 silly idealTree ├── mkdirp-infer-owner@2.0.0 +4271 silly idealTree ├── mkdirp@1.0.4 +4271 silly idealTree ├── ms@2.1.2 +4271 silly idealTree ├── mz@2.7.0 +4271 silly idealTree ├── negotiator@0.6.3 +4271 silly idealTree ├── nested-error-stacks@2.1.1 +4271 silly idealTree ├── node-fetch@2.6.7 +4271 silly idealTree ├─┬ node-gyp@9.0.0 +4271 silly idealTree │ ├── brace-expansion@1.1.11 +4271 silly idealTree │ ├── glob@7.2.3 +4271 silly idealTree │ └── minimatch@3.1.2 +4271 silly idealTree ├── nopt@5.0.0 +4271 silly idealTree ├── normalize-package-data@4.0.0 +4271 silly idealTree ├── normalize-url@4.5.1 +4271 silly idealTree ├── npm-bundled@1.1.2 +4271 silly idealTree ├── npm-install-checks@5.0.0 +4271 silly idealTree ├── npm-normalize-package-bin@1.0.1 +4271 silly idealTree ├── npm-package-arg@9.1.0 +4271 silly idealTree ├── npm-packlist@5.1.1 +4271 silly idealTree ├── npm-pick-manifest@7.0.1 +4271 silly idealTree ├── npm-registry-fetch@13.2.0 +4271 silly idealTree ├─┬ npm@8.16.0 +4271 silly idealTree │ ├── @colors/colors@1.5.0 +4271 silly idealTree │ ├── @gar/promisify@1.1.3 +4271 silly idealTree │ ├── @isaacs/string-locale-compare@1.1.0 +4271 silly idealTree │ ├── @npmcli/arborist@5.4.0 +4271 silly idealTree │ ├── @npmcli/ci-detect@2.0.0 +4271 silly idealTree │ ├── @npmcli/config@4.2.0 +4271 silly idealTree │ ├── @npmcli/disparity-colors@2.0.0 +4271 silly idealTree │ ├── @npmcli/fs@2.1.1 +4271 silly idealTree │ ├── @npmcli/git@3.0.1 +4271 silly idealTree │ ├── @npmcli/installed-package-contents@1.0.7 +4271 silly idealTree │ ├── @npmcli/map-workspaces@2.0.3 +4271 silly idealTree │ ├── @npmcli/metavuln-calculator@3.1.1 +4271 silly idealTree │ ├── @npmcli/move-file@2.0.0 +4271 silly idealTree │ ├── @npmcli/name-from-folder@1.0.1 +4271 silly idealTree │ ├── @npmcli/node-gyp@2.0.0 +4271 silly idealTree │ ├── @npmcli/package-json@2.0.0 +4271 silly idealTree │ ├── @npmcli/promise-spawn@3.0.0 +4271 silly idealTree │ ├── @npmcli/query@1.1.1 +4271 silly idealTree │ ├── @npmcli/run-script@4.2.0 +4271 silly idealTree │ ├── @tootallnate/once@2.0.0 +4271 silly idealTree │ ├── abbrev@1.1.1 +4271 silly idealTree │ ├── agent-base@6.0.2 +4271 silly idealTree │ ├── agentkeepalive@4.2.1 +4271 silly idealTree │ ├── aggregate-error@3.1.0 +4271 silly idealTree │ ├── ansi-regex@5.0.1 +4271 silly idealTree │ ├── ansi-styles@4.3.0 +4271 silly idealTree │ ├── aproba@2.0.0 +4271 silly idealTree │ ├── archy@1.0.0 +4271 silly idealTree │ ├── are-we-there-yet@3.0.0 +4271 silly idealTree │ ├── asap@2.0.6 +4271 silly idealTree │ ├── balanced-match@1.0.2 +4271 silly idealTree │ ├── bin-links@3.0.1 +4271 silly idealTree │ ├── binary-extensions@2.2.0 +4271 silly idealTree │ ├── brace-expansion@2.0.1 +4271 silly idealTree │ ├── builtins@5.0.1 +4271 silly idealTree │ ├── cacache@16.1.1 +4271 silly idealTree │ ├── chalk@4.1.2 +4271 silly idealTree │ ├── chownr@2.0.0 +4271 silly idealTree │ ├── cidr-regex@3.1.1 +4271 silly idealTree │ ├── clean-stack@2.2.0 +4271 silly idealTree │ ├── cli-columns@4.0.0 +4271 silly idealTree │ ├── cli-table3@0.6.2 +4271 silly idealTree │ ├── clone@1.0.4 +4271 silly idealTree │ ├── cmd-shim@5.0.0 +4271 silly idealTree │ ├── color-convert@2.0.1 +4271 silly idealTree │ ├── color-name@1.1.4 +4271 silly idealTree │ ├── color-support@1.1.3 +4271 silly idealTree │ ├── columnify@1.6.0 +4271 silly idealTree │ ├── common-ancestor-path@1.0.1 +4271 silly idealTree │ ├── concat-map@0.0.1 +4271 silly idealTree │ ├── console-control-strings@1.1.0 +4271 silly idealTree │ ├── cssesc@3.0.0 +4271 silly idealTree │ ├─┬ debug@4.3.4 +4271 silly idealTree │ │ └── ms@2.1.2 +4271 silly idealTree │ ├── debuglog@1.0.1 +4271 silly idealTree │ ├── defaults@1.0.3 +4271 silly idealTree │ ├── delegates@1.0.0 +4271 silly idealTree │ ├── depd@1.1.2 +4271 silly idealTree │ ├── dezalgo@1.0.4 +4271 silly idealTree │ ├── diff@5.0.0 +4271 silly idealTree │ ├── emoji-regex@8.0.0 +4271 silly idealTree │ ├── encoding@0.1.13 +4271 silly idealTree │ ├── env-paths@2.2.1 +4271 silly idealTree │ ├── err-code@2.0.3 +4271 silly idealTree │ ├── fastest-levenshtein@1.0.12 +4271 silly idealTree │ ├── fs-minipass@2.1.0 +4271 silly idealTree │ ├── fs.realpath@1.0.0 +4271 silly idealTree │ ├── function-bind@1.1.1 +4271 silly idealTree │ ├── gauge@4.0.4 +4271 silly idealTree │ ├── glob@8.0.3 +4271 silly idealTree │ ├── graceful-fs@4.2.10 +4271 silly idealTree │ ├── has-flag@4.0.0 +4271 silly idealTree │ ├── has-unicode@2.0.1 +4271 silly idealTree │ ├── has@1.0.3 +4271 silly idealTree │ ├── hosted-git-info@5.0.0 +4271 silly idealTree │ ├── http-cache-semantics@4.1.0 +4271 silly idealTree │ ├── http-proxy-agent@5.0.0 +4271 silly idealTree │ ├── https-proxy-agent@5.0.1 +4271 silly idealTree │ ├── humanize-ms@1.2.1 +4271 silly idealTree │ ├── iconv-lite@0.6.3 +4271 silly idealTree │ ├── ignore-walk@5.0.1 +4271 silly idealTree │ ├── imurmurhash@0.1.4 +4271 silly idealTree │ ├── indent-string@4.0.0 +4271 silly idealTree │ ├── infer-owner@1.0.4 +4271 silly idealTree │ ├── inflight@1.0.6 +4271 silly idealTree │ ├── inherits@2.0.4 +4271 silly idealTree │ ├── ini@3.0.0 +4271 silly idealTree │ ├── init-package-json@3.0.2 +4271 silly idealTree │ ├── ip-regex@4.3.0 +4271 silly idealTree │ ├── ip@1.1.8 +4271 silly idealTree │ ├── is-cidr@4.0.2 +4271 silly idealTree │ ├── is-core-module@2.9.0 +4271 silly idealTree │ ├── is-fullwidth-code-point@3.0.0 +4271 silly idealTree │ ├── is-lambda@1.0.1 +4271 silly idealTree │ ├── isexe@2.0.0 +4271 silly idealTree │ ├── json-parse-even-better-errors@2.3.1 +4271 silly idealTree │ ├── json-stringify-nice@1.1.4 +4271 silly idealTree │ ├── jsonparse@1.3.1 +4271 silly idealTree │ ├── just-diff-apply@5.3.1 +4271 silly idealTree │ ├── just-diff@5.0.3 +4271 silly idealTree │ ├── libnpmaccess@6.0.3 +4271 silly idealTree │ ├── libnpmdiff@4.0.4 +4271 silly idealTree │ ├── libnpmexec@4.0.9 +4271 silly idealTree │ ├── libnpmfund@3.0.2 +4271 silly idealTree │ ├── libnpmhook@8.0.3 +4271 silly idealTree │ ├── libnpmorg@4.0.3 +4271 silly idealTree │ ├── libnpmpack@4.1.2 +4271 silly idealTree │ ├── libnpmpublish@6.0.4 +4271 silly idealTree │ ├── libnpmsearch@5.0.3 +4271 silly idealTree │ ├── libnpmteam@4.0.3 +4271 silly idealTree │ ├── libnpmversion@3.0.6 +4271 silly idealTree │ ├── lru-cache@7.12.0 +4271 silly idealTree │ ├── make-fetch-happen@10.2.0 +4271 silly idealTree │ ├── minimatch@5.1.0 +4271 silly idealTree │ ├── minipass-collect@1.0.2 +4271 silly idealTree │ ├── minipass-fetch@2.1.0 +4271 silly idealTree │ ├── minipass-flush@1.0.5 +4271 silly idealTree │ ├── minipass-json-stream@1.0.1 +4271 silly idealTree │ ├── minipass-pipeline@1.2.4 +4271 silly idealTree │ ├── minipass-sized@1.0.3 +4271 silly idealTree │ ├── minipass@3.3.4 +4271 silly idealTree │ ├── minizlib@2.1.2 +4271 silly idealTree │ ├── mkdirp-infer-owner@2.0.0 +4271 silly idealTree │ ├── mkdirp@1.0.4 +4271 silly idealTree │ ├── ms@2.1.3 +4271 silly idealTree │ ├── mute-stream@0.0.8 +4271 silly idealTree │ ├── negotiator@0.6.3 +4271 silly idealTree │ ├─┬ node-gyp@9.0.0 +4271 silly idealTree │ │ ├── brace-expansion@1.1.11 +4271 silly idealTree │ │ ├── glob@7.2.3 +4271 silly idealTree │ │ └── minimatch@3.1.2 +4271 silly idealTree │ ├── nopt@5.0.0 +4271 silly idealTree │ ├── normalize-package-data@4.0.0 +4271 silly idealTree │ ├── npm-audit-report@3.0.0 +4271 silly idealTree │ ├── npm-bundled@1.1.2 +4271 silly idealTree │ ├── npm-install-checks@5.0.0 +4271 silly idealTree │ ├── npm-normalize-package-bin@1.0.1 +4271 silly idealTree │ ├── npm-package-arg@9.1.0 +4271 silly idealTree │ ├── npm-packlist@5.1.1 +4271 silly idealTree │ ├── npm-pick-manifest@7.0.1 +4271 silly idealTree │ ├── npm-profile@6.2.1 +4271 silly idealTree │ ├── npm-registry-fetch@13.3.0 +4271 silly idealTree │ ├── npm-user-validate@1.0.1 +4271 silly idealTree │ ├── npmlog@6.0.2 +4271 silly idealTree │ ├── once@1.4.0 +4271 silly idealTree │ ├── opener@1.5.2 +4271 silly idealTree │ ├── p-map@4.0.0 +4271 silly idealTree │ ├── pacote@13.6.1 +4271 silly idealTree │ ├── parse-conflict-json@2.0.2 +4271 silly idealTree │ ├── path-is-absolute@1.0.1 +4271 silly idealTree │ ├── postcss-selector-parser@6.0.10 +4271 silly idealTree │ ├── proc-log@2.0.1 +4271 silly idealTree │ ├── promise-all-reject-late@1.0.1 +4271 silly idealTree │ ├── promise-call-limit@1.0.1 +4271 silly idealTree │ ├── promise-inflight@1.0.1 +4271 silly idealTree │ ├── promise-retry@2.0.1 +4271 silly idealTree │ ├── promzard@0.3.0 +4271 silly idealTree │ ├── qrcode-terminal@0.12.0 +4271 silly idealTree │ ├── read-cmd-shim@3.0.0 +4271 silly idealTree │ ├── read-package-json-fast@2.0.3 +4271 silly idealTree │ ├── read-package-json@5.0.1 +4271 silly idealTree │ ├── read@1.0.7 +4271 silly idealTree │ ├── readable-stream@3.6.0 +4271 silly idealTree │ ├── readdir-scoped-modules@1.1.0 +4271 silly idealTree │ ├── retry@0.12.0 +4271 silly idealTree │ ├─┬ rimraf@3.0.2 +4271 silly idealTree │ │ ├── brace-expansion@1.1.11 +4271 silly idealTree │ │ ├── glob@7.2.3 +4271 silly idealTree │ │ └── minimatch@3.1.2 +4271 silly idealTree │ ├── safe-buffer@5.2.1 +4271 silly idealTree │ ├── safer-buffer@2.1.2 +4271 silly idealTree │ ├─┬ semver@7.3.7 +4271 silly idealTree │ │ └── lru-cache@6.0.0 +4271 silly idealTree │ ├── set-blocking@2.0.0 +4271 silly idealTree │ ├── signal-exit@3.0.7 +4271 silly idealTree │ ├── smart-buffer@4.2.0 +4271 silly idealTree │ ├── socks-proxy-agent@7.0.0 +4271 silly idealTree │ ├── socks@2.6.2 +4271 silly idealTree │ ├── spdx-correct@3.1.1 +4271 silly idealTree │ ├── spdx-exceptions@2.3.0 +4271 silly idealTree │ ├── spdx-expression-parse@3.0.1 +4271 silly idealTree │ ├── spdx-license-ids@3.0.11 +4271 silly idealTree │ ├── ssri@9.0.1 +4271 silly idealTree │ ├── string_decoder@1.3.0 +4271 silly idealTree │ ├── string-width@4.2.3 +4271 silly idealTree │ ├── strip-ansi@6.0.1 +4271 silly idealTree │ ├── supports-color@7.2.0 +4271 silly idealTree │ ├── tar@6.1.11 +4271 silly idealTree │ ├── text-table@0.2.0 +4271 silly idealTree │ ├── tiny-relative-date@1.3.0 +4271 silly idealTree │ ├── treeverse@2.0.0 +4271 silly idealTree │ ├── unique-filename@1.1.1 +4271 silly idealTree │ ├── unique-slug@2.0.2 +4271 silly idealTree │ ├── util-deprecate@1.0.2 +4271 silly idealTree │ ├── validate-npm-package-license@3.0.4 +4271 silly idealTree │ ├── validate-npm-package-name@4.0.0 +4271 silly idealTree │ ├── walk-up-path@1.0.0 +4271 silly idealTree │ ├── wcwidth@1.0.1 +4271 silly idealTree │ ├── which@2.0.2 +4271 silly idealTree │ ├── wide-align@1.1.5 +4271 silly idealTree │ ├── wrappy@1.0.2 +4271 silly idealTree │ ├── write-file-atomic@4.0.1 +4271 silly idealTree │ └── yallist@4.0.0 +4271 silly idealTree ├── npmlog@6.0.2 +4271 silly idealTree ├── object-assign@4.1.1 +4271 silly idealTree ├── once@1.4.0 +4271 silly idealTree ├── p-cancelable@1.1.0 +4271 silly idealTree ├── p-event@4.2.0 +4271 silly idealTree ├── p-finally@1.0.0 +4271 silly idealTree ├── p-map@4.0.0 +4271 silly idealTree ├── p-timeout@3.2.0 +4271 silly idealTree ├─┬ package-json@6.5.0 +4271 silly idealTree │ └── semver@6.3.0 +4271 silly idealTree ├── pacote@13.6.1 +4271 silly idealTree ├─┬ parse-git-config@3.0.0 +4271 silly idealTree │ └── ini@1.3.8 +4271 silly idealTree ├── path-is-absolute@1.0.1 +4271 silly idealTree ├── path-key@3.1.1 +4271 silly idealTree ├── path-type@4.0.0 +4271 silly idealTree ├── pend@1.2.0 +4271 silly idealTree ├── picomatch@2.3.1 +4271 silly idealTree ├── pify@2.3.0 +4271 silly idealTree ├── pinkie-promise@2.0.1 +4271 silly idealTree ├── pinkie@2.0.4 +4271 silly idealTree ├── prepend-http@2.0.0 +4271 silly idealTree ├── proc-log@2.0.1 +4271 silly idealTree ├── process-nextick-args@2.0.1 +4271 silly idealTree ├── promise-inflight@1.0.1 +4271 silly idealTree ├── promise-retry@2.0.1 +4271 silly idealTree ├── pump@3.0.0 +4271 silly idealTree ├── queue-microtask@1.2.3 +4271 silly idealTree ├─┬ rc@1.2.8 +4271 silly idealTree │ └── ini@1.3.8 +4271 silly idealTree ├── read-package-json-fast@2.0.3 +4271 silly idealTree ├── read-package-json@5.0.1 +4271 silly idealTree ├── readable-stream@3.6.0 +4271 silly idealTree ├── registry-auth-token@4.2.2 +4271 silly idealTree ├── registry-url@5.1.0 +4271 silly idealTree ├── responselike@1.0.2 +4271 silly idealTree ├── retry@0.12.0 +4271 silly idealTree ├── reusify@1.0.4 +4271 silly idealTree ├─┬ rimraf@3.0.2 +4271 silly idealTree │ ├── brace-expansion@1.1.11 +4271 silly idealTree │ ├── glob@7.2.3 +4271 silly idealTree │ └── minimatch@3.1.2 +4271 silly idealTree ├── run-parallel@1.2.0 +4271 silly idealTree ├── safe-buffer@5.2.1 +4271 silly idealTree ├── safer-buffer@2.1.2 +4271 silly idealTree ├── seek-bzip@1.0.6 +4271 silly idealTree ├─┬ semver-diff@3.1.1 +4271 silly idealTree │ └── semver@6.3.0 +4271 silly idealTree ├─┬ semver@7.3.7 +4271 silly idealTree │ └── lru-cache@6.0.0 +4271 silly idealTree ├── set-blocking@2.0.0 +4271 silly idealTree ├── shebang-command@2.0.0 +4271 silly idealTree ├── shebang-regex@3.0.0 +4271 silly idealTree ├── signal-exit@3.0.7 +4271 silly idealTree ├── slash@3.0.0 +4271 silly idealTree ├── smart-buffer@4.2.0 +4271 silly idealTree ├── socks-proxy-agent@7.0.0 +4271 silly idealTree ├── socks@2.6.2 +4271 silly idealTree ├── spdx-correct@3.1.1 +4271 silly idealTree ├── spdx-exceptions@2.3.0 +4271 silly idealTree ├── spdx-expression-parse@3.0.1 +4271 silly idealTree ├── spdx-license-ids@3.0.11 +4271 silly idealTree ├── ssri@9.0.1 +4271 silly idealTree ├── string_decoder@1.3.0 +4271 silly idealTree ├── string-width@4.2.3 +4271 silly idealTree ├── strip-ansi@6.0.1 +4271 silly idealTree ├── strip-dirs@2.1.0 +4271 silly idealTree ├── strip-json-comments@2.0.1 +4271 silly idealTree ├─┬ tar-stream@1.6.2 +4271 silly idealTree │ ├── readable-stream@2.3.7 +4271 silly idealTree │ ├── safe-buffer@5.1.2 +4271 silly idealTree │ └── string_decoder@1.1.1 +4271 silly idealTree ├── tar@6.1.11 +4271 silly idealTree ├── thenify-all@1.6.0 +4271 silly idealTree ├── thenify@3.3.1 +4271 silly idealTree ├── through@2.3.8 +4271 silly idealTree ├── to-buffer@1.1.1 +4271 silly idealTree ├── to-readable-stream@1.0.0 +4271 silly idealTree ├── to-regex-range@5.0.1 +4271 silly idealTree ├── tr46@0.0.3 +4271 silly idealTree ├── unbzip2-stream@1.4.3 +4271 silly idealTree ├── unique-filename@1.1.1 +4271 silly idealTree ├── unique-slug@2.0.2 +4271 silly idealTree ├── url-parse-lax@3.0.0 +4271 silly idealTree ├── util-deprecate@1.0.2 +4271 silly idealTree ├── validate-npm-package-license@3.0.4 +4271 silly idealTree ├── validate-npm-package-name@4.0.0 +4271 silly idealTree ├── webidl-conversions@3.0.1 +4271 silly idealTree ├── whatwg-url@5.0.0 +4271 silly idealTree ├── which@2.0.2 +4271 silly idealTree ├── wide-align@1.1.5 +4271 silly idealTree ├── wrappy@1.0.2 +4271 silly idealTree ├── wscript-avoider@3.0.2 +4271 silly idealTree ├── xtend@4.0.2 +4271 silly idealTree ├── yallist@4.0.0 +4271 silly idealTree └── yauzl@2.10.0 +4272 silly generateActionsToTake Starting +4273 silly install generateActionsToTake +4274 silly generateActionsToTake Finishing +4275 silly diffTrees action count 479 +4276 silly diffTrees add @gar/promisify@1.1.3 +4277 silly diffTrees add @ilg/es6-promisifier@0.3.1 +4278 silly diffTrees add @nodelib/fs.stat@2.0.5 +4279 silly diffTrees add @npmcli/node-gyp@2.0.0 +4280 silly diffTrees add @sindresorhus/is@0.14.0 +4281 silly diffTrees add @tootallnate/once@2.0.0 +4282 silly diffTrees add @xpack/es6-promisifier@1.0.1 +4283 silly diffTrees add @xpack/logger@5.0.2 +4284 silly diffTrees add abbrev@1.1.1 +4285 silly diffTrees add ansi-regex@5.0.1 +4286 silly diffTrees add any-promise@1.3.0 +4287 silly diffTrees add aproba@2.0.0 +4288 silly diffTrees add array-union@2.1.0 +4289 silly diffTrees add balanced-match@1.0.2 +4290 silly diffTrees add base64-js@1.5.1 +4291 silly diffTrees add safe-buffer@5.1.2 +4292 silly diffTrees add string_decoder@1.1.1 +4293 silly diffTrees add brace-expansion@2.0.1 +4294 silly diffTrees add buffer-alloc-unsafe@1.1.0 +4295 silly diffTrees add buffer-crc32@0.2.13 +4296 silly diffTrees add buffer-fill@1.0.0 +4297 silly diffTrees add buffer-alloc@1.2.0 +4298 silly diffTrees add lowercase-keys@2.0.0 +4299 silly diffTrees add chownr@2.0.0 +4300 silly diffTrees add ci-info@3.3.2 +4301 silly diffTrees add clean-stack@2.2.0 +4302 silly diffTrees add color-support@1.1.3 +4303 silly diffTrees add commander@2.20.3 +4304 silly diffTrees add concat-map@0.0.1 +4305 silly diffTrees add console-control-strings@1.1.0 +4306 silly diffTrees add core-util-is@1.0.3 +4307 silly diffTrees add file-type@6.2.0 +4308 silly diffTrees add file-type@3.9.0 +4309 silly diffTrees add pify@3.0.0 +4310 silly diffTrees add make-dir@1.3.0 +4311 silly diffTrees add deep-extend@0.6.0 +4312 silly diffTrees add defer-to-connect@1.1.3 +4313 silly diffTrees add @szmarczak/http-timer@1.1.2 +4314 silly diffTrees add delegates@1.0.0 +4315 silly diffTrees add depd@1.1.2 +4316 silly diffTrees add duplexer3@0.1.5 +4317 silly diffTrees add emoji-regex@8.0.0 +4318 silly diffTrees add env-paths@2.2.1 +4319 silly diffTrees add err-code@2.0.3 +4320 silly diffTrees add file-type@5.2.0 +4321 silly diffTrees add fs-constants@1.0.0 +4322 silly diffTrees add fs.realpath@1.0.0 +4323 silly diffTrees add function-bind@1.1.1 +4324 silly diffTrees add git-config-path@2.0.0 +4325 silly diffTrees add graceful-fs@4.2.10 +4326 silly diffTrees add has@1.0.3 +4327 silly diffTrees add has-unicode@2.0.1 +4328 silly diffTrees add http-cache-semantics@4.1.0 +4329 silly diffTrees add ieee754@1.2.1 +4330 silly diffTrees add buffer@5.7.1 +4331 silly diffTrees add ignore@5.2.0 +4332 silly diffTrees add imurmurhash@0.1.4 +4333 silly diffTrees add indent-string@4.0.0 +4334 silly diffTrees add aggregate-error@3.1.0 +4335 silly diffTrees add infer-owner@1.0.4 +4336 silly diffTrees add @npmcli/promise-spawn@3.0.0 +4337 silly diffTrees add inherits@2.0.4 +4338 silly diffTrees add ini@2.0.0 +4339 silly diffTrees add global-dirs@3.0.0 +4340 silly diffTrees add ip@1.1.8 +4341 silly diffTrees add is-ci@3.0.1 +4342 silly diffTrees add is-core-module@2.9.0 +4343 silly diffTrees add is-extglob@2.1.1 +4344 silly diffTrees add is-fullwidth-code-point@3.0.0 +4345 silly diffTrees add is-glob@4.0.3 +4346 silly diffTrees add glob-parent@5.1.2 +4347 silly diffTrees add is-lambda@1.0.1 +4348 silly diffTrees add is-natural-number@4.0.1 +4349 silly diffTrees add is-number@7.0.0 +4350 silly diffTrees add is-path-cwd@2.2.0 +4351 silly diffTrees add is-path-inside@3.0.3 +4352 silly diffTrees add is-installed-globally@0.4.0 +4353 silly diffTrees add is-stream@1.1.0 +4354 silly diffTrees add is-windows@1.0.2 +4355 silly diffTrees add isarray@1.0.0 +4356 silly diffTrees add isexe@2.0.0 +4357 silly diffTrees add json-buffer@3.0.0 +4358 silly diffTrees add json-parse-even-better-errors@2.3.1 +4359 silly diffTrees add jsonparse@1.3.1 +4360 silly diffTrees add keyv@3.1.0 +4361 silly diffTrees add liquidjs@9.39.0 +4362 silly diffTrees add @xpack/xpm-liquid@1.2.1 +4363 silly diffTrees add lowercase-keys@1.0.1 +4364 silly diffTrees add lru-cache@7.13.0 +4365 silly diffTrees add hosted-git-info@5.0.0 +4366 silly diffTrees add semver@6.3.0 +4367 silly diffTrees add make-dir@3.1.0 +4368 silly diffTrees add merge2@1.4.1 +4369 silly diffTrees add mimic-response@1.0.1 +4370 silly diffTrees add decompress-response@3.3.0 +4371 silly diffTrees add clone-response@1.0.2 +4372 silly diffTrees add minimatch@5.1.0 +4373 silly diffTrees add ignore-walk@5.0.1 +4374 silly diffTrees add minimist@1.2.6 +4375 silly diffTrees add mkdirp@1.0.4 +4376 silly diffTrees add mkdirp-infer-owner@2.0.0 +4377 silly diffTrees add @xpack/cmd-shim@4.1.0-2 +4378 silly diffTrees add ms@2.1.2 +4379 silly diffTrees add humanize-ms@1.2.1 +4380 silly diffTrees add debug@4.3.4 +4381 silly diffTrees add agentkeepalive@4.2.1 +4382 silly diffTrees add agent-base@6.0.2 +4383 silly diffTrees add https-proxy-agent@5.0.1 +4384 silly diffTrees add http-proxy-agent@5.0.0 +4385 silly diffTrees add negotiator@0.6.3 +4386 silly diffTrees add nested-error-stacks@2.1.1 +4387 silly diffTrees add brace-expansion@1.1.11 +4388 silly diffTrees add minimatch@3.1.2 +4389 silly diffTrees add nopt@5.0.0 +4390 silly diffTrees add normalize-url@4.5.1 +4391 silly diffTrees add npm-normalize-package-bin@1.0.1 +4392 silly diffTrees add npm-bundled@1.1.2 +4393 silly diffTrees add @npmcli/installed-package-contents@1.0.7 +4394 silly diffTrees add @colors/colors@1.5.0 +4395 silly diffTrees add @gar/promisify@1.1.3 +4396 silly diffTrees add @isaacs/string-locale-compare@1.1.0 +4397 silly diffTrees add @npmcli/ci-detect@2.0.0 +4398 silly diffTrees add @npmcli/name-from-folder@1.0.1 +4399 silly diffTrees add @npmcli/node-gyp@2.0.0 +4400 silly diffTrees add @tootallnate/once@2.0.0 +4401 silly diffTrees add abbrev@1.1.1 +4402 silly diffTrees add ansi-regex@5.0.1 +4403 silly diffTrees add aproba@2.0.0 +4404 silly diffTrees add archy@1.0.0 +4405 silly diffTrees add asap@2.0.6 +4406 silly diffTrees add balanced-match@1.0.2 +4407 silly diffTrees add binary-extensions@2.2.0 +4408 silly diffTrees add brace-expansion@2.0.1 +4409 silly diffTrees add chownr@2.0.0 +4410 silly diffTrees add clean-stack@2.2.0 +4411 silly diffTrees add clone@1.0.4 +4412 silly diffTrees add color-name@1.1.4 +4413 silly diffTrees add color-convert@2.0.1 +4414 silly diffTrees add ansi-styles@4.3.0 +4415 silly diffTrees add @npmcli/disparity-colors@2.0.0 +4416 silly diffTrees add color-support@1.1.3 +4417 silly diffTrees add common-ancestor-path@1.0.1 +4418 silly diffTrees add concat-map@0.0.1 +4419 silly diffTrees add console-control-strings@1.1.0 +4420 silly diffTrees add cssesc@3.0.0 +4421 silly diffTrees add ms@2.1.2 +4422 silly diffTrees add debug@4.3.4 +4423 silly diffTrees add agent-base@6.0.2 +4424 silly diffTrees add debuglog@1.0.1 +4425 silly diffTrees add defaults@1.0.3 +4426 silly diffTrees add delegates@1.0.0 +4427 silly diffTrees add depd@1.1.2 +4428 silly diffTrees add diff@5.0.0 +4429 silly diffTrees add emoji-regex@8.0.0 +4430 silly diffTrees add env-paths@2.2.1 +4431 silly diffTrees add err-code@2.0.3 +4432 silly diffTrees add fastest-levenshtein@1.0.12 +4433 silly diffTrees add fs.realpath@1.0.0 +4434 silly diffTrees add function-bind@1.1.1 +4435 silly diffTrees add graceful-fs@4.2.10 +4436 silly diffTrees add has@1.0.3 +4437 silly diffTrees add has-flag@4.0.0 +4438 silly diffTrees add has-unicode@2.0.1 +4439 silly diffTrees add http-cache-semantics@4.1.0 +4440 silly diffTrees add http-proxy-agent@5.0.0 +4441 silly diffTrees add https-proxy-agent@5.0.1 +4442 silly diffTrees add imurmurhash@0.1.4 +4443 silly diffTrees add indent-string@4.0.0 +4444 silly diffTrees add aggregate-error@3.1.0 +4445 silly diffTrees add infer-owner@1.0.4 +4446 silly diffTrees add @npmcli/promise-spawn@3.0.0 +4447 silly diffTrees add inherits@2.0.4 +4448 silly diffTrees add ini@3.0.0 +4449 silly diffTrees add ip@1.1.8 +4450 silly diffTrees add ip-regex@4.3.0 +4451 silly diffTrees add cidr-regex@3.1.1 +4452 silly diffTrees add is-cidr@4.0.2 +4453 silly diffTrees add is-core-module@2.9.0 +4454 silly diffTrees add is-fullwidth-code-point@3.0.0 +4455 silly diffTrees add is-lambda@1.0.1 +4456 silly diffTrees add isexe@2.0.0 +4457 silly diffTrees add json-parse-even-better-errors@2.3.1 +4458 silly diffTrees add @npmcli/package-json@2.0.0 +4459 silly diffTrees add json-stringify-nice@1.1.4 +4460 silly diffTrees add jsonparse@1.3.1 +4461 silly diffTrees add just-diff@5.0.3 +4462 silly diffTrees add just-diff-apply@5.3.1 +4463 silly diffTrees add lru-cache@7.12.0 +4464 silly diffTrees add hosted-git-info@5.0.0 +4465 silly diffTrees add minimatch@5.1.0 +4466 silly diffTrees add ignore-walk@5.0.1 +4467 silly diffTrees add mkdirp@1.0.4 +4468 silly diffTrees add mkdirp-infer-owner@2.0.0 +4469 silly diffTrees add cmd-shim@5.0.0 +4470 silly diffTrees add ms@2.1.3 +4471 silly diffTrees add humanize-ms@1.2.1 +4472 silly diffTrees add agentkeepalive@4.2.1 +4473 silly diffTrees add mute-stream@0.0.8 +4474 silly diffTrees add negotiator@0.6.3 +4475 silly diffTrees add brace-expansion@1.1.11 +4476 silly diffTrees add minimatch@3.1.2 +4477 silly diffTrees add nopt@5.0.0 +4478 silly diffTrees add npm-normalize-package-bin@1.0.1 +4479 silly diffTrees add npm-bundled@1.1.2 +4480 silly diffTrees add @npmcli/installed-package-contents@1.0.7 +4481 silly diffTrees add npm-user-validate@1.0.1 +4482 silly diffTrees add opener@1.5.2 +4483 silly diffTrees add p-map@4.0.0 +4484 silly diffTrees add parse-conflict-json@2.0.2 +4485 silly diffTrees add path-is-absolute@1.0.1 +4486 silly diffTrees add proc-log@2.0.1 +4487 silly diffTrees add promise-all-reject-late@1.0.1 +4488 silly diffTrees add promise-call-limit@1.0.1 +4489 silly diffTrees add promise-inflight@1.0.1 +4490 silly diffTrees add qrcode-terminal@0.12.0 +4491 silly diffTrees add read@1.0.7 +4492 silly diffTrees add promzard@0.3.0 +4493 silly diffTrees add read-cmd-shim@3.0.0 +4494 silly diffTrees add read-package-json-fast@2.0.3 +4495 silly diffTrees add retry@0.12.0 +4496 silly diffTrees add promise-retry@2.0.1 +4497 silly diffTrees add brace-expansion@1.1.11 +4498 silly diffTrees add minimatch@3.1.2 +4499 silly diffTrees add safe-buffer@5.2.1 +4500 silly diffTrees add safer-buffer@2.1.2 +4501 silly diffTrees add iconv-lite@0.6.3 +4502 silly diffTrees add encoding@0.1.13 +4503 silly diffTrees add set-blocking@2.0.0 +4504 silly diffTrees add signal-exit@3.0.7 +4505 silly diffTrees add smart-buffer@4.2.0 +4506 silly diffTrees add socks@2.6.2 +4507 silly diffTrees add socks-proxy-agent@7.0.0 +4508 silly diffTrees add spdx-exceptions@2.3.0 +4509 silly diffTrees add spdx-license-ids@3.0.11 +4510 silly diffTrees add spdx-expression-parse@3.0.1 +4511 silly diffTrees add spdx-correct@3.1.1 +4512 silly diffTrees add string_decoder@1.3.0 +4513 silly diffTrees add strip-ansi@6.0.1 +4514 silly diffTrees add string-width@4.2.3 +4515 silly diffTrees add cli-table3@0.6.2 +4516 silly diffTrees add cli-columns@4.0.0 +4517 silly diffTrees add supports-color@7.2.0 +4518 silly diffTrees add chalk@4.1.2 +4519 silly diffTrees add npm-audit-report@3.0.0 +4520 silly diffTrees add text-table@0.2.0 +4521 silly diffTrees add tiny-relative-date@1.3.0 +4522 silly diffTrees add treeverse@2.0.0 +4523 silly diffTrees add unique-slug@2.0.2 +4524 silly diffTrees add unique-filename@1.1.1 +4525 silly diffTrees add util-deprecate@1.0.2 +4526 silly diffTrees add readable-stream@3.6.0 +4527 silly diffTrees add are-we-there-yet@3.0.0 +4528 silly diffTrees add postcss-selector-parser@6.0.10 +4529 silly diffTrees add validate-npm-package-license@3.0.4 +4530 silly diffTrees add walk-up-path@1.0.0 +4531 silly diffTrees add wcwidth@1.0.1 +4532 silly diffTrees add columnify@1.6.0 +4533 silly diffTrees add which@2.0.2 +4534 silly diffTrees add wide-align@1.1.5 +4535 silly diffTrees add gauge@4.0.4 +4536 silly diffTrees add npmlog@6.0.2 +4537 silly diffTrees add wrappy@1.0.2 +4538 silly diffTrees add once@1.4.0 +4539 silly diffTrees add inflight@1.0.6 +4540 silly diffTrees add glob@7.2.3 +4541 silly diffTrees add rimraf@3.0.2 +4542 silly diffTrees add @npmcli/move-file@2.0.0 +4543 silly diffTrees add glob@7.2.3 +4544 silly diffTrees add glob@8.0.3 +4545 silly diffTrees add npm-packlist@5.1.1 +4546 silly diffTrees add @npmcli/map-workspaces@2.0.3 +4547 silly diffTrees add dezalgo@1.0.4 +4548 silly diffTrees add readdir-scoped-modules@1.1.0 +4549 silly diffTrees add write-file-atomic@4.0.1 +4550 silly diffTrees add bin-links@3.0.1 +4551 silly diffTrees add yallist@4.0.0 +4552 silly diffTrees add lru-cache@6.0.0 +4553 silly diffTrees add semver@7.3.7 +4554 silly diffTrees add npm-install-checks@5.0.0 +4555 silly diffTrees add normalize-package-data@4.0.0 +4556 silly diffTrees add read-package-json@5.0.1 +4557 silly diffTrees add builtins@5.0.1 +4558 silly diffTrees add validate-npm-package-name@4.0.0 +4559 silly diffTrees add npm-package-arg@9.1.0 +4560 silly diffTrees add npm-pick-manifest@7.0.1 +4561 silly diffTrees add init-package-json@3.0.2 +4562 silly diffTrees add @npmcli/query@1.1.1 +4563 silly diffTrees add @npmcli/git@3.0.1 +4564 silly diffTrees add @npmcli/fs@2.1.1 +4565 silly diffTrees add @npmcli/config@4.2.0 +4566 silly diffTrees add minipass@3.3.4 +4567 silly diffTrees add ssri@9.0.1 +4568 silly diffTrees add minizlib@2.1.2 +4569 silly diffTrees add minipass-sized@1.0.3 +4570 silly diffTrees add minipass-pipeline@1.2.4 +4571 silly diffTrees add minipass-json-stream@1.0.1 +4572 silly diffTrees add minipass-flush@1.0.5 +4573 silly diffTrees add minipass-fetch@2.1.0 +4574 silly diffTrees add minipass-collect@1.0.2 +4575 silly diffTrees add fs-minipass@2.1.0 +4576 silly diffTrees add tar@6.1.11 +4577 silly diffTrees add cacache@16.1.1 +4578 silly diffTrees add make-fetch-happen@10.2.0 +4579 silly diffTrees add npm-registry-fetch@13.3.0 +4580 silly diffTrees add npm-profile@6.2.1 +4581 silly diffTrees add libnpmteam@4.0.3 +4582 silly diffTrees add libnpmsearch@5.0.3 +4583 silly diffTrees add libnpmpublish@6.0.4 +4584 silly diffTrees add libnpmorg@4.0.3 +4585 silly diffTrees add libnpmhook@8.0.3 +4586 silly diffTrees add libnpmaccess@6.0.3 +4587 silly diffTrees add node-gyp@9.0.0 +4588 silly diffTrees add @npmcli/run-script@4.2.0 +4589 silly diffTrees add pacote@13.6.1 +4590 silly diffTrees add libnpmdiff@4.0.4 +4591 silly diffTrees add libnpmversion@3.0.6 +4592 silly diffTrees add libnpmpack@4.1.2 +4593 silly diffTrees add @npmcli/metavuln-calculator@3.1.1 +4594 silly diffTrees add @npmcli/arborist@5.4.0 +4595 silly diffTrees add libnpmfund@3.0.2 +4596 silly diffTrees add libnpmexec@4.0.9 +4597 silly diffTrees add npm@8.16.0 +4598 silly diffTrees add object-assign@4.1.1 +4599 silly diffTrees add p-cancelable@1.1.0 +4600 silly diffTrees add p-finally@1.0.0 +4601 silly diffTrees add p-map@4.0.0 +4602 silly diffTrees add p-timeout@3.2.0 +4603 silly diffTrees add p-event@4.2.0 +4604 silly diffTrees add cp-file@9.1.0 +4605 silly diffTrees add semver@6.3.0 +4606 silly diffTrees add ini@1.3.8 +4607 silly diffTrees add parse-git-config@3.0.0 +4608 silly diffTrees add path-is-absolute@1.0.1 +4609 silly diffTrees add path-key@3.1.1 +4610 silly diffTrees add path-type@4.0.0 +4611 silly diffTrees add dir-glob@3.0.1 +4612 silly diffTrees add pend@1.2.0 +4613 silly diffTrees add fd-slicer@1.1.0 +4614 silly diffTrees add picomatch@2.3.1 +4615 silly diffTrees add pify@2.3.0 +4616 silly diffTrees add pinkie@2.0.4 +4617 silly diffTrees add pinkie-promise@2.0.1 +4618 silly diffTrees add get-stream@2.3.1 +4619 silly diffTrees add prepend-http@2.0.0 +4620 silly diffTrees add proc-log@2.0.1 +4621 silly diffTrees add process-nextick-args@2.0.1 +4622 silly diffTrees add promise-inflight@1.0.1 +4623 silly diffTrees add queue-microtask@1.2.3 +4624 silly diffTrees add ini@1.3.8 +4625 silly diffTrees add read-package-json-fast@2.0.3 +4626 silly diffTrees add responselike@1.0.2 +4627 silly diffTrees add retry@0.12.0 +4628 silly diffTrees add promise-retry@2.0.1 +4629 silly diffTrees add reusify@1.0.4 +4630 silly diffTrees add fastq@1.13.0 +4631 silly diffTrees add brace-expansion@1.1.11 +4632 silly diffTrees add minimatch@3.1.2 +4633 silly diffTrees add run-parallel@1.2.0 +4634 silly diffTrees add @nodelib/fs.scandir@2.1.5 +4635 silly diffTrees add @nodelib/fs.walk@1.2.8 +4636 silly diffTrees add safe-buffer@5.2.1 +4637 silly diffTrees add safer-buffer@2.1.2 +4638 silly diffTrees add iconv-lite@0.6.3 +4639 silly diffTrees add encoding@0.1.13 +4640 silly diffTrees add seek-bzip@1.0.6 +4641 silly diffTrees add semver@6.3.0 +4642 silly diffTrees add semver-diff@3.1.1 +4643 silly diffTrees add set-blocking@2.0.0 +4644 silly diffTrees add shebang-regex@3.0.0 +4645 silly diffTrees add shebang-command@2.0.0 +4646 silly diffTrees add signal-exit@3.0.7 +4647 silly diffTrees add slash@3.0.0 +4648 silly diffTrees add smart-buffer@4.2.0 +4649 silly diffTrees add socks@2.6.2 +4650 silly diffTrees add socks-proxy-agent@7.0.0 +4651 silly diffTrees add spdx-exceptions@2.3.0 +4652 silly diffTrees add spdx-license-ids@3.0.11 +4653 silly diffTrees add spdx-expression-parse@3.0.1 +4654 silly diffTrees add spdx-correct@3.1.1 +4655 silly diffTrees add string_decoder@1.3.0 +4656 silly diffTrees add strip-ansi@6.0.1 +4657 silly diffTrees add string-width@4.2.3 +4658 silly diffTrees add strip-dirs@2.1.0 +4659 silly diffTrees add strip-json-comments@2.0.1 +4660 silly diffTrees add rc@1.2.8 +4661 silly diffTrees add registry-url@5.1.0 +4662 silly diffTrees add registry-auth-token@4.2.2 +4663 silly diffTrees add safe-buffer@5.1.2 +4664 silly diffTrees add string_decoder@1.1.1 +4665 silly diffTrees add thenify@3.3.1 +4666 silly diffTrees add thenify-all@1.6.0 +4667 silly diffTrees add mz@2.7.0 +4668 silly diffTrees add through@2.3.8 +4669 silly diffTrees add to-buffer@1.1.1 +4670 silly diffTrees add to-readable-stream@1.0.0 +4671 silly diffTrees add to-regex-range@5.0.1 +4672 silly diffTrees add fill-range@7.0.1 +4673 silly diffTrees add braces@3.0.2 +4674 silly diffTrees add micromatch@4.0.5 +4675 silly diffTrees add fast-glob@3.2.11 +4676 silly diffTrees add globby@11.1.0 +4677 silly diffTrees add tr46@0.0.3 +4678 silly diffTrees add unbzip2-stream@1.4.3 +4679 silly diffTrees add unique-slug@2.0.2 +4680 silly diffTrees add unique-filename@1.1.1 +4681 silly diffTrees add url-parse-lax@3.0.0 +4682 silly diffTrees add util-deprecate@1.0.2 +4683 silly diffTrees add readable-stream@2.3.7 +4684 silly diffTrees add readable-stream@3.6.0 +4685 silly diffTrees add are-we-there-yet@3.0.0 +4686 silly diffTrees add readable-stream@2.3.7 +4687 silly diffTrees add bl@1.2.3 +4688 silly diffTrees add validate-npm-package-license@3.0.4 +4689 silly diffTrees add webidl-conversions@3.0.1 +4690 silly diffTrees add whatwg-url@5.0.0 +4691 silly diffTrees add node-fetch@2.6.7 +4692 silly diffTrees add which@2.0.2 +4693 silly diffTrees add cross-spawn@7.0.3 +4694 silly diffTrees add wide-align@1.1.5 +4695 silly diffTrees add gauge@4.0.4 +4696 silly diffTrees add npmlog@6.0.2 +4697 silly diffTrees add wrappy@1.0.2 +4698 silly diffTrees add once@1.4.0 +4699 silly diffTrees add end-of-stream@1.4.4 +4700 silly diffTrees add pump@3.0.0 +4701 silly diffTrees add get-stream@4.1.0 +4702 silly diffTrees add get-stream@5.2.0 +4703 silly diffTrees add cacheable-request@6.1.0 +4704 silly diffTrees add got@9.6.0 +4705 silly diffTrees add package-json@6.5.0 +4706 silly diffTrees add latest-version@5.1.0 +4707 silly diffTrees add inflight@1.0.6 +4708 silly diffTrees add glob@7.2.3 +4709 silly diffTrees add rimraf@3.0.2 +4710 silly diffTrees add del@6.1.1 +4711 silly diffTrees add @npmcli/move-file@2.0.0 +4712 silly diffTrees add glob@7.2.3 +4713 silly diffTrees add glob@8.0.3 +4714 silly diffTrees add npm-packlist@5.1.1 +4715 silly diffTrees add wscript-avoider@3.0.2 +4716 silly diffTrees add xtend@4.0.2 +4717 silly diffTrees add tar-stream@1.6.2 +4718 silly diffTrees add decompress-tar@4.1.1 +4719 silly diffTrees add decompress-targz@4.1.1 +4720 silly diffTrees add decompress-tarbz2@4.1.1 +4721 silly diffTrees add yallist@4.0.0 +4722 silly diffTrees add lru-cache@6.0.0 +4723 silly diffTrees add semver@7.3.7 +4724 silly diffTrees add npm-install-checks@5.0.0 +4725 silly diffTrees add normalize-package-data@4.0.0 +4726 silly diffTrees add read-package-json@5.0.1 +4727 silly diffTrees add builtins@5.0.1 +4728 silly diffTrees add validate-npm-package-name@4.0.0 +4729 silly diffTrees add npm-package-arg@9.1.0 +4730 silly diffTrees add npm-pick-manifest@7.0.1 +4731 silly diffTrees add @npmcli/git@3.0.1 +4732 silly diffTrees add @npmcli/fs@2.1.0 +4733 silly diffTrees add @ilg/cli-start-options@0.6.6 +4734 silly diffTrees add minipass@3.3.4 +4735 silly diffTrees add ssri@9.0.1 +4736 silly diffTrees add minizlib@2.1.2 +4737 silly diffTrees add minipass-sized@1.0.3 +4738 silly diffTrees add minipass-pipeline@1.2.4 +4739 silly diffTrees add minipass-json-stream@1.0.1 +4740 silly diffTrees add minipass-flush@1.0.5 +4741 silly diffTrees add minipass-fetch@2.1.0 +4742 silly diffTrees add minipass-collect@1.0.2 +4743 silly diffTrees add fs-minipass@2.1.0 +4744 silly diffTrees add tar@6.1.11 +4745 silly diffTrees add cacache@16.1.1 +4746 silly diffTrees add make-fetch-happen@10.1.8 +4747 silly diffTrees add npm-registry-fetch@13.2.0 +4748 silly diffTrees add node-gyp@9.0.0 +4749 silly diffTrees add @npmcli/run-script@4.1.7 +4750 silly diffTrees add pacote@13.6.1 +4751 silly diffTrees add yauzl@2.10.0 +4752 silly diffTrees add decompress-unzip@4.0.1 +4753 silly diffTrees add decompress@4.2.1 +4754 silly diffTrees add xpm@0.13.7 +4755 silly decomposeActions action count 2401 +4756 silly decomposeActions preinstall @gar/promisify@1.1.3 +4757 silly decomposeActions build @gar/promisify@1.1.3 +4758 silly decomposeActions install @gar/promisify@1.1.3 +4759 silly decomposeActions postinstall @gar/promisify@1.1.3 +4760 silly decomposeActions finalize @gar/promisify@1.1.3 +4761 silly decomposeActions preinstall @ilg/es6-promisifier@0.3.1 +4762 silly decomposeActions build @ilg/es6-promisifier@0.3.1 +4763 silly decomposeActions install @ilg/es6-promisifier@0.3.1 +4764 silly decomposeActions postinstall @ilg/es6-promisifier@0.3.1 +4765 silly decomposeActions finalize @ilg/es6-promisifier@0.3.1 +4766 silly decomposeActions preinstall @nodelib/fs.stat@2.0.5 +4767 silly decomposeActions build @nodelib/fs.stat@2.0.5 +4768 silly decomposeActions install @nodelib/fs.stat@2.0.5 +4769 silly decomposeActions postinstall @nodelib/fs.stat@2.0.5 +4770 silly decomposeActions finalize @nodelib/fs.stat@2.0.5 +4771 silly decomposeActions preinstall @npmcli/node-gyp@2.0.0 +4772 silly decomposeActions build @npmcli/node-gyp@2.0.0 +4773 silly decomposeActions install @npmcli/node-gyp@2.0.0 +4774 silly decomposeActions postinstall @npmcli/node-gyp@2.0.0 +4775 silly decomposeActions finalize @npmcli/node-gyp@2.0.0 +4776 silly decomposeActions preinstall @sindresorhus/is@0.14.0 +4777 silly decomposeActions build @sindresorhus/is@0.14.0 +4778 silly decomposeActions install @sindresorhus/is@0.14.0 +4779 silly decomposeActions postinstall @sindresorhus/is@0.14.0 +4780 silly decomposeActions finalize @sindresorhus/is@0.14.0 +4781 silly decomposeActions preinstall @tootallnate/once@2.0.0 +4782 silly decomposeActions build @tootallnate/once@2.0.0 +4783 silly decomposeActions install @tootallnate/once@2.0.0 +4784 silly decomposeActions postinstall @tootallnate/once@2.0.0 +4785 silly decomposeActions finalize @tootallnate/once@2.0.0 +4786 silly decomposeActions preinstall @xpack/es6-promisifier@1.0.1 +4787 silly decomposeActions build @xpack/es6-promisifier@1.0.1 +4788 silly decomposeActions install @xpack/es6-promisifier@1.0.1 +4789 silly decomposeActions postinstall @xpack/es6-promisifier@1.0.1 +4790 silly decomposeActions finalize @xpack/es6-promisifier@1.0.1 +4791 silly decomposeActions preinstall @xpack/logger@5.0.2 +4792 silly decomposeActions build @xpack/logger@5.0.2 +4793 silly decomposeActions install @xpack/logger@5.0.2 +4794 silly decomposeActions postinstall @xpack/logger@5.0.2 +4795 silly decomposeActions finalize @xpack/logger@5.0.2 +4796 silly decomposeActions preinstall abbrev@1.1.1 +4797 silly decomposeActions build abbrev@1.1.1 +4798 silly decomposeActions install abbrev@1.1.1 +4799 silly decomposeActions postinstall abbrev@1.1.1 +4800 silly decomposeActions finalize abbrev@1.1.1 +4801 silly decomposeActions preinstall ansi-regex@5.0.1 +4802 silly decomposeActions build ansi-regex@5.0.1 +4803 silly decomposeActions install ansi-regex@5.0.1 +4804 silly decomposeActions postinstall ansi-regex@5.0.1 +4805 silly decomposeActions finalize ansi-regex@5.0.1 +4806 silly decomposeActions preinstall any-promise@1.3.0 +4807 silly decomposeActions build any-promise@1.3.0 +4808 silly decomposeActions install any-promise@1.3.0 +4809 silly decomposeActions postinstall any-promise@1.3.0 +4810 silly decomposeActions finalize any-promise@1.3.0 +4811 silly decomposeActions preinstall aproba@2.0.0 +4812 silly decomposeActions build aproba@2.0.0 +4813 silly decomposeActions install aproba@2.0.0 +4814 silly decomposeActions postinstall aproba@2.0.0 +4815 silly decomposeActions finalize aproba@2.0.0 +4816 silly decomposeActions preinstall array-union@2.1.0 +4817 silly decomposeActions build array-union@2.1.0 +4818 silly decomposeActions install array-union@2.1.0 +4819 silly decomposeActions postinstall array-union@2.1.0 +4820 silly decomposeActions finalize array-union@2.1.0 +4821 silly decomposeActions preinstall balanced-match@1.0.2 +4822 silly decomposeActions build balanced-match@1.0.2 +4823 silly decomposeActions install balanced-match@1.0.2 +4824 silly decomposeActions postinstall balanced-match@1.0.2 +4825 silly decomposeActions finalize balanced-match@1.0.2 +4826 silly decomposeActions preinstall base64-js@1.5.1 +4827 silly decomposeActions build base64-js@1.5.1 +4828 silly decomposeActions install base64-js@1.5.1 +4829 silly decomposeActions postinstall base64-js@1.5.1 +4830 silly decomposeActions finalize base64-js@1.5.1 +4831 silly decomposeActions preinstall safe-buffer@5.1.2 +4832 silly decomposeActions build safe-buffer@5.1.2 +4833 silly decomposeActions install safe-buffer@5.1.2 +4834 silly decomposeActions postinstall safe-buffer@5.1.2 +4835 silly decomposeActions finalize safe-buffer@5.1.2 +4836 silly decomposeActions preinstall string_decoder@1.1.1 +4837 silly decomposeActions build string_decoder@1.1.1 +4838 silly decomposeActions install string_decoder@1.1.1 +4839 silly decomposeActions postinstall string_decoder@1.1.1 +4840 silly decomposeActions finalize string_decoder@1.1.1 +4841 silly decomposeActions preinstall brace-expansion@2.0.1 +4842 silly decomposeActions build brace-expansion@2.0.1 +4843 silly decomposeActions install brace-expansion@2.0.1 +4844 silly decomposeActions postinstall brace-expansion@2.0.1 +4845 silly decomposeActions finalize brace-expansion@2.0.1 +4846 silly decomposeActions preinstall buffer-alloc-unsafe@1.1.0 +4847 silly decomposeActions build buffer-alloc-unsafe@1.1.0 +4848 silly decomposeActions install buffer-alloc-unsafe@1.1.0 +4849 silly decomposeActions postinstall buffer-alloc-unsafe@1.1.0 +4850 silly decomposeActions finalize buffer-alloc-unsafe@1.1.0 +4851 silly decomposeActions preinstall buffer-crc32@0.2.13 +4852 silly decomposeActions build buffer-crc32@0.2.13 +4853 silly decomposeActions install buffer-crc32@0.2.13 +4854 silly decomposeActions postinstall buffer-crc32@0.2.13 +4855 silly decomposeActions finalize buffer-crc32@0.2.13 +4856 silly decomposeActions preinstall buffer-fill@1.0.0 +4857 silly decomposeActions build buffer-fill@1.0.0 +4858 silly decomposeActions install buffer-fill@1.0.0 +4859 silly decomposeActions postinstall buffer-fill@1.0.0 +4860 silly decomposeActions finalize buffer-fill@1.0.0 +4861 silly decomposeActions preinstall buffer-alloc@1.2.0 +4862 silly decomposeActions build buffer-alloc@1.2.0 +4863 silly decomposeActions install buffer-alloc@1.2.0 +4864 silly decomposeActions postinstall buffer-alloc@1.2.0 +4865 silly decomposeActions finalize buffer-alloc@1.2.0 +4866 silly decomposeActions preinstall lowercase-keys@2.0.0 +4867 silly decomposeActions build lowercase-keys@2.0.0 +4868 silly decomposeActions install lowercase-keys@2.0.0 +4869 silly decomposeActions postinstall lowercase-keys@2.0.0 +4870 silly decomposeActions finalize lowercase-keys@2.0.0 +4871 silly decomposeActions preinstall chownr@2.0.0 +4872 silly decomposeActions build chownr@2.0.0 +4873 silly decomposeActions install chownr@2.0.0 +4874 silly decomposeActions postinstall chownr@2.0.0 +4875 silly decomposeActions finalize chownr@2.0.0 +4876 silly decomposeActions preinstall ci-info@3.3.2 +4877 silly decomposeActions build ci-info@3.3.2 +4878 silly decomposeActions install ci-info@3.3.2 +4879 silly decomposeActions postinstall ci-info@3.3.2 +4880 silly decomposeActions finalize ci-info@3.3.2 +4881 silly decomposeActions preinstall clean-stack@2.2.0 +4882 silly decomposeActions build clean-stack@2.2.0 +4883 silly decomposeActions install clean-stack@2.2.0 +4884 silly decomposeActions postinstall clean-stack@2.2.0 +4885 silly decomposeActions finalize clean-stack@2.2.0 +4886 silly decomposeActions preinstall color-support@1.1.3 +4887 silly decomposeActions build color-support@1.1.3 +4888 silly decomposeActions install color-support@1.1.3 +4889 silly decomposeActions postinstall color-support@1.1.3 +4890 silly decomposeActions finalize color-support@1.1.3 +4891 silly decomposeActions preinstall commander@2.20.3 +4892 silly decomposeActions build commander@2.20.3 +4893 silly decomposeActions install commander@2.20.3 +4894 silly decomposeActions postinstall commander@2.20.3 +4895 silly decomposeActions finalize commander@2.20.3 +4896 silly decomposeActions preinstall concat-map@0.0.1 +4897 silly decomposeActions build concat-map@0.0.1 +4898 silly decomposeActions install concat-map@0.0.1 +4899 silly decomposeActions postinstall concat-map@0.0.1 +4900 silly decomposeActions finalize concat-map@0.0.1 +4901 silly decomposeActions preinstall console-control-strings@1.1.0 +4902 silly decomposeActions build console-control-strings@1.1.0 +4903 silly decomposeActions install console-control-strings@1.1.0 +4904 silly decomposeActions postinstall console-control-strings@1.1.0 +4905 silly decomposeActions finalize console-control-strings@1.1.0 +4906 silly decomposeActions preinstall core-util-is@1.0.3 +4907 silly decomposeActions build core-util-is@1.0.3 +4908 silly decomposeActions install core-util-is@1.0.3 +4909 silly decomposeActions postinstall core-util-is@1.0.3 +4910 silly decomposeActions finalize core-util-is@1.0.3 +4911 silly decomposeActions preinstall file-type@6.2.0 +4912 silly decomposeActions build file-type@6.2.0 +4913 silly decomposeActions install file-type@6.2.0 +4914 silly decomposeActions postinstall file-type@6.2.0 +4915 silly decomposeActions finalize file-type@6.2.0 +4916 silly decomposeActions preinstall file-type@3.9.0 +4917 silly decomposeActions build file-type@3.9.0 +4918 silly decomposeActions install file-type@3.9.0 +4919 silly decomposeActions postinstall file-type@3.9.0 +4920 silly decomposeActions finalize file-type@3.9.0 +4921 silly decomposeActions preinstall pify@3.0.0 +4922 silly decomposeActions build pify@3.0.0 +4923 silly decomposeActions install pify@3.0.0 +4924 silly decomposeActions postinstall pify@3.0.0 +4925 silly decomposeActions finalize pify@3.0.0 +4926 silly decomposeActions preinstall make-dir@1.3.0 +4927 silly decomposeActions build make-dir@1.3.0 +4928 silly decomposeActions install make-dir@1.3.0 +4929 silly decomposeActions postinstall make-dir@1.3.0 +4930 silly decomposeActions finalize make-dir@1.3.0 +4931 silly decomposeActions preinstall deep-extend@0.6.0 +4932 silly decomposeActions build deep-extend@0.6.0 +4933 silly decomposeActions install deep-extend@0.6.0 +4934 silly decomposeActions postinstall deep-extend@0.6.0 +4935 silly decomposeActions finalize deep-extend@0.6.0 +4936 silly decomposeActions preinstall defer-to-connect@1.1.3 +4937 silly decomposeActions build defer-to-connect@1.1.3 +4938 silly decomposeActions install defer-to-connect@1.1.3 +4939 silly decomposeActions postinstall defer-to-connect@1.1.3 +4940 silly decomposeActions finalize defer-to-connect@1.1.3 +4941 silly decomposeActions preinstall @szmarczak/http-timer@1.1.2 +4942 silly decomposeActions build @szmarczak/http-timer@1.1.2 +4943 silly decomposeActions install @szmarczak/http-timer@1.1.2 +4944 silly decomposeActions postinstall @szmarczak/http-timer@1.1.2 +4945 silly decomposeActions finalize @szmarczak/http-timer@1.1.2 +4946 silly decomposeActions preinstall delegates@1.0.0 +4947 silly decomposeActions build delegates@1.0.0 +4948 silly decomposeActions install delegates@1.0.0 +4949 silly decomposeActions postinstall delegates@1.0.0 +4950 silly decomposeActions finalize delegates@1.0.0 +4951 silly decomposeActions preinstall depd@1.1.2 +4952 silly decomposeActions build depd@1.1.2 +4953 silly decomposeActions install depd@1.1.2 +4954 silly decomposeActions postinstall depd@1.1.2 +4955 silly decomposeActions finalize depd@1.1.2 +4956 silly decomposeActions preinstall duplexer3@0.1.5 +4957 silly decomposeActions build duplexer3@0.1.5 +4958 silly decomposeActions install duplexer3@0.1.5 +4959 silly decomposeActions postinstall duplexer3@0.1.5 +4960 silly decomposeActions finalize duplexer3@0.1.5 +4961 silly decomposeActions preinstall emoji-regex@8.0.0 +4962 silly decomposeActions build emoji-regex@8.0.0 +4963 silly decomposeActions install emoji-regex@8.0.0 +4964 silly decomposeActions postinstall emoji-regex@8.0.0 +4965 silly decomposeActions finalize emoji-regex@8.0.0 +4966 silly decomposeActions preinstall env-paths@2.2.1 +4967 silly decomposeActions build env-paths@2.2.1 +4968 silly decomposeActions install env-paths@2.2.1 +4969 silly decomposeActions postinstall env-paths@2.2.1 +4970 silly decomposeActions finalize env-paths@2.2.1 +4971 silly decomposeActions preinstall err-code@2.0.3 +4972 silly decomposeActions build err-code@2.0.3 +4973 silly decomposeActions install err-code@2.0.3 +4974 silly decomposeActions postinstall err-code@2.0.3 +4975 silly decomposeActions finalize err-code@2.0.3 +4976 silly decomposeActions preinstall file-type@5.2.0 +4977 silly decomposeActions build file-type@5.2.0 +4978 silly decomposeActions install file-type@5.2.0 +4979 silly decomposeActions postinstall file-type@5.2.0 +4980 silly decomposeActions finalize file-type@5.2.0 +4981 silly decomposeActions preinstall fs-constants@1.0.0 +4982 silly decomposeActions build fs-constants@1.0.0 +4983 silly decomposeActions install fs-constants@1.0.0 +4984 silly decomposeActions postinstall fs-constants@1.0.0 +4985 silly decomposeActions finalize fs-constants@1.0.0 +4986 silly decomposeActions preinstall fs.realpath@1.0.0 +4987 silly decomposeActions build fs.realpath@1.0.0 +4988 silly decomposeActions install fs.realpath@1.0.0 +4989 silly decomposeActions postinstall fs.realpath@1.0.0 +4990 silly decomposeActions finalize fs.realpath@1.0.0 +4991 silly decomposeActions preinstall function-bind@1.1.1 +4992 silly decomposeActions build function-bind@1.1.1 +4993 silly decomposeActions install function-bind@1.1.1 +4994 silly decomposeActions postinstall function-bind@1.1.1 +4995 silly decomposeActions finalize function-bind@1.1.1 +4996 silly decomposeActions preinstall git-config-path@2.0.0 +4997 silly decomposeActions build git-config-path@2.0.0 +4998 silly decomposeActions install git-config-path@2.0.0 +4999 silly decomposeActions postinstall git-config-path@2.0.0 +5000 silly decomposeActions finalize git-config-path@2.0.0 +5001 silly decomposeActions preinstall graceful-fs@4.2.10 +5002 silly decomposeActions build graceful-fs@4.2.10 +5003 silly decomposeActions install graceful-fs@4.2.10 +5004 silly decomposeActions postinstall graceful-fs@4.2.10 +5005 silly decomposeActions finalize graceful-fs@4.2.10 +5006 silly decomposeActions preinstall has@1.0.3 +5007 silly decomposeActions build has@1.0.3 +5008 silly decomposeActions install has@1.0.3 +5009 silly decomposeActions postinstall has@1.0.3 +5010 silly decomposeActions finalize has@1.0.3 +5011 silly decomposeActions preinstall has-unicode@2.0.1 +5012 silly decomposeActions build has-unicode@2.0.1 +5013 silly decomposeActions install has-unicode@2.0.1 +5014 silly decomposeActions postinstall has-unicode@2.0.1 +5015 silly decomposeActions finalize has-unicode@2.0.1 +5016 silly decomposeActions preinstall http-cache-semantics@4.1.0 +5017 silly decomposeActions build http-cache-semantics@4.1.0 +5018 silly decomposeActions install http-cache-semantics@4.1.0 +5019 silly decomposeActions postinstall http-cache-semantics@4.1.0 +5020 silly decomposeActions finalize http-cache-semantics@4.1.0 +5021 silly decomposeActions preinstall ieee754@1.2.1 +5022 silly decomposeActions build ieee754@1.2.1 +5023 silly decomposeActions install ieee754@1.2.1 +5024 silly decomposeActions postinstall ieee754@1.2.1 +5025 silly decomposeActions finalize ieee754@1.2.1 +5026 silly decomposeActions preinstall buffer@5.7.1 +5027 silly decomposeActions build buffer@5.7.1 +5028 silly decomposeActions install buffer@5.7.1 +5029 silly decomposeActions postinstall buffer@5.7.1 +5030 silly decomposeActions finalize buffer@5.7.1 +5031 silly decomposeActions preinstall ignore@5.2.0 +5032 silly decomposeActions build ignore@5.2.0 +5033 silly decomposeActions install ignore@5.2.0 +5034 silly decomposeActions postinstall ignore@5.2.0 +5035 silly decomposeActions finalize ignore@5.2.0 +5036 silly decomposeActions preinstall imurmurhash@0.1.4 +5037 silly decomposeActions build imurmurhash@0.1.4 +5038 silly decomposeActions install imurmurhash@0.1.4 +5039 silly decomposeActions postinstall imurmurhash@0.1.4 +5040 silly decomposeActions finalize imurmurhash@0.1.4 +5041 silly decomposeActions preinstall indent-string@4.0.0 +5042 silly decomposeActions build indent-string@4.0.0 +5043 silly decomposeActions install indent-string@4.0.0 +5044 silly decomposeActions postinstall indent-string@4.0.0 +5045 silly decomposeActions finalize indent-string@4.0.0 +5046 silly decomposeActions preinstall aggregate-error@3.1.0 +5047 silly decomposeActions build aggregate-error@3.1.0 +5048 silly decomposeActions install aggregate-error@3.1.0 +5049 silly decomposeActions postinstall aggregate-error@3.1.0 +5050 silly decomposeActions finalize aggregate-error@3.1.0 +5051 silly decomposeActions preinstall infer-owner@1.0.4 +5052 silly decomposeActions build infer-owner@1.0.4 +5053 silly decomposeActions install infer-owner@1.0.4 +5054 silly decomposeActions postinstall infer-owner@1.0.4 +5055 silly decomposeActions finalize infer-owner@1.0.4 +5056 silly decomposeActions preinstall @npmcli/promise-spawn@3.0.0 +5057 silly decomposeActions build @npmcli/promise-spawn@3.0.0 +5058 silly decomposeActions install @npmcli/promise-spawn@3.0.0 +5059 silly decomposeActions postinstall @npmcli/promise-spawn@3.0.0 +5060 silly decomposeActions finalize @npmcli/promise-spawn@3.0.0 +5061 silly decomposeActions preinstall inherits@2.0.4 +5062 silly decomposeActions build inherits@2.0.4 +5063 silly decomposeActions install inherits@2.0.4 +5064 silly decomposeActions postinstall inherits@2.0.4 +5065 silly decomposeActions finalize inherits@2.0.4 +5066 silly decomposeActions preinstall ini@2.0.0 +5067 silly decomposeActions build ini@2.0.0 +5068 silly decomposeActions install ini@2.0.0 +5069 silly decomposeActions postinstall ini@2.0.0 +5070 silly decomposeActions finalize ini@2.0.0 +5071 silly decomposeActions preinstall global-dirs@3.0.0 +5072 silly decomposeActions build global-dirs@3.0.0 +5073 silly decomposeActions install global-dirs@3.0.0 +5074 silly decomposeActions postinstall global-dirs@3.0.0 +5075 silly decomposeActions finalize global-dirs@3.0.0 +5076 silly decomposeActions preinstall ip@1.1.8 +5077 silly decomposeActions build ip@1.1.8 +5078 silly decomposeActions install ip@1.1.8 +5079 silly decomposeActions postinstall ip@1.1.8 +5080 silly decomposeActions finalize ip@1.1.8 +5081 silly decomposeActions preinstall is-ci@3.0.1 +5082 silly decomposeActions build is-ci@3.0.1 +5083 silly decomposeActions install is-ci@3.0.1 +5084 silly decomposeActions postinstall is-ci@3.0.1 +5085 silly decomposeActions finalize is-ci@3.0.1 +5086 silly decomposeActions preinstall is-core-module@2.9.0 +5087 silly decomposeActions build is-core-module@2.9.0 +5088 silly decomposeActions install is-core-module@2.9.0 +5089 silly decomposeActions postinstall is-core-module@2.9.0 +5090 silly decomposeActions finalize is-core-module@2.9.0 +5091 silly decomposeActions preinstall is-extglob@2.1.1 +5092 silly decomposeActions build is-extglob@2.1.1 +5093 silly decomposeActions install is-extglob@2.1.1 +5094 silly decomposeActions postinstall is-extglob@2.1.1 +5095 silly decomposeActions finalize is-extglob@2.1.1 +5096 silly decomposeActions preinstall is-fullwidth-code-point@3.0.0 +5097 silly decomposeActions build is-fullwidth-code-point@3.0.0 +5098 silly decomposeActions install is-fullwidth-code-point@3.0.0 +5099 silly decomposeActions postinstall is-fullwidth-code-point@3.0.0 +5100 silly decomposeActions finalize is-fullwidth-code-point@3.0.0 +5101 silly decomposeActions preinstall is-glob@4.0.3 +5102 silly decomposeActions build is-glob@4.0.3 +5103 silly decomposeActions install is-glob@4.0.3 +5104 silly decomposeActions postinstall is-glob@4.0.3 +5105 silly decomposeActions finalize is-glob@4.0.3 +5106 silly decomposeActions preinstall glob-parent@5.1.2 +5107 silly decomposeActions build glob-parent@5.1.2 +5108 silly decomposeActions install glob-parent@5.1.2 +5109 silly decomposeActions postinstall glob-parent@5.1.2 +5110 silly decomposeActions finalize glob-parent@5.1.2 +5111 silly decomposeActions preinstall is-lambda@1.0.1 +5112 silly decomposeActions build is-lambda@1.0.1 +5113 silly decomposeActions install is-lambda@1.0.1 +5114 silly decomposeActions postinstall is-lambda@1.0.1 +5115 silly decomposeActions finalize is-lambda@1.0.1 +5116 silly decomposeActions preinstall is-natural-number@4.0.1 +5117 silly decomposeActions build is-natural-number@4.0.1 +5118 silly decomposeActions install is-natural-number@4.0.1 +5119 silly decomposeActions postinstall is-natural-number@4.0.1 +5120 silly decomposeActions finalize is-natural-number@4.0.1 +5121 silly decomposeActions preinstall is-number@7.0.0 +5122 silly decomposeActions build is-number@7.0.0 +5123 silly decomposeActions install is-number@7.0.0 +5124 silly decomposeActions postinstall is-number@7.0.0 +5125 silly decomposeActions finalize is-number@7.0.0 +5126 silly decomposeActions preinstall is-path-cwd@2.2.0 +5127 silly decomposeActions build is-path-cwd@2.2.0 +5128 silly decomposeActions install is-path-cwd@2.2.0 +5129 silly decomposeActions postinstall is-path-cwd@2.2.0 +5130 silly decomposeActions finalize is-path-cwd@2.2.0 +5131 silly decomposeActions preinstall is-path-inside@3.0.3 +5132 silly decomposeActions build is-path-inside@3.0.3 +5133 silly decomposeActions install is-path-inside@3.0.3 +5134 silly decomposeActions postinstall is-path-inside@3.0.3 +5135 silly decomposeActions finalize is-path-inside@3.0.3 +5136 silly decomposeActions preinstall is-installed-globally@0.4.0 +5137 silly decomposeActions build is-installed-globally@0.4.0 +5138 silly decomposeActions install is-installed-globally@0.4.0 +5139 silly decomposeActions postinstall is-installed-globally@0.4.0 +5140 silly decomposeActions finalize is-installed-globally@0.4.0 +5141 silly decomposeActions preinstall is-stream@1.1.0 +5142 silly decomposeActions build is-stream@1.1.0 +5143 silly decomposeActions install is-stream@1.1.0 +5144 silly decomposeActions postinstall is-stream@1.1.0 +5145 silly decomposeActions finalize is-stream@1.1.0 +5146 silly decomposeActions preinstall is-windows@1.0.2 +5147 silly decomposeActions build is-windows@1.0.2 +5148 silly decomposeActions install is-windows@1.0.2 +5149 silly decomposeActions postinstall is-windows@1.0.2 +5150 silly decomposeActions finalize is-windows@1.0.2 +5151 silly decomposeActions preinstall isarray@1.0.0 +5152 silly decomposeActions build isarray@1.0.0 +5153 silly decomposeActions install isarray@1.0.0 +5154 silly decomposeActions postinstall isarray@1.0.0 +5155 silly decomposeActions finalize isarray@1.0.0 +5156 silly decomposeActions preinstall isexe@2.0.0 +5157 silly decomposeActions build isexe@2.0.0 +5158 silly decomposeActions install isexe@2.0.0 +5159 silly decomposeActions postinstall isexe@2.0.0 +5160 silly decomposeActions finalize isexe@2.0.0 +5161 silly decomposeActions preinstall json-buffer@3.0.0 +5162 silly decomposeActions build json-buffer@3.0.0 +5163 silly decomposeActions install json-buffer@3.0.0 +5164 silly decomposeActions postinstall json-buffer@3.0.0 +5165 silly decomposeActions finalize json-buffer@3.0.0 +5166 silly decomposeActions preinstall json-parse-even-better-errors@2.3.1 +5167 silly decomposeActions build json-parse-even-better-errors@2.3.1 +5168 silly decomposeActions install json-parse-even-better-errors@2.3.1 +5169 silly decomposeActions postinstall json-parse-even-better-errors@2.3.1 +5170 silly decomposeActions finalize json-parse-even-better-errors@2.3.1 +5171 silly decomposeActions preinstall jsonparse@1.3.1 +5172 silly decomposeActions build jsonparse@1.3.1 +5173 silly decomposeActions install jsonparse@1.3.1 +5174 silly decomposeActions postinstall jsonparse@1.3.1 +5175 silly decomposeActions finalize jsonparse@1.3.1 +5176 silly decomposeActions preinstall keyv@3.1.0 +5177 silly decomposeActions build keyv@3.1.0 +5178 silly decomposeActions install keyv@3.1.0 +5179 silly decomposeActions postinstall keyv@3.1.0 +5180 silly decomposeActions finalize keyv@3.1.0 +5181 silly decomposeActions preinstall liquidjs@9.39.0 +5182 silly decomposeActions build liquidjs@9.39.0 +5183 silly decomposeActions install liquidjs@9.39.0 +5184 silly decomposeActions postinstall liquidjs@9.39.0 +5185 silly decomposeActions finalize liquidjs@9.39.0 +5186 silly decomposeActions preinstall @xpack/xpm-liquid@1.2.1 +5187 silly decomposeActions build @xpack/xpm-liquid@1.2.1 +5188 silly decomposeActions install @xpack/xpm-liquid@1.2.1 +5189 silly decomposeActions postinstall @xpack/xpm-liquid@1.2.1 +5190 silly decomposeActions finalize @xpack/xpm-liquid@1.2.1 +5191 silly decomposeActions preinstall lowercase-keys@1.0.1 +5192 silly decomposeActions build lowercase-keys@1.0.1 +5193 silly decomposeActions install lowercase-keys@1.0.1 +5194 silly decomposeActions postinstall lowercase-keys@1.0.1 +5195 silly decomposeActions finalize lowercase-keys@1.0.1 +5196 silly decomposeActions preinstall lru-cache@7.13.0 +5197 silly decomposeActions build lru-cache@7.13.0 +5198 silly decomposeActions install lru-cache@7.13.0 +5199 silly decomposeActions postinstall lru-cache@7.13.0 +5200 silly decomposeActions finalize lru-cache@7.13.0 +5201 silly decomposeActions preinstall hosted-git-info@5.0.0 +5202 silly decomposeActions build hosted-git-info@5.0.0 +5203 silly decomposeActions install hosted-git-info@5.0.0 +5204 silly decomposeActions postinstall hosted-git-info@5.0.0 +5205 silly decomposeActions finalize hosted-git-info@5.0.0 +5206 silly decomposeActions preinstall semver@6.3.0 +5207 silly decomposeActions build semver@6.3.0 +5208 silly decomposeActions install semver@6.3.0 +5209 silly decomposeActions postinstall semver@6.3.0 +5210 silly decomposeActions finalize semver@6.3.0 +5211 silly decomposeActions preinstall make-dir@3.1.0 +5212 silly decomposeActions build make-dir@3.1.0 +5213 silly decomposeActions install make-dir@3.1.0 +5214 silly decomposeActions postinstall make-dir@3.1.0 +5215 silly decomposeActions finalize make-dir@3.1.0 +5216 silly decomposeActions preinstall merge2@1.4.1 +5217 silly decomposeActions build merge2@1.4.1 +5218 silly decomposeActions install merge2@1.4.1 +5219 silly decomposeActions postinstall merge2@1.4.1 +5220 silly decomposeActions finalize merge2@1.4.1 +5221 silly decomposeActions preinstall mimic-response@1.0.1 +5222 silly decomposeActions build mimic-response@1.0.1 +5223 silly decomposeActions install mimic-response@1.0.1 +5224 silly decomposeActions postinstall mimic-response@1.0.1 +5225 silly decomposeActions finalize mimic-response@1.0.1 +5226 silly decomposeActions preinstall decompress-response@3.3.0 +5227 silly decomposeActions build decompress-response@3.3.0 +5228 silly decomposeActions install decompress-response@3.3.0 +5229 silly decomposeActions postinstall decompress-response@3.3.0 +5230 silly decomposeActions finalize decompress-response@3.3.0 +5231 silly decomposeActions preinstall clone-response@1.0.2 +5232 silly decomposeActions build clone-response@1.0.2 +5233 silly decomposeActions install clone-response@1.0.2 +5234 silly decomposeActions postinstall clone-response@1.0.2 +5235 silly decomposeActions finalize clone-response@1.0.2 +5236 silly decomposeActions preinstall minimatch@5.1.0 +5237 silly decomposeActions build minimatch@5.1.0 +5238 silly decomposeActions install minimatch@5.1.0 +5239 silly decomposeActions postinstall minimatch@5.1.0 +5240 silly decomposeActions finalize minimatch@5.1.0 +5241 silly decomposeActions preinstall ignore-walk@5.0.1 +5242 silly decomposeActions build ignore-walk@5.0.1 +5243 silly decomposeActions install ignore-walk@5.0.1 +5244 silly decomposeActions postinstall ignore-walk@5.0.1 +5245 silly decomposeActions finalize ignore-walk@5.0.1 +5246 silly decomposeActions preinstall minimist@1.2.6 +5247 silly decomposeActions build minimist@1.2.6 +5248 silly decomposeActions install minimist@1.2.6 +5249 silly decomposeActions postinstall minimist@1.2.6 +5250 silly decomposeActions finalize minimist@1.2.6 +5251 silly decomposeActions preinstall mkdirp@1.0.4 +5252 silly decomposeActions build mkdirp@1.0.4 +5253 silly decomposeActions install mkdirp@1.0.4 +5254 silly decomposeActions postinstall mkdirp@1.0.4 +5255 silly decomposeActions finalize mkdirp@1.0.4 +5256 silly decomposeActions preinstall mkdirp-infer-owner@2.0.0 +5257 silly decomposeActions build mkdirp-infer-owner@2.0.0 +5258 silly decomposeActions install mkdirp-infer-owner@2.0.0 +5259 silly decomposeActions postinstall mkdirp-infer-owner@2.0.0 +5260 silly decomposeActions finalize mkdirp-infer-owner@2.0.0 +5261 silly decomposeActions preinstall @xpack/cmd-shim@4.1.0-2 +5262 silly decomposeActions build @xpack/cmd-shim@4.1.0-2 +5263 silly decomposeActions install @xpack/cmd-shim@4.1.0-2 +5264 silly decomposeActions postinstall @xpack/cmd-shim@4.1.0-2 +5265 silly decomposeActions finalize @xpack/cmd-shim@4.1.0-2 +5266 silly decomposeActions preinstall ms@2.1.2 +5267 silly decomposeActions build ms@2.1.2 +5268 silly decomposeActions install ms@2.1.2 +5269 silly decomposeActions postinstall ms@2.1.2 +5270 silly decomposeActions finalize ms@2.1.2 +5271 silly decomposeActions preinstall humanize-ms@1.2.1 +5272 silly decomposeActions build humanize-ms@1.2.1 +5273 silly decomposeActions install humanize-ms@1.2.1 +5274 silly decomposeActions postinstall humanize-ms@1.2.1 +5275 silly decomposeActions finalize humanize-ms@1.2.1 +5276 silly decomposeActions preinstall debug@4.3.4 +5277 silly decomposeActions build debug@4.3.4 +5278 silly decomposeActions install debug@4.3.4 +5279 silly decomposeActions postinstall debug@4.3.4 +5280 silly decomposeActions finalize debug@4.3.4 +5281 silly decomposeActions preinstall agentkeepalive@4.2.1 +5282 silly decomposeActions build agentkeepalive@4.2.1 +5283 silly decomposeActions install agentkeepalive@4.2.1 +5284 silly decomposeActions postinstall agentkeepalive@4.2.1 +5285 silly decomposeActions finalize agentkeepalive@4.2.1 +5286 silly decomposeActions preinstall agent-base@6.0.2 +5287 silly decomposeActions build agent-base@6.0.2 +5288 silly decomposeActions install agent-base@6.0.2 +5289 silly decomposeActions postinstall agent-base@6.0.2 +5290 silly decomposeActions finalize agent-base@6.0.2 +5291 silly decomposeActions preinstall https-proxy-agent@5.0.1 +5292 silly decomposeActions build https-proxy-agent@5.0.1 +5293 silly decomposeActions install https-proxy-agent@5.0.1 +5294 silly decomposeActions postinstall https-proxy-agent@5.0.1 +5295 silly decomposeActions finalize https-proxy-agent@5.0.1 +5296 silly decomposeActions preinstall http-proxy-agent@5.0.0 +5297 silly decomposeActions build http-proxy-agent@5.0.0 +5298 silly decomposeActions install http-proxy-agent@5.0.0 +5299 silly decomposeActions postinstall http-proxy-agent@5.0.0 +5300 silly decomposeActions finalize http-proxy-agent@5.0.0 +5301 silly decomposeActions preinstall negotiator@0.6.3 +5302 silly decomposeActions build negotiator@0.6.3 +5303 silly decomposeActions install negotiator@0.6.3 +5304 silly decomposeActions postinstall negotiator@0.6.3 +5305 silly decomposeActions finalize negotiator@0.6.3 +5306 silly decomposeActions preinstall nested-error-stacks@2.1.1 +5307 silly decomposeActions build nested-error-stacks@2.1.1 +5308 silly decomposeActions install nested-error-stacks@2.1.1 +5309 silly decomposeActions postinstall nested-error-stacks@2.1.1 +5310 silly decomposeActions finalize nested-error-stacks@2.1.1 +5311 silly decomposeActions preinstall brace-expansion@1.1.11 +5312 silly decomposeActions build brace-expansion@1.1.11 +5313 silly decomposeActions install brace-expansion@1.1.11 +5314 silly decomposeActions postinstall brace-expansion@1.1.11 +5315 silly decomposeActions finalize brace-expansion@1.1.11 +5316 silly decomposeActions preinstall minimatch@3.1.2 +5317 silly decomposeActions build minimatch@3.1.2 +5318 silly decomposeActions install minimatch@3.1.2 +5319 silly decomposeActions postinstall minimatch@3.1.2 +5320 silly decomposeActions finalize minimatch@3.1.2 +5321 silly decomposeActions preinstall nopt@5.0.0 +5322 silly decomposeActions build nopt@5.0.0 +5323 silly decomposeActions install nopt@5.0.0 +5324 silly decomposeActions postinstall nopt@5.0.0 +5325 silly decomposeActions finalize nopt@5.0.0 +5326 silly decomposeActions preinstall normalize-url@4.5.1 +5327 silly decomposeActions build normalize-url@4.5.1 +5328 silly decomposeActions install normalize-url@4.5.1 +5329 silly decomposeActions postinstall normalize-url@4.5.1 +5330 silly decomposeActions finalize normalize-url@4.5.1 +5331 silly decomposeActions preinstall npm-normalize-package-bin@1.0.1 +5332 silly decomposeActions build npm-normalize-package-bin@1.0.1 +5333 silly decomposeActions install npm-normalize-package-bin@1.0.1 +5334 silly decomposeActions postinstall npm-normalize-package-bin@1.0.1 +5335 silly decomposeActions finalize npm-normalize-package-bin@1.0.1 +5336 silly decomposeActions preinstall npm-bundled@1.1.2 +5337 silly decomposeActions build npm-bundled@1.1.2 +5338 silly decomposeActions install npm-bundled@1.1.2 +5339 silly decomposeActions postinstall npm-bundled@1.1.2 +5340 silly decomposeActions finalize npm-bundled@1.1.2 +5341 silly decomposeActions preinstall @npmcli/installed-package-contents@1.0.7 +5342 silly decomposeActions build @npmcli/installed-package-contents@1.0.7 +5343 silly decomposeActions install @npmcli/installed-package-contents@1.0.7 +5344 silly decomposeActions postinstall @npmcli/installed-package-contents@1.0.7 +5345 silly decomposeActions finalize @npmcli/installed-package-contents@1.0.7 +5346 silly decomposeActions preinstall @colors/colors@1.5.0 +5347 silly decomposeActions build @colors/colors@1.5.0 +5348 silly decomposeActions install @colors/colors@1.5.0 +5349 silly decomposeActions postinstall @colors/colors@1.5.0 +5350 silly decomposeActions finalize @colors/colors@1.5.0 +5351 silly decomposeActions preinstall @gar/promisify@1.1.3 +5352 silly decomposeActions build @gar/promisify@1.1.3 +5353 silly decomposeActions install @gar/promisify@1.1.3 +5354 silly decomposeActions postinstall @gar/promisify@1.1.3 +5355 silly decomposeActions finalize @gar/promisify@1.1.3 +5356 silly decomposeActions preinstall @isaacs/string-locale-compare@1.1.0 +5357 silly decomposeActions build @isaacs/string-locale-compare@1.1.0 +5358 silly decomposeActions install @isaacs/string-locale-compare@1.1.0 +5359 silly decomposeActions postinstall @isaacs/string-locale-compare@1.1.0 +5360 silly decomposeActions finalize @isaacs/string-locale-compare@1.1.0 +5361 silly decomposeActions preinstall @npmcli/ci-detect@2.0.0 +5362 silly decomposeActions build @npmcli/ci-detect@2.0.0 +5363 silly decomposeActions install @npmcli/ci-detect@2.0.0 +5364 silly decomposeActions postinstall @npmcli/ci-detect@2.0.0 +5365 silly decomposeActions finalize @npmcli/ci-detect@2.0.0 +5366 silly decomposeActions preinstall @npmcli/name-from-folder@1.0.1 +5367 silly decomposeActions build @npmcli/name-from-folder@1.0.1 +5368 silly decomposeActions install @npmcli/name-from-folder@1.0.1 +5369 silly decomposeActions postinstall @npmcli/name-from-folder@1.0.1 +5370 silly decomposeActions finalize @npmcli/name-from-folder@1.0.1 +5371 silly decomposeActions preinstall @npmcli/node-gyp@2.0.0 +5372 silly decomposeActions build @npmcli/node-gyp@2.0.0 +5373 silly decomposeActions install @npmcli/node-gyp@2.0.0 +5374 silly decomposeActions postinstall @npmcli/node-gyp@2.0.0 +5375 silly decomposeActions finalize @npmcli/node-gyp@2.0.0 +5376 silly decomposeActions preinstall @tootallnate/once@2.0.0 +5377 silly decomposeActions build @tootallnate/once@2.0.0 +5378 silly decomposeActions install @tootallnate/once@2.0.0 +5379 silly decomposeActions postinstall @tootallnate/once@2.0.0 +5380 silly decomposeActions finalize @tootallnate/once@2.0.0 +5381 silly decomposeActions preinstall abbrev@1.1.1 +5382 silly decomposeActions build abbrev@1.1.1 +5383 silly decomposeActions install abbrev@1.1.1 +5384 silly decomposeActions postinstall abbrev@1.1.1 +5385 silly decomposeActions finalize abbrev@1.1.1 +5386 silly decomposeActions preinstall ansi-regex@5.0.1 +5387 silly decomposeActions build ansi-regex@5.0.1 +5388 silly decomposeActions install ansi-regex@5.0.1 +5389 silly decomposeActions postinstall ansi-regex@5.0.1 +5390 silly decomposeActions finalize ansi-regex@5.0.1 +5391 silly decomposeActions preinstall aproba@2.0.0 +5392 silly decomposeActions build aproba@2.0.0 +5393 silly decomposeActions install aproba@2.0.0 +5394 silly decomposeActions postinstall aproba@2.0.0 +5395 silly decomposeActions finalize aproba@2.0.0 +5396 silly decomposeActions preinstall archy@1.0.0 +5397 silly decomposeActions build archy@1.0.0 +5398 silly decomposeActions install archy@1.0.0 +5399 silly decomposeActions postinstall archy@1.0.0 +5400 silly decomposeActions finalize archy@1.0.0 +5401 silly decomposeActions preinstall asap@2.0.6 +5402 silly decomposeActions build asap@2.0.6 +5403 silly decomposeActions install asap@2.0.6 +5404 silly decomposeActions postinstall asap@2.0.6 +5405 silly decomposeActions finalize asap@2.0.6 +5406 silly decomposeActions preinstall balanced-match@1.0.2 +5407 silly decomposeActions build balanced-match@1.0.2 +5408 silly decomposeActions install balanced-match@1.0.2 +5409 silly decomposeActions postinstall balanced-match@1.0.2 +5410 silly decomposeActions finalize balanced-match@1.0.2 +5411 silly decomposeActions preinstall binary-extensions@2.2.0 +5412 silly decomposeActions build binary-extensions@2.2.0 +5413 silly decomposeActions install binary-extensions@2.2.0 +5414 silly decomposeActions postinstall binary-extensions@2.2.0 +5415 silly decomposeActions finalize binary-extensions@2.2.0 +5416 silly decomposeActions preinstall brace-expansion@2.0.1 +5417 silly decomposeActions build brace-expansion@2.0.1 +5418 silly decomposeActions install brace-expansion@2.0.1 +5419 silly decomposeActions postinstall brace-expansion@2.0.1 +5420 silly decomposeActions finalize brace-expansion@2.0.1 +5421 silly decomposeActions preinstall chownr@2.0.0 +5422 silly decomposeActions build chownr@2.0.0 +5423 silly decomposeActions install chownr@2.0.0 +5424 silly decomposeActions postinstall chownr@2.0.0 +5425 silly decomposeActions finalize chownr@2.0.0 +5426 silly decomposeActions preinstall clean-stack@2.2.0 +5427 silly decomposeActions build clean-stack@2.2.0 +5428 silly decomposeActions install clean-stack@2.2.0 +5429 silly decomposeActions postinstall clean-stack@2.2.0 +5430 silly decomposeActions finalize clean-stack@2.2.0 +5431 silly decomposeActions preinstall clone@1.0.4 +5432 silly decomposeActions build clone@1.0.4 +5433 silly decomposeActions install clone@1.0.4 +5434 silly decomposeActions postinstall clone@1.0.4 +5435 silly decomposeActions finalize clone@1.0.4 +5436 silly decomposeActions preinstall color-name@1.1.4 +5437 silly decomposeActions build color-name@1.1.4 +5438 silly decomposeActions install color-name@1.1.4 +5439 silly decomposeActions postinstall color-name@1.1.4 +5440 silly decomposeActions finalize color-name@1.1.4 +5441 silly decomposeActions preinstall color-convert@2.0.1 +5442 silly decomposeActions build color-convert@2.0.1 +5443 silly decomposeActions install color-convert@2.0.1 +5444 silly decomposeActions postinstall color-convert@2.0.1 +5445 silly decomposeActions finalize color-convert@2.0.1 +5446 silly decomposeActions preinstall ansi-styles@4.3.0 +5447 silly decomposeActions build ansi-styles@4.3.0 +5448 silly decomposeActions install ansi-styles@4.3.0 +5449 silly decomposeActions postinstall ansi-styles@4.3.0 +5450 silly decomposeActions finalize ansi-styles@4.3.0 +5451 silly decomposeActions preinstall @npmcli/disparity-colors@2.0.0 +5452 silly decomposeActions build @npmcli/disparity-colors@2.0.0 +5453 silly decomposeActions install @npmcli/disparity-colors@2.0.0 +5454 silly decomposeActions postinstall @npmcli/disparity-colors@2.0.0 +5455 silly decomposeActions finalize @npmcli/disparity-colors@2.0.0 +5456 silly decomposeActions preinstall color-support@1.1.3 +5457 silly decomposeActions build color-support@1.1.3 +5458 silly decomposeActions install color-support@1.1.3 +5459 silly decomposeActions postinstall color-support@1.1.3 +5460 silly decomposeActions finalize color-support@1.1.3 +5461 silly decomposeActions preinstall common-ancestor-path@1.0.1 +5462 silly decomposeActions build common-ancestor-path@1.0.1 +5463 silly decomposeActions install common-ancestor-path@1.0.1 +5464 silly decomposeActions postinstall common-ancestor-path@1.0.1 +5465 silly decomposeActions finalize common-ancestor-path@1.0.1 +5466 silly decomposeActions preinstall concat-map@0.0.1 +5467 silly decomposeActions build concat-map@0.0.1 +5468 silly decomposeActions install concat-map@0.0.1 +5469 silly decomposeActions postinstall concat-map@0.0.1 +5470 silly decomposeActions finalize concat-map@0.0.1 +5471 silly decomposeActions preinstall console-control-strings@1.1.0 +5472 silly decomposeActions build console-control-strings@1.1.0 +5473 silly decomposeActions install console-control-strings@1.1.0 +5474 silly decomposeActions postinstall console-control-strings@1.1.0 +5475 silly decomposeActions finalize console-control-strings@1.1.0 +5476 silly decomposeActions preinstall cssesc@3.0.0 +5477 silly decomposeActions build cssesc@3.0.0 +5478 silly decomposeActions install cssesc@3.0.0 +5479 silly decomposeActions postinstall cssesc@3.0.0 +5480 silly decomposeActions finalize cssesc@3.0.0 +5481 silly decomposeActions preinstall ms@2.1.2 +5482 silly decomposeActions build ms@2.1.2 +5483 silly decomposeActions install ms@2.1.2 +5484 silly decomposeActions postinstall ms@2.1.2 +5485 silly decomposeActions finalize ms@2.1.2 +5486 silly decomposeActions preinstall debug@4.3.4 +5487 silly decomposeActions build debug@4.3.4 +5488 silly decomposeActions install debug@4.3.4 +5489 silly decomposeActions postinstall debug@4.3.4 +5490 silly decomposeActions finalize debug@4.3.4 +5491 silly decomposeActions preinstall agent-base@6.0.2 +5492 silly decomposeActions build agent-base@6.0.2 +5493 silly decomposeActions install agent-base@6.0.2 +5494 silly decomposeActions postinstall agent-base@6.0.2 +5495 silly decomposeActions finalize agent-base@6.0.2 +5496 silly decomposeActions preinstall debuglog@1.0.1 +5497 silly decomposeActions build debuglog@1.0.1 +5498 silly decomposeActions install debuglog@1.0.1 +5499 silly decomposeActions postinstall debuglog@1.0.1 +5500 silly decomposeActions finalize debuglog@1.0.1 +5501 silly decomposeActions preinstall defaults@1.0.3 +5502 silly decomposeActions build defaults@1.0.3 +5503 silly decomposeActions install defaults@1.0.3 +5504 silly decomposeActions postinstall defaults@1.0.3 +5505 silly decomposeActions finalize defaults@1.0.3 +5506 silly decomposeActions preinstall delegates@1.0.0 +5507 silly decomposeActions build delegates@1.0.0 +5508 silly decomposeActions install delegates@1.0.0 +5509 silly decomposeActions postinstall delegates@1.0.0 +5510 silly decomposeActions finalize delegates@1.0.0 +5511 silly decomposeActions preinstall depd@1.1.2 +5512 silly decomposeActions build depd@1.1.2 +5513 silly decomposeActions install depd@1.1.2 +5514 silly decomposeActions postinstall depd@1.1.2 +5515 silly decomposeActions finalize depd@1.1.2 +5516 silly decomposeActions preinstall diff@5.0.0 +5517 silly decomposeActions build diff@5.0.0 +5518 silly decomposeActions install diff@5.0.0 +5519 silly decomposeActions postinstall diff@5.0.0 +5520 silly decomposeActions finalize diff@5.0.0 +5521 silly decomposeActions preinstall emoji-regex@8.0.0 +5522 silly decomposeActions build emoji-regex@8.0.0 +5523 silly decomposeActions install emoji-regex@8.0.0 +5524 silly decomposeActions postinstall emoji-regex@8.0.0 +5525 silly decomposeActions finalize emoji-regex@8.0.0 +5526 silly decomposeActions preinstall env-paths@2.2.1 +5527 silly decomposeActions build env-paths@2.2.1 +5528 silly decomposeActions install env-paths@2.2.1 +5529 silly decomposeActions postinstall env-paths@2.2.1 +5530 silly decomposeActions finalize env-paths@2.2.1 +5531 silly decomposeActions preinstall err-code@2.0.3 +5532 silly decomposeActions build err-code@2.0.3 +5533 silly decomposeActions install err-code@2.0.3 +5534 silly decomposeActions postinstall err-code@2.0.3 +5535 silly decomposeActions finalize err-code@2.0.3 +5536 silly decomposeActions preinstall fastest-levenshtein@1.0.12 +5537 silly decomposeActions build fastest-levenshtein@1.0.12 +5538 silly decomposeActions install fastest-levenshtein@1.0.12 +5539 silly decomposeActions postinstall fastest-levenshtein@1.0.12 +5540 silly decomposeActions finalize fastest-levenshtein@1.0.12 +5541 silly decomposeActions preinstall fs.realpath@1.0.0 +5542 silly decomposeActions build fs.realpath@1.0.0 +5543 silly decomposeActions install fs.realpath@1.0.0 +5544 silly decomposeActions postinstall fs.realpath@1.0.0 +5545 silly decomposeActions finalize fs.realpath@1.0.0 +5546 silly decomposeActions preinstall function-bind@1.1.1 +5547 silly decomposeActions build function-bind@1.1.1 +5548 silly decomposeActions install function-bind@1.1.1 +5549 silly decomposeActions postinstall function-bind@1.1.1 +5550 silly decomposeActions finalize function-bind@1.1.1 +5551 silly decomposeActions preinstall graceful-fs@4.2.10 +5552 silly decomposeActions build graceful-fs@4.2.10 +5553 silly decomposeActions install graceful-fs@4.2.10 +5554 silly decomposeActions postinstall graceful-fs@4.2.10 +5555 silly decomposeActions finalize graceful-fs@4.2.10 +5556 silly decomposeActions preinstall has@1.0.3 +5557 silly decomposeActions build has@1.0.3 +5558 silly decomposeActions install has@1.0.3 +5559 silly decomposeActions postinstall has@1.0.3 +5560 silly decomposeActions finalize has@1.0.3 +5561 silly decomposeActions preinstall has-flag@4.0.0 +5562 silly decomposeActions build has-flag@4.0.0 +5563 silly decomposeActions install has-flag@4.0.0 +5564 silly decomposeActions postinstall has-flag@4.0.0 +5565 silly decomposeActions finalize has-flag@4.0.0 +5566 silly decomposeActions preinstall has-unicode@2.0.1 +5567 silly decomposeActions build has-unicode@2.0.1 +5568 silly decomposeActions install has-unicode@2.0.1 +5569 silly decomposeActions postinstall has-unicode@2.0.1 +5570 silly decomposeActions finalize has-unicode@2.0.1 +5571 silly decomposeActions preinstall http-cache-semantics@4.1.0 +5572 silly decomposeActions build http-cache-semantics@4.1.0 +5573 silly decomposeActions install http-cache-semantics@4.1.0 +5574 silly decomposeActions postinstall http-cache-semantics@4.1.0 +5575 silly decomposeActions finalize http-cache-semantics@4.1.0 +5576 silly decomposeActions preinstall http-proxy-agent@5.0.0 +5577 silly decomposeActions build http-proxy-agent@5.0.0 +5578 silly decomposeActions install http-proxy-agent@5.0.0 +5579 silly decomposeActions postinstall http-proxy-agent@5.0.0 +5580 silly decomposeActions finalize http-proxy-agent@5.0.0 +5581 silly decomposeActions preinstall https-proxy-agent@5.0.1 +5582 silly decomposeActions build https-proxy-agent@5.0.1 +5583 silly decomposeActions install https-proxy-agent@5.0.1 +5584 silly decomposeActions postinstall https-proxy-agent@5.0.1 +5585 silly decomposeActions finalize https-proxy-agent@5.0.1 +5586 silly decomposeActions preinstall imurmurhash@0.1.4 +5587 silly decomposeActions build imurmurhash@0.1.4 +5588 silly decomposeActions install imurmurhash@0.1.4 +5589 silly decomposeActions postinstall imurmurhash@0.1.4 +5590 silly decomposeActions finalize imurmurhash@0.1.4 +5591 silly decomposeActions preinstall indent-string@4.0.0 +5592 silly decomposeActions build indent-string@4.0.0 +5593 silly decomposeActions install indent-string@4.0.0 +5594 silly decomposeActions postinstall indent-string@4.0.0 +5595 silly decomposeActions finalize indent-string@4.0.0 +5596 silly decomposeActions preinstall aggregate-error@3.1.0 +5597 silly decomposeActions build aggregate-error@3.1.0 +5598 silly decomposeActions install aggregate-error@3.1.0 +5599 silly decomposeActions postinstall aggregate-error@3.1.0 +5600 silly decomposeActions finalize aggregate-error@3.1.0 +5601 silly decomposeActions preinstall infer-owner@1.0.4 +5602 silly decomposeActions build infer-owner@1.0.4 +5603 silly decomposeActions install infer-owner@1.0.4 +5604 silly decomposeActions postinstall infer-owner@1.0.4 +5605 silly decomposeActions finalize infer-owner@1.0.4 +5606 silly decomposeActions preinstall @npmcli/promise-spawn@3.0.0 +5607 silly decomposeActions build @npmcli/promise-spawn@3.0.0 +5608 silly decomposeActions install @npmcli/promise-spawn@3.0.0 +5609 silly decomposeActions postinstall @npmcli/promise-spawn@3.0.0 +5610 silly decomposeActions finalize @npmcli/promise-spawn@3.0.0 +5611 silly decomposeActions preinstall inherits@2.0.4 +5612 silly decomposeActions build inherits@2.0.4 +5613 silly decomposeActions install inherits@2.0.4 +5614 silly decomposeActions postinstall inherits@2.0.4 +5615 silly decomposeActions finalize inherits@2.0.4 +5616 silly decomposeActions preinstall ini@3.0.0 +5617 silly decomposeActions build ini@3.0.0 +5618 silly decomposeActions install ini@3.0.0 +5619 silly decomposeActions postinstall ini@3.0.0 +5620 silly decomposeActions finalize ini@3.0.0 +5621 silly decomposeActions preinstall ip@1.1.8 +5622 silly decomposeActions build ip@1.1.8 +5623 silly decomposeActions install ip@1.1.8 +5624 silly decomposeActions postinstall ip@1.1.8 +5625 silly decomposeActions finalize ip@1.1.8 +5626 silly decomposeActions preinstall ip-regex@4.3.0 +5627 silly decomposeActions build ip-regex@4.3.0 +5628 silly decomposeActions install ip-regex@4.3.0 +5629 silly decomposeActions postinstall ip-regex@4.3.0 +5630 silly decomposeActions finalize ip-regex@4.3.0 +5631 silly decomposeActions preinstall cidr-regex@3.1.1 +5632 silly decomposeActions build cidr-regex@3.1.1 +5633 silly decomposeActions install cidr-regex@3.1.1 +5634 silly decomposeActions postinstall cidr-regex@3.1.1 +5635 silly decomposeActions finalize cidr-regex@3.1.1 +5636 silly decomposeActions preinstall is-cidr@4.0.2 +5637 silly decomposeActions build is-cidr@4.0.2 +5638 silly decomposeActions install is-cidr@4.0.2 +5639 silly decomposeActions postinstall is-cidr@4.0.2 +5640 silly decomposeActions finalize is-cidr@4.0.2 +5641 silly decomposeActions preinstall is-core-module@2.9.0 +5642 silly decomposeActions build is-core-module@2.9.0 +5643 silly decomposeActions install is-core-module@2.9.0 +5644 silly decomposeActions postinstall is-core-module@2.9.0 +5645 silly decomposeActions finalize is-core-module@2.9.0 +5646 silly decomposeActions preinstall is-fullwidth-code-point@3.0.0 +5647 silly decomposeActions build is-fullwidth-code-point@3.0.0 +5648 silly decomposeActions install is-fullwidth-code-point@3.0.0 +5649 silly decomposeActions postinstall is-fullwidth-code-point@3.0.0 +5650 silly decomposeActions finalize is-fullwidth-code-point@3.0.0 +5651 silly decomposeActions preinstall is-lambda@1.0.1 +5652 silly decomposeActions build is-lambda@1.0.1 +5653 silly decomposeActions install is-lambda@1.0.1 +5654 silly decomposeActions postinstall is-lambda@1.0.1 +5655 silly decomposeActions finalize is-lambda@1.0.1 +5656 silly decomposeActions preinstall isexe@2.0.0 +5657 silly decomposeActions build isexe@2.0.0 +5658 silly decomposeActions install isexe@2.0.0 +5659 silly decomposeActions postinstall isexe@2.0.0 +5660 silly decomposeActions finalize isexe@2.0.0 +5661 silly decomposeActions preinstall json-parse-even-better-errors@2.3.1 +5662 silly decomposeActions build json-parse-even-better-errors@2.3.1 +5663 silly decomposeActions install json-parse-even-better-errors@2.3.1 +5664 silly decomposeActions postinstall json-parse-even-better-errors@2.3.1 +5665 silly decomposeActions finalize json-parse-even-better-errors@2.3.1 +5666 silly decomposeActions preinstall @npmcli/package-json@2.0.0 +5667 silly decomposeActions build @npmcli/package-json@2.0.0 +5668 silly decomposeActions install @npmcli/package-json@2.0.0 +5669 silly decomposeActions postinstall @npmcli/package-json@2.0.0 +5670 silly decomposeActions finalize @npmcli/package-json@2.0.0 +5671 silly decomposeActions preinstall json-stringify-nice@1.1.4 +5672 silly decomposeActions build json-stringify-nice@1.1.4 +5673 silly decomposeActions install json-stringify-nice@1.1.4 +5674 silly decomposeActions postinstall json-stringify-nice@1.1.4 +5675 silly decomposeActions finalize json-stringify-nice@1.1.4 +5676 silly decomposeActions preinstall jsonparse@1.3.1 +5677 silly decomposeActions build jsonparse@1.3.1 +5678 silly decomposeActions install jsonparse@1.3.1 +5679 silly decomposeActions postinstall jsonparse@1.3.1 +5680 silly decomposeActions finalize jsonparse@1.3.1 +5681 silly decomposeActions preinstall just-diff@5.0.3 +5682 silly decomposeActions build just-diff@5.0.3 +5683 silly decomposeActions install just-diff@5.0.3 +5684 silly decomposeActions postinstall just-diff@5.0.3 +5685 silly decomposeActions finalize just-diff@5.0.3 +5686 silly decomposeActions preinstall just-diff-apply@5.3.1 +5687 silly decomposeActions build just-diff-apply@5.3.1 +5688 silly decomposeActions install just-diff-apply@5.3.1 +5689 silly decomposeActions postinstall just-diff-apply@5.3.1 +5690 silly decomposeActions finalize just-diff-apply@5.3.1 +5691 silly decomposeActions preinstall lru-cache@7.12.0 +5692 silly decomposeActions build lru-cache@7.12.0 +5693 silly decomposeActions install lru-cache@7.12.0 +5694 silly decomposeActions postinstall lru-cache@7.12.0 +5695 silly decomposeActions finalize lru-cache@7.12.0 +5696 silly decomposeActions preinstall hosted-git-info@5.0.0 +5697 silly decomposeActions build hosted-git-info@5.0.0 +5698 silly decomposeActions install hosted-git-info@5.0.0 +5699 silly decomposeActions postinstall hosted-git-info@5.0.0 +5700 silly decomposeActions finalize hosted-git-info@5.0.0 +5701 silly decomposeActions preinstall minimatch@5.1.0 +5702 silly decomposeActions build minimatch@5.1.0 +5703 silly decomposeActions install minimatch@5.1.0 +5704 silly decomposeActions postinstall minimatch@5.1.0 +5705 silly decomposeActions finalize minimatch@5.1.0 +5706 silly decomposeActions preinstall ignore-walk@5.0.1 +5707 silly decomposeActions build ignore-walk@5.0.1 +5708 silly decomposeActions install ignore-walk@5.0.1 +5709 silly decomposeActions postinstall ignore-walk@5.0.1 +5710 silly decomposeActions finalize ignore-walk@5.0.1 +5711 silly decomposeActions preinstall mkdirp@1.0.4 +5712 silly decomposeActions build mkdirp@1.0.4 +5713 silly decomposeActions install mkdirp@1.0.4 +5714 silly decomposeActions postinstall mkdirp@1.0.4 +5715 silly decomposeActions finalize mkdirp@1.0.4 +5716 silly decomposeActions preinstall mkdirp-infer-owner@2.0.0 +5717 silly decomposeActions build mkdirp-infer-owner@2.0.0 +5718 silly decomposeActions install mkdirp-infer-owner@2.0.0 +5719 silly decomposeActions postinstall mkdirp-infer-owner@2.0.0 +5720 silly decomposeActions finalize mkdirp-infer-owner@2.0.0 +5721 silly decomposeActions preinstall cmd-shim@5.0.0 +5722 silly decomposeActions build cmd-shim@5.0.0 +5723 silly decomposeActions install cmd-shim@5.0.0 +5724 silly decomposeActions postinstall cmd-shim@5.0.0 +5725 silly decomposeActions finalize cmd-shim@5.0.0 +5726 silly decomposeActions preinstall ms@2.1.3 +5727 silly decomposeActions build ms@2.1.3 +5728 silly decomposeActions install ms@2.1.3 +5729 silly decomposeActions postinstall ms@2.1.3 +5730 silly decomposeActions finalize ms@2.1.3 +5731 silly decomposeActions preinstall humanize-ms@1.2.1 +5732 silly decomposeActions build humanize-ms@1.2.1 +5733 silly decomposeActions install humanize-ms@1.2.1 +5734 silly decomposeActions postinstall humanize-ms@1.2.1 +5735 silly decomposeActions finalize humanize-ms@1.2.1 +5736 silly decomposeActions preinstall agentkeepalive@4.2.1 +5737 silly decomposeActions build agentkeepalive@4.2.1 +5738 silly decomposeActions install agentkeepalive@4.2.1 +5739 silly decomposeActions postinstall agentkeepalive@4.2.1 +5740 silly decomposeActions finalize agentkeepalive@4.2.1 +5741 silly decomposeActions preinstall mute-stream@0.0.8 +5742 silly decomposeActions build mute-stream@0.0.8 +5743 silly decomposeActions install mute-stream@0.0.8 +5744 silly decomposeActions postinstall mute-stream@0.0.8 +5745 silly decomposeActions finalize mute-stream@0.0.8 +5746 silly decomposeActions preinstall negotiator@0.6.3 +5747 silly decomposeActions build negotiator@0.6.3 +5748 silly decomposeActions install negotiator@0.6.3 +5749 silly decomposeActions postinstall negotiator@0.6.3 +5750 silly decomposeActions finalize negotiator@0.6.3 +5751 silly decomposeActions preinstall brace-expansion@1.1.11 +5752 silly decomposeActions build brace-expansion@1.1.11 +5753 silly decomposeActions install brace-expansion@1.1.11 +5754 silly decomposeActions postinstall brace-expansion@1.1.11 +5755 silly decomposeActions finalize brace-expansion@1.1.11 +5756 silly decomposeActions preinstall minimatch@3.1.2 +5757 silly decomposeActions build minimatch@3.1.2 +5758 silly decomposeActions install minimatch@3.1.2 +5759 silly decomposeActions postinstall minimatch@3.1.2 +5760 silly decomposeActions finalize minimatch@3.1.2 +5761 silly decomposeActions preinstall nopt@5.0.0 +5762 silly decomposeActions build nopt@5.0.0 +5763 silly decomposeActions install nopt@5.0.0 +5764 silly decomposeActions postinstall nopt@5.0.0 +5765 silly decomposeActions finalize nopt@5.0.0 +5766 silly decomposeActions preinstall npm-normalize-package-bin@1.0.1 +5767 silly decomposeActions build npm-normalize-package-bin@1.0.1 +5768 silly decomposeActions install npm-normalize-package-bin@1.0.1 +5769 silly decomposeActions postinstall npm-normalize-package-bin@1.0.1 +5770 silly decomposeActions finalize npm-normalize-package-bin@1.0.1 +5771 silly decomposeActions preinstall npm-bundled@1.1.2 +5772 silly decomposeActions build npm-bundled@1.1.2 +5773 silly decomposeActions install npm-bundled@1.1.2 +5774 silly decomposeActions postinstall npm-bundled@1.1.2 +5775 silly decomposeActions finalize npm-bundled@1.1.2 +5776 silly decomposeActions preinstall @npmcli/installed-package-contents@1.0.7 +5777 silly decomposeActions build @npmcli/installed-package-contents@1.0.7 +5778 silly decomposeActions install @npmcli/installed-package-contents@1.0.7 +5779 silly decomposeActions postinstall @npmcli/installed-package-contents@1.0.7 +5780 silly decomposeActions finalize @npmcli/installed-package-contents@1.0.7 +5781 silly decomposeActions preinstall npm-user-validate@1.0.1 +5782 silly decomposeActions build npm-user-validate@1.0.1 +5783 silly decomposeActions install npm-user-validate@1.0.1 +5784 silly decomposeActions postinstall npm-user-validate@1.0.1 +5785 silly decomposeActions finalize npm-user-validate@1.0.1 +5786 silly decomposeActions preinstall opener@1.5.2 +5787 silly decomposeActions build opener@1.5.2 +5788 silly decomposeActions install opener@1.5.2 +5789 silly decomposeActions postinstall opener@1.5.2 +5790 silly decomposeActions finalize opener@1.5.2 +5791 silly decomposeActions preinstall p-map@4.0.0 +5792 silly decomposeActions build p-map@4.0.0 +5793 silly decomposeActions install p-map@4.0.0 +5794 silly decomposeActions postinstall p-map@4.0.0 +5795 silly decomposeActions finalize p-map@4.0.0 +5796 silly decomposeActions preinstall parse-conflict-json@2.0.2 +5797 silly decomposeActions build parse-conflict-json@2.0.2 +5798 silly decomposeActions install parse-conflict-json@2.0.2 +5799 silly decomposeActions postinstall parse-conflict-json@2.0.2 +5800 silly decomposeActions finalize parse-conflict-json@2.0.2 +5801 silly decomposeActions preinstall path-is-absolute@1.0.1 +5802 silly decomposeActions build path-is-absolute@1.0.1 +5803 silly decomposeActions install path-is-absolute@1.0.1 +5804 silly decomposeActions postinstall path-is-absolute@1.0.1 +5805 silly decomposeActions finalize path-is-absolute@1.0.1 +5806 silly decomposeActions preinstall proc-log@2.0.1 +5807 silly decomposeActions build proc-log@2.0.1 +5808 silly decomposeActions install proc-log@2.0.1 +5809 silly decomposeActions postinstall proc-log@2.0.1 +5810 silly decomposeActions finalize proc-log@2.0.1 +5811 silly decomposeActions preinstall promise-all-reject-late@1.0.1 +5812 silly decomposeActions build promise-all-reject-late@1.0.1 +5813 silly decomposeActions install promise-all-reject-late@1.0.1 +5814 silly decomposeActions postinstall promise-all-reject-late@1.0.1 +5815 silly decomposeActions finalize promise-all-reject-late@1.0.1 +5816 silly decomposeActions preinstall promise-call-limit@1.0.1 +5817 silly decomposeActions build promise-call-limit@1.0.1 +5818 silly decomposeActions install promise-call-limit@1.0.1 +5819 silly decomposeActions postinstall promise-call-limit@1.0.1 +5820 silly decomposeActions finalize promise-call-limit@1.0.1 +5821 silly decomposeActions preinstall promise-inflight@1.0.1 +5822 silly decomposeActions build promise-inflight@1.0.1 +5823 silly decomposeActions install promise-inflight@1.0.1 +5824 silly decomposeActions postinstall promise-inflight@1.0.1 +5825 silly decomposeActions finalize promise-inflight@1.0.1 +5826 silly decomposeActions preinstall qrcode-terminal@0.12.0 +5827 silly decomposeActions build qrcode-terminal@0.12.0 +5828 silly decomposeActions install qrcode-terminal@0.12.0 +5829 silly decomposeActions postinstall qrcode-terminal@0.12.0 +5830 silly decomposeActions finalize qrcode-terminal@0.12.0 +5831 silly decomposeActions preinstall read@1.0.7 +5832 silly decomposeActions build read@1.0.7 +5833 silly decomposeActions install read@1.0.7 +5834 silly decomposeActions postinstall read@1.0.7 +5835 silly decomposeActions finalize read@1.0.7 +5836 silly decomposeActions preinstall promzard@0.3.0 +5837 silly decomposeActions build promzard@0.3.0 +5838 silly decomposeActions install promzard@0.3.0 +5839 silly decomposeActions postinstall promzard@0.3.0 +5840 silly decomposeActions finalize promzard@0.3.0 +5841 silly decomposeActions preinstall read-cmd-shim@3.0.0 +5842 silly decomposeActions build read-cmd-shim@3.0.0 +5843 silly decomposeActions install read-cmd-shim@3.0.0 +5844 silly decomposeActions postinstall read-cmd-shim@3.0.0 +5845 silly decomposeActions finalize read-cmd-shim@3.0.0 +5846 silly decomposeActions preinstall read-package-json-fast@2.0.3 +5847 silly decomposeActions build read-package-json-fast@2.0.3 +5848 silly decomposeActions install read-package-json-fast@2.0.3 +5849 silly decomposeActions postinstall read-package-json-fast@2.0.3 +5850 silly decomposeActions finalize read-package-json-fast@2.0.3 +5851 silly decomposeActions preinstall retry@0.12.0 +5852 silly decomposeActions build retry@0.12.0 +5853 silly decomposeActions install retry@0.12.0 +5854 silly decomposeActions postinstall retry@0.12.0 +5855 silly decomposeActions finalize retry@0.12.0 +5856 silly decomposeActions preinstall promise-retry@2.0.1 +5857 silly decomposeActions build promise-retry@2.0.1 +5858 silly decomposeActions install promise-retry@2.0.1 +5859 silly decomposeActions postinstall promise-retry@2.0.1 +5860 silly decomposeActions finalize promise-retry@2.0.1 +5861 silly decomposeActions preinstall brace-expansion@1.1.11 +5862 silly decomposeActions build brace-expansion@1.1.11 +5863 silly decomposeActions install brace-expansion@1.1.11 +5864 silly decomposeActions postinstall brace-expansion@1.1.11 +5865 silly decomposeActions finalize brace-expansion@1.1.11 +5866 silly decomposeActions preinstall minimatch@3.1.2 +5867 silly decomposeActions build minimatch@3.1.2 +5868 silly decomposeActions install minimatch@3.1.2 +5869 silly decomposeActions postinstall minimatch@3.1.2 +5870 silly decomposeActions finalize minimatch@3.1.2 +5871 silly decomposeActions preinstall safe-buffer@5.2.1 +5872 silly decomposeActions build safe-buffer@5.2.1 +5873 silly decomposeActions install safe-buffer@5.2.1 +5874 silly decomposeActions postinstall safe-buffer@5.2.1 +5875 silly decomposeActions finalize safe-buffer@5.2.1 +5876 silly decomposeActions preinstall safer-buffer@2.1.2 +5877 silly decomposeActions build safer-buffer@2.1.2 +5878 silly decomposeActions install safer-buffer@2.1.2 +5879 silly decomposeActions postinstall safer-buffer@2.1.2 +5880 silly decomposeActions finalize safer-buffer@2.1.2 +5881 silly decomposeActions preinstall iconv-lite@0.6.3 +5882 silly decomposeActions build iconv-lite@0.6.3 +5883 silly decomposeActions install iconv-lite@0.6.3 +5884 silly decomposeActions postinstall iconv-lite@0.6.3 +5885 silly decomposeActions finalize iconv-lite@0.6.3 +5886 silly decomposeActions preinstall encoding@0.1.13 +5887 silly decomposeActions build encoding@0.1.13 +5888 silly decomposeActions install encoding@0.1.13 +5889 silly decomposeActions postinstall encoding@0.1.13 +5890 silly decomposeActions finalize encoding@0.1.13 +5891 silly decomposeActions preinstall set-blocking@2.0.0 +5892 silly decomposeActions build set-blocking@2.0.0 +5893 silly decomposeActions install set-blocking@2.0.0 +5894 silly decomposeActions postinstall set-blocking@2.0.0 +5895 silly decomposeActions finalize set-blocking@2.0.0 +5896 silly decomposeActions preinstall signal-exit@3.0.7 +5897 silly decomposeActions build signal-exit@3.0.7 +5898 silly decomposeActions install signal-exit@3.0.7 +5899 silly decomposeActions postinstall signal-exit@3.0.7 +5900 silly decomposeActions finalize signal-exit@3.0.7 +5901 silly decomposeActions preinstall smart-buffer@4.2.0 +5902 silly decomposeActions build smart-buffer@4.2.0 +5903 silly decomposeActions install smart-buffer@4.2.0 +5904 silly decomposeActions postinstall smart-buffer@4.2.0 +5905 silly decomposeActions finalize smart-buffer@4.2.0 +5906 silly decomposeActions preinstall socks@2.6.2 +5907 silly decomposeActions build socks@2.6.2 +5908 silly decomposeActions install socks@2.6.2 +5909 silly decomposeActions postinstall socks@2.6.2 +5910 silly decomposeActions finalize socks@2.6.2 +5911 silly decomposeActions preinstall socks-proxy-agent@7.0.0 +5912 silly decomposeActions build socks-proxy-agent@7.0.0 +5913 silly decomposeActions install socks-proxy-agent@7.0.0 +5914 silly decomposeActions postinstall socks-proxy-agent@7.0.0 +5915 silly decomposeActions finalize socks-proxy-agent@7.0.0 +5916 silly decomposeActions preinstall spdx-exceptions@2.3.0 +5917 silly decomposeActions build spdx-exceptions@2.3.0 +5918 silly decomposeActions install spdx-exceptions@2.3.0 +5919 silly decomposeActions postinstall spdx-exceptions@2.3.0 +5920 silly decomposeActions finalize spdx-exceptions@2.3.0 +5921 silly decomposeActions preinstall spdx-license-ids@3.0.11 +5922 silly decomposeActions build spdx-license-ids@3.0.11 +5923 silly decomposeActions install spdx-license-ids@3.0.11 +5924 silly decomposeActions postinstall spdx-license-ids@3.0.11 +5925 silly decomposeActions finalize spdx-license-ids@3.0.11 +5926 silly decomposeActions preinstall spdx-expression-parse@3.0.1 +5927 silly decomposeActions build spdx-expression-parse@3.0.1 +5928 silly decomposeActions install spdx-expression-parse@3.0.1 +5929 silly decomposeActions postinstall spdx-expression-parse@3.0.1 +5930 silly decomposeActions finalize spdx-expression-parse@3.0.1 +5931 silly decomposeActions preinstall spdx-correct@3.1.1 +5932 silly decomposeActions build spdx-correct@3.1.1 +5933 silly decomposeActions install spdx-correct@3.1.1 +5934 silly decomposeActions postinstall spdx-correct@3.1.1 +5935 silly decomposeActions finalize spdx-correct@3.1.1 +5936 silly decomposeActions preinstall string_decoder@1.3.0 +5937 silly decomposeActions build string_decoder@1.3.0 +5938 silly decomposeActions install string_decoder@1.3.0 +5939 silly decomposeActions postinstall string_decoder@1.3.0 +5940 silly decomposeActions finalize string_decoder@1.3.0 +5941 silly decomposeActions preinstall strip-ansi@6.0.1 +5942 silly decomposeActions build strip-ansi@6.0.1 +5943 silly decomposeActions install strip-ansi@6.0.1 +5944 silly decomposeActions postinstall strip-ansi@6.0.1 +5945 silly decomposeActions finalize strip-ansi@6.0.1 +5946 silly decomposeActions preinstall string-width@4.2.3 +5947 silly decomposeActions build string-width@4.2.3 +5948 silly decomposeActions install string-width@4.2.3 +5949 silly decomposeActions postinstall string-width@4.2.3 +5950 silly decomposeActions finalize string-width@4.2.3 +5951 silly decomposeActions preinstall cli-table3@0.6.2 +5952 silly decomposeActions build cli-table3@0.6.2 +5953 silly decomposeActions install cli-table3@0.6.2 +5954 silly decomposeActions postinstall cli-table3@0.6.2 +5955 silly decomposeActions finalize cli-table3@0.6.2 +5956 silly decomposeActions preinstall cli-columns@4.0.0 +5957 silly decomposeActions build cli-columns@4.0.0 +5958 silly decomposeActions install cli-columns@4.0.0 +5959 silly decomposeActions postinstall cli-columns@4.0.0 +5960 silly decomposeActions finalize cli-columns@4.0.0 +5961 silly decomposeActions preinstall supports-color@7.2.0 +5962 silly decomposeActions build supports-color@7.2.0 +5963 silly decomposeActions install supports-color@7.2.0 +5964 silly decomposeActions postinstall supports-color@7.2.0 +5965 silly decomposeActions finalize supports-color@7.2.0 +5966 silly decomposeActions preinstall chalk@4.1.2 +5967 silly decomposeActions build chalk@4.1.2 +5968 silly decomposeActions install chalk@4.1.2 +5969 silly decomposeActions postinstall chalk@4.1.2 +5970 silly decomposeActions finalize chalk@4.1.2 +5971 silly decomposeActions preinstall npm-audit-report@3.0.0 +5972 silly decomposeActions build npm-audit-report@3.0.0 +5973 silly decomposeActions install npm-audit-report@3.0.0 +5974 silly decomposeActions postinstall npm-audit-report@3.0.0 +5975 silly decomposeActions finalize npm-audit-report@3.0.0 +5976 silly decomposeActions preinstall text-table@0.2.0 +5977 silly decomposeActions build text-table@0.2.0 +5978 silly decomposeActions install text-table@0.2.0 +5979 silly decomposeActions postinstall text-table@0.2.0 +5980 silly decomposeActions finalize text-table@0.2.0 +5981 silly decomposeActions preinstall tiny-relative-date@1.3.0 +5982 silly decomposeActions build tiny-relative-date@1.3.0 +5983 silly decomposeActions install tiny-relative-date@1.3.0 +5984 silly decomposeActions postinstall tiny-relative-date@1.3.0 +5985 silly decomposeActions finalize tiny-relative-date@1.3.0 +5986 silly decomposeActions preinstall treeverse@2.0.0 +5987 silly decomposeActions build treeverse@2.0.0 +5988 silly decomposeActions install treeverse@2.0.0 +5989 silly decomposeActions postinstall treeverse@2.0.0 +5990 silly decomposeActions finalize treeverse@2.0.0 +5991 silly decomposeActions preinstall unique-slug@2.0.2 +5992 silly decomposeActions build unique-slug@2.0.2 +5993 silly decomposeActions install unique-slug@2.0.2 +5994 silly decomposeActions postinstall unique-slug@2.0.2 +5995 silly decomposeActions finalize unique-slug@2.0.2 +5996 silly decomposeActions preinstall unique-filename@1.1.1 +5997 silly decomposeActions build unique-filename@1.1.1 +5998 silly decomposeActions install unique-filename@1.1.1 +5999 silly decomposeActions postinstall unique-filename@1.1.1 +6000 silly decomposeActions finalize unique-filename@1.1.1 +6001 silly decomposeActions preinstall util-deprecate@1.0.2 +6002 silly decomposeActions build util-deprecate@1.0.2 +6003 silly decomposeActions install util-deprecate@1.0.2 +6004 silly decomposeActions postinstall util-deprecate@1.0.2 +6005 silly decomposeActions finalize util-deprecate@1.0.2 +6006 silly decomposeActions preinstall readable-stream@3.6.0 +6007 silly decomposeActions build readable-stream@3.6.0 +6008 silly decomposeActions install readable-stream@3.6.0 +6009 silly decomposeActions postinstall readable-stream@3.6.0 +6010 silly decomposeActions finalize readable-stream@3.6.0 +6011 silly decomposeActions preinstall are-we-there-yet@3.0.0 +6012 silly decomposeActions build are-we-there-yet@3.0.0 +6013 silly decomposeActions install are-we-there-yet@3.0.0 +6014 silly decomposeActions postinstall are-we-there-yet@3.0.0 +6015 silly decomposeActions finalize are-we-there-yet@3.0.0 +6016 silly decomposeActions preinstall postcss-selector-parser@6.0.10 +6017 silly decomposeActions build postcss-selector-parser@6.0.10 +6018 silly decomposeActions install postcss-selector-parser@6.0.10 +6019 silly decomposeActions postinstall postcss-selector-parser@6.0.10 +6020 silly decomposeActions finalize postcss-selector-parser@6.0.10 +6021 silly decomposeActions preinstall validate-npm-package-license@3.0.4 +6022 silly decomposeActions build validate-npm-package-license@3.0.4 +6023 silly decomposeActions install validate-npm-package-license@3.0.4 +6024 silly decomposeActions postinstall validate-npm-package-license@3.0.4 +6025 silly decomposeActions finalize validate-npm-package-license@3.0.4 +6026 silly decomposeActions preinstall walk-up-path@1.0.0 +6027 silly decomposeActions build walk-up-path@1.0.0 +6028 silly decomposeActions install walk-up-path@1.0.0 +6029 silly decomposeActions postinstall walk-up-path@1.0.0 +6030 silly decomposeActions finalize walk-up-path@1.0.0 +6031 silly decomposeActions preinstall wcwidth@1.0.1 +6032 silly decomposeActions build wcwidth@1.0.1 +6033 silly decomposeActions install wcwidth@1.0.1 +6034 silly decomposeActions postinstall wcwidth@1.0.1 +6035 silly decomposeActions finalize wcwidth@1.0.1 +6036 silly decomposeActions preinstall columnify@1.6.0 +6037 silly decomposeActions build columnify@1.6.0 +6038 silly decomposeActions install columnify@1.6.0 +6039 silly decomposeActions postinstall columnify@1.6.0 +6040 silly decomposeActions finalize columnify@1.6.0 +6041 silly decomposeActions preinstall which@2.0.2 +6042 silly decomposeActions build which@2.0.2 +6043 silly decomposeActions install which@2.0.2 +6044 silly decomposeActions postinstall which@2.0.2 +6045 silly decomposeActions finalize which@2.0.2 +6046 silly decomposeActions preinstall wide-align@1.1.5 +6047 silly decomposeActions build wide-align@1.1.5 +6048 silly decomposeActions install wide-align@1.1.5 +6049 silly decomposeActions postinstall wide-align@1.1.5 +6050 silly decomposeActions finalize wide-align@1.1.5 +6051 silly decomposeActions preinstall gauge@4.0.4 +6052 silly decomposeActions build gauge@4.0.4 +6053 silly decomposeActions install gauge@4.0.4 +6054 silly decomposeActions postinstall gauge@4.0.4 +6055 silly decomposeActions finalize gauge@4.0.4 +6056 silly decomposeActions preinstall npmlog@6.0.2 +6057 silly decomposeActions build npmlog@6.0.2 +6058 silly decomposeActions install npmlog@6.0.2 +6059 silly decomposeActions postinstall npmlog@6.0.2 +6060 silly decomposeActions finalize npmlog@6.0.2 +6061 silly decomposeActions preinstall wrappy@1.0.2 +6062 silly decomposeActions build wrappy@1.0.2 +6063 silly decomposeActions install wrappy@1.0.2 +6064 silly decomposeActions postinstall wrappy@1.0.2 +6065 silly decomposeActions finalize wrappy@1.0.2 +6066 silly decomposeActions preinstall once@1.4.0 +6067 silly decomposeActions build once@1.4.0 +6068 silly decomposeActions install once@1.4.0 +6069 silly decomposeActions postinstall once@1.4.0 +6070 silly decomposeActions finalize once@1.4.0 +6071 silly decomposeActions preinstall inflight@1.0.6 +6072 silly decomposeActions build inflight@1.0.6 +6073 silly decomposeActions install inflight@1.0.6 +6074 silly decomposeActions postinstall inflight@1.0.6 +6075 silly decomposeActions finalize inflight@1.0.6 +6076 silly decomposeActions preinstall glob@7.2.3 +6077 silly decomposeActions build glob@7.2.3 +6078 silly decomposeActions install glob@7.2.3 +6079 silly decomposeActions postinstall glob@7.2.3 +6080 silly decomposeActions finalize glob@7.2.3 +6081 silly decomposeActions preinstall rimraf@3.0.2 +6082 silly decomposeActions build rimraf@3.0.2 +6083 silly decomposeActions install rimraf@3.0.2 +6084 silly decomposeActions postinstall rimraf@3.0.2 +6085 silly decomposeActions finalize rimraf@3.0.2 +6086 silly decomposeActions preinstall @npmcli/move-file@2.0.0 +6087 silly decomposeActions build @npmcli/move-file@2.0.0 +6088 silly decomposeActions install @npmcli/move-file@2.0.0 +6089 silly decomposeActions postinstall @npmcli/move-file@2.0.0 +6090 silly decomposeActions finalize @npmcli/move-file@2.0.0 +6091 silly decomposeActions preinstall glob@7.2.3 +6092 silly decomposeActions build glob@7.2.3 +6093 silly decomposeActions install glob@7.2.3 +6094 silly decomposeActions postinstall glob@7.2.3 +6095 silly decomposeActions finalize glob@7.2.3 +6096 silly decomposeActions preinstall glob@8.0.3 +6097 silly decomposeActions build glob@8.0.3 +6098 silly decomposeActions install glob@8.0.3 +6099 silly decomposeActions postinstall glob@8.0.3 +6100 silly decomposeActions finalize glob@8.0.3 +6101 silly decomposeActions preinstall npm-packlist@5.1.1 +6102 silly decomposeActions build npm-packlist@5.1.1 +6103 silly decomposeActions install npm-packlist@5.1.1 +6104 silly decomposeActions postinstall npm-packlist@5.1.1 +6105 silly decomposeActions finalize npm-packlist@5.1.1 +6106 silly decomposeActions preinstall @npmcli/map-workspaces@2.0.3 +6107 silly decomposeActions build @npmcli/map-workspaces@2.0.3 +6108 silly decomposeActions install @npmcli/map-workspaces@2.0.3 +6109 silly decomposeActions postinstall @npmcli/map-workspaces@2.0.3 +6110 silly decomposeActions finalize @npmcli/map-workspaces@2.0.3 +6111 silly decomposeActions preinstall dezalgo@1.0.4 +6112 silly decomposeActions build dezalgo@1.0.4 +6113 silly decomposeActions install dezalgo@1.0.4 +6114 silly decomposeActions postinstall dezalgo@1.0.4 +6115 silly decomposeActions finalize dezalgo@1.0.4 +6116 silly decomposeActions preinstall readdir-scoped-modules@1.1.0 +6117 silly decomposeActions build readdir-scoped-modules@1.1.0 +6118 silly decomposeActions install readdir-scoped-modules@1.1.0 +6119 silly decomposeActions postinstall readdir-scoped-modules@1.1.0 +6120 silly decomposeActions finalize readdir-scoped-modules@1.1.0 +6121 silly decomposeActions preinstall write-file-atomic@4.0.1 +6122 silly decomposeActions build write-file-atomic@4.0.1 +6123 silly decomposeActions install write-file-atomic@4.0.1 +6124 silly decomposeActions postinstall write-file-atomic@4.0.1 +6125 silly decomposeActions finalize write-file-atomic@4.0.1 +6126 silly decomposeActions preinstall bin-links@3.0.1 +6127 silly decomposeActions build bin-links@3.0.1 +6128 silly decomposeActions install bin-links@3.0.1 +6129 silly decomposeActions postinstall bin-links@3.0.1 +6130 silly decomposeActions finalize bin-links@3.0.1 +6131 silly decomposeActions preinstall yallist@4.0.0 +6132 silly decomposeActions build yallist@4.0.0 +6133 silly decomposeActions install yallist@4.0.0 +6134 silly decomposeActions postinstall yallist@4.0.0 +6135 silly decomposeActions finalize yallist@4.0.0 +6136 silly decomposeActions preinstall lru-cache@6.0.0 +6137 silly decomposeActions build lru-cache@6.0.0 +6138 silly decomposeActions install lru-cache@6.0.0 +6139 silly decomposeActions postinstall lru-cache@6.0.0 +6140 silly decomposeActions finalize lru-cache@6.0.0 +6141 silly decomposeActions preinstall semver@7.3.7 +6142 silly decomposeActions build semver@7.3.7 +6143 silly decomposeActions install semver@7.3.7 +6144 silly decomposeActions postinstall semver@7.3.7 +6145 silly decomposeActions finalize semver@7.3.7 +6146 silly decomposeActions preinstall npm-install-checks@5.0.0 +6147 silly decomposeActions build npm-install-checks@5.0.0 +6148 silly decomposeActions install npm-install-checks@5.0.0 +6149 silly decomposeActions postinstall npm-install-checks@5.0.0 +6150 silly decomposeActions finalize npm-install-checks@5.0.0 +6151 silly decomposeActions preinstall normalize-package-data@4.0.0 +6152 silly decomposeActions build normalize-package-data@4.0.0 +6153 silly decomposeActions install normalize-package-data@4.0.0 +6154 silly decomposeActions postinstall normalize-package-data@4.0.0 +6155 silly decomposeActions finalize normalize-package-data@4.0.0 +6156 silly decomposeActions preinstall read-package-json@5.0.1 +6157 silly decomposeActions build read-package-json@5.0.1 +6158 silly decomposeActions install read-package-json@5.0.1 +6159 silly decomposeActions postinstall read-package-json@5.0.1 +6160 silly decomposeActions finalize read-package-json@5.0.1 +6161 silly decomposeActions preinstall builtins@5.0.1 +6162 silly decomposeActions build builtins@5.0.1 +6163 silly decomposeActions install builtins@5.0.1 +6164 silly decomposeActions postinstall builtins@5.0.1 +6165 silly decomposeActions finalize builtins@5.0.1 +6166 silly decomposeActions preinstall validate-npm-package-name@4.0.0 +6167 silly decomposeActions build validate-npm-package-name@4.0.0 +6168 silly decomposeActions install validate-npm-package-name@4.0.0 +6169 silly decomposeActions postinstall validate-npm-package-name@4.0.0 +6170 silly decomposeActions finalize validate-npm-package-name@4.0.0 +6171 silly decomposeActions preinstall npm-package-arg@9.1.0 +6172 silly decomposeActions build npm-package-arg@9.1.0 +6173 silly decomposeActions install npm-package-arg@9.1.0 +6174 silly decomposeActions postinstall npm-package-arg@9.1.0 +6175 silly decomposeActions finalize npm-package-arg@9.1.0 +6176 silly decomposeActions preinstall npm-pick-manifest@7.0.1 +6177 silly decomposeActions build npm-pick-manifest@7.0.1 +6178 silly decomposeActions install npm-pick-manifest@7.0.1 +6179 silly decomposeActions postinstall npm-pick-manifest@7.0.1 +6180 silly decomposeActions finalize npm-pick-manifest@7.0.1 +6181 silly decomposeActions preinstall init-package-json@3.0.2 +6182 silly decomposeActions build init-package-json@3.0.2 +6183 silly decomposeActions install init-package-json@3.0.2 +6184 silly decomposeActions postinstall init-package-json@3.0.2 +6185 silly decomposeActions finalize init-package-json@3.0.2 +6186 silly decomposeActions preinstall @npmcli/query@1.1.1 +6187 silly decomposeActions build @npmcli/query@1.1.1 +6188 silly decomposeActions install @npmcli/query@1.1.1 +6189 silly decomposeActions postinstall @npmcli/query@1.1.1 +6190 silly decomposeActions finalize @npmcli/query@1.1.1 +6191 silly decomposeActions preinstall @npmcli/git@3.0.1 +6192 silly decomposeActions build @npmcli/git@3.0.1 +6193 silly decomposeActions install @npmcli/git@3.0.1 +6194 silly decomposeActions postinstall @npmcli/git@3.0.1 +6195 silly decomposeActions finalize @npmcli/git@3.0.1 +6196 silly decomposeActions preinstall @npmcli/fs@2.1.1 +6197 silly decomposeActions build @npmcli/fs@2.1.1 +6198 silly decomposeActions install @npmcli/fs@2.1.1 +6199 silly decomposeActions postinstall @npmcli/fs@2.1.1 +6200 silly decomposeActions finalize @npmcli/fs@2.1.1 +6201 silly decomposeActions preinstall @npmcli/config@4.2.0 +6202 silly decomposeActions build @npmcli/config@4.2.0 +6203 silly decomposeActions install @npmcli/config@4.2.0 +6204 silly decomposeActions postinstall @npmcli/config@4.2.0 +6205 silly decomposeActions finalize @npmcli/config@4.2.0 +6206 silly decomposeActions preinstall minipass@3.3.4 +6207 silly decomposeActions build minipass@3.3.4 +6208 silly decomposeActions install minipass@3.3.4 +6209 silly decomposeActions postinstall minipass@3.3.4 +6210 silly decomposeActions finalize minipass@3.3.4 +6211 silly decomposeActions preinstall ssri@9.0.1 +6212 silly decomposeActions build ssri@9.0.1 +6213 silly decomposeActions install ssri@9.0.1 +6214 silly decomposeActions postinstall ssri@9.0.1 +6215 silly decomposeActions finalize ssri@9.0.1 +6216 silly decomposeActions preinstall minizlib@2.1.2 +6217 silly decomposeActions build minizlib@2.1.2 +6218 silly decomposeActions install minizlib@2.1.2 +6219 silly decomposeActions postinstall minizlib@2.1.2 +6220 silly decomposeActions finalize minizlib@2.1.2 +6221 silly decomposeActions preinstall minipass-sized@1.0.3 +6222 silly decomposeActions build minipass-sized@1.0.3 +6223 silly decomposeActions install minipass-sized@1.0.3 +6224 silly decomposeActions postinstall minipass-sized@1.0.3 +6225 silly decomposeActions finalize minipass-sized@1.0.3 +6226 silly decomposeActions preinstall minipass-pipeline@1.2.4 +6227 silly decomposeActions build minipass-pipeline@1.2.4 +6228 silly decomposeActions install minipass-pipeline@1.2.4 +6229 silly decomposeActions postinstall minipass-pipeline@1.2.4 +6230 silly decomposeActions finalize minipass-pipeline@1.2.4 +6231 silly decomposeActions preinstall minipass-json-stream@1.0.1 +6232 silly decomposeActions build minipass-json-stream@1.0.1 +6233 silly decomposeActions install minipass-json-stream@1.0.1 +6234 silly decomposeActions postinstall minipass-json-stream@1.0.1 +6235 silly decomposeActions finalize minipass-json-stream@1.0.1 +6236 silly decomposeActions preinstall minipass-flush@1.0.5 +6237 silly decomposeActions build minipass-flush@1.0.5 +6238 silly decomposeActions install minipass-flush@1.0.5 +6239 silly decomposeActions postinstall minipass-flush@1.0.5 +6240 silly decomposeActions finalize minipass-flush@1.0.5 +6241 silly decomposeActions preinstall minipass-fetch@2.1.0 +6242 silly decomposeActions build minipass-fetch@2.1.0 +6243 silly decomposeActions install minipass-fetch@2.1.0 +6244 silly decomposeActions postinstall minipass-fetch@2.1.0 +6245 silly decomposeActions finalize minipass-fetch@2.1.0 +6246 silly decomposeActions preinstall minipass-collect@1.0.2 +6247 silly decomposeActions build minipass-collect@1.0.2 +6248 silly decomposeActions install minipass-collect@1.0.2 +6249 silly decomposeActions postinstall minipass-collect@1.0.2 +6250 silly decomposeActions finalize minipass-collect@1.0.2 +6251 silly decomposeActions preinstall fs-minipass@2.1.0 +6252 silly decomposeActions build fs-minipass@2.1.0 +6253 silly decomposeActions install fs-minipass@2.1.0 +6254 silly decomposeActions postinstall fs-minipass@2.1.0 +6255 silly decomposeActions finalize fs-minipass@2.1.0 +6256 silly decomposeActions preinstall tar@6.1.11 +6257 silly decomposeActions build tar@6.1.11 +6258 silly decomposeActions install tar@6.1.11 +6259 silly decomposeActions postinstall tar@6.1.11 +6260 silly decomposeActions finalize tar@6.1.11 +6261 silly decomposeActions preinstall cacache@16.1.1 +6262 silly decomposeActions build cacache@16.1.1 +6263 silly decomposeActions install cacache@16.1.1 +6264 silly decomposeActions postinstall cacache@16.1.1 +6265 silly decomposeActions finalize cacache@16.1.1 +6266 silly decomposeActions preinstall make-fetch-happen@10.2.0 +6267 silly decomposeActions build make-fetch-happen@10.2.0 +6268 silly decomposeActions install make-fetch-happen@10.2.0 +6269 silly decomposeActions postinstall make-fetch-happen@10.2.0 +6270 silly decomposeActions finalize make-fetch-happen@10.2.0 +6271 silly decomposeActions preinstall npm-registry-fetch@13.3.0 +6272 silly decomposeActions build npm-registry-fetch@13.3.0 +6273 silly decomposeActions install npm-registry-fetch@13.3.0 +6274 silly decomposeActions postinstall npm-registry-fetch@13.3.0 +6275 silly decomposeActions finalize npm-registry-fetch@13.3.0 +6276 silly decomposeActions preinstall npm-profile@6.2.1 +6277 silly decomposeActions build npm-profile@6.2.1 +6278 silly decomposeActions install npm-profile@6.2.1 +6279 silly decomposeActions postinstall npm-profile@6.2.1 +6280 silly decomposeActions finalize npm-profile@6.2.1 +6281 silly decomposeActions preinstall libnpmteam@4.0.3 +6282 silly decomposeActions build libnpmteam@4.0.3 +6283 silly decomposeActions install libnpmteam@4.0.3 +6284 silly decomposeActions postinstall libnpmteam@4.0.3 +6285 silly decomposeActions finalize libnpmteam@4.0.3 +6286 silly decomposeActions preinstall libnpmsearch@5.0.3 +6287 silly decomposeActions build libnpmsearch@5.0.3 +6288 silly decomposeActions install libnpmsearch@5.0.3 +6289 silly decomposeActions postinstall libnpmsearch@5.0.3 +6290 silly decomposeActions finalize libnpmsearch@5.0.3 +6291 silly decomposeActions preinstall libnpmpublish@6.0.4 +6292 silly decomposeActions build libnpmpublish@6.0.4 +6293 silly decomposeActions install libnpmpublish@6.0.4 +6294 silly decomposeActions postinstall libnpmpublish@6.0.4 +6295 silly decomposeActions finalize libnpmpublish@6.0.4 +6296 silly decomposeActions preinstall libnpmorg@4.0.3 +6297 silly decomposeActions build libnpmorg@4.0.3 +6298 silly decomposeActions install libnpmorg@4.0.3 +6299 silly decomposeActions postinstall libnpmorg@4.0.3 +6300 silly decomposeActions finalize libnpmorg@4.0.3 +6301 silly decomposeActions preinstall libnpmhook@8.0.3 +6302 silly decomposeActions build libnpmhook@8.0.3 +6303 silly decomposeActions install libnpmhook@8.0.3 +6304 silly decomposeActions postinstall libnpmhook@8.0.3 +6305 silly decomposeActions finalize libnpmhook@8.0.3 +6306 silly decomposeActions preinstall libnpmaccess@6.0.3 +6307 silly decomposeActions build libnpmaccess@6.0.3 +6308 silly decomposeActions install libnpmaccess@6.0.3 +6309 silly decomposeActions postinstall libnpmaccess@6.0.3 +6310 silly decomposeActions finalize libnpmaccess@6.0.3 +6311 silly decomposeActions preinstall node-gyp@9.0.0 +6312 silly decomposeActions build node-gyp@9.0.0 +6313 silly decomposeActions install node-gyp@9.0.0 +6314 silly decomposeActions postinstall node-gyp@9.0.0 +6315 silly decomposeActions finalize node-gyp@9.0.0 +6316 silly decomposeActions preinstall @npmcli/run-script@4.2.0 +6317 silly decomposeActions build @npmcli/run-script@4.2.0 +6318 silly decomposeActions install @npmcli/run-script@4.2.0 +6319 silly decomposeActions postinstall @npmcli/run-script@4.2.0 +6320 silly decomposeActions finalize @npmcli/run-script@4.2.0 +6321 silly decomposeActions preinstall pacote@13.6.1 +6322 silly decomposeActions build pacote@13.6.1 +6323 silly decomposeActions install pacote@13.6.1 +6324 silly decomposeActions postinstall pacote@13.6.1 +6325 silly decomposeActions finalize pacote@13.6.1 +6326 silly decomposeActions preinstall libnpmdiff@4.0.4 +6327 silly decomposeActions build libnpmdiff@4.0.4 +6328 silly decomposeActions install libnpmdiff@4.0.4 +6329 silly decomposeActions postinstall libnpmdiff@4.0.4 +6330 silly decomposeActions finalize libnpmdiff@4.0.4 +6331 silly decomposeActions preinstall libnpmversion@3.0.6 +6332 silly decomposeActions build libnpmversion@3.0.6 +6333 silly decomposeActions install libnpmversion@3.0.6 +6334 silly decomposeActions postinstall libnpmversion@3.0.6 +6335 silly decomposeActions finalize libnpmversion@3.0.6 +6336 silly decomposeActions preinstall libnpmpack@4.1.2 +6337 silly decomposeActions build libnpmpack@4.1.2 +6338 silly decomposeActions install libnpmpack@4.1.2 +6339 silly decomposeActions postinstall libnpmpack@4.1.2 +6340 silly decomposeActions finalize libnpmpack@4.1.2 +6341 silly decomposeActions preinstall @npmcli/metavuln-calculator@3.1.1 +6342 silly decomposeActions build @npmcli/metavuln-calculator@3.1.1 +6343 silly decomposeActions install @npmcli/metavuln-calculator@3.1.1 +6344 silly decomposeActions postinstall @npmcli/metavuln-calculator@3.1.1 +6345 silly decomposeActions finalize @npmcli/metavuln-calculator@3.1.1 +6346 silly decomposeActions preinstall @npmcli/arborist@5.4.0 +6347 silly decomposeActions build @npmcli/arborist@5.4.0 +6348 silly decomposeActions install @npmcli/arborist@5.4.0 +6349 silly decomposeActions postinstall @npmcli/arborist@5.4.0 +6350 silly decomposeActions finalize @npmcli/arborist@5.4.0 +6351 silly decomposeActions preinstall libnpmfund@3.0.2 +6352 silly decomposeActions build libnpmfund@3.0.2 +6353 silly decomposeActions install libnpmfund@3.0.2 +6354 silly decomposeActions postinstall libnpmfund@3.0.2 +6355 silly decomposeActions finalize libnpmfund@3.0.2 +6356 silly decomposeActions preinstall libnpmexec@4.0.9 +6357 silly decomposeActions build libnpmexec@4.0.9 +6358 silly decomposeActions install libnpmexec@4.0.9 +6359 silly decomposeActions postinstall libnpmexec@4.0.9 +6360 silly decomposeActions finalize libnpmexec@4.0.9 +6361 silly decomposeActions fetch npm@8.16.0 +6362 silly decomposeActions extract npm@8.16.0 +6363 silly decomposeActions test npm@8.16.0 +6364 silly decomposeActions preinstall npm@8.16.0 +6365 silly decomposeActions build npm@8.16.0 +6366 silly decomposeActions install npm@8.16.0 +6367 silly decomposeActions postinstall npm@8.16.0 +6368 silly decomposeActions finalize npm@8.16.0 +6369 silly decomposeActions preinstall object-assign@4.1.1 +6370 silly decomposeActions build object-assign@4.1.1 +6371 silly decomposeActions install object-assign@4.1.1 +6372 silly decomposeActions postinstall object-assign@4.1.1 +6373 silly decomposeActions finalize object-assign@4.1.1 +6374 silly decomposeActions preinstall p-cancelable@1.1.0 +6375 silly decomposeActions build p-cancelable@1.1.0 +6376 silly decomposeActions install p-cancelable@1.1.0 +6377 silly decomposeActions postinstall p-cancelable@1.1.0 +6378 silly decomposeActions finalize p-cancelable@1.1.0 +6379 silly decomposeActions preinstall p-finally@1.0.0 +6380 silly decomposeActions build p-finally@1.0.0 +6381 silly decomposeActions install p-finally@1.0.0 +6382 silly decomposeActions postinstall p-finally@1.0.0 +6383 silly decomposeActions finalize p-finally@1.0.0 +6384 silly decomposeActions preinstall p-map@4.0.0 +6385 silly decomposeActions build p-map@4.0.0 +6386 silly decomposeActions install p-map@4.0.0 +6387 silly decomposeActions postinstall p-map@4.0.0 +6388 silly decomposeActions finalize p-map@4.0.0 +6389 silly decomposeActions preinstall p-timeout@3.2.0 +6390 silly decomposeActions build p-timeout@3.2.0 +6391 silly decomposeActions install p-timeout@3.2.0 +6392 silly decomposeActions postinstall p-timeout@3.2.0 +6393 silly decomposeActions finalize p-timeout@3.2.0 +6394 silly decomposeActions preinstall p-event@4.2.0 +6395 silly decomposeActions build p-event@4.2.0 +6396 silly decomposeActions install p-event@4.2.0 +6397 silly decomposeActions postinstall p-event@4.2.0 +6398 silly decomposeActions finalize p-event@4.2.0 +6399 silly decomposeActions preinstall cp-file@9.1.0 +6400 silly decomposeActions build cp-file@9.1.0 +6401 silly decomposeActions install cp-file@9.1.0 +6402 silly decomposeActions postinstall cp-file@9.1.0 +6403 silly decomposeActions finalize cp-file@9.1.0 +6404 silly decomposeActions preinstall semver@6.3.0 +6405 silly decomposeActions build semver@6.3.0 +6406 silly decomposeActions install semver@6.3.0 +6407 silly decomposeActions postinstall semver@6.3.0 +6408 silly decomposeActions finalize semver@6.3.0 +6409 silly decomposeActions preinstall ini@1.3.8 +6410 silly decomposeActions build ini@1.3.8 +6411 silly decomposeActions install ini@1.3.8 +6412 silly decomposeActions postinstall ini@1.3.8 +6413 silly decomposeActions finalize ini@1.3.8 +6414 silly decomposeActions preinstall parse-git-config@3.0.0 +6415 silly decomposeActions build parse-git-config@3.0.0 +6416 silly decomposeActions install parse-git-config@3.0.0 +6417 silly decomposeActions postinstall parse-git-config@3.0.0 +6418 silly decomposeActions finalize parse-git-config@3.0.0 +6419 silly decomposeActions preinstall path-is-absolute@1.0.1 +6420 silly decomposeActions build path-is-absolute@1.0.1 +6421 silly decomposeActions install path-is-absolute@1.0.1 +6422 silly decomposeActions postinstall path-is-absolute@1.0.1 +6423 silly decomposeActions finalize path-is-absolute@1.0.1 +6424 silly decomposeActions preinstall path-key@3.1.1 +6425 silly decomposeActions build path-key@3.1.1 +6426 silly decomposeActions install path-key@3.1.1 +6427 silly decomposeActions postinstall path-key@3.1.1 +6428 silly decomposeActions finalize path-key@3.1.1 +6429 silly decomposeActions preinstall path-type@4.0.0 +6430 silly decomposeActions build path-type@4.0.0 +6431 silly decomposeActions install path-type@4.0.0 +6432 silly decomposeActions postinstall path-type@4.0.0 +6433 silly decomposeActions finalize path-type@4.0.0 +6434 silly decomposeActions preinstall dir-glob@3.0.1 +6435 silly decomposeActions build dir-glob@3.0.1 +6436 silly decomposeActions install dir-glob@3.0.1 +6437 silly decomposeActions postinstall dir-glob@3.0.1 +6438 silly decomposeActions finalize dir-glob@3.0.1 +6439 silly decomposeActions preinstall pend@1.2.0 +6440 silly decomposeActions build pend@1.2.0 +6441 silly decomposeActions install pend@1.2.0 +6442 silly decomposeActions postinstall pend@1.2.0 +6443 silly decomposeActions finalize pend@1.2.0 +6444 silly decomposeActions preinstall fd-slicer@1.1.0 +6445 silly decomposeActions build fd-slicer@1.1.0 +6446 silly decomposeActions install fd-slicer@1.1.0 +6447 silly decomposeActions postinstall fd-slicer@1.1.0 +6448 silly decomposeActions finalize fd-slicer@1.1.0 +6449 silly decomposeActions preinstall picomatch@2.3.1 +6450 silly decomposeActions build picomatch@2.3.1 +6451 silly decomposeActions install picomatch@2.3.1 +6452 silly decomposeActions postinstall picomatch@2.3.1 +6453 silly decomposeActions finalize picomatch@2.3.1 +6454 silly decomposeActions preinstall pify@2.3.0 +6455 silly decomposeActions build pify@2.3.0 +6456 silly decomposeActions install pify@2.3.0 +6457 silly decomposeActions postinstall pify@2.3.0 +6458 silly decomposeActions finalize pify@2.3.0 +6459 silly decomposeActions preinstall pinkie@2.0.4 +6460 silly decomposeActions build pinkie@2.0.4 +6461 silly decomposeActions install pinkie@2.0.4 +6462 silly decomposeActions postinstall pinkie@2.0.4 +6463 silly decomposeActions finalize pinkie@2.0.4 +6464 silly decomposeActions preinstall pinkie-promise@2.0.1 +6465 silly decomposeActions build pinkie-promise@2.0.1 +6466 silly decomposeActions install pinkie-promise@2.0.1 +6467 silly decomposeActions postinstall pinkie-promise@2.0.1 +6468 silly decomposeActions finalize pinkie-promise@2.0.1 +6469 silly decomposeActions preinstall get-stream@2.3.1 +6470 silly decomposeActions build get-stream@2.3.1 +6471 silly decomposeActions install get-stream@2.3.1 +6472 silly decomposeActions postinstall get-stream@2.3.1 +6473 silly decomposeActions finalize get-stream@2.3.1 +6474 silly decomposeActions preinstall prepend-http@2.0.0 +6475 silly decomposeActions build prepend-http@2.0.0 +6476 silly decomposeActions install prepend-http@2.0.0 +6477 silly decomposeActions postinstall prepend-http@2.0.0 +6478 silly decomposeActions finalize prepend-http@2.0.0 +6479 silly decomposeActions preinstall proc-log@2.0.1 +6480 silly decomposeActions build proc-log@2.0.1 +6481 silly decomposeActions install proc-log@2.0.1 +6482 silly decomposeActions postinstall proc-log@2.0.1 +6483 silly decomposeActions finalize proc-log@2.0.1 +6484 silly decomposeActions preinstall process-nextick-args@2.0.1 +6485 silly decomposeActions build process-nextick-args@2.0.1 +6486 silly decomposeActions install process-nextick-args@2.0.1 +6487 silly decomposeActions postinstall process-nextick-args@2.0.1 +6488 silly decomposeActions finalize process-nextick-args@2.0.1 +6489 silly decomposeActions preinstall promise-inflight@1.0.1 +6490 silly decomposeActions build promise-inflight@1.0.1 +6491 silly decomposeActions install promise-inflight@1.0.1 +6492 silly decomposeActions postinstall promise-inflight@1.0.1 +6493 silly decomposeActions finalize promise-inflight@1.0.1 +6494 silly decomposeActions preinstall queue-microtask@1.2.3 +6495 silly decomposeActions build queue-microtask@1.2.3 +6496 silly decomposeActions install queue-microtask@1.2.3 +6497 silly decomposeActions postinstall queue-microtask@1.2.3 +6498 silly decomposeActions finalize queue-microtask@1.2.3 +6499 silly decomposeActions preinstall ini@1.3.8 +6500 silly decomposeActions build ini@1.3.8 +6501 silly decomposeActions install ini@1.3.8 +6502 silly decomposeActions postinstall ini@1.3.8 +6503 silly decomposeActions finalize ini@1.3.8 +6504 silly decomposeActions preinstall read-package-json-fast@2.0.3 +6505 silly decomposeActions build read-package-json-fast@2.0.3 +6506 silly decomposeActions install read-package-json-fast@2.0.3 +6507 silly decomposeActions postinstall read-package-json-fast@2.0.3 +6508 silly decomposeActions finalize read-package-json-fast@2.0.3 +6509 silly decomposeActions preinstall responselike@1.0.2 +6510 silly decomposeActions build responselike@1.0.2 +6511 silly decomposeActions install responselike@1.0.2 +6512 silly decomposeActions postinstall responselike@1.0.2 +6513 silly decomposeActions finalize responselike@1.0.2 +6514 silly decomposeActions preinstall retry@0.12.0 +6515 silly decomposeActions build retry@0.12.0 +6516 silly decomposeActions install retry@0.12.0 +6517 silly decomposeActions postinstall retry@0.12.0 +6518 silly decomposeActions finalize retry@0.12.0 +6519 silly decomposeActions preinstall promise-retry@2.0.1 +6520 silly decomposeActions build promise-retry@2.0.1 +6521 silly decomposeActions install promise-retry@2.0.1 +6522 silly decomposeActions postinstall promise-retry@2.0.1 +6523 silly decomposeActions finalize promise-retry@2.0.1 +6524 silly decomposeActions preinstall reusify@1.0.4 +6525 silly decomposeActions build reusify@1.0.4 +6526 silly decomposeActions install reusify@1.0.4 +6527 silly decomposeActions postinstall reusify@1.0.4 +6528 silly decomposeActions finalize reusify@1.0.4 +6529 silly decomposeActions preinstall fastq@1.13.0 +6530 silly decomposeActions build fastq@1.13.0 +6531 silly decomposeActions install fastq@1.13.0 +6532 silly decomposeActions postinstall fastq@1.13.0 +6533 silly decomposeActions finalize fastq@1.13.0 +6534 silly decomposeActions preinstall brace-expansion@1.1.11 +6535 silly decomposeActions build brace-expansion@1.1.11 +6536 silly decomposeActions install brace-expansion@1.1.11 +6537 silly decomposeActions postinstall brace-expansion@1.1.11 +6538 silly decomposeActions finalize brace-expansion@1.1.11 +6539 silly decomposeActions preinstall minimatch@3.1.2 +6540 silly decomposeActions build minimatch@3.1.2 +6541 silly decomposeActions install minimatch@3.1.2 +6542 silly decomposeActions postinstall minimatch@3.1.2 +6543 silly decomposeActions finalize minimatch@3.1.2 +6544 silly decomposeActions preinstall run-parallel@1.2.0 +6545 silly decomposeActions build run-parallel@1.2.0 +6546 silly decomposeActions install run-parallel@1.2.0 +6547 silly decomposeActions postinstall run-parallel@1.2.0 +6548 silly decomposeActions finalize run-parallel@1.2.0 +6549 silly decomposeActions preinstall @nodelib/fs.scandir@2.1.5 +6550 silly decomposeActions build @nodelib/fs.scandir@2.1.5 +6551 silly decomposeActions install @nodelib/fs.scandir@2.1.5 +6552 silly decomposeActions postinstall @nodelib/fs.scandir@2.1.5 +6553 silly decomposeActions finalize @nodelib/fs.scandir@2.1.5 +6554 silly decomposeActions preinstall @nodelib/fs.walk@1.2.8 +6555 silly decomposeActions build @nodelib/fs.walk@1.2.8 +6556 silly decomposeActions install @nodelib/fs.walk@1.2.8 +6557 silly decomposeActions postinstall @nodelib/fs.walk@1.2.8 +6558 silly decomposeActions finalize @nodelib/fs.walk@1.2.8 +6559 silly decomposeActions preinstall safe-buffer@5.2.1 +6560 silly decomposeActions build safe-buffer@5.2.1 +6561 silly decomposeActions install safe-buffer@5.2.1 +6562 silly decomposeActions postinstall safe-buffer@5.2.1 +6563 silly decomposeActions finalize safe-buffer@5.2.1 +6564 silly decomposeActions preinstall safer-buffer@2.1.2 +6565 silly decomposeActions build safer-buffer@2.1.2 +6566 silly decomposeActions install safer-buffer@2.1.2 +6567 silly decomposeActions postinstall safer-buffer@2.1.2 +6568 silly decomposeActions finalize safer-buffer@2.1.2 +6569 silly decomposeActions preinstall iconv-lite@0.6.3 +6570 silly decomposeActions build iconv-lite@0.6.3 +6571 silly decomposeActions install iconv-lite@0.6.3 +6572 silly decomposeActions postinstall iconv-lite@0.6.3 +6573 silly decomposeActions finalize iconv-lite@0.6.3 +6574 silly decomposeActions preinstall encoding@0.1.13 +6575 silly decomposeActions build encoding@0.1.13 +6576 silly decomposeActions install encoding@0.1.13 +6577 silly decomposeActions postinstall encoding@0.1.13 +6578 silly decomposeActions finalize encoding@0.1.13 +6579 silly decomposeActions preinstall seek-bzip@1.0.6 +6580 silly decomposeActions build seek-bzip@1.0.6 +6581 silly decomposeActions install seek-bzip@1.0.6 +6582 silly decomposeActions postinstall seek-bzip@1.0.6 +6583 silly decomposeActions finalize seek-bzip@1.0.6 +6584 silly decomposeActions preinstall semver@6.3.0 +6585 silly decomposeActions build semver@6.3.0 +6586 silly decomposeActions install semver@6.3.0 +6587 silly decomposeActions postinstall semver@6.3.0 +6588 silly decomposeActions finalize semver@6.3.0 +6589 silly decomposeActions preinstall semver-diff@3.1.1 +6590 silly decomposeActions build semver-diff@3.1.1 +6591 silly decomposeActions install semver-diff@3.1.1 +6592 silly decomposeActions postinstall semver-diff@3.1.1 +6593 silly decomposeActions finalize semver-diff@3.1.1 +6594 silly decomposeActions preinstall set-blocking@2.0.0 +6595 silly decomposeActions build set-blocking@2.0.0 +6596 silly decomposeActions install set-blocking@2.0.0 +6597 silly decomposeActions postinstall set-blocking@2.0.0 +6598 silly decomposeActions finalize set-blocking@2.0.0 +6599 silly decomposeActions preinstall shebang-regex@3.0.0 +6600 silly decomposeActions build shebang-regex@3.0.0 +6601 silly decomposeActions install shebang-regex@3.0.0 +6602 silly decomposeActions postinstall shebang-regex@3.0.0 +6603 silly decomposeActions finalize shebang-regex@3.0.0 +6604 silly decomposeActions preinstall shebang-command@2.0.0 +6605 silly decomposeActions build shebang-command@2.0.0 +6606 silly decomposeActions install shebang-command@2.0.0 +6607 silly decomposeActions postinstall shebang-command@2.0.0 +6608 silly decomposeActions finalize shebang-command@2.0.0 +6609 silly decomposeActions preinstall signal-exit@3.0.7 +6610 silly decomposeActions build signal-exit@3.0.7 +6611 silly decomposeActions install signal-exit@3.0.7 +6612 silly decomposeActions postinstall signal-exit@3.0.7 +6613 silly decomposeActions finalize signal-exit@3.0.7 +6614 silly decomposeActions preinstall slash@3.0.0 +6615 silly decomposeActions build slash@3.0.0 +6616 silly decomposeActions install slash@3.0.0 +6617 silly decomposeActions postinstall slash@3.0.0 +6618 silly decomposeActions finalize slash@3.0.0 +6619 silly decomposeActions preinstall smart-buffer@4.2.0 +6620 silly decomposeActions build smart-buffer@4.2.0 +6621 silly decomposeActions install smart-buffer@4.2.0 +6622 silly decomposeActions postinstall smart-buffer@4.2.0 +6623 silly decomposeActions finalize smart-buffer@4.2.0 +6624 silly decomposeActions preinstall socks@2.6.2 +6625 silly decomposeActions build socks@2.6.2 +6626 silly decomposeActions install socks@2.6.2 +6627 silly decomposeActions postinstall socks@2.6.2 +6628 silly decomposeActions finalize socks@2.6.2 +6629 silly decomposeActions preinstall socks-proxy-agent@7.0.0 +6630 silly decomposeActions build socks-proxy-agent@7.0.0 +6631 silly decomposeActions install socks-proxy-agent@7.0.0 +6632 silly decomposeActions postinstall socks-proxy-agent@7.0.0 +6633 silly decomposeActions finalize socks-proxy-agent@7.0.0 +6634 silly decomposeActions preinstall spdx-exceptions@2.3.0 +6635 silly decomposeActions build spdx-exceptions@2.3.0 +6636 silly decomposeActions install spdx-exceptions@2.3.0 +6637 silly decomposeActions postinstall spdx-exceptions@2.3.0 +6638 silly decomposeActions finalize spdx-exceptions@2.3.0 +6639 silly decomposeActions preinstall spdx-license-ids@3.0.11 +6640 silly decomposeActions build spdx-license-ids@3.0.11 +6641 silly decomposeActions install spdx-license-ids@3.0.11 +6642 silly decomposeActions postinstall spdx-license-ids@3.0.11 +6643 silly decomposeActions finalize spdx-license-ids@3.0.11 +6644 silly decomposeActions preinstall spdx-expression-parse@3.0.1 +6645 silly decomposeActions build spdx-expression-parse@3.0.1 +6646 silly decomposeActions install spdx-expression-parse@3.0.1 +6647 silly decomposeActions postinstall spdx-expression-parse@3.0.1 +6648 silly decomposeActions finalize spdx-expression-parse@3.0.1 +6649 silly decomposeActions preinstall spdx-correct@3.1.1 +6650 silly decomposeActions build spdx-correct@3.1.1 +6651 silly decomposeActions install spdx-correct@3.1.1 +6652 silly decomposeActions postinstall spdx-correct@3.1.1 +6653 silly decomposeActions finalize spdx-correct@3.1.1 +6654 silly decomposeActions preinstall string_decoder@1.3.0 +6655 silly decomposeActions build string_decoder@1.3.0 +6656 silly decomposeActions install string_decoder@1.3.0 +6657 silly decomposeActions postinstall string_decoder@1.3.0 +6658 silly decomposeActions finalize string_decoder@1.3.0 +6659 silly decomposeActions preinstall strip-ansi@6.0.1 +6660 silly decomposeActions build strip-ansi@6.0.1 +6661 silly decomposeActions install strip-ansi@6.0.1 +6662 silly decomposeActions postinstall strip-ansi@6.0.1 +6663 silly decomposeActions finalize strip-ansi@6.0.1 +6664 silly decomposeActions preinstall string-width@4.2.3 +6665 silly decomposeActions build string-width@4.2.3 +6666 silly decomposeActions install string-width@4.2.3 +6667 silly decomposeActions postinstall string-width@4.2.3 +6668 silly decomposeActions finalize string-width@4.2.3 +6669 silly decomposeActions preinstall strip-dirs@2.1.0 +6670 silly decomposeActions build strip-dirs@2.1.0 +6671 silly decomposeActions install strip-dirs@2.1.0 +6672 silly decomposeActions postinstall strip-dirs@2.1.0 +6673 silly decomposeActions finalize strip-dirs@2.1.0 +6674 silly decomposeActions preinstall strip-json-comments@2.0.1 +6675 silly decomposeActions build strip-json-comments@2.0.1 +6676 silly decomposeActions install strip-json-comments@2.0.1 +6677 silly decomposeActions postinstall strip-json-comments@2.0.1 +6678 silly decomposeActions finalize strip-json-comments@2.0.1 +6679 silly decomposeActions preinstall rc@1.2.8 +6680 silly decomposeActions build rc@1.2.8 +6681 silly decomposeActions install rc@1.2.8 +6682 silly decomposeActions postinstall rc@1.2.8 +6683 silly decomposeActions finalize rc@1.2.8 +6684 silly decomposeActions preinstall registry-url@5.1.0 +6685 silly decomposeActions build registry-url@5.1.0 +6686 silly decomposeActions install registry-url@5.1.0 +6687 silly decomposeActions postinstall registry-url@5.1.0 +6688 silly decomposeActions finalize registry-url@5.1.0 +6689 silly decomposeActions preinstall registry-auth-token@4.2.2 +6690 silly decomposeActions build registry-auth-token@4.2.2 +6691 silly decomposeActions install registry-auth-token@4.2.2 +6692 silly decomposeActions postinstall registry-auth-token@4.2.2 +6693 silly decomposeActions finalize registry-auth-token@4.2.2 +6694 silly decomposeActions preinstall safe-buffer@5.1.2 +6695 silly decomposeActions build safe-buffer@5.1.2 +6696 silly decomposeActions install safe-buffer@5.1.2 +6697 silly decomposeActions postinstall safe-buffer@5.1.2 +6698 silly decomposeActions finalize safe-buffer@5.1.2 +6699 silly decomposeActions preinstall string_decoder@1.1.1 +6700 silly decomposeActions build string_decoder@1.1.1 +6701 silly decomposeActions install string_decoder@1.1.1 +6702 silly decomposeActions postinstall string_decoder@1.1.1 +6703 silly decomposeActions finalize string_decoder@1.1.1 +6704 silly decomposeActions preinstall thenify@3.3.1 +6705 silly decomposeActions build thenify@3.3.1 +6706 silly decomposeActions install thenify@3.3.1 +6707 silly decomposeActions postinstall thenify@3.3.1 +6708 silly decomposeActions finalize thenify@3.3.1 +6709 silly decomposeActions preinstall thenify-all@1.6.0 +6710 silly decomposeActions build thenify-all@1.6.0 +6711 silly decomposeActions install thenify-all@1.6.0 +6712 silly decomposeActions postinstall thenify-all@1.6.0 +6713 silly decomposeActions finalize thenify-all@1.6.0 +6714 silly decomposeActions preinstall mz@2.7.0 +6715 silly decomposeActions build mz@2.7.0 +6716 silly decomposeActions install mz@2.7.0 +6717 silly decomposeActions postinstall mz@2.7.0 +6718 silly decomposeActions finalize mz@2.7.0 +6719 silly decomposeActions preinstall through@2.3.8 +6720 silly decomposeActions build through@2.3.8 +6721 silly decomposeActions install through@2.3.8 +6722 silly decomposeActions postinstall through@2.3.8 +6723 silly decomposeActions finalize through@2.3.8 +6724 silly decomposeActions preinstall to-buffer@1.1.1 +6725 silly decomposeActions build to-buffer@1.1.1 +6726 silly decomposeActions install to-buffer@1.1.1 +6727 silly decomposeActions postinstall to-buffer@1.1.1 +6728 silly decomposeActions finalize to-buffer@1.1.1 +6729 silly decomposeActions preinstall to-readable-stream@1.0.0 +6730 silly decomposeActions build to-readable-stream@1.0.0 +6731 silly decomposeActions install to-readable-stream@1.0.0 +6732 silly decomposeActions postinstall to-readable-stream@1.0.0 +6733 silly decomposeActions finalize to-readable-stream@1.0.0 +6734 silly decomposeActions preinstall to-regex-range@5.0.1 +6735 silly decomposeActions build to-regex-range@5.0.1 +6736 silly decomposeActions install to-regex-range@5.0.1 +6737 silly decomposeActions postinstall to-regex-range@5.0.1 +6738 silly decomposeActions finalize to-regex-range@5.0.1 +6739 silly decomposeActions preinstall fill-range@7.0.1 +6740 silly decomposeActions build fill-range@7.0.1 +6741 silly decomposeActions install fill-range@7.0.1 +6742 silly decomposeActions postinstall fill-range@7.0.1 +6743 silly decomposeActions finalize fill-range@7.0.1 +6744 silly decomposeActions preinstall braces@3.0.2 +6745 silly decomposeActions build braces@3.0.2 +6746 silly decomposeActions install braces@3.0.2 +6747 silly decomposeActions postinstall braces@3.0.2 +6748 silly decomposeActions finalize braces@3.0.2 +6749 silly decomposeActions preinstall micromatch@4.0.5 +6750 silly decomposeActions build micromatch@4.0.5 +6751 silly decomposeActions install micromatch@4.0.5 +6752 silly decomposeActions postinstall micromatch@4.0.5 +6753 silly decomposeActions finalize micromatch@4.0.5 +6754 silly decomposeActions preinstall fast-glob@3.2.11 +6755 silly decomposeActions build fast-glob@3.2.11 +6756 silly decomposeActions install fast-glob@3.2.11 +6757 silly decomposeActions postinstall fast-glob@3.2.11 +6758 silly decomposeActions finalize fast-glob@3.2.11 +6759 silly decomposeActions preinstall globby@11.1.0 +6760 silly decomposeActions build globby@11.1.0 +6761 silly decomposeActions install globby@11.1.0 +6762 silly decomposeActions postinstall globby@11.1.0 +6763 silly decomposeActions finalize globby@11.1.0 +6764 silly decomposeActions preinstall tr46@0.0.3 +6765 silly decomposeActions build tr46@0.0.3 +6766 silly decomposeActions install tr46@0.0.3 +6767 silly decomposeActions postinstall tr46@0.0.3 +6768 silly decomposeActions finalize tr46@0.0.3 +6769 silly decomposeActions preinstall unbzip2-stream@1.4.3 +6770 silly decomposeActions build unbzip2-stream@1.4.3 +6771 silly decomposeActions install unbzip2-stream@1.4.3 +6772 silly decomposeActions postinstall unbzip2-stream@1.4.3 +6773 silly decomposeActions finalize unbzip2-stream@1.4.3 +6774 silly decomposeActions preinstall unique-slug@2.0.2 +6775 silly decomposeActions build unique-slug@2.0.2 +6776 silly decomposeActions install unique-slug@2.0.2 +6777 silly decomposeActions postinstall unique-slug@2.0.2 +6778 silly decomposeActions finalize unique-slug@2.0.2 +6779 silly decomposeActions preinstall unique-filename@1.1.1 +6780 silly decomposeActions build unique-filename@1.1.1 +6781 silly decomposeActions install unique-filename@1.1.1 +6782 silly decomposeActions postinstall unique-filename@1.1.1 +6783 silly decomposeActions finalize unique-filename@1.1.1 +6784 silly decomposeActions preinstall url-parse-lax@3.0.0 +6785 silly decomposeActions build url-parse-lax@3.0.0 +6786 silly decomposeActions install url-parse-lax@3.0.0 +6787 silly decomposeActions postinstall url-parse-lax@3.0.0 +6788 silly decomposeActions finalize url-parse-lax@3.0.0 +6789 silly decomposeActions preinstall util-deprecate@1.0.2 +6790 silly decomposeActions build util-deprecate@1.0.2 +6791 silly decomposeActions install util-deprecate@1.0.2 +6792 silly decomposeActions postinstall util-deprecate@1.0.2 +6793 silly decomposeActions finalize util-deprecate@1.0.2 +6794 silly decomposeActions preinstall readable-stream@2.3.7 +6795 silly decomposeActions build readable-stream@2.3.7 +6796 silly decomposeActions install readable-stream@2.3.7 +6797 silly decomposeActions postinstall readable-stream@2.3.7 +6798 silly decomposeActions finalize readable-stream@2.3.7 +6799 silly decomposeActions preinstall readable-stream@3.6.0 +6800 silly decomposeActions build readable-stream@3.6.0 +6801 silly decomposeActions install readable-stream@3.6.0 +6802 silly decomposeActions postinstall readable-stream@3.6.0 +6803 silly decomposeActions finalize readable-stream@3.6.0 +6804 silly decomposeActions preinstall are-we-there-yet@3.0.0 +6805 silly decomposeActions build are-we-there-yet@3.0.0 +6806 silly decomposeActions install are-we-there-yet@3.0.0 +6807 silly decomposeActions postinstall are-we-there-yet@3.0.0 +6808 silly decomposeActions finalize are-we-there-yet@3.0.0 +6809 silly decomposeActions preinstall readable-stream@2.3.7 +6810 silly decomposeActions build readable-stream@2.3.7 +6811 silly decomposeActions install readable-stream@2.3.7 +6812 silly decomposeActions postinstall readable-stream@2.3.7 +6813 silly decomposeActions finalize readable-stream@2.3.7 +6814 silly decomposeActions preinstall bl@1.2.3 +6815 silly decomposeActions build bl@1.2.3 +6816 silly decomposeActions install bl@1.2.3 +6817 silly decomposeActions postinstall bl@1.2.3 +6818 silly decomposeActions finalize bl@1.2.3 +6819 silly decomposeActions preinstall validate-npm-package-license@3.0.4 +6820 silly decomposeActions build validate-npm-package-license@3.0.4 +6821 silly decomposeActions install validate-npm-package-license@3.0.4 +6822 silly decomposeActions postinstall validate-npm-package-license@3.0.4 +6823 silly decomposeActions finalize validate-npm-package-license@3.0.4 +6824 silly decomposeActions preinstall webidl-conversions@3.0.1 +6825 silly decomposeActions build webidl-conversions@3.0.1 +6826 silly decomposeActions install webidl-conversions@3.0.1 +6827 silly decomposeActions postinstall webidl-conversions@3.0.1 +6828 silly decomposeActions finalize webidl-conversions@3.0.1 +6829 silly decomposeActions preinstall whatwg-url@5.0.0 +6830 silly decomposeActions build whatwg-url@5.0.0 +6831 silly decomposeActions install whatwg-url@5.0.0 +6832 silly decomposeActions postinstall whatwg-url@5.0.0 +6833 silly decomposeActions finalize whatwg-url@5.0.0 +6834 silly decomposeActions preinstall node-fetch@2.6.7 +6835 silly decomposeActions build node-fetch@2.6.7 +6836 silly decomposeActions install node-fetch@2.6.7 +6837 silly decomposeActions postinstall node-fetch@2.6.7 +6838 silly decomposeActions finalize node-fetch@2.6.7 +6839 silly decomposeActions preinstall which@2.0.2 +6840 silly decomposeActions build which@2.0.2 +6841 silly decomposeActions install which@2.0.2 +6842 silly decomposeActions postinstall which@2.0.2 +6843 silly decomposeActions finalize which@2.0.2 +6844 silly decomposeActions preinstall cross-spawn@7.0.3 +6845 silly decomposeActions build cross-spawn@7.0.3 +6846 silly decomposeActions install cross-spawn@7.0.3 +6847 silly decomposeActions postinstall cross-spawn@7.0.3 +6848 silly decomposeActions finalize cross-spawn@7.0.3 +6849 silly decomposeActions preinstall wide-align@1.1.5 +6850 silly decomposeActions build wide-align@1.1.5 +6851 silly decomposeActions install wide-align@1.1.5 +6852 silly decomposeActions postinstall wide-align@1.1.5 +6853 silly decomposeActions finalize wide-align@1.1.5 +6854 silly decomposeActions preinstall gauge@4.0.4 +6855 silly decomposeActions build gauge@4.0.4 +6856 silly decomposeActions install gauge@4.0.4 +6857 silly decomposeActions postinstall gauge@4.0.4 +6858 silly decomposeActions finalize gauge@4.0.4 +6859 silly decomposeActions preinstall npmlog@6.0.2 +6860 silly decomposeActions build npmlog@6.0.2 +6861 silly decomposeActions install npmlog@6.0.2 +6862 silly decomposeActions postinstall npmlog@6.0.2 +6863 silly decomposeActions finalize npmlog@6.0.2 +6864 silly decomposeActions preinstall wrappy@1.0.2 +6865 silly decomposeActions build wrappy@1.0.2 +6866 silly decomposeActions install wrappy@1.0.2 +6867 silly decomposeActions postinstall wrappy@1.0.2 +6868 silly decomposeActions finalize wrappy@1.0.2 +6869 silly decomposeActions preinstall once@1.4.0 +6870 silly decomposeActions build once@1.4.0 +6871 silly decomposeActions install once@1.4.0 +6872 silly decomposeActions postinstall once@1.4.0 +6873 silly decomposeActions finalize once@1.4.0 +6874 silly decomposeActions preinstall end-of-stream@1.4.4 +6875 silly decomposeActions build end-of-stream@1.4.4 +6876 silly decomposeActions install end-of-stream@1.4.4 +6877 silly decomposeActions postinstall end-of-stream@1.4.4 +6878 silly decomposeActions finalize end-of-stream@1.4.4 +6879 silly decomposeActions preinstall pump@3.0.0 +6880 silly decomposeActions build pump@3.0.0 +6881 silly decomposeActions install pump@3.0.0 +6882 silly decomposeActions postinstall pump@3.0.0 +6883 silly decomposeActions finalize pump@3.0.0 +6884 silly decomposeActions preinstall get-stream@4.1.0 +6885 silly decomposeActions build get-stream@4.1.0 +6886 silly decomposeActions install get-stream@4.1.0 +6887 silly decomposeActions postinstall get-stream@4.1.0 +6888 silly decomposeActions finalize get-stream@4.1.0 +6889 silly decomposeActions preinstall get-stream@5.2.0 +6890 silly decomposeActions build get-stream@5.2.0 +6891 silly decomposeActions install get-stream@5.2.0 +6892 silly decomposeActions postinstall get-stream@5.2.0 +6893 silly decomposeActions finalize get-stream@5.2.0 +6894 silly decomposeActions preinstall cacheable-request@6.1.0 +6895 silly decomposeActions build cacheable-request@6.1.0 +6896 silly decomposeActions install cacheable-request@6.1.0 +6897 silly decomposeActions postinstall cacheable-request@6.1.0 +6898 silly decomposeActions finalize cacheable-request@6.1.0 +6899 silly decomposeActions preinstall got@9.6.0 +6900 silly decomposeActions build got@9.6.0 +6901 silly decomposeActions install got@9.6.0 +6902 silly decomposeActions postinstall got@9.6.0 +6903 silly decomposeActions finalize got@9.6.0 +6904 silly decomposeActions preinstall package-json@6.5.0 +6905 silly decomposeActions build package-json@6.5.0 +6906 silly decomposeActions install package-json@6.5.0 +6907 silly decomposeActions postinstall package-json@6.5.0 +6908 silly decomposeActions finalize package-json@6.5.0 +6909 silly decomposeActions preinstall latest-version@5.1.0 +6910 silly decomposeActions build latest-version@5.1.0 +6911 silly decomposeActions install latest-version@5.1.0 +6912 silly decomposeActions postinstall latest-version@5.1.0 +6913 silly decomposeActions finalize latest-version@5.1.0 +6914 silly decomposeActions preinstall inflight@1.0.6 +6915 silly decomposeActions build inflight@1.0.6 +6916 silly decomposeActions install inflight@1.0.6 +6917 silly decomposeActions postinstall inflight@1.0.6 +6918 silly decomposeActions finalize inflight@1.0.6 +6919 silly decomposeActions preinstall glob@7.2.3 +6920 silly decomposeActions build glob@7.2.3 +6921 silly decomposeActions install glob@7.2.3 +6922 silly decomposeActions postinstall glob@7.2.3 +6923 silly decomposeActions finalize glob@7.2.3 +6924 silly decomposeActions preinstall rimraf@3.0.2 +6925 silly decomposeActions build rimraf@3.0.2 +6926 silly decomposeActions install rimraf@3.0.2 +6927 silly decomposeActions postinstall rimraf@3.0.2 +6928 silly decomposeActions finalize rimraf@3.0.2 +6929 silly decomposeActions preinstall del@6.1.1 +6930 silly decomposeActions build del@6.1.1 +6931 silly decomposeActions install del@6.1.1 +6932 silly decomposeActions postinstall del@6.1.1 +6933 silly decomposeActions finalize del@6.1.1 +6934 silly decomposeActions preinstall @npmcli/move-file@2.0.0 +6935 silly decomposeActions build @npmcli/move-file@2.0.0 +6936 silly decomposeActions install @npmcli/move-file@2.0.0 +6937 silly decomposeActions postinstall @npmcli/move-file@2.0.0 +6938 silly decomposeActions finalize @npmcli/move-file@2.0.0 +6939 silly decomposeActions preinstall glob@7.2.3 +6940 silly decomposeActions build glob@7.2.3 +6941 silly decomposeActions install glob@7.2.3 +6942 silly decomposeActions postinstall glob@7.2.3 +6943 silly decomposeActions finalize glob@7.2.3 +6944 silly decomposeActions preinstall glob@8.0.3 +6945 silly decomposeActions build glob@8.0.3 +6946 silly decomposeActions install glob@8.0.3 +6947 silly decomposeActions postinstall glob@8.0.3 +6948 silly decomposeActions finalize glob@8.0.3 +6949 silly decomposeActions preinstall npm-packlist@5.1.1 +6950 silly decomposeActions build npm-packlist@5.1.1 +6951 silly decomposeActions install npm-packlist@5.1.1 +6952 silly decomposeActions postinstall npm-packlist@5.1.1 +6953 silly decomposeActions finalize npm-packlist@5.1.1 +6954 silly decomposeActions preinstall wscript-avoider@3.0.2 +6955 silly decomposeActions build wscript-avoider@3.0.2 +6956 silly decomposeActions install wscript-avoider@3.0.2 +6957 silly decomposeActions postinstall wscript-avoider@3.0.2 +6958 silly decomposeActions finalize wscript-avoider@3.0.2 +6959 silly decomposeActions preinstall xtend@4.0.2 +6960 silly decomposeActions build xtend@4.0.2 +6961 silly decomposeActions install xtend@4.0.2 +6962 silly decomposeActions postinstall xtend@4.0.2 +6963 silly decomposeActions finalize xtend@4.0.2 +6964 silly decomposeActions preinstall tar-stream@1.6.2 +6965 silly decomposeActions build tar-stream@1.6.2 +6966 silly decomposeActions install tar-stream@1.6.2 +6967 silly decomposeActions postinstall tar-stream@1.6.2 +6968 silly decomposeActions finalize tar-stream@1.6.2 +6969 silly decomposeActions preinstall decompress-tar@4.1.1 +6970 silly decomposeActions build decompress-tar@4.1.1 +6971 silly decomposeActions install decompress-tar@4.1.1 +6972 silly decomposeActions postinstall decompress-tar@4.1.1 +6973 silly decomposeActions finalize decompress-tar@4.1.1 +6974 silly decomposeActions preinstall decompress-targz@4.1.1 +6975 silly decomposeActions build decompress-targz@4.1.1 +6976 silly decomposeActions install decompress-targz@4.1.1 +6977 silly decomposeActions postinstall decompress-targz@4.1.1 +6978 silly decomposeActions finalize decompress-targz@4.1.1 +6979 silly decomposeActions preinstall decompress-tarbz2@4.1.1 +6980 silly decomposeActions build decompress-tarbz2@4.1.1 +6981 silly decomposeActions install decompress-tarbz2@4.1.1 +6982 silly decomposeActions postinstall decompress-tarbz2@4.1.1 +6983 silly decomposeActions finalize decompress-tarbz2@4.1.1 +6984 silly decomposeActions preinstall yallist@4.0.0 +6985 silly decomposeActions build yallist@4.0.0 +6986 silly decomposeActions install yallist@4.0.0 +6987 silly decomposeActions postinstall yallist@4.0.0 +6988 silly decomposeActions finalize yallist@4.0.0 +6989 silly decomposeActions preinstall lru-cache@6.0.0 +6990 silly decomposeActions build lru-cache@6.0.0 +6991 silly decomposeActions install lru-cache@6.0.0 +6992 silly decomposeActions postinstall lru-cache@6.0.0 +6993 silly decomposeActions finalize lru-cache@6.0.0 +6994 silly decomposeActions preinstall semver@7.3.7 +6995 silly decomposeActions build semver@7.3.7 +6996 silly decomposeActions install semver@7.3.7 +6997 silly decomposeActions postinstall semver@7.3.7 +6998 silly decomposeActions finalize semver@7.3.7 +6999 silly decomposeActions preinstall npm-install-checks@5.0.0 +7000 silly decomposeActions build npm-install-checks@5.0.0 +7001 silly decomposeActions install npm-install-checks@5.0.0 +7002 silly decomposeActions postinstall npm-install-checks@5.0.0 +7003 silly decomposeActions finalize npm-install-checks@5.0.0 +7004 silly decomposeActions preinstall normalize-package-data@4.0.0 +7005 silly decomposeActions build normalize-package-data@4.0.0 +7006 silly decomposeActions install normalize-package-data@4.0.0 +7007 silly decomposeActions postinstall normalize-package-data@4.0.0 +7008 silly decomposeActions finalize normalize-package-data@4.0.0 +7009 silly decomposeActions preinstall read-package-json@5.0.1 +7010 silly decomposeActions build read-package-json@5.0.1 +7011 silly decomposeActions install read-package-json@5.0.1 +7012 silly decomposeActions postinstall read-package-json@5.0.1 +7013 silly decomposeActions finalize read-package-json@5.0.1 +7014 silly decomposeActions preinstall builtins@5.0.1 +7015 silly decomposeActions build builtins@5.0.1 +7016 silly decomposeActions install builtins@5.0.1 +7017 silly decomposeActions postinstall builtins@5.0.1 +7018 silly decomposeActions finalize builtins@5.0.1 +7019 silly decomposeActions preinstall validate-npm-package-name@4.0.0 +7020 silly decomposeActions build validate-npm-package-name@4.0.0 +7021 silly decomposeActions install validate-npm-package-name@4.0.0 +7022 silly decomposeActions postinstall validate-npm-package-name@4.0.0 +7023 silly decomposeActions finalize validate-npm-package-name@4.0.0 +7024 silly decomposeActions preinstall npm-package-arg@9.1.0 +7025 silly decomposeActions build npm-package-arg@9.1.0 +7026 silly decomposeActions install npm-package-arg@9.1.0 +7027 silly decomposeActions postinstall npm-package-arg@9.1.0 +7028 silly decomposeActions finalize npm-package-arg@9.1.0 +7029 silly decomposeActions preinstall npm-pick-manifest@7.0.1 +7030 silly decomposeActions build npm-pick-manifest@7.0.1 +7031 silly decomposeActions install npm-pick-manifest@7.0.1 +7032 silly decomposeActions postinstall npm-pick-manifest@7.0.1 +7033 silly decomposeActions finalize npm-pick-manifest@7.0.1 +7034 silly decomposeActions preinstall @npmcli/git@3.0.1 +7035 silly decomposeActions build @npmcli/git@3.0.1 +7036 silly decomposeActions install @npmcli/git@3.0.1 +7037 silly decomposeActions postinstall @npmcli/git@3.0.1 +7038 silly decomposeActions finalize @npmcli/git@3.0.1 +7039 silly decomposeActions preinstall @npmcli/fs@2.1.0 +7040 silly decomposeActions build @npmcli/fs@2.1.0 +7041 silly decomposeActions install @npmcli/fs@2.1.0 +7042 silly decomposeActions postinstall @npmcli/fs@2.1.0 +7043 silly decomposeActions finalize @npmcli/fs@2.1.0 +7044 silly decomposeActions preinstall @ilg/cli-start-options@0.6.6 +7045 silly decomposeActions build @ilg/cli-start-options@0.6.6 +7046 silly decomposeActions install @ilg/cli-start-options@0.6.6 +7047 silly decomposeActions postinstall @ilg/cli-start-options@0.6.6 +7048 silly decomposeActions finalize @ilg/cli-start-options@0.6.6 +7049 silly decomposeActions preinstall minipass@3.3.4 +7050 silly decomposeActions build minipass@3.3.4 +7051 silly decomposeActions install minipass@3.3.4 +7052 silly decomposeActions postinstall minipass@3.3.4 +7053 silly decomposeActions finalize minipass@3.3.4 +7054 silly decomposeActions preinstall ssri@9.0.1 +7055 silly decomposeActions build ssri@9.0.1 +7056 silly decomposeActions install ssri@9.0.1 +7057 silly decomposeActions postinstall ssri@9.0.1 +7058 silly decomposeActions finalize ssri@9.0.1 +7059 silly decomposeActions preinstall minizlib@2.1.2 +7060 silly decomposeActions build minizlib@2.1.2 +7061 silly decomposeActions install minizlib@2.1.2 +7062 silly decomposeActions postinstall minizlib@2.1.2 +7063 silly decomposeActions finalize minizlib@2.1.2 +7064 silly decomposeActions preinstall minipass-sized@1.0.3 +7065 silly decomposeActions build minipass-sized@1.0.3 +7066 silly decomposeActions install minipass-sized@1.0.3 +7067 silly decomposeActions postinstall minipass-sized@1.0.3 +7068 silly decomposeActions finalize minipass-sized@1.0.3 +7069 silly decomposeActions preinstall minipass-pipeline@1.2.4 +7070 silly decomposeActions build minipass-pipeline@1.2.4 +7071 silly decomposeActions install minipass-pipeline@1.2.4 +7072 silly decomposeActions postinstall minipass-pipeline@1.2.4 +7073 silly decomposeActions finalize minipass-pipeline@1.2.4 +7074 silly decomposeActions preinstall minipass-json-stream@1.0.1 +7075 silly decomposeActions build minipass-json-stream@1.0.1 +7076 silly decomposeActions install minipass-json-stream@1.0.1 +7077 silly decomposeActions postinstall minipass-json-stream@1.0.1 +7078 silly decomposeActions finalize minipass-json-stream@1.0.1 +7079 silly decomposeActions preinstall minipass-flush@1.0.5 +7080 silly decomposeActions build minipass-flush@1.0.5 +7081 silly decomposeActions install minipass-flush@1.0.5 +7082 silly decomposeActions postinstall minipass-flush@1.0.5 +7083 silly decomposeActions finalize minipass-flush@1.0.5 +7084 silly decomposeActions preinstall minipass-fetch@2.1.0 +7085 silly decomposeActions build minipass-fetch@2.1.0 +7086 silly decomposeActions install minipass-fetch@2.1.0 +7087 silly decomposeActions postinstall minipass-fetch@2.1.0 +7088 silly decomposeActions finalize minipass-fetch@2.1.0 +7089 silly decomposeActions preinstall minipass-collect@1.0.2 +7090 silly decomposeActions build minipass-collect@1.0.2 +7091 silly decomposeActions install minipass-collect@1.0.2 +7092 silly decomposeActions postinstall minipass-collect@1.0.2 +7093 silly decomposeActions finalize minipass-collect@1.0.2 +7094 silly decomposeActions preinstall fs-minipass@2.1.0 +7095 silly decomposeActions build fs-minipass@2.1.0 +7096 silly decomposeActions install fs-minipass@2.1.0 +7097 silly decomposeActions postinstall fs-minipass@2.1.0 +7098 silly decomposeActions finalize fs-minipass@2.1.0 +7099 silly decomposeActions preinstall tar@6.1.11 +7100 silly decomposeActions build tar@6.1.11 +7101 silly decomposeActions install tar@6.1.11 +7102 silly decomposeActions postinstall tar@6.1.11 +7103 silly decomposeActions finalize tar@6.1.11 +7104 silly decomposeActions preinstall cacache@16.1.1 +7105 silly decomposeActions build cacache@16.1.1 +7106 silly decomposeActions install cacache@16.1.1 +7107 silly decomposeActions postinstall cacache@16.1.1 +7108 silly decomposeActions finalize cacache@16.1.1 +7109 silly decomposeActions preinstall make-fetch-happen@10.1.8 +7110 silly decomposeActions build make-fetch-happen@10.1.8 +7111 silly decomposeActions install make-fetch-happen@10.1.8 +7112 silly decomposeActions postinstall make-fetch-happen@10.1.8 +7113 silly decomposeActions finalize make-fetch-happen@10.1.8 +7114 silly decomposeActions preinstall npm-registry-fetch@13.2.0 +7115 silly decomposeActions build npm-registry-fetch@13.2.0 +7116 silly decomposeActions install npm-registry-fetch@13.2.0 +7117 silly decomposeActions postinstall npm-registry-fetch@13.2.0 +7118 silly decomposeActions finalize npm-registry-fetch@13.2.0 +7119 silly decomposeActions preinstall node-gyp@9.0.0 +7120 silly decomposeActions build node-gyp@9.0.0 +7121 silly decomposeActions install node-gyp@9.0.0 +7122 silly decomposeActions postinstall node-gyp@9.0.0 +7123 silly decomposeActions finalize node-gyp@9.0.0 +7124 silly decomposeActions preinstall @npmcli/run-script@4.1.7 +7125 silly decomposeActions build @npmcli/run-script@4.1.7 +7126 silly decomposeActions install @npmcli/run-script@4.1.7 +7127 silly decomposeActions postinstall @npmcli/run-script@4.1.7 +7128 silly decomposeActions finalize @npmcli/run-script@4.1.7 +7129 silly decomposeActions preinstall pacote@13.6.1 +7130 silly decomposeActions build pacote@13.6.1 +7131 silly decomposeActions install pacote@13.6.1 +7132 silly decomposeActions postinstall pacote@13.6.1 +7133 silly decomposeActions finalize pacote@13.6.1 +7134 silly decomposeActions preinstall yauzl@2.10.0 +7135 silly decomposeActions build yauzl@2.10.0 +7136 silly decomposeActions install yauzl@2.10.0 +7137 silly decomposeActions postinstall yauzl@2.10.0 +7138 silly decomposeActions finalize yauzl@2.10.0 +7139 silly decomposeActions preinstall decompress-unzip@4.0.1 +7140 silly decomposeActions build decompress-unzip@4.0.1 +7141 silly decomposeActions install decompress-unzip@4.0.1 +7142 silly decomposeActions postinstall decompress-unzip@4.0.1 +7143 silly decomposeActions finalize decompress-unzip@4.0.1 +7144 silly decomposeActions preinstall decompress@4.2.1 +7145 silly decomposeActions build decompress@4.2.1 +7146 silly decomposeActions install decompress@4.2.1 +7147 silly decomposeActions postinstall decompress@4.2.1 +7148 silly decomposeActions finalize decompress@4.2.1 +7149 silly decomposeActions fetch xpm@0.13.7 +7150 silly decomposeActions extract xpm@0.13.7 +7151 silly decomposeActions test xpm@0.13.7 +7152 silly decomposeActions preinstall xpm@0.13.7 +7153 silly decomposeActions build xpm@0.13.7 +7154 silly decomposeActions install xpm@0.13.7 +7155 silly decomposeActions postinstall xpm@0.13.7 +7156 silly decomposeActions finalize xpm@0.13.7 +7157 silly executeActions Starting +7158 silly install executeActions +7159 silly doSerial global-install 0 +7160 silly doParallel fetch 2 +7161 verbose lock using /home/tuyuyang/.npm/_locks/staging-3a08f0df5026584d.lock for /usr/local/lib/node_modules/.staging +7162 silly doParallel extract 2 +7163 silly extract npm@8.16.0 +7164 silly extract xpm@0.13.7 +7165 verbose unbuild lib/node_modules/.staging/npm-23faa247 +7166 verbose unbuild lib/node_modules/.staging/xpm-da520707 +7167 silly gentlyRm /usr/local/lib/node_modules/.staging/npm-23faa247 is being purged from base /usr/local +7168 verbose gentlyRm don't care about contents; nuking /usr/local/lib/node_modules/.staging/npm-23faa247 +7169 silly gentlyRm /usr/local/lib/node_modules/.staging/xpm-da520707 is being purged from base /usr/local +7170 verbose gentlyRm don't care about contents; nuking /usr/local/lib/node_modules/.staging/xpm-da520707 +7171 verbose tar unpack /home/tuyuyang/.npm/npm/8.16.0/package.tgz +7172 verbose tar unpacking to /usr/local/lib/node_modules/.staging/npm-23faa247 +7173 silly gentlyRm /usr/local/lib/node_modules/.staging/npm-23faa247 is being purged +7174 verbose gentlyRm don't care about contents; nuking /usr/local/lib/node_modules/.staging/npm-23faa247 +7175 verbose tar unpack /home/tuyuyang/.npm/xpm/0.13.7/package.tgz +7176 verbose tar unpacking to /usr/local/lib/node_modules/.staging/xpm-da520707 +7177 silly gentlyRm /usr/local/lib/node_modules/.staging/xpm-da520707 is being purged +7178 verbose gentlyRm don't care about contents; nuking /usr/local/lib/node_modules/.staging/xpm-da520707 +7179 silly gunzTarPerm modes [ '755', '644' ] +7180 silly gunzTarPerm modes [ '755', '644' ] +7181 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.flake8 +7182 silly gunzTarPerm extractEntry node_modules/err-code/.editorconfig +7183 silly gunzTarPerm extractEntry node_modules/function-bind/.editorconfig +7184 silly gunzTarPerm extractEntry node_modules/promise-retry/.editorconfig +7185 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/AUTHORS +7186 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/AUTHORS +7187 silly gunzTarPerm extractEntry node_modules/function-bind/.eslintrc +7188 silly gunzTarPerm extractEntry node_modules/function-bind/test/.eslintrc +7189 silly gunzTarPerm extractEntry node_modules/cssesc/bin/cssesc +7190 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp +7191 silly gunzTarPerm extractEntry node_modules/is-core-module/.eslintrc +7192 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.flake8 +7193 silly gunzTarPerm extractEntry LICENSE +7194 silly gunzTarPerm extractEntry node_modules/@colors/colors/LICENSE +7195 silly gunzTarPerm extractEntry node_modules/tr46/lib/.gitkeep +7196 silly gunzTarPerm extractEntry node_modules/any-promise/.jshintrc +7197 silly gunzTarPerm extractEntry node_modules/@isaacs/string-locale-compare/LICENSE +7198 silly gunzTarPerm extractEntry node_modules/@npmcli/ci-detect/LICENSE +7199 silly gunzTarPerm extractEntry node_modules/bl/.jshintrc +7200 silly gunzTarPerm extractEntry node_modules/promise-retry/.jshintrc +7201 silly gunzTarPerm extractEntry node_modules/xtend/.jshintrc +7202 silly gunzTarPerm extractEntry node_modules/any-promise/.npmignore +7203 silly gunzTarPerm extractEntry node_modules/@npmcli/config/LICENSE +7204 silly gunzTarPerm extractEntry node_modules/@npmcli/disparity-colors/LICENSE +7205 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/LICENSE +7206 silly gunzTarPerm extractEntry node_modules/@npmcli/git/LICENSE +7207 silly gunzTarPerm extractEntry node_modules/delegates/.npmignore +7208 silly gunzTarPerm extractEntry node_modules/fd-slicer/.npmignore +7209 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/LICENSE +7210 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/LICENSE +7211 silly gunzTarPerm extractEntry node_modules/function-bind/.npmignore +7212 silly gunzTarPerm extractEntry node_modules/is-lambda/.npmignore +7213 silly gunzTarPerm extractEntry node_modules/@npmcli/name-from-folder/LICENSE +7214 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/LICENSE +7215 silly gunzTarPerm extractEntry node_modules/isarray/.npmignore +7216 silly gunzTarPerm extractEntry node_modules/isexe/.npmignore +7217 silly gunzTarPerm extractEntry node_modules/json-buffer/.npmignore +7218 silly gunzTarPerm extractEntry node_modules/jsonparse/.npmignore +7219 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/LICENSE +7220 silly gunzTarPerm extractEntry node_modules/@npmcli/query/LICENSE +7221 silly gunzTarPerm extractEntry node_modules/minipass-sized/.npmignore +7222 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/.npmignore +7223 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/LICENSE +7224 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/LICENSE +7225 silly gunzTarPerm extractEntry node_modules/retry/.npmignore +7226 silly gunzTarPerm extractEntry node_modules/tr46/.npmignore +7227 silly gunzTarPerm extractEntry node_modules/abbrev/LICENSE +7228 silly gunzTarPerm extractEntry node_modules/agentkeepalive/LICENSE +7229 silly gunzTarPerm extractEntry node_modules/is-core-module/.nycrc +7230 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/AUTHORS +7231 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/AUTHORS +7232 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp +7233 silly gunzTarPerm extractEntry node_modules/aggregate-error/license +7234 silly gunzTarPerm extractEntry node_modules/ansi-regex/license +7235 silly gunzTarPerm extractEntry LICENSE +7236 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/LICENSE +7237 silly gunzTarPerm extractEntry node_modules/ansi-styles/license +7238 silly gunzTarPerm extractEntry node_modules/aproba/LICENSE +7239 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/LICENSE +7240 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/LICENSE +7241 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/LICENSE +7242 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/LICENSE +7243 silly gunzTarPerm extractEntry node_modules/archy/LICENSE +7244 silly gunzTarPerm extractEntry node_modules/bin-links/LICENSE +7245 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/LICENSE +7246 silly gunzTarPerm extractEntry node_modules/@npmcli/git/LICENSE +7247 silly gunzTarPerm extractEntry node_modules/binary-extensions/license +7248 silly gunzTarPerm extractEntry node_modules/brace-expansion/LICENSE +7249 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/LICENSE +7250 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/LICENSE +7251 silly gunzTarPerm extractEntry node_modules/builtins/License +7252 silly gunzTarPerm extractEntry node_modules/chalk/license +7253 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/LICENSE +7254 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/license +7255 silly gunzTarPerm extractEntry node_modules/chownr/LICENSE +7256 silly gunzTarPerm extractEntry node_modules/cidr-regex/LICENSE +7257 silly gunzTarPerm extractEntry node_modules/@szmarczak/http-timer/LICENSE +7258 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/LICENSE +7259 silly gunzTarPerm extractEntry node_modules/clean-stack/license +7260 silly gunzTarPerm extractEntry node_modules/cli-columns/LICENSE +7261 silly gunzTarPerm extractEntry node_modules/@xpack/cmd-shim/LICENSE +7262 silly gunzTarPerm extractEntry node_modules/@xpack/es6-promisifier/LICENSE +7263 silly gunzTarPerm extractEntry node_modules/cli-table3/LICENSE +7264 silly gunzTarPerm extractEntry node_modules/clone/LICENSE +7265 silly gunzTarPerm extractEntry node_modules/@xpack/logger/LICENSE +7266 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/LICENSE +7267 silly gunzTarPerm extractEntry node_modules/cmd-shim/LICENSE +7268 silly gunzTarPerm extractEntry node_modules/color-convert/LICENSE +7269 silly gunzTarPerm extractEntry node_modules/abbrev/LICENSE +7270 silly gunzTarPerm extractEntry node_modules/agentkeepalive/LICENSE +7271 silly gunzTarPerm extractEntry node_modules/aggregate-error/license +7272 silly gunzTarPerm extractEntry node_modules/ansi-regex/license +7273 silly gunzTarPerm extractEntry node_modules/color-name/LICENSE +7274 silly gunzTarPerm extractEntry node_modules/color-support/LICENSE +7275 silly gunzTarPerm extractEntry node_modules/any-promise/LICENSE +7276 silly gunzTarPerm extractEntry node_modules/aproba/LICENSE +7277 silly gunzTarPerm extractEntry node_modules/columnify/LICENSE +7278 silly gunzTarPerm extractEntry node_modules/common-ancestor-path/LICENSE +7279 silly gunzTarPerm extractEntry node_modules/array-union/license +7280 silly gunzTarPerm extractEntry node_modules/base64-js/LICENSE +7281 silly gunzTarPerm extractEntry node_modules/concat-map/LICENSE +7282 silly gunzTarPerm extractEntry node_modules/console-control-strings/LICENSE +7283 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/LICENSE +7284 silly gunzTarPerm extractEntry node_modules/bl/node_modules/safe-buffer/LICENSE +7285 silly gunzTarPerm extractEntry node_modules/debug/LICENSE +7286 silly gunzTarPerm extractEntry node_modules/debuglog/LICENSE +7287 silly gunzTarPerm extractEntry node_modules/bl/node_modules/string_decoder/LICENSE +7288 silly gunzTarPerm extractEntry node_modules/brace-expansion/LICENSE +7289 silly gunzTarPerm extractEntry node_modules/braces/LICENSE +7290 silly gunzTarPerm extractEntry node_modules/buffer-crc32/LICENSE +7291 silly gunzTarPerm extractEntry node_modules/defaults/LICENSE +7292 silly gunzTarPerm extractEntry node_modules/delegates/License +7293 silly gunzTarPerm extractEntry node_modules/buffer/LICENSE +7294 silly gunzTarPerm extractEntry node_modules/builtins/License +7295 silly gunzTarPerm extractEntry node_modules/depd/LICENSE +7296 silly gunzTarPerm extractEntry node_modules/dezalgo/LICENSE +7297 silly gunzTarPerm extractEntry node_modules/diff/LICENSE +7298 silly gunzTarPerm extractEntry node_modules/encoding/LICENSE +7299 silly gunzTarPerm extractEntry node_modules/cacheable-request/LICENSE +7300 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/license +7301 silly gunzTarPerm extractEntry node_modules/env-paths/license +7302 silly gunzTarPerm extractEntry node_modules/fs-minipass/LICENSE +7303 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/lowercase-keys/license +7304 silly gunzTarPerm extractEntry node_modules/chownr/LICENSE +7305 silly gunzTarPerm extractEntry node_modules/fs.realpath/LICENSE +7306 silly gunzTarPerm extractEntry node_modules/function-bind/LICENSE +7307 silly gunzTarPerm extractEntry node_modules/ci-info/LICENSE +7308 silly gunzTarPerm extractEntry node_modules/clean-stack/license +7309 silly gunzTarPerm extractEntry node_modules/glob/LICENSE +7310 silly gunzTarPerm extractEntry node_modules/graceful-fs/LICENSE +7311 silly gunzTarPerm extractEntry node_modules/clone-response/LICENSE +7312 silly gunzTarPerm extractEntry node_modules/color-support/LICENSE +7313 silly gunzTarPerm extractEntry node_modules/has-flag/license +7314 silly gunzTarPerm extractEntry node_modules/has-unicode/LICENSE +7315 silly gunzTarPerm extractEntry node_modules/hosted-git-info/LICENSE +7316 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/LICENSE +7317 silly gunzTarPerm extractEntry node_modules/commander/LICENSE +7318 silly gunzTarPerm extractEntry node_modules/concat-map/LICENSE +7319 silly gunzTarPerm extractEntry node_modules/humanize-ms/LICENSE +7320 silly gunzTarPerm extractEntry node_modules/iconv-lite/LICENSE +7321 silly gunzTarPerm extractEntry node_modules/console-control-strings/LICENSE +7322 silly gunzTarPerm extractEntry node_modules/core-util-is/LICENSE +7323 silly gunzTarPerm extractEntry node_modules/ignore-walk/LICENSE +7324 silly gunzTarPerm extractEntry node_modules/indent-string/license +7325 silly gunzTarPerm extractEntry node_modules/cp-file/license +7326 silly gunzTarPerm extractEntry node_modules/cross-spawn/LICENSE +7327 silly gunzTarPerm extractEntry node_modules/infer-owner/LICENSE +7328 silly gunzTarPerm extractEntry node_modules/inflight/LICENSE +7329 silly gunzTarPerm extractEntry node_modules/debug/LICENSE +7330 silly gunzTarPerm extractEntry node_modules/decompress-response/license +7331 silly gunzTarPerm extractEntry node_modules/inherits/LICENSE +7332 silly gunzTarPerm extractEntry node_modules/ini/LICENSE +7333 silly gunzTarPerm extractEntry node_modules/decompress-tar/license +7334 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/license +7335 silly gunzTarPerm extractEntry node_modules/ip-regex/license +7336 silly gunzTarPerm extractEntry node_modules/is-cidr/LICENSE +7337 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/node_modules/file-type/license +7338 silly gunzTarPerm extractEntry node_modules/decompress-targz/license +7339 silly gunzTarPerm extractEntry node_modules/is-core-module/LICENSE +7340 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/license +7341 silly gunzTarPerm extractEntry node_modules/is-lambda/LICENSE +7342 silly gunzTarPerm extractEntry node_modules/isexe/LICENSE +7343 silly gunzTarPerm extractEntry node_modules/decompress-unzip/license +7344 silly gunzTarPerm extractEntry node_modules/decompress-unzip/node_modules/file-type/license +7345 silly gunzTarPerm extractEntry node_modules/json-stringify-nice/LICENSE +7346 silly gunzTarPerm extractEntry node_modules/jsonparse/LICENSE +7347 silly gunzTarPerm extractEntry node_modules/decompress/license +7348 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/license +7349 silly gunzTarPerm extractEntry node_modules/just-diff-apply/LICENSE +7350 silly gunzTarPerm extractEntry node_modules/just-diff/LICENSE +7351 silly gunzTarPerm extractEntry node_modules/libnpmaccess/LICENSE +7352 silly gunzTarPerm extractEntry node_modules/libnpmdiff/LICENSE +7353 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/node_modules/pify/license +7354 silly gunzTarPerm extractEntry node_modules/deep-extend/LICENSE +7355 silly gunzTarPerm extractEntry node_modules/libnpmexec/LICENSE +7356 silly gunzTarPerm extractEntry node_modules/libnpmfund/LICENSE +7357 silly gunzTarPerm extractEntry node_modules/defer-to-connect/LICENSE +7358 silly gunzTarPerm extractEntry node_modules/del/license +7359 silly gunzTarPerm extractEntry node_modules/libnpmorg/LICENSE +7360 silly gunzTarPerm extractEntry node_modules/libnpmpack/LICENSE +7361 silly gunzTarPerm extractEntry node_modules/delegates/License +7362 silly gunzTarPerm extractEntry node_modules/depd/LICENSE +7363 silly gunzTarPerm extractEntry node_modules/libnpmpublish/LICENSE +7364 silly gunzTarPerm extractEntry node_modules/libnpmsearch/LICENSE +7365 silly gunzTarPerm extractEntry node_modules/dir-glob/license +7366 silly gunzTarPerm extractEntry node_modules/duplexer3/license +7367 silly gunzTarPerm extractEntry node_modules/libnpmteam/LICENSE +7368 silly gunzTarPerm extractEntry node_modules/libnpmversion/LICENSE +7369 silly gunzTarPerm extractEntry node_modules/encoding/LICENSE +7370 silly gunzTarPerm extractEntry node_modules/end-of-stream/LICENSE +7371 silly gunzTarPerm extractEntry node_modules/lru-cache/LICENSE +7372 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/LICENSE +7373 silly gunzTarPerm extractEntry node_modules/env-paths/license +7374 silly gunzTarPerm extractEntry node_modules/fast-glob/LICENSE +7375 silly gunzTarPerm extractEntry node_modules/minimatch/LICENSE +7376 silly gunzTarPerm extractEntry node_modules/minipass-collect/LICENSE +7377 silly gunzTarPerm extractEntry node_modules/fastq/LICENSE +7378 silly gunzTarPerm extractEntry node_modules/fd-slicer/LICENSE +7379 silly gunzTarPerm extractEntry node_modules/minipass-fetch/LICENSE +7380 silly gunzTarPerm extractEntry node_modules/minipass-flush/LICENSE +7381 silly gunzTarPerm extractEntry node_modules/file-type/license +7382 silly gunzTarPerm extractEntry node_modules/fill-range/LICENSE +7383 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/LICENSE +7384 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/LICENSE +7385 silly gunzTarPerm extractEntry node_modules/fs-constants/LICENSE +7386 silly gunzTarPerm extractEntry node_modules/fs-minipass/LICENSE +7387 silly gunzTarPerm extractEntry node_modules/minipass-sized/LICENSE +7388 silly gunzTarPerm extractEntry node_modules/minipass/LICENSE +7389 silly gunzTarPerm extractEntry node_modules/fs.realpath/LICENSE +7390 silly gunzTarPerm extractEntry node_modules/function-bind/LICENSE +7391 silly gunzTarPerm extractEntry node_modules/minizlib/LICENSE +7392 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/LICENSE +7393 silly gunzTarPerm extractEntry node_modules/get-stream/license +7394 silly gunzTarPerm extractEntry node_modules/git-config-path/LICENSE +7395 silly gunzTarPerm extractEntry node_modules/mkdirp/LICENSE +7396 silly gunzTarPerm extractEntry node_modules/mute-stream/LICENSE +7397 silly gunzTarPerm extractEntry node_modules/glob-parent/LICENSE +7398 silly gunzTarPerm extractEntry node_modules/glob/LICENSE +7399 silly gunzTarPerm extractEntry node_modules/negotiator/LICENSE +7400 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/LICENSE +7401 silly gunzTarPerm extractEntry node_modules/global-dirs/license +7402 silly gunzTarPerm extractEntry node_modules/globby/license +7403 silly gunzTarPerm extractEntry node_modules/node-gyp/LICENSE +7404 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/LICENSE +7405 silly gunzTarPerm extractEntry node_modules/got/license +7406 silly gunzTarPerm extractEntry node_modules/got/node_modules/get-stream/license +7407 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/LICENSE +7408 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/LICENSE +7409 silly gunzTarPerm extractEntry node_modules/graceful-fs/LICENSE +7410 silly gunzTarPerm extractEntry node_modules/has-unicode/LICENSE +7411 silly gunzTarPerm extractEntry node_modules/nopt/LICENSE +7412 silly gunzTarPerm extractEntry node_modules/normalize-package-data/LICENSE +7413 silly gunzTarPerm extractEntry node_modules/hosted-git-info/LICENSE +7414 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/LICENSE +7415 silly gunzTarPerm extractEntry node_modules/npm-audit-report/LICENSE +7416 silly gunzTarPerm extractEntry node_modules/npm-bundled/LICENSE +7417 silly gunzTarPerm extractEntry node_modules/humanize-ms/LICENSE +7418 silly gunzTarPerm extractEntry node_modules/iconv-lite/LICENSE +7419 silly gunzTarPerm extractEntry node_modules/npm-install-checks/LICENSE +7420 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/LICENSE +7421 silly gunzTarPerm extractEntry node_modules/ieee754/LICENSE +7422 silly gunzTarPerm extractEntry node_modules/ignore-walk/LICENSE +7423 silly gunzTarPerm extractEntry node_modules/npm-package-arg/LICENSE +7424 silly gunzTarPerm extractEntry node_modules/npm-packlist/LICENSE +7425 silly gunzTarPerm extractEntry node_modules/indent-string/license +7426 silly gunzTarPerm extractEntry node_modules/infer-owner/LICENSE +7427 silly gunzTarPerm extractEntry node_modules/npm-user-validate/LICENSE +7428 silly gunzTarPerm extractEntry node_modules/once/LICENSE +7429 silly gunzTarPerm extractEntry node_modules/inflight/LICENSE +7430 silly gunzTarPerm extractEntry node_modules/inherits/LICENSE +7431 silly gunzTarPerm extractEntry node_modules/p-map/license +7432 silly gunzTarPerm extractEntry node_modules/pacote/LICENSE +7433 silly gunzTarPerm extractEntry node_modules/ini/LICENSE +7434 silly gunzTarPerm extractEntry node_modules/is-ci/LICENSE +7435 silly gunzTarPerm extractEntry node_modules/path-is-absolute/license +7436 silly gunzTarPerm extractEntry node_modules/proc-log/LICENSE +7437 silly gunzTarPerm extractEntry node_modules/is-core-module/LICENSE +7438 silly gunzTarPerm extractEntry node_modules/is-extglob/LICENSE +7439 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/LICENSE +7440 silly gunzTarPerm extractEntry node_modules/promise-call-limit/LICENSE +7441 silly gunzTarPerm extractEntry node_modules/promise-inflight/LICENSE +7442 silly gunzTarPerm extractEntry node_modules/promise-retry/LICENSE +7443 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/license +7444 silly gunzTarPerm extractEntry node_modules/is-glob/LICENSE +7445 silly gunzTarPerm extractEntry node_modules/promzard/LICENSE +7446 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/LICENSE +7447 silly gunzTarPerm extractEntry node_modules/is-installed-globally/license +7448 silly gunzTarPerm extractEntry node_modules/is-lambda/LICENSE +7449 silly gunzTarPerm extractEntry node_modules/read-cmd-shim/LICENSE +7450 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/LICENSE +7451 silly gunzTarPerm extractEntry node_modules/is-natural-number/LICENSE +7452 silly gunzTarPerm extractEntry node_modules/is-number/LICENSE +7453 silly gunzTarPerm extractEntry node_modules/read-package-json/LICENSE +7454 silly gunzTarPerm extractEntry node_modules/read/LICENSE +7455 silly gunzTarPerm extractEntry node_modules/is-path-cwd/license +7456 silly gunzTarPerm extractEntry node_modules/is-path-inside/license +7457 silly gunzTarPerm extractEntry node_modules/readable-stream/LICENSE +7458 silly gunzTarPerm extractEntry node_modules/readdir-scoped-modules/LICENSE +7459 silly gunzTarPerm extractEntry node_modules/is-stream/license +7460 silly gunzTarPerm extractEntry node_modules/is-windows/LICENSE +7461 silly gunzTarPerm extractEntry node_modules/retry/License +7462 silly gunzTarPerm extractEntry node_modules/rimraf/LICENSE +7463 silly gunzTarPerm extractEntry node_modules/isexe/LICENSE +7464 silly gunzTarPerm extractEntry node_modules/json-buffer/LICENSE +7465 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/LICENSE +7466 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/LICENSE +7467 silly gunzTarPerm extractEntry node_modules/jsonparse/LICENSE +7468 silly gunzTarPerm extractEntry node_modules/keyv/LICENSE +7469 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/LICENSE +7470 silly gunzTarPerm extractEntry node_modules/safe-buffer/LICENSE +7471 silly gunzTarPerm extractEntry node_modules/latest-version/license +7472 silly gunzTarPerm extractEntry node_modules/liquidjs/LICENSE +7473 silly gunzTarPerm extractEntry node_modules/safer-buffer/LICENSE +7474 silly gunzTarPerm extractEntry node_modules/semver/LICENSE +7475 silly gunzTarPerm extractEntry node_modules/lowercase-keys/license +7476 silly gunzTarPerm extractEntry node_modules/lru-cache/LICENSE +7477 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/LICENSE +7478 silly gunzTarPerm extractEntry node_modules/smart-buffer/LICENSE +7479 silly gunzTarPerm extractEntry node_modules/make-dir/license +7480 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/LICENSE +7481 silly gunzTarPerm extractEntry node_modules/socks/LICENSE +7482 silly gunzTarPerm extractEntry node_modules/spdx-correct/LICENSE +7483 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/LICENSE +7484 silly gunzTarPerm extractEntry node_modules/merge2/LICENSE +7485 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/LICENSE +7486 silly gunzTarPerm extractEntry node_modules/string_decoder/LICENSE +7487 silly gunzTarPerm extractEntry node_modules/micromatch/LICENSE +7488 silly gunzTarPerm extractEntry node_modules/mimic-response/license +7489 silly gunzTarPerm extractEntry node_modules/string-width/license +7490 silly gunzTarPerm extractEntry node_modules/strip-ansi/license +7491 silly gunzTarPerm extractEntry node_modules/minimatch/LICENSE +7492 silly gunzTarPerm extractEntry node_modules/minimist/LICENSE +7493 silly gunzTarPerm extractEntry node_modules/supports-color/license +7494 silly gunzTarPerm extractEntry node_modules/tar/LICENSE +7495 silly gunzTarPerm extractEntry node_modules/minipass-collect/LICENSE +7496 silly gunzTarPerm extractEntry node_modules/minipass-fetch/LICENSE +7497 silly gunzTarPerm extractEntry node_modules/text-table/LICENSE +7498 silly gunzTarPerm extractEntry node_modules/treeverse/LICENSE +7499 silly gunzTarPerm extractEntry node_modules/minipass-flush/LICENSE +7500 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/LICENSE +7501 silly gunzTarPerm extractEntry node_modules/unique-filename/LICENSE +7502 silly gunzTarPerm extractEntry node_modules/unique-slug/LICENSE +7503 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/LICENSE +7504 silly gunzTarPerm extractEntry node_modules/minipass-sized/LICENSE +7505 silly gunzTarPerm extractEntry node_modules/util-deprecate/LICENSE +7506 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/LICENSE +7507 silly gunzTarPerm extractEntry node_modules/minipass/LICENSE +7508 silly gunzTarPerm extractEntry node_modules/minizlib/LICENSE +7509 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/LICENSE +7510 silly gunzTarPerm extractEntry node_modules/walk-up-path/LICENSE +7511 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/LICENSE +7512 silly gunzTarPerm extractEntry node_modules/mkdirp/LICENSE +7513 silly gunzTarPerm extractEntry node_modules/wcwidth/LICENSE +7514 silly gunzTarPerm extractEntry node_modules/which/LICENSE +7515 silly gunzTarPerm extractEntry node_modules/mz/LICENSE +7516 silly gunzTarPerm extractEntry node_modules/negotiator/LICENSE +7517 silly gunzTarPerm extractEntry node_modules/wide-align/LICENSE +7518 silly gunzTarPerm extractEntry node_modules/wrappy/LICENSE +7519 silly gunzTarPerm extractEntry node_modules/nested-error-stacks/LICENSE +7520 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/LICENSE +7521 silly gunzTarPerm extractEntry node_modules/yallist/LICENSE +7522 silly gunzTarPerm extractEntry node_modules/has/LICENSE-MIT +7523 silly gunzTarPerm extractEntry node_modules/node-gyp/LICENSE +7524 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/LICENSE +7525 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/LICENSE-MIT +7526 silly gunzTarPerm extractEntry node_modules/columnify/Makefile +7527 silly gunzTarPerm extractEntry node_modules/delegates/Makefile +7528 silly gunzTarPerm extractEntry node_modules/retry/Makefile +7529 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/LICENSE +7530 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/LICENSE +7531 silly gunzTarPerm extractEntry bin/node-gyp-bin/node-gyp +7532 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp +7533 silly gunzTarPerm extractEntry node_modules/nopt/LICENSE +7534 silly gunzTarPerm extractEntry node_modules/normalize-package-data/LICENSE +7535 silly gunzTarPerm extractEntry node_modules/which/bin/node-which +7536 silly gunzTarPerm extractEntry bin/npm +7537 silly gunzTarPerm extractEntry node_modules/normalize-url/license +7538 silly gunzTarPerm extractEntry node_modules/npm-bundled/LICENSE +7539 silly gunzTarPerm extractEntry bin/npx +7540 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/README +7541 silly gunzTarPerm extractEntry node_modules/npm-install-checks/LICENSE +7542 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/LICENSE +7543 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/README +7544 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/README +7545 silly gunzTarPerm extractEntry node_modules/npm-package-arg/LICENSE +7546 silly gunzTarPerm extractEntry node_modules/npm-packlist/LICENSE +7547 silly gunzTarPerm extractEntry node_modules/cssesc/man/cssesc.1 +7548 silly gunzTarPerm extractEntry man/man1/npm-access.1 +7549 silly gunzTarPerm extractEntry node_modules/object-assign/license +7550 silly gunzTarPerm extractEntry node_modules/once/LICENSE +7551 silly gunzTarPerm extractEntry man/man1/npm-adduser.1 +7552 silly gunzTarPerm extractEntry man/man1/npm-audit.1 +7553 silly gunzTarPerm extractEntry node_modules/p-cancelable/license +7554 silly gunzTarPerm extractEntry node_modules/p-event/license +7555 silly gunzTarPerm extractEntry man/man1/npm-bin.1 +7556 silly gunzTarPerm extractEntry man/man1/npm-bugs.1 +7557 silly gunzTarPerm extractEntry node_modules/p-finally/license +7558 silly gunzTarPerm extractEntry node_modules/p-map/license +7559 silly gunzTarPerm extractEntry man/man1/npm-cache.1 +7560 silly gunzTarPerm extractEntry man/man1/npm-ci.1 +7561 silly gunzTarPerm extractEntry node_modules/p-timeout/license +7562 silly gunzTarPerm extractEntry node_modules/package-json/license +7563 silly gunzTarPerm extractEntry man/man1/npm-completion.1 +7564 silly gunzTarPerm extractEntry man/man1/npm-config.1 +7565 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/LICENSE +7566 silly gunzTarPerm extractEntry node_modules/pacote/LICENSE +7567 silly gunzTarPerm extractEntry man/man1/npm-dedupe.1 +7568 silly gunzTarPerm extractEntry man/man1/npm-deprecate.1 +7569 silly gunzTarPerm extractEntry node_modules/parse-git-config/LICENSE +7570 silly gunzTarPerm extractEntry node_modules/parse-git-config/node_modules/ini/LICENSE +7571 silly gunzTarPerm extractEntry man/man1/npm-diff.1 +7572 silly gunzTarPerm extractEntry man/man1/npm-dist-tag.1 +7573 silly gunzTarPerm extractEntry node_modules/path-is-absolute/license +7574 silly gunzTarPerm extractEntry node_modules/path-key/license +7575 silly gunzTarPerm extractEntry man/man1/npm-docs.1 +7576 silly gunzTarPerm extractEntry man/man1/npm-doctor.1 +7577 silly gunzTarPerm extractEntry node_modules/path-type/license +7578 silly gunzTarPerm extractEntry node_modules/pend/LICENSE +7579 silly gunzTarPerm extractEntry man/man1/npm-edit.1 +7580 silly gunzTarPerm extractEntry man/man1/npm-exec.1 +7581 silly gunzTarPerm extractEntry node_modules/picomatch/LICENSE +7582 silly gunzTarPerm extractEntry node_modules/pify/license +7583 silly gunzTarPerm extractEntry man/man1/npm-explain.1 +7584 silly gunzTarPerm extractEntry man/man1/npm-explore.1 +7585 silly gunzTarPerm extractEntry node_modules/pinkie-promise/license +7586 silly gunzTarPerm extractEntry node_modules/pinkie/license +7587 silly gunzTarPerm extractEntry man/man1/npm-find-dupes.1 +7588 silly gunzTarPerm extractEntry man/man1/npm-fund.1 +7589 silly gunzTarPerm extractEntry node_modules/prepend-http/license +7590 silly gunzTarPerm extractEntry node_modules/proc-log/LICENSE +7591 silly gunzTarPerm extractEntry man/man1/npm-help-search.1 +7592 silly gunzTarPerm extractEntry man/man1/npm-help.1 +7593 silly gunzTarPerm extractEntry node_modules/promise-inflight/LICENSE +7594 silly gunzTarPerm extractEntry node_modules/promise-retry/LICENSE +7595 silly gunzTarPerm extractEntry man/man1/npm-hook.1 +7596 silly gunzTarPerm extractEntry man/man1/npm-init.1 +7597 silly gunzTarPerm extractEntry node_modules/pump/LICENSE +7598 silly gunzTarPerm extractEntry node_modules/queue-microtask/LICENSE +7599 silly gunzTarPerm extractEntry man/man1/npm-install-ci-test.1 +7600 silly gunzTarPerm extractEntry man/man1/npm-install-test.1 +7601 silly gunzTarPerm extractEntry node_modules/rc/node_modules/ini/LICENSE +7602 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/LICENSE +7603 silly gunzTarPerm extractEntry man/man1/npm-install.1 +7604 silly gunzTarPerm extractEntry man/man1/npm-link.1 +7605 silly gunzTarPerm extractEntry node_modules/read-package-json/LICENSE +7606 silly gunzTarPerm extractEntry node_modules/readable-stream/LICENSE +7607 silly gunzTarPerm extractEntry man/man1/npm-logout.1 +7608 silly gunzTarPerm extractEntry man/man1/npm-ls.1 +7609 silly gunzTarPerm extractEntry node_modules/registry-auth-token/LICENSE +7610 silly gunzTarPerm extractEntry node_modules/registry-url/license +7611 silly gunzTarPerm extractEntry man/man1/npm-org.1 +7612 silly gunzTarPerm extractEntry man/man1/npm-outdated.1 +7613 silly gunzTarPerm extractEntry node_modules/responselike/LICENSE +7614 silly gunzTarPerm extractEntry node_modules/retry/License +7615 silly gunzTarPerm extractEntry man/man1/npm-owner.1 +7616 silly gunzTarPerm extractEntry man/man1/npm-pack.1 +7617 silly gunzTarPerm extractEntry node_modules/reusify/LICENSE +7618 silly gunzTarPerm extractEntry node_modules/rimraf/LICENSE +7619 silly gunzTarPerm extractEntry man/man1/npm-ping.1 +7620 silly gunzTarPerm extractEntry man/man1/npm-pkg.1 +7621 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/LICENSE +7622 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/LICENSE +7623 silly gunzTarPerm extractEntry man/man1/npm-prefix.1 +7624 silly gunzTarPerm extractEntry man/man1/npm-profile.1 +7625 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/LICENSE +7626 silly gunzTarPerm extractEntry node_modules/run-parallel/LICENSE +7627 silly gunzTarPerm extractEntry man/man1/npm-prune.1 +7628 silly gunzTarPerm extractEntry man/man1/npm-publish.1 +7629 silly gunzTarPerm extractEntry node_modules/safe-buffer/LICENSE +7630 silly gunzTarPerm extractEntry node_modules/safer-buffer/LICENSE +7631 silly gunzTarPerm extractEntry man/man1/npm-query.1 +7632 silly gunzTarPerm extractEntry man/man1/npm-rebuild.1 +7633 silly gunzTarPerm extractEntry node_modules/seek-bzip/LICENSE +7634 silly gunzTarPerm extractEntry node_modules/semver-diff/license +7635 silly gunzTarPerm extractEntry man/man1/npm-repo.1 +7636 silly gunzTarPerm extractEntry man/man1/npm-restart.1 +7637 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/LICENSE +7638 silly gunzTarPerm extractEntry node_modules/semver/LICENSE +7639 silly gunzTarPerm extractEntry man/man1/npm-root.1 +7640 silly gunzTarPerm extractEntry man/man1/npm-run-script.1 +7641 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/LICENSE +7642 silly gunzTarPerm extractEntry node_modules/shebang-command/license +7643 silly gunzTarPerm extractEntry man/man1/npm-search.1 +7644 silly gunzTarPerm extractEntry man/man1/npm-set-script.1 +7645 silly gunzTarPerm extractEntry node_modules/shebang-regex/license +7646 silly gunzTarPerm extractEntry node_modules/slash/license +7647 silly gunzTarPerm extractEntry man/man1/npm-shrinkwrap.1 +7648 silly gunzTarPerm extractEntry man/man1/npm-star.1 +7649 silly gunzTarPerm extractEntry node_modules/smart-buffer/LICENSE +7650 silly gunzTarPerm extractEntry node_modules/socks/LICENSE +7651 silly gunzTarPerm extractEntry man/man1/npm-stars.1 +7652 silly gunzTarPerm extractEntry man/man1/npm-start.1 +7653 silly gunzTarPerm extractEntry node_modules/spdx-correct/LICENSE +7654 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/LICENSE +7655 silly gunzTarPerm extractEntry man/man1/npm-stop.1 +7656 silly gunzTarPerm extractEntry man/man1/npm-team.1 +7657 silly gunzTarPerm extractEntry node_modules/string_decoder/LICENSE +7658 silly gunzTarPerm extractEntry node_modules/string-width/license +7659 silly gunzTarPerm extractEntry man/man1/npm-test.1 +7660 silly gunzTarPerm extractEntry man/man1/npm-token.1 +7661 silly gunzTarPerm extractEntry node_modules/strip-ansi/license +7662 silly gunzTarPerm extractEntry node_modules/strip-dirs/LICENSE +7663 silly gunzTarPerm extractEntry man/man1/npm-uninstall.1 +7664 silly gunzTarPerm extractEntry man/man1/npm-unpublish.1 +7665 silly gunzTarPerm extractEntry node_modules/strip-json-comments/license +7666 silly gunzTarPerm extractEntry node_modules/tar-stream/LICENSE +7667 silly gunzTarPerm extractEntry man/man1/npm-unstar.1 +7668 silly gunzTarPerm extractEntry man/man1/npm-update.1 +7669 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/LICENSE +7670 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/safe-buffer/LICENSE +7671 silly gunzTarPerm extractEntry man/man1/npm-version.1 +7672 silly gunzTarPerm extractEntry man/man1/npm-view.1 +7673 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/string_decoder/LICENSE +7674 silly gunzTarPerm extractEntry node_modules/tar/LICENSE +7675 silly gunzTarPerm extractEntry man/man1/npm-whoami.1 +7676 silly gunzTarPerm extractEntry man/man1/npm.1 +7677 silly gunzTarPerm extractEntry node_modules/thenify-all/LICENSE +7678 silly gunzTarPerm extractEntry node_modules/thenify/LICENSE +7679 silly gunzTarPerm extractEntry man/man1/npx.1 +7680 silly gunzTarPerm extractEntry man/man5/folders.5 +7681 silly gunzTarPerm extractEntry node_modules/to-buffer/LICENSE +7682 silly gunzTarPerm extractEntry node_modules/to-readable-stream/license +7683 silly gunzTarPerm extractEntry man/man5/install.5 +7684 silly gunzTarPerm extractEntry man/man5/npm-shrinkwrap-json.5 +7685 silly gunzTarPerm extractEntry node_modules/to-regex-range/LICENSE +7686 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/LICENSE +7687 silly gunzTarPerm extractEntry man/man5/npmrc.5 +7688 silly gunzTarPerm extractEntry man/man5/package-json.5 +7689 silly gunzTarPerm extractEntry node_modules/unique-filename/LICENSE +7690 silly gunzTarPerm extractEntry node_modules/unique-slug/LICENSE +7691 silly gunzTarPerm extractEntry man/man5/package-lock-json.5 +7692 silly gunzTarPerm extractEntry man/man7/config.7 +7693 silly gunzTarPerm extractEntry node_modules/url-parse-lax/license +7694 silly gunzTarPerm extractEntry node_modules/util-deprecate/LICENSE +7695 silly gunzTarPerm extractEntry man/man7/dependency-selectors.7 +7696 silly gunzTarPerm extractEntry man/man7/developers.7 +7697 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/LICENSE +7698 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/LICENSE +7699 silly gunzTarPerm extractEntry man/man7/logging.7 +7700 silly gunzTarPerm extractEntry node_modules/which/LICENSE +7701 silly gunzTarPerm extractEntry node_modules/wide-align/LICENSE +7702 silly gunzTarPerm extractEntry man/man7/orgs.7 +7703 silly gunzTarPerm extractEntry man/man7/package-spec.7 +7704 silly gunzTarPerm extractEntry node_modules/wrappy/LICENSE +7705 silly gunzTarPerm extractEntry node_modules/wscript-avoider/LICENSE +7706 silly gunzTarPerm extractEntry man/man7/registry.7 +7707 silly gunzTarPerm extractEntry man/man7/removal.7 +7708 silly gunzTarPerm extractEntry node_modules/xtend/LICENSE +7709 silly gunzTarPerm extractEntry node_modules/yallist/LICENSE +7710 silly gunzTarPerm extractEntry man/man7/scope.7 +7711 silly gunzTarPerm extractEntry man/man7/scripts.7 +7712 silly gunzTarPerm extractEntry node_modules/yauzl/LICENSE +7713 silly gunzTarPerm extractEntry assets/sources/LICENSE-liquid +7714 silly gunzTarPerm extractEntry man/man7/workspaces.7 +7715 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp.bat +7716 silly gunzTarPerm extractEntry node_modules/has/LICENSE-MIT +7717 silly gunzTarPerm extractEntry node_modules/ignore/LICENSE-MIT +7718 silly gunzTarPerm extractEntry node_modules/semver/range.bnf +7719 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +7720 silly gunzTarPerm extractEntry node_modules/delegates/Makefile +7721 silly gunzTarPerm extractEntry node_modules/isarray/Makefile +7722 silly gunzTarPerm extractEntry node_modules/node-gyp/src/win_delay_load_hook.cc +7723 silly gunzTarPerm extractEntry bin/node-gyp-bin/node-gyp.cmd +7724 silly gunzTarPerm extractEntry node_modules/retry/Makefile +7725 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp +7726 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp.cmd +7727 silly gunzTarPerm extractEntry bin/npm.cmd +7728 silly gunzTarPerm extractEntry node_modules/which/bin/node-which +7729 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/README +7730 silly gunzTarPerm extractEntry bin/npx.cmd +7731 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/ca-bundle.crt +7732 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/README +7733 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/README +7734 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/ca.crt +7735 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/server.crt +7736 silly gunzTarPerm extractEntry node_modules/seek-bzip/bin/seek-bunzip +7737 silly gunzTarPerm extractEntry node_modules/seek-bzip/bin/seek-bzip-table +7738 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/Find-VisualStudio.cs +7739 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/base.css +7740 silly gunzTarPerm extractEntry node_modules/rc/LICENSE.APACHE2 +7741 silly gunzTarPerm extractEntry node_modules/through/LICENSE.APACHE2 +7742 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/prettify.css +7743 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/gyp-tests.el +7744 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp.bat +7745 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/range.bnf +7746 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/gyp.el +7747 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified +7748 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/range.bnf +7749 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/range.bnf +7750 silly gunzTarPerm extractEntry node_modules/semver/range.bnf +7751 silly gunzTarPerm extractEntry node_modules/rc/LICENSE.BSD +7752 silly gunzTarPerm extractEntry node_modules/retry/equation.gif +7753 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp +7754 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +7755 silly gunzTarPerm extractEntry node_modules/node-gyp/src/win_delay_load_hook.cc +7756 silly gunzTarPerm extractEntry node_modules/node-gyp/addon.gypi +7757 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi +7758 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp.cmd +7759 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/ca-bundle.crt +7760 silly gunzTarPerm extractEntry docs/output/using-npm/config.html +7761 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/ca.crt +7762 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/server.crt +7763 silly gunzTarPerm extractEntry docs/output/using-npm/dependency-selectors.html +7764 silly gunzTarPerm extractEntry docs/output/using-npm/developers.html +7765 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/Find-VisualStudio.cs +7766 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/base.css +7767 silly gunzTarPerm extractEntry docs/output/configuring-npm/folders.html +7768 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/__root__/index.html +7769 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/prettify.css +7770 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/gyp-tests.el +7771 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/index.html +7772 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/__root__/index.js.html +7773 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/gyp.el +7774 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified +7775 silly gunzTarPerm extractEntry docs/output/configuring-npm/install.html +7776 silly gunzTarPerm extractEntry docs/output/using-npm/logging.html +7777 silly gunzTarPerm extractEntry node_modules/retry/equation.gif +7778 silly gunzTarPerm extractEntry docs/output/commands/npm-access.html +7779 silly gunzTarPerm extractEntry docs/output/commands/npm-adduser.html +7780 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp +7781 silly gunzTarPerm extractEntry node_modules/node-gyp/addon.gypi +7782 silly gunzTarPerm extractEntry docs/output/commands/npm-audit.html +7783 silly gunzTarPerm extractEntry docs/output/commands/npm-bin.html +7784 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/nodedir/include/node/config.gypi +7785 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/__root__/index.html +7786 silly gunzTarPerm extractEntry docs/output/commands/npm-bugs.html +7787 silly gunzTarPerm extractEntry docs/output/commands/npm-cache.html +7788 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/index.html +7789 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/__root__/index.js.html +7790 silly gunzTarPerm extractEntry docs/output/commands/npm-ci.html +7791 silly gunzTarPerm extractEntry docs/output/commands/npm-completion.html +7792 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/iconv-lite.iml +7793 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js +7794 silly gunzTarPerm extractEntry docs/output/commands/npm-config.html +7795 silly gunzTarPerm extractEntry docs/output/commands/npm-dedupe.html +7796 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_duplex.js +7797 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +7798 silly gunzTarPerm extractEntry docs/output/commands/npm-deprecate.html +7799 silly gunzTarPerm extractEntry docs/output/commands/npm-diff.html +7800 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js +7801 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_passthrough.js +7802 silly gunzTarPerm extractEntry docs/output/commands/npm-dist-tag.html +7803 silly gunzTarPerm extractEntry docs/output/commands/npm-docs.html +7804 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +7805 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js +7806 silly gunzTarPerm extractEntry docs/output/commands/npm-doctor.html +7807 silly gunzTarPerm extractEntry docs/output/commands/npm-edit.html +7808 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_readable.js +7809 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +7810 silly gunzTarPerm extractEntry docs/output/commands/npm-exec.html +7811 silly gunzTarPerm extractEntry docs/output/commands/npm-explain.html +7812 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js +7813 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_transform.js +7814 silly gunzTarPerm extractEntry docs/output/commands/npm-explore.html +7815 silly gunzTarPerm extractEntry docs/output/commands/npm-find-dupes.html +7816 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +7817 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js +7818 silly gunzTarPerm extractEntry docs/output/commands/npm-fund.html +7819 silly gunzTarPerm extractEntry docs/output/commands/npm-help-search.html +7820 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_writable.js +7821 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +7822 silly gunzTarPerm extractEntry docs/output/commands/npm-help.html +7823 silly gunzTarPerm extractEntry docs/output/commands/npm-hook.html +7824 silly gunzTarPerm extractEntry node_modules/encoding/.prettierrc.js +7825 silly gunzTarPerm extractEntry node_modules/abbrev/abbrev.js +7826 silly gunzTarPerm extractEntry docs/output/commands/npm-init.html +7827 silly gunzTarPerm extractEntry docs/output/commands/npm-install-ci-test.html +7828 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/abort-error.js +7829 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/add-git-sha.js +7830 silly gunzTarPerm extractEntry docs/output/commands/npm-install-test.html +7831 silly gunzTarPerm extractEntry docs/output/commands/npm-install.html +7832 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/agent.js +7833 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.js +7834 silly gunzTarPerm extractEntry docs/output/commands/npm-link.html +7835 silly gunzTarPerm extractEntry docs/output/commands/npm-logout.html +7836 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.js +7837 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/agent.js +7838 silly gunzTarPerm extractEntry docs/output/commands/npm-ls.html +7839 silly gunzTarPerm extractEntry docs/output/commands/npm-org.html +7840 silly gunzTarPerm extractEntry node_modules/wide-align/align.js +7841 silly gunzTarPerm extractEntry node_modules/minimist/test/all_bool.js +7842 silly gunzTarPerm extractEntry docs/output/commands/npm-outdated.html +7843 silly gunzTarPerm extractEntry docs/output/commands/npm-owner.html +7844 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/array.js +7845 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/array.js +7846 silly gunzTarPerm extractEntry docs/output/commands/npm-pack.html +7847 silly gunzTarPerm extractEntry docs/output/commands/npm-ping.html +7848 silly gunzTarPerm extractEntry node_modules/got/source/as-promise.js +7849 silly gunzTarPerm extractEntry node_modules/got/source/as-stream.js +7850 silly gunzTarPerm extractEntry docs/output/commands/npm-pkg.html +7851 silly gunzTarPerm extractEntry docs/output/commands/npm-prefix.html +7852 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/async_iterator.js +7853 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/async.js +7854 silly gunzTarPerm extractEntry docs/output/commands/npm-profile.html +7855 silly gunzTarPerm extractEntry docs/output/commands/npm-prune.html +7856 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/providers/async.js +7857 silly gunzTarPerm extractEntry docs/output/commands/npm-publish.html +7858 silly gunzTarPerm extractEntry docs/output/commands/npm-query.html +7859 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/async.js +7860 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/async.js +7861 silly gunzTarPerm extractEntry docs/output/commands/npm-rebuild.html +7862 silly gunzTarPerm extractEntry docs/output/commands/npm-repo.html +7863 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/async.js +7864 silly gunzTarPerm extractEntry node_modules/through/test/async.js +7865 silly gunzTarPerm extractEntry docs/output/commands/npm-restart.html +7866 silly gunzTarPerm extractEntry docs/output/commands/npm-root.html +7867 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/auth.js +7868 silly gunzTarPerm extractEntry node_modules/through/test/auto-destroy.js +7869 silly gunzTarPerm extractEntry docs/output/commands/npm-run-script.html +7870 silly gunzTarPerm extractEntry docs/output/commands/npm-search.html +7871 silly gunzTarPerm extractEntry node_modules/gauge/lib/base-theme.js +7872 silly gunzTarPerm extractEntry node_modules/registry-auth-token/base64.js +7873 silly gunzTarPerm extractEntry docs/output/commands/npm-set-script.html +7874 silly gunzTarPerm extractEntry docs/output/configuring-npm/npm-shrinkwrap-json.html +7875 silly gunzTarPerm extractEntry docs/output/commands/npm-shrinkwrap.html +7876 silly gunzTarPerm extractEntry docs/output/commands/npm-star.html +7877 silly gunzTarPerm extractEntry node_modules/base64-js/base64js.min.js +7878 silly gunzTarPerm extractEntry node_modules/isexe/test/basic.js +7879 silly gunzTarPerm extractEntry docs/output/commands/npm-stars.html +7880 silly gunzTarPerm extractEntry docs/output/commands/npm-start.html +7881 silly gunzTarPerm extractEntry node_modules/minipass-sized/test/basic.js +7882 silly gunzTarPerm extractEntry node_modules/fastq/bench.js +7883 silly gunzTarPerm extractEntry node_modules/jsonparse/bench.js +7884 silly gunzTarPerm extractEntry node_modules/jsonparse/test/big-token.js +7885 silly gunzTarPerm extractEntry docs/output/commands/npm-stop.html +7886 silly gunzTarPerm extractEntry docs/output/commands/npm-team.html +7887 silly gunzTarPerm extractEntry node_modules/color-support/bin.js +7888 silly gunzTarPerm extractEntry node_modules/is-ci/bin.js +7889 silly gunzTarPerm extractEntry docs/output/commands/npm-test.html +7890 silly gunzTarPerm extractEntry docs/output/commands/npm-token.html +7891 silly gunzTarPerm extractEntry node_modules/pacote/lib/bin.js +7892 silly gunzTarPerm extractEntry node_modules/rimraf/bin.js +7893 silly gunzTarPerm extractEntry docs/output/commands/npm-uninstall.html +7894 silly gunzTarPerm extractEntry docs/output/commands/npm-unpublish.html +7895 silly gunzTarPerm extractEntry lib/xpm-dev/binaries-update.js +7896 silly gunzTarPerm extractEntry lib/xpm-dev/binaries.js +7897 silly gunzTarPerm extractEntry docs/output/commands/npm-unstar.html +7898 silly gunzTarPerm extractEntry docs/output/commands/npm-update.html +7899 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/lib/bit_iterator.js +7900 silly gunzTarPerm extractEntry node_modules/seek-bzip/lib/bitreader.js +7901 silly gunzTarPerm extractEntry docs/output/commands/npm-version.html +7902 silly gunzTarPerm extractEntry docs/output/commands/npm-view.html +7903 silly gunzTarPerm extractEntry node_modules/bl/bl.js +7904 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/blob.js +7905 silly gunzTarPerm extractEntry docs/output/commands/npm-whoami.html +7906 silly gunzTarPerm extractEntry docs/output/commands/npm.html +7907 silly gunzTarPerm extractEntry node_modules/any-promise/register/bluebird.js +7908 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/body.js +7909 silly gunzTarPerm extractEntry docs/output/configuring-npm/npmrc.html +7910 silly gunzTarPerm extractEntry docs/output/commands/npx.html +7911 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/bom-handling.js +7912 silly gunzTarPerm extractEntry node_modules/minimist/test/bool.js +7913 silly gunzTarPerm extractEntry docs/output/using-npm/orgs.html +7914 silly gunzTarPerm extractEntry docs/output/configuring-npm/package-json.html +7915 silly gunzTarPerm extractEntry node_modules/jsonparse/test/boundary.js +7916 silly gunzTarPerm extractEntry node_modules/agentkeepalive/browser.js +7917 silly gunzTarPerm extractEntry docs/output/configuring-npm/package-lock-json.html +7918 silly gunzTarPerm extractEntry node_modules/color-support/browser.js +7919 silly gunzTarPerm extractEntry node_modules/debug/src/browser.js +7920 silly gunzTarPerm extractEntry docs/output/using-npm/package-spec.html +7921 silly gunzTarPerm extractEntry docs/output/using-npm/registry.html +7922 silly gunzTarPerm extractEntry node_modules/fs-constants/browser.js +7923 silly gunzTarPerm extractEntry node_modules/node-fetch/browser.js +7924 silly gunzTarPerm extractEntry docs/output/using-npm/removal.html +7925 silly gunzTarPerm extractEntry docs/output/using-npm/scope.html +7926 silly gunzTarPerm extractEntry node_modules/rc/browser.js +7927 silly gunzTarPerm extractEntry node_modules/util-deprecate/browser.js +7928 silly gunzTarPerm extractEntry docs/output/using-npm/scripts.html +7929 silly gunzTarPerm extractEntry docs/output/using-npm/workspaces.html +7930 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/buffer_list.js +7931 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/buffer-stream.js +7932 silly gunzTarPerm extractEntry node_modules/clone/clone.iml +7933 silly gunzTarPerm extractEntry node_modules/promzard/test/exports.input +7934 silly gunzTarPerm extractEntry node_modules/get-stream/buffer-stream.js +7935 silly gunzTarPerm extractEntry node_modules/got/node_modules/get-stream/buffer-stream.js +7936 silly gunzTarPerm extractEntry node_modules/promzard/test/fn.input +7937 silly gunzTarPerm extractEntry node_modules/promzard/test/simple.input +7938 silly gunzTarPerm extractEntry node_modules/through/test/buffering.js +7939 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/internal/streams/BufferList.js +7940 silly gunzTarPerm extractEntry node_modules/promzard/test/validate.input +7941 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_duplex.js +7942 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_passthrough.js +7943 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_readable.js +7944 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/BufferList.js +7945 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/build.js +7946 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_transform.js +7947 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/_stream_writable.js +7948 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/lib/bzip2.js +7949 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/cache-dir.js +7950 silly gunzTarPerm extractEntry node_modules/abbrev/abbrev.js +7951 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/abort-error.js +7952 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/callsite-tostring.js +7953 silly gunzTarPerm extractEntry node_modules/negotiator/lib/charset.js +7954 silly gunzTarPerm extractEntry lib/commands/access.js +7955 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/actual.js +7956 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/check-response.js +7957 silly gunzTarPerm extractEntry node_modules/mz/child_process.js +7958 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/add-git-sha.js +7959 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/add-rm-pkg-deps.js +7960 silly gunzTarPerm extractEntry lib/commands/adduser.js +7961 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/advisory.js +7962 silly gunzTarPerm extractEntry node_modules/chownr/chownr.js +7963 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/clean-url.js +7964 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/agent.js +7965 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.js +7966 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/clean.js +7967 silly gunzTarPerm extractEntry node_modules/semver/functions/clean.js +7968 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.js +7969 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/agent.js +7970 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/lib/cli-application.js +7971 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/lib/cli-command.js +7972 silly gunzTarPerm extractEntry node_modules/text-table/example/align.js +7973 silly gunzTarPerm extractEntry node_modules/text-table/test/align.js +7974 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/lib/cli-error.js +7975 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/lib/cli-help.js +7976 silly gunzTarPerm extractEntry node_modules/wide-align/align.js +7977 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/america.js +7978 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/lib/cli-logger.js +7979 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/lib/cli-options.js +7980 silly gunzTarPerm extractEntry node_modules/text-table/test/ansi-colors.js +7981 silly gunzTarPerm extractEntry lib/utils/ansi-trim.js +7982 silly gunzTarPerm extractEntry node_modules/rc/cli.js +7983 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/clone.js +7984 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/apply.js +7985 silly gunzTarPerm extractEntry lib/arborist-cmd.js +7986 silly gunzTarPerm extractEntry node_modules/graceful-fs/clone.js +7987 silly gunzTarPerm extractEntry node_modules/mkdirp/bin/cmd.js +7988 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/array.js +7989 silly gunzTarPerm extractEntry node_modules/diff/lib/util/array.js +7990 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/array.js +7991 silly gunzTarPerm extractEntry node_modules/asap/asap.js +7992 silly gunzTarPerm extractEntry node_modules/semver/functions/cmp.js +7993 silly gunzTarPerm extractEntry node_modules/semver/functions/coerce.js +7994 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/async_iterator.js +7995 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/attribute.js +7996 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/common.js +7997 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/common.js +7998 silly gunzTarPerm extractEntry lib/utils/audit-error.js +7999 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/audit-report.js +8000 silly gunzTarPerm extractEntry node_modules/debug/src/common.js +8001 silly gunzTarPerm extractEntry node_modules/glob/common.js +8002 silly gunzTarPerm extractEntry lib/commands/audit.js +8003 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/audit.js +8004 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/common.js +8005 silly gunzTarPerm extractEntry node_modules/node-gyp/test/common.js +8006 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/audit.js +8007 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/auth.js +8008 silly gunzTarPerm extractEntry node_modules/retry/test/common.js +8009 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/common.js +8010 silly gunzTarPerm extractEntry lib/base-command.js +8011 silly gunzTarPerm extractEntry node_modules/gauge/lib/base-theme.js +8012 silly gunzTarPerm extractEntry node_modules/semver/classes/comparator.js +8013 silly gunzTarPerm extractEntry node_modules/semver/functions/compare-build.js +8014 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/base.js +8015 silly gunzTarPerm extractEntry node_modules/isexe/test/basic.js +8016 silly gunzTarPerm extractEntry node_modules/semver/functions/compare-loose.js +8017 silly gunzTarPerm extractEntry node_modules/semver/functions/compare.js +8018 silly gunzTarPerm extractEntry node_modules/minipass-sized/test/basic.js +8019 silly gunzTarPerm extractEntry node_modules/promzard/test/basic.js +8020 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/basic.js +8021 silly gunzTarPerm extractEntry node_modules/archy/examples/beep.js +8022 silly gunzTarPerm extractEntry node_modules/braces/lib/compile.js +8023 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/configure.js +8024 silly gunzTarPerm extractEntry node_modules/archy/test/beep.js +8025 silly gunzTarPerm extractEntry node_modules/jsonparse/bench.js +8026 silly gunzTarPerm extractEntry node_modules/jsonparse/test/big-token.js +8027 silly gunzTarPerm extractEntry node_modules/bin-links/lib/bin-target.js +8028 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/constants.js +8029 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/constants.js +8030 silly gunzTarPerm extractEntry lib/commands/bin.js +8031 silly gunzTarPerm extractEntry node_modules/color-support/bin.js +8032 silly gunzTarPerm extractEntry node_modules/braces/lib/constants.js +8033 silly gunzTarPerm extractEntry node_modules/minizlib/constants.js +8034 silly gunzTarPerm extractEntry node_modules/pacote/lib/bin.js +8035 silly gunzTarPerm extractEntry node_modules/rimraf/bin.js +8036 silly gunzTarPerm extractEntry node_modules/picomatch/lib/constants.js +8037 silly gunzTarPerm extractEntry node_modules/semver/internal/constants.js +8038 silly gunzTarPerm extractEntry lib/commands/birthday.js +8039 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/blob.js +8040 silly gunzTarPerm extractEntry node_modules/socks/build/common/constants.js +8041 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/copy-file.js +8042 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/body.js +8043 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/bom-handling.js +8044 silly gunzTarPerm extractEntry node_modules/cp-file/cp-file-error.js +8045 silly gunzTarPerm extractEntry node_modules/seek-bzip/lib/crc32.js +8046 silly gunzTarPerm extractEntry node_modules/jsonparse/test/boundary.js +8047 silly gunzTarPerm extractEntry node_modules/treeverse/lib/breadth.js +8048 silly gunzTarPerm extractEntry node_modules/asap/browser-asap.js +8049 silly gunzTarPerm extractEntry node_modules/asap/browser-raw.js +8050 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/create-config-gypi.js +8051 silly gunzTarPerm extractEntry node_modules/got/source/create.js +8052 silly gunzTarPerm extractEntry node_modules/agentkeepalive/browser.js +8053 silly gunzTarPerm extractEntry node_modules/color-support/browser.js +8054 silly gunzTarPerm extractEntry node_modules/tar/lib/create.js +8055 silly gunzTarPerm extractEntry node_modules/reusify/benchmarks/createNoCodeFunction.js +8056 silly gunzTarPerm extractEntry node_modules/debug/src/browser.js +8057 silly gunzTarPerm extractEntry node_modules/supports-color/browser.js +8058 silly gunzTarPerm extractEntry node_modules/mz/crypto.js +8059 silly gunzTarPerm extractEntry node_modules/safer-buffer/dangerous.js +8060 silly gunzTarPerm extractEntry node_modules/util-deprecate/browser.js +8061 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/buffer_list.js +8062 silly gunzTarPerm extractEntry node_modules/minimist/test/dash.js +8063 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/dbcs-codec.js +8064 silly gunzTarPerm extractEntry node_modules/promzard/example/buffer.js +8065 silly gunzTarPerm extractEntry node_modules/promzard/test/buffer.js +8066 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/dbcs-data.js +8067 silly gunzTarPerm extractEntry node_modules/semver/internal/debug.js +8068 silly gunzTarPerm extractEntry lib/commands/bugs.js +8069 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +8070 silly gunzTarPerm extractEntry node_modules/deep-extend/lib/deep-extend.js +8071 silly gunzTarPerm extractEntry node_modules/got/source/utils/deep-freeze.js +8072 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/build.js +8073 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/cache-dir.js +8074 silly gunzTarPerm extractEntry lib/commands/cache.js +8075 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/calc-dep-flags.js +8076 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/deep.js +8077 silly gunzTarPerm extractEntry node_modules/minimist/test/default_bool.js +8078 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/callback.js +8079 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/callsite-tostring.js +8080 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/default-opts.js +8081 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js +8082 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/can-place-dep.js +8083 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/case-insensitive-map.js +8084 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/destroy.js +8085 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +8086 silly gunzTarPerm extractEntry node_modules/cli-table3/src/cell.js +8087 silly gunzTarPerm extractEntry node_modules/text-table/example/center.js +8088 silly gunzTarPerm extractEntry node_modules/semver/functions/diff.js +8089 silly gunzTarPerm extractEntry node_modules/pacote/lib/dir.js +8090 silly gunzTarPerm extractEntry node_modules/text-table/test/center.js +8091 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/character.js +8092 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/dns.js +8093 silly gunzTarPerm extractEntry node_modules/mz/dns.js +8094 silly gunzTarPerm extractEntry node_modules/negotiator/lib/charset.js +8095 silly gunzTarPerm extractEntry node_modules/bin-links/lib/check-bin.js +8096 silly gunzTarPerm extractEntry node_modules/retry/example/dns.js +8097 silly gunzTarPerm extractEntry node_modules/minimist/test/dotted.js +8098 silly gunzTarPerm extractEntry node_modules/bin-links/lib/check-bins.js +8099 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/check-response.js +8100 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/duplex-browser.js +8101 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/duplex-browser.js +8102 silly gunzTarPerm extractEntry node_modules/chownr/chownr.js +8103 silly gunzTarPerm extractEntry lib/commands/ci.js +8104 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/className.js +8105 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/clean-url.js +8106 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/duplex.js +8107 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/duplex.js +8108 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/clean.js +8109 silly gunzTarPerm extractEntry node_modules/semver/functions/clean.js +8110 silly gunzTarPerm extractEntry node_modules/encoding/lib/encoding.js +8111 silly gunzTarPerm extractEntry node_modules/negotiator/lib/encoding.js +8112 silly gunzTarPerm extractEntry lib/cli.js +8113 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/clone.js +8114 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/end-of-stream.js +8115 silly gunzTarPerm extractEntry node_modules/through/test/end.js +8116 silly gunzTarPerm extractEntry node_modules/clone/clone.js +8117 silly gunzTarPerm extractEntry node_modules/graceful-fs/clone.js +8118 silly gunzTarPerm extractEntry lib/utils/cmd-list.js +8119 silly gunzTarPerm extractEntry node_modules/mkdirp/bin/cmd.js +8120 silly gunzTarPerm extractEntry node_modules/cross-spawn/lib/enoent.js +8121 silly gunzTarPerm extractEntry node_modules/cacache/lib/entry-index.js +8122 silly gunzTarPerm extractEntry node_modules/semver/functions/cmp.js +8123 silly gunzTarPerm extractEntry node_modules/semver/functions/coerce.js +8124 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/entry.js +8125 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/transformers/entry.js +8126 silly gunzTarPerm extractEntry node_modules/cli-columns/color.js +8127 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/colors.js +8128 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/entry.js +8129 silly gunzTarPerm extractEntry node_modules/semver/functions/eq.js +8130 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/colors.js +8131 silly gunzTarPerm extractEntry node_modules/columnify/columnify.js +8132 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/errno.js +8133 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/error.js +8134 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/combinator.js +8135 silly gunzTarPerm extractEntry node_modules/wcwidth/combining.js +8136 silly gunzTarPerm extractEntry node_modules/gauge/lib/error.js +8137 silly gunzTarPerm extractEntry node_modules/readable-stream/errors-browser.js +8138 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/comment.js +8139 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/commit.js +8140 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/errors.js +8141 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/errors.js +8142 silly gunzTarPerm extractEntry node_modules/debug/src/common.js +8143 silly gunzTarPerm extractEntry node_modules/glob/common.js +8144 silly gunzTarPerm extractEntry node_modules/got/source/errors.js +8145 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/errors.js +8146 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/common.js +8147 silly gunzTarPerm extractEntry node_modules/node-gyp/test/common.js +8148 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/errors.js +8149 silly gunzTarPerm extractEntry node_modules/readable-stream/errors.js +8150 silly gunzTarPerm extractEntry node_modules/retry/test/common.js +8151 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/common.js +8152 silly gunzTarPerm extractEntry node_modules/any-promise/register/es6-promise.js +8153 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/escape.js +8154 silly gunzTarPerm extractEntry node_modules/semver/classes/comparator.js +8155 silly gunzTarPerm extractEntry node_modules/semver/functions/compare-build.js +8156 silly gunzTarPerm extractEntry node_modules/cross-spawn/lib/util/escape.js +8157 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/event-listener-count.js +8158 silly gunzTarPerm extractEntry node_modules/semver/functions/compare-loose.js +8159 silly gunzTarPerm extractEntry node_modules/semver/functions/compare.js +8160 silly gunzTarPerm extractEntry lib/commands/completion.js +8161 silly gunzTarPerm extractEntry lib/commands/config.js +8162 silly gunzTarPerm extractEntry node_modules/fastq/example.js +8163 silly gunzTarPerm extractEntry node_modules/braces/lib/expand.js +8164 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/configure.js +8165 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/consistent-resolve.js +8166 silly gunzTarPerm extractEntry node_modules/readable-stream/experimentalWarning.js +8167 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/extract_description.js +8168 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/constants.js +8169 silly gunzTarPerm extractEntry node_modules/minizlib/constants.js +8170 silly gunzTarPerm extractEntry node_modules/tar-stream/extract.js +8171 silly gunzTarPerm extractEntry node_modules/tar/lib/extract.js +8172 silly gunzTarPerm extractEntry node_modules/semver/internal/constants.js +8173 silly gunzTarPerm extractEntry node_modules/socks/build/common/constants.js +8174 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/fetch-error.js +8175 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/fetch.js +8176 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/constructors.js +8177 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/container.js +8178 silly gunzTarPerm extractEntry node_modules/pacote/lib/fetcher.js +8179 silly gunzTarPerm extractEntry node_modules/reusify/benchmarks/fib.js +8180 silly gunzTarPerm extractEntry node_modules/color-convert/conversions.js +8181 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/copy-file.js +8182 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/create-config-gypi.js +8183 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/create.js +8184 silly gunzTarPerm extractEntry node_modules/pacote/lib/file.js +8185 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/find-made.js +8186 silly gunzTarPerm extractEntry node_modules/tar/lib/create.js +8187 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/css.js +8188 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-node-directory.js +8189 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-python.js +8190 silly gunzTarPerm extractEntry node_modules/cssesc/cssesc.js +8191 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/da.js +8192 silly gunzTarPerm extractEntry node_modules/safer-buffer/dangerous.js +8193 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/dbcs-codec.js +8194 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/dbcs-data.js +8195 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/de.js +8196 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-visualstudio.js +8197 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/find.js +8198 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/debug.js +8199 silly gunzTarPerm extractEntry node_modules/cli-table3/src/debug.js +8200 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/fix-owner.js +8201 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/fixer.js +8202 silly gunzTarPerm extractEntry node_modules/semver/internal/debug.js +8203 silly gunzTarPerm extractEntry node_modules/debuglog/debuglog.js +8204 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/from-browser.js +8205 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/from.js +8206 silly gunzTarPerm extractEntry lib/commands/dedupe.js +8207 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/deduper.js +8208 silly gunzTarPerm extractEntry lib/utils/fs-utils.js +8209 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/adapters/fs.js +8210 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/deepest-nesting-target.js +8211 silly gunzTarPerm extractEntry node_modules/init-package-json/lib/default-input.js +8212 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/utils/fs.js +8213 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/adapters/fs.js +8214 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/default-opts.js +8215 silly gunzTarPerm extractEntry lib/utils/config/definition.js +8216 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/fs.js +8217 silly gunzTarPerm extractEntry node_modules/cp-file/fs.js +8218 silly gunzTarPerm extractEntry lib/utils/config/definitions.js +8219 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/dep-valid.js +8220 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/fs.js +8221 silly gunzTarPerm extractEntry node_modules/mz/fs.js +8222 silly gunzTarPerm extractEntry lib/commands/deprecate.js +8223 silly gunzTarPerm extractEntry node_modules/treeverse/lib/depth-descent.js +8224 silly gunzTarPerm extractEntry lib/utils/functions.js +8225 silly gunzTarPerm extractEntry node_modules/got/source/utils/get-body-size.js +8226 silly gunzTarPerm extractEntry node_modules/treeverse/lib/depth.js +8227 silly gunzTarPerm extractEntry lib/utils/config/describe-all.js +8228 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/get-options.js +8229 silly gunzTarPerm extractEntry node_modules/got/source/get-response.js +8230 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/destroy.js +8231 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/detail.js +8232 silly gunzTarPerm extractEntry node_modules/dezalgo/dezalgo.js +8233 silly gunzTarPerm extractEntry lib/utils/did-you-mean.js +8234 silly gunzTarPerm extractEntry node_modules/tar/lib/get-write-flag.js +8235 silly gunzTarPerm extractEntry node_modules/cacache/lib/get.js +8236 silly gunzTarPerm extractEntry lib/commands/diff.js +8237 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/diff.js +8238 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/git-host-info.js +8239 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/git-host.js +8240 silly gunzTarPerm extractEntry node_modules/diff/dist/diff.js +8241 silly gunzTarPerm extractEntry node_modules/semver/functions/diff.js +8242 silly gunzTarPerm extractEntry node_modules/pacote/lib/git.js +8243 silly gunzTarPerm extractEntry node_modules/globby/gitignore.js +8244 silly gunzTarPerm extractEntry node_modules/pacote/lib/dir.js +8245 silly gunzTarPerm extractEntry lib/utils/display.js +8246 silly gunzTarPerm extractEntry node_modules/glob/glob.js +8247 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/glob.js +8248 silly gunzTarPerm extractEntry lib/commands/dist-tag.js +8249 silly gunzTarPerm extractEntry node_modules/diff/lib/util/distance-iterator.js +8250 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/glob.js +8251 silly gunzTarPerm extractEntry lib/utils/global-config.js +8252 silly gunzTarPerm extractEntry node_modules/diff/lib/convert/dmp.js +8253 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/dns.js +8254 silly gunzTarPerm extractEntry node_modules/graceful-fs/graceful-fs.js +8255 silly gunzTarPerm extractEntry node_modules/semver/functions/gt.js +8256 silly gunzTarPerm extractEntry node_modules/retry/example/dns.js +8257 silly gunzTarPerm extractEntry lib/commands/docs.js +8258 silly gunzTarPerm extractEntry node_modules/semver/functions/gte.js +8259 silly gunzTarPerm extractEntry node_modules/semver/ranges/gtr.js +8260 silly gunzTarPerm extractEntry lib/commands/doctor.js +8261 silly gunzTarPerm extractEntry node_modules/text-table/example/dotalign.js +8262 silly gunzTarPerm extractEntry node_modules/gauge/lib/has-color.js +8263 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/hash-to-segments.js +8264 silly gunzTarPerm extractEntry node_modules/text-table/test/dotalign.js +8265 silly gunzTarPerm extractEntry node_modules/text-table/example/doubledot.js +8266 silly gunzTarPerm extractEntry node_modules/tar/lib/header.js +8267 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/headers.js +8268 silly gunzTarPerm extractEntry node_modules/text-table/test/doubledot.js +8269 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/edge.js +8270 silly gunzTarPerm extractEntry node_modules/tar-stream/headers.js +8271 silly gunzTarPerm extractEntry node_modules/socks/build/common/helpers.js +8272 silly gunzTarPerm extractEntry lib/commands/edit.js +8273 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/en-short.js +8274 silly gunzTarPerm extractEntry node_modules/tar/lib/high-level-opt.js +8275 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/https_agent.js +8276 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/en.js +8277 silly gunzTarPerm extractEntry node_modules/encoding/lib/encoding.js +8278 silly gunzTarPerm extractEntry node_modules/semver/internal/identifiers.js +8279 silly gunzTarPerm extractEntry node_modules/xtend/immutable.js +8280 silly gunzTarPerm extractEntry node_modules/negotiator/lib/encoding.js +8281 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/end-of-stream.js +8282 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/enforce-clean.js +8283 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/ensureObject.js +8284 silly gunzTarPerm extractEntry node_modules/any-promise/implementation.js +8285 silly gunzTarPerm extractEntry node_modules/function-bind/implementation.js +8286 silly gunzTarPerm extractEntry node_modules/imurmurhash/imurmurhash.js +8287 silly gunzTarPerm extractEntry node_modules/imurmurhash/imurmurhash.min.js +8288 silly gunzTarPerm extractEntry node_modules/cacache/lib/entry-index.js +8289 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/entry.js +8290 silly gunzTarPerm extractEntry node_modules/semver/functions/inc.js +8291 silly gunzTarPerm extractEntry node_modules/node-fetch/lib/index.es.js +8292 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/env-replace.js +8293 silly gunzTarPerm extractEntry node_modules/semver/functions/eq.js +8294 silly gunzTarPerm extractEntry index.js +8295 silly gunzTarPerm extractEntry node_modules/@gar/promisify/index.js +8296 silly gunzTarPerm extractEntry lib/utils/error-message.js +8297 silly gunzTarPerm extractEntry node_modules/gauge/lib/error.js +8298 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/index.js +8299 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/index.js +8300 silly gunzTarPerm extractEntry node_modules/readable-stream/errors-browser.js +8301 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/errors.js +8302 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/errors.js +8303 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/errors.js +8304 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/errors.js +8305 silly gunzTarPerm extractEntry node_modules/readable-stream/errors.js +8306 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/translations/es.js +8307 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/escape.js +8308 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/index.js +8309 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/types/index.js +8310 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/event-listener-count.js +8311 silly gunzTarPerm extractEntry lib/commands/exec.js +8312 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/exit-code.js +8313 silly gunzTarPerm extractEntry lib/utils/exit-handler.js +8314 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/utils/index.js +8315 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/index.js +8316 silly gunzTarPerm extractEntry node_modules/readable-stream/experimentalWarning.js +8317 silly gunzTarPerm extractEntry lib/utils/explain-dep.js +8318 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/types/index.js +8319 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/index.js +8320 silly gunzTarPerm extractEntry lib/utils/explain-eresolve.js +8321 silly gunzTarPerm extractEntry lib/commands/explain.js +8322 silly gunzTarPerm extractEntry lib/commands/explore.js +8323 silly gunzTarPerm extractEntry node_modules/promzard/test/exports.js +8324 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/index.js +8325 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/types/index.js +8326 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/extendStringPrototype.js +8327 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/extract_description.js +8328 silly gunzTarPerm extractEntry node_modules/tar/lib/extract.js +8329 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/file-url-to-path/index.js +8330 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/index.js +8331 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/index.js +8332 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdir/index.js +8333 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/lib/factory.js +8334 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/src/factory.js +8335 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/rm/index.js +8336 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/index.js +8337 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/index.js +8338 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/lib/index.js +8339 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/fetch-error.js +8340 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/fetch.js +8341 silly gunzTarPerm extractEntry node_modules/pacote/lib/fetcher.js +8342 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/file-exists.js +8343 silly gunzTarPerm extractEntry node_modules/pacote/lib/file.js +8344 silly gunzTarPerm extractEntry lib/commands/find-dupes.js +8345 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/lib/index.js +8346 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/lib/index.js +8347 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/dist/index.js +8348 silly gunzTarPerm extractEntry node_modules/@szmarczak/http-timer/source/index.js +8349 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.js +8350 silly gunzTarPerm extractEntry node_modules/@xpack/cmd-shim/index.js +8351 silly gunzTarPerm extractEntry node_modules/@xpack/es6-promisifier/index.js +8352 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/index.js +8353 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/index.js +8354 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.js +8355 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/find-made.js +8356 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.js +8357 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.js +8358 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.js +8359 silly gunzTarPerm extractEntry node_modules/any-promise/index.js +8360 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-node-directory.js +8361 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-python.js +8362 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/find-visualstudio.js +8363 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/find.js +8364 silly gunzTarPerm extractEntry node_modules/aproba/index.js +8365 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/index.js +8366 silly gunzTarPerm extractEntry node_modules/bin-links/lib/fix-bin.js +8367 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/fix-owner.js +8368 silly gunzTarPerm extractEntry node_modules/array-union/index.js +8369 silly gunzTarPerm extractEntry node_modules/balanced-match/index.js +8370 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/fixer.js +8371 silly gunzTarPerm extractEntry lib/utils/config/flatten.js +8372 silly gunzTarPerm extractEntry node_modules/base64-js/index.js +8373 silly gunzTarPerm extractEntry node_modules/bl/node_modules/safe-buffer/index.js +8374 silly gunzTarPerm extractEntry node_modules/promzard/test/fn.js +8375 silly gunzTarPerm extractEntry lib/utils/format-bytes.js +8376 silly gunzTarPerm extractEntry node_modules/brace-expansion/index.js +8377 silly gunzTarPerm extractEntry node_modules/braces/index.js +8378 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/format-diff.js +8379 silly gunzTarPerm extractEntry lib/utils/format-search-stream.js +8380 silly gunzTarPerm extractEntry node_modules/buffer-alloc-unsafe/index.js +8381 silly gunzTarPerm extractEntry node_modules/buffer-alloc/index.js +8382 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/from-browser.js +8383 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/from-path.js +8384 silly gunzTarPerm extractEntry node_modules/buffer-crc32/index.js +8385 silly gunzTarPerm extractEntry node_modules/buffer-fill/index.js +8386 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/from.js +8387 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/fs.js +8388 silly gunzTarPerm extractEntry node_modules/buffer/index.js +8389 silly gunzTarPerm extractEntry node_modules/builtins/index.js +8390 silly gunzTarPerm extractEntry lib/commands/fund.js +8391 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/funding.js +8392 silly gunzTarPerm extractEntry node_modules/cacache/lib/index.js +8393 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/index.js +8394 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/gather-dep-set.js +8395 silly gunzTarPerm extractEntry node_modules/@colors/colors/themes/generic-logging.js +8396 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/lowercase-keys/index.js +8397 silly gunzTarPerm extractEntry node_modules/cacheable-request/src/index.js +8398 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/get-bin-from-manifest.js +8399 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/get-dep-spec.js +8400 silly gunzTarPerm extractEntry lib/utils/get-identity.js +8401 silly gunzTarPerm extractEntry node_modules/bin-links/lib/get-node-modules.js +8402 silly gunzTarPerm extractEntry node_modules/ci-info/index.js +8403 silly gunzTarPerm extractEntry node_modules/clean-stack/index.js +8404 silly gunzTarPerm extractEntry node_modules/clone-response/src/index.js +8405 silly gunzTarPerm extractEntry node_modules/color-support/index.js +8406 silly gunzTarPerm extractEntry node_modules/commander/index.js +8407 silly gunzTarPerm extractEntry node_modules/concat-map/index.js +8408 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/get-options.js +8409 silly gunzTarPerm extractEntry node_modules/bin-links/lib/get-paths.js +8410 silly gunzTarPerm extractEntry node_modules/console-control-strings/index.js +8411 silly gunzTarPerm extractEntry node_modules/cp-file/index.js +8412 silly gunzTarPerm extractEntry node_modules/cross-spawn/index.js +8413 silly gunzTarPerm extractEntry node_modules/debug/src/index.js +8414 silly gunzTarPerm extractEntry node_modules/decompress-response/index.js +8415 silly gunzTarPerm extractEntry node_modules/bin-links/lib/get-prefix.js +8416 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/get-workspace-nodes.js +8417 silly gunzTarPerm extractEntry node_modules/decompress-tar/index.js +8418 silly gunzTarPerm extractEntry lib/workspaces/get-workspaces.js +8419 silly gunzTarPerm extractEntry node_modules/tar/lib/get-write-flag.js +8420 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/index.js +8421 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/node_modules/file-type/index.js +8422 silly gunzTarPerm extractEntry lib/commands/get.js +8423 silly gunzTarPerm extractEntry node_modules/cacache/lib/get.js +8424 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/getProp.js +8425 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/git-host-info.js +8426 silly gunzTarPerm extractEntry node_modules/decompress-targz/index.js +8427 silly gunzTarPerm extractEntry node_modules/decompress-unzip/index.js +8428 silly gunzTarPerm extractEntry node_modules/decompress-unzip/node_modules/file-type/index.js +8429 silly gunzTarPerm extractEntry node_modules/decompress/index.js +8430 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/index.js +8431 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/git-host.js +8432 silly gunzTarPerm extractEntry node_modules/pacote/lib/git.js +8433 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/node_modules/pify/index.js +8434 silly gunzTarPerm extractEntry node_modules/deep-extend/index.js +8435 silly gunzTarPerm extractEntry node_modules/glob/glob.js +8436 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/glob.js +8437 silly gunzTarPerm extractEntry node_modules/defer-to-connect/dist/index.js +8438 silly gunzTarPerm extractEntry node_modules/del/index.js +8439 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/glob.js +8440 silly gunzTarPerm extractEntry node_modules/graceful-fs/graceful-fs.js +8441 silly gunzTarPerm extractEntry node_modules/semver/functions/gt.js +8442 silly gunzTarPerm extractEntry node_modules/semver/functions/gte.js +8443 silly gunzTarPerm extractEntry node_modules/delegates/index.js +8444 silly gunzTarPerm extractEntry node_modules/delegates/test/index.js +8445 silly gunzTarPerm extractEntry node_modules/semver/ranges/gtr.js +8446 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/guards.js +8447 silly gunzTarPerm extractEntry node_modules/depd/index.js +8448 silly gunzTarPerm extractEntry node_modules/depd/lib/browser/index.js +8449 silly gunzTarPerm extractEntry node_modules/gauge/lib/has-color.js +8450 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/system/has-flag.js +8451 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/index.js +8452 silly gunzTarPerm extractEntry node_modules/dir-glob/index.js +8453 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/hash-to-segments.js +8454 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/hash.js +8455 silly gunzTarPerm extractEntry node_modules/duplexer3/index.js +8456 silly gunzTarPerm extractEntry node_modules/emoji-regex/es2015/index.js +8457 silly gunzTarPerm extractEntry node_modules/tar/lib/header.js +8458 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/headers.js +8459 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.js +8460 silly gunzTarPerm extractEntry node_modules/end-of-stream/index.js +8461 silly gunzTarPerm extractEntry lib/commands/help-search.js +8462 silly gunzTarPerm extractEntry lib/commands/help.js +8463 silly gunzTarPerm extractEntry node_modules/env-paths/index.js +8464 silly gunzTarPerm extractEntry node_modules/err-code/index.js +8465 silly gunzTarPerm extractEntry node_modules/socks/build/common/helpers.js +8466 silly gunzTarPerm extractEntry node_modules/tar/lib/high-level-opt.js +8467 silly gunzTarPerm extractEntry lib/commands/hook.js +8468 silly gunzTarPerm extractEntry node_modules/agentkeepalive/lib/https_agent.js +8469 silly gunzTarPerm extractEntry node_modules/fast-glob/out/index.js +8470 silly gunzTarPerm extractEntry node_modules/fast-glob/out/types/index.js +8471 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/id.js +8472 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/ideal.js +8473 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/index.js +8474 silly gunzTarPerm extractEntry node_modules/fd-slicer/index.js +8475 silly gunzTarPerm extractEntry node_modules/semver/internal/identifiers.js +8476 silly gunzTarPerm extractEntry node_modules/function-bind/implementation.js +8477 silly gunzTarPerm extractEntry node_modules/file-type/index.js +8478 silly gunzTarPerm extractEntry node_modules/fill-range/index.js +8479 silly gunzTarPerm extractEntry node_modules/imurmurhash/imurmurhash.js +8480 silly gunzTarPerm extractEntry node_modules/imurmurhash/imurmurhash.min.js +8481 silly gunzTarPerm extractEntry node_modules/fs-constants/index.js +8482 silly gunzTarPerm extractEntry node_modules/semver/functions/inc.js +8483 silly gunzTarPerm extractEntry node_modules/diff/lib/index.es6.js +8484 silly gunzTarPerm extractEntry node_modules/fs-minipass/index.js +8485 silly gunzTarPerm extractEntry node_modules/fs.realpath/index.js +8486 silly gunzTarPerm extractEntry node_modules/function-bind/index.js +8487 silly gunzTarPerm extractEntry node_modules/function-bind/test/index.js +8488 silly gunzTarPerm extractEntry index.js +8489 silly gunzTarPerm extractEntry lib/utils/config/index.js +8490 silly gunzTarPerm extractEntry node_modules/gauge/lib/index.js +8491 silly gunzTarPerm extractEntry node_modules/get-stream/index.js +8492 silly gunzTarPerm extractEntry node_modules/git-config-path/index.js +8493 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/index.js +8494 silly gunzTarPerm extractEntry node_modules/@gar/promisify/index.js +8495 silly gunzTarPerm extractEntry node_modules/glob-parent/index.js +8496 silly gunzTarPerm extractEntry node_modules/global-dirs/index.js +8497 silly gunzTarPerm extractEntry node_modules/@isaacs/string-locale-compare/index.js +8498 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/index.js +8499 silly gunzTarPerm extractEntry node_modules/globby/index.js +8500 silly gunzTarPerm extractEntry node_modules/got/node_modules/get-stream/index.js +8501 silly gunzTarPerm extractEntry node_modules/got/source/index.js +8502 silly gunzTarPerm extractEntry node_modules/has-unicode/index.js +8503 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/index.js +8504 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/index.js +8505 silly gunzTarPerm extractEntry node_modules/has/src/index.js +8506 silly gunzTarPerm extractEntry node_modules/has/test/index.js +8507 silly gunzTarPerm extractEntry node_modules/@npmcli/ci-detect/lib/index.js +8508 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/index.js +8509 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/index.js +8510 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/index.js +8511 silly gunzTarPerm extractEntry node_modules/@npmcli/disparity-colors/lib/index.js +8512 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.js +8513 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.js +8514 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/index.js +8515 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/index.js +8516 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/rm/index.js +8517 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/index.js +8518 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/index.js +8519 silly gunzTarPerm extractEntry node_modules/humanize-ms/index.js +8520 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/index.js +8521 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.js +8522 silly gunzTarPerm extractEntry node_modules/ieee754/index.js +8523 silly gunzTarPerm extractEntry node_modules/@npmcli/map-workspaces/lib/index.js +8524 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/lib/index.js +8525 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/lib/index.js +8526 silly gunzTarPerm extractEntry node_modules/@npmcli/name-from-folder/index.js +8527 silly gunzTarPerm extractEntry node_modules/ignore-walk/lib/index.js +8528 silly gunzTarPerm extractEntry node_modules/ignore/index.js +8529 silly gunzTarPerm extractEntry node_modules/indent-string/index.js +8530 silly gunzTarPerm extractEntry node_modules/infer-owner/index.js +8531 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/lib/index.js +8532 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/index.js +8533 silly gunzTarPerm extractEntry node_modules/is-ci/index.js +8534 silly gunzTarPerm extractEntry node_modules/is-core-module/index.js +8535 silly gunzTarPerm extractEntry node_modules/is-core-module/test/index.js +8536 silly gunzTarPerm extractEntry node_modules/is-extglob/index.js +8537 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/lib/index.js +8538 silly gunzTarPerm extractEntry node_modules/@npmcli/query/lib/index.js +8539 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.js +8540 silly gunzTarPerm extractEntry node_modules/is-glob/index.js +8541 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.js +8542 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.js +8543 silly gunzTarPerm extractEntry node_modules/is-installed-globally/index.js +8544 silly gunzTarPerm extractEntry node_modules/is-lambda/index.js +8545 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.js +8546 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.js +8547 silly gunzTarPerm extractEntry node_modules/is-natural-number/index.js +8548 silly gunzTarPerm extractEntry node_modules/is-number/index.js +8549 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.js +8550 silly gunzTarPerm extractEntry node_modules/ansi-styles/index.js +8551 silly gunzTarPerm extractEntry node_modules/is-path-cwd/index.js +8552 silly gunzTarPerm extractEntry node_modules/is-path-inside/index.js +8553 silly gunzTarPerm extractEntry node_modules/aproba/index.js +8554 silly gunzTarPerm extractEntry node_modules/archy/index.js +8555 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/index.js +8556 silly gunzTarPerm extractEntry node_modules/balanced-match/index.js +8557 silly gunzTarPerm extractEntry node_modules/is-stream/index.js +8558 silly gunzTarPerm extractEntry node_modules/is-windows/index.js +8559 silly gunzTarPerm extractEntry node_modules/bin-links/lib/index.js +8560 silly gunzTarPerm extractEntry node_modules/binary-extensions/index.js +8561 silly gunzTarPerm extractEntry node_modules/isarray/index.js +8562 silly gunzTarPerm extractEntry node_modules/isexe/index.js +8563 silly gunzTarPerm extractEntry node_modules/brace-expansion/index.js +8564 silly gunzTarPerm extractEntry node_modules/builtins/index.js +8565 silly gunzTarPerm extractEntry node_modules/cacache/lib/index.js +8566 silly gunzTarPerm extractEntry node_modules/chalk/source/index.js +8567 silly gunzTarPerm extractEntry node_modules/json-buffer/index.js +8568 silly gunzTarPerm extractEntry node_modules/json-buffer/test/index.js +8569 silly gunzTarPerm extractEntry node_modules/cidr-regex/index.js +8570 silly gunzTarPerm extractEntry node_modules/clean-stack/index.js +8571 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/index.js +8572 silly gunzTarPerm extractEntry node_modules/keyv/src/index.js +8573 silly gunzTarPerm extractEntry node_modules/cli-columns/index.js +8574 silly gunzTarPerm extractEntry node_modules/cli-table3/index.js +8575 silly gunzTarPerm extractEntry node_modules/latest-version/index.js +8576 silly gunzTarPerm extractEntry node_modules/lowercase-keys/index.js +8577 silly gunzTarPerm extractEntry node_modules/cmd-shim/lib/index.js +8578 silly gunzTarPerm extractEntry node_modules/color-convert/index.js +8579 silly gunzTarPerm extractEntry node_modules/lru-cache/index.js +8580 silly gunzTarPerm extractEntry node_modules/make-dir/index.js +8581 silly gunzTarPerm extractEntry node_modules/color-name/index.js +8582 silly gunzTarPerm extractEntry node_modules/color-support/index.js +8583 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/index.js +8584 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/index.js +8585 silly gunzTarPerm extractEntry node_modules/columnify/index.js +8586 silly gunzTarPerm extractEntry node_modules/common-ancestor-path/index.js +8587 silly gunzTarPerm extractEntry node_modules/merge2/index.js +8588 silly gunzTarPerm extractEntry node_modules/micromatch/index.js +8589 silly gunzTarPerm extractEntry node_modules/concat-map/index.js +8590 silly gunzTarPerm extractEntry node_modules/console-control-strings/index.js +8591 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/index.js +8592 silly gunzTarPerm extractEntry node_modules/debug/src/index.js +8593 silly gunzTarPerm extractEntry node_modules/mimic-response/index.js +8594 silly gunzTarPerm extractEntry node_modules/minimist/index.js +8595 silly gunzTarPerm extractEntry node_modules/defaults/index.js +8596 silly gunzTarPerm extractEntry node_modules/delegates/index.js +8597 silly gunzTarPerm extractEntry node_modules/minipass-collect/index.js +8598 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/index.js +8599 silly gunzTarPerm extractEntry node_modules/delegates/test/index.js +8600 silly gunzTarPerm extractEntry node_modules/depd/index.js +8601 silly gunzTarPerm extractEntry node_modules/minipass-flush/index.js +8602 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/index.js +8603 silly gunzTarPerm extractEntry node_modules/depd/lib/browser/index.js +8604 silly gunzTarPerm extractEntry node_modules/depd/lib/compat/index.js +8605 silly gunzTarPerm extractEntry node_modules/diff/lib/index.js +8606 silly gunzTarPerm extractEntry node_modules/emoji-regex/es2015/index.js +8607 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/index.js +8608 silly gunzTarPerm extractEntry node_modules/minipass-sized/index.js +8609 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.js +8610 silly gunzTarPerm extractEntry node_modules/env-paths/index.js +8611 silly gunzTarPerm extractEntry node_modules/minipass/index.js +8612 silly gunzTarPerm extractEntry node_modules/minizlib/index.js +8613 silly gunzTarPerm extractEntry node_modules/err-code/index.js +8614 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/index.js +8615 silly gunzTarPerm extractEntry node_modules/fs-minipass/index.js +8616 silly gunzTarPerm extractEntry node_modules/fs.realpath/index.js +8617 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/index.js +8618 silly gunzTarPerm extractEntry node_modules/mkdirp/index.js +8619 silly gunzTarPerm extractEntry node_modules/function-bind/index.js +8620 silly gunzTarPerm extractEntry node_modules/function-bind/test/index.js +8621 silly gunzTarPerm extractEntry node_modules/ms/index.js +8622 silly gunzTarPerm extractEntry node_modules/mz/index.js +8623 silly gunzTarPerm extractEntry node_modules/gauge/lib/index.js +8624 silly gunzTarPerm extractEntry node_modules/has-flag/index.js +8625 silly gunzTarPerm extractEntry node_modules/negotiator/index.js +8626 silly gunzTarPerm extractEntry node_modules/nested-error-stacks/index.js +8627 silly gunzTarPerm extractEntry node_modules/has-unicode/index.js +8628 silly gunzTarPerm extractEntry node_modules/has/src/index.js +8629 silly gunzTarPerm extractEntry node_modules/node-fetch/lib/index.js +8630 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/index.js +8631 silly gunzTarPerm extractEntry node_modules/has/test/index.js +8632 silly gunzTarPerm extractEntry node_modules/hosted-git-info/lib/index.js +8633 silly gunzTarPerm extractEntry node_modules/normalize-url/index.js +8634 silly gunzTarPerm extractEntry node_modules/npm-bundled/index.js +8635 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/index.js +8636 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.js +8637 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.js +8638 silly gunzTarPerm extractEntry node_modules/humanize-ms/index.js +8639 silly gunzTarPerm extractEntry node_modules/npm-install-checks/lib/index.js +8640 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/index.js +8641 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/index.js +8642 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.js +8643 silly gunzTarPerm extractEntry node_modules/npm-packlist/bin/index.js +8644 silly gunzTarPerm extractEntry node_modules/npm-packlist/lib/index.js +8645 silly gunzTarPerm extractEntry node_modules/ignore-walk/lib/index.js +8646 silly gunzTarPerm extractEntry node_modules/indent-string/index.js +8647 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/lib/index.js +8648 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/index.js +8649 silly gunzTarPerm extractEntry node_modules/infer-owner/index.js +8650 silly gunzTarPerm extractEntry node_modules/ip-regex/index.js +8651 silly gunzTarPerm extractEntry node_modules/is-cidr/index.js +8652 silly gunzTarPerm extractEntry node_modules/is-core-module/index.js +8653 silly gunzTarPerm extractEntry node_modules/object-assign/index.js +8654 silly gunzTarPerm extractEntry node_modules/p-cancelable/index.js +8655 silly gunzTarPerm extractEntry node_modules/is-core-module/test/index.js +8656 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.js +8657 silly gunzTarPerm extractEntry node_modules/p-event/index.js +8658 silly gunzTarPerm extractEntry node_modules/p-finally/index.js +8659 silly gunzTarPerm extractEntry node_modules/is-lambda/index.js +8660 silly gunzTarPerm extractEntry node_modules/isexe/index.js +8661 silly gunzTarPerm extractEntry node_modules/p-map/index.js +8662 silly gunzTarPerm extractEntry node_modules/p-timeout/index.js +8663 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/index.js +8664 silly gunzTarPerm extractEntry node_modules/json-stringify-nice/index.js +8665 silly gunzTarPerm extractEntry node_modules/package-json/index.js +8666 silly gunzTarPerm extractEntry node_modules/pacote/lib/index.js +8667 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.js +8668 silly gunzTarPerm extractEntry node_modules/just-diff/index.js +8669 silly gunzTarPerm extractEntry node_modules/parse-git-config/index.js +8670 silly gunzTarPerm extractEntry node_modules/path-is-absolute/index.js +8671 silly gunzTarPerm extractEntry node_modules/libnpmaccess/lib/index.js +8672 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/index.js +8673 silly gunzTarPerm extractEntry node_modules/path-key/index.js +8674 silly gunzTarPerm extractEntry node_modules/path-type/index.js +8675 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/index.js +8676 silly gunzTarPerm extractEntry node_modules/libnpmfund/lib/index.js +8677 silly gunzTarPerm extractEntry node_modules/pend/index.js +8678 silly gunzTarPerm extractEntry node_modules/picomatch/index.js +8679 silly gunzTarPerm extractEntry node_modules/libnpmhook/lib/index.js +8680 silly gunzTarPerm extractEntry node_modules/libnpmorg/lib/index.js +8681 silly gunzTarPerm extractEntry node_modules/pify/index.js +8682 silly gunzTarPerm extractEntry node_modules/pinkie-promise/index.js +8683 silly gunzTarPerm extractEntry node_modules/libnpmpack/lib/index.js +8684 silly gunzTarPerm extractEntry node_modules/libnpmpublish/lib/index.js +8685 silly gunzTarPerm extractEntry node_modules/libnpmsearch/lib/index.js +8686 silly gunzTarPerm extractEntry node_modules/libnpmteam/lib/index.js +8687 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/index.js +8688 silly gunzTarPerm extractEntry node_modules/pinkie/index.js +8689 silly gunzTarPerm extractEntry node_modules/prepend-http/index.js +8690 silly gunzTarPerm extractEntry node_modules/lru-cache/index.js +8691 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/index.js +8692 silly gunzTarPerm extractEntry node_modules/proc-log/lib/index.js +8693 silly gunzTarPerm extractEntry node_modules/process-nextick-args/index.js +8694 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/index.js +8695 silly gunzTarPerm extractEntry node_modules/minipass-collect/index.js +8696 silly gunzTarPerm extractEntry node_modules/promise-retry/index.js +8697 silly gunzTarPerm extractEntry node_modules/pump/index.js +8698 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/index.js +8699 silly gunzTarPerm extractEntry node_modules/minipass-flush/index.js +8700 silly gunzTarPerm extractEntry node_modules/queue-microtask/index.js +8701 silly gunzTarPerm extractEntry node_modules/rc/index.js +8702 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/index.js +8703 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/index.js +8704 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/index.js +8705 silly gunzTarPerm extractEntry node_modules/registry-auth-token/index.js +8706 silly gunzTarPerm extractEntry node_modules/minipass-sized/index.js +8707 silly gunzTarPerm extractEntry node_modules/minipass/index.js +8708 silly gunzTarPerm extractEntry node_modules/registry-url/index.js +8709 silly gunzTarPerm extractEntry node_modules/responselike/src/index.js +8710 silly gunzTarPerm extractEntry node_modules/minizlib/index.js +8711 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/index.js +8712 silly gunzTarPerm extractEntry node_modules/mkdirp/index.js +8713 silly gunzTarPerm extractEntry node_modules/ms/index.js +8714 silly gunzTarPerm extractEntry node_modules/retry/index.js +8715 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/index.js +8716 silly gunzTarPerm extractEntry node_modules/negotiator/index.js +8717 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/index.js +8718 silly gunzTarPerm extractEntry node_modules/run-parallel/index.js +8719 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.js +8720 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/index.js +8721 silly gunzTarPerm extractEntry node_modules/npm-bundled/index.js +8722 silly gunzTarPerm extractEntry node_modules/seek-bzip/lib/index.js +8723 silly gunzTarPerm extractEntry node_modules/semver-diff/index.js +8724 silly gunzTarPerm extractEntry node_modules/npm-install-checks/lib/index.js +8725 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/index.js +8726 silly gunzTarPerm extractEntry node_modules/semver/classes/index.js +8727 silly gunzTarPerm extractEntry node_modules/semver/index.js +8728 silly gunzTarPerm extractEntry node_modules/npm-packlist/bin/index.js +8729 silly gunzTarPerm extractEntry node_modules/npm-packlist/lib/index.js +8730 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/index.js +8731 silly gunzTarPerm extractEntry node_modules/set-blocking/index.js +8732 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/lib/index.js +8733 silly gunzTarPerm extractEntry node_modules/npm-profile/lib/index.js +8734 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/lib/index.js +8735 silly gunzTarPerm extractEntry node_modules/p-map/index.js +8736 silly gunzTarPerm extractEntry node_modules/shebang-command/index.js +8737 silly gunzTarPerm extractEntry node_modules/shebang-regex/index.js +8738 silly gunzTarPerm extractEntry node_modules/pacote/lib/index.js +8739 silly gunzTarPerm extractEntry node_modules/parse-conflict-json/lib/index.js +8740 silly gunzTarPerm extractEntry node_modules/signal-exit/index.js +8741 silly gunzTarPerm extractEntry node_modules/slash/index.js +8742 silly gunzTarPerm extractEntry node_modules/path-is-absolute/index.js +8743 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/index.js +8744 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.js +8745 silly gunzTarPerm extractEntry node_modules/socks/build/index.js +8746 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/index.js +8747 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/index.js +8748 silly gunzTarPerm extractEntry node_modules/proc-log/lib/index.js +8749 silly gunzTarPerm extractEntry node_modules/spdx-correct/index.js +8750 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/index.js +8751 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/index.js +8752 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/test/index.js +8753 silly gunzTarPerm extractEntry node_modules/ssri/lib/index.js +8754 silly gunzTarPerm extractEntry node_modules/string-width/index.js +8755 silly gunzTarPerm extractEntry node_modules/promise-call-limit/index.js +8756 silly gunzTarPerm extractEntry node_modules/promise-retry/index.js +8757 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.js +8758 silly gunzTarPerm extractEntry node_modules/strip-dirs/index.js +8759 silly gunzTarPerm extractEntry node_modules/promzard/example/index.js +8760 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/index.js +8761 silly gunzTarPerm extractEntry node_modules/read-cmd-shim/lib/index.js +8762 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/index.js +8763 silly gunzTarPerm extractEntry node_modules/strip-json-comments/index.js +8764 silly gunzTarPerm extractEntry node_modules/tar-stream/index.js +8765 silly gunzTarPerm extractEntry node_modules/retry/index.js +8766 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/safe-buffer/index.js +8767 silly gunzTarPerm extractEntry node_modules/tar/index.js +8768 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/index.js +8769 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.js +8770 silly gunzTarPerm extractEntry node_modules/thenify-all/index.js +8771 silly gunzTarPerm extractEntry node_modules/thenify/index.js +8772 silly gunzTarPerm extractEntry node_modules/semver/classes/index.js +8773 silly gunzTarPerm extractEntry node_modules/semver/index.js +8774 silly gunzTarPerm extractEntry node_modules/through/index.js +8775 silly gunzTarPerm extractEntry node_modules/through/test/index.js +8776 silly gunzTarPerm extractEntry node_modules/to-buffer/index.js +8777 silly gunzTarPerm extractEntry node_modules/to-readable-stream/index.js +8778 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/index.js +8779 silly gunzTarPerm extractEntry node_modules/set-blocking/index.js +8780 silly gunzTarPerm extractEntry node_modules/to-regex-range/index.js +8781 silly gunzTarPerm extractEntry node_modules/tr46/index.js +8782 silly gunzTarPerm extractEntry node_modules/signal-exit/index.js +8783 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.js +8784 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/index.js +8785 silly gunzTarPerm extractEntry node_modules/unique-filename/index.js +8786 silly gunzTarPerm extractEntry node_modules/unique-filename/test/index.js +8787 silly gunzTarPerm extractEntry node_modules/unique-slug/index.js +8788 silly gunzTarPerm extractEntry node_modules/socks/build/index.js +8789 silly gunzTarPerm extractEntry node_modules/spdx-correct/index.js +8790 silly gunzTarPerm extractEntry node_modules/unique-slug/test/index.js +8791 silly gunzTarPerm extractEntry node_modules/url-parse-lax/index.js +8792 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/index.js +8793 silly gunzTarPerm extractEntry node_modules/ssri/lib/index.js +8794 silly gunzTarPerm extractEntry node_modules/string-width/index.js +8795 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.js +8796 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/index.js +8797 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/lib/index.js +8798 silly gunzTarPerm extractEntry node_modules/supports-color/index.js +8799 silly gunzTarPerm extractEntry node_modules/tar/index.js +8800 silly gunzTarPerm extractEntry node_modules/webidl-conversions/lib/index.js +8801 silly gunzTarPerm extractEntry node_modules/wscript-avoider/index.js +8802 silly gunzTarPerm extractEntry node_modules/text-table/index.js +8803 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/lib/index.js +8804 silly gunzTarPerm extractEntry node_modules/yauzl/index.js +8805 silly gunzTarPerm extractEntry node_modules/is-natural-number/index.jsnext.js +8806 silly gunzTarPerm extractEntry node_modules/err-code/index.umd.js +8807 silly gunzTarPerm extractEntry node_modules/inflight/inflight.js +8808 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/src/index.js +8809 silly gunzTarPerm extractEntry node_modules/treeverse/lib/index.js +8810 silly gunzTarPerm extractEntry node_modules/promise-inflight/inflight.js +8811 silly gunzTarPerm extractEntry node_modules/inherits/inherits_browser.js +8812 silly gunzTarPerm extractEntry node_modules/unique-filename/index.js +8813 silly gunzTarPerm extractEntry node_modules/unique-filename/test/index.js +8814 silly gunzTarPerm extractEntry node_modules/inherits/inherits.js +8815 silly gunzTarPerm extractEntry node_modules/ini/ini.js +8816 silly gunzTarPerm extractEntry node_modules/unique-slug/index.js +8817 silly gunzTarPerm extractEntry node_modules/unique-slug/test/index.js +8818 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/index.js +8819 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/lib/index.js +8820 silly gunzTarPerm extractEntry node_modules/parse-git-config/node_modules/ini/ini.js +8821 silly gunzTarPerm extractEntry node_modules/rc/node_modules/ini/ini.js +8822 silly gunzTarPerm extractEntry node_modules/rc/test/ini.js +8823 silly gunzTarPerm extractEntry lib/xpm/init.js +8824 silly gunzTarPerm extractEntry node_modules/walk-up-path/index.js +8825 silly gunzTarPerm extractEntry node_modules/wcwidth/index.js +8826 silly gunzTarPerm extractEntry lib/xpm/install.js +8827 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/install.js +8828 silly gunzTarPerm extractEntry node_modules/wcwidth/test/index.js +8829 silly gunzTarPerm extractEntry node_modules/write-file-atomic/lib/index.js +8830 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/internal.js +8831 silly gunzTarPerm extractEntry node_modules/semver/ranges/intersects.js +8832 silly gunzTarPerm extractEntry node_modules/err-code/index.umd.js +8833 silly gunzTarPerm extractEntry node_modules/inflight/inflight.js +8834 silly gunzTarPerm extractEntry node_modules/ip/lib/ip.js +8835 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/is-clean.js +8836 silly gunzTarPerm extractEntry node_modules/promise-inflight/inflight.js +8837 silly gunzTarPerm extractEntry node_modules/inherits/inherits_browser.js +8838 silly gunzTarPerm extractEntry node_modules/got/source/utils/is-form-data.js +8839 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/is-package-bin.js +8840 silly gunzTarPerm extractEntry node_modules/inherits/inherits.js +8841 silly gunzTarPerm extractEntry node_modules/ini/lib/ini.js +8842 silly gunzTarPerm extractEntry node_modules/promzard/example/npm-init/init-input.js +8843 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/is-server-package.js +8844 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/is-windows.js +8845 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/is.js +8846 silly gunzTarPerm extractEntry node_modules/init-package-json/lib/init-package-json.js +8847 silly gunzTarPerm extractEntry node_modules/yallist/iterator.js +8848 silly gunzTarPerm extractEntry node_modules/jsonparse/jsonparse.js +8849 silly gunzTarPerm extractEntry lib/commands/init.js +8850 silly gunzTarPerm extractEntry node_modules/promzard/example/npm-init/init.js +8851 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/key.js +8852 silly gunzTarPerm extractEntry node_modules/got/source/known-hook-events.js +8853 silly gunzTarPerm extractEntry lib/commands/install-ci-test.js +8854 silly gunzTarPerm extractEntry lib/commands/install-test.js +8855 silly gunzTarPerm extractEntry node_modules/minimist/test/kv_short.js +8856 silly gunzTarPerm extractEntry node_modules/negotiator/lib/language.js +8857 silly gunzTarPerm extractEntry lib/commands/install.js +8858 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/install.js +8859 silly gunzTarPerm extractEntry node_modules/tar/lib/large-numbers.js +8860 silly gunzTarPerm extractEntry node_modules/graceful-fs/legacy-streams.js +8861 silly gunzTarPerm extractEntry node_modules/ignore/legacy.js +8862 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/install.js +8863 silly gunzTarPerm extractEntry lib/utils/completion/installed-deep.js +8864 silly gunzTarPerm extractEntry node_modules/any-promise/register/lie.js +8865 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/lines-to-revs.js +8866 silly gunzTarPerm extractEntry lib/xpm/link.js +8867 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.browser.esm.js +8868 silly gunzTarPerm extractEntry lib/utils/completion/installed-shallow.js +8869 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/internal.js +8870 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.browser.min.js +8871 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.browser.umd.js +8872 silly gunzTarPerm extractEntry node_modules/liquidjs/bin/liquid.js +8873 silly gunzTarPerm extractEntry node_modules/semver/ranges/intersects.js +8874 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/inventory.js +8875 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.node.cjs.js +8876 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.node.esm.js +8877 silly gunzTarPerm extractEntry node_modules/ip/lib/ip.js +8878 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/is-clean.js +8879 silly gunzTarPerm extractEntry lib/xpm/list.js +8880 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/list.js +8881 silly gunzTarPerm extractEntry node_modules/tar/lib/list.js +8882 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/is-package-bin.js +8883 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/is-server-package.js +8884 silly gunzTarPerm extractEntry node_modules/any-promise/loader.js +8885 silly gunzTarPerm extractEntry node_modules/npmlog/lib/log.js +8886 silly gunzTarPerm extractEntry lib/utils/is-windows.js +8887 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/is-windows.js +8888 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/lib/logger.js +8889 silly gunzTarPerm extractEntry node_modules/bin-links/lib/is-windows.js +8890 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/is-windows.js +8891 silly gunzTarPerm extractEntry node_modules/minimist/test/long.js +8892 silly gunzTarPerm extractEntry node_modules/semver/functions/lt.js +8893 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/is.js +8894 silly gunzTarPerm extractEntry node_modules/yallist/iterator.js +8895 silly gunzTarPerm extractEntry node_modules/semver/functions/lte.js +8896 silly gunzTarPerm extractEntry node_modules/semver/ranges/ltr.js +8897 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/json.js +8898 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/json.js +8899 silly gunzTarPerm extractEntry lib/main-dev.js +8900 silly gunzTarPerm extractEntry lib/main.js +8901 silly gunzTarPerm extractEntry node_modules/jsonparse/jsonparse.js +8902 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/key.js +8903 silly gunzTarPerm extractEntry node_modules/semver/functions/major.js +8904 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/make_warning.js +8905 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/make-error.js +8906 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/make-spawn-args.js +8907 silly gunzTarPerm extractEntry node_modules/negotiator/lib/language.js +8908 silly gunzTarPerm extractEntry node_modules/tar/lib/large-numbers.js +8909 silly gunzTarPerm extractEntry node_modules/concat-map/example/map.js +8910 silly gunzTarPerm extractEntry node_modules/concat-map/test/map.js +8911 silly gunzTarPerm extractEntry node_modules/cli-table3/src/layout-manager.js +8912 silly gunzTarPerm extractEntry node_modules/graceful-fs/legacy-streams.js +8913 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/matchers/matcher.js +8914 silly gunzTarPerm extractEntry node_modules/semver/ranges/max-satisfying.js +8915 silly gunzTarPerm extractEntry lib/auth/legacy.js +8916 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/license.js +8917 silly gunzTarPerm extractEntry lib/lifecycle-cmd.js +8918 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/line.js +8919 silly gunzTarPerm extractEntry node_modules/negotiator/lib/mediaType.js +8920 silly gunzTarPerm extractEntry node_modules/cacache/lib/memoization.js +8921 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/lines-to-revs.js +8922 silly gunzTarPerm extractEntry node_modules/got/source/merge.js +8923 silly gunzTarPerm extractEntry node_modules/semver/ranges/min-satisfying.js +8924 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-bin.js +8925 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-bins.js +8926 silly gunzTarPerm extractEntry node_modules/semver/ranges/min-version.js +8927 silly gunzTarPerm extractEntry node_modules/minimatch/minimatch.js +8928 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/minimatch.js +8929 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/minimatch.js +8930 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-gently.js +8931 silly gunzTarPerm extractEntry node_modules/bin-links/lib/link-mans.js +8932 silly gunzTarPerm extractEntry node_modules/semver/functions/minor.js +8933 silly gunzTarPerm extractEntry node_modules/tar/lib/mkdir.js +8934 silly gunzTarPerm extractEntry lib/commands/link.js +8935 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/link.js +8936 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/mkdirp-manual.js +8937 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/mkdirp-native.js +8938 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/list.js +8939 silly gunzTarPerm extractEntry node_modules/tar/lib/list.js +8940 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdtemp.js +8941 silly gunzTarPerm extractEntry node_modules/tar/lib/mode-fix.js +8942 silly gunzTarPerm extractEntry lib/commands/ll.js +8943 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/load-actual.js +8944 silly gunzTarPerm extractEntry node_modules/isexe/mode.js +8945 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/move-file.js +8946 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +8947 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/load-workspaces.js +8948 silly gunzTarPerm extractEntry node_modules/xtend/mutable.js +8949 silly gunzTarPerm extractEntry node_modules/any-promise/register/native-promise-only.js +8950 silly gunzTarPerm extractEntry lib/utils/log-file.js +8951 silly gunzTarPerm extractEntry lib/utils/log-shim.js +8952 silly gunzTarPerm extractEntry node_modules/semver/functions/neq.js +8953 silly gunzTarPerm extractEntry node_modules/rc/test/nested-env-vars.js +8954 silly gunzTarPerm extractEntry node_modules/npmlog/lib/log.js +8955 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/logging.js +8956 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/nobin.js +8957 silly gunzTarPerm extractEntry node_modules/node-gyp/bin/node-gyp.js +8958 silly gunzTarPerm extractEntry lib/commands/logout.js +8959 silly gunzTarPerm extractEntry lib/commands/ls.js +8960 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/node-gyp.js +8961 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/node.js +8962 silly gunzTarPerm extractEntry node_modules/semver/functions/lt.js +8963 silly gunzTarPerm extractEntry node_modules/semver/functions/lte.js +8964 silly gunzTarPerm extractEntry node_modules/debug/src/node.js +8965 silly gunzTarPerm extractEntry node_modules/util-deprecate/node.js +8966 silly gunzTarPerm extractEntry node_modules/semver/ranges/ltr.js +8967 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/lib/main.js +8968 silly gunzTarPerm extractEntry node_modules/nopt/bin/nopt.js +8969 silly gunzTarPerm extractEntry node_modules/nopt/lib/nopt.js +8970 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/test/main.js +8971 silly gunzTarPerm extractEntry node_modules/semver/functions/major.js +8972 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/make_warning.js +8973 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/make-error.js +8974 silly gunzTarPerm extractEntry node_modules/got/source/normalize-arguments.js +8975 silly gunzTarPerm extractEntry node_modules/tar/lib/normalize-unicode.js +8976 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/make-spawn-args.js +8977 silly gunzTarPerm extractEntry node_modules/bin-links/lib/man-target.js +8978 silly gunzTarPerm extractEntry node_modules/tar/lib/normalize-windows-path.js +8979 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/normalize.js +8980 silly gunzTarPerm extractEntry node_modules/concat-map/example/map.js +8981 silly gunzTarPerm extractEntry node_modules/concat-map/test/map.js +8982 silly gunzTarPerm extractEntry node_modules/npm-package-arg/lib/npa.js +8983 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/npm.js +8984 silly gunzTarPerm extractEntry node_modules/semver/ranges/max-satisfying.js +8985 silly gunzTarPerm extractEntry node_modules/negotiator/lib/mediaType.js +8986 silly gunzTarPerm extractEntry node_modules/minimist/test/num.js +8987 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/object.js +8988 silly gunzTarPerm extractEntry node_modules/cacache/lib/memoization.js +8989 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/merge.js +8990 silly gunzTarPerm extractEntry node_modules/jsonparse/test/offset.js +8991 silly gunzTarPerm extractEntry node_modules/fs.realpath/old.js +8992 silly gunzTarPerm extractEntry node_modules/semver/ranges/min-satisfying.js +8993 silly gunzTarPerm extractEntry node_modules/semver/ranges/min-version.js +8994 silly gunzTarPerm extractEntry node_modules/once/once.js +8995 silly gunzTarPerm extractEntry node_modules/any-promise/optional.js +8996 silly gunzTarPerm extractEntry node_modules/minimatch/minimatch.js +8997 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/minimatch.js +8998 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/options.js +8999 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/opts-arg.js +9000 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/minimatch.js +9001 silly gunzTarPerm extractEntry node_modules/semver/functions/minor.js +9002 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/opts.js +9003 silly gunzTarPerm extractEntry node_modules/semver/ranges/outside.js +9004 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdir.js +9005 silly gunzTarPerm extractEntry node_modules/tar/lib/mkdir.js +9006 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.js +9007 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/owner-sync.js +9008 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/mkdirp-manual.js +9009 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/mkdirp-native.js +9010 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/owner.js +9011 silly gunzTarPerm extractEntry node_modules/tar-stream/pack.js +9012 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdtemp.js +9013 silly gunzTarPerm extractEntry node_modules/tar/lib/mode-fix.js +9014 silly gunzTarPerm extractEntry node_modules/tar/lib/pack.js +9015 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/package-envs.js +9016 silly gunzTarPerm extractEntry node_modules/minimist/test/parse_modified.js +9017 silly gunzTarPerm extractEntry node_modules/semver/internal/parse-options.js +9018 silly gunzTarPerm extractEntry node_modules/isexe/mode.js +9019 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/move-file.js +9020 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.js +9021 silly gunzTarPerm extractEntry node_modules/braces/lib/parse.js +9022 silly gunzTarPerm extractEntry node_modules/archy/examples/multi_line.js +9023 silly gunzTarPerm extractEntry node_modules/archy/test/multi_line.js +9024 silly gunzTarPerm extractEntry node_modules/cross-spawn/lib/parse.js +9025 silly gunzTarPerm extractEntry node_modules/minimist/example/parse.js +9026 silly gunzTarPerm extractEntry node_modules/mute-stream/mute.js +9027 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/namespace.js +9028 silly gunzTarPerm extractEntry node_modules/minimist/test/parse.js +9029 silly gunzTarPerm extractEntry node_modules/picomatch/lib/parse.js +9030 silly gunzTarPerm extractEntry node_modules/semver/functions/neq.js +9031 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/nerf-dart.js +9032 silly gunzTarPerm extractEntry node_modules/semver/functions/parse.js +9033 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/parse.js +9034 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/nesting.js +9035 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/no-tty.js +9036 silly gunzTarPerm extractEntry node_modules/tar/lib/parse.js +9037 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/matchers/partial.js +9038 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/nobin.js +9039 silly gunzTarPerm extractEntry node_modules/node-gyp/bin/node-gyp.js +9040 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/passthrough.js +9041 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/passthrough.js +9042 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/node-gyp.js +9043 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/node.js +9044 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/node.js +9045 silly gunzTarPerm extractEntry node_modules/debug/src/node.js +9046 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/node.js +9047 silly gunzTarPerm extractEntry node_modules/util-deprecate/node.js +9048 silly gunzTarPerm extractEntry node_modules/semver/functions/patch.js +9049 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/path-arg.js +9050 silly gunzTarPerm extractEntry node_modules/archy/test/non_unicode.js +9051 silly gunzTarPerm extractEntry node_modules/nopt/bin/nopt.js +9052 silly gunzTarPerm extractEntry node_modules/tar/lib/path-reservations.js +9053 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/path.js +9054 silly gunzTarPerm extractEntry node_modules/nopt/lib/nopt.js +9055 silly gunzTarPerm extractEntry node_modules/@colors/colors/examples/normal-usage.js +9056 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/path.js +9057 silly gunzTarPerm extractEntry node_modules/minimatch/lib/path.js +9058 silly gunzTarPerm extractEntry node_modules/tar/lib/normalize-unicode.js +9059 silly gunzTarPerm extractEntry node_modules/tar/lib/normalize-windows-path.js +9060 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/pattern.js +9061 silly gunzTarPerm extractEntry node_modules/fast-glob/out/managers/patterns.js +9062 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/normalize.js +9063 silly gunzTarPerm extractEntry node_modules/npm-package-arg/lib/npa.js +9064 silly gunzTarPerm extractEntry node_modules/tar/lib/pax.js +9065 silly gunzTarPerm extractEntry node_modules/picomatch/lib/picomatch.js +9066 silly gunzTarPerm extractEntry bin/npm-cli.js +9067 silly gunzTarPerm extractEntry lib/utils/npm-usage.js +9068 silly gunzTarPerm extractEntry node_modules/any-promise/register/pinkie.js +9069 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/pipeline.js +9070 silly gunzTarPerm extractEntry node_modules/npm-user-validate/npm-user-validate.js +9071 silly gunzTarPerm extractEntry lib/npm.js +9072 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/pipeline.js +9073 silly gunzTarPerm extractEntry node_modules/gauge/lib/plumbing.js +9074 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/policy.js +9075 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/file-url-to-path/polyfill.js +9076 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/npm.js +9077 silly gunzTarPerm extractEntry bin/npx-cli.js +9078 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/polyfill.js +9079 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/mkdir/polyfill.js +9080 silly gunzTarPerm extractEntry lib/auth/oauth.js +9081 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/object.js +9082 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/rm/polyfill.js +9083 silly gunzTarPerm extractEntry node_modules/graceful-fs/polyfills.js +9084 silly gunzTarPerm extractEntry node_modules/jsonparse/test/offset.js +9085 silly gunzTarPerm extractEntry node_modules/fs.realpath/old.js +9086 silly gunzTarPerm extractEntry node_modules/semver/preload.js +9087 silly gunzTarPerm extractEntry node_modules/semver/functions/prerelease.js +9088 silly gunzTarPerm extractEntry node_modules/once/once.js +9089 silly gunzTarPerm extractEntry lib/utils/open-url-prompt.js +9090 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/prettify.js +9091 silly gunzTarPerm extractEntry node_modules/jsonparse/test/primitives.js +9092 silly gunzTarPerm extractEntry lib/utils/open-url.js +9093 silly gunzTarPerm extractEntry node_modules/opener/bin/opener-bin.js +9094 silly gunzTarPerm extractEntry node_modules/node-gyp/test/process-exec-sync.js +9095 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/process-release.js +9096 silly gunzTarPerm extractEntry node_modules/opener/lib/opener.js +9097 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/optional-set.js +9098 silly gunzTarPerm extractEntry node_modules/gauge/lib/process.js +9099 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/options.js +9100 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/options.js +9101 silly gunzTarPerm extractEntry node_modules/gauge/lib/progress-bar.js +9102 silly gunzTarPerm extractEntry node_modules/cp-file/progress-emitter.js +9103 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/opts-arg.js +9104 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/opts.js +9105 silly gunzTarPerm extractEntry node_modules/got/source/progress.js +9106 silly gunzTarPerm extractEntry node_modules/any-promise/register/promise.js +9107 silly gunzTarPerm extractEntry lib/commands/org.js +9108 silly gunzTarPerm extractEntry lib/utils/otplease.js +9109 silly gunzTarPerm extractEntry node_modules/fastq/test/promise.js +9110 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/lib/promisifier.js +9111 silly gunzTarPerm extractEntry lib/commands/outdated.js +9112 silly gunzTarPerm extractEntry node_modules/semver/ranges/outside.js +9113 silly gunzTarPerm extractEntry node_modules/@xpack/es6-promisifier/lib/promisifier.js +9114 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/test/tap/promisify.js +9115 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.js +9116 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/override-resolves.js +9117 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.js +9118 silly gunzTarPerm extractEntry node_modules/minimist/test/proto.js +9119 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/override-set.js +9120 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/owner-sync.js +9121 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/provider.js +9122 silly gunzTarPerm extractEntry node_modules/whatwg-url/lib/public-api.js +9123 silly gunzTarPerm extractEntry lib/commands/owner.js +9124 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/common/owner.js +9125 silly gunzTarPerm extractEntry lib/commands/pack.js +9126 silly gunzTarPerm extractEntry node_modules/tar/lib/pack.js +9127 silly gunzTarPerm extractEntry node_modules/cacache/lib/put.js +9128 silly gunzTarPerm extractEntry node_modules/any-promise/register/q.js +9129 silly gunzTarPerm extractEntry node_modules/fastq/queue.js +9130 silly gunzTarPerm extractEntry node_modules/semver/classes/range.js +9131 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/package-envs.js +9132 silly gunzTarPerm extractEntry lib/package-url-cmd.js +9133 silly gunzTarPerm extractEntry node_modules/diff/lib/util/params.js +9134 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/parse-field.js +9135 silly gunzTarPerm extractEntry node_modules/semver/functions/rcompare.js +9136 silly gunzTarPerm extractEntry node_modules/semver/internal/re.js +9137 silly gunzTarPerm extractEntry node_modules/semver/internal/parse-options.js +9138 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.js +9139 silly gunzTarPerm extractEntry node_modules/tar/lib/read-entry.js +9140 silly gunzTarPerm extractEntry node_modules/read-package-json/lib/read-json.js +9141 silly gunzTarPerm extractEntry node_modules/diff/lib/patch/parse.js +9142 silly gunzTarPerm extractEntry node_modules/semver/functions/parse.js +9143 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/read.js +9144 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/readable-browser.js +9145 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/parse.js +9146 silly gunzTarPerm extractEntry node_modules/readable-stream/readable-browser.js +9147 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +9148 silly gunzTarPerm extractEntry node_modules/tar/lib/parse.js +9149 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/readable.js +9150 silly gunzTarPerm extractEntry node_modules/readable-stream/readable.js +9151 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/parser.js +9152 silly gunzTarPerm extractEntry node_modules/semver/functions/patch.js +9153 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/path-arg.js +9154 silly gunzTarPerm extractEntry node_modules/tar/lib/path-reservations.js +9155 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/readable.js +9156 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/reader.js +9157 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/path.js +9158 silly gunzTarPerm extractEntry node_modules/minimatch/lib/path.js +9159 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/reader.js +9160 silly gunzTarPerm extractEntry node_modules/mz/readline.js +9161 silly gunzTarPerm extractEntry node_modules/cross-spawn/lib/util/readShebang.js +9162 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/rebuild.js +9163 silly gunzTarPerm extractEntry node_modules/tar/lib/pax.js +9164 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/peer-entry-sets.js +9165 silly gunzTarPerm extractEntry node_modules/socks/build/common/receivebuffer.js +9166 silly gunzTarPerm extractEntry node_modules/any-promise/register-shim.js +9167 silly gunzTarPerm extractEntry lib/commands/ping.js +9168 silly gunzTarPerm extractEntry lib/utils/ping.js +9169 silly gunzTarPerm extractEntry node_modules/any-promise/register.js +9170 silly gunzTarPerm extractEntry node_modules/registry-auth-token/registry-url.js +9171 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/pipeline.js +9172 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/pipeline.js +9173 silly gunzTarPerm extractEntry node_modules/pacote/lib/registry.js +9174 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/remote.js +9175 silly gunzTarPerm extractEntry lib/commands/pkg.js +9176 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/place-dep.js +9177 silly gunzTarPerm extractEntry node_modules/gauge/lib/plumbing.js +9178 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/cache/policy.js +9179 silly gunzTarPerm extractEntry node_modules/pacote/lib/remote.js +9180 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/remove.js +9181 silly gunzTarPerm extractEntry node_modules/gauge/lib/render-template.js +9182 silly gunzTarPerm extractEntry node_modules/tar/lib/replace.js +9183 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/cp/polyfill.js +9184 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/rm/polyfill.js +9185 silly gunzTarPerm extractEntry node_modules/got/source/request-as-event-emitter.js +9186 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/request.js +9187 silly gunzTarPerm extractEntry node_modules/graceful-fs/polyfills.js +9188 silly gunzTarPerm extractEntry lib/commands/prefix.js +9189 silly gunzTarPerm extractEntry node_modules/cross-spawn/lib/util/resolveCommand.js +9190 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/response.js +9191 silly gunzTarPerm extractEntry node_modules/semver/preload.js +9192 silly gunzTarPerm extractEntry node_modules/semver/functions/prerelease.js +9193 silly gunzTarPerm extractEntry node_modules/retry/lib/retry_operation.js +9194 silly gunzTarPerm extractEntry node_modules/retry/lib/retry.js +9195 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/prettify.js +9196 silly gunzTarPerm extractEntry node_modules/jsonparse/test/primitives.js +9197 silly gunzTarPerm extractEntry node_modules/reusify/benchmarks/reuseNoCodeFunction.js +9198 silly gunzTarPerm extractEntry node_modules/reusify/reusify.js +9199 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/print-tree.js +9200 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/printable.js +9201 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/revs.js +9202 silly gunzTarPerm extractEntry node_modules/rimraf/rimraf.js +9203 silly gunzTarPerm extractEntry node_modules/node-gyp/test/process-exec-sync.js +9204 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/process-release.js +9205 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/rm.js +9206 silly gunzTarPerm extractEntry node_modules/cacache/lib/rm.js +9207 silly gunzTarPerm extractEntry node_modules/gauge/lib/process.js +9208 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/processor.js +9209 silly gunzTarPerm extractEntry node_modules/semver/functions/rsort.js +9210 silly gunzTarPerm extractEntry node_modules/any-promise/register/rsvp.js +9211 silly gunzTarPerm extractEntry lib/commands/profile.js +9212 silly gunzTarPerm extractEntry node_modules/gauge/lib/progress-bar.js +9213 silly gunzTarPerm extractEntry lib/xpm/run-action.js +9214 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/run-script-pkg.js +9215 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.js +9216 silly gunzTarPerm extractEntry node_modules/promzard/promzard.js +9217 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/run-script.js +9218 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/safe_format.js +9219 silly gunzTarPerm extractEntry lib/commands/prune.js +9220 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/prune.js +9221 silly gunzTarPerm extractEntry node_modules/safer-buffer/safer.js +9222 silly gunzTarPerm extractEntry node_modules/semver/functions/satisfies.js +9223 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/pruner.js +9224 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/pseudo.js +9225 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-codec.js +9226 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-data-generated.js +9227 silly gunzTarPerm extractEntry lib/commands/publish.js +9228 silly gunzTarPerm extractEntry node_modules/libnpmpublish/lib/publish.js +9229 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-data.js +9230 silly gunzTarPerm extractEntry node_modules/picomatch/lib/scan.js +9231 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/scan.js +9232 silly gunzTarPerm extractEntry lib/utils/pulse-till-done.js +9233 silly gunzTarPerm extractEntry node_modules/cacache/lib/put.js +9234 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/bin/semver.js +9235 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/semver.js +9236 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QR8bitByte.js +9237 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRBitBuffer.js +9238 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/bin/semver.js +9239 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/semver.js +9240 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/bin/qrcode-terminal.js +9241 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel.js +9242 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/bin/semver.js +9243 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/semver.js +9244 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRMaskPattern.js +9245 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRMath.js +9246 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRMode.js +9247 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRPolynomial.js +9248 silly gunzTarPerm extractEntry node_modules/semver/bin/semver.js +9249 silly gunzTarPerm extractEntry node_modules/semver/classes/semver.js +9250 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRRSBlock.js +9251 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/vendor/QRCode/QRUtil.js +9252 silly gunzTarPerm extractEntry node_modules/gauge/lib/set-immediate.js +9253 silly gunzTarPerm extractEntry node_modules/gauge/lib/set-interval.js +9254 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/query-selector-all.js +9255 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/set-path.js +9256 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/settings.js +9257 silly gunzTarPerm extractEntry lib/commands/query.js +9258 silly gunzTarPerm extractEntry lib/utils/queryable.js +9259 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/settings.js +9260 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/settings.js +9261 silly gunzTarPerm extractEntry node_modules/fast-glob/out/settings.js +9262 silly gunzTarPerm extractEntry node_modules/minimist/test/short.js +9263 silly gunzTarPerm extractEntry node_modules/npm-audit-report/lib/reporters/quiet.js +9264 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/rainbow.js +9265 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/random.js +9266 silly gunzTarPerm extractEntry node_modules/semver/classes/range.js +9267 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/signal-manager.js +9268 silly gunzTarPerm extractEntry node_modules/signal-exit/signals.js +9269 silly gunzTarPerm extractEntry node_modules/asap/raw.js +9270 silly gunzTarPerm extractEntry node_modules/semver/functions/rcompare.js +9271 silly gunzTarPerm extractEntry node_modules/node-gyp/test/simple-proxy.js +9272 silly gunzTarPerm extractEntry node_modules/semver/ranges/simplify.js +9273 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/smartbuffer.js +9274 silly gunzTarPerm extractEntry node_modules/socks/build/client/socksclient.js +9275 silly gunzTarPerm extractEntry node_modules/semver/internal/re.js +9276 silly gunzTarPerm extractEntry node_modules/tar/lib/read-entry.js +9277 silly gunzTarPerm extractEntry node_modules/semver/functions/sort.js +9278 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/sorter.js +9279 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/read-json.js +9280 silly gunzTarPerm extractEntry node_modules/read-package-json/lib/read-json.js +9281 silly gunzTarPerm extractEntry lib/utils/spawn.js +9282 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/spawn.js +9283 silly gunzTarPerm extractEntry lib/utils/read-user-info.js +9284 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/read.js +9285 silly gunzTarPerm extractEntry node_modules/read/lib/read.js +9286 silly gunzTarPerm extractEntry node_modules/gauge/lib/spin.js +9287 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/state.js +9288 silly gunzTarPerm extractEntry node_modules/readable-stream/readable-browser.js +9289 silly gunzTarPerm extractEntry node_modules/readable-stream/readable.js +9290 silly gunzTarPerm extractEntry node_modules/minimist/test/stop_early.js +9291 silly gunzTarPerm extractEntry node_modules/retry/example/stop.js +9292 silly gunzTarPerm extractEntry node_modules/readdir-scoped-modules/readdir.js +9293 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/realpath.js +9294 silly gunzTarPerm extractEntry lib/commands/rebuild.js +9295 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/rebuild.js +9296 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/rebuild.js +9297 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream-browser.js +9298 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/stream-browser.js +9299 silly gunzTarPerm extractEntry node_modules/socks/build/common/receivebuffer.js +9300 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +9301 silly gunzTarPerm extractEntry node_modules/globby/stream-utils.js +9302 silly gunzTarPerm extractEntry node_modules/pacote/lib/registry.js +9303 silly gunzTarPerm extractEntry lib/utils/reify-finish.js +9304 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/stream.js +9305 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream.js +9306 silly gunzTarPerm extractEntry lib/utils/reify-output.js +9307 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/reify.js +9308 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/stream.js +9309 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/stream.js +9310 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/arborist/reify.js +9311 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/relpath.js +9312 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/stream.js +9313 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/stream.js +9314 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/lib/remote.js +9315 silly gunzTarPerm extractEntry node_modules/pacote/lib/remote.js +9316 silly gunzTarPerm extractEntry node_modules/seek-bzip/lib/stream.js +9317 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +9318 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/remove.js +9319 silly gunzTarPerm extractEntry node_modules/gauge/lib/render-template.js +9320 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/streams.js +9321 silly gunzTarPerm extractEntry node_modules/bl/node_modules/string_decoder/lib/string_decoder.js +9322 silly gunzTarPerm extractEntry lib/utils/replace-info.js +9323 silly gunzTarPerm extractEntry node_modules/tar/lib/replace.js +9324 silly gunzTarPerm extractEntry lib/commands/repo.js +9325 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/request.js +9326 silly gunzTarPerm extractEntry node_modules/string_decoder/lib/string_decoder.js +9327 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/string_decoder/lib/string_decoder.js +9328 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/string.js +9329 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/reset-dep-flags.js +9330 silly gunzTarPerm extractEntry node_modules/minipass-fetch/lib/response.js +9331 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/string.js +9332 silly gunzTarPerm extractEntry node_modules/braces/lib/stringify.js +9333 silly gunzTarPerm extractEntry lib/commands/restart.js +9334 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/retire-path.js +9335 silly gunzTarPerm extractEntry node_modules/tar/lib/strip-absolute-path.js +9336 silly gunzTarPerm extractEntry node_modules/tar/lib/strip-trailing-slashes.js +9337 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/retrieve-tag.js +9338 silly gunzTarPerm extractEntry node_modules/retry/lib/retry_operation.js +9339 silly gunzTarPerm extractEntry node_modules/retry/lib/retry.js +9340 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/revs.js +9341 silly gunzTarPerm extractEntry node_modules/semver/ranges/subset.js +9342 silly gunzTarPerm extractEntry node_modules/jsonparse/test/surrogate.js +9343 silly gunzTarPerm extractEntry node_modules/rimraf/rimraf.js +9344 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/rm.js +9345 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/sync.js +9346 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/providers/sync.js +9347 silly gunzTarPerm extractEntry node_modules/cacache/lib/rm.js +9348 silly gunzTarPerm extractEntry node_modules/just-diff-apply/rollup.config.js +9349 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/sync.js +9350 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/sync.js +9351 silly gunzTarPerm extractEntry node_modules/just-diff/rollup.config.js +9352 silly gunzTarPerm extractEntry lib/commands/root.js +9353 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/sync.js +9354 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/sync.js +9355 silly gunzTarPerm extractEntry node_modules/glob/sync.js +9356 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/sync.js +9357 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/root.js +9358 silly gunzTarPerm extractEntry node_modules/color-convert/route.js +9359 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/sync.js +9360 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/tar-create-options.js +9361 silly gunzTarPerm extractEntry node_modules/fast-glob/out/managers/tasks.js +9362 silly gunzTarPerm extractEntry node_modules/gauge/lib/template-item.js +9363 silly gunzTarPerm extractEntry node_modules/semver/functions/rsort.js +9364 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/run-script-pkg.js +9365 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-addon.js +9366 silly gunzTarPerm extractEntry node_modules/pump/test-browser.js +9367 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-configure-python.js +9368 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-create-config-gypi.js +9369 silly gunzTarPerm extractEntry lib/commands/run-script.js +9370 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/run-script.js +9371 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-download.js +9372 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-accessible-sync.js +9373 silly gunzTarPerm extractEntry node_modules/libnpmexec/lib/run-script.js +9374 silly gunzTarPerm extractEntry node_modules/diff/runtime.js +9375 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-node-directory.js +9376 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-python.js +9377 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/safe_format.js +9378 silly gunzTarPerm extractEntry node_modules/@colors/colors/examples/safe-string.js +9379 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-visualstudio.js +9380 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-forever.js +9381 silly gunzTarPerm extractEntry node_modules/@colors/colors/safe.js +9382 silly gunzTarPerm extractEntry node_modules/safer-buffer/safer.js +9383 silly gunzTarPerm extractEntry lib/auth/saml.js +9384 silly gunzTarPerm extractEntry node_modules/semver/functions/satisfies.js +9385 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-install.js +9386 silly gunzTarPerm extractEntry node_modules/pump/test-node.js +9387 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-codec.js +9388 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-data-generated.js +9389 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-options.js +9390 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-process-release.js +9391 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/sbcs-data.js +9392 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/scan.js +9393 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-retry-operation.js +9394 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-retry-wrap.js +9395 silly gunzTarPerm extractEntry lib/commands/search.js +9396 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/selector.js +9397 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-timeouts.js +9398 silly gunzTarPerm extractEntry node_modules/bl/test/test.js +9399 silly gunzTarPerm extractEntry node_modules/semver/bin/semver.js +9400 silly gunzTarPerm extractEntry node_modules/semver/classes/semver.js +9401 silly gunzTarPerm extractEntry node_modules/encoding/test/test.js +9402 silly gunzTarPerm extractEntry node_modules/err-code/test/test.js +9403 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/sentence.js +9404 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/set-envs.js +9405 silly gunzTarPerm extractEntry node_modules/fastq/test/test.js +9406 silly gunzTarPerm extractEntry node_modules/fd-slicer/test/test.js +9407 silly gunzTarPerm extractEntry node_modules/gauge/lib/set-immediate.js +9408 silly gunzTarPerm extractEntry node_modules/gauge/lib/set-interval.js +9409 silly gunzTarPerm extractEntry node_modules/is-lambda/test.js +9410 silly gunzTarPerm extractEntry node_modules/isarray/test.js +9411 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/set-path.js +9412 silly gunzTarPerm extractEntry lib/commands/set-script.js +9413 silly gunzTarPerm extractEntry node_modules/pend/test.js +9414 silly gunzTarPerm extractEntry node_modules/promise-retry/test/test.js +9415 silly gunzTarPerm extractEntry lib/commands/set.js +9416 silly gunzTarPerm extractEntry node_modules/bin-links/lib/shim-bin.js +9417 silly gunzTarPerm extractEntry node_modules/rc/test/test.js +9418 silly gunzTarPerm extractEntry node_modules/reusify/test.js +9419 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/should-print-patch.js +9420 silly gunzTarPerm extractEntry lib/commands/shrinkwrap.js +9421 silly gunzTarPerm extractEntry node_modules/to-buffer/test.js +9422 silly gunzTarPerm extractEntry node_modules/xtend/test.js +9423 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/shrinkwrap.js +9424 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/shrinkwrap.js +9425 silly gunzTarPerm extractEntry node_modules/safer-buffer/tests.js +9426 silly gunzTarPerm extractEntry node_modules/emoji-regex/es2015/text.js +9427 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/signal-handling.js +9428 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/signal-manager.js +9429 silly gunzTarPerm extractEntry node_modules/emoji-regex/text.js +9430 silly gunzTarPerm extractEntry node_modules/gauge/lib/theme-set.js +9431 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/signals.js +9432 silly gunzTarPerm extractEntry node_modules/signal-exit/signals.js +9433 silly gunzTarPerm extractEntry node_modules/gauge/lib/themes.js +9434 silly gunzTarPerm extractEntry node_modules/got/source/utils/timed-out.js +9435 silly gunzTarPerm extractEntry node_modules/node-gyp/test/simple-proxy.js +9436 silly gunzTarPerm extractEntry node_modules/promzard/test/simple.js +9437 silly gunzTarPerm extractEntry node_modules/semver/ranges/simplify.js +9438 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/tmp.js +9439 silly gunzTarPerm extractEntry node_modules/@xpack/cmd-shim/lib/to-batch-syntax.js +9440 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/small-qrcode.js +9441 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/smartbuffer.js +9442 silly gunzTarPerm extractEntry node_modules/semver/ranges/to-comparators.js +9443 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-base.js +9444 silly gunzTarPerm extractEntry node_modules/socks/build/client/socksclient.js +9445 silly gunzTarPerm extractEntry node_modules/semver/functions/sort.js +9446 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-group.js +9447 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-stream.js +9448 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/sortAscending.js +9449 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/sorter.js +9450 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker.js +9451 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/trailing-slashes.js +9452 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/spawn.js +9453 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/spec-from-lock.js +9454 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/transform.js +9455 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/transform.js +9456 silly gunzTarPerm extractEntry node_modules/jsonparse/examples/twitterfeed.js +9457 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.js +9458 silly gunzTarPerm extractEntry node_modules/tar/lib/types.js +9459 silly gunzTarPerm extractEntry node_modules/gauge/lib/spin.js +9460 silly gunzTarPerm extractEntry lib/auth/sso.js +9461 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/dist/unbzip2-stream.min.js +9462 silly gunzTarPerm extractEntry lib/commands/star.js +9463 silly gunzTarPerm extractEntry lib/commands/stars.js +9464 silly gunzTarPerm extractEntry lib/xpm/uninstall.js +9465 silly gunzTarPerm extractEntry lib/commands/start.js +9466 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/state.js +9467 silly gunzTarPerm extractEntry node_modules/minimist/test/unknown.js +9468 silly gunzTarPerm extractEntry node_modules/tar/lib/unpack.js +9469 silly gunzTarPerm extractEntry lib/commands/stop.js +9470 silly gunzTarPerm extractEntry node_modules/retry/example/stop.js +9471 silly gunzTarPerm extractEntry node_modules/jsonparse/test/unvalid.js +9472 silly gunzTarPerm extractEntry node_modules/tar/lib/update.js +9473 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/stream-browser.js +9474 silly gunzTarPerm extractEntry node_modules/readable-stream/lib/internal/streams/stream.js +9475 silly gunzTarPerm extractEntry node_modules/whatwg-url/lib/URL-impl.js +9476 silly gunzTarPerm extractEntry node_modules/whatwg-url/lib/url-state-machine.js +9477 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/streams.js +9478 silly gunzTarPerm extractEntry node_modules/string_decoder/lib/string_decoder.js +9479 silly gunzTarPerm extractEntry node_modules/got/source/utils/url-to-options.js +9480 silly gunzTarPerm extractEntry node_modules/whatwg-url/lib/URL.js +9481 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/test/string.js +9482 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/string.js +9483 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/use-native.js +9484 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf16.js +9485 silly gunzTarPerm extractEntry node_modules/tar/lib/strip-absolute-path.js +9486 silly gunzTarPerm extractEntry node_modules/tar/lib/strip-trailing-slashes.js +9487 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf32.js +9488 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf7.js +9489 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/stripComments.js +9490 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/styles.js +9491 silly gunzTarPerm extractEntry node_modules/jsonparse/test/utf8.js +9492 silly gunzTarPerm extractEntry node_modules/core-util-is/lib/util.js +9493 silly gunzTarPerm extractEntry node_modules/semver/ranges/subset.js +9494 silly gunzTarPerm extractEntry node_modules/promzard/example/substack-input.js +9495 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/util.js +9496 silly gunzTarPerm extractEntry node_modules/socks/build/common/util.js +9497 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/system/supports-colors.js +9498 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/utils.js +9499 silly gunzTarPerm extractEntry node_modules/braces/lib/utils.js +9500 silly gunzTarPerm extractEntry node_modules/jsonparse/test/surrogate.js +9501 silly gunzTarPerm extractEntry node_modules/glob/sync.js +9502 silly gunzTarPerm extractEntry node_modules/picomatch/lib/utils.js +9503 silly gunzTarPerm extractEntry node_modules/rc/lib/utils.js +9504 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/sync.js +9505 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/sync.js +9506 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/utils.js +9507 silly gunzTarPerm extractEntry node_modules/whatwg-url/lib/utils.js +9508 silly gunzTarPerm extractEntry node_modules/cli-table3/src/table.js +9509 silly gunzTarPerm extractEntry node_modules/text-table/example/table.js +9510 silly gunzTarPerm extractEntry node_modules/semver/functions/valid.js +9511 silly gunzTarPerm extractEntry node_modules/semver/ranges/valid.js +9512 silly gunzTarPerm extractEntry node_modules/text-table/test/table.js +9513 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/tag.js +9514 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/validate-options.js +9515 silly gunzTarPerm extractEntry node_modules/cacache/lib/verify.js +9516 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/tag.js +9517 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/tar-create-options.js +9518 silly gunzTarPerm extractEntry node_modules/any-promise/register/vow.js +9519 silly gunzTarPerm extractEntry node_modules/tar/lib/warn-mixin.js +9520 silly gunzTarPerm extractEntry lib/utils/tar.js +9521 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/tarball.js +9522 silly gunzTarPerm extractEntry node_modules/any-promise/register/when.js +9523 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/which.js +9524 silly gunzTarPerm extractEntry lib/commands/team.js +9525 silly gunzTarPerm extractEntry node_modules/gauge/lib/template-item.js +9526 silly gunzTarPerm extractEntry node_modules/which/which.js +9527 silly gunzTarPerm extractEntry node_modules/minimist/test/whitespace.js +9528 silly gunzTarPerm extractEntry node_modules/chalk/source/templates.js +9529 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-addon.js +9530 silly gunzTarPerm extractEntry node_modules/gauge/lib/wide-truncate.js +9531 silly gunzTarPerm extractEntry node_modules/tar/lib/winchars.js +9532 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-configure-python.js +9533 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-create-config-gypi.js +9534 silly gunzTarPerm extractEntry node_modules/isexe/windows.js +9535 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-owner-sync.js +9536 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-download.js +9537 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-accessible-sync.js +9538 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-owner.js +9539 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-temp-dir.js +9540 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-node-directory.js +9541 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-python.js +9542 silly gunzTarPerm extractEntry node_modules/wrappy/wrappy.js +9543 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/writable-browser.js +9544 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-find-visualstudio.js +9545 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-forever.js +9546 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/writable-browser.js +9547 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/writable.js +9548 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-install.js +9549 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-options.js +9550 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/writable.js +9551 silly gunzTarPerm extractEntry node_modules/tar/lib/write-entry.js +9552 silly gunzTarPerm extractEntry node_modules/node-gyp/test/test-process-release.js +9553 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-retry-operation.js +9554 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-retry-wrap.js +9555 silly gunzTarPerm extractEntry node_modules/retry/test/integration/test-timeouts.js +9556 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/write-file.js +9557 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/write.js +9558 silly gunzTarPerm extractEntry lib/commands/test.js +9559 silly gunzTarPerm extractEntry node_modules/cli-columns/test.js +9560 silly gunzTarPerm extractEntry node_modules/wscript-avoider/lib/wscript-avoider.js +9561 silly gunzTarPerm extractEntry lib/utils/xpack.js +9562 silly gunzTarPerm extractEntry node_modules/defaults/test.js +9563 silly gunzTarPerm extractEntry node_modules/encoding/test/test.js +9564 silly gunzTarPerm extractEntry bin/xpm-dev.js +9565 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/lib/xpm-liquid.js +9566 silly gunzTarPerm extractEntry node_modules/err-code/test/test.js +9567 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/test.js +9568 silly gunzTarPerm extractEntry bin/xpm.js +9569 silly gunzTarPerm extractEntry node_modules/yallist/yallist.js +9570 silly gunzTarPerm extractEntry node_modules/is-lambda/test.js +9571 silly gunzTarPerm extractEntry node_modules/promise-retry/test/test.js +9572 silly gunzTarPerm extractEntry node_modules/mz/zlib.js +9573 silly gunzTarPerm extractEntry node_modules/err-code/.eslintrc.json +9574 silly gunzTarPerm extractEntry node_modules/safer-buffer/tests.js +9575 silly gunzTarPerm extractEntry node_modules/emoji-regex/es2015/text.js +9576 silly gunzTarPerm extractEntry node_modules/err-code/test/.eslintrc.json +9577 silly gunzTarPerm extractEntry node_modules/function-bind/.jscs.json +9578 silly gunzTarPerm extractEntry node_modules/emoji-regex/text.js +9579 silly gunzTarPerm extractEntry node_modules/gauge/lib/theme-set.js +9580 silly gunzTarPerm extractEntry node_modules/gauge/lib/themes.js +9581 silly gunzTarPerm extractEntry lib/utils/timers.js +9582 silly gunzTarPerm extractEntry node_modules/unique-filename/.nyc_output/54942.json +9583 silly gunzTarPerm extractEntry node_modules/unique-filename/.nyc_output/54944.json +9584 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/lib/timers.js +9585 silly gunzTarPerm extractEntry node_modules/cacache/lib/util/tmp.js +9586 silly gunzTarPerm extractEntry node_modules/jsonparse/samplejson/basic.json +9587 silly gunzTarPerm extractEntry node_modules/jsonparse/samplejson/basic2.json +9588 silly gunzTarPerm extractEntry node_modules/cmd-shim/lib/to-batch-syntax.js +9589 silly gunzTarPerm extractEntry node_modules/semver/ranges/to-comparators.js +9590 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/big5-added.json +9591 silly gunzTarPerm extractEntry node_modules/err-code/bower.json +9592 silly gunzTarPerm extractEntry lib/commands/token.js +9593 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/tokenize.js +9594 silly gunzTarPerm extractEntry node_modules/isarray/component.json +9595 silly gunzTarPerm extractEntry node_modules/is-core-module/core.json +9596 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/tokenTypes.js +9597 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-base.js +9598 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp936.json +9599 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp949.json +9600 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-group.js +9601 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker-stream.js +9602 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp950.json +9603 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/deprecated.json +9604 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/tracker.js +9605 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/lib/tracker.js +9606 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/eucjp.json +9607 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +9608 silly gunzTarPerm extractEntry node_modules/pacote/lib/util/trailing-slashes.js +9609 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/custom/trap.js +9610 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/tree-check.js +9611 silly gunzTarPerm extractEntry node_modules/jsonparse/examples/twitterfeed.js +9612 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/gbk-added.json +9613 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/index.json +9614 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/index.json +9615 silly gunzTarPerm extractEntry node_modules/tr46/lib/mappingTable.json +9616 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/type-defs.js +9617 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/type-description.js +9618 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.js +9619 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/types.js +9620 silly gunzTarPerm extractEntry assets/sources/package-liquid.json +9621 silly gunzTarPerm extractEntry node_modules/tar/lib/types.js +9622 silly gunzTarPerm extractEntry node_modules/@npmcli/config/lib/umask.js +9623 silly gunzTarPerm extractEntry node_modules/minipass-sized/package-lock.json +9624 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/package-lock.json +9625 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/util/unesc.js +9626 silly gunzTarPerm extractEntry lib/commands/uninstall.js +9627 silly gunzTarPerm extractEntry node_modules/@gar/promisify/package.json +9628 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/dist/selectors/universal.js +9629 silly gunzTarPerm extractEntry node_modules/tar/lib/unpack.js +9630 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/package.json +9631 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/package.json +9632 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/package.json +9633 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/package.json +9634 silly gunzTarPerm extractEntry lib/commands/unpublish.js +9635 silly gunzTarPerm extractEntry node_modules/libnpmpublish/lib/unpublish.js +9636 silly gunzTarPerm extractEntry lib/commands/unstar.js +9637 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/package.json +9638 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/package.json +9639 silly gunzTarPerm extractEntry node_modules/libnpmdiff/lib/untar.js +9640 silly gunzTarPerm extractEntry node_modules/jsonparse/test/unvalid.js +9641 silly gunzTarPerm extractEntry node_modules/@npmcli/git/package.json +9642 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/package.json +9643 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/package.json +9644 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/package.json +9645 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/update-dependencies.js +9646 silly gunzTarPerm extractEntry lib/utils/update-notifier.js +9647 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/update-scripts.js +9648 silly gunzTarPerm extractEntry lib/workspaces/update-workspaces.js +9649 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/package.json +9650 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/package.json +9651 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/package.json +9652 silly gunzTarPerm extractEntry node_modules/@szmarczak/http-timer/package.json +9653 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/package.json +9654 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/lib/update-workspaces.js +9655 silly gunzTarPerm extractEntry lib/commands/update.js +9656 silly gunzTarPerm extractEntry node_modules/tar/lib/update.js +9657 silly gunzTarPerm extractEntry node_modules/mkdirp/lib/use-native.js +9658 silly gunzTarPerm extractEntry node_modules/@xpack/cmd-shim/package.json +9659 silly gunzTarPerm extractEntry node_modules/@xpack/es6-promisifier/package.json +9660 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf16.js +9661 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf32.js +9662 silly gunzTarPerm extractEntry node_modules/@xpack/logger/package.json +9663 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/package.json +9664 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/utf7.js +9665 silly gunzTarPerm extractEntry node_modules/jsonparse/test/utf8.js +9666 silly gunzTarPerm extractEntry node_modules/abbrev/package.json +9667 silly gunzTarPerm extractEntry node_modules/agent-base/package.json +9668 silly gunzTarPerm extractEntry node_modules/chalk/source/util.js +9669 silly gunzTarPerm extractEntry node_modules/node-gyp/lib/util.js +9670 silly gunzTarPerm extractEntry node_modules/agentkeepalive/package.json +9671 silly gunzTarPerm extractEntry node_modules/aggregate-error/package.json +9672 silly gunzTarPerm extractEntry node_modules/socks/build/common/util.js +9673 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/utils.js +9674 silly gunzTarPerm extractEntry node_modules/ansi-regex/package.json +9675 silly gunzTarPerm extractEntry node_modules/any-promise/package.json +9676 silly gunzTarPerm extractEntry node_modules/cli-table3/src/utils.js +9677 silly gunzTarPerm extractEntry node_modules/columnify/utils.js +9678 silly gunzTarPerm extractEntry node_modules/aproba/package.json +9679 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/package.json +9680 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/utils.js +9681 silly gunzTarPerm extractEntry node_modules/semver/functions/valid.js +9682 silly gunzTarPerm extractEntry node_modules/array-union/package.json +9683 silly gunzTarPerm extractEntry node_modules/balanced-match/package.json +9684 silly gunzTarPerm extractEntry node_modules/base64-js/package.json +9685 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/package.json +9686 silly gunzTarPerm extractEntry node_modules/semver/ranges/valid.js +9687 silly gunzTarPerm extractEntry lib/utils/validate-lockfile.js +9688 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/lib/validate-options.js +9689 silly gunzTarPerm extractEntry node_modules/promzard/test/validate.js +9690 silly gunzTarPerm extractEntry node_modules/bl/node_modules/safe-buffer/package.json +9691 silly gunzTarPerm extractEntry node_modules/bl/node_modules/string_decoder/package.json +9692 silly gunzTarPerm extractEntry node_modules/cacache/lib/verify.js +9693 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/version-from-tgz.js +9694 silly gunzTarPerm extractEntry node_modules/bl/package.json +9695 silly gunzTarPerm extractEntry node_modules/brace-expansion/package.json +9696 silly gunzTarPerm extractEntry node_modules/braces/package.json +9697 silly gunzTarPerm extractEntry node_modules/buffer-alloc-unsafe/package.json +9698 silly gunzTarPerm extractEntry lib/commands/version.js +9699 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/version.js +9700 silly gunzTarPerm extractEntry node_modules/buffer-alloc/package.json +9701 silly gunzTarPerm extractEntry node_modules/buffer-crc32/package.json +9702 silly gunzTarPerm extractEntry lib/commands/view.js +9703 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/bin/virtual.js +9704 silly gunzTarPerm extractEntry node_modules/buffer-fill/package.json +9705 silly gunzTarPerm extractEntry node_modules/buffer/package.json +9706 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/vuln.js +9707 silly gunzTarPerm extractEntry node_modules/tar/lib/warn-mixin.js +9708 silly gunzTarPerm extractEntry node_modules/builtins/package.json +9709 silly gunzTarPerm extractEntry node_modules/cacache/package.json +9710 silly gunzTarPerm extractEntry lib/utils/web-auth.js +9711 silly gunzTarPerm extractEntry node_modules/@npmcli/git/lib/which.js +9712 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/package.json +9713 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/lowercase-keys/package.json +9714 silly gunzTarPerm extractEntry node_modules/which/which.js +9715 silly gunzTarPerm extractEntry lib/commands/whoami.js +9716 silly gunzTarPerm extractEntry node_modules/cacheable-request/package.json +9717 silly gunzTarPerm extractEntry node_modules/chownr/package.json +9718 silly gunzTarPerm extractEntry node_modules/gauge/lib/wide-truncate.js +9719 silly gunzTarPerm extractEntry node_modules/columnify/width.js +9720 silly gunzTarPerm extractEntry node_modules/ci-info/package.json +9721 silly gunzTarPerm extractEntry node_modules/clean-stack/package.json +9722 silly gunzTarPerm extractEntry node_modules/clone-response/package.json +9723 silly gunzTarPerm extractEntry node_modules/color-support/package.json +9724 silly gunzTarPerm extractEntry node_modules/tar/lib/winchars.js +9725 silly gunzTarPerm extractEntry node_modules/isexe/windows.js +9726 silly gunzTarPerm extractEntry node_modules/commander/package.json +9727 silly gunzTarPerm extractEntry node_modules/concat-map/package.json +9728 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-owner-sync.js +9729 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-owner.js +9730 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/with-temp-dir.js +9731 silly gunzTarPerm extractEntry node_modules/diff/lib/diff/word.js +9732 silly gunzTarPerm extractEntry node_modules/console-control-strings/package.json +9733 silly gunzTarPerm extractEntry node_modules/core-util-is/package.json +9734 silly gunzTarPerm extractEntry node_modules/wrappy/wrappy.js +9735 silly gunzTarPerm extractEntry node_modules/tar/lib/write-entry.js +9736 silly gunzTarPerm extractEntry node_modules/cp-file/package.json +9737 silly gunzTarPerm extractEntry node_modules/cross-spawn/package.json +9738 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/lib/write-file.js +9739 silly gunzTarPerm extractEntry node_modules/libnpmversion/lib/write-json.js +9740 silly gunzTarPerm extractEntry node_modules/debug/package.json +9741 silly gunzTarPerm extractEntry node_modules/decompress-response/package.json +9742 silly gunzTarPerm extractEntry node_modules/cacache/lib/content/write.js +9743 silly gunzTarPerm extractEntry node_modules/diff/lib/convert/xml.js +9744 silly gunzTarPerm extractEntry node_modules/decompress-tar/package.json +9745 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/node_modules/file-type/package.json +9746 silly gunzTarPerm extractEntry node_modules/yallist/yallist.js +9747 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/lib/yarn-lock.js +9748 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/package.json +9749 silly gunzTarPerm extractEntry node_modules/decompress-targz/package.json +9750 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/custom/zalgo.js +9751 silly gunzTarPerm extractEntry node_modules/@colors/colors/lib/maps/zebra.js +9752 silly gunzTarPerm extractEntry node_modules/decompress-unzip/node_modules/file-type/package.json +9753 silly gunzTarPerm extractEntry node_modules/decompress-unzip/package.json +9754 silly gunzTarPerm extractEntry node_modules/jsonparse/samplejson/basic.json +9755 silly gunzTarPerm extractEntry node_modules/jsonparse/samplejson/basic2.json +9756 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/node_modules/pify/package.json +9757 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/package.json +9758 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/big5-added.json +9759 silly gunzTarPerm extractEntry node_modules/binary-extensions/binary-extensions.json +9760 silly gunzTarPerm extractEntry node_modules/decompress/package.json +9761 silly gunzTarPerm extractEntry node_modules/deep-extend/package.json +9762 silly gunzTarPerm extractEntry node_modules/defer-to-connect/package.json +9763 silly gunzTarPerm extractEntry node_modules/del/package.json +9764 silly gunzTarPerm extractEntry node_modules/err-code/bower.json +9765 silly gunzTarPerm extractEntry node_modules/is-core-module/core.json +9766 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp936.json +9767 silly gunzTarPerm extractEntry node_modules/delegates/package.json +9768 silly gunzTarPerm extractEntry node_modules/depd/package.json +9769 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp949.json +9770 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/cp950.json +9771 silly gunzTarPerm extractEntry node_modules/dir-glob/package.json +9772 silly gunzTarPerm extractEntry node_modules/duplexer3/package.json +9773 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/deprecated.json +9774 silly gunzTarPerm extractEntry node_modules/emoji-regex/package.json +9775 silly gunzTarPerm extractEntry node_modules/encoding/package.json +9776 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/eucjp.json +9777 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +9778 silly gunzTarPerm extractEntry node_modules/end-of-stream/package.json +9779 silly gunzTarPerm extractEntry node_modules/env-paths/package.json +9780 silly gunzTarPerm extractEntry node_modules/err-code/package.json +9781 silly gunzTarPerm extractEntry node_modules/fast-glob/package.json +9782 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/gbk-added.json +9783 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/index.json +9784 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/index.json +9785 silly gunzTarPerm extractEntry node_modules/minipass-sized/package-lock.json +9786 silly gunzTarPerm extractEntry node_modules/fastq/package.json +9787 silly gunzTarPerm extractEntry node_modules/fd-slicer/package.json +9788 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/package-lock.json +9789 silly gunzTarPerm extractEntry node_modules/file-type/package.json +9790 silly gunzTarPerm extractEntry node_modules/fill-range/package.json +9791 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/package-lock.json +9792 silly gunzTarPerm extractEntry node_modules/@colors/colors/package.json +9793 silly gunzTarPerm extractEntry node_modules/fs-constants/package.json +9794 silly gunzTarPerm extractEntry node_modules/fs-minipass/package.json +9795 silly gunzTarPerm extractEntry node_modules/@gar/promisify/package.json +9796 silly gunzTarPerm extractEntry node_modules/@isaacs/string-locale-compare/package.json +9797 silly gunzTarPerm extractEntry node_modules/fs.realpath/package.json +9798 silly gunzTarPerm extractEntry node_modules/function-bind/package.json +9799 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/package.json +9800 silly gunzTarPerm extractEntry node_modules/@npmcli/ci-detect/package.json +9801 silly gunzTarPerm extractEntry node_modules/gauge/package.json +9802 silly gunzTarPerm extractEntry node_modules/get-stream/package.json +9803 silly gunzTarPerm extractEntry node_modules/@npmcli/config/package.json +9804 silly gunzTarPerm extractEntry node_modules/@npmcli/disparity-colors/package.json +9805 silly gunzTarPerm extractEntry node_modules/git-config-path/package.json +9806 silly gunzTarPerm extractEntry node_modules/glob-parent/package.json +9807 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/package.json +9808 silly gunzTarPerm extractEntry node_modules/@npmcli/git/package.json +9809 silly gunzTarPerm extractEntry node_modules/glob/package.json +9810 silly gunzTarPerm extractEntry node_modules/global-dirs/package.json +9811 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/package.json +9812 silly gunzTarPerm extractEntry node_modules/@npmcli/map-workspaces/package.json +9813 silly gunzTarPerm extractEntry node_modules/globby/package.json +9814 silly gunzTarPerm extractEntry node_modules/got/node_modules/get-stream/package.json +9815 silly gunzTarPerm extractEntry node_modules/@npmcli/metavuln-calculator/package.json +9816 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/package.json +9817 silly gunzTarPerm extractEntry node_modules/got/package.json +9818 silly gunzTarPerm extractEntry node_modules/graceful-fs/package.json +9819 silly gunzTarPerm extractEntry node_modules/@npmcli/name-from-folder/package.json +9820 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/package.json +9821 silly gunzTarPerm extractEntry node_modules/@npmcli/package-json/package.json +9822 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/package.json +9823 silly gunzTarPerm extractEntry node_modules/has-unicode/package.json +9824 silly gunzTarPerm extractEntry node_modules/has/package.json +9825 silly gunzTarPerm extractEntry node_modules/@npmcli/query/package.json +9826 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/package.json +9827 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/package.json +9828 silly gunzTarPerm extractEntry node_modules/abbrev/package.json +9829 silly gunzTarPerm extractEntry node_modules/hosted-git-info/package.json +9830 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/package.json +9831 silly gunzTarPerm extractEntry node_modules/agent-base/package.json +9832 silly gunzTarPerm extractEntry node_modules/agentkeepalive/package.json +9833 silly gunzTarPerm extractEntry node_modules/aggregate-error/package.json +9834 silly gunzTarPerm extractEntry node_modules/ansi-regex/package.json +9835 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/package.json +9836 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/package.json +9837 silly gunzTarPerm extractEntry node_modules/ansi-styles/package.json +9838 silly gunzTarPerm extractEntry node_modules/aproba/package.json +9839 silly gunzTarPerm extractEntry node_modules/humanize-ms/package.json +9840 silly gunzTarPerm extractEntry node_modules/iconv-lite/package.json +9841 silly gunzTarPerm extractEntry node_modules/archy/package.json +9842 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/package.json +9843 silly gunzTarPerm extractEntry node_modules/ieee754/package.json +9844 silly gunzTarPerm extractEntry node_modules/ignore-walk/package.json +9845 silly gunzTarPerm extractEntry node_modules/asap/package.json +9846 silly gunzTarPerm extractEntry node_modules/balanced-match/package.json +9847 silly gunzTarPerm extractEntry node_modules/ignore/package.json +9848 silly gunzTarPerm extractEntry node_modules/imurmurhash/package.json +9849 silly gunzTarPerm extractEntry node_modules/bin-links/package.json +9850 silly gunzTarPerm extractEntry node_modules/binary-extensions/package.json +9851 silly gunzTarPerm extractEntry node_modules/indent-string/package.json +9852 silly gunzTarPerm extractEntry node_modules/infer-owner/package.json +9853 silly gunzTarPerm extractEntry node_modules/brace-expansion/package.json +9854 silly gunzTarPerm extractEntry node_modules/builtins/package.json +9855 silly gunzTarPerm extractEntry node_modules/inflight/package.json +9856 silly gunzTarPerm extractEntry node_modules/inherits/package.json +9857 silly gunzTarPerm extractEntry node_modules/cacache/package.json +9858 silly gunzTarPerm extractEntry node_modules/chalk/package.json +9859 silly gunzTarPerm extractEntry node_modules/ini/package.json +9860 silly gunzTarPerm extractEntry node_modules/ip/package.json +9861 silly gunzTarPerm extractEntry node_modules/chownr/package.json +9862 silly gunzTarPerm extractEntry node_modules/cidr-regex/package.json +9863 silly gunzTarPerm extractEntry node_modules/is-ci/package.json +9864 silly gunzTarPerm extractEntry node_modules/is-core-module/package.json +9865 silly gunzTarPerm extractEntry node_modules/clean-stack/package.json +9866 silly gunzTarPerm extractEntry node_modules/cli-columns/package.json +9867 silly gunzTarPerm extractEntry node_modules/is-extglob/package.json +9868 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/package.json +9869 silly gunzTarPerm extractEntry node_modules/cli-table3/package.json +9870 silly gunzTarPerm extractEntry node_modules/clone/package.json +9871 silly gunzTarPerm extractEntry node_modules/is-glob/package.json +9872 silly gunzTarPerm extractEntry node_modules/is-installed-globally/package.json +9873 silly gunzTarPerm extractEntry node_modules/cmd-shim/package.json +9874 silly gunzTarPerm extractEntry node_modules/color-convert/package.json +9875 silly gunzTarPerm extractEntry node_modules/is-lambda/package.json +9876 silly gunzTarPerm extractEntry node_modules/is-natural-number/package.json +9877 silly gunzTarPerm extractEntry node_modules/color-name/package.json +9878 silly gunzTarPerm extractEntry node_modules/color-support/package.json +9879 silly gunzTarPerm extractEntry node_modules/is-number/package.json +9880 silly gunzTarPerm extractEntry node_modules/is-path-cwd/package.json +9881 silly gunzTarPerm extractEntry node_modules/columnify/package.json +9882 silly gunzTarPerm extractEntry node_modules/common-ancestor-path/package.json +9883 silly gunzTarPerm extractEntry node_modules/is-path-inside/package.json +9884 silly gunzTarPerm extractEntry node_modules/is-stream/package.json +9885 silly gunzTarPerm extractEntry node_modules/concat-map/package.json +9886 silly gunzTarPerm extractEntry node_modules/console-control-strings/package.json +9887 silly gunzTarPerm extractEntry node_modules/is-windows/package.json +9888 silly gunzTarPerm extractEntry node_modules/isarray/package.json +9889 silly gunzTarPerm extractEntry node_modules/cssesc/package.json +9890 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/package.json +9891 silly gunzTarPerm extractEntry node_modules/isexe/package.json +9892 silly gunzTarPerm extractEntry node_modules/json-buffer/package.json +9893 silly gunzTarPerm extractEntry node_modules/debug/package.json +9894 silly gunzTarPerm extractEntry node_modules/debuglog/package.json +9895 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/package.json +9896 silly gunzTarPerm extractEntry node_modules/jsonparse/package.json +9897 silly gunzTarPerm extractEntry node_modules/defaults/package.json +9898 silly gunzTarPerm extractEntry node_modules/delegates/package.json +9899 silly gunzTarPerm extractEntry node_modules/keyv/package.json +9900 silly gunzTarPerm extractEntry node_modules/latest-version/package.json +9901 silly gunzTarPerm extractEntry node_modules/depd/package.json +9902 silly gunzTarPerm extractEntry node_modules/dezalgo/package.json +9903 silly gunzTarPerm extractEntry node_modules/liquidjs/package.json +9904 silly gunzTarPerm extractEntry node_modules/lowercase-keys/package.json +9905 silly gunzTarPerm extractEntry node_modules/diff/package.json +9906 silly gunzTarPerm extractEntry node_modules/emoji-regex/package.json +9907 silly gunzTarPerm extractEntry node_modules/lru-cache/package.json +9908 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/package.json +9909 silly gunzTarPerm extractEntry node_modules/encoding/package.json +9910 silly gunzTarPerm extractEntry node_modules/env-paths/package.json +9911 silly gunzTarPerm extractEntry node_modules/make-dir/package.json +9912 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/package.json +9913 silly gunzTarPerm extractEntry node_modules/err-code/package.json +9914 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/package.json +9915 silly gunzTarPerm extractEntry node_modules/merge2/package.json +9916 silly gunzTarPerm extractEntry node_modules/micromatch/package.json +9917 silly gunzTarPerm extractEntry node_modules/mimic-response/package.json +9918 silly gunzTarPerm extractEntry node_modules/minimatch/package.json +9919 silly gunzTarPerm extractEntry node_modules/fs-minipass/package.json +9920 silly gunzTarPerm extractEntry node_modules/fs.realpath/package.json +9921 silly gunzTarPerm extractEntry node_modules/minimist/package.json +9922 silly gunzTarPerm extractEntry node_modules/minipass-collect/package.json +9923 silly gunzTarPerm extractEntry node_modules/function-bind/package.json +9924 silly gunzTarPerm extractEntry node_modules/gauge/package.json +9925 silly gunzTarPerm extractEntry node_modules/minipass-fetch/package.json +9926 silly gunzTarPerm extractEntry node_modules/minipass-flush/package.json +9927 silly gunzTarPerm extractEntry node_modules/glob/package.json +9928 silly gunzTarPerm extractEntry node_modules/graceful-fs/package.json +9929 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/package.json +9930 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/package.json +9931 silly gunzTarPerm extractEntry node_modules/has-flag/package.json +9932 silly gunzTarPerm extractEntry node_modules/has-unicode/package.json +9933 silly gunzTarPerm extractEntry node_modules/minipass-sized/package.json +9934 silly gunzTarPerm extractEntry node_modules/minipass/package.json +9935 silly gunzTarPerm extractEntry node_modules/has/package.json +9936 silly gunzTarPerm extractEntry node_modules/hosted-git-info/package.json +9937 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/package.json +9938 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/package.json +9939 silly gunzTarPerm extractEntry node_modules/minizlib/package.json +9940 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/package.json +9941 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/package.json +9942 silly gunzTarPerm extractEntry node_modules/humanize-ms/package.json +9943 silly gunzTarPerm extractEntry node_modules/mkdirp/package.json +9944 silly gunzTarPerm extractEntry node_modules/ms/package.json +9945 silly gunzTarPerm extractEntry node_modules/iconv-lite/package.json +9946 silly gunzTarPerm extractEntry node_modules/ignore-walk/package.json +9947 silly gunzTarPerm extractEntry node_modules/mz/package.json +9948 silly gunzTarPerm extractEntry node_modules/negotiator/package.json +9949 silly gunzTarPerm extractEntry node_modules/imurmurhash/package.json +9950 silly gunzTarPerm extractEntry node_modules/indent-string/package.json +9951 silly gunzTarPerm extractEntry node_modules/nested-error-stacks/package.json +9952 silly gunzTarPerm extractEntry node_modules/node-fetch/package.json +9953 silly gunzTarPerm extractEntry node_modules/infer-owner/package.json +9954 silly gunzTarPerm extractEntry node_modules/inflight/package.json +9955 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/package.json +9956 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/package.json +9957 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/package.json +9958 silly gunzTarPerm extractEntry node_modules/node-gyp/package.json +9959 silly gunzTarPerm extractEntry node_modules/inherits/package.json +9960 silly gunzTarPerm extractEntry node_modules/ini/package.json +9961 silly gunzTarPerm extractEntry node_modules/nopt/package.json +9962 silly gunzTarPerm extractEntry node_modules/normalize-package-data/package.json +9963 silly gunzTarPerm extractEntry node_modules/init-package-json/package.json +9964 silly gunzTarPerm extractEntry node_modules/ip-regex/package.json +9965 silly gunzTarPerm extractEntry node_modules/normalize-url/package.json +9966 silly gunzTarPerm extractEntry node_modules/npm-bundled/package.json +9967 silly gunzTarPerm extractEntry node_modules/ip/package.json +9968 silly gunzTarPerm extractEntry node_modules/is-cidr/package.json +9969 silly gunzTarPerm extractEntry node_modules/npm-install-checks/package.json +9970 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/package.json +9971 silly gunzTarPerm extractEntry node_modules/is-core-module/package.json +9972 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/package.json +9973 silly gunzTarPerm extractEntry node_modules/is-lambda/package.json +9974 silly gunzTarPerm extractEntry node_modules/isexe/package.json +9975 silly gunzTarPerm extractEntry node_modules/npm-package-arg/package.json +9976 silly gunzTarPerm extractEntry node_modules/npm-packlist/package.json +9977 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/package.json +9978 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/package.json +9979 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/package.json +9980 silly gunzTarPerm extractEntry node_modules/json-stringify-nice/package.json +9981 silly gunzTarPerm extractEntry node_modules/jsonparse/package.json +9982 silly gunzTarPerm extractEntry node_modules/just-diff-apply/package.json +9983 silly gunzTarPerm extractEntry node_modules/npmlog/package.json +9984 silly gunzTarPerm extractEntry node_modules/object-assign/package.json +9985 silly gunzTarPerm extractEntry node_modules/just-diff/package.json +9986 silly gunzTarPerm extractEntry node_modules/libnpmaccess/package.json +9987 silly gunzTarPerm extractEntry node_modules/once/package.json +9988 silly gunzTarPerm extractEntry node_modules/p-cancelable/package.json +9989 silly gunzTarPerm extractEntry node_modules/libnpmdiff/package.json +9990 silly gunzTarPerm extractEntry node_modules/libnpmexec/package.json +9991 silly gunzTarPerm extractEntry node_modules/p-event/package.json +9992 silly gunzTarPerm extractEntry node_modules/p-finally/package.json +9993 silly gunzTarPerm extractEntry node_modules/libnpmfund/package.json +9994 silly gunzTarPerm extractEntry node_modules/libnpmhook/package.json +9995 silly gunzTarPerm extractEntry node_modules/p-map/package.json +9996 silly gunzTarPerm extractEntry node_modules/p-timeout/package.json +9997 silly gunzTarPerm extractEntry node_modules/libnpmorg/package.json +9998 silly gunzTarPerm extractEntry node_modules/libnpmpack/package.json +9999 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/package.json +10000 silly gunzTarPerm extractEntry node_modules/package-json/package.json +10001 silly gunzTarPerm extractEntry node_modules/libnpmpublish/package.json +10002 silly gunzTarPerm extractEntry node_modules/libnpmsearch/package.json +10003 silly gunzTarPerm extractEntry node_modules/pacote/package.json +10004 silly gunzTarPerm extractEntry node_modules/parse-git-config/node_modules/ini/package.json +10005 silly gunzTarPerm extractEntry node_modules/libnpmteam/package.json +10006 silly gunzTarPerm extractEntry node_modules/libnpmversion/package.json +10007 silly gunzTarPerm extractEntry node_modules/parse-git-config/package.json +10008 silly gunzTarPerm extractEntry node_modules/path-is-absolute/package.json +10009 silly gunzTarPerm extractEntry node_modules/path-key/package.json +10010 silly gunzTarPerm extractEntry node_modules/path-type/package.json +10011 silly gunzTarPerm extractEntry node_modules/lru-cache/package.json +10012 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/package.json +10013 silly gunzTarPerm extractEntry node_modules/pend/package.json +10014 silly gunzTarPerm extractEntry node_modules/picomatch/package.json +10015 silly gunzTarPerm extractEntry node_modules/minimatch/package.json +10016 silly gunzTarPerm extractEntry node_modules/minipass-collect/package.json +10017 silly gunzTarPerm extractEntry node_modules/pify/package.json +10018 silly gunzTarPerm extractEntry node_modules/pinkie-promise/package.json +10019 silly gunzTarPerm extractEntry node_modules/minipass-fetch/package.json +10020 silly gunzTarPerm extractEntry node_modules/minipass-flush/package.json +10021 silly gunzTarPerm extractEntry node_modules/pinkie/package.json +10022 silly gunzTarPerm extractEntry node_modules/prepend-http/package.json +10023 silly gunzTarPerm extractEntry node_modules/proc-log/package.json +10024 silly gunzTarPerm extractEntry node_modules/process-nextick-args/package.json +10025 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/package.json +10026 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/package.json +10027 silly gunzTarPerm extractEntry node_modules/promise-inflight/package.json +10028 silly gunzTarPerm extractEntry node_modules/promise-retry/package.json +10029 silly gunzTarPerm extractEntry node_modules/minipass-sized/package.json +10030 silly gunzTarPerm extractEntry node_modules/minipass/package.json +10031 silly gunzTarPerm extractEntry node_modules/pump/package.json +10032 silly gunzTarPerm extractEntry node_modules/queue-microtask/package.json +10033 silly gunzTarPerm extractEntry node_modules/minizlib/package.json +10034 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/package.json +10035 silly gunzTarPerm extractEntry node_modules/rc/node_modules/ini/package.json +10036 silly gunzTarPerm extractEntry node_modules/rc/package.json +10037 silly gunzTarPerm extractEntry node_modules/mkdirp/package.json +10038 silly gunzTarPerm extractEntry node_modules/ms/package.json +10039 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/package.json +10040 silly gunzTarPerm extractEntry node_modules/read-package-json/package.json +10041 silly gunzTarPerm extractEntry node_modules/mute-stream/package.json +10042 silly gunzTarPerm extractEntry node_modules/negotiator/package.json +10043 silly gunzTarPerm extractEntry node_modules/readable-stream/package.json +10044 silly gunzTarPerm extractEntry node_modules/registry-auth-token/package.json +10045 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/package.json +10046 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/package.json +10047 silly gunzTarPerm extractEntry node_modules/registry-url/package.json +10048 silly gunzTarPerm extractEntry node_modules/responselike/package.json +10049 silly gunzTarPerm extractEntry node_modules/retry/package.json +10050 silly gunzTarPerm extractEntry node_modules/reusify/package.json +10051 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/package.json +10052 silly gunzTarPerm extractEntry node_modules/node-gyp/package.json +10053 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/package.json +10054 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/package.json +10055 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/package.json +10056 silly gunzTarPerm extractEntry node_modules/rimraf/package.json +10057 silly gunzTarPerm extractEntry node_modules/nopt/package.json +10058 silly gunzTarPerm extractEntry node_modules/normalize-package-data/package.json +10059 silly gunzTarPerm extractEntry node_modules/run-parallel/package.json +10060 silly gunzTarPerm extractEntry node_modules/safe-buffer/package.json +10061 silly gunzTarPerm extractEntry node_modules/npm-audit-report/package.json +10062 silly gunzTarPerm extractEntry node_modules/npm-bundled/package.json +10063 silly gunzTarPerm extractEntry node_modules/safer-buffer/package.json +10064 silly gunzTarPerm extractEntry node_modules/seek-bzip/package.json +10065 silly gunzTarPerm extractEntry node_modules/npm-install-checks/package.json +10066 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/package.json +10067 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/package.json +10068 silly gunzTarPerm extractEntry node_modules/semver-diff/package.json +10069 silly gunzTarPerm extractEntry node_modules/npm-package-arg/package.json +10070 silly gunzTarPerm extractEntry node_modules/npm-packlist/package.json +10071 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/package.json +10072 silly gunzTarPerm extractEntry node_modules/semver/package.json +10073 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/package.json +10074 silly gunzTarPerm extractEntry node_modules/npm-profile/package.json +10075 silly gunzTarPerm extractEntry node_modules/set-blocking/package.json +10076 silly gunzTarPerm extractEntry node_modules/shebang-command/package.json +10077 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/package.json +10078 silly gunzTarPerm extractEntry node_modules/npm-user-validate/package.json +10079 silly gunzTarPerm extractEntry node_modules/shebang-regex/package.json +10080 silly gunzTarPerm extractEntry node_modules/signal-exit/package.json +10081 silly gunzTarPerm extractEntry node_modules/npmlog/package.json +10082 silly gunzTarPerm extractEntry node_modules/once/package.json +10083 silly gunzTarPerm extractEntry node_modules/slash/package.json +10084 silly gunzTarPerm extractEntry node_modules/smart-buffer/package.json +10085 silly gunzTarPerm extractEntry node_modules/opener/package.json +10086 silly gunzTarPerm extractEntry node_modules/p-map/package.json +10087 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/package.json +10088 silly gunzTarPerm extractEntry node_modules/socks/package.json +10089 silly gunzTarPerm extractEntry node_modules/spdx-correct/package.json +10090 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/package.json +10091 silly gunzTarPerm extractEntry node_modules/pacote/package.json +10092 silly gunzTarPerm extractEntry node_modules/parse-conflict-json/package.json +10093 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/package.json +10094 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/package.json +10095 silly gunzTarPerm extractEntry node_modules/path-is-absolute/package.json +10096 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/package.json +10097 silly gunzTarPerm extractEntry node_modules/proc-log/package.json +10098 silly gunzTarPerm extractEntry node_modules/promise-all-reject-late/package.json +10099 silly gunzTarPerm extractEntry node_modules/ssri/package.json +10100 silly gunzTarPerm extractEntry node_modules/string_decoder/package.json +10101 silly gunzTarPerm extractEntry node_modules/promise-call-limit/package.json +10102 silly gunzTarPerm extractEntry node_modules/promise-inflight/package.json +10103 silly gunzTarPerm extractEntry node_modules/string-width/package.json +10104 silly gunzTarPerm extractEntry node_modules/strip-ansi/package.json +10105 silly gunzTarPerm extractEntry node_modules/promise-retry/package.json +10106 silly gunzTarPerm extractEntry node_modules/promzard/example/npm-init/package.json +10107 silly gunzTarPerm extractEntry node_modules/strip-dirs/package.json +10108 silly gunzTarPerm extractEntry node_modules/strip-json-comments/package.json +10109 silly gunzTarPerm extractEntry node_modules/promzard/package.json +10110 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/package.json +10111 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/package.json +10112 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/safe-buffer/package.json +10113 silly gunzTarPerm extractEntry node_modules/read-cmd-shim/package.json +10114 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/package.json +10115 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/string_decoder/package.json +10116 silly gunzTarPerm extractEntry node_modules/tar-stream/package.json +10117 silly gunzTarPerm extractEntry node_modules/tar/package.json +10118 silly gunzTarPerm extractEntry node_modules/thenify-all/package.json +10119 silly gunzTarPerm extractEntry node_modules/read-package-json/package.json +10120 silly gunzTarPerm extractEntry node_modules/read/package.json +10121 silly gunzTarPerm extractEntry node_modules/readable-stream/package.json +10122 silly gunzTarPerm extractEntry node_modules/readdir-scoped-modules/package.json +10123 silly gunzTarPerm extractEntry node_modules/thenify/package.json +10124 silly gunzTarPerm extractEntry node_modules/through/package.json +10125 silly gunzTarPerm extractEntry node_modules/to-buffer/package.json +10126 silly gunzTarPerm extractEntry node_modules/to-readable-stream/package.json +10127 silly gunzTarPerm extractEntry node_modules/retry/package.json +10128 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/package.json +10129 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/package.json +10130 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/package.json +10131 silly gunzTarPerm extractEntry node_modules/to-regex-range/package.json +10132 silly gunzTarPerm extractEntry node_modules/tr46/package.json +10133 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/package.json +10134 silly gunzTarPerm extractEntry node_modules/unique-filename/package.json +10135 silly gunzTarPerm extractEntry node_modules/unique-slug/package.json +10136 silly gunzTarPerm extractEntry node_modules/rimraf/package.json +10137 silly gunzTarPerm extractEntry node_modules/safe-buffer/package.json +10138 silly gunzTarPerm extractEntry node_modules/url-parse-lax/package.json +10139 silly gunzTarPerm extractEntry node_modules/util-deprecate/package.json +10140 silly gunzTarPerm extractEntry node_modules/safer-buffer/package.json +10141 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/package.json +10142 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/package.json +10143 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/package.json +10144 silly gunzTarPerm extractEntry node_modules/semver/package.json +10145 silly gunzTarPerm extractEntry node_modules/set-blocking/package.json +10146 silly gunzTarPerm extractEntry node_modules/webidl-conversions/package.json +10147 silly gunzTarPerm extractEntry node_modules/whatwg-url/package.json +10148 silly gunzTarPerm extractEntry node_modules/signal-exit/package.json +10149 silly gunzTarPerm extractEntry node_modules/smart-buffer/package.json +10150 silly gunzTarPerm extractEntry node_modules/which/package.json +10151 silly gunzTarPerm extractEntry node_modules/wide-align/package.json +10152 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/package.json +10153 silly gunzTarPerm extractEntry node_modules/socks/package.json +10154 silly gunzTarPerm extractEntry node_modules/wrappy/package.json +10155 silly gunzTarPerm extractEntry node_modules/wscript-avoider/package.json +10156 silly gunzTarPerm extractEntry node_modules/spdx-correct/package.json +10157 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/package.json +10158 silly gunzTarPerm extractEntry node_modules/xtend/package.json +10159 silly gunzTarPerm extractEntry node_modules/yallist/package.json +10160 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/package.json +10161 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/package.json +10162 silly gunzTarPerm extractEntry node_modules/yauzl/package.json +10163 silly gunzTarPerm extractEntry package.json +10164 silly gunzTarPerm extractEntry node_modules/ssri/package.json +10165 silly gunzTarPerm extractEntry node_modules/string_decoder/package.json +10166 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/shiftjis.json +10167 silly gunzTarPerm extractEntry node_modules/fastq/test/tsconfig.json +10168 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/typos.json +10169 silly gunzTarPerm extractEntry node_modules/string-width/package.json +10170 silly gunzTarPerm extractEntry node_modules/strip-ansi/package.json +10171 silly gunzTarPerm extractEntry node_modules/ci-info/vendors.json +10172 silly gunzTarPerm extractEntry node_modules/supports-color/package.json +10173 silly gunzTarPerm extractEntry node_modules/tar/package.json +10174 silly gunzTarPerm extractEntry node_modules/text-table/package.json +10175 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/package.json +10176 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/warning_messages.json +10177 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/server.key +10178 silly gunzTarPerm extractEntry node_modules/treeverse/package.json +10179 silly gunzTarPerm extractEntry node_modules/unique-filename/package.json +10180 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.js.map +10181 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.js.map +10182 silly gunzTarPerm extractEntry node_modules/unique-slug/package.json +10183 silly gunzTarPerm extractEntry node_modules/util-deprecate/package.json +10184 silly gunzTarPerm extractEntry node_modules/socks/build/common/constants.js.map +10185 silly gunzTarPerm extractEntry node_modules/socks/build/common/helpers.js.map +10186 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/package.json +10187 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/package.json +10188 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/dist/index.js.map +10189 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.js.map +10190 silly gunzTarPerm extractEntry node_modules/walk-up-path/package.json +10191 silly gunzTarPerm extractEntry node_modules/wcwidth/package.json +10192 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/index.js.map +10193 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/index.js.map +10194 silly gunzTarPerm extractEntry node_modules/which/package.json +10195 silly gunzTarPerm extractEntry node_modules/wide-align/package.json +10196 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.js.map +10197 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.js.map +10198 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.js.map +10199 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.js.map +10200 silly gunzTarPerm extractEntry node_modules/wrappy/package.json +10201 silly gunzTarPerm extractEntry node_modules/write-file-atomic/package.json +10202 silly gunzTarPerm extractEntry node_modules/socks/build/index.js.map +10203 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.browser.min.js.map +10204 silly gunzTarPerm extractEntry node_modules/yallist/package.json +10205 silly gunzTarPerm extractEntry package.json +10206 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.browser.umd.js.map +10207 silly gunzTarPerm extractEntry node_modules/iconv-lite/encodings/tables/shiftjis.json +10208 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/typos.json +10209 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/lib/logger.js.map +10210 silly gunzTarPerm extractEntry node_modules/normalize-package-data/lib/warning_messages.json +10211 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/server.key +10212 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.js.map +10213 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +10214 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.js.map +10215 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.js.map +10216 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.js.map +10217 silly gunzTarPerm extractEntry node_modules/socks/build/common/receivebuffer.js.map +10218 silly gunzTarPerm extractEntry node_modules/socks/build/common/constants.js.map +10219 silly gunzTarPerm extractEntry node_modules/socks/build/common/helpers.js.map +10220 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/smartbuffer.js.map +10221 silly gunzTarPerm extractEntry node_modules/socks/build/client/socksclient.js.map +10222 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.js.map +10223 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.js.map +10224 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.js.map +10225 silly gunzTarPerm extractEntry node_modules/socks/build/common/util.js.map +10226 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.js.map +10227 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.js.map +10228 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/utils.js.map +10229 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/lib/xpm-liquid.js.map +10230 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.js.map +10231 silly gunzTarPerm extractEntry node_modules/socks/build/index.js.map +10232 silly gunzTarPerm extractEntry node_modules/concat-map/README.markdown +10233 silly gunzTarPerm extractEntry node_modules/jsonparse/README.markdown +10234 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.js.map +10235 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +10236 silly gunzTarPerm extractEntry node_modules/minimist/readme.markdown +10237 silly gunzTarPerm extractEntry node_modules/mkdirp/readme.markdown +10238 silly gunzTarPerm extractEntry node_modules/through/readme.markdown +10239 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +10240 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.js.map +10241 silly gunzTarPerm extractEntry node_modules/socks/build/common/receivebuffer.js.map +10242 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/smartbuffer.js.map +10243 silly gunzTarPerm extractEntry node_modules/socks/build/client/socksclient.js.map +10244 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +10245 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/associateExample.md +10246 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/associateExample.md +10247 silly gunzTarPerm extractEntry node_modules/buffer/AUTHORS.md +10248 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.js.map +10249 silly gunzTarPerm extractEntry node_modules/socks/build/common/util.js.map +10250 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/bindExample.md +10251 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/bindExample.md +10252 silly gunzTarPerm extractEntry node_modules/smart-buffer/build/utils.js.map +10253 silly gunzTarPerm extractEntry node_modules/mkdirp/readme.markdown +10254 silly gunzTarPerm extractEntry node_modules/text-table/readme.markdown +10255 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/API.md +10256 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/binding.gyp-files-in-the-wild.md +10257 silly gunzTarPerm extractEntry CHANGELOG.md +10258 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/associateExample.md +10259 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/associateExample.md +10260 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/bindExample.md +10261 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/CHANGELOG.md +10262 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/CHANGELOG.md +10263 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/bindExample.md +10264 silly gunzTarPerm extractEntry node_modules/@xpack/es6-promisifier/CHANGELOG.md +10265 silly gunzTarPerm extractEntry node_modules/@xpack/logger/CHANGELOG.md +10266 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/binding.gyp-files-in-the-wild.md +10267 silly gunzTarPerm extractEntry node_modules/iconv-lite/Changelog.md +10268 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/CHANGELOG.md +10269 silly gunzTarPerm extractEntry node_modules/aproba/CHANGELOG.md +10270 silly gunzTarPerm extractEntry node_modules/mkdirp/CHANGELOG.md +10271 silly gunzTarPerm extractEntry node_modules/node-gyp/CHANGELOG.md +10272 silly gunzTarPerm extractEntry node_modules/braces/CHANGELOG.md +10273 silly gunzTarPerm extractEntry node_modules/ci-info/CHANGELOG.md +10274 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CHANGELOG.md +10275 silly gunzTarPerm extractEntry node_modules/nopt/CHANGELOG.md +10276 silly gunzTarPerm extractEntry node_modules/commander/CHANGELOG.md +10277 silly gunzTarPerm extractEntry node_modules/cross-spawn/CHANGELOG.md +10278 silly gunzTarPerm extractEntry node_modules/rimraf/CHANGELOG.md +10279 silly gunzTarPerm extractEntry node_modules/which/CHANGELOG.md +10280 silly gunzTarPerm extractEntry node_modules/deep-extend/CHANGELOG.md +10281 silly gunzTarPerm extractEntry node_modules/fd-slicer/CHANGELOG.md +10282 silly gunzTarPerm extractEntry node_modules/asap/CHANGES.md +10283 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CODE_OF_CONDUCT.md +10284 silly gunzTarPerm extractEntry node_modules/glob-parent/CHANGELOG.md +10285 silly gunzTarPerm extractEntry node_modules/iconv-lite/Changelog.md +10286 silly gunzTarPerm extractEntry docs/content/using-npm/config.md +10287 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/connectExample.md +10288 silly gunzTarPerm extractEntry node_modules/is-ci/CHANGELOG.md +10289 silly gunzTarPerm extractEntry node_modules/is-core-module/CHANGELOG.md +10290 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/connectExample.md +10291 silly gunzTarPerm extractEntry node_modules/diff/CONTRIBUTING.md +10292 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/CHANGELOG.md +10293 silly gunzTarPerm extractEntry node_modules/liquidjs/CHANGELOG.md +10294 silly gunzTarPerm extractEntry node_modules/node-gyp/CONTRIBUTING.md +10295 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CONTRIBUTING.md +10296 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/CHANGELOG.md +10297 silly gunzTarPerm extractEntry node_modules/mkdirp/CHANGELOG.md +10298 silly gunzTarPerm extractEntry node_modules/readable-stream/CONTRIBUTING.md +10299 silly gunzTarPerm extractEntry docs/content/using-npm/dependency-selectors.md +10300 silly gunzTarPerm extractEntry node_modules/nested-error-stacks/CHANGELOG.md +10301 silly gunzTarPerm extractEntry node_modules/node-gyp/CHANGELOG.md +10302 silly gunzTarPerm extractEntry docs/content/using-npm/developers.md +10303 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Error-pre-versions-of-node-cannot-be-installed.md +10304 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CHANGELOG.md +10305 silly gunzTarPerm extractEntry node_modules/nopt/CHANGELOG.md +10306 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/CHANGELOG.md +10307 silly gunzTarPerm extractEntry docs/content/configuring-npm/folders.md +10308 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Force-npm-to-use-global-node-gyp.md +10309 silly gunzTarPerm extractEntry node_modules/readable-stream/GOVERNANCE.md +10310 silly gunzTarPerm extractEntry node_modules/agentkeepalive/History.md +10311 silly gunzTarPerm extractEntry node_modules/picomatch/CHANGELOG.md +10312 silly gunzTarPerm extractEntry node_modules/registry-auth-token/CHANGELOG.md +10313 silly gunzTarPerm extractEntry node_modules/rimraf/CHANGELOG.md +10314 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/CHANGELOG.md +10315 silly gunzTarPerm extractEntry node_modules/delegates/History.md +10316 silly gunzTarPerm extractEntry node_modules/depd/History.md +10317 silly gunzTarPerm extractEntry node_modules/set-blocking/CHANGELOG.md +10318 silly gunzTarPerm extractEntry node_modules/smart-buffer/docs/CHANGELOG.md +10319 silly gunzTarPerm extractEntry node_modules/humanize-ms/History.md +10320 silly gunzTarPerm extractEntry node_modules/negotiator/HISTORY.md +10321 silly gunzTarPerm extractEntry node_modules/which/CHANGELOG.md +10322 silly gunzTarPerm extractEntry node_modules/wscript-avoider/CHANGELOG.md +10323 silly gunzTarPerm extractEntry node_modules/util-deprecate/History.md +10324 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Home.md +10325 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CODE_OF_CONDUCT.md +10326 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/javascript/connectExample.md +10327 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/index.md +10328 silly gunzTarPerm extractEntry node_modules/socks/docs/index.md +10329 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/typescript/connectExample.md +10330 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/CONTRIBUTING.md +10331 silly gunzTarPerm extractEntry node_modules/wcwidth/docs/index.md +10332 silly gunzTarPerm extractEntry docs/content/configuring-npm/install.md +10333 silly gunzTarPerm extractEntry node_modules/node-gyp/CONTRIBUTING.md +10334 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/CONTRIBUTING.md +10335 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/ISSUE_TEMPLATE.md +10336 silly gunzTarPerm extractEntry node_modules/@gar/promisify/LICENSE.md +10337 silly gunzTarPerm extractEntry node_modules/readable-stream/CONTRIBUTING.md +10338 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +10339 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/LICENSE.md +10340 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/LICENSE.md +10341 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Error-pre-versions-of-node-cannot-be-installed.md +10342 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Force-npm-to-use-global-node-gyp.md +10343 silly gunzTarPerm extractEntry node_modules/@npmcli/map-workspaces/LICENSE.md +10344 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/LICENSE.md +10345 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/GOVERNANCE.md +10346 silly gunzTarPerm extractEntry node_modules/readable-stream/GOVERNANCE.md +10347 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/LICENSE.md +10348 silly gunzTarPerm extractEntry node_modules/asap/LICENSE.md +10349 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +10350 silly gunzTarPerm extractEntry node_modules/agentkeepalive/History.md +10351 silly gunzTarPerm extractEntry node_modules/balanced-match/LICENSE.md +10352 silly gunzTarPerm extractEntry node_modules/cacache/LICENSE.md +10353 silly gunzTarPerm extractEntry node_modules/delegates/History.md +10354 silly gunzTarPerm extractEntry node_modules/depd/History.md +10355 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/license.md +10356 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/LICENSE.md +10357 silly gunzTarPerm extractEntry node_modules/humanize-ms/History.md +10358 silly gunzTarPerm extractEntry node_modules/mz/HISTORY.md +10359 silly gunzTarPerm extractEntry node_modules/gauge/LICENSE.md +10360 silly gunzTarPerm extractEntry node_modules/init-package-json/LICENSE.md +10361 silly gunzTarPerm extractEntry node_modules/negotiator/HISTORY.md +10362 silly gunzTarPerm extractEntry node_modules/thenify-all/History.md +10363 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/LICENSE.md +10364 silly gunzTarPerm extractEntry node_modules/libnpmhook/LICENSE.md +10365 silly gunzTarPerm extractEntry node_modules/thenify/History.md +10366 silly gunzTarPerm extractEntry node_modules/util-deprecate/History.md +10367 silly gunzTarPerm extractEntry node_modules/ms/license.md +10368 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/LICENSE.md +10369 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Home.md +10370 silly gunzTarPerm extractEntry node_modules/socks/docs/examples/index.md +10371 silly gunzTarPerm extractEntry node_modules/npm-profile/LICENSE.md +10372 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/LICENSE.md +10373 silly gunzTarPerm extractEntry node_modules/socks/docs/index.md +10374 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/ISSUE_TEMPLATE.md +10375 silly gunzTarPerm extractEntry node_modules/npmlog/LICENSE.md +10376 silly gunzTarPerm extractEntry node_modules/parse-conflict-json/LICENSE.md +10377 silly gunzTarPerm extractEntry node_modules/@gar/promisify/LICENSE.md +10378 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/LICENSE.md +10379 silly gunzTarPerm extractEntry node_modules/ssri/LICENSE.md +10380 silly gunzTarPerm extractEntry node_modules/tiny-relative-date/LICENSE.md +10381 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/LICENSE.md +10382 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/LICENSE.md +10383 silly gunzTarPerm extractEntry node_modules/balanced-match/LICENSE.md +10384 silly gunzTarPerm extractEntry node_modules/bl/LICENSE.md +10385 silly gunzTarPerm extractEntry node_modules/write-file-atomic/LICENSE.md +10386 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Linking-to-OpenSSL.md +10387 silly gunzTarPerm extractEntry node_modules/cacache/LICENSE.md +10388 silly gunzTarPerm extractEntry node_modules/gauge/LICENSE.md +10389 silly gunzTarPerm extractEntry docs/content/using-npm/logging.md +10390 silly gunzTarPerm extractEntry node_modules/node-gyp/macOS_Catalina.md +10391 silly gunzTarPerm extractEntry node_modules/socks/docs/migratingFromV1.md +10392 silly gunzTarPerm extractEntry docs/content/commands/npm-access.md +10393 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/LICENSE.md +10394 silly gunzTarPerm extractEntry node_modules/ms/license.md +10395 silly gunzTarPerm extractEntry docs/content/commands/npm-adduser.md +10396 silly gunzTarPerm extractEntry docs/content/commands/npm-audit.md +10397 silly gunzTarPerm extractEntry node_modules/node-fetch/LICENSE.md +10398 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/LICENSE.md +10399 silly gunzTarPerm extractEntry docs/content/commands/npm-bin.md +10400 silly gunzTarPerm extractEntry docs/content/commands/npm-bugs.md +10401 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/LICENSE.md +10402 silly gunzTarPerm extractEntry node_modules/npmlog/LICENSE.md +10403 silly gunzTarPerm extractEntry docs/content/commands/npm-cache.md +10404 silly gunzTarPerm extractEntry docs/content/commands/npm-ci.md +10405 silly gunzTarPerm extractEntry node_modules/process-nextick-args/license.md +10406 silly gunzTarPerm extractEntry node_modules/ssri/LICENSE.md +10407 silly gunzTarPerm extractEntry docs/content/commands/npm-completion.md +10408 silly gunzTarPerm extractEntry docs/content/commands/npm-config.md +10409 silly gunzTarPerm extractEntry node_modules/webidl-conversions/LICENSE.md +10410 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Linking-to-OpenSSL.md +10411 silly gunzTarPerm extractEntry docs/content/commands/npm-dedupe.md +10412 silly gunzTarPerm extractEntry docs/content/commands/npm-deprecate.md +10413 silly gunzTarPerm extractEntry node_modules/node-gyp/macOS_Catalina.md +10414 silly gunzTarPerm extractEntry node_modules/socks/docs/migratingFromV1.md +10415 silly gunzTarPerm extractEntry docs/content/commands/npm-diff.md +10416 silly gunzTarPerm extractEntry node_modules/safer-buffer/Porting-Buffer.md +10417 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/PULL_REQUEST_TEMPLATE.md +10418 silly gunzTarPerm extractEntry docs/content/commands/npm-dist-tag.md +10419 silly gunzTarPerm extractEntry docs/content/commands/npm-docs.md +10420 silly gunzTarPerm extractEntry node_modules/smart-buffer/docs/README_v3.md +10421 silly gunzTarPerm extractEntry bin/README.md +10422 silly gunzTarPerm extractEntry docs/content/commands/npm-doctor.md +10423 silly gunzTarPerm extractEntry docs/content/commands/npm-edit.md +10424 silly gunzTarPerm extractEntry node_modules/@gar/promisify/README.md +10425 silly gunzTarPerm extractEntry node_modules/@ilg/cli-start-options/README.md +10426 silly gunzTarPerm extractEntry docs/content/commands/npm-exec.md +10427 silly gunzTarPerm extractEntry docs/content/commands/npm-explain.md +10428 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/README.md +10429 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/test/README.md +10430 silly gunzTarPerm extractEntry docs/content/commands/npm-explore.md +10431 silly gunzTarPerm extractEntry docs/content/commands/npm-find-dupes.md +10432 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/README.md +10433 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/README.md +10434 silly gunzTarPerm extractEntry docs/content/commands/npm-fund.md +10435 silly gunzTarPerm extractEntry docs/content/commands/npm-help-search.md +10436 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/README.md +10437 silly gunzTarPerm extractEntry node_modules/@npmcli/fs/README.md +10438 silly gunzTarPerm extractEntry docs/content/commands/npm-help.md +10439 silly gunzTarPerm extractEntry docs/content/commands/npm-hook.md +10440 silly gunzTarPerm extractEntry node_modules/@npmcli/git/README.md +10441 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/README.md +10442 silly gunzTarPerm extractEntry docs/content/commands/npm-init.md +10443 silly gunzTarPerm extractEntry docs/content/commands/npm-install-ci-test.md +10444 silly gunzTarPerm extractEntry node_modules/@npmcli/move-file/README.md +10445 silly gunzTarPerm extractEntry node_modules/@npmcli/node-gyp/README.md +10446 silly gunzTarPerm extractEntry docs/content/commands/npm-install-test.md +10447 silly gunzTarPerm extractEntry docs/content/commands/npm-install.md +10448 silly gunzTarPerm extractEntry node_modules/@npmcli/promise-spawn/README.md +10449 silly gunzTarPerm extractEntry node_modules/@npmcli/run-script/README.md +10450 silly gunzTarPerm extractEntry docs/content/commands/npm-link.md +10451 silly gunzTarPerm extractEntry docs/content/commands/npm-logout.md +10452 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/readme.md +10453 silly gunzTarPerm extractEntry node_modules/@szmarczak/http-timer/README.md +10454 silly gunzTarPerm extractEntry docs/content/commands/npm-ls.md +10455 silly gunzTarPerm extractEntry docs/content/commands/npm-org.md +10456 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/README.md +10457 silly gunzTarPerm extractEntry node_modules/@xpack/cmd-shim/README.md +10458 silly gunzTarPerm extractEntry docs/content/commands/npm-outdated.md +10459 silly gunzTarPerm extractEntry docs/content/commands/npm-owner.md +10460 silly gunzTarPerm extractEntry docs/content/commands/npm-pack.md +10461 silly gunzTarPerm extractEntry docs/content/commands/npm-ping.md +10462 silly gunzTarPerm extractEntry node_modules/@xpack/es6-promisifier/README.md +10463 silly gunzTarPerm extractEntry node_modules/@xpack/logger/README.md +10464 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/README.md +10465 silly gunzTarPerm extractEntry node_modules/abbrev/README.md +10466 silly gunzTarPerm extractEntry node_modules/agent-base/README.md +10467 silly gunzTarPerm extractEntry docs/content/commands/npm-pkg.md +10468 silly gunzTarPerm extractEntry docs/content/commands/npm-prefix.md +10469 silly gunzTarPerm extractEntry node_modules/agentkeepalive/README.md +10470 silly gunzTarPerm extractEntry docs/content/commands/npm-profile.md +10471 silly gunzTarPerm extractEntry docs/content/commands/npm-prune.md +10472 silly gunzTarPerm extractEntry node_modules/aggregate-error/readme.md +10473 silly gunzTarPerm extractEntry node_modules/ansi-regex/readme.md +10474 silly gunzTarPerm extractEntry docs/content/commands/npm-publish.md +10475 silly gunzTarPerm extractEntry docs/content/commands/npm-query.md +10476 silly gunzTarPerm extractEntry docs/content/commands/npm-rebuild.md +10477 silly gunzTarPerm extractEntry node_modules/any-promise/README.md +10478 silly gunzTarPerm extractEntry node_modules/aproba/README.md +10479 silly gunzTarPerm extractEntry node_modules/are-we-there-yet/README.md +10480 silly gunzTarPerm extractEntry node_modules/array-union/readme.md +10481 silly gunzTarPerm extractEntry docs/content/commands/npm-repo.md +10482 silly gunzTarPerm extractEntry docs/content/commands/npm-restart.md +10483 silly gunzTarPerm extractEntry node_modules/balanced-match/README.md +10484 silly gunzTarPerm extractEntry node_modules/base64-js/README.md +10485 silly gunzTarPerm extractEntry docs/content/commands/npm-root.md +10486 silly gunzTarPerm extractEntry docs/content/commands/npm-run-script.md +10487 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/README.md +10488 silly gunzTarPerm extractEntry node_modules/bl/node_modules/safe-buffer/README.md +10489 silly gunzTarPerm extractEntry node_modules/bl/node_modules/string_decoder/README.md +10490 silly gunzTarPerm extractEntry node_modules/bl/README.md +10491 silly gunzTarPerm extractEntry docs/content/commands/npm-search.md +10492 silly gunzTarPerm extractEntry docs/content/commands/npm-set-script.md +10493 silly gunzTarPerm extractEntry node_modules/brace-expansion/README.md +10494 silly gunzTarPerm extractEntry node_modules/braces/README.md +10495 silly gunzTarPerm extractEntry docs/content/configuring-npm/npm-shrinkwrap-json.md +10496 silly gunzTarPerm extractEntry docs/content/commands/npm-shrinkwrap.md +10497 silly gunzTarPerm extractEntry node_modules/buffer-alloc-unsafe/readme.md +10498 silly gunzTarPerm extractEntry node_modules/buffer-alloc/readme.md +10499 silly gunzTarPerm extractEntry docs/content/commands/npm-star.md +10500 silly gunzTarPerm extractEntry docs/content/commands/npm-stars.md +10501 silly gunzTarPerm extractEntry node_modules/buffer-crc32/README.md +10502 silly gunzTarPerm extractEntry node_modules/buffer-fill/readme.md +10503 silly gunzTarPerm extractEntry docs/content/commands/npm-start.md +10504 silly gunzTarPerm extractEntry docs/content/commands/npm-stop.md +10505 silly gunzTarPerm extractEntry node_modules/buffer/README.md +10506 silly gunzTarPerm extractEntry node_modules/builtins/Readme.md +10507 silly gunzTarPerm extractEntry node_modules/cacache/README.md +10508 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/readme.md +10509 silly gunzTarPerm extractEntry docs/content/commands/npm-team.md +10510 silly gunzTarPerm extractEntry docs/content/commands/npm-test.md +10511 silly gunzTarPerm extractEntry docs/content/commands/npm-token.md +10512 silly gunzTarPerm extractEntry docs/content/commands/npm-uninstall.md +10513 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/lowercase-keys/readme.md +10514 silly gunzTarPerm extractEntry node_modules/cacheable-request/README.md +10515 silly gunzTarPerm extractEntry node_modules/chownr/README.md +10516 silly gunzTarPerm extractEntry node_modules/ci-info/README.md +10517 silly gunzTarPerm extractEntry node_modules/clean-stack/readme.md +10518 silly gunzTarPerm extractEntry node_modules/clone-response/README.md +10519 silly gunzTarPerm extractEntry docs/content/commands/npm-unpublish.md +10520 silly gunzTarPerm extractEntry docs/content/commands/npm-unstar.md +10521 silly gunzTarPerm extractEntry node_modules/color-support/README.md +10522 silly gunzTarPerm extractEntry node_modules/commander/Readme.md +10523 silly gunzTarPerm extractEntry docs/content/commands/npm-update.md +10524 silly gunzTarPerm extractEntry docs/content/commands/npm-version.md +10525 silly gunzTarPerm extractEntry node_modules/console-control-strings/README.md +10526 silly gunzTarPerm extractEntry node_modules/core-util-is/README.md +10527 silly gunzTarPerm extractEntry docs/content/commands/npm-view.md +10528 silly gunzTarPerm extractEntry docs/content/commands/npm-whoami.md +10529 silly gunzTarPerm extractEntry node_modules/cp-file/readme.md +10530 silly gunzTarPerm extractEntry node_modules/cross-spawn/README.md +10531 silly gunzTarPerm extractEntry docs/content/commands/npm.md +10532 silly gunzTarPerm extractEntry docs/content/configuring-npm/npmrc.md +10533 silly gunzTarPerm extractEntry node_modules/debug/README.md +10534 silly gunzTarPerm extractEntry node_modules/decompress-response/readme.md +10535 silly gunzTarPerm extractEntry docs/content/commands/npx.md +10536 silly gunzTarPerm extractEntry docs/content/using-npm/orgs.md +10537 silly gunzTarPerm extractEntry docs/content/configuring-npm/package-json.md +10538 silly gunzTarPerm extractEntry docs/content/configuring-npm/package-lock-json.md +10539 silly gunzTarPerm extractEntry node_modules/decompress-tar/readme.md +10540 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/node_modules/file-type/readme.md +10541 silly gunzTarPerm extractEntry docs/content/using-npm/package-spec.md +10542 silly gunzTarPerm extractEntry node_modules/safer-buffer/Porting-Buffer.md +10543 silly gunzTarPerm extractEntry node_modules/decompress-tarbz2/readme.md +10544 silly gunzTarPerm extractEntry node_modules/decompress-targz/readme.md +10545 silly gunzTarPerm extractEntry node_modules/decompress-unzip/node_modules/file-type/readme.md +10546 silly gunzTarPerm extractEntry node_modules/decompress-unzip/readme.md +10547 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/PULL_REQUEST_TEMPLATE.md +10548 silly gunzTarPerm extractEntry node_modules/@npmcli/arborist/README.md +10549 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/node_modules/pify/readme.md +10550 silly gunzTarPerm extractEntry node_modules/decompress/node_modules/make-dir/readme.md +10551 silly gunzTarPerm extractEntry node_modules/@npmcli/installed-package-contents/README.md +10552 silly gunzTarPerm extractEntry node_modules/aggregate-error/readme.md +10553 silly gunzTarPerm extractEntry node_modules/decompress/readme.md +10554 silly gunzTarPerm extractEntry node_modules/deep-extend/README.md +10555 silly gunzTarPerm extractEntry node_modules/ansi-regex/readme.md +10556 silly gunzTarPerm extractEntry node_modules/ansi-styles/readme.md +10557 silly gunzTarPerm extractEntry node_modules/defer-to-connect/README.md +10558 silly gunzTarPerm extractEntry node_modules/del/readme.md +10559 silly gunzTarPerm extractEntry node_modules/binary-extensions/readme.md +10560 silly gunzTarPerm extractEntry node_modules/builtins/Readme.md +10561 silly gunzTarPerm extractEntry node_modules/delegates/Readme.md +10562 silly gunzTarPerm extractEntry node_modules/depd/Readme.md +10563 silly gunzTarPerm extractEntry node_modules/dir-glob/readme.md +10564 silly gunzTarPerm extractEntry node_modules/duplexer3/readme.md +10565 silly gunzTarPerm extractEntry node_modules/chalk/readme.md +10566 silly gunzTarPerm extractEntry node_modules/clean-stack/readme.md +10567 silly gunzTarPerm extractEntry node_modules/color-support/README.md +10568 silly gunzTarPerm extractEntry node_modules/columnify/Readme.md +10569 silly gunzTarPerm extractEntry node_modules/emoji-regex/README.md +10570 silly gunzTarPerm extractEntry node_modules/encoding/README.md +10571 silly gunzTarPerm extractEntry node_modules/end-of-stream/README.md +10572 silly gunzTarPerm extractEntry node_modules/env-paths/readme.md +10573 silly gunzTarPerm extractEntry node_modules/cssesc/README.md +10574 silly gunzTarPerm extractEntry node_modules/debug/node_modules/ms/readme.md +10575 silly gunzTarPerm extractEntry node_modules/err-code/README.md +10576 silly gunzTarPerm extractEntry node_modules/fast-glob/README.md +10577 silly gunzTarPerm extractEntry node_modules/delegates/Readme.md +10578 silly gunzTarPerm extractEntry node_modules/depd/Readme.md +10579 silly gunzTarPerm extractEntry node_modules/fastq/README.md +10580 silly gunzTarPerm extractEntry node_modules/fd-slicer/README.md +10581 silly gunzTarPerm extractEntry node_modules/env-paths/readme.md +10582 silly gunzTarPerm extractEntry node_modules/has-flag/readme.md +10583 silly gunzTarPerm extractEntry node_modules/file-type/readme.md +10584 silly gunzTarPerm extractEntry node_modules/fill-range/README.md +10585 silly gunzTarPerm extractEntry node_modules/indent-string/readme.md +10586 silly gunzTarPerm extractEntry node_modules/ip-regex/readme.md +10587 silly gunzTarPerm extractEntry node_modules/fs-constants/README.md +10588 silly gunzTarPerm extractEntry node_modules/fs-minipass/README.md +10589 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/readme.md +10590 silly gunzTarPerm extractEntry node_modules/libnpmaccess/README.md +10591 silly gunzTarPerm extractEntry node_modules/fs.realpath/README.md +10592 silly gunzTarPerm extractEntry node_modules/function-bind/README.md +10593 silly gunzTarPerm extractEntry node_modules/gauge/README.md +10594 silly gunzTarPerm extractEntry node_modules/libnpmdiff/README.md +10595 silly gunzTarPerm extractEntry node_modules/libnpmexec/README.md +10596 silly gunzTarPerm extractEntry node_modules/get-stream/readme.md +10597 silly gunzTarPerm extractEntry node_modules/git-config-path/README.md +10598 silly gunzTarPerm extractEntry node_modules/libnpmfund/README.md +10599 silly gunzTarPerm extractEntry node_modules/libnpmhook/README.md +10600 silly gunzTarPerm extractEntry node_modules/glob-parent/README.md +10601 silly gunzTarPerm extractEntry node_modules/glob/README.md +10602 silly gunzTarPerm extractEntry node_modules/libnpmorg/README.md +10603 silly gunzTarPerm extractEntry node_modules/libnpmpack/README.md +10604 silly gunzTarPerm extractEntry node_modules/global-dirs/readme.md +10605 silly gunzTarPerm extractEntry node_modules/globby/readme.md +10606 silly gunzTarPerm extractEntry node_modules/got/node_modules/get-stream/readme.md +10607 silly gunzTarPerm extractEntry node_modules/got/readme.md +10608 silly gunzTarPerm extractEntry node_modules/libnpmpublish/README.md +10609 silly gunzTarPerm extractEntry node_modules/libnpmsearch/README.md +10610 silly gunzTarPerm extractEntry node_modules/graceful-fs/README.md +10611 silly gunzTarPerm extractEntry node_modules/has-unicode/README.md +10612 silly gunzTarPerm extractEntry node_modules/has/README.md +10613 silly gunzTarPerm extractEntry node_modules/hosted-git-info/README.md +10614 silly gunzTarPerm extractEntry node_modules/libnpmteam/README.md +10615 silly gunzTarPerm extractEntry node_modules/libnpmversion/README.md +10616 silly gunzTarPerm extractEntry node_modules/http-cache-semantics/README.md +10617 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/README.md +10618 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/README.md +10619 silly gunzTarPerm extractEntry node_modules/humanize-ms/README.md +10620 silly gunzTarPerm extractEntry node_modules/iconv-lite/README.md +10621 silly gunzTarPerm extractEntry node_modules/ms/readme.md +10622 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/README.md +10623 silly gunzTarPerm extractEntry node_modules/ieee754/README.md +10624 silly gunzTarPerm extractEntry node_modules/ignore-walk/README.md +10625 silly gunzTarPerm extractEntry node_modules/ignore/README.md +10626 silly gunzTarPerm extractEntry node_modules/imurmurhash/README.md +10627 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/README.md +10628 silly gunzTarPerm extractEntry node_modules/node-gyp/README.md +10629 silly gunzTarPerm extractEntry node_modules/indent-string/readme.md +10630 silly gunzTarPerm extractEntry node_modules/infer-owner/README.md +10631 silly gunzTarPerm extractEntry node_modules/inflight/README.md +10632 silly gunzTarPerm extractEntry node_modules/inherits/README.md +10633 silly gunzTarPerm extractEntry node_modules/nopt/README.md +10634 silly gunzTarPerm extractEntry node_modules/npm-packlist/README.md +10635 silly gunzTarPerm extractEntry node_modules/ini/README.md +10636 silly gunzTarPerm extractEntry node_modules/ip/README.md +10637 silly gunzTarPerm extractEntry node_modules/is-ci/README.md +10638 silly gunzTarPerm extractEntry node_modules/opener/README.md +10639 silly gunzTarPerm extractEntry node_modules/p-map/readme.md +10640 silly gunzTarPerm extractEntry node_modules/is-core-module/README.md +10641 silly gunzTarPerm extractEntry node_modules/is-extglob/README.md +10642 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/readme.md +10643 silly gunzTarPerm extractEntry node_modules/is-glob/README.md +10644 silly gunzTarPerm extractEntry node_modules/pacote/README.md +10645 silly gunzTarPerm extractEntry node_modules/path-is-absolute/readme.md +10646 silly gunzTarPerm extractEntry node_modules/is-installed-globally/readme.md +10647 silly gunzTarPerm extractEntry node_modules/is-lambda/README.md +10648 silly gunzTarPerm extractEntry node_modules/is-natural-number/README.md +10649 silly gunzTarPerm extractEntry node_modules/is-number/README.md +10650 silly gunzTarPerm extractEntry node_modules/is-path-cwd/readme.md +10651 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/README.md +10652 silly gunzTarPerm extractEntry node_modules/is-path-inside/readme.md +10653 silly gunzTarPerm extractEntry node_modules/rimraf/README.md +10654 silly gunzTarPerm extractEntry node_modules/is-stream/readme.md +10655 silly gunzTarPerm extractEntry node_modules/safer-buffer/Readme.md +10656 silly gunzTarPerm extractEntry node_modules/semver/README.md +10657 silly gunzTarPerm extractEntry node_modules/is-windows/README.md +10658 silly gunzTarPerm extractEntry node_modules/isarray/README.md +10659 silly gunzTarPerm extractEntry node_modules/string-width/readme.md +10660 silly gunzTarPerm extractEntry node_modules/strip-ansi/readme.md +10661 silly gunzTarPerm extractEntry node_modules/isexe/README.md +10662 silly gunzTarPerm extractEntry node_modules/json-buffer/README.md +10663 silly gunzTarPerm extractEntry node_modules/json-parse-even-better-errors/README.md +10664 silly gunzTarPerm extractEntry node_modules/supports-color/readme.md +10665 silly gunzTarPerm extractEntry node_modules/wcwidth/Readme.md +10666 silly gunzTarPerm extractEntry node_modules/keyv/README.md +10667 silly gunzTarPerm extractEntry node_modules/latest-version/readme.md +10668 silly gunzTarPerm extractEntry node_modules/liquidjs/README.md +10669 silly gunzTarPerm extractEntry node_modules/lowercase-keys/readme.md +10670 silly gunzTarPerm extractEntry node_modules/which/README.md +10671 silly gunzTarPerm extractEntry README.md +10672 silly gunzTarPerm extractEntry node_modules/lru-cache/README.md +10673 silly gunzTarPerm extractEntry node_modules/make-dir/node_modules/semver/README.md +10674 silly gunzTarPerm extractEntry docs/content/using-npm/registry.md +10675 silly gunzTarPerm extractEntry node_modules/diff/release-notes.md +10676 silly gunzTarPerm extractEntry node_modules/make-dir/readme.md +10677 silly gunzTarPerm extractEntry node_modules/make-fetch-happen/README.md +10678 silly gunzTarPerm extractEntry node_modules/merge2/README.md +10679 silly gunzTarPerm extractEntry docs/content/using-npm/removal.md +10680 silly gunzTarPerm extractEntry node_modules/smart-buffer/docs/ROADMAP.md +10681 silly gunzTarPerm extractEntry node_modules/micromatch/README.md +10682 silly gunzTarPerm extractEntry node_modules/mimic-response/readme.md +10683 silly gunzTarPerm extractEntry node_modules/minimatch/README.md +10684 silly gunzTarPerm extractEntry node_modules/minipass-collect/README.md +10685 silly gunzTarPerm extractEntry node_modules/minipass-fetch/README.md +10686 silly gunzTarPerm extractEntry docs/content/using-npm/scope.md +10687 silly gunzTarPerm extractEntry docs/content/using-npm/scripts.md +10688 silly gunzTarPerm extractEntry node_modules/minipass-flush/README.md +10689 silly gunzTarPerm extractEntry node_modules/minipass-json-stream/README.md +10690 silly gunzTarPerm extractEntry node_modules/minipass-pipeline/README.md +10691 silly gunzTarPerm extractEntry node_modules/minipass-sized/README.md +10692 silly gunzTarPerm extractEntry node_modules/minipass/README.md +10693 silly gunzTarPerm extractEntry node_modules/node-gyp/SECURITY.md +10694 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Updating-npm-bundled-node-gyp.md +10695 silly gunzTarPerm extractEntry node_modules/minizlib/README.md +10696 silly gunzTarPerm extractEntry node_modules/mkdirp-infer-owner/README.md +10697 silly gunzTarPerm extractEntry node_modules/ms/readme.md +10698 silly gunzTarPerm extractEntry docs/content/using-npm/workspaces.md +10699 silly gunzTarPerm extractEntry node_modules/diff/lib/index.mjs +10700 silly gunzTarPerm extractEntry node_modules/mz/README.md +10701 silly gunzTarPerm extractEntry node_modules/negotiator/README.md +10702 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.mjs +10703 silly gunzTarPerm extractEntry node_modules/just-diff/index.mjs +10704 silly gunzTarPerm extractEntry node_modules/nested-error-stacks/README.md +10705 silly gunzTarPerm extractEntry node_modules/node-fetch/README.md +10706 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.pbfilespec +10707 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/example/basic.png +10708 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/README.md +10709 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/README.md +10710 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/sort-arrow-sprite.png +10711 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/brace-expansion/README.md +10712 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/glob/README.md +10713 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__init__.py +10714 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +10715 silly gunzTarPerm extractEntry node_modules/node-gyp/node_modules/minimatch/README.md +10716 silly gunzTarPerm extractEntry node_modules/node-gyp/README.md +10717 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +10718 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +10719 silly gunzTarPerm extractEntry node_modules/nopt/README.md +10720 silly gunzTarPerm extractEntry node_modules/normalize-package-data/README.md +10721 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +10722 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/common_test.py +10723 silly gunzTarPerm extractEntry node_modules/normalize-url/readme.md +10724 silly gunzTarPerm extractEntry node_modules/npm-bundled/README.md +10725 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/common.py +10726 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +10727 silly gunzTarPerm extractEntry node_modules/npm-install-checks/README.md +10728 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/README.md +10729 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +10730 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +10731 silly gunzTarPerm extractEntry node_modules/npm-package-arg/README.md +10732 silly gunzTarPerm extractEntry node_modules/npm-packlist/README.md +10733 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +10734 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +10735 silly gunzTarPerm extractEntry node_modules/npm-pick-manifest/README.md +10736 silly gunzTarPerm extractEntry node_modules/npm-registry-fetch/README.md +10737 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +10738 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/graphviz.py +10739 silly gunzTarPerm extractEntry node_modules/npmlog/README.md +10740 silly gunzTarPerm extractEntry node_modules/object-assign/readme.md +10741 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp_main.py +10742 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +10743 silly gunzTarPerm extractEntry node_modules/once/README.md +10744 silly gunzTarPerm extractEntry node_modules/p-cancelable/readme.md +10745 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +10746 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/input_test.py +10747 silly gunzTarPerm extractEntry node_modules/p-event/readme.md +10748 silly gunzTarPerm extractEntry node_modules/p-finally/readme.md +10749 silly gunzTarPerm extractEntry node_modules/p-map/readme.md +10750 silly gunzTarPerm extractEntry node_modules/p-timeout/readme.md +10751 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/input.py +10752 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +10753 silly gunzTarPerm extractEntry node_modules/package-json/node_modules/semver/README.md +10754 silly gunzTarPerm extractEntry node_modules/package-json/readme.md +10755 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +10756 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +10757 silly gunzTarPerm extractEntry node_modules/pacote/README.md +10758 silly gunzTarPerm extractEntry node_modules/parse-git-config/node_modules/ini/README.md +10759 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +10760 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +10761 silly gunzTarPerm extractEntry node_modules/parse-git-config/README.md +10762 silly gunzTarPerm extractEntry node_modules/path-is-absolute/readme.md +10763 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +10764 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +10765 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +10766 silly gunzTarPerm extractEntry node_modules/path-key/readme.md +10767 silly gunzTarPerm extractEntry node_modules/path-type/readme.md +10768 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +10769 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +10770 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +10771 silly gunzTarPerm extractEntry node_modules/pend/README.md +10772 silly gunzTarPerm extractEntry node_modules/picomatch/README.md +10773 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +10774 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +10775 silly gunzTarPerm extractEntry node_modules/pify/readme.md +10776 silly gunzTarPerm extractEntry node_modules/pinkie-promise/readme.md +10777 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +10778 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +10779 silly gunzTarPerm extractEntry node_modules/pinkie/readme.md +10780 silly gunzTarPerm extractEntry node_modules/prepend-http/readme.md +10781 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +10782 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_gyp.py +10783 silly gunzTarPerm extractEntry node_modules/proc-log/README.md +10784 silly gunzTarPerm extractEntry node_modules/process-nextick-args/readme.md +10785 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_sln.py +10786 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_vcproj.py +10787 silly gunzTarPerm extractEntry node_modules/promise-inflight/README.md +10788 silly gunzTarPerm extractEntry node_modules/promise-retry/README.md +10789 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/setup.py +10790 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +10791 silly gunzTarPerm extractEntry node_modules/pump/README.md +10792 silly gunzTarPerm extractEntry node_modules/queue-microtask/README.md +10793 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/test_gyp.py +10794 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/test-charmap.py +10795 silly gunzTarPerm extractEntry node_modules/rc/node_modules/ini/README.md +10796 silly gunzTarPerm extractEntry node_modules/rc/README.md +10797 silly gunzTarPerm extractEntry node_modules/node-gyp/update-gyp.py +10798 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +10799 silly gunzTarPerm extractEntry node_modules/read-package-json-fast/README.md +10800 silly gunzTarPerm extractEntry node_modules/read-package-json/README.md +10801 silly gunzTarPerm extractEntry node_modules/readable-stream/README.md +10802 silly gunzTarPerm extractEntry node_modules/registry-auth-token/README.md +10803 silly gunzTarPerm extractEntry node_modules/registry-url/readme.md +10804 silly gunzTarPerm extractEntry node_modules/responselike/README.md +10805 silly gunzTarPerm extractEntry node_modules/retry/README.md +10806 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +10807 silly gunzTarPerm extractEntry node_modules/reusify/README.md +10808 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +10809 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +10810 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/brace-expansion/README.md +10811 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/glob/README.md +10812 silly gunzTarPerm extractEntry node_modules/rimraf/node_modules/minimatch/README.md +10813 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +10814 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +10815 silly gunzTarPerm extractEntry node_modules/rimraf/README.md +10816 silly gunzTarPerm extractEntry node_modules/run-parallel/README.md +10817 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +10818 silly gunzTarPerm extractEntry node_modules/safe-buffer/README.md +10819 silly gunzTarPerm extractEntry node_modules/safer-buffer/Readme.md +10820 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/__init__.cpython-39.pyc +10821 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/__init__.cpython-39.pyc +10822 silly gunzTarPerm extractEntry node_modules/seek-bzip/README.md +10823 silly gunzTarPerm extractEntry node_modules/semver-diff/node_modules/semver/README.md +10824 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/common.cpython-39.pyc +10825 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/input.cpython-39.pyc +10826 silly gunzTarPerm extractEntry node_modules/semver-diff/readme.md +10827 silly gunzTarPerm extractEntry node_modules/semver/node_modules/lru-cache/README.md +10828 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/make.cpython-39.pyc +10829 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/msvs_emulation.cpython-39.pyc +10830 silly gunzTarPerm extractEntry node_modules/semver/README.md +10831 silly gunzTarPerm extractEntry node_modules/set-blocking/README.md +10832 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSUtil.cpython-39.pyc +10833 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/MSVSVersion.cpython-39.pyc +10834 silly gunzTarPerm extractEntry node_modules/shebang-command/readme.md +10835 silly gunzTarPerm extractEntry node_modules/shebang-regex/readme.md +10836 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/ninja_syntax.cpython-39.pyc +10837 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/ninja.cpython-39.pyc +10838 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/simple_copy.cpython-39.pyc +10839 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_emulation.cpython-39.pyc +10840 silly gunzTarPerm extractEntry node_modules/signal-exit/README.md +10841 silly gunzTarPerm extractEntry node_modules/slash/readme.md +10842 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcode_ninja.cpython-39.pyc +10843 silly gunzTarPerm extractEntry node_modules/smart-buffer/README.md +10844 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/README.md +10845 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__pycache__/xcode.cpython-39.pyc +10846 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__pycache__/xcodeproj_file.cpython-39.pyc +10847 silly gunzTarPerm extractEntry node_modules/socks/README.md +10848 silly gunzTarPerm extractEntry node_modules/spdx-correct/README.md +10849 silly gunzTarPerm extractEntry lib/utils/completion.sh +10850 silly gunzTarPerm extractEntry node_modules/node-gyp/macOS_Catalina_acid_test.sh +10851 silly gunzTarPerm extractEntry node_modules/spdx-exceptions/README.md +10852 silly gunzTarPerm extractEntry node_modules/spdx-expression-parse/README.md +10853 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh +10854 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.d.ts +10855 silly gunzTarPerm extractEntry node_modules/spdx-license-ids/README.md +10856 silly gunzTarPerm extractEntry node_modules/ssri/README.md +10857 silly gunzTarPerm extractEntry node_modules/string_decoder/README.md +10858 silly gunzTarPerm extractEntry node_modules/string-width/readme.md +10859 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.d.ts +10860 silly gunzTarPerm extractEntry node_modules/binary-extensions/binary-extensions.json.d.ts +10861 silly gunzTarPerm extractEntry node_modules/socks/typings/common/constants.d.ts +10862 silly gunzTarPerm extractEntry node_modules/socks/typings/common/helpers.d.ts +10863 silly gunzTarPerm extractEntry node_modules/@colors/colors/index.d.ts +10864 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.d.ts +10865 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.d.ts +10866 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.d.ts +10867 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.d.ts +10868 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.d.ts +10869 silly gunzTarPerm extractEntry node_modules/ansi-styles/index.d.ts +10870 silly gunzTarPerm extractEntry node_modules/binary-extensions/index.d.ts +10871 silly gunzTarPerm extractEntry node_modules/chalk/index.d.ts +10872 silly gunzTarPerm extractEntry node_modules/cidr-regex/index.d.ts +10873 silly gunzTarPerm extractEntry node_modules/clean-stack/index.d.ts +10874 silly gunzTarPerm extractEntry node_modules/cli-table3/index.d.ts +10875 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.d.ts +10876 silly gunzTarPerm extractEntry node_modules/env-paths/index.d.ts +10877 silly gunzTarPerm extractEntry node_modules/fastest-levenshtein/index.d.ts +10878 silly gunzTarPerm extractEntry node_modules/has-flag/index.d.ts +10879 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.d.ts +10880 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.d.ts +10881 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.d.ts +10882 silly gunzTarPerm extractEntry node_modules/indent-string/index.d.ts +10883 silly gunzTarPerm extractEntry node_modules/ip-regex/index.d.ts +10884 silly gunzTarPerm extractEntry node_modules/is-cidr/index.d.ts +10885 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.d.ts +10886 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.d.ts +10887 silly gunzTarPerm extractEntry node_modules/just-diff/index.d.ts +10888 silly gunzTarPerm extractEntry node_modules/lru-cache/index.d.ts +10889 silly gunzTarPerm extractEntry node_modules/minipass/index.d.ts +10890 silly gunzTarPerm extractEntry node_modules/p-map/index.d.ts +10891 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.d.ts +10892 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.d.ts +10893 silly gunzTarPerm extractEntry node_modules/socks/typings/index.d.ts +10894 silly gunzTarPerm extractEntry node_modules/string-width/index.d.ts +10895 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.d.ts +10896 silly gunzTarPerm extractEntry node_modules/just-diff-apply/index.tests.ts +10897 silly gunzTarPerm extractEntry node_modules/just-diff/index.tests.ts +10898 silly gunzTarPerm extractEntry node_modules/agent-base/src/index.ts +10899 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts +10900 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +10901 silly gunzTarPerm extractEntry node_modules/postcss-selector-parser/postcss-selector-parser.d.ts +10902 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.d.ts +10903 silly gunzTarPerm extractEntry node_modules/agent-base/src/promisify.ts +10904 silly gunzTarPerm extractEntry node_modules/socks/typings/common/receivebuffer.d.ts +10905 silly gunzTarPerm extractEntry node_modules/@colors/colors/safe.d.ts +10906 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/smartbuffer.d.ts +10907 silly gunzTarPerm extractEntry node_modules/socks/typings/client/socksclient.d.ts +10908 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.d.ts +10909 silly gunzTarPerm extractEntry node_modules/socks/typings/common/util.d.ts +10910 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/utils.d.ts +10911 silly gunzTarPerm extractEntry node_modules/cssesc/LICENSE-MIT.txt +10912 silly gunzTarPerm extractEntry node_modules/emoji-regex/LICENSE-MIT.txt +10913 silly gunzTarPerm extractEntry node_modules/opener/LICENSE.txt +10914 silly gunzTarPerm extractEntry node_modules/set-blocking/LICENSE.txt +10915 silly gunzTarPerm extractEntry node_modules/signal-exit/LICENSE.txt +10916 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/requirements_dev.txt +10917 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt +10918 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt +10919 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Express.txt +10920 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt +10921 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt +10922 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt +10923 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt +10924 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec +10925 silly gunzTarPerm extractEntry node_modules/qrcode-terminal/.travis.yml +10926 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/node-gyp.yml +10927 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/nodejs-windows.yml +10928 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/Python_tests.yml +10929 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/release-please.yml +10930 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/release-please.yml +10931 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/tests.yml +10932 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/visual-studio.yml +10933 silly gunzTarPerm extractEntry node_modules/strip-ansi/readme.md +10934 silly gunzTarPerm extractEntry node_modules/strip-dirs/README.md +10935 silly gunzTarPerm extractEntry node_modules/strip-json-comments/readme.md +10936 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/README.md +10937 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/safe-buffer/README.md +10938 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/string_decoder/README.md +10939 silly gunzTarPerm extractEntry node_modules/tar-stream/README.md +10940 silly gunzTarPerm extractEntry node_modules/tar/README.md +10941 silly gunzTarPerm extractEntry node_modules/thenify-all/README.md +10942 silly gunzTarPerm extractEntry node_modules/thenify/README.md +10943 silly gunzTarPerm extractEntry node_modules/to-buffer/README.md +10944 silly gunzTarPerm extractEntry node_modules/to-readable-stream/readme.md +10945 silly gunzTarPerm extractEntry node_modules/to-regex-range/README.md +10946 silly gunzTarPerm extractEntry node_modules/unbzip2-stream/README.md +10947 silly gunzTarPerm extractEntry node_modules/unique-filename/README.md +10948 silly gunzTarPerm extractEntry node_modules/unique-slug/README.md +10949 silly gunzTarPerm extractEntry node_modules/url-parse-lax/readme.md +10950 silly gunzTarPerm extractEntry node_modules/util-deprecate/README.md +10951 silly gunzTarPerm extractEntry node_modules/validate-npm-package-license/README.md +10952 silly gunzTarPerm extractEntry node_modules/validate-npm-package-name/README.md +10953 silly gunzTarPerm extractEntry node_modules/webidl-conversions/README.md +10954 silly gunzTarPerm extractEntry node_modules/whatwg-url/README.md +10955 silly gunzTarPerm extractEntry node_modules/which/README.md +10956 silly gunzTarPerm extractEntry node_modules/wide-align/README.md +10957 silly gunzTarPerm extractEntry node_modules/wrappy/README.md +10958 silly gunzTarPerm extractEntry node_modules/wscript-avoider/README.md +10959 silly gunzTarPerm extractEntry node_modules/xtend/README.md +10960 silly gunzTarPerm extractEntry node_modules/yallist/README.md +10961 silly gunzTarPerm extractEntry node_modules/yauzl/README.md +10962 silly gunzTarPerm extractEntry README.md +10963 silly gunzTarPerm extractEntry node_modules/smart-buffer/docs/ROADMAP.md +10964 silly gunzTarPerm extractEntry node_modules/node-gyp/SECURITY.md +10965 silly gunzTarPerm extractEntry node_modules/node-gyp/docs/Updating-npm-bundled-node-gyp.md +10966 silly gunzTarPerm extractEntry node_modules/console-control-strings/README.md~ +10967 silly gunzTarPerm extractEntry node_modules/rc/LICENSE.MIT +10968 silly gunzTarPerm extractEntry node_modules/through/LICENSE.MIT +10969 silly gunzTarPerm extractEntry node_modules/fastq/example.mjs +10970 silly gunzTarPerm extractEntry node_modules/node-fetch/lib/index.mjs +10971 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.pbfilespec +10972 silly gunzTarPerm extractEntry node_modules/unique-filename/coverage/sort-arrow-sprite.png +10973 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/__init__.py +10974 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +10975 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +10976 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +10977 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +10978 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/common_test.py +10979 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/common.py +10980 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +10981 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +10982 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +10983 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +10984 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +10985 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +10986 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/graphviz.py +10987 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/gyp_main.py +10988 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +10989 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +10990 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/input_test.py +10991 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/input.py +10992 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +10993 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +10994 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +10995 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +10996 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +10997 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +10998 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +10999 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +11000 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +11001 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +11002 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +11003 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +11004 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +11005 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +11006 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +11007 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +11008 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_gyp.py +11009 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_sln.py +11010 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/pretty_vcproj.py +11011 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/setup.py +11012 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +11013 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/test_gyp.py +11014 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/test-charmap.py +11015 silly gunzTarPerm extractEntry node_modules/node-gyp/update-gyp.py +11016 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +11017 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +11018 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +11019 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +11020 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +11021 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +11022 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +11023 silly gunzTarPerm extractEntry node_modules/node-gyp/macOS_Catalina_acid_test.sh +11024 silly gunzTarPerm extractEntry node_modules/wscript-avoider/scripts/run-travis.sh +11025 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh +11026 silly gunzTarPerm extractEntry node_modules/wscript-avoider/scripts/travis.sh +11027 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/agent.d.ts +11028 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/agent.d.ts +11029 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/array.d.ts +11030 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/array.d.ts +11031 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/assert.d.ts +11032 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/assign.d.ts +11033 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +11034 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/providers/async.d.ts +11035 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/async.d.ts +11036 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/async.d.ts +11037 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/async.d.ts +11038 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/async.d.ts +11039 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/blank-drop.d.ts +11040 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/block-drop.d.ts +11041 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/context/block-mode.d.ts +11042 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/block.d.ts +11043 silly gunzTarPerm extractEntry node_modules/any-promise/register/bluebird.d.ts +11044 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/boolean.d.ts +11045 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/break.d.ts +11046 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/browser.d.ts +11047 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/cache/cache.d.ts +11048 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/capture.d.ts +11049 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/case.d.ts +11050 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/character.d.ts +11051 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/collection.d.ts +11052 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/comment.d.ts +11053 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +11054 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/common.d.ts +11055 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/comparable.d.ts +11056 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/constants.d.ts +11057 silly gunzTarPerm extractEntry node_modules/socks/typings/common/constants.d.ts +11058 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/context/context.d.ts +11059 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/continue.d.ts +11060 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/cycle.d.ts +11061 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/date.d.ts +11062 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/decrement.d.ts +11063 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/deep.d.ts +11064 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/delimited-token.d.ts +11065 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/drop.d.ts +11066 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/echo.d.ts +11067 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/emitter.d.ts +11068 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/empty-drop.d.ts +11069 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/entry.d.ts +11070 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/transformers/entry.d.ts +11071 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/errno.d.ts +11072 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/filters/error.d.ts +11073 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/error.d.ts +11074 silly gunzTarPerm extractEntry node_modules/any-promise/register/es6-promise.d.ts +11075 silly gunzTarPerm extractEntry node_modules/fastq/test/example.ts +11076 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/expression.d.ts +11077 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/filter-arg.d.ts +11078 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter-impl-options.d.ts +11079 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter-impl.d.ts +11080 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter-map.d.ts +11081 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/filter-token.d.ts +11082 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/filter/filter.d.ts +11083 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/for.d.ts +11084 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/forloop-drop.d.ts +11085 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +11086 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +11087 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +11088 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/fs.d.ts +11089 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/fs.d.ts +11090 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/hash-token.d.ts +11091 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/hash.d.ts +11092 silly gunzTarPerm extractEntry node_modules/socks/typings/common/helpers.d.ts +11093 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/html-token.d.ts +11094 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/html.d.ts +11095 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/html.d.ts +11096 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/identifier-token.d.ts +11097 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/if.d.ts +11098 silly gunzTarPerm extractEntry node_modules/any-promise/implementation.d.ts +11099 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/include.d.ts +11100 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/increment.d.ts +11101 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/index.d.ts +11102 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/types/index.d.ts +11103 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +11104 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/index.d.ts +11105 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/types/index.d.ts +11106 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/index.d.ts +11107 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/index.d.ts +11108 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/types/index.d.ts +11109 silly gunzTarPerm extractEntry node_modules/@sindresorhus/is/dist/index.d.ts +11110 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/index.d.ts +11111 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/index.d.ts +11112 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/index.d.ts +11113 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/index.d.ts +11114 silly gunzTarPerm extractEntry node_modules/agentkeepalive/index.d.ts +11115 silly gunzTarPerm extractEntry node_modules/aggregate-error/index.d.ts +11116 silly gunzTarPerm extractEntry node_modules/ansi-regex/index.d.ts +11117 silly gunzTarPerm extractEntry node_modules/any-promise/index.d.ts +11118 silly gunzTarPerm extractEntry node_modules/array-union/index.d.ts +11119 silly gunzTarPerm extractEntry node_modules/base64-js/index.d.ts +11120 silly gunzTarPerm extractEntry node_modules/bl/node_modules/safe-buffer/index.d.ts +11121 silly gunzTarPerm extractEntry node_modules/buffer/index.d.ts +11122 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/get-stream/index.d.ts +11123 silly gunzTarPerm extractEntry node_modules/cacheable-request/node_modules/lowercase-keys/index.d.ts +11124 silly gunzTarPerm extractEntry node_modules/ci-info/index.d.ts +11125 silly gunzTarPerm extractEntry node_modules/clean-stack/index.d.ts +11126 silly gunzTarPerm extractEntry node_modules/commander/typings/index.d.ts +11127 silly gunzTarPerm extractEntry node_modules/cp-file/index.d.ts +11128 silly gunzTarPerm extractEntry node_modules/defer-to-connect/dist/index.d.ts +11129 silly gunzTarPerm extractEntry node_modules/del/index.d.ts +11130 silly gunzTarPerm extractEntry node_modules/emoji-regex/index.d.ts +11131 silly gunzTarPerm extractEntry node_modules/env-paths/index.d.ts +11132 silly gunzTarPerm extractEntry node_modules/fast-glob/out/index.d.ts +11133 silly gunzTarPerm extractEntry node_modules/fast-glob/out/types/index.d.ts +11134 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/index.d.ts +11135 silly gunzTarPerm extractEntry node_modules/fastq/index.d.ts +11136 silly gunzTarPerm extractEntry node_modules/global-dirs/index.d.ts +11137 silly gunzTarPerm extractEntry node_modules/globby/index.d.ts +11138 silly gunzTarPerm extractEntry node_modules/http-proxy-agent/dist/index.d.ts +11139 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/index.d.ts +11140 silly gunzTarPerm extractEntry node_modules/iconv-lite/lib/index.d.ts +11141 silly gunzTarPerm extractEntry node_modules/ieee754/index.d.ts +11142 silly gunzTarPerm extractEntry node_modules/ignore/index.d.ts +11143 silly gunzTarPerm extractEntry node_modules/indent-string/index.d.ts +11144 silly gunzTarPerm extractEntry node_modules/is-fullwidth-code-point/index.d.ts +11145 silly gunzTarPerm extractEntry node_modules/is-installed-globally/index.d.ts +11146 silly gunzTarPerm extractEntry node_modules/is-path-cwd/index.d.ts +11147 silly gunzTarPerm extractEntry node_modules/is-path-inside/index.d.ts +11148 silly gunzTarPerm extractEntry node_modules/latest-version/index.d.ts +11149 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/index.d.ts +11150 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/index.d.ts +11151 silly gunzTarPerm extractEntry node_modules/lru-cache/index.d.ts +11152 silly gunzTarPerm extractEntry node_modules/make-dir/index.d.ts +11153 silly gunzTarPerm extractEntry node_modules/minipass/index.d.ts +11154 silly gunzTarPerm extractEntry node_modules/normalize-url/index.d.ts +11155 silly gunzTarPerm extractEntry node_modules/p-cancelable/index.d.ts +11156 silly gunzTarPerm extractEntry node_modules/p-event/index.d.ts +11157 silly gunzTarPerm extractEntry node_modules/p-map/index.d.ts +11158 silly gunzTarPerm extractEntry node_modules/p-timeout/index.d.ts +11159 silly gunzTarPerm extractEntry node_modules/package-json/index.d.ts +11160 silly gunzTarPerm extractEntry node_modules/path-key/index.d.ts +11161 silly gunzTarPerm extractEntry node_modules/path-type/index.d.ts +11162 silly gunzTarPerm extractEntry node_modules/queue-microtask/index.d.ts +11163 silly gunzTarPerm extractEntry node_modules/registry-url/index.d.ts +11164 silly gunzTarPerm extractEntry node_modules/safe-buffer/index.d.ts +11165 silly gunzTarPerm extractEntry node_modules/semver-diff/index.d.ts +11166 silly gunzTarPerm extractEntry node_modules/shebang-regex/index.d.ts +11167 silly gunzTarPerm extractEntry node_modules/slash/index.d.ts +11168 silly gunzTarPerm extractEntry node_modules/socks-proxy-agent/dist/index.d.ts +11169 silly gunzTarPerm extractEntry node_modules/socks/typings/index.d.ts +11170 silly gunzTarPerm extractEntry node_modules/string-width/index.d.ts +11171 silly gunzTarPerm extractEntry node_modules/strip-ansi/index.d.ts +11172 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/safe-buffer/index.d.ts +11173 silly gunzTarPerm extractEntry node_modules/agent-base/src/index.ts +11174 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/inline-comment.d.ts +11175 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/keeping-type-emitter.d.ts +11176 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/layout.d.ts +11177 silly gunzTarPerm extractEntry node_modules/any-promise/register/lie.d.ts +11178 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/liquid-date.d.ts +11179 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid-options.d.ts +11180 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/liquid-tag-token.d.ts +11181 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/liquid.d.ts +11182 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/liquid.d.ts +11183 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/literal-token.d.ts +11184 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/literal.d.ts +11185 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/loader.d.ts +11186 silly gunzTarPerm extractEntry node_modules/@xpack/logger/dist/lib/logger.d.ts +11187 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/cache/lru.d.ts +11188 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/match-operator.d.ts +11189 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/matchers/matcher.d.ts +11190 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/math.d.ts +11191 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/misc.d.ts +11192 silly gunzTarPerm extractEntry node_modules/any-promise/register/native-promise-only.d.ts +11193 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/node-require.d.ts +11194 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/fs/node.d.ts +11195 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/null-drop.d.ts +11196 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/number-token.d.ts +11197 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/operator-token.d.ts +11198 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/operator-trie.d.ts +11199 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/operator.d.ts +11200 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/output-token.d.ts +11201 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/output.d.ts +11202 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/overloaded-parameters.d.ts +11203 silly gunzTarPerm extractEntry node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +11204 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/parse-stream.d.ts +11205 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/parse-string-literal.d.ts +11206 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/parser.d.ts +11207 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/matchers/partial.d.ts +11208 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/path.d.ts +11209 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/pattern.d.ts +11210 silly gunzTarPerm extractEntry node_modules/fast-glob/out/managers/patterns.d.ts +11211 silly gunzTarPerm extractEntry node_modules/any-promise/register/pinkie.d.ts +11212 silly gunzTarPerm extractEntry node_modules/any-promise/register/promise.d.ts +11213 silly gunzTarPerm extractEntry node_modules/agent-base/dist/src/promisify.d.ts +11214 silly gunzTarPerm extractEntry node_modules/agent-base/src/promisify.ts +11215 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/property-access-token.d.ts +11216 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/provider.d.ts +11217 silly gunzTarPerm extractEntry node_modules/any-promise/register/q.d.ts +11218 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/quoted-token.d.ts +11219 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/range-token.d.ts +11220 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/raw.d.ts +11221 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +11222 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/reader.d.ts +11223 silly gunzTarPerm extractEntry node_modules/socks/typings/common/receivebuffer.d.ts +11224 silly gunzTarPerm extractEntry node_modules/any-promise/register.d.ts +11225 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/render.d.ts +11226 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/render/render.d.ts +11227 silly gunzTarPerm extractEntry node_modules/any-promise/register/rsvp.d.ts +11228 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/context/scope.d.ts +11229 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/settings.d.ts +11230 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/settings.d.ts +11231 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/settings.d.ts +11232 silly gunzTarPerm extractEntry node_modules/fast-glob/out/settings.d.ts +11233 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/simple-emitter.d.ts +11234 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/smartbuffer.d.ts +11235 silly gunzTarPerm extractEntry node_modules/socks/typings/client/socksclient.d.ts +11236 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +11237 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/stream.d.ts +11238 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/stream.d.ts +11239 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/stream.d.ts +11240 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/streamed-emitter-browser.d.ts +11241 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/emitters/streamed-emitter.d.ts +11242 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/strftime.d.ts +11243 silly gunzTarPerm extractEntry node_modules/fast-glob/out/utils/string.d.ts +11244 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/string.d.ts +11245 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +11246 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +11247 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +11248 silly gunzTarPerm extractEntry node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +11249 silly gunzTarPerm extractEntry node_modules/fast-glob/out/providers/sync.d.ts +11250 silly gunzTarPerm extractEntry node_modules/fast-glob/out/readers/sync.d.ts +11251 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/tablerow.d.ts +11252 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/drop/tablerowloop-drop.d.ts +11253 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag-impl-options.d.ts +11254 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag-impl.d.ts +11255 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag-map.d.ts +11256 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/tag-token.d.ts +11257 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/tag/tag.d.ts +11258 silly gunzTarPerm extractEntry node_modules/fast-glob/out/managers/tasks.d.ts +11259 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/template-impl.d.ts +11260 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/template.d.ts +11261 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/timezone-date.d.ts +11262 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/token-kind.d.ts +11263 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/token.d.ts +11264 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/tokenizer.d.ts +11265 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/toplevel-token.d.ts +11266 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/type-guards.d.ts +11267 silly gunzTarPerm extractEntry node_modules/@tootallnate/once/dist/types.d.ts +11268 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/types.d.ts +11269 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/util/underscore.d.ts +11270 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/tags/unless.d.ts +11271 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/builtin/filters/url.d.ts +11272 silly gunzTarPerm extractEntry node_modules/socks/typings/common/util.d.ts +11273 silly gunzTarPerm extractEntry node_modules/smart-buffer/typings/utils.d.ts +11274 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/tokens/value-token.d.ts +11275 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/template/value.d.ts +11276 silly gunzTarPerm extractEntry node_modules/any-promise/register/vow.d.ts +11277 silly gunzTarPerm extractEntry node_modules/any-promise/register/when.d.ts +11278 silly gunzTarPerm extractEntry node_modules/liquidjs/dist/parser/whitespace-ctrl.d.ts +11279 silly gunzTarPerm extractEntry node_modules/@xpack/xpm-liquid/dist/lib/xpm-liquid.d.ts +11280 silly gunzTarPerm extractEntry node_modules/emoji-regex/LICENSE-MIT.txt +11281 silly gunzTarPerm extractEntry node_modules/set-blocking/LICENSE.txt +11282 silly gunzTarPerm extractEntry node_modules/signal-exit/LICENSE.txt +11283 silly gunzTarPerm extractEntry node_modules/whatwg-url/LICENSE.txt +11284 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/requirements_dev.txt +11285 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_BuildTools_minimal.txt +11286 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Community_workload.txt +11287 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Express.txt +11288 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2017_Unusable.txt +11289 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_BuildTools_minimal.txt +11290 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Community_workload.txt +11291 silly gunzTarPerm extractEntry node_modules/node-gyp/test/fixtures/VS_2019_Preview.txt +11292 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/tools/Xcode/Specifications/gyp.xclangspec +11293 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +11294 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/modules.xml +11295 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +11296 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/codeStyles/Project.xml +11297 silly gunzTarPerm extractEntry node_modules/iconv-lite/.idea/vcs.xml +11298 silly gunzTarPerm extractEntry node_modules/smart-buffer/.prettierrc.yaml +11299 silly gunzTarPerm extractEntry node_modules/socks/.prettierrc.yaml +11300 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/.appveyor.yml +11301 silly gunzTarPerm extractEntry node_modules/reusify/.coveralls.yml +11302 silly gunzTarPerm extractEntry node_modules/@ilg/es6-promisifier/.travis.yml +11303 silly gunzTarPerm extractEntry node_modules/bl/.travis.yml +11304 silly gunzTarPerm extractEntry node_modules/bl/node_modules/readable-stream/.travis.yml +11305 silly gunzTarPerm extractEntry node_modules/bl/node_modules/string_decoder/.travis.yml +11306 silly gunzTarPerm extractEntry node_modules/concat-map/.travis.yml +11307 silly gunzTarPerm extractEntry node_modules/encoding/.travis.yml +11308 silly gunzTarPerm extractEntry node_modules/err-code/.travis.yml +11309 silly gunzTarPerm extractEntry node_modules/fd-slicer/.travis.yml +11310 silly gunzTarPerm extractEntry node_modules/function-bind/.travis.yml +11311 silly gunzTarPerm extractEntry node_modules/is-lambda/.travis.yml +11312 silly gunzTarPerm extractEntry node_modules/isarray/.travis.yml +11313 silly gunzTarPerm extractEntry node_modules/json-buffer/.travis.yml +11314 silly gunzTarPerm extractEntry node_modules/minimist/.travis.yml +11315 silly gunzTarPerm extractEntry node_modules/promise-retry/.travis.yml +11316 silly gunzTarPerm extractEntry node_modules/pump/.travis.yml +11317 silly gunzTarPerm extractEntry node_modules/retry/.travis.yml +11318 silly gunzTarPerm extractEntry node_modules/reusify/.travis.yml +11319 silly gunzTarPerm extractEntry node_modules/smart-buffer/.travis.yml +11320 silly gunzTarPerm extractEntry node_modules/socks/.travis.yml +11321 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/readable-stream/.travis.yml +11322 silly gunzTarPerm extractEntry node_modules/tar-stream/node_modules/string_decoder/.travis.yml +11323 silly gunzTarPerm extractEntry node_modules/through/.travis.yml +11324 silly gunzTarPerm extractEntry node_modules/to-buffer/.travis.yml +11325 silly gunzTarPerm extractEntry node_modules/unique-slug/.travis.yml +11326 silly gunzTarPerm extractEntry node_modules/wscript-avoider/.travis.yml +11327 silly gunzTarPerm extractEntry node_modules/fastq/.github/workflows/ci.yml +11328 silly gunzTarPerm extractEntry node_modules/fastq/.github/dependabot.yml +11329 silly gunzTarPerm extractEntry node_modules/iconv-lite/.github/dependabot.yml +11330 silly gunzTarPerm extractEntry node_modules/balanced-match/.github/FUNDING.yml +11331 silly gunzTarPerm extractEntry node_modules/brace-expansion/.github/FUNDING.yml +11332 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/node-gyp.yml +11333 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/nodejs-windows.yml +11334 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/Python_tests.yml +11335 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/release-please.yml +11336 silly gunzTarPerm extractEntry node_modules/node-gyp/gyp/.github/workflows/release-please.yml +11337 silly gunzTarPerm extractEntry node_modules/npm-normalize-package-bin/.github/settings.yml +11338 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/tests.yml +11339 silly gunzTarPerm extractEntry node_modules/node-gyp/.github/workflows/visual-studio.yml +11340 silly gentlyRm /usr/local/lib/node_modules/.staging/npm-23faa247/node_modules is being purged +11341 verbose gentlyRm don't care about contents; nuking /usr/local/lib/node_modules/.staging/npm-23faa247/node_modules +11342 silly vacuum-fs purging /usr/local/lib/node_modules/.staging/npm-23faa247/node_modules +11343 silly vacuum-fs quitting because other entries in /usr/local/lib/node_modules/.staging/npm-23faa247 +11344 silly gentlyRm /usr/local/lib/node_modules/.staging/xpm-da520707/node_modules is being purged +11345 verbose gentlyRm don't care about contents; nuking /usr/local/lib/node_modules/.staging/xpm-da520707/node_modules +11346 silly vacuum-fs purging /usr/local/lib/node_modules/.staging/xpm-da520707/node_modules +11347 silly vacuum-fs quitting because other entries in /usr/local/lib/node_modules/.staging/xpm-da520707 +11348 silly doParallel preinstall 479 +11349 silly preinstall @gar/promisify@1.1.3 /usr/local/lib/node_modules/.staging/@gar/promisify-95cf83e2 +11350 info lifecycle @gar/promisify@1.1.3~preinstall: @gar/promisify@1.1.3 +11351 silly preinstall @ilg/es6-promisifier@0.3.1 /usr/local/lib/node_modules/.staging/@ilg/es6-promisifier-e8907dd0 +11352 info lifecycle @ilg/es6-promisifier@0.3.1~preinstall: @ilg/es6-promisifier@0.3.1 +11353 silly preinstall @nodelib/fs.stat@2.0.5 /usr/local/lib/node_modules/.staging/@nodelib/fs.stat-9d1c21e3 +11354 info lifecycle @nodelib/fs.stat@2.0.5~preinstall: @nodelib/fs.stat@2.0.5 +11355 silly preinstall @npmcli/node-gyp@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/node-gyp-f51438c9 +11356 info lifecycle @npmcli/node-gyp@2.0.0~preinstall: @npmcli/node-gyp@2.0.0 +11357 silly preinstall @sindresorhus/is@0.14.0 /usr/local/lib/node_modules/.staging/@sindresorhus/is-0b68eb8e +11358 info lifecycle @sindresorhus/is@0.14.0~preinstall: @sindresorhus/is@0.14.0 +11359 silly preinstall @tootallnate/once@2.0.0 /usr/local/lib/node_modules/.staging/@tootallnate/once-28d5a2c7 +11360 info lifecycle @tootallnate/once@2.0.0~preinstall: @tootallnate/once@2.0.0 +11361 silly preinstall @xpack/es6-promisifier@1.0.1 /usr/local/lib/node_modules/.staging/@xpack/es6-promisifier-070e7f0a +11362 info lifecycle @xpack/es6-promisifier@1.0.1~preinstall: @xpack/es6-promisifier@1.0.1 +11363 silly preinstall @xpack/logger@5.0.2 /usr/local/lib/node_modules/.staging/@xpack/logger-5a8df148 +11364 info lifecycle @xpack/logger@5.0.2~preinstall: @xpack/logger@5.0.2 +11365 silly preinstall abbrev@1.1.1 /usr/local/lib/node_modules/.staging/abbrev-4f32e6b6 +11366 info lifecycle abbrev@1.1.1~preinstall: abbrev@1.1.1 +11367 silly preinstall ansi-regex@5.0.1 /usr/local/lib/node_modules/.staging/ansi-regex-5f9aaf13 +11368 info lifecycle ansi-regex@5.0.1~preinstall: ansi-regex@5.0.1 +11369 silly preinstall any-promise@1.3.0 /usr/local/lib/node_modules/.staging/any-promise-3c2c566e +11370 info lifecycle any-promise@1.3.0~preinstall: any-promise@1.3.0 +11371 silly preinstall aproba@2.0.0 /usr/local/lib/node_modules/.staging/aproba-7668ba7d +11372 info lifecycle aproba@2.0.0~preinstall: aproba@2.0.0 +11373 silly preinstall array-union@2.1.0 /usr/local/lib/node_modules/.staging/array-union-abf92aba +11374 info lifecycle array-union@2.1.0~preinstall: array-union@2.1.0 +11375 silly preinstall balanced-match@1.0.2 /usr/local/lib/node_modules/.staging/balanced-match-fe4e1be7 +11376 info lifecycle balanced-match@1.0.2~preinstall: balanced-match@1.0.2 +11377 silly preinstall base64-js@1.5.1 /usr/local/lib/node_modules/.staging/base64-js-0885619d +11378 info lifecycle base64-js@1.5.1~preinstall: base64-js@1.5.1 +11379 silly preinstall safe-buffer@5.1.2 /usr/local/lib/node_modules/.staging/safe-buffer-348f76ec +11380 info lifecycle safe-buffer@5.1.2~preinstall: safe-buffer@5.1.2 +11381 silly preinstall string_decoder@1.1.1 /usr/local/lib/node_modules/.staging/string_decoder-0e6b48c0 +11382 info lifecycle string_decoder@1.1.1~preinstall: string_decoder@1.1.1 +11383 silly preinstall brace-expansion@2.0.1 /usr/local/lib/node_modules/.staging/brace-expansion-e457cfed +11384 info lifecycle brace-expansion@2.0.1~preinstall: brace-expansion@2.0.1 +11385 silly preinstall buffer-alloc-unsafe@1.1.0 /usr/local/lib/node_modules/.staging/buffer-alloc-unsafe-24ca783b +11386 info lifecycle buffer-alloc-unsafe@1.1.0~preinstall: buffer-alloc-unsafe@1.1.0 +11387 silly preinstall buffer-crc32@0.2.13 /usr/local/lib/node_modules/.staging/buffer-crc32-f388b9d7 +11388 info lifecycle buffer-crc32@0.2.13~preinstall: buffer-crc32@0.2.13 +11389 silly preinstall buffer-fill@1.0.0 /usr/local/lib/node_modules/.staging/buffer-fill-1dbbbf71 +11390 info lifecycle buffer-fill@1.0.0~preinstall: buffer-fill@1.0.0 +11391 silly preinstall buffer-alloc@1.2.0 /usr/local/lib/node_modules/.staging/buffer-alloc-5446c60f +11392 info lifecycle buffer-alloc@1.2.0~preinstall: buffer-alloc@1.2.0 +11393 silly preinstall lowercase-keys@2.0.0 /usr/local/lib/node_modules/.staging/lowercase-keys-917293aa +11394 info lifecycle lowercase-keys@2.0.0~preinstall: lowercase-keys@2.0.0 +11395 silly preinstall chownr@2.0.0 /usr/local/lib/node_modules/.staging/chownr-ad9441f8 +11396 info lifecycle chownr@2.0.0~preinstall: chownr@2.0.0 +11397 silly preinstall ci-info@3.3.2 /usr/local/lib/node_modules/.staging/ci-info-3d6d2349 +11398 info lifecycle ci-info@3.3.2~preinstall: ci-info@3.3.2 +11399 silly preinstall clean-stack@2.2.0 /usr/local/lib/node_modules/.staging/clean-stack-18a81019 +11400 info lifecycle clean-stack@2.2.0~preinstall: clean-stack@2.2.0 +11401 silly preinstall color-support@1.1.3 /usr/local/lib/node_modules/.staging/color-support-c27b7945 +11402 info lifecycle color-support@1.1.3~preinstall: color-support@1.1.3 +11403 silly preinstall commander@2.20.3 /usr/local/lib/node_modules/.staging/commander-51d5aa71 +11404 info lifecycle commander@2.20.3~preinstall: commander@2.20.3 +11405 silly preinstall concat-map@0.0.1 /usr/local/lib/node_modules/.staging/concat-map-dd787db1 +11406 info lifecycle concat-map@0.0.1~preinstall: concat-map@0.0.1 +11407 silly preinstall console-control-strings@1.1.0 /usr/local/lib/node_modules/.staging/console-control-strings-2a23fd2c +11408 info lifecycle console-control-strings@1.1.0~preinstall: console-control-strings@1.1.0 +11409 silly preinstall core-util-is@1.0.3 /usr/local/lib/node_modules/.staging/core-util-is-a13242a4 +11410 info lifecycle core-util-is@1.0.3~preinstall: core-util-is@1.0.3 +11411 silly preinstall file-type@6.2.0 /usr/local/lib/node_modules/.staging/file-type-aa23e691 +11412 info lifecycle file-type@6.2.0~preinstall: file-type@6.2.0 +11413 silly preinstall file-type@3.9.0 /usr/local/lib/node_modules/.staging/file-type-cc2b5abe +11414 info lifecycle file-type@3.9.0~preinstall: file-type@3.9.0 +11415 silly preinstall pify@3.0.0 /usr/local/lib/node_modules/.staging/pify-53040ee1 +11416 info lifecycle pify@3.0.0~preinstall: pify@3.0.0 +11417 silly preinstall make-dir@1.3.0 /usr/local/lib/node_modules/.staging/make-dir-fba5baaa +11418 info lifecycle make-dir@1.3.0~preinstall: make-dir@1.3.0 +11419 silly preinstall deep-extend@0.6.0 /usr/local/lib/node_modules/.staging/deep-extend-282a2182 +11420 info lifecycle deep-extend@0.6.0~preinstall: deep-extend@0.6.0 +11421 silly preinstall defer-to-connect@1.1.3 /usr/local/lib/node_modules/.staging/defer-to-connect-d63d2e5f +11422 info lifecycle defer-to-connect@1.1.3~preinstall: defer-to-connect@1.1.3 +11423 silly preinstall @szmarczak/http-timer@1.1.2 /usr/local/lib/node_modules/.staging/@szmarczak/http-timer-8d8d071f +11424 info lifecycle @szmarczak/http-timer@1.1.2~preinstall: @szmarczak/http-timer@1.1.2 +11425 silly preinstall delegates@1.0.0 /usr/local/lib/node_modules/.staging/delegates-cac99ff5 +11426 info lifecycle delegates@1.0.0~preinstall: delegates@1.0.0 +11427 silly preinstall depd@1.1.2 /usr/local/lib/node_modules/.staging/depd-08eebd80 +11428 info lifecycle depd@1.1.2~preinstall: depd@1.1.2 +11429 silly preinstall duplexer3@0.1.5 /usr/local/lib/node_modules/.staging/duplexer3-b2ff34df +11430 info lifecycle duplexer3@0.1.5~preinstall: duplexer3@0.1.5 +11431 silly preinstall emoji-regex@8.0.0 /usr/local/lib/node_modules/.staging/emoji-regex-91e53ad9 +11432 info lifecycle emoji-regex@8.0.0~preinstall: emoji-regex@8.0.0 +11433 silly preinstall env-paths@2.2.1 /usr/local/lib/node_modules/.staging/env-paths-0c4cc287 +11434 info lifecycle env-paths@2.2.1~preinstall: env-paths@2.2.1 +11435 silly preinstall err-code@2.0.3 /usr/local/lib/node_modules/.staging/err-code-0cc9149e +11436 info lifecycle err-code@2.0.3~preinstall: err-code@2.0.3 +11437 silly preinstall file-type@5.2.0 /usr/local/lib/node_modules/.staging/file-type-547c80f6 +11438 info lifecycle file-type@5.2.0~preinstall: file-type@5.2.0 +11439 silly preinstall fs-constants@1.0.0 /usr/local/lib/node_modules/.staging/fs-constants-318c3bd9 +11440 info lifecycle fs-constants@1.0.0~preinstall: fs-constants@1.0.0 +11441 silly preinstall fs.realpath@1.0.0 /usr/local/lib/node_modules/.staging/fs.realpath-b96f0fd0 +11442 info lifecycle fs.realpath@1.0.0~preinstall: fs.realpath@1.0.0 +11443 silly preinstall function-bind@1.1.1 /usr/local/lib/node_modules/.staging/function-bind-eb89f312 +11444 info lifecycle function-bind@1.1.1~preinstall: function-bind@1.1.1 +11445 silly preinstall git-config-path@2.0.0 /usr/local/lib/node_modules/.staging/git-config-path-54ee31ac +11446 info lifecycle git-config-path@2.0.0~preinstall: git-config-path@2.0.0 +11447 silly preinstall graceful-fs@4.2.10 /usr/local/lib/node_modules/.staging/graceful-fs-0de589e8 +11448 info lifecycle graceful-fs@4.2.10~preinstall: graceful-fs@4.2.10 +11449 silly preinstall has@1.0.3 /usr/local/lib/node_modules/.staging/has-78197a90 +11450 info lifecycle has@1.0.3~preinstall: has@1.0.3 +11451 silly preinstall has-unicode@2.0.1 /usr/local/lib/node_modules/.staging/has-unicode-e3a5e1c9 +11452 info lifecycle has-unicode@2.0.1~preinstall: has-unicode@2.0.1 +11453 silly preinstall http-cache-semantics@4.1.0 /usr/local/lib/node_modules/.staging/http-cache-semantics-5d43653b +11454 info lifecycle http-cache-semantics@4.1.0~preinstall: http-cache-semantics@4.1.0 +11455 silly preinstall ieee754@1.2.1 /usr/local/lib/node_modules/.staging/ieee754-9b2c89bc +11456 info lifecycle ieee754@1.2.1~preinstall: ieee754@1.2.1 +11457 silly preinstall buffer@5.7.1 /usr/local/lib/node_modules/.staging/buffer-18c46064 +11458 info lifecycle buffer@5.7.1~preinstall: buffer@5.7.1 +11459 silly preinstall ignore@5.2.0 /usr/local/lib/node_modules/.staging/ignore-72881d8b +11460 info lifecycle ignore@5.2.0~preinstall: ignore@5.2.0 +11461 silly preinstall imurmurhash@0.1.4 /usr/local/lib/node_modules/.staging/imurmurhash-ca2e7717 +11462 info lifecycle imurmurhash@0.1.4~preinstall: imurmurhash@0.1.4 +11463 silly preinstall indent-string@4.0.0 /usr/local/lib/node_modules/.staging/indent-string-71b550ef +11464 info lifecycle indent-string@4.0.0~preinstall: indent-string@4.0.0 +11465 silly preinstall aggregate-error@3.1.0 /usr/local/lib/node_modules/.staging/aggregate-error-1830fdd4 +11466 info lifecycle aggregate-error@3.1.0~preinstall: aggregate-error@3.1.0 +11467 silly preinstall infer-owner@1.0.4 /usr/local/lib/node_modules/.staging/infer-owner-c887bf17 +11468 info lifecycle infer-owner@1.0.4~preinstall: infer-owner@1.0.4 +11469 silly preinstall @npmcli/promise-spawn@3.0.0 /usr/local/lib/node_modules/.staging/@npmcli/promise-spawn-6831a883 +11470 info lifecycle @npmcli/promise-spawn@3.0.0~preinstall: @npmcli/promise-spawn@3.0.0 +11471 silly preinstall inherits@2.0.4 /usr/local/lib/node_modules/.staging/inherits-09737605 +11472 info lifecycle inherits@2.0.4~preinstall: inherits@2.0.4 +11473 silly preinstall ini@2.0.0 /usr/local/lib/node_modules/.staging/ini-a0bede65 +11474 info lifecycle ini@2.0.0~preinstall: ini@2.0.0 +11475 silly preinstall global-dirs@3.0.0 /usr/local/lib/node_modules/.staging/global-dirs-c76f4035 +11476 info lifecycle global-dirs@3.0.0~preinstall: global-dirs@3.0.0 +11477 silly preinstall ip@1.1.8 /usr/local/lib/node_modules/.staging/ip-f274299a +11478 info lifecycle ip@1.1.8~preinstall: ip@1.1.8 +11479 silly preinstall is-ci@3.0.1 /usr/local/lib/node_modules/.staging/is-ci-6a187a48 +11480 info lifecycle is-ci@3.0.1~preinstall: is-ci@3.0.1 +11481 silly preinstall is-core-module@2.9.0 /usr/local/lib/node_modules/.staging/is-core-module-2f1ae546 +11482 info lifecycle is-core-module@2.9.0~preinstall: is-core-module@2.9.0 +11483 silly preinstall is-extglob@2.1.1 /usr/local/lib/node_modules/.staging/is-extglob-bb5ec5c3 +11484 info lifecycle is-extglob@2.1.1~preinstall: is-extglob@2.1.1 +11485 silly preinstall is-fullwidth-code-point@3.0.0 /usr/local/lib/node_modules/.staging/is-fullwidth-code-point-d16b335b +11486 info lifecycle is-fullwidth-code-point@3.0.0~preinstall: is-fullwidth-code-point@3.0.0 +11487 silly preinstall is-glob@4.0.3 /usr/local/lib/node_modules/.staging/is-glob-600d122d +11488 info lifecycle is-glob@4.0.3~preinstall: is-glob@4.0.3 +11489 silly preinstall glob-parent@5.1.2 /usr/local/lib/node_modules/.staging/glob-parent-37e75088 +11490 info lifecycle glob-parent@5.1.2~preinstall: glob-parent@5.1.2 +11491 silly preinstall is-lambda@1.0.1 /usr/local/lib/node_modules/.staging/is-lambda-e556bd36 +11492 info lifecycle is-lambda@1.0.1~preinstall: is-lambda@1.0.1 +11493 silly preinstall is-natural-number@4.0.1 /usr/local/lib/node_modules/.staging/is-natural-number-c40508b8 +11494 info lifecycle is-natural-number@4.0.1~preinstall: is-natural-number@4.0.1 +11495 silly preinstall is-number@7.0.0 /usr/local/lib/node_modules/.staging/is-number-9b7c4fd5 +11496 info lifecycle is-number@7.0.0~preinstall: is-number@7.0.0 +11497 silly preinstall is-path-cwd@2.2.0 /usr/local/lib/node_modules/.staging/is-path-cwd-86644233 +11498 info lifecycle is-path-cwd@2.2.0~preinstall: is-path-cwd@2.2.0 +11499 silly preinstall is-path-inside@3.0.3 /usr/local/lib/node_modules/.staging/is-path-inside-cb694f6a +11500 info lifecycle is-path-inside@3.0.3~preinstall: is-path-inside@3.0.3 +11501 silly preinstall is-installed-globally@0.4.0 /usr/local/lib/node_modules/.staging/is-installed-globally-167f2b7b +11502 info lifecycle is-installed-globally@0.4.0~preinstall: is-installed-globally@0.4.0 +11503 silly preinstall is-stream@1.1.0 /usr/local/lib/node_modules/.staging/is-stream-02fbea47 +11504 info lifecycle is-stream@1.1.0~preinstall: is-stream@1.1.0 +11505 silly preinstall is-windows@1.0.2 /usr/local/lib/node_modules/.staging/is-windows-558c29d6 +11506 info lifecycle is-windows@1.0.2~preinstall: is-windows@1.0.2 +11507 silly preinstall isarray@1.0.0 /usr/local/lib/node_modules/.staging/isarray-c1844a2b +11508 info lifecycle isarray@1.0.0~preinstall: isarray@1.0.0 +11509 silly preinstall isexe@2.0.0 /usr/local/lib/node_modules/.staging/isexe-a4b80811 +11510 info lifecycle isexe@2.0.0~preinstall: isexe@2.0.0 +11511 silly preinstall json-buffer@3.0.0 /usr/local/lib/node_modules/.staging/json-buffer-7042e33c +11512 info lifecycle json-buffer@3.0.0~preinstall: json-buffer@3.0.0 +11513 silly preinstall json-parse-even-better-errors@2.3.1 /usr/local/lib/node_modules/.staging/json-parse-even-better-errors-d9696430 +11514 info lifecycle json-parse-even-better-errors@2.3.1~preinstall: json-parse-even-better-errors@2.3.1 +11515 silly preinstall jsonparse@1.3.1 /usr/local/lib/node_modules/.staging/jsonparse-9d17e946 +11516 info lifecycle jsonparse@1.3.1~preinstall: jsonparse@1.3.1 +11517 silly preinstall keyv@3.1.0 /usr/local/lib/node_modules/.staging/keyv-2057ae01 +11518 info lifecycle keyv@3.1.0~preinstall: keyv@3.1.0 +11519 silly preinstall liquidjs@9.39.0 /usr/local/lib/node_modules/.staging/liquidjs-1fbae94a +11520 info lifecycle liquidjs@9.39.0~preinstall: liquidjs@9.39.0 +11521 silly preinstall @xpack/xpm-liquid@1.2.1 /usr/local/lib/node_modules/.staging/@xpack/xpm-liquid-f788ca0a +11522 info lifecycle @xpack/xpm-liquid@1.2.1~preinstall: @xpack/xpm-liquid@1.2.1 +11523 silly preinstall lowercase-keys@1.0.1 /usr/local/lib/node_modules/.staging/lowercase-keys-cbeff663 +11524 info lifecycle lowercase-keys@1.0.1~preinstall: lowercase-keys@1.0.1 +11525 silly preinstall lru-cache@7.13.0 /usr/local/lib/node_modules/.staging/lru-cache-13828d1f +11526 info lifecycle lru-cache@7.13.0~preinstall: lru-cache@7.13.0 +11527 silly preinstall hosted-git-info@5.0.0 /usr/local/lib/node_modules/.staging/hosted-git-info-024c46a3 +11528 info lifecycle hosted-git-info@5.0.0~preinstall: hosted-git-info@5.0.0 +11529 silly preinstall semver@6.3.0 /usr/local/lib/node_modules/.staging/semver-627fe99c +11530 info lifecycle semver@6.3.0~preinstall: semver@6.3.0 +11531 silly preinstall make-dir@3.1.0 /usr/local/lib/node_modules/.staging/make-dir-63eb4b27 +11532 info lifecycle make-dir@3.1.0~preinstall: make-dir@3.1.0 +11533 silly preinstall merge2@1.4.1 /usr/local/lib/node_modules/.staging/merge2-28b4875e +11534 info lifecycle merge2@1.4.1~preinstall: merge2@1.4.1 +11535 silly preinstall mimic-response@1.0.1 /usr/local/lib/node_modules/.staging/mimic-response-65d9a61d +11536 info lifecycle mimic-response@1.0.1~preinstall: mimic-response@1.0.1 +11537 silly preinstall decompress-response@3.3.0 /usr/local/lib/node_modules/.staging/decompress-response-c9327feb +11538 info lifecycle decompress-response@3.3.0~preinstall: decompress-response@3.3.0 +11539 silly preinstall clone-response@1.0.2 /usr/local/lib/node_modules/.staging/clone-response-7a9eacac +11540 info lifecycle clone-response@1.0.2~preinstall: clone-response@1.0.2 +11541 silly preinstall minimatch@5.1.0 /usr/local/lib/node_modules/.staging/minimatch-964d77f0 +11542 info lifecycle minimatch@5.1.0~preinstall: minimatch@5.1.0 +11543 silly preinstall ignore-walk@5.0.1 /usr/local/lib/node_modules/.staging/ignore-walk-4b84c9ea +11544 info lifecycle ignore-walk@5.0.1~preinstall: ignore-walk@5.0.1 +11545 silly preinstall minimist@1.2.6 /usr/local/lib/node_modules/.staging/minimist-cff5d118 +11546 info lifecycle minimist@1.2.6~preinstall: minimist@1.2.6 +11547 silly preinstall mkdirp@1.0.4 /usr/local/lib/node_modules/.staging/mkdirp-b0b5b84c +11548 info lifecycle mkdirp@1.0.4~preinstall: mkdirp@1.0.4 +11549 silly preinstall mkdirp-infer-owner@2.0.0 /usr/local/lib/node_modules/.staging/mkdirp-infer-owner-ed146be0 +11550 info lifecycle mkdirp-infer-owner@2.0.0~preinstall: mkdirp-infer-owner@2.0.0 +11551 silly preinstall @xpack/cmd-shim@4.1.0-2 /usr/local/lib/node_modules/.staging/@xpack/cmd-shim-7b24e0ff +11552 info lifecycle @xpack/cmd-shim@4.1.0-2~preinstall: @xpack/cmd-shim@4.1.0-2 +11553 silly preinstall ms@2.1.2 /usr/local/lib/node_modules/.staging/ms-ed802c4b +11554 info lifecycle ms@2.1.2~preinstall: ms@2.1.2 +11555 silly preinstall humanize-ms@1.2.1 /usr/local/lib/node_modules/.staging/humanize-ms-c95aecb0 +11556 info lifecycle humanize-ms@1.2.1~preinstall: humanize-ms@1.2.1 +11557 silly preinstall debug@4.3.4 /usr/local/lib/node_modules/.staging/debug-234da9a4 +11558 info lifecycle debug@4.3.4~preinstall: debug@4.3.4 +11559 silly preinstall agentkeepalive@4.2.1 /usr/local/lib/node_modules/.staging/agentkeepalive-bc077f22 +11560 info lifecycle agentkeepalive@4.2.1~preinstall: agentkeepalive@4.2.1 +11561 silly preinstall agent-base@6.0.2 /usr/local/lib/node_modules/.staging/agent-base-333ed5e5 +11562 info lifecycle agent-base@6.0.2~preinstall: agent-base@6.0.2 +11563 silly preinstall https-proxy-agent@5.0.1 /usr/local/lib/node_modules/.staging/https-proxy-agent-7c7ed4de +11564 info lifecycle https-proxy-agent@5.0.1~preinstall: https-proxy-agent@5.0.1 +11565 silly preinstall http-proxy-agent@5.0.0 /usr/local/lib/node_modules/.staging/http-proxy-agent-def53ff1 +11566 info lifecycle http-proxy-agent@5.0.0~preinstall: http-proxy-agent@5.0.0 +11567 silly preinstall negotiator@0.6.3 /usr/local/lib/node_modules/.staging/negotiator-02809704 +11568 info lifecycle negotiator@0.6.3~preinstall: negotiator@0.6.3 +11569 silly preinstall nested-error-stacks@2.1.1 /usr/local/lib/node_modules/.staging/nested-error-stacks-81cb21ae +11570 info lifecycle nested-error-stacks@2.1.1~preinstall: nested-error-stacks@2.1.1 +11571 silly preinstall brace-expansion@1.1.11 /usr/local/lib/node_modules/.staging/brace-expansion-e6990719 +11572 info lifecycle brace-expansion@1.1.11~preinstall: brace-expansion@1.1.11 +11573 silly preinstall minimatch@3.1.2 /usr/local/lib/node_modules/.staging/minimatch-ff0775a9 +11574 info lifecycle minimatch@3.1.2~preinstall: minimatch@3.1.2 +11575 silly preinstall nopt@5.0.0 /usr/local/lib/node_modules/.staging/nopt-9a8c903c +11576 info lifecycle nopt@5.0.0~preinstall: nopt@5.0.0 +11577 silly preinstall normalize-url@4.5.1 /usr/local/lib/node_modules/.staging/normalize-url-dff9b60c +11578 info lifecycle normalize-url@4.5.1~preinstall: normalize-url@4.5.1 +11579 silly preinstall npm-normalize-package-bin@1.0.1 /usr/local/lib/node_modules/.staging/npm-normalize-package-bin-19092988 +11580 info lifecycle npm-normalize-package-bin@1.0.1~preinstall: npm-normalize-package-bin@1.0.1 +11581 silly preinstall npm-bundled@1.1.2 /usr/local/lib/node_modules/.staging/npm-bundled-c5226a26 +11582 info lifecycle npm-bundled@1.1.2~preinstall: npm-bundled@1.1.2 +11583 silly preinstall @npmcli/installed-package-contents@1.0.7 /usr/local/lib/node_modules/.staging/@npmcli/installed-package-contents-0a063145 +11584 info lifecycle @npmcli/installed-package-contents@1.0.7~preinstall: @npmcli/installed-package-contents@1.0.7 +11585 silly preinstall @colors/colors@1.5.0 /usr/local/lib/node_modules/.staging/@colors/colors-62cbc260 +11586 info lifecycle @colors/colors@1.5.0~preinstall: @colors/colors@1.5.0 +11587 silly preinstall @gar/promisify@1.1.3 /usr/local/lib/node_modules/.staging/@gar/promisify-b0afb3c1 +11588 info lifecycle @gar/promisify@1.1.3~preinstall: @gar/promisify@1.1.3 +11589 silly preinstall @isaacs/string-locale-compare@1.1.0 /usr/local/lib/node_modules/.staging/@isaacs/string-locale-compare-09fc1db4 +11590 info lifecycle @isaacs/string-locale-compare@1.1.0~preinstall: @isaacs/string-locale-compare@1.1.0 +11591 silly preinstall @npmcli/ci-detect@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/ci-detect-5511b2e0 +11592 info lifecycle @npmcli/ci-detect@2.0.0~preinstall: @npmcli/ci-detect@2.0.0 +11593 silly preinstall @npmcli/name-from-folder@1.0.1 /usr/local/lib/node_modules/.staging/@npmcli/name-from-folder-177b51d9 +11594 info lifecycle @npmcli/name-from-folder@1.0.1~preinstall: @npmcli/name-from-folder@1.0.1 +11595 silly preinstall @npmcli/node-gyp@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/node-gyp-2eab1bed +11596 info lifecycle @npmcli/node-gyp@2.0.0~preinstall: @npmcli/node-gyp@2.0.0 +11597 silly preinstall @tootallnate/once@2.0.0 /usr/local/lib/node_modules/.staging/@tootallnate/once-d8f461d9 +11598 info lifecycle @tootallnate/once@2.0.0~preinstall: @tootallnate/once@2.0.0 +11599 silly preinstall abbrev@1.1.1 /usr/local/lib/node_modules/.staging/abbrev-0f85e919 +11600 info lifecycle abbrev@1.1.1~preinstall: abbrev@1.1.1 +11601 silly preinstall ansi-regex@5.0.1 /usr/local/lib/node_modules/.staging/ansi-regex-7d00c888 +11602 info lifecycle ansi-regex@5.0.1~preinstall: ansi-regex@5.0.1 +11603 silly preinstall aproba@2.0.0 /usr/local/lib/node_modules/.staging/aproba-9952ee1e +11604 info lifecycle aproba@2.0.0~preinstall: aproba@2.0.0 +11605 silly preinstall archy@1.0.0 /usr/local/lib/node_modules/.staging/archy-052fd415 +11606 info lifecycle archy@1.0.0~preinstall: archy@1.0.0 +11607 silly preinstall asap@2.0.6 /usr/local/lib/node_modules/.staging/asap-e497c064 +11608 info lifecycle asap@2.0.6~preinstall: asap@2.0.6 +11609 silly preinstall balanced-match@1.0.2 /usr/local/lib/node_modules/.staging/balanced-match-70751aba +11610 info lifecycle balanced-match@1.0.2~preinstall: balanced-match@1.0.2 +11611 silly preinstall binary-extensions@2.2.0 /usr/local/lib/node_modules/.staging/binary-extensions-acd08d45 +11612 info lifecycle binary-extensions@2.2.0~preinstall: binary-extensions@2.2.0 +11613 silly preinstall brace-expansion@2.0.1 /usr/local/lib/node_modules/.staging/brace-expansion-c20b8fe8 +11614 info lifecycle brace-expansion@2.0.1~preinstall: brace-expansion@2.0.1 +11615 silly preinstall chownr@2.0.0 /usr/local/lib/node_modules/.staging/chownr-c120b5ee +11616 info lifecycle chownr@2.0.0~preinstall: chownr@2.0.0 +11617 silly preinstall clean-stack@2.2.0 /usr/local/lib/node_modules/.staging/clean-stack-5aa2b5ec +11618 info lifecycle clean-stack@2.2.0~preinstall: clean-stack@2.2.0 +11619 silly preinstall clone@1.0.4 /usr/local/lib/node_modules/.staging/clone-7410179f +11620 info lifecycle clone@1.0.4~preinstall: clone@1.0.4 +11621 silly preinstall color-name@1.1.4 /usr/local/lib/node_modules/.staging/color-name-c152dd8e +11622 info lifecycle color-name@1.1.4~preinstall: color-name@1.1.4 +11623 silly preinstall color-convert@2.0.1 /usr/local/lib/node_modules/.staging/color-convert-7eb73623 +11624 info lifecycle color-convert@2.0.1~preinstall: color-convert@2.0.1 +11625 silly preinstall ansi-styles@4.3.0 /usr/local/lib/node_modules/.staging/ansi-styles-d556c868 +11626 info lifecycle ansi-styles@4.3.0~preinstall: ansi-styles@4.3.0 +11627 silly preinstall @npmcli/disparity-colors@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/disparity-colors-e5ed2059 +11628 info lifecycle @npmcli/disparity-colors@2.0.0~preinstall: @npmcli/disparity-colors@2.0.0 +11629 silly preinstall color-support@1.1.3 /usr/local/lib/node_modules/.staging/color-support-51d60995 +11630 info lifecycle color-support@1.1.3~preinstall: color-support@1.1.3 +11631 silly preinstall common-ancestor-path@1.0.1 /usr/local/lib/node_modules/.staging/common-ancestor-path-354edb7a +11632 info lifecycle common-ancestor-path@1.0.1~preinstall: common-ancestor-path@1.0.1 +11633 silly preinstall concat-map@0.0.1 /usr/local/lib/node_modules/.staging/concat-map-4b383e7c +11634 info lifecycle concat-map@0.0.1~preinstall: concat-map@0.0.1 +11635 silly preinstall console-control-strings@1.1.0 /usr/local/lib/node_modules/.staging/console-control-strings-2a540117 +11636 info lifecycle console-control-strings@1.1.0~preinstall: console-control-strings@1.1.0 +11637 silly preinstall cssesc@3.0.0 /usr/local/lib/node_modules/.staging/cssesc-42bcf383 +11638 info lifecycle cssesc@3.0.0~preinstall: cssesc@3.0.0 +11639 silly preinstall ms@2.1.2 /usr/local/lib/node_modules/.staging/ms-2510d1b5 +11640 info lifecycle ms@2.1.2~preinstall: ms@2.1.2 +11641 silly preinstall debug@4.3.4 /usr/local/lib/node_modules/.staging/debug-01ada5f0 +11642 info lifecycle debug@4.3.4~preinstall: debug@4.3.4 +11643 silly preinstall agent-base@6.0.2 /usr/local/lib/node_modules/.staging/agent-base-5d0fd4af +11644 info lifecycle agent-base@6.0.2~preinstall: agent-base@6.0.2 +11645 silly preinstall debuglog@1.0.1 /usr/local/lib/node_modules/.staging/debuglog-d20b5127 +11646 info lifecycle debuglog@1.0.1~preinstall: debuglog@1.0.1 +11647 silly preinstall defaults@1.0.3 /usr/local/lib/node_modules/.staging/defaults-b36912ac +11648 info lifecycle defaults@1.0.3~preinstall: defaults@1.0.3 +11649 silly preinstall delegates@1.0.0 /usr/local/lib/node_modules/.staging/delegates-1ede5aa9 +11650 info lifecycle delegates@1.0.0~preinstall: delegates@1.0.0 +11651 silly preinstall depd@1.1.2 /usr/local/lib/node_modules/.staging/depd-f7a023d9 +11652 info lifecycle depd@1.1.2~preinstall: depd@1.1.2 +11653 silly preinstall diff@5.0.0 /usr/local/lib/node_modules/.staging/diff-24676c14 +11654 info lifecycle diff@5.0.0~preinstall: diff@5.0.0 +11655 silly preinstall emoji-regex@8.0.0 /usr/local/lib/node_modules/.staging/emoji-regex-631d8a04 +11656 info lifecycle emoji-regex@8.0.0~preinstall: emoji-regex@8.0.0 +11657 silly preinstall env-paths@2.2.1 /usr/local/lib/node_modules/.staging/env-paths-9b3e2934 +11658 info lifecycle env-paths@2.2.1~preinstall: env-paths@2.2.1 +11659 silly preinstall err-code@2.0.3 /usr/local/lib/node_modules/.staging/err-code-9dd409e6 +11660 info lifecycle err-code@2.0.3~preinstall: err-code@2.0.3 +11661 silly preinstall fastest-levenshtein@1.0.12 /usr/local/lib/node_modules/.staging/fastest-levenshtein-90dd3aca +11662 info lifecycle fastest-levenshtein@1.0.12~preinstall: fastest-levenshtein@1.0.12 +11663 silly preinstall fs.realpath@1.0.0 /usr/local/lib/node_modules/.staging/fs.realpath-de7f77be +11664 info lifecycle fs.realpath@1.0.0~preinstall: fs.realpath@1.0.0 +11665 silly preinstall function-bind@1.1.1 /usr/local/lib/node_modules/.staging/function-bind-7e3dd0b4 +11666 info lifecycle function-bind@1.1.1~preinstall: function-bind@1.1.1 +11667 silly preinstall graceful-fs@4.2.10 /usr/local/lib/node_modules/.staging/graceful-fs-bab36169 +11668 info lifecycle graceful-fs@4.2.10~preinstall: graceful-fs@4.2.10 +11669 silly preinstall has@1.0.3 /usr/local/lib/node_modules/.staging/has-3e37e8fe +11670 info lifecycle has@1.0.3~preinstall: has@1.0.3 +11671 silly preinstall has-flag@4.0.0 /usr/local/lib/node_modules/.staging/has-flag-983be62e +11672 info lifecycle has-flag@4.0.0~preinstall: has-flag@4.0.0 +11673 silly preinstall has-unicode@2.0.1 /usr/local/lib/node_modules/.staging/has-unicode-e536e0de +11674 info lifecycle has-unicode@2.0.1~preinstall: has-unicode@2.0.1 +11675 silly preinstall http-cache-semantics@4.1.0 /usr/local/lib/node_modules/.staging/http-cache-semantics-cd425f53 +11676 info lifecycle http-cache-semantics@4.1.0~preinstall: http-cache-semantics@4.1.0 +11677 silly preinstall http-proxy-agent@5.0.0 /usr/local/lib/node_modules/.staging/http-proxy-agent-79e54e62 +11678 info lifecycle http-proxy-agent@5.0.0~preinstall: http-proxy-agent@5.0.0 +11679 silly preinstall https-proxy-agent@5.0.1 /usr/local/lib/node_modules/.staging/https-proxy-agent-089e7164 +11680 info lifecycle https-proxy-agent@5.0.1~preinstall: https-proxy-agent@5.0.1 +11681 silly preinstall imurmurhash@0.1.4 /usr/local/lib/node_modules/.staging/imurmurhash-c227059f +11682 info lifecycle imurmurhash@0.1.4~preinstall: imurmurhash@0.1.4 +11683 silly preinstall indent-string@4.0.0 /usr/local/lib/node_modules/.staging/indent-string-670ae341 +11684 info lifecycle indent-string@4.0.0~preinstall: indent-string@4.0.0 +11685 silly preinstall aggregate-error@3.1.0 /usr/local/lib/node_modules/.staging/aggregate-error-49551cdb +11686 info lifecycle aggregate-error@3.1.0~preinstall: aggregate-error@3.1.0 +11687 silly preinstall infer-owner@1.0.4 /usr/local/lib/node_modules/.staging/infer-owner-25c32cf7 +11688 info lifecycle infer-owner@1.0.4~preinstall: infer-owner@1.0.4 +11689 silly preinstall @npmcli/promise-spawn@3.0.0 /usr/local/lib/node_modules/.staging/@npmcli/promise-spawn-78f92110 +11690 info lifecycle @npmcli/promise-spawn@3.0.0~preinstall: @npmcli/promise-spawn@3.0.0 +11691 silly preinstall inherits@2.0.4 /usr/local/lib/node_modules/.staging/inherits-e883a9c3 +11692 info lifecycle inherits@2.0.4~preinstall: inherits@2.0.4 +11693 silly preinstall ini@3.0.0 /usr/local/lib/node_modules/.staging/ini-50e90054 +11694 info lifecycle ini@3.0.0~preinstall: ini@3.0.0 +11695 silly preinstall ip@1.1.8 /usr/local/lib/node_modules/.staging/ip-01a8a2a0 +11696 info lifecycle ip@1.1.8~preinstall: ip@1.1.8 +11697 silly preinstall ip-regex@4.3.0 /usr/local/lib/node_modules/.staging/ip-regex-a56b75ae +11698 info lifecycle ip-regex@4.3.0~preinstall: ip-regex@4.3.0 +11699 silly preinstall cidr-regex@3.1.1 /usr/local/lib/node_modules/.staging/cidr-regex-cf8879a7 +11700 info lifecycle cidr-regex@3.1.1~preinstall: cidr-regex@3.1.1 +11701 silly preinstall is-cidr@4.0.2 /usr/local/lib/node_modules/.staging/is-cidr-e33c1795 +11702 info lifecycle is-cidr@4.0.2~preinstall: is-cidr@4.0.2 +11703 silly preinstall is-core-module@2.9.0 /usr/local/lib/node_modules/.staging/is-core-module-adde3147 +11704 info lifecycle is-core-module@2.9.0~preinstall: is-core-module@2.9.0 +11705 silly preinstall is-fullwidth-code-point@3.0.0 /usr/local/lib/node_modules/.staging/is-fullwidth-code-point-8c6f6ccc +11706 info lifecycle is-fullwidth-code-point@3.0.0~preinstall: is-fullwidth-code-point@3.0.0 +11707 silly preinstall is-lambda@1.0.1 /usr/local/lib/node_modules/.staging/is-lambda-a024d2aa +11708 info lifecycle is-lambda@1.0.1~preinstall: is-lambda@1.0.1 +11709 silly preinstall isexe@2.0.0 /usr/local/lib/node_modules/.staging/isexe-27026ccf +11710 info lifecycle isexe@2.0.0~preinstall: isexe@2.0.0 +11711 silly preinstall json-parse-even-better-errors@2.3.1 /usr/local/lib/node_modules/.staging/json-parse-even-better-errors-20de0b92 +11712 info lifecycle json-parse-even-better-errors@2.3.1~preinstall: json-parse-even-better-errors@2.3.1 +11713 silly preinstall @npmcli/package-json@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/package-json-c721deba +11714 info lifecycle @npmcli/package-json@2.0.0~preinstall: @npmcli/package-json@2.0.0 +11715 silly preinstall json-stringify-nice@1.1.4 /usr/local/lib/node_modules/.staging/json-stringify-nice-32952ca9 +11716 info lifecycle json-stringify-nice@1.1.4~preinstall: json-stringify-nice@1.1.4 +11717 silly preinstall jsonparse@1.3.1 /usr/local/lib/node_modules/.staging/jsonparse-5d6f729f +11718 info lifecycle jsonparse@1.3.1~preinstall: jsonparse@1.3.1 +11719 silly preinstall just-diff@5.0.3 /usr/local/lib/node_modules/.staging/just-diff-44dc2348 +11720 info lifecycle just-diff@5.0.3~preinstall: just-diff@5.0.3 +11721 silly preinstall just-diff-apply@5.3.1 /usr/local/lib/node_modules/.staging/just-diff-apply-b571673c +11722 info lifecycle just-diff-apply@5.3.1~preinstall: just-diff-apply@5.3.1 +11723 silly preinstall lru-cache@7.12.0 /usr/local/lib/node_modules/.staging/lru-cache-4b54adf4 +11724 info lifecycle lru-cache@7.12.0~preinstall: lru-cache@7.12.0 +11725 silly preinstall hosted-git-info@5.0.0 /usr/local/lib/node_modules/.staging/hosted-git-info-acf8357d +11726 info lifecycle hosted-git-info@5.0.0~preinstall: hosted-git-info@5.0.0 +11727 silly preinstall minimatch@5.1.0 /usr/local/lib/node_modules/.staging/minimatch-3c82d21b +11728 info lifecycle minimatch@5.1.0~preinstall: minimatch@5.1.0 +11729 silly preinstall ignore-walk@5.0.1 /usr/local/lib/node_modules/.staging/ignore-walk-422ec88a +11730 info lifecycle ignore-walk@5.0.1~preinstall: ignore-walk@5.0.1 +11731 silly preinstall mkdirp@1.0.4 /usr/local/lib/node_modules/.staging/mkdirp-fc93736f +11732 info lifecycle mkdirp@1.0.4~preinstall: mkdirp@1.0.4 +11733 silly preinstall mkdirp-infer-owner@2.0.0 /usr/local/lib/node_modules/.staging/mkdirp-infer-owner-22086259 +11734 info lifecycle mkdirp-infer-owner@2.0.0~preinstall: mkdirp-infer-owner@2.0.0 +11735 silly preinstall cmd-shim@5.0.0 /usr/local/lib/node_modules/.staging/cmd-shim-a7e5f768 +11736 info lifecycle cmd-shim@5.0.0~preinstall: cmd-shim@5.0.0 +11737 silly preinstall ms@2.1.3 /usr/local/lib/node_modules/.staging/ms-08d0c588 +11738 info lifecycle ms@2.1.3~preinstall: ms@2.1.3 +11739 silly preinstall humanize-ms@1.2.1 /usr/local/lib/node_modules/.staging/humanize-ms-d7a39a49 +11740 info lifecycle humanize-ms@1.2.1~preinstall: humanize-ms@1.2.1 +11741 silly preinstall agentkeepalive@4.2.1 /usr/local/lib/node_modules/.staging/agentkeepalive-a09e1dc7 +11742 info lifecycle agentkeepalive@4.2.1~preinstall: agentkeepalive@4.2.1 +11743 silly preinstall mute-stream@0.0.8 /usr/local/lib/node_modules/.staging/mute-stream-500e10c3 +11744 info lifecycle mute-stream@0.0.8~preinstall: mute-stream@0.0.8 +11745 silly preinstall negotiator@0.6.3 /usr/local/lib/node_modules/.staging/negotiator-d94b9090 +11746 info lifecycle negotiator@0.6.3~preinstall: negotiator@0.6.3 +11747 silly preinstall brace-expansion@1.1.11 /usr/local/lib/node_modules/.staging/brace-expansion-7a13fb2c +11748 info lifecycle brace-expansion@1.1.11~preinstall: brace-expansion@1.1.11 +11749 silly preinstall minimatch@3.1.2 /usr/local/lib/node_modules/.staging/minimatch-4d821721 +11750 info lifecycle minimatch@3.1.2~preinstall: minimatch@3.1.2 +11751 silly preinstall nopt@5.0.0 /usr/local/lib/node_modules/.staging/nopt-4f0c1bf6 +11752 info lifecycle nopt@5.0.0~preinstall: nopt@5.0.0 +11753 silly preinstall npm-normalize-package-bin@1.0.1 /usr/local/lib/node_modules/.staging/npm-normalize-package-bin-ee172840 +11754 info lifecycle npm-normalize-package-bin@1.0.1~preinstall: npm-normalize-package-bin@1.0.1 +11755 silly preinstall npm-bundled@1.1.2 /usr/local/lib/node_modules/.staging/npm-bundled-78183205 +11756 info lifecycle npm-bundled@1.1.2~preinstall: npm-bundled@1.1.2 +11757 silly preinstall @npmcli/installed-package-contents@1.0.7 /usr/local/lib/node_modules/.staging/@npmcli/installed-package-contents-671fcaba +11758 info lifecycle @npmcli/installed-package-contents@1.0.7~preinstall: @npmcli/installed-package-contents@1.0.7 +11759 silly preinstall npm-user-validate@1.0.1 /usr/local/lib/node_modules/.staging/npm-user-validate-a38804f2 +11760 info lifecycle npm-user-validate@1.0.1~preinstall: npm-user-validate@1.0.1 +11761 silly preinstall opener@1.5.2 /usr/local/lib/node_modules/.staging/opener-cbf3997c +11762 info lifecycle opener@1.5.2~preinstall: opener@1.5.2 +11763 silly preinstall p-map@4.0.0 /usr/local/lib/node_modules/.staging/p-map-2fc44704 +11764 info lifecycle p-map@4.0.0~preinstall: p-map@4.0.0 +11765 silly preinstall parse-conflict-json@2.0.2 /usr/local/lib/node_modules/.staging/parse-conflict-json-bae7c21d +11766 info lifecycle parse-conflict-json@2.0.2~preinstall: parse-conflict-json@2.0.2 +11767 silly preinstall path-is-absolute@1.0.1 /usr/local/lib/node_modules/.staging/path-is-absolute-089981ec +11768 info lifecycle path-is-absolute@1.0.1~preinstall: path-is-absolute@1.0.1 +11769 silly preinstall proc-log@2.0.1 /usr/local/lib/node_modules/.staging/proc-log-70afb38b +11770 info lifecycle proc-log@2.0.1~preinstall: proc-log@2.0.1 +11771 silly preinstall promise-all-reject-late@1.0.1 /usr/local/lib/node_modules/.staging/promise-all-reject-late-d33b0035 +11772 info lifecycle promise-all-reject-late@1.0.1~preinstall: promise-all-reject-late@1.0.1 +11773 silly preinstall promise-call-limit@1.0.1 /usr/local/lib/node_modules/.staging/promise-call-limit-67192b8b +11774 info lifecycle promise-call-limit@1.0.1~preinstall: promise-call-limit@1.0.1 +11775 silly preinstall promise-inflight@1.0.1 /usr/local/lib/node_modules/.staging/promise-inflight-ac3c7371 +11776 info lifecycle promise-inflight@1.0.1~preinstall: promise-inflight@1.0.1 +11777 silly preinstall qrcode-terminal@0.12.0 /usr/local/lib/node_modules/.staging/qrcode-terminal-2d93adec +11778 info lifecycle qrcode-terminal@0.12.0~preinstall: qrcode-terminal@0.12.0 +11779 silly preinstall read@1.0.7 /usr/local/lib/node_modules/.staging/read-1355acb4 +11780 info lifecycle read@1.0.7~preinstall: read@1.0.7 +11781 silly preinstall promzard@0.3.0 /usr/local/lib/node_modules/.staging/promzard-a0518c0b +11782 info lifecycle promzard@0.3.0~preinstall: promzard@0.3.0 +11783 silly preinstall read-cmd-shim@3.0.0 /usr/local/lib/node_modules/.staging/read-cmd-shim-b853f886 +11784 info lifecycle read-cmd-shim@3.0.0~preinstall: read-cmd-shim@3.0.0 +11785 silly preinstall read-package-json-fast@2.0.3 /usr/local/lib/node_modules/.staging/read-package-json-fast-c66995ea +11786 info lifecycle read-package-json-fast@2.0.3~preinstall: read-package-json-fast@2.0.3 +11787 silly preinstall retry@0.12.0 /usr/local/lib/node_modules/.staging/retry-2b0a7fc5 +11788 info lifecycle retry@0.12.0~preinstall: retry@0.12.0 +11789 silly preinstall promise-retry@2.0.1 /usr/local/lib/node_modules/.staging/promise-retry-cbbcfb55 +11790 info lifecycle promise-retry@2.0.1~preinstall: promise-retry@2.0.1 +11791 silly preinstall brace-expansion@1.1.11 /usr/local/lib/node_modules/.staging/brace-expansion-ad1e3e12 +11792 info lifecycle brace-expansion@1.1.11~preinstall: brace-expansion@1.1.11 +11793 silly preinstall minimatch@3.1.2 /usr/local/lib/node_modules/.staging/minimatch-e0ce865a +11794 info lifecycle minimatch@3.1.2~preinstall: minimatch@3.1.2 +11795 silly preinstall safe-buffer@5.2.1 /usr/local/lib/node_modules/.staging/safe-buffer-3483a7e0 +11796 info lifecycle safe-buffer@5.2.1~preinstall: safe-buffer@5.2.1 +11797 silly preinstall safer-buffer@2.1.2 /usr/local/lib/node_modules/.staging/safer-buffer-85e5c885 +11798 info lifecycle safer-buffer@2.1.2~preinstall: safer-buffer@2.1.2 +11799 silly preinstall iconv-lite@0.6.3 /usr/local/lib/node_modules/.staging/iconv-lite-12867322 +11800 info lifecycle iconv-lite@0.6.3~preinstall: iconv-lite@0.6.3 +11801 silly preinstall encoding@0.1.13 /usr/local/lib/node_modules/.staging/encoding-a67bb309 +11802 info lifecycle encoding@0.1.13~preinstall: encoding@0.1.13 +11803 silly preinstall set-blocking@2.0.0 /usr/local/lib/node_modules/.staging/set-blocking-5c332e91 +11804 info lifecycle set-blocking@2.0.0~preinstall: set-blocking@2.0.0 +11805 silly preinstall signal-exit@3.0.7 /usr/local/lib/node_modules/.staging/signal-exit-4043b38a +11806 info lifecycle signal-exit@3.0.7~preinstall: signal-exit@3.0.7 +11807 silly preinstall smart-buffer@4.2.0 /usr/local/lib/node_modules/.staging/smart-buffer-c64e0c78 +11808 info lifecycle smart-buffer@4.2.0~preinstall: smart-buffer@4.2.0 +11809 silly preinstall socks@2.6.2 /usr/local/lib/node_modules/.staging/socks-b39c1d4e +11810 info lifecycle socks@2.6.2~preinstall: socks@2.6.2 +11811 silly preinstall socks-proxy-agent@7.0.0 /usr/local/lib/node_modules/.staging/socks-proxy-agent-6b893bed +11812 info lifecycle socks-proxy-agent@7.0.0~preinstall: socks-proxy-agent@7.0.0 +11813 silly preinstall spdx-exceptions@2.3.0 /usr/local/lib/node_modules/.staging/spdx-exceptions-4b63464a +11814 info lifecycle spdx-exceptions@2.3.0~preinstall: spdx-exceptions@2.3.0 +11815 silly preinstall spdx-license-ids@3.0.11 /usr/local/lib/node_modules/.staging/spdx-license-ids-eb927cdc +11816 info lifecycle spdx-license-ids@3.0.11~preinstall: spdx-license-ids@3.0.11 +11817 silly preinstall spdx-expression-parse@3.0.1 /usr/local/lib/node_modules/.staging/spdx-expression-parse-3f2492f7 +11818 info lifecycle spdx-expression-parse@3.0.1~preinstall: spdx-expression-parse@3.0.1 +11819 silly preinstall spdx-correct@3.1.1 /usr/local/lib/node_modules/.staging/spdx-correct-96fb0235 +11820 info lifecycle spdx-correct@3.1.1~preinstall: spdx-correct@3.1.1 +11821 silly preinstall string_decoder@1.3.0 /usr/local/lib/node_modules/.staging/string_decoder-22dfdd6e +11822 info lifecycle string_decoder@1.3.0~preinstall: string_decoder@1.3.0 +11823 silly preinstall strip-ansi@6.0.1 /usr/local/lib/node_modules/.staging/strip-ansi-b3057c80 +11824 info lifecycle strip-ansi@6.0.1~preinstall: strip-ansi@6.0.1 +11825 silly preinstall string-width@4.2.3 /usr/local/lib/node_modules/.staging/string-width-9f8987cf +11826 info lifecycle string-width@4.2.3~preinstall: string-width@4.2.3 +11827 silly preinstall cli-table3@0.6.2 /usr/local/lib/node_modules/.staging/cli-table3-021ad3c6 +11828 info lifecycle cli-table3@0.6.2~preinstall: cli-table3@0.6.2 +11829 silly preinstall cli-columns@4.0.0 /usr/local/lib/node_modules/.staging/cli-columns-dadd8391 +11830 info lifecycle cli-columns@4.0.0~preinstall: cli-columns@4.0.0 +11831 silly preinstall supports-color@7.2.0 /usr/local/lib/node_modules/.staging/supports-color-d295fa68 +11832 info lifecycle supports-color@7.2.0~preinstall: supports-color@7.2.0 +11833 silly preinstall chalk@4.1.2 /usr/local/lib/node_modules/.staging/chalk-f1329439 +11834 info lifecycle chalk@4.1.2~preinstall: chalk@4.1.2 +11835 silly preinstall npm-audit-report@3.0.0 /usr/local/lib/node_modules/.staging/npm-audit-report-60cb0747 +11836 info lifecycle npm-audit-report@3.0.0~preinstall: npm-audit-report@3.0.0 +11837 silly preinstall text-table@0.2.0 /usr/local/lib/node_modules/.staging/text-table-790f8f9e +11838 info lifecycle text-table@0.2.0~preinstall: text-table@0.2.0 +11839 silly preinstall tiny-relative-date@1.3.0 /usr/local/lib/node_modules/.staging/tiny-relative-date-dec5c10f +11840 info lifecycle tiny-relative-date@1.3.0~preinstall: tiny-relative-date@1.3.0 +11841 silly preinstall treeverse@2.0.0 /usr/local/lib/node_modules/.staging/treeverse-8bf03394 +11842 info lifecycle treeverse@2.0.0~preinstall: treeverse@2.0.0 +11843 silly preinstall unique-slug@2.0.2 /usr/local/lib/node_modules/.staging/unique-slug-2b32b429 +11844 info lifecycle unique-slug@2.0.2~preinstall: unique-slug@2.0.2 +11845 silly preinstall unique-filename@1.1.1 /usr/local/lib/node_modules/.staging/unique-filename-13a0c4a5 +11846 info lifecycle unique-filename@1.1.1~preinstall: unique-filename@1.1.1 +11847 silly preinstall util-deprecate@1.0.2 /usr/local/lib/node_modules/.staging/util-deprecate-b7f3c7a3 +11848 info lifecycle util-deprecate@1.0.2~preinstall: util-deprecate@1.0.2 +11849 silly preinstall readable-stream@3.6.0 /usr/local/lib/node_modules/.staging/readable-stream-aa3c9f7c +11850 info lifecycle readable-stream@3.6.0~preinstall: readable-stream@3.6.0 +11851 silly preinstall are-we-there-yet@3.0.0 /usr/local/lib/node_modules/.staging/are-we-there-yet-0ad5805c +11852 info lifecycle are-we-there-yet@3.0.0~preinstall: are-we-there-yet@3.0.0 +11853 silly preinstall postcss-selector-parser@6.0.10 /usr/local/lib/node_modules/.staging/postcss-selector-parser-db0d55d3 +11854 info lifecycle postcss-selector-parser@6.0.10~preinstall: postcss-selector-parser@6.0.10 +11855 silly preinstall validate-npm-package-license@3.0.4 /usr/local/lib/node_modules/.staging/validate-npm-package-license-3de965ce +11856 info lifecycle validate-npm-package-license@3.0.4~preinstall: validate-npm-package-license@3.0.4 +11857 silly preinstall walk-up-path@1.0.0 /usr/local/lib/node_modules/.staging/walk-up-path-e9d9e59e +11858 info lifecycle walk-up-path@1.0.0~preinstall: walk-up-path@1.0.0 +11859 silly preinstall wcwidth@1.0.1 /usr/local/lib/node_modules/.staging/wcwidth-d7d18801 +11860 info lifecycle wcwidth@1.0.1~preinstall: wcwidth@1.0.1 +11861 silly preinstall columnify@1.6.0 /usr/local/lib/node_modules/.staging/columnify-faefd794 +11862 info lifecycle columnify@1.6.0~preinstall: columnify@1.6.0 +11863 silly preinstall which@2.0.2 /usr/local/lib/node_modules/.staging/which-c2822b42 +11864 info lifecycle which@2.0.2~preinstall: which@2.0.2 +11865 silly preinstall wide-align@1.1.5 /usr/local/lib/node_modules/.staging/wide-align-3d73a6bb +11866 info lifecycle wide-align@1.1.5~preinstall: wide-align@1.1.5 +11867 silly preinstall gauge@4.0.4 /usr/local/lib/node_modules/.staging/gauge-6c37f857 +11868 info lifecycle gauge@4.0.4~preinstall: gauge@4.0.4 +11869 silly preinstall npmlog@6.0.2 /usr/local/lib/node_modules/.staging/npmlog-4ff78356 +11870 info lifecycle npmlog@6.0.2~preinstall: npmlog@6.0.2 +11871 silly preinstall wrappy@1.0.2 /usr/local/lib/node_modules/.staging/wrappy-068b5d9e +11872 info lifecycle wrappy@1.0.2~preinstall: wrappy@1.0.2 +11873 silly preinstall once@1.4.0 /usr/local/lib/node_modules/.staging/once-c117a91b +11874 info lifecycle once@1.4.0~preinstall: once@1.4.0 +11875 silly preinstall inflight@1.0.6 /usr/local/lib/node_modules/.staging/inflight-898b4f83 +11876 info lifecycle inflight@1.0.6~preinstall: inflight@1.0.6 +11877 silly preinstall glob@7.2.3 /usr/local/lib/node_modules/.staging/glob-c710e546 +11878 info lifecycle glob@7.2.3~preinstall: glob@7.2.3 +11879 silly preinstall rimraf@3.0.2 /usr/local/lib/node_modules/.staging/rimraf-744450cd +11880 info lifecycle rimraf@3.0.2~preinstall: rimraf@3.0.2 +11881 silly preinstall @npmcli/move-file@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/move-file-7908c5c5 +11882 info lifecycle @npmcli/move-file@2.0.0~preinstall: @npmcli/move-file@2.0.0 +11883 silly preinstall glob@7.2.3 /usr/local/lib/node_modules/.staging/glob-2cbfd666 +11884 info lifecycle glob@7.2.3~preinstall: glob@7.2.3 +11885 silly preinstall glob@8.0.3 /usr/local/lib/node_modules/.staging/glob-b40c9bb3 +11886 info lifecycle glob@8.0.3~preinstall: glob@8.0.3 +11887 silly preinstall npm-packlist@5.1.1 /usr/local/lib/node_modules/.staging/npm-packlist-f59bf989 +11888 info lifecycle npm-packlist@5.1.1~preinstall: npm-packlist@5.1.1 +11889 silly preinstall @npmcli/map-workspaces@2.0.3 /usr/local/lib/node_modules/.staging/@npmcli/map-workspaces-389bc853 +11890 info lifecycle @npmcli/map-workspaces@2.0.3~preinstall: @npmcli/map-workspaces@2.0.3 +11891 silly preinstall dezalgo@1.0.4 /usr/local/lib/node_modules/.staging/dezalgo-e67ad640 +11892 info lifecycle dezalgo@1.0.4~preinstall: dezalgo@1.0.4 +11893 silly preinstall readdir-scoped-modules@1.1.0 /usr/local/lib/node_modules/.staging/readdir-scoped-modules-8fd2ceea +11894 info lifecycle readdir-scoped-modules@1.1.0~preinstall: readdir-scoped-modules@1.1.0 +11895 silly preinstall write-file-atomic@4.0.1 /usr/local/lib/node_modules/.staging/write-file-atomic-cfec75c0 +11896 info lifecycle write-file-atomic@4.0.1~preinstall: write-file-atomic@4.0.1 +11897 silly preinstall bin-links@3.0.1 /usr/local/lib/node_modules/.staging/bin-links-bc532215 +11898 info lifecycle bin-links@3.0.1~preinstall: bin-links@3.0.1 +11899 silly preinstall yallist@4.0.0 /usr/local/lib/node_modules/.staging/yallist-dc313bcd +11900 info lifecycle yallist@4.0.0~preinstall: yallist@4.0.0 +11901 silly preinstall lru-cache@6.0.0 /usr/local/lib/node_modules/.staging/lru-cache-5257938d +11902 info lifecycle lru-cache@6.0.0~preinstall: lru-cache@6.0.0 +11903 silly preinstall semver@7.3.7 /usr/local/lib/node_modules/.staging/semver-44a4e165 +11904 info lifecycle semver@7.3.7~preinstall: semver@7.3.7 +11905 silly preinstall npm-install-checks@5.0.0 /usr/local/lib/node_modules/.staging/npm-install-checks-df306bc5 +11906 info lifecycle npm-install-checks@5.0.0~preinstall: npm-install-checks@5.0.0 +11907 silly preinstall normalize-package-data@4.0.0 /usr/local/lib/node_modules/.staging/normalize-package-data-ff2cbd03 +11908 info lifecycle normalize-package-data@4.0.0~preinstall: normalize-package-data@4.0.0 +11909 silly preinstall read-package-json@5.0.1 /usr/local/lib/node_modules/.staging/read-package-json-68c5e644 +11910 info lifecycle read-package-json@5.0.1~preinstall: read-package-json@5.0.1 +11911 silly preinstall builtins@5.0.1 /usr/local/lib/node_modules/.staging/builtins-3a9f5b99 +11912 info lifecycle builtins@5.0.1~preinstall: builtins@5.0.1 +11913 silly preinstall validate-npm-package-name@4.0.0 /usr/local/lib/node_modules/.staging/validate-npm-package-name-e58d895b +11914 info lifecycle validate-npm-package-name@4.0.0~preinstall: validate-npm-package-name@4.0.0 +11915 silly preinstall npm-package-arg@9.1.0 /usr/local/lib/node_modules/.staging/npm-package-arg-9e17101e +11916 info lifecycle npm-package-arg@9.1.0~preinstall: npm-package-arg@9.1.0 +11917 silly preinstall npm-pick-manifest@7.0.1 /usr/local/lib/node_modules/.staging/npm-pick-manifest-72610ded +11918 info lifecycle npm-pick-manifest@7.0.1~preinstall: npm-pick-manifest@7.0.1 +11919 silly preinstall init-package-json@3.0.2 /usr/local/lib/node_modules/.staging/init-package-json-5fd2d867 +11920 info lifecycle init-package-json@3.0.2~preinstall: init-package-json@3.0.2 +11921 silly preinstall @npmcli/query@1.1.1 /usr/local/lib/node_modules/.staging/@npmcli/query-71ed7a85 +11922 info lifecycle @npmcli/query@1.1.1~preinstall: @npmcli/query@1.1.1 +11923 silly preinstall @npmcli/git@3.0.1 /usr/local/lib/node_modules/.staging/@npmcli/git-6ba64e14 +11924 info lifecycle @npmcli/git@3.0.1~preinstall: @npmcli/git@3.0.1 +11925 silly preinstall @npmcli/fs@2.1.1 /usr/local/lib/node_modules/.staging/@npmcli/fs-2f0d0b36 +11926 info lifecycle @npmcli/fs@2.1.1~preinstall: @npmcli/fs@2.1.1 +11927 silly preinstall @npmcli/config@4.2.0 /usr/local/lib/node_modules/.staging/@npmcli/config-9b89ce02 +11928 info lifecycle @npmcli/config@4.2.0~preinstall: @npmcli/config@4.2.0 +11929 silly preinstall minipass@3.3.4 /usr/local/lib/node_modules/.staging/minipass-faca0802 +11930 info lifecycle minipass@3.3.4~preinstall: minipass@3.3.4 +11931 silly preinstall ssri@9.0.1 /usr/local/lib/node_modules/.staging/ssri-25da4b69 +11932 info lifecycle ssri@9.0.1~preinstall: ssri@9.0.1 +11933 silly preinstall minizlib@2.1.2 /usr/local/lib/node_modules/.staging/minizlib-5923106f +11934 info lifecycle minizlib@2.1.2~preinstall: minizlib@2.1.2 +11935 silly preinstall minipass-sized@1.0.3 /usr/local/lib/node_modules/.staging/minipass-sized-1444476c +11936 info lifecycle minipass-sized@1.0.3~preinstall: minipass-sized@1.0.3 +11937 silly preinstall minipass-pipeline@1.2.4 /usr/local/lib/node_modules/.staging/minipass-pipeline-5504d344 +11938 info lifecycle minipass-pipeline@1.2.4~preinstall: minipass-pipeline@1.2.4 +11939 silly preinstall minipass-json-stream@1.0.1 /usr/local/lib/node_modules/.staging/minipass-json-stream-ba088833 +11940 info lifecycle minipass-json-stream@1.0.1~preinstall: minipass-json-stream@1.0.1 +11941 silly preinstall minipass-flush@1.0.5 /usr/local/lib/node_modules/.staging/minipass-flush-a0a91a96 +11942 info lifecycle minipass-flush@1.0.5~preinstall: minipass-flush@1.0.5 +11943 silly preinstall minipass-fetch@2.1.0 /usr/local/lib/node_modules/.staging/minipass-fetch-9bc7d975 +11944 info lifecycle minipass-fetch@2.1.0~preinstall: minipass-fetch@2.1.0 +11945 silly preinstall minipass-collect@1.0.2 /usr/local/lib/node_modules/.staging/minipass-collect-79bd44d1 +11946 info lifecycle minipass-collect@1.0.2~preinstall: minipass-collect@1.0.2 +11947 silly preinstall fs-minipass@2.1.0 /usr/local/lib/node_modules/.staging/fs-minipass-f6154cd2 +11948 info lifecycle fs-minipass@2.1.0~preinstall: fs-minipass@2.1.0 +11949 silly preinstall tar@6.1.11 /usr/local/lib/node_modules/.staging/tar-f5d77160 +11950 info lifecycle tar@6.1.11~preinstall: tar@6.1.11 +11951 silly preinstall cacache@16.1.1 /usr/local/lib/node_modules/.staging/cacache-0ce2e1e0 +11952 info lifecycle cacache@16.1.1~preinstall: cacache@16.1.1 +11953 silly preinstall make-fetch-happen@10.2.0 /usr/local/lib/node_modules/.staging/make-fetch-happen-a31e34b1 +11954 info lifecycle make-fetch-happen@10.2.0~preinstall: make-fetch-happen@10.2.0 +11955 silly preinstall npm-registry-fetch@13.3.0 /usr/local/lib/node_modules/.staging/npm-registry-fetch-87b20155 +11956 info lifecycle npm-registry-fetch@13.3.0~preinstall: npm-registry-fetch@13.3.0 +11957 silly preinstall npm-profile@6.2.1 /usr/local/lib/node_modules/.staging/npm-profile-aff1fd50 +11958 info lifecycle npm-profile@6.2.1~preinstall: npm-profile@6.2.1 +11959 silly preinstall libnpmteam@4.0.3 /usr/local/lib/node_modules/.staging/libnpmteam-5d3b6a58 +11960 info lifecycle libnpmteam@4.0.3~preinstall: libnpmteam@4.0.3 +11961 silly preinstall libnpmsearch@5.0.3 /usr/local/lib/node_modules/.staging/libnpmsearch-22d0289d +11962 info lifecycle libnpmsearch@5.0.3~preinstall: libnpmsearch@5.0.3 +11963 silly preinstall libnpmpublish@6.0.4 /usr/local/lib/node_modules/.staging/libnpmpublish-29bfb66f +11964 info lifecycle libnpmpublish@6.0.4~preinstall: libnpmpublish@6.0.4 +11965 silly preinstall libnpmorg@4.0.3 /usr/local/lib/node_modules/.staging/libnpmorg-eb889f75 +11966 info lifecycle libnpmorg@4.0.3~preinstall: libnpmorg@4.0.3 +11967 silly preinstall libnpmhook@8.0.3 /usr/local/lib/node_modules/.staging/libnpmhook-9727489f +11968 info lifecycle libnpmhook@8.0.3~preinstall: libnpmhook@8.0.3 +11969 silly preinstall libnpmaccess@6.0.3 /usr/local/lib/node_modules/.staging/libnpmaccess-c8030249 +11970 info lifecycle libnpmaccess@6.0.3~preinstall: libnpmaccess@6.0.3 +11971 silly preinstall node-gyp@9.0.0 /usr/local/lib/node_modules/.staging/node-gyp-2627ae29 +11972 info lifecycle node-gyp@9.0.0~preinstall: node-gyp@9.0.0 +11973 silly preinstall @npmcli/run-script@4.2.0 /usr/local/lib/node_modules/.staging/@npmcli/run-script-03ef8a65 +11974 info lifecycle @npmcli/run-script@4.2.0~preinstall: @npmcli/run-script@4.2.0 +11975 silly preinstall pacote@13.6.1 /usr/local/lib/node_modules/.staging/pacote-9079e067 +11976 info lifecycle pacote@13.6.1~preinstall: pacote@13.6.1 +11977 silly preinstall libnpmdiff@4.0.4 /usr/local/lib/node_modules/.staging/libnpmdiff-4e7e81e0 +11978 info lifecycle libnpmdiff@4.0.4~preinstall: libnpmdiff@4.0.4 +11979 silly preinstall libnpmversion@3.0.6 /usr/local/lib/node_modules/.staging/libnpmversion-1f862df8 +11980 info lifecycle libnpmversion@3.0.6~preinstall: libnpmversion@3.0.6 +11981 silly preinstall libnpmpack@4.1.2 /usr/local/lib/node_modules/.staging/libnpmpack-64d3b81e +11982 info lifecycle libnpmpack@4.1.2~preinstall: libnpmpack@4.1.2 +11983 silly preinstall @npmcli/metavuln-calculator@3.1.1 /usr/local/lib/node_modules/.staging/@npmcli/metavuln-calculator-51005a29 +11984 info lifecycle @npmcli/metavuln-calculator@3.1.1~preinstall: @npmcli/metavuln-calculator@3.1.1 +11985 silly preinstall @npmcli/arborist@5.4.0 /usr/local/lib/node_modules/.staging/@npmcli/arborist-673cf638 +11986 info lifecycle @npmcli/arborist@5.4.0~preinstall: @npmcli/arborist@5.4.0 +11987 silly preinstall libnpmfund@3.0.2 /usr/local/lib/node_modules/.staging/libnpmfund-b834dbe2 +11988 info lifecycle libnpmfund@3.0.2~preinstall: libnpmfund@3.0.2 +11989 silly preinstall libnpmexec@4.0.9 /usr/local/lib/node_modules/.staging/libnpmexec-818d1c62 +11990 info lifecycle libnpmexec@4.0.9~preinstall: libnpmexec@4.0.9 +11991 silly preinstall npm@8.16.0 /usr/local/lib/node_modules/.staging/npm-23faa247 +11992 info lifecycle npm@8.16.0~preinstall: npm@8.16.0 +11993 silly preinstall object-assign@4.1.1 /usr/local/lib/node_modules/.staging/object-assign-6f992b60 +11994 info lifecycle object-assign@4.1.1~preinstall: object-assign@4.1.1 +11995 silly preinstall p-cancelable@1.1.0 /usr/local/lib/node_modules/.staging/p-cancelable-124f7da3 +11996 info lifecycle p-cancelable@1.1.0~preinstall: p-cancelable@1.1.0 +11997 silly preinstall p-finally@1.0.0 /usr/local/lib/node_modules/.staging/p-finally-99b7bee0 +11998 info lifecycle p-finally@1.0.0~preinstall: p-finally@1.0.0 +11999 silly preinstall p-map@4.0.0 /usr/local/lib/node_modules/.staging/p-map-0fe345b2 +12000 info lifecycle p-map@4.0.0~preinstall: p-map@4.0.0 +12001 silly preinstall p-timeout@3.2.0 /usr/local/lib/node_modules/.staging/p-timeout-33823b8e +12002 info lifecycle p-timeout@3.2.0~preinstall: p-timeout@3.2.0 +12003 silly preinstall p-event@4.2.0 /usr/local/lib/node_modules/.staging/p-event-d4a19014 +12004 info lifecycle p-event@4.2.0~preinstall: p-event@4.2.0 +12005 silly preinstall cp-file@9.1.0 /usr/local/lib/node_modules/.staging/cp-file-24ad3652 +12006 info lifecycle cp-file@9.1.0~preinstall: cp-file@9.1.0 +12007 silly preinstall semver@6.3.0 /usr/local/lib/node_modules/.staging/semver-d0f49ab4 +12008 info lifecycle semver@6.3.0~preinstall: semver@6.3.0 +12009 silly preinstall ini@1.3.8 /usr/local/lib/node_modules/.staging/ini-6db61219 +12010 info lifecycle ini@1.3.8~preinstall: ini@1.3.8 +12011 silly preinstall parse-git-config@3.0.0 /usr/local/lib/node_modules/.staging/parse-git-config-8f818228 +12012 info lifecycle parse-git-config@3.0.0~preinstall: parse-git-config@3.0.0 +12013 silly preinstall path-is-absolute@1.0.1 /usr/local/lib/node_modules/.staging/path-is-absolute-fcd0e7fa +12014 info lifecycle path-is-absolute@1.0.1~preinstall: path-is-absolute@1.0.1 +12015 silly preinstall path-key@3.1.1 /usr/local/lib/node_modules/.staging/path-key-1e13dca9 +12016 info lifecycle path-key@3.1.1~preinstall: path-key@3.1.1 +12017 silly preinstall path-type@4.0.0 /usr/local/lib/node_modules/.staging/path-type-ffcea22c +12018 info lifecycle path-type@4.0.0~preinstall: path-type@4.0.0 +12019 silly preinstall dir-glob@3.0.1 /usr/local/lib/node_modules/.staging/dir-glob-4f413ad8 +12020 info lifecycle dir-glob@3.0.1~preinstall: dir-glob@3.0.1 +12021 silly preinstall pend@1.2.0 /usr/local/lib/node_modules/.staging/pend-dcf992cb +12022 info lifecycle pend@1.2.0~preinstall: pend@1.2.0 +12023 silly preinstall fd-slicer@1.1.0 /usr/local/lib/node_modules/.staging/fd-slicer-f4c60a8a +12024 info lifecycle fd-slicer@1.1.0~preinstall: fd-slicer@1.1.0 +12025 silly preinstall picomatch@2.3.1 /usr/local/lib/node_modules/.staging/picomatch-a48f0603 +12026 info lifecycle picomatch@2.3.1~preinstall: picomatch@2.3.1 +12027 silly preinstall pify@2.3.0 /usr/local/lib/node_modules/.staging/pify-011a1199 +12028 info lifecycle pify@2.3.0~preinstall: pify@2.3.0 +12029 silly preinstall pinkie@2.0.4 /usr/local/lib/node_modules/.staging/pinkie-e1de14aa +12030 info lifecycle pinkie@2.0.4~preinstall: pinkie@2.0.4 +12031 silly preinstall pinkie-promise@2.0.1 /usr/local/lib/node_modules/.staging/pinkie-promise-1b6f15ef +12032 info lifecycle pinkie-promise@2.0.1~preinstall: pinkie-promise@2.0.1 +12033 silly preinstall get-stream@2.3.1 /usr/local/lib/node_modules/.staging/get-stream-677983a6 +12034 info lifecycle get-stream@2.3.1~preinstall: get-stream@2.3.1 +12035 silly preinstall prepend-http@2.0.0 /usr/local/lib/node_modules/.staging/prepend-http-24b7bd34 +12036 info lifecycle prepend-http@2.0.0~preinstall: prepend-http@2.0.0 +12037 silly preinstall proc-log@2.0.1 /usr/local/lib/node_modules/.staging/proc-log-9a7e95fe +12038 info lifecycle proc-log@2.0.1~preinstall: proc-log@2.0.1 +12039 silly preinstall process-nextick-args@2.0.1 /usr/local/lib/node_modules/.staging/process-nextick-args-f405db1a +12040 info lifecycle process-nextick-args@2.0.1~preinstall: process-nextick-args@2.0.1 +12041 silly preinstall promise-inflight@1.0.1 /usr/local/lib/node_modules/.staging/promise-inflight-0b22bc6f +12042 info lifecycle promise-inflight@1.0.1~preinstall: promise-inflight@1.0.1 +12043 silly preinstall queue-microtask@1.2.3 /usr/local/lib/node_modules/.staging/queue-microtask-f9e3cbfa +12044 info lifecycle queue-microtask@1.2.3~preinstall: queue-microtask@1.2.3 +12045 silly preinstall ini@1.3.8 /usr/local/lib/node_modules/.staging/ini-738bc84d +12046 info lifecycle ini@1.3.8~preinstall: ini@1.3.8 +12047 silly preinstall read-package-json-fast@2.0.3 /usr/local/lib/node_modules/.staging/read-package-json-fast-40e98824 +12048 info lifecycle read-package-json-fast@2.0.3~preinstall: read-package-json-fast@2.0.3 +12049 silly preinstall responselike@1.0.2 /usr/local/lib/node_modules/.staging/responselike-80423cc0 +12050 info lifecycle responselike@1.0.2~preinstall: responselike@1.0.2 +12051 silly preinstall retry@0.12.0 /usr/local/lib/node_modules/.staging/retry-4c501bec +12052 info lifecycle retry@0.12.0~preinstall: retry@0.12.0 +12053 silly preinstall promise-retry@2.0.1 /usr/local/lib/node_modules/.staging/promise-retry-dd04feb5 +12054 info lifecycle promise-retry@2.0.1~preinstall: promise-retry@2.0.1 +12055 silly preinstall reusify@1.0.4 /usr/local/lib/node_modules/.staging/reusify-97420c08 +12056 info lifecycle reusify@1.0.4~preinstall: reusify@1.0.4 +12057 silly preinstall fastq@1.13.0 /usr/local/lib/node_modules/.staging/fastq-6f627af3 +12058 info lifecycle fastq@1.13.0~preinstall: fastq@1.13.0 +12059 silly preinstall brace-expansion@1.1.11 /usr/local/lib/node_modules/.staging/brace-expansion-ec8c025b +12060 info lifecycle brace-expansion@1.1.11~preinstall: brace-expansion@1.1.11 +12061 silly preinstall minimatch@3.1.2 /usr/local/lib/node_modules/.staging/minimatch-bd185a8c +12062 info lifecycle minimatch@3.1.2~preinstall: minimatch@3.1.2 +12063 silly preinstall run-parallel@1.2.0 /usr/local/lib/node_modules/.staging/run-parallel-d313d8dd +12064 info lifecycle run-parallel@1.2.0~preinstall: run-parallel@1.2.0 +12065 silly preinstall @nodelib/fs.scandir@2.1.5 /usr/local/lib/node_modules/.staging/@nodelib/fs.scandir-f77ec768 +12066 info lifecycle @nodelib/fs.scandir@2.1.5~preinstall: @nodelib/fs.scandir@2.1.5 +12067 silly preinstall @nodelib/fs.walk@1.2.8 /usr/local/lib/node_modules/.staging/@nodelib/fs.walk-ae586b11 +12068 info lifecycle @nodelib/fs.walk@1.2.8~preinstall: @nodelib/fs.walk@1.2.8 +12069 silly preinstall safe-buffer@5.2.1 /usr/local/lib/node_modules/.staging/safe-buffer-a3a92bd0 +12070 info lifecycle safe-buffer@5.2.1~preinstall: safe-buffer@5.2.1 +12071 silly preinstall safer-buffer@2.1.2 /usr/local/lib/node_modules/.staging/safer-buffer-7677d4af +12072 info lifecycle safer-buffer@2.1.2~preinstall: safer-buffer@2.1.2 +12073 silly preinstall iconv-lite@0.6.3 /usr/local/lib/node_modules/.staging/iconv-lite-943d9246 +12074 info lifecycle iconv-lite@0.6.3~preinstall: iconv-lite@0.6.3 +12075 silly preinstall encoding@0.1.13 /usr/local/lib/node_modules/.staging/encoding-e8533818 +12076 info lifecycle encoding@0.1.13~preinstall: encoding@0.1.13 +12077 silly preinstall seek-bzip@1.0.6 /usr/local/lib/node_modules/.staging/seek-bzip-08681ddd +12078 info lifecycle seek-bzip@1.0.6~preinstall: seek-bzip@1.0.6 +12079 silly preinstall semver@6.3.0 /usr/local/lib/node_modules/.staging/semver-34785602 +12080 info lifecycle semver@6.3.0~preinstall: semver@6.3.0 +12081 silly preinstall semver-diff@3.1.1 /usr/local/lib/node_modules/.staging/semver-diff-56f3addd +12082 info lifecycle semver-diff@3.1.1~preinstall: semver-diff@3.1.1 +12083 silly preinstall set-blocking@2.0.0 /usr/local/lib/node_modules/.staging/set-blocking-fda5a00d +12084 info lifecycle set-blocking@2.0.0~preinstall: set-blocking@2.0.0 +12085 silly preinstall shebang-regex@3.0.0 /usr/local/lib/node_modules/.staging/shebang-regex-0a5da68f +12086 info lifecycle shebang-regex@3.0.0~preinstall: shebang-regex@3.0.0 +12087 silly preinstall shebang-command@2.0.0 /usr/local/lib/node_modules/.staging/shebang-command-bf8b1bb7 +12088 info lifecycle shebang-command@2.0.0~preinstall: shebang-command@2.0.0 +12089 silly preinstall signal-exit@3.0.7 /usr/local/lib/node_modules/.staging/signal-exit-fd472018 +12090 info lifecycle signal-exit@3.0.7~preinstall: signal-exit@3.0.7 +12091 silly preinstall slash@3.0.0 /usr/local/lib/node_modules/.staging/slash-9de63526 +12092 info lifecycle slash@3.0.0~preinstall: slash@3.0.0 +12093 silly preinstall smart-buffer@4.2.0 /usr/local/lib/node_modules/.staging/smart-buffer-cd4ee6a0 +12094 info lifecycle smart-buffer@4.2.0~preinstall: smart-buffer@4.2.0 +12095 silly preinstall socks@2.6.2 /usr/local/lib/node_modules/.staging/socks-0b817eca +12096 info lifecycle socks@2.6.2~preinstall: socks@2.6.2 +12097 silly preinstall socks-proxy-agent@7.0.0 /usr/local/lib/node_modules/.staging/socks-proxy-agent-095922b0 +12098 info lifecycle socks-proxy-agent@7.0.0~preinstall: socks-proxy-agent@7.0.0 +12099 silly preinstall spdx-exceptions@2.3.0 /usr/local/lib/node_modules/.staging/spdx-exceptions-a4d9b0e5 +12100 info lifecycle spdx-exceptions@2.3.0~preinstall: spdx-exceptions@2.3.0 +12101 silly preinstall spdx-license-ids@3.0.11 /usr/local/lib/node_modules/.staging/spdx-license-ids-7b179149 +12102 info lifecycle spdx-license-ids@3.0.11~preinstall: spdx-license-ids@3.0.11 +12103 silly preinstall spdx-expression-parse@3.0.1 /usr/local/lib/node_modules/.staging/spdx-expression-parse-d9979d86 +12104 info lifecycle spdx-expression-parse@3.0.1~preinstall: spdx-expression-parse@3.0.1 +12105 silly preinstall spdx-correct@3.1.1 /usr/local/lib/node_modules/.staging/spdx-correct-8948214d +12106 info lifecycle spdx-correct@3.1.1~preinstall: spdx-correct@3.1.1 +12107 silly preinstall string_decoder@1.3.0 /usr/local/lib/node_modules/.staging/string_decoder-be1f85a4 +12108 info lifecycle string_decoder@1.3.0~preinstall: string_decoder@1.3.0 +12109 silly preinstall strip-ansi@6.0.1 /usr/local/lib/node_modules/.staging/strip-ansi-319e2293 +12110 info lifecycle strip-ansi@6.0.1~preinstall: strip-ansi@6.0.1 +12111 silly preinstall string-width@4.2.3 /usr/local/lib/node_modules/.staging/string-width-f55edfe4 +12112 info lifecycle string-width@4.2.3~preinstall: string-width@4.2.3 +12113 silly preinstall strip-dirs@2.1.0 /usr/local/lib/node_modules/.staging/strip-dirs-7fb3bacb +12114 info lifecycle strip-dirs@2.1.0~preinstall: strip-dirs@2.1.0 +12115 silly preinstall strip-json-comments@2.0.1 /usr/local/lib/node_modules/.staging/strip-json-comments-21a93306 +12116 info lifecycle strip-json-comments@2.0.1~preinstall: strip-json-comments@2.0.1 +12117 silly preinstall rc@1.2.8 /usr/local/lib/node_modules/.staging/rc-ec205368 +12118 info lifecycle rc@1.2.8~preinstall: rc@1.2.8 +12119 silly preinstall registry-url@5.1.0 /usr/local/lib/node_modules/.staging/registry-url-a7bde383 +12120 info lifecycle registry-url@5.1.0~preinstall: registry-url@5.1.0 +12121 silly preinstall registry-auth-token@4.2.2 /usr/local/lib/node_modules/.staging/registry-auth-token-4bf86d1d +12122 info lifecycle registry-auth-token@4.2.2~preinstall: registry-auth-token@4.2.2 +12123 silly preinstall safe-buffer@5.1.2 /usr/local/lib/node_modules/.staging/safe-buffer-52d5a603 +12124 info lifecycle safe-buffer@5.1.2~preinstall: safe-buffer@5.1.2 +12125 silly preinstall string_decoder@1.1.1 /usr/local/lib/node_modules/.staging/string_decoder-78ad75d1 +12126 info lifecycle string_decoder@1.1.1~preinstall: string_decoder@1.1.1 +12127 silly preinstall thenify@3.3.1 /usr/local/lib/node_modules/.staging/thenify-26a50ec9 +12128 info lifecycle thenify@3.3.1~preinstall: thenify@3.3.1 +12129 silly preinstall thenify-all@1.6.0 /usr/local/lib/node_modules/.staging/thenify-all-7c571c8e +12130 info lifecycle thenify-all@1.6.0~preinstall: thenify-all@1.6.0 +12131 silly preinstall mz@2.7.0 /usr/local/lib/node_modules/.staging/mz-6b9b3f01 +12132 info lifecycle mz@2.7.0~preinstall: mz@2.7.0 +12133 silly preinstall through@2.3.8 /usr/local/lib/node_modules/.staging/through-32927a03 +12134 info lifecycle through@2.3.8~preinstall: through@2.3.8 +12135 silly preinstall to-buffer@1.1.1 /usr/local/lib/node_modules/.staging/to-buffer-9e254c48 +12136 info lifecycle to-buffer@1.1.1~preinstall: to-buffer@1.1.1 +12137 silly preinstall to-readable-stream@1.0.0 /usr/local/lib/node_modules/.staging/to-readable-stream-01450827 +12138 info lifecycle to-readable-stream@1.0.0~preinstall: to-readable-stream@1.0.0 +12139 silly preinstall to-regex-range@5.0.1 /usr/local/lib/node_modules/.staging/to-regex-range-ef1f8f53 +12140 info lifecycle to-regex-range@5.0.1~preinstall: to-regex-range@5.0.1 +12141 silly preinstall fill-range@7.0.1 /usr/local/lib/node_modules/.staging/fill-range-996575c7 +12142 info lifecycle fill-range@7.0.1~preinstall: fill-range@7.0.1 +12143 silly preinstall braces@3.0.2 /usr/local/lib/node_modules/.staging/braces-bd94acb4 +12144 info lifecycle braces@3.0.2~preinstall: braces@3.0.2 +12145 silly preinstall micromatch@4.0.5 /usr/local/lib/node_modules/.staging/micromatch-0fc9096a +12146 info lifecycle micromatch@4.0.5~preinstall: micromatch@4.0.5 +12147 silly preinstall fast-glob@3.2.11 /usr/local/lib/node_modules/.staging/fast-glob-39ff701c +12148 info lifecycle fast-glob@3.2.11~preinstall: fast-glob@3.2.11 +12149 silly preinstall globby@11.1.0 /usr/local/lib/node_modules/.staging/globby-8b0ca4c7 +12150 info lifecycle globby@11.1.0~preinstall: globby@11.1.0 +12151 silly preinstall tr46@0.0.3 /usr/local/lib/node_modules/.staging/tr46-4d1fe3f1 +12152 info lifecycle tr46@0.0.3~preinstall: tr46@0.0.3 +12153 silly preinstall unbzip2-stream@1.4.3 /usr/local/lib/node_modules/.staging/unbzip2-stream-13dc0715 +12154 info lifecycle unbzip2-stream@1.4.3~preinstall: unbzip2-stream@1.4.3 +12155 silly preinstall unique-slug@2.0.2 /usr/local/lib/node_modules/.staging/unique-slug-9b94c0c0 +12156 info lifecycle unique-slug@2.0.2~preinstall: unique-slug@2.0.2 +12157 silly preinstall unique-filename@1.1.1 /usr/local/lib/node_modules/.staging/unique-filename-1629d675 +12158 info lifecycle unique-filename@1.1.1~preinstall: unique-filename@1.1.1 +12159 silly preinstall url-parse-lax@3.0.0 /usr/local/lib/node_modules/.staging/url-parse-lax-6396e84b +12160 info lifecycle url-parse-lax@3.0.0~preinstall: url-parse-lax@3.0.0 +12161 silly preinstall util-deprecate@1.0.2 /usr/local/lib/node_modules/.staging/util-deprecate-a9823dd1 +12162 info lifecycle util-deprecate@1.0.2~preinstall: util-deprecate@1.0.2 +12163 silly preinstall readable-stream@2.3.7 /usr/local/lib/node_modules/.staging/readable-stream-2944a23c +12164 info lifecycle readable-stream@2.3.7~preinstall: readable-stream@2.3.7 +12165 silly preinstall readable-stream@3.6.0 /usr/local/lib/node_modules/.staging/readable-stream-55886727 +12166 info lifecycle readable-stream@3.6.0~preinstall: readable-stream@3.6.0 +12167 silly preinstall are-we-there-yet@3.0.0 /usr/local/lib/node_modules/.staging/are-we-there-yet-10b3a0f0 +12168 info lifecycle are-we-there-yet@3.0.0~preinstall: are-we-there-yet@3.0.0 +12169 silly preinstall readable-stream@2.3.7 /usr/local/lib/node_modules/.staging/readable-stream-32b6db33 +12170 info lifecycle readable-stream@2.3.7~preinstall: readable-stream@2.3.7 +12171 silly preinstall bl@1.2.3 /usr/local/lib/node_modules/.staging/bl-3f2fc77b +12172 info lifecycle bl@1.2.3~preinstall: bl@1.2.3 +12173 silly preinstall validate-npm-package-license@3.0.4 /usr/local/lib/node_modules/.staging/validate-npm-package-license-c5e2b64b +12174 info lifecycle validate-npm-package-license@3.0.4~preinstall: validate-npm-package-license@3.0.4 +12175 silly preinstall webidl-conversions@3.0.1 /usr/local/lib/node_modules/.staging/webidl-conversions-1ea1d930 +12176 info lifecycle webidl-conversions@3.0.1~preinstall: webidl-conversions@3.0.1 +12177 silly preinstall whatwg-url@5.0.0 /usr/local/lib/node_modules/.staging/whatwg-url-2241e252 +12178 info lifecycle whatwg-url@5.0.0~preinstall: whatwg-url@5.0.0 +12179 silly preinstall node-fetch@2.6.7 /usr/local/lib/node_modules/.staging/node-fetch-30a6de54 +12180 info lifecycle node-fetch@2.6.7~preinstall: node-fetch@2.6.7 +12181 silly preinstall which@2.0.2 /usr/local/lib/node_modules/.staging/which-039b3fac +12182 info lifecycle which@2.0.2~preinstall: which@2.0.2 +12183 silly preinstall cross-spawn@7.0.3 /usr/local/lib/node_modules/.staging/cross-spawn-ac28d7b0 +12184 info lifecycle cross-spawn@7.0.3~preinstall: cross-spawn@7.0.3 +12185 silly preinstall wide-align@1.1.5 /usr/local/lib/node_modules/.staging/wide-align-6c2a96ff +12186 info lifecycle wide-align@1.1.5~preinstall: wide-align@1.1.5 +12187 silly preinstall gauge@4.0.4 /usr/local/lib/node_modules/.staging/gauge-4083bdb4 +12188 info lifecycle gauge@4.0.4~preinstall: gauge@4.0.4 +12189 silly preinstall npmlog@6.0.2 /usr/local/lib/node_modules/.staging/npmlog-511b51b9 +12190 info lifecycle npmlog@6.0.2~preinstall: npmlog@6.0.2 +12191 silly preinstall wrappy@1.0.2 /usr/local/lib/node_modules/.staging/wrappy-7f2034e8 +12192 info lifecycle wrappy@1.0.2~preinstall: wrappy@1.0.2 +12193 silly preinstall once@1.4.0 /usr/local/lib/node_modules/.staging/once-19292bdc +12194 info lifecycle once@1.4.0~preinstall: once@1.4.0 +12195 silly preinstall end-of-stream@1.4.4 /usr/local/lib/node_modules/.staging/end-of-stream-0237224a +12196 info lifecycle end-of-stream@1.4.4~preinstall: end-of-stream@1.4.4 +12197 silly preinstall pump@3.0.0 /usr/local/lib/node_modules/.staging/pump-04cc8122 +12198 info lifecycle pump@3.0.0~preinstall: pump@3.0.0 +12199 silly preinstall get-stream@4.1.0 /usr/local/lib/node_modules/.staging/get-stream-15f8f3e8 +12200 info lifecycle get-stream@4.1.0~preinstall: get-stream@4.1.0 +12201 silly preinstall get-stream@5.2.0 /usr/local/lib/node_modules/.staging/get-stream-5f64151a +12202 info lifecycle get-stream@5.2.0~preinstall: get-stream@5.2.0 +12203 silly preinstall cacheable-request@6.1.0 /usr/local/lib/node_modules/.staging/cacheable-request-70f54a2e +12204 info lifecycle cacheable-request@6.1.0~preinstall: cacheable-request@6.1.0 +12205 silly preinstall got@9.6.0 /usr/local/lib/node_modules/.staging/got-02357d5f +12206 info lifecycle got@9.6.0~preinstall: got@9.6.0 +12207 silly preinstall package-json@6.5.0 /usr/local/lib/node_modules/.staging/package-json-5c83cc47 +12208 info lifecycle package-json@6.5.0~preinstall: package-json@6.5.0 +12209 silly preinstall latest-version@5.1.0 /usr/local/lib/node_modules/.staging/latest-version-32d8120f +12210 info lifecycle latest-version@5.1.0~preinstall: latest-version@5.1.0 +12211 silly preinstall inflight@1.0.6 /usr/local/lib/node_modules/.staging/inflight-c6ff14c6 +12212 info lifecycle inflight@1.0.6~preinstall: inflight@1.0.6 +12213 silly preinstall glob@7.2.3 /usr/local/lib/node_modules/.staging/glob-31c34915 +12214 info lifecycle glob@7.2.3~preinstall: glob@7.2.3 +12215 silly preinstall rimraf@3.0.2 /usr/local/lib/node_modules/.staging/rimraf-392437bb +12216 info lifecycle rimraf@3.0.2~preinstall: rimraf@3.0.2 +12217 silly preinstall del@6.1.1 /usr/local/lib/node_modules/.staging/del-244e82b6 +12218 info lifecycle del@6.1.1~preinstall: del@6.1.1 +12219 silly preinstall @npmcli/move-file@2.0.0 /usr/local/lib/node_modules/.staging/@npmcli/move-file-833109fc +12220 info lifecycle @npmcli/move-file@2.0.0~preinstall: @npmcli/move-file@2.0.0 +12221 silly preinstall glob@7.2.3 /usr/local/lib/node_modules/.staging/glob-15af49be +12222 info lifecycle glob@7.2.3~preinstall: glob@7.2.3 +12223 silly preinstall glob@8.0.3 /usr/local/lib/node_modules/.staging/glob-6db180c8 +12224 info lifecycle glob@8.0.3~preinstall: glob@8.0.3 +12225 silly preinstall npm-packlist@5.1.1 /usr/local/lib/node_modules/.staging/npm-packlist-f585e5e6 +12226 info lifecycle npm-packlist@5.1.1~preinstall: npm-packlist@5.1.1 +12227 silly preinstall wscript-avoider@3.0.2 /usr/local/lib/node_modules/.staging/wscript-avoider-7373fd43 +12228 info lifecycle wscript-avoider@3.0.2~preinstall: wscript-avoider@3.0.2 +12229 silly preinstall xtend@4.0.2 /usr/local/lib/node_modules/.staging/xtend-1d24bf65 +12230 info lifecycle xtend@4.0.2~preinstall: xtend@4.0.2 +12231 silly preinstall tar-stream@1.6.2 /usr/local/lib/node_modules/.staging/tar-stream-4f48cc84 +12232 info lifecycle tar-stream@1.6.2~preinstall: tar-stream@1.6.2 +12233 silly preinstall decompress-tar@4.1.1 /usr/local/lib/node_modules/.staging/decompress-tar-8c530095 +12234 info lifecycle decompress-tar@4.1.1~preinstall: decompress-tar@4.1.1 +12235 silly preinstall decompress-targz@4.1.1 /usr/local/lib/node_modules/.staging/decompress-targz-fed4e7a4 +12236 info lifecycle decompress-targz@4.1.1~preinstall: decompress-targz@4.1.1 +12237 silly preinstall decompress-tarbz2@4.1.1 /usr/local/lib/node_modules/.staging/decompress-tarbz2-825373d4 +12238 info lifecycle decompress-tarbz2@4.1.1~preinstall: decompress-tarbz2@4.1.1 +12239 silly preinstall yallist@4.0.0 /usr/local/lib/node_modules/.staging/yallist-1ca7a3cb +12240 info lifecycle yallist@4.0.0~preinstall: yallist@4.0.0 +12241 silly preinstall lru-cache@6.0.0 /usr/local/lib/node_modules/.staging/lru-cache-dd0a814b +12242 info lifecycle lru-cache@6.0.0~preinstall: lru-cache@6.0.0 +12243 silly preinstall semver@7.3.7 /usr/local/lib/node_modules/.staging/semver-86408975 +12244 info lifecycle semver@7.3.7~preinstall: semver@7.3.7 +12245 silly preinstall npm-install-checks@5.0.0 /usr/local/lib/node_modules/.staging/npm-install-checks-020dd6a2 +12246 info lifecycle npm-install-checks@5.0.0~preinstall: npm-install-checks@5.0.0 +12247 silly preinstall normalize-package-data@4.0.0 /usr/local/lib/node_modules/.staging/normalize-package-data-79e34ce5 +12248 info lifecycle normalize-package-data@4.0.0~preinstall: normalize-package-data@4.0.0 +12249 silly preinstall read-package-json@5.0.1 /usr/local/lib/node_modules/.staging/read-package-json-d4734c59 +12250 info lifecycle read-package-json@5.0.1~preinstall: read-package-json@5.0.1 +12251 silly preinstall builtins@5.0.1 /usr/local/lib/node_modules/.staging/builtins-e0cf80e8 +12252 info lifecycle builtins@5.0.1~preinstall: builtins@5.0.1 +12253 silly preinstall validate-npm-package-name@4.0.0 /usr/local/lib/node_modules/.staging/validate-npm-package-name-a0927581 +12254 info lifecycle validate-npm-package-name@4.0.0~preinstall: validate-npm-package-name@4.0.0 +12255 silly preinstall npm-package-arg@9.1.0 /usr/local/lib/node_modules/.staging/npm-package-arg-572c1522 +12256 info lifecycle npm-package-arg@9.1.0~preinstall: npm-package-arg@9.1.0 +12257 silly preinstall npm-pick-manifest@7.0.1 /usr/local/lib/node_modules/.staging/npm-pick-manifest-5d0461c0 +12258 info lifecycle npm-pick-manifest@7.0.1~preinstall: npm-pick-manifest@7.0.1 +12259 silly preinstall @npmcli/git@3.0.1 /usr/local/lib/node_modules/.staging/@npmcli/git-8853d2a2 +12260 info lifecycle @npmcli/git@3.0.1~preinstall: @npmcli/git@3.0.1 +12261 silly preinstall @npmcli/fs@2.1.0 /usr/local/lib/node_modules/.staging/@npmcli/fs-b004d68e +12262 info lifecycle @npmcli/fs@2.1.0~preinstall: @npmcli/fs@2.1.0 +12263 silly preinstall @ilg/cli-start-options@0.6.6 /usr/local/lib/node_modules/.staging/@ilg/cli-start-options-ddf3bda9 +12264 info lifecycle @ilg/cli-start-options@0.6.6~preinstall: @ilg/cli-start-options@0.6.6 +12265 silly preinstall minipass@3.3.4 /usr/local/lib/node_modules/.staging/minipass-a6daa9e8 +12266 info lifecycle minipass@3.3.4~preinstall: minipass@3.3.4 +12267 silly preinstall ssri@9.0.1 /usr/local/lib/node_modules/.staging/ssri-51c1169f +12268 info lifecycle ssri@9.0.1~preinstall: ssri@9.0.1 +12269 silly preinstall minizlib@2.1.2 /usr/local/lib/node_modules/.staging/minizlib-9459a855 +12270 info lifecycle minizlib@2.1.2~preinstall: minizlib@2.1.2 +12271 silly preinstall minipass-sized@1.0.3 /usr/local/lib/node_modules/.staging/minipass-sized-8a30fb37 +12272 info lifecycle minipass-sized@1.0.3~preinstall: minipass-sized@1.0.3 +12273 silly preinstall minipass-pipeline@1.2.4 /usr/local/lib/node_modules/.staging/minipass-pipeline-60ba6b56 +12274 info lifecycle minipass-pipeline@1.2.4~preinstall: minipass-pipeline@1.2.4 +12275 silly preinstall minipass-json-stream@1.0.1 /usr/local/lib/node_modules/.staging/minipass-json-stream-8c625e94 +12276 info lifecycle minipass-json-stream@1.0.1~preinstall: minipass-json-stream@1.0.1 +12277 silly preinstall minipass-flush@1.0.5 /usr/local/lib/node_modules/.staging/minipass-flush-89477b8c +12278 info lifecycle minipass-flush@1.0.5~preinstall: minipass-flush@1.0.5 +12279 silly preinstall minipass-fetch@2.1.0 /usr/local/lib/node_modules/.staging/minipass-fetch-b7ad0fb9 +12280 info lifecycle minipass-fetch@2.1.0~preinstall: minipass-fetch@2.1.0 +12281 silly preinstall minipass-collect@1.0.2 /usr/local/lib/node_modules/.staging/minipass-collect-ee1a8ce3 +12282 info lifecycle minipass-collect@1.0.2~preinstall: minipass-collect@1.0.2 +12283 silly preinstall fs-minipass@2.1.0 /usr/local/lib/node_modules/.staging/fs-minipass-8a6e3a83 +12284 info lifecycle fs-minipass@2.1.0~preinstall: fs-minipass@2.1.0 +12285 silly preinstall tar@6.1.11 /usr/local/lib/node_modules/.staging/tar-ce300602 +12286 info lifecycle tar@6.1.11~preinstall: tar@6.1.11 +12287 silly preinstall cacache@16.1.1 /usr/local/lib/node_modules/.staging/cacache-33b743b5 +12288 info lifecycle cacache@16.1.1~preinstall: cacache@16.1.1 +12289 silly preinstall make-fetch-happen@10.1.8 /usr/local/lib/node_modules/.staging/make-fetch-happen-f48038d0 +12290 info lifecycle make-fetch-happen@10.1.8~preinstall: make-fetch-happen@10.1.8 +12291 silly preinstall npm-registry-fetch@13.2.0 /usr/local/lib/node_modules/.staging/npm-registry-fetch-724f35d7 +12292 info lifecycle npm-registry-fetch@13.2.0~preinstall: npm-registry-fetch@13.2.0 +12293 silly preinstall node-gyp@9.0.0 /usr/local/lib/node_modules/.staging/node-gyp-c6c53f55 +12294 info lifecycle node-gyp@9.0.0~preinstall: node-gyp@9.0.0 +12295 silly preinstall @npmcli/run-script@4.1.7 /usr/local/lib/node_modules/.staging/@npmcli/run-script-1dac7be1 +12296 info lifecycle @npmcli/run-script@4.1.7~preinstall: @npmcli/run-script@4.1.7 +12297 silly preinstall pacote@13.6.1 /usr/local/lib/node_modules/.staging/pacote-3f00d56c +12298 info lifecycle pacote@13.6.1~preinstall: pacote@13.6.1 +12299 silly preinstall yauzl@2.10.0 /usr/local/lib/node_modules/.staging/yauzl-4a68ac37 +12300 info lifecycle yauzl@2.10.0~preinstall: yauzl@2.10.0 +12301 silly preinstall decompress-unzip@4.0.1 /usr/local/lib/node_modules/.staging/decompress-unzip-ab588c70 +12302 info lifecycle decompress-unzip@4.0.1~preinstall: decompress-unzip@4.0.1 +12303 silly preinstall decompress@4.2.1 /usr/local/lib/node_modules/.staging/decompress-98b69f2e +12304 info lifecycle decompress@4.2.1~preinstall: decompress@4.2.1 +12305 silly preinstall xpm@0.13.7 /usr/local/lib/node_modules/.staging/xpm-da520707 +12306 info lifecycle xpm@0.13.7~preinstall: xpm@0.13.7 +12307 silly lifecycle abbrev@1.1.1~preinstall: no script for preinstall, continuing +12308 silly lifecycle ansi-regex@5.0.1~preinstall: no script for preinstall, continuing +12309 silly lifecycle any-promise@1.3.0~preinstall: no script for preinstall, continuing +12310 silly lifecycle aproba@2.0.0~preinstall: no script for preinstall, continuing +12311 silly lifecycle array-union@2.1.0~preinstall: no script for preinstall, continuing +12312 silly lifecycle balanced-match@1.0.2~preinstall: no script for preinstall, continuing +12313 silly lifecycle base64-js@1.5.1~preinstall: no script for preinstall, continuing +12314 silly lifecycle safe-buffer@5.1.2~preinstall: no script for preinstall, continuing +12315 silly lifecycle string_decoder@1.1.1~preinstall: no script for preinstall, continuing +12316 silly lifecycle brace-expansion@2.0.1~preinstall: no script for preinstall, continuing +12317 silly lifecycle buffer-alloc-unsafe@1.1.0~preinstall: no script for preinstall, continuing +12318 silly lifecycle buffer-fill@1.0.0~preinstall: no script for preinstall, continuing +12319 silly lifecycle buffer-crc32@0.2.13~preinstall: no script for preinstall, continuing +12320 silly lifecycle buffer-alloc@1.2.0~preinstall: no script for preinstall, continuing +12321 silly lifecycle lowercase-keys@2.0.0~preinstall: no script for preinstall, continuing +12322 silly lifecycle chownr@2.0.0~preinstall: no script for preinstall, continuing +12323 silly lifecycle ci-info@3.3.2~preinstall: no script for preinstall, continuing +12324 silly lifecycle clean-stack@2.2.0~preinstall: no script for preinstall, continuing +12325 silly lifecycle color-support@1.1.3~preinstall: no script for preinstall, continuing +12326 silly lifecycle commander@2.20.3~preinstall: no script for preinstall, continuing +12327 silly lifecycle console-control-strings@1.1.0~preinstall: no script for preinstall, continuing +12328 silly lifecycle concat-map@0.0.1~preinstall: no script for preinstall, continuing +12329 silly lifecycle core-util-is@1.0.3~preinstall: no script for preinstall, continuing +12330 silly lifecycle file-type@6.2.0~preinstall: no script for preinstall, continuing +12331 silly lifecycle file-type@3.9.0~preinstall: no script for preinstall, continuing +12332 silly lifecycle pify@3.0.0~preinstall: no script for preinstall, continuing +12333 silly lifecycle make-dir@1.3.0~preinstall: no script for preinstall, continuing +12334 silly lifecycle deep-extend@0.6.0~preinstall: no script for preinstall, continuing +12335 silly lifecycle defer-to-connect@1.1.3~preinstall: no script for preinstall, continuing +12336 silly lifecycle delegates@1.0.0~preinstall: no script for preinstall, continuing +12337 silly lifecycle depd@1.1.2~preinstall: no script for preinstall, continuing +12338 silly lifecycle duplexer3@0.1.5~preinstall: no script for preinstall, continuing +12339 silly lifecycle emoji-regex@8.0.0~preinstall: no script for preinstall, continuing +12340 silly lifecycle env-paths@2.2.1~preinstall: no script for preinstall, continuing +12341 silly lifecycle err-code@2.0.3~preinstall: no script for preinstall, continuing +12342 silly lifecycle file-type@5.2.0~preinstall: no script for preinstall, continuing +12343 silly lifecycle fs-constants@1.0.0~preinstall: no script for preinstall, continuing +12344 silly lifecycle fs.realpath@1.0.0~preinstall: no script for preinstall, continuing +12345 silly lifecycle function-bind@1.1.1~preinstall: no script for preinstall, continuing +12346 silly lifecycle git-config-path@2.0.0~preinstall: no script for preinstall, continuing +12347 silly lifecycle graceful-fs@4.2.10~preinstall: no script for preinstall, continuing +12348 silly lifecycle has@1.0.3~preinstall: no script for preinstall, continuing +12349 silly lifecycle has-unicode@2.0.1~preinstall: no script for preinstall, continuing +12350 silly lifecycle http-cache-semantics@4.1.0~preinstall: no script for preinstall, continuing +12351 silly lifecycle ieee754@1.2.1~preinstall: no script for preinstall, continuing +12352 silly lifecycle buffer@5.7.1~preinstall: no script for preinstall, continuing +12353 silly lifecycle ignore@5.2.0~preinstall: no script for preinstall, continuing +12354 silly lifecycle imurmurhash@0.1.4~preinstall: no script for preinstall, continuing +12355 silly lifecycle indent-string@4.0.0~preinstall: no script for preinstall, continuing +12356 silly lifecycle aggregate-error@3.1.0~preinstall: no script for preinstall, continuing +12357 silly lifecycle infer-owner@1.0.4~preinstall: no script for preinstall, continuing +12358 silly lifecycle inherits@2.0.4~preinstall: no script for preinstall, continuing +12359 silly lifecycle ini@2.0.0~preinstall: no script for preinstall, continuing +12360 silly lifecycle global-dirs@3.0.0~preinstall: no script for preinstall, continuing +12361 silly lifecycle ip@1.1.8~preinstall: no script for preinstall, continuing +12362 silly lifecycle is-ci@3.0.1~preinstall: no script for preinstall, continuing +12363 silly lifecycle is-core-module@2.9.0~preinstall: no script for preinstall, continuing +12364 silly lifecycle is-extglob@2.1.1~preinstall: no script for preinstall, continuing +12365 silly lifecycle is-fullwidth-code-point@3.0.0~preinstall: no script for preinstall, continuing +12366 silly lifecycle is-glob@4.0.3~preinstall: no script for preinstall, continuing +12367 silly lifecycle glob-parent@5.1.2~preinstall: no script for preinstall, continuing +12368 silly lifecycle is-lambda@1.0.1~preinstall: no script for preinstall, continuing +12369 silly lifecycle is-natural-number@4.0.1~preinstall: no script for preinstall, continuing +12370 silly lifecycle is-number@7.0.0~preinstall: no script for preinstall, continuing +12371 silly lifecycle is-path-cwd@2.2.0~preinstall: no script for preinstall, continuing +12372 silly lifecycle is-path-inside@3.0.3~preinstall: no script for preinstall, continuing +12373 silly lifecycle is-installed-globally@0.4.0~preinstall: no script for preinstall, continuing +12374 silly lifecycle is-stream@1.1.0~preinstall: no script for preinstall, continuing +12375 silly lifecycle is-windows@1.0.2~preinstall: no script for preinstall, continuing +12376 silly lifecycle isarray@1.0.0~preinstall: no script for preinstall, continuing +12377 silly lifecycle isexe@2.0.0~preinstall: no script for preinstall, continuing +12378 silly lifecycle json-buffer@3.0.0~preinstall: no script for preinstall, continuing +12379 silly lifecycle json-parse-even-better-errors@2.3.1~preinstall: no script for preinstall, continuing +12380 silly lifecycle jsonparse@1.3.1~preinstall: no script for preinstall, continuing +12381 silly lifecycle keyv@3.1.0~preinstall: no script for preinstall, continuing +12382 silly lifecycle liquidjs@9.39.0~preinstall: no script for preinstall, continuing +12383 silly lifecycle lowercase-keys@1.0.1~preinstall: no script for preinstall, continuing +12384 silly lifecycle lru-cache@7.13.0~preinstall: no script for preinstall, continuing +12385 silly lifecycle hosted-git-info@5.0.0~preinstall: no script for preinstall, continuing +12386 silly lifecycle semver@6.3.0~preinstall: no script for preinstall, continuing +12387 silly lifecycle make-dir@3.1.0~preinstall: no script for preinstall, continuing +12388 silly lifecycle merge2@1.4.1~preinstall: no script for preinstall, continuing +12389 silly lifecycle mimic-response@1.0.1~preinstall: no script for preinstall, continuing +12390 silly lifecycle decompress-response@3.3.0~preinstall: no script for preinstall, continuing +12391 silly lifecycle clone-response@1.0.2~preinstall: no script for preinstall, continuing +12392 silly lifecycle minimatch@5.1.0~preinstall: no script for preinstall, continuing +12393 silly lifecycle ignore-walk@5.0.1~preinstall: no script for preinstall, continuing +12394 silly lifecycle minimist@1.2.6~preinstall: no script for preinstall, continuing +12395 silly lifecycle mkdirp@1.0.4~preinstall: no script for preinstall, continuing +12396 silly lifecycle mkdirp-infer-owner@2.0.0~preinstall: no script for preinstall, continuing +12397 silly lifecycle ms@2.1.2~preinstall: no script for preinstall, continuing +12398 silly lifecycle humanize-ms@1.2.1~preinstall: no script for preinstall, continuing +12399 silly lifecycle debug@4.3.4~preinstall: no script for preinstall, continuing +12400 silly lifecycle agentkeepalive@4.2.1~preinstall: no script for preinstall, continuing +12401 silly lifecycle agent-base@6.0.2~preinstall: no script for preinstall, continuing +12402 silly lifecycle https-proxy-agent@5.0.1~preinstall: no script for preinstall, continuing +12403 silly lifecycle http-proxy-agent@5.0.0~preinstall: no script for preinstall, continuing +12404 silly lifecycle negotiator@0.6.3~preinstall: no script for preinstall, continuing +12405 silly lifecycle nested-error-stacks@2.1.1~preinstall: no script for preinstall, continuing +12406 silly lifecycle brace-expansion@1.1.11~preinstall: no script for preinstall, continuing +12407 silly lifecycle minimatch@3.1.2~preinstall: no script for preinstall, continuing +12408 silly lifecycle nopt@5.0.0~preinstall: no script for preinstall, continuing +12409 silly lifecycle normalize-url@4.5.1~preinstall: no script for preinstall, continuing +12410 silly lifecycle npm-normalize-package-bin@1.0.1~preinstall: no script for preinstall, continuing +12411 silly lifecycle npm-bundled@1.1.2~preinstall: no script for preinstall, continuing +12412 silly lifecycle abbrev@1.1.1~preinstall: no script for preinstall, continuing +12413 silly lifecycle ansi-regex@5.0.1~preinstall: no script for preinstall, continuing +12414 silly lifecycle aproba@2.0.0~preinstall: no script for preinstall, continuing +12415 silly lifecycle archy@1.0.0~preinstall: no script for preinstall, continuing +12416 silly lifecycle asap@2.0.6~preinstall: no script for preinstall, continuing +12417 silly lifecycle balanced-match@1.0.2~preinstall: no script for preinstall, continuing +12418 silly lifecycle binary-extensions@2.2.0~preinstall: no script for preinstall, continuing +12419 silly lifecycle brace-expansion@2.0.1~preinstall: no script for preinstall, continuing +12420 silly lifecycle chownr@2.0.0~preinstall: no script for preinstall, continuing +12421 silly lifecycle clean-stack@2.2.0~preinstall: no script for preinstall, continuing +12422 silly lifecycle clone@1.0.4~preinstall: no script for preinstall, continuing +12423 silly lifecycle color-name@1.1.4~preinstall: no script for preinstall, continuing +12424 silly lifecycle color-convert@2.0.1~preinstall: no script for preinstall, continuing +12425 silly lifecycle ansi-styles@4.3.0~preinstall: no script for preinstall, continuing +12426 silly lifecycle color-support@1.1.3~preinstall: no script for preinstall, continuing +12427 silly lifecycle common-ancestor-path@1.0.1~preinstall: no script for preinstall, continuing +12428 silly lifecycle concat-map@0.0.1~preinstall: no script for preinstall, continuing +12429 silly lifecycle console-control-strings@1.1.0~preinstall: no script for preinstall, continuing +12430 silly lifecycle cssesc@3.0.0~preinstall: no script for preinstall, continuing +12431 silly lifecycle ms@2.1.2~preinstall: no script for preinstall, continuing +12432 silly lifecycle debug@4.3.4~preinstall: no script for preinstall, continuing +12433 silly lifecycle agent-base@6.0.2~preinstall: no script for preinstall, continuing +12434 silly lifecycle debuglog@1.0.1~preinstall: no script for preinstall, continuing +12435 silly lifecycle defaults@1.0.3~preinstall: no script for preinstall, continuing +12436 silly lifecycle delegates@1.0.0~preinstall: no script for preinstall, continuing +12437 silly lifecycle depd@1.1.2~preinstall: no script for preinstall, continuing +12438 silly lifecycle diff@5.0.0~preinstall: no script for preinstall, continuing +12439 silly lifecycle emoji-regex@8.0.0~preinstall: no script for preinstall, continuing +12440 silly lifecycle env-paths@2.2.1~preinstall: no script for preinstall, continuing +12441 silly lifecycle err-code@2.0.3~preinstall: no script for preinstall, continuing +12442 silly lifecycle fastest-levenshtein@1.0.12~preinstall: no script for preinstall, continuing +12443 silly lifecycle fs.realpath@1.0.0~preinstall: no script for preinstall, continuing +12444 silly lifecycle function-bind@1.1.1~preinstall: no script for preinstall, continuing +12445 silly lifecycle graceful-fs@4.2.10~preinstall: no script for preinstall, continuing +12446 silly lifecycle has@1.0.3~preinstall: no script for preinstall, continuing +12447 silly lifecycle has-flag@4.0.0~preinstall: no script for preinstall, continuing +12448 silly lifecycle has-unicode@2.0.1~preinstall: no script for preinstall, continuing +12449 silly lifecycle http-cache-semantics@4.1.0~preinstall: no script for preinstall, continuing +12450 silly lifecycle http-proxy-agent@5.0.0~preinstall: no script for preinstall, continuing +12451 silly lifecycle https-proxy-agent@5.0.1~preinstall: no script for preinstall, continuing +12452 silly lifecycle imurmurhash@0.1.4~preinstall: no script for preinstall, continuing +12453 silly lifecycle indent-string@4.0.0~preinstall: no script for preinstall, continuing +12454 silly lifecycle aggregate-error@3.1.0~preinstall: no script for preinstall, continuing +12455 silly lifecycle infer-owner@1.0.4~preinstall: no script for preinstall, continuing +12456 silly lifecycle inherits@2.0.4~preinstall: no script for preinstall, continuing +12457 silly lifecycle ini@3.0.0~preinstall: no script for preinstall, continuing +12458 silly lifecycle ip@1.1.8~preinstall: no script for preinstall, continuing +12459 silly lifecycle ip-regex@4.3.0~preinstall: no script for preinstall, continuing +12460 silly lifecycle cidr-regex@3.1.1~preinstall: no script for preinstall, continuing +12461 silly lifecycle is-cidr@4.0.2~preinstall: no script for preinstall, continuing +12462 silly lifecycle is-core-module@2.9.0~preinstall: no script for preinstall, continuing +12463 silly lifecycle is-fullwidth-code-point@3.0.0~preinstall: no script for preinstall, continuing +12464 silly lifecycle is-lambda@1.0.1~preinstall: no script for preinstall, continuing +12465 silly lifecycle isexe@2.0.0~preinstall: no script for preinstall, continuing +12466 silly lifecycle json-parse-even-better-errors@2.3.1~preinstall: no script for preinstall, continuing +12467 silly lifecycle json-stringify-nice@1.1.4~preinstall: no script for preinstall, continuing +12468 silly lifecycle jsonparse@1.3.1~preinstall: no script for preinstall, continuing +12469 silly lifecycle just-diff@5.0.3~preinstall: no script for preinstall, continuing +12470 silly lifecycle just-diff-apply@5.3.1~preinstall: no script for preinstall, continuing +12471 silly lifecycle lru-cache@7.12.0~preinstall: no script for preinstall, continuing +12472 silly lifecycle hosted-git-info@5.0.0~preinstall: no script for preinstall, continuing +12473 silly lifecycle minimatch@5.1.0~preinstall: no script for preinstall, continuing +12474 silly lifecycle ignore-walk@5.0.1~preinstall: no script for preinstall, continuing +12475 silly lifecycle mkdirp@1.0.4~preinstall: no script for preinstall, continuing +12476 silly lifecycle mkdirp-infer-owner@2.0.0~preinstall: no script for preinstall, continuing +12477 silly lifecycle cmd-shim@5.0.0~preinstall: no script for preinstall, continuing +12478 silly lifecycle ms@2.1.3~preinstall: no script for preinstall, continuing +12479 silly lifecycle humanize-ms@1.2.1~preinstall: no script for preinstall, continuing +12480 silly lifecycle agentkeepalive@4.2.1~preinstall: no script for preinstall, continuing +12481 silly lifecycle mute-stream@0.0.8~preinstall: no script for preinstall, continuing +12482 silly lifecycle negotiator@0.6.3~preinstall: no script for preinstall, continuing +12483 silly lifecycle brace-expansion@1.1.11~preinstall: no script for preinstall, continuing +12484 silly lifecycle minimatch@3.1.2~preinstall: no script for preinstall, continuing +12485 silly lifecycle nopt@5.0.0~preinstall: no script for preinstall, continuing +12486 silly lifecycle npm-normalize-package-bin@1.0.1~preinstall: no script for preinstall, continuing +12487 silly lifecycle npm-bundled@1.1.2~preinstall: no script for preinstall, continuing +12488 silly lifecycle npm-user-validate@1.0.1~preinstall: no script for preinstall, continuing +12489 silly lifecycle opener@1.5.2~preinstall: no script for preinstall, continuing +12490 silly lifecycle p-map@4.0.0~preinstall: no script for preinstall, continuing +12491 silly lifecycle parse-conflict-json@2.0.2~preinstall: no script for preinstall, continuing +12492 silly lifecycle path-is-absolute@1.0.1~preinstall: no script for preinstall, continuing +12493 silly lifecycle proc-log@2.0.1~preinstall: no script for preinstall, continuing +12494 silly lifecycle promise-all-reject-late@1.0.1~preinstall: no script for preinstall, continuing +12495 silly lifecycle promise-call-limit@1.0.1~preinstall: no script for preinstall, continuing +12496 silly lifecycle promise-inflight@1.0.1~preinstall: no script for preinstall, continuing +12497 silly lifecycle qrcode-terminal@0.12.0~preinstall: no script for preinstall, continuing +12498 silly lifecycle read@1.0.7~preinstall: no script for preinstall, continuing +12499 silly lifecycle promzard@0.3.0~preinstall: no script for preinstall, continuing +12500 silly lifecycle read-cmd-shim@3.0.0~preinstall: no script for preinstall, continuing +12501 silly lifecycle read-package-json-fast@2.0.3~preinstall: no script for preinstall, continuing +12502 silly lifecycle retry@0.12.0~preinstall: no script for preinstall, continuing +12503 silly lifecycle promise-retry@2.0.1~preinstall: no script for preinstall, continuing +12504 silly lifecycle brace-expansion@1.1.11~preinstall: no script for preinstall, continuing +12505 silly lifecycle minimatch@3.1.2~preinstall: no script for preinstall, continuing +12506 silly lifecycle safe-buffer@5.2.1~preinstall: no script for preinstall, continuing +12507 silly lifecycle safer-buffer@2.1.2~preinstall: no script for preinstall, continuing +12508 silly lifecycle iconv-lite@0.6.3~preinstall: no script for preinstall, continuing +12509 silly lifecycle encoding@0.1.13~preinstall: no script for preinstall, continuing +12510 silly lifecycle set-blocking@2.0.0~preinstall: no script for preinstall, continuing +12511 silly lifecycle signal-exit@3.0.7~preinstall: no script for preinstall, continuing +12512 silly lifecycle smart-buffer@4.2.0~preinstall: no script for preinstall, continuing +12513 silly lifecycle socks@2.6.2~preinstall: no script for preinstall, continuing +12514 silly lifecycle socks-proxy-agent@7.0.0~preinstall: no script for preinstall, continuing +12515 silly lifecycle spdx-exceptions@2.3.0~preinstall: no script for preinstall, continuing +12516 silly lifecycle spdx-license-ids@3.0.11~preinstall: no script for preinstall, continuing +12517 silly lifecycle spdx-expression-parse@3.0.1~preinstall: no script for preinstall, continuing +12518 silly lifecycle spdx-correct@3.1.1~preinstall: no script for preinstall, continuing +12519 silly lifecycle string_decoder@1.3.0~preinstall: no script for preinstall, continuing +12520 silly lifecycle strip-ansi@6.0.1~preinstall: no script for preinstall, continuing +12521 silly lifecycle string-width@4.2.3~preinstall: no script for preinstall, continuing +12522 silly lifecycle cli-table3@0.6.2~preinstall: no script for preinstall, continuing +12523 silly lifecycle cli-columns@4.0.0~preinstall: no script for preinstall, continuing +12524 silly lifecycle supports-color@7.2.0~preinstall: no script for preinstall, continuing +12525 silly lifecycle chalk@4.1.2~preinstall: no script for preinstall, continuing +12526 silly lifecycle npm-audit-report@3.0.0~preinstall: no script for preinstall, continuing +12527 silly lifecycle text-table@0.2.0~preinstall: no script for preinstall, continuing +12528 silly lifecycle tiny-relative-date@1.3.0~preinstall: no script for preinstall, continuing +12529 silly lifecycle treeverse@2.0.0~preinstall: no script for preinstall, continuing +12530 silly lifecycle unique-slug@2.0.2~preinstall: no script for preinstall, continuing +12531 silly lifecycle unique-filename@1.1.1~preinstall: no script for preinstall, continuing +12532 silly lifecycle util-deprecate@1.0.2~preinstall: no script for preinstall, continuing +12533 silly lifecycle readable-stream@3.6.0~preinstall: no script for preinstall, continuing +12534 silly lifecycle are-we-there-yet@3.0.0~preinstall: no script for preinstall, continuing +12535 silly lifecycle postcss-selector-parser@6.0.10~preinstall: no script for preinstall, continuing +12536 silly lifecycle validate-npm-package-license@3.0.4~preinstall: no script for preinstall, continuing +12537 silly lifecycle walk-up-path@1.0.0~preinstall: no script for preinstall, continuing +12538 silly lifecycle wcwidth@1.0.1~preinstall: no script for preinstall, continuing +12539 silly lifecycle columnify@1.6.0~preinstall: no script for preinstall, continuing +12540 silly lifecycle which@2.0.2~preinstall: no script for preinstall, continuing +12541 silly lifecycle wide-align@1.1.5~preinstall: no script for preinstall, continuing +12542 silly lifecycle gauge@4.0.4~preinstall: no script for preinstall, continuing +12543 silly lifecycle npmlog@6.0.2~preinstall: no script for preinstall, continuing +12544 silly lifecycle wrappy@1.0.2~preinstall: no script for preinstall, continuing +12545 silly lifecycle once@1.4.0~preinstall: no script for preinstall, continuing +12546 silly lifecycle inflight@1.0.6~preinstall: no script for preinstall, continuing +12547 silly lifecycle glob@7.2.3~preinstall: no script for preinstall, continuing +12548 silly lifecycle rimraf@3.0.2~preinstall: no script for preinstall, continuing +12549 silly lifecycle glob@7.2.3~preinstall: no script for preinstall, continuing +12550 silly lifecycle glob@8.0.3~preinstall: no script for preinstall, continuing +12551 silly lifecycle npm-packlist@5.1.1~preinstall: no script for preinstall, continuing +12552 silly lifecycle dezalgo@1.0.4~preinstall: no script for preinstall, continuing +12553 silly lifecycle readdir-scoped-modules@1.1.0~preinstall: no script for preinstall, continuing +12554 silly lifecycle write-file-atomic@4.0.1~preinstall: no script for preinstall, continuing +12555 silly lifecycle bin-links@3.0.1~preinstall: no script for preinstall, continuing +12556 silly lifecycle yallist@4.0.0~preinstall: no script for preinstall, continuing +12557 silly lifecycle lru-cache@6.0.0~preinstall: no script for preinstall, continuing +12558 silly lifecycle semver@7.3.7~preinstall: no script for preinstall, continuing +12559 silly lifecycle npm-install-checks@5.0.0~preinstall: no script for preinstall, continuing +12560 silly lifecycle normalize-package-data@4.0.0~preinstall: no script for preinstall, continuing +12561 silly lifecycle read-package-json@5.0.1~preinstall: no script for preinstall, continuing +12562 silly lifecycle builtins@5.0.1~preinstall: no script for preinstall, continuing +12563 silly lifecycle validate-npm-package-name@4.0.0~preinstall: no script for preinstall, continuing +12564 silly lifecycle npm-package-arg@9.1.0~preinstall: no script for preinstall, continuing +12565 silly lifecycle npm-pick-manifest@7.0.1~preinstall: no script for preinstall, continuing +12566 silly lifecycle init-package-json@3.0.2~preinstall: no script for preinstall, continuing +12567 silly lifecycle minipass@3.3.4~preinstall: no script for preinstall, continuing +12568 silly lifecycle ssri@9.0.1~preinstall: no script for preinstall, continuing +12569 silly lifecycle minizlib@2.1.2~preinstall: no script for preinstall, continuing +12570 silly lifecycle minipass-sized@1.0.3~preinstall: no script for preinstall, continuing +12571 silly lifecycle minipass-pipeline@1.2.4~preinstall: no script for preinstall, continuing +12572 silly lifecycle minipass-json-stream@1.0.1~preinstall: no script for preinstall, continuing +12573 silly lifecycle minipass-flush@1.0.5~preinstall: no script for preinstall, continuing +12574 silly lifecycle minipass-fetch@2.1.0~preinstall: no script for preinstall, continuing +12575 silly lifecycle minipass-collect@1.0.2~preinstall: no script for preinstall, continuing +12576 silly lifecycle fs-minipass@2.1.0~preinstall: no script for preinstall, continuing +12577 silly lifecycle tar@6.1.11~preinstall: no script for preinstall, continuing +12578 silly lifecycle cacache@16.1.1~preinstall: no script for preinstall, continuing +12579 silly lifecycle make-fetch-happen@10.2.0~preinstall: no script for preinstall, continuing +12580 silly lifecycle npm-registry-fetch@13.3.0~preinstall: no script for preinstall, continuing +12581 silly lifecycle npm-profile@6.2.1~preinstall: no script for preinstall, continuing +12582 silly lifecycle libnpmteam@4.0.3~preinstall: no script for preinstall, continuing +12583 silly lifecycle libnpmsearch@5.0.3~preinstall: no script for preinstall, continuing +12584 silly lifecycle libnpmpublish@6.0.4~preinstall: no script for preinstall, continuing +12585 silly lifecycle libnpmorg@4.0.3~preinstall: no script for preinstall, continuing +12586 silly lifecycle libnpmhook@8.0.3~preinstall: no script for preinstall, continuing +12587 silly lifecycle libnpmaccess@6.0.3~preinstall: no script for preinstall, continuing +12588 silly lifecycle node-gyp@9.0.0~preinstall: no script for preinstall, continuing +12589 silly lifecycle pacote@13.6.1~preinstall: no script for preinstall, continuing +12590 silly lifecycle libnpmdiff@4.0.4~preinstall: no script for preinstall, continuing +12591 silly lifecycle libnpmversion@3.0.6~preinstall: no script for preinstall, continuing +12592 silly lifecycle libnpmpack@4.1.2~preinstall: no script for preinstall, continuing +12593 silly lifecycle libnpmfund@3.0.2~preinstall: no script for preinstall, continuing +12594 silly lifecycle libnpmexec@4.0.9~preinstall: no script for preinstall, continuing +12595 silly lifecycle npm@8.16.0~preinstall: no script for preinstall, continuing +12596 silly lifecycle object-assign@4.1.1~preinstall: no script for preinstall, continuing +12597 silly lifecycle p-cancelable@1.1.0~preinstall: no script for preinstall, continuing +12598 silly lifecycle p-finally@1.0.0~preinstall: no script for preinstall, continuing +12599 silly lifecycle p-map@4.0.0~preinstall: no script for preinstall, continuing +12600 silly lifecycle p-timeout@3.2.0~preinstall: no script for preinstall, continuing +12601 silly lifecycle p-event@4.2.0~preinstall: no script for preinstall, continuing +12602 silly lifecycle cp-file@9.1.0~preinstall: no script for preinstall, continuing +12603 silly lifecycle semver@6.3.0~preinstall: no script for preinstall, continuing +12604 silly lifecycle ini@1.3.8~preinstall: no script for preinstall, continuing +12605 silly lifecycle parse-git-config@3.0.0~preinstall: no script for preinstall, continuing +12606 silly lifecycle path-is-absolute@1.0.1~preinstall: no script for preinstall, continuing +12607 silly lifecycle path-key@3.1.1~preinstall: no script for preinstall, continuing +12608 silly lifecycle path-type@4.0.0~preinstall: no script for preinstall, continuing +12609 silly lifecycle dir-glob@3.0.1~preinstall: no script for preinstall, continuing +12610 silly lifecycle pend@1.2.0~preinstall: no script for preinstall, continuing +12611 silly lifecycle fd-slicer@1.1.0~preinstall: no script for preinstall, continuing +12612 silly lifecycle picomatch@2.3.1~preinstall: no script for preinstall, continuing +12613 silly lifecycle pify@2.3.0~preinstall: no script for preinstall, continuing +12614 silly lifecycle pinkie@2.0.4~preinstall: no script for preinstall, continuing +12615 silly lifecycle pinkie-promise@2.0.1~preinstall: no script for preinstall, continuing +12616 silly lifecycle get-stream@2.3.1~preinstall: no script for preinstall, continuing +12617 silly lifecycle prepend-http@2.0.0~preinstall: no script for preinstall, continuing +12618 silly lifecycle proc-log@2.0.1~preinstall: no script for preinstall, continuing +12619 silly lifecycle process-nextick-args@2.0.1~preinstall: no script for preinstall, continuing +12620 silly lifecycle promise-inflight@1.0.1~preinstall: no script for preinstall, continuing +12621 silly lifecycle queue-microtask@1.2.3~preinstall: no script for preinstall, continuing +12622 silly lifecycle ini@1.3.8~preinstall: no script for preinstall, continuing +12623 silly lifecycle read-package-json-fast@2.0.3~preinstall: no script for preinstall, continuing +12624 silly lifecycle responselike@1.0.2~preinstall: no script for preinstall, continuing +12625 silly lifecycle retry@0.12.0~preinstall: no script for preinstall, continuing +12626 silly lifecycle promise-retry@2.0.1~preinstall: no script for preinstall, continuing +12627 silly lifecycle reusify@1.0.4~preinstall: no script for preinstall, continuing +12628 silly lifecycle fastq@1.13.0~preinstall: no script for preinstall, continuing +12629 silly lifecycle brace-expansion@1.1.11~preinstall: no script for preinstall, continuing +12630 silly lifecycle minimatch@3.1.2~preinstall: no script for preinstall, continuing +12631 silly lifecycle run-parallel@1.2.0~preinstall: no script for preinstall, continuing +12632 silly lifecycle safe-buffer@5.2.1~preinstall: no script for preinstall, continuing +12633 silly lifecycle safer-buffer@2.1.2~preinstall: no script for preinstall, continuing +12634 silly lifecycle iconv-lite@0.6.3~preinstall: no script for preinstall, continuing +12635 silly lifecycle encoding@0.1.13~preinstall: no script for preinstall, continuing +12636 silly lifecycle seek-bzip@1.0.6~preinstall: no script for preinstall, continuing +12637 silly lifecycle semver@6.3.0~preinstall: no script for preinstall, continuing +12638 silly lifecycle semver-diff@3.1.1~preinstall: no script for preinstall, continuing +12639 silly lifecycle set-blocking@2.0.0~preinstall: no script for preinstall, continuing +12640 silly lifecycle shebang-regex@3.0.0~preinstall: no script for preinstall, continuing +12641 silly lifecycle shebang-command@2.0.0~preinstall: no script for preinstall, continuing +12642 silly lifecycle signal-exit@3.0.7~preinstall: no script for preinstall, continuing +12643 silly lifecycle slash@3.0.0~preinstall: no script for preinstall, continuing +12644 silly lifecycle smart-buffer@4.2.0~preinstall: no script for preinstall, continuing +12645 silly lifecycle socks@2.6.2~preinstall: no script for preinstall, continuing +12646 silly lifecycle socks-proxy-agent@7.0.0~preinstall: no script for preinstall, continuing +12647 silly lifecycle spdx-exceptions@2.3.0~preinstall: no script for preinstall, continuing +12648 silly lifecycle spdx-license-ids@3.0.11~preinstall: no script for preinstall, continuing +12649 silly lifecycle spdx-expression-parse@3.0.1~preinstall: no script for preinstall, continuing +12650 silly lifecycle spdx-correct@3.1.1~preinstall: no script for preinstall, continuing +12651 silly lifecycle string_decoder@1.3.0~preinstall: no script for preinstall, continuing +12652 silly lifecycle strip-ansi@6.0.1~preinstall: no script for preinstall, continuing +12653 silly lifecycle string-width@4.2.3~preinstall: no script for preinstall, continuing +12654 silly lifecycle strip-dirs@2.1.0~preinstall: no script for preinstall, continuing +12655 silly lifecycle strip-json-comments@2.0.1~preinstall: no script for preinstall, continuing +12656 silly lifecycle rc@1.2.8~preinstall: no script for preinstall, continuing +12657 silly lifecycle registry-url@5.1.0~preinstall: no script for preinstall, continuing +12658 silly lifecycle registry-auth-token@4.2.2~preinstall: no script for preinstall, continuing +12659 silly lifecycle safe-buffer@5.1.2~preinstall: no script for preinstall, continuing +12660 silly lifecycle string_decoder@1.1.1~preinstall: no script for preinstall, continuing +12661 silly lifecycle thenify@3.3.1~preinstall: no script for preinstall, continuing +12662 silly lifecycle thenify-all@1.6.0~preinstall: no script for preinstall, continuing +12663 silly lifecycle mz@2.7.0~preinstall: no script for preinstall, continuing +12664 silly lifecycle through@2.3.8~preinstall: no script for preinstall, continuing +12665 silly lifecycle to-buffer@1.1.1~preinstall: no script for preinstall, continuing +12666 silly lifecycle to-readable-stream@1.0.0~preinstall: no script for preinstall, continuing +12667 silly lifecycle to-regex-range@5.0.1~preinstall: no script for preinstall, continuing +12668 silly lifecycle fill-range@7.0.1~preinstall: no script for preinstall, continuing +12669 silly lifecycle braces@3.0.2~preinstall: no script for preinstall, continuing +12670 silly lifecycle micromatch@4.0.5~preinstall: no script for preinstall, continuing +12671 silly lifecycle fast-glob@3.2.11~preinstall: no script for preinstall, continuing +12672 silly lifecycle globby@11.1.0~preinstall: no script for preinstall, continuing +12673 silly lifecycle tr46@0.0.3~preinstall: no script for preinstall, continuing +12674 silly lifecycle unbzip2-stream@1.4.3~preinstall: no script for preinstall, continuing +12675 silly lifecycle unique-slug@2.0.2~preinstall: no script for preinstall, continuing +12676 silly lifecycle unique-filename@1.1.1~preinstall: no script for preinstall, continuing +12677 silly lifecycle url-parse-lax@3.0.0~preinstall: no script for preinstall, continuing +12678 silly lifecycle util-deprecate@1.0.2~preinstall: no script for preinstall, continuing +12679 silly lifecycle readable-stream@2.3.7~preinstall: no script for preinstall, continuing +12680 silly lifecycle readable-stream@3.6.0~preinstall: no script for preinstall, continuing +12681 silly lifecycle are-we-there-yet@3.0.0~preinstall: no script for preinstall, continuing +12682 silly lifecycle readable-stream@2.3.7~preinstall: no script for preinstall, continuing +12683 silly lifecycle bl@1.2.3~preinstall: no script for preinstall, continuing +12684 silly lifecycle validate-npm-package-license@3.0.4~preinstall: no script for preinstall, continuing +12685 silly lifecycle webidl-conversions@3.0.1~preinstall: no script for preinstall, continuing +12686 silly lifecycle whatwg-url@5.0.0~preinstall: no script for preinstall, continuing +12687 silly lifecycle node-fetch@2.6.7~preinstall: no script for preinstall, continuing +12688 silly lifecycle which@2.0.2~preinstall: no script for preinstall, continuing +12689 silly lifecycle cross-spawn@7.0.3~preinstall: no script for preinstall, continuing +12690 silly lifecycle wide-align@1.1.5~preinstall: no script for preinstall, continuing +12691 silly lifecycle gauge@4.0.4~preinstall: no script for preinstall, continuing +12692 silly lifecycle npmlog@6.0.2~preinstall: no script for preinstall, continuing +12693 silly lifecycle wrappy@1.0.2~preinstall: no script for preinstall, continuing +12694 silly lifecycle once@1.4.0~preinstall: no script for preinstall, continuing +12695 silly lifecycle end-of-stream@1.4.4~preinstall: no script for preinstall, continuing +12696 silly lifecycle pump@3.0.0~preinstall: no script for preinstall, continuing +12697 silly lifecycle get-stream@4.1.0~preinstall: no script for preinstall, continuing +12698 silly lifecycle get-stream@5.2.0~preinstall: no script for preinstall, continuing +12699 silly lifecycle cacheable-request@6.1.0~preinstall: no script for preinstall, continuing +12700 silly lifecycle got@9.6.0~preinstall: no script for preinstall, continuing +12701 silly lifecycle package-json@6.5.0~preinstall: no script for preinstall, continuing +12702 silly lifecycle latest-version@5.1.0~preinstall: no script for preinstall, continuing +12703 silly lifecycle inflight@1.0.6~preinstall: no script for preinstall, continuing +12704 silly lifecycle glob@7.2.3~preinstall: no script for preinstall, continuing +12705 silly lifecycle rimraf@3.0.2~preinstall: no script for preinstall, continuing +12706 silly lifecycle del@6.1.1~preinstall: no script for preinstall, continuing +12707 silly lifecycle glob@7.2.3~preinstall: no script for preinstall, continuing +12708 silly lifecycle glob@8.0.3~preinstall: no script for preinstall, continuing +12709 silly lifecycle npm-packlist@5.1.1~preinstall: no script for preinstall, continuing +12710 silly lifecycle wscript-avoider@3.0.2~preinstall: no script for preinstall, continuing +12711 silly lifecycle xtend@4.0.2~preinstall: no script for preinstall, continuing +12712 silly lifecycle tar-stream@1.6.2~preinstall: no script for preinstall, continuing +12713 silly lifecycle decompress-tar@4.1.1~preinstall: no script for preinstall, continuing +12714 silly lifecycle decompress-targz@4.1.1~preinstall: no script for preinstall, continuing +12715 silly lifecycle decompress-tarbz2@4.1.1~preinstall: no script for preinstall, continuing +12716 silly lifecycle yallist@4.0.0~preinstall: no script for preinstall, continuing +12717 silly lifecycle lru-cache@6.0.0~preinstall: no script for preinstall, continuing +12718 silly lifecycle semver@7.3.7~preinstall: no script for preinstall, continuing +12719 silly lifecycle npm-install-checks@5.0.0~preinstall: no script for preinstall, continuing +12720 silly lifecycle normalize-package-data@4.0.0~preinstall: no script for preinstall, continuing +12721 silly lifecycle read-package-json@5.0.1~preinstall: no script for preinstall, continuing +12722 silly lifecycle builtins@5.0.1~preinstall: no script for preinstall, continuing +12723 silly lifecycle validate-npm-package-name@4.0.0~preinstall: no script for preinstall, continuing +12724 silly lifecycle npm-package-arg@9.1.0~preinstall: no script for preinstall, continuing +12725 silly lifecycle npm-pick-manifest@7.0.1~preinstall: no script for preinstall, continuing +12726 silly lifecycle minipass@3.3.4~preinstall: no script for preinstall, continuing +12727 silly lifecycle ssri@9.0.1~preinstall: no script for preinstall, continuing +12728 silly lifecycle minizlib@2.1.2~preinstall: no script for preinstall, continuing +12729 silly lifecycle minipass-sized@1.0.3~preinstall: no script for preinstall, continuing +12730 silly lifecycle minipass-pipeline@1.2.4~preinstall: no script for preinstall, continuing +12731 silly lifecycle minipass-json-stream@1.0.1~preinstall: no script for preinstall, continuing +12732 silly lifecycle minipass-flush@1.0.5~preinstall: no script for preinstall, continuing +12733 silly lifecycle minipass-fetch@2.1.0~preinstall: no script for preinstall, continuing +12734 silly lifecycle minipass-collect@1.0.2~preinstall: no script for preinstall, continuing +12735 silly lifecycle fs-minipass@2.1.0~preinstall: no script for preinstall, continuing +12736 silly lifecycle tar@6.1.11~preinstall: no script for preinstall, continuing +12737 silly lifecycle cacache@16.1.1~preinstall: no script for preinstall, continuing +12738 silly lifecycle make-fetch-happen@10.1.8~preinstall: no script for preinstall, continuing +12739 silly lifecycle npm-registry-fetch@13.2.0~preinstall: no script for preinstall, continuing +12740 silly lifecycle node-gyp@9.0.0~preinstall: no script for preinstall, continuing +12741 silly lifecycle pacote@13.6.1~preinstall: no script for preinstall, continuing +12742 silly lifecycle yauzl@2.10.0~preinstall: no script for preinstall, continuing +12743 silly lifecycle decompress-unzip@4.0.1~preinstall: no script for preinstall, continuing +12744 silly lifecycle decompress@4.2.1~preinstall: no script for preinstall, continuing +12745 silly lifecycle xpm@0.13.7~preinstall: no script for preinstall, continuing +12746 silly lifecycle @gar/promisify@1.1.3~preinstall: no script for preinstall, continuing +12747 silly lifecycle @ilg/es6-promisifier@0.3.1~preinstall: no script for preinstall, continuing +12748 silly lifecycle @nodelib/fs.stat@2.0.5~preinstall: no script for preinstall, continuing +12749 silly lifecycle @npmcli/node-gyp@2.0.0~preinstall: no script for preinstall, continuing +12750 silly lifecycle @sindresorhus/is@0.14.0~preinstall: no script for preinstall, continuing +12751 silly lifecycle @tootallnate/once@2.0.0~preinstall: no script for preinstall, continuing +12752 silly lifecycle @xpack/es6-promisifier@1.0.1~preinstall: no script for preinstall, continuing +12753 silly lifecycle @xpack/logger@5.0.2~preinstall: no script for preinstall, continuing +12754 silly lifecycle @szmarczak/http-timer@1.1.2~preinstall: no script for preinstall, continuing +12755 silly lifecycle @npmcli/promise-spawn@3.0.0~preinstall: no script for preinstall, continuing +12756 silly lifecycle @xpack/xpm-liquid@1.2.1~preinstall: no script for preinstall, continuing +12757 silly lifecycle @xpack/cmd-shim@4.1.0-2~preinstall: no script for preinstall, continuing +12758 silly lifecycle @npmcli/installed-package-contents@1.0.7~preinstall: no script for preinstall, continuing +12759 silly lifecycle @colors/colors@1.5.0~preinstall: no script for preinstall, continuing +12760 silly lifecycle @gar/promisify@1.1.3~preinstall: no script for preinstall, continuing +12761 silly lifecycle @isaacs/string-locale-compare@1.1.0~preinstall: no script for preinstall, continuing +12762 silly lifecycle @npmcli/ci-detect@2.0.0~preinstall: no script for preinstall, continuing +12763 silly lifecycle @npmcli/name-from-folder@1.0.1~preinstall: no script for preinstall, continuing +12764 silly lifecycle @npmcli/node-gyp@2.0.0~preinstall: no script for preinstall, continuing +12765 silly lifecycle @tootallnate/once@2.0.0~preinstall: no script for preinstall, continuing +12766 silly lifecycle @npmcli/disparity-colors@2.0.0~preinstall: no script for preinstall, continuing +12767 silly lifecycle @npmcli/promise-spawn@3.0.0~preinstall: no script for preinstall, continuing +12768 silly lifecycle @npmcli/package-json@2.0.0~preinstall: no script for preinstall, continuing +12769 silly lifecycle @npmcli/installed-package-contents@1.0.7~preinstall: no script for preinstall, continuing +12770 silly lifecycle @npmcli/move-file@2.0.0~preinstall: no script for preinstall, continuing +12771 silly lifecycle @npmcli/map-workspaces@2.0.3~preinstall: no script for preinstall, continuing +12772 silly lifecycle @npmcli/query@1.1.1~preinstall: no script for preinstall, continuing +12773 silly lifecycle @npmcli/git@3.0.1~preinstall: no script for preinstall, continuing +12774 silly lifecycle @npmcli/fs@2.1.1~preinstall: no script for preinstall, continuing +12775 silly lifecycle @npmcli/config@4.2.0~preinstall: no script for preinstall, continuing +12776 silly lifecycle @npmcli/run-script@4.2.0~preinstall: no script for preinstall, continuing +12777 silly lifecycle @npmcli/metavuln-calculator@3.1.1~preinstall: no script for preinstall, continuing +12778 silly lifecycle @npmcli/arborist@5.4.0~preinstall: no script for preinstall, continuing +12779 silly lifecycle @nodelib/fs.scandir@2.1.5~preinstall: no script for preinstall, continuing +12780 silly lifecycle @nodelib/fs.walk@1.2.8~preinstall: no script for preinstall, continuing +12781 silly lifecycle @npmcli/move-file@2.0.0~preinstall: no script for preinstall, continuing +12782 silly lifecycle @npmcli/fs@2.1.0~preinstall: no script for preinstall, continuing +12783 silly lifecycle @npmcli/git@3.0.1~preinstall: no script for preinstall, continuing +12784 silly lifecycle @ilg/cli-start-options@0.6.6~preinstall: no script for preinstall, continuing +12785 silly lifecycle @npmcli/run-script@4.1.7~preinstall: no script for preinstall, continuing +12786 silly doReverseSerial remove 0 +12787 silly doSerial move 0 +12788 silly doSerial finalize 479 +12789 silly finalize /usr/local/lib/node_modules/xpm/node_modules/@gar/promisify +12790 verbose unlock done using /home/tuyuyang/.npm/_locks/staging-3a08f0df5026584d.lock for /usr/local/lib/node_modules/.staging +12791 silly rollbackFailedOptional Starting +12792 silly rollbackFailedOptional Finishing +12793 silly runTopLevelLifecycles Starting +12794 silly runTopLevelLifecycles Finishing +12795 silly install printInstalled +12796 verbose stack Error: ENOENT: no such file or directory, rename '/usr/local/lib/node_modules/.staging/@gar/promisify-95cf83e2' -> '/usr/local/lib/node_modules/xpm/node_modules/@gar/promisify' +12796 verbose stack at destStatted (/usr/share/npm/lib/install/action/finalize.js:25:7) +12796 verbose stack at FSReqWrap.oncomplete (fs.js:152:21) +12796 verbose stack +12796 verbose stack Error: ENOENT: no such file or directory, rename '/usr/local/lib/node_modules/.staging/@gar/promisify-95cf83e2' -> '/usr/local/lib/node_modules/xpm/node_modules/@gar/promisify' +12797 verbose cwd /home/tuyuyang/Documents/xiuos/Ubiquitous/XiZi +12798 error Linux 5.4.0-122-generic +12799 error argv "/usr/bin/node" "/usr/bin/npm" "install" "--global" "xpm@latest" +12800 error node v8.10.0 +12801 error npm v3.5.2 +12802 error path /usr/local/lib/node_modules/.staging/@gar/promisify-95cf83e2 +12803 error code ENOENT +12804 error errno -2 +12805 error syscall rename +12806 error enoent ENOENT: no such file or directory, rename '/usr/local/lib/node_modules/.staging/@gar/promisify-95cf83e2' -> '/usr/local/lib/node_modules/xpm/node_modules/@gar/promisify' +12807 error enoent ENOENT: no such file or directory, rename '/usr/local/lib/node_modules/.staging/@gar/promisify-95cf83e2' -> '/usr/local/lib/node_modules/xpm/node_modules/@gar/promisify' +12807 error enoent This is most likely not a problem with npm itself +12807 error enoent and is related to npm not being able to find a file. +12808 verbose exit [ -2, true ] diff --git a/Ubiquitous/XiZi/path_kernel.mk b/Ubiquitous/XiZi/path_kernel.mk index f0c458539..e127498b5 100755 --- a/Ubiquitous/XiZi/path_kernel.mk +++ b/Ubiquitous/XiZi/path_kernel.mk @@ -155,6 +155,18 @@ KERNELPATHS += \ -I$(KERNEL_ROOT)/include # endif +ifeq ($(BSP_ROOT),$(KERNEL_ROOT)/board/ch32v307vct6) +KERNELPATHS += \ + -I$(KERNEL_ROOT)/arch/risc-v/ch32v307vct6/Core \ + -I$(KERNEL_ROOT)/arch/risc-v/ch32v307vct6/Debug \ + -I$(KERNEL_ROOT)/arch/risc-v/ch32v307vct6/User \ + -I$(KERNEL_ROOT)/arch/risc-v/ch32v307vct6/Peripheral/inc \ + -I$(KERNEL_ROOT)/arch/risc-v/ch32v307vct6 \ + -I$(BSP_ROOT)/third_party_driver/include \ + -I$(BSP_ROOT)/include \ + -I$(KERNEL_ROOT)/include # +endif + ifeq ($(BSP_ROOT),$(KERNEL_ROOT)/board/rv32m1-vega) KERNELPATHS += \ -I$(KERNEL_ROOT)/arch/risc-v/rv32m1-vega \ @@ -400,14 +412,17 @@ endif ifeq ($(ARCH), risc-v) -KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared +# KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared ifeq ($(MCU), k210) + KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/k210 endif ifeq ($(MCU), FE310) + KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/fe310 endif ifeq ($(MCU), GAP8) + KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/gap8 endif ifeq ($(MCU), GD32VF103)