From 446892cde07dd2afb1a003ca50ef2db1d1c4616e Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Sun, 14 Jun 2015 18:57:28 +1000 Subject: [PATCH] scsi2sd-util crash on exit fix (again) --- CHANGELOG | 6 + .../Generated_Source/PSoC5/SCSI_SEL_ISR.c | 356 ++++++++++++++++++ .../Generated_Source/PSoC5/SCSI_SEL_ISR.h | 70 ++++ .../Generated_Source/PSoC5/cymetadata.c | 2 +- .../SCSI2SD/v3/SCSI2SD.cydsn/SCSI2SD.cyfit | Bin 266976 -> 266976 bytes .../Generated_Source/PSoC5/SCSI_SEL_ISR.c | 356 ++++++++++++++++++ .../Generated_Source/PSoC5/SCSI_SEL_ISR.h | 70 ++++ software/scsi2sd-util/ConfigUtil.cc | 2 +- software/scsi2sd-util/Makefile | 6 +- software/scsi2sd-util/scsi2sd-util.cc | 20 +- 10 files changed, 879 insertions(+), 9 deletions(-) create mode 100644 software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c create mode 100644 software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h create mode 100644 software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c create mode 100644 software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h diff --git a/CHANGELOG b/CHANGELOG index d5c8e92..5620134 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +20150614 4.3 + - Added configurable disk geometry. + - Added configuration import/export function to scsi2sd-util + - scsi2sd-util stability fixes + - Fixes to support EMU EMAX1 & 2 + 20150504 4.2.4 - Clean up version number mishap (4.2.3 reported as 4.2.2) - Reduce size of mode pages for SCSI1 hosts diff --git a/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c b/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c new file mode 100644 index 0000000..2f75936 --- /dev/null +++ b/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SCSI_SEL_ISR.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SCSI_SEL_ISR__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SCSI_SEL_ISR_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Start(void) +{ + /* For all we know the interrupt is active. */ + SCSI_SEL_ISR_Disable(); + + /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */ + SCSI_SEL_ISR_SetVector(&SCSI_SEL_ISR_Interrupt); + + /* Set the priority. */ + SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_SEL_ISR_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SCSI_SEL_ISR_Disable(); + + /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */ + SCSI_SEL_ISR_SetVector(address); + + /* Set the priority. */ + SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_SEL_ISR_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Stop(void) +{ + /* Disable this interrupt. */ + SCSI_SEL_ISR_Disable(); + + /* Set the ISR to point to the passive one. */ + SCSI_SEL_ISR_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SCSI_SEL_ISR. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SCSI_SEL_ISR_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SCSI_SEL_ISR_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SCSI_SEL_ISR_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SCSI_SEL_ISR_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SCSI_SEL_ISR_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SCSI_SEL_ISR_Start +* or SCSI_SEL_ISR_StartEx will override any effect this method +* would have had. This method should only be called after +* SCSI_SEL_ISR_Start or SCSI_SEL_ISR_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_SetPriority(uint8 priority) +{ + *SCSI_SEL_ISR_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SCSI_SEL_ISR_GetPriority(void) +{ + uint8 priority; + + + priority = *SCSI_SEL_ISR_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Enable(void) +{ + /* Enable the general interrupt. */ + *SCSI_SEL_ISR_INTC_SET_EN = SCSI_SEL_ISR__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SCSI_SEL_ISR_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SCSI_SEL_ISR_INTC_SET_EN & (uint32)SCSI_SEL_ISR__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Disable(void) +{ + /* Disable the general interrupt. */ + *SCSI_SEL_ISR_INTC_CLR_EN = SCSI_SEL_ISR__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_SetPending(void) +{ + *SCSI_SEL_ISR_INTC_SET_PD = SCSI_SEL_ISR__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_ClearPending(void) +{ + *SCSI_SEL_ISR_INTC_CLR_PD = SCSI_SEL_ISR__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h b/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h new file mode 100644 index 0000000..dd5175a --- /dev/null +++ b/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SCSI_SEL_ISR.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SCSI_SEL_ISR_H) +#define CY_ISR_SCSI_SEL_ISR_H + + +#include +#include + +/* Interrupt Controller API. */ +void SCSI_SEL_ISR_Start(void); +void SCSI_SEL_ISR_StartEx(cyisraddress address); +void SCSI_SEL_ISR_Stop(void); + +CY_ISR_PROTO(SCSI_SEL_ISR_Interrupt); + +void SCSI_SEL_ISR_SetVector(cyisraddress address); +cyisraddress SCSI_SEL_ISR_GetVector(void); + +void SCSI_SEL_ISR_SetPriority(uint8 priority); +uint8 SCSI_SEL_ISR_GetPriority(void); + +void SCSI_SEL_ISR_Enable(void); +uint8 SCSI_SEL_ISR_GetState(void); +void SCSI_SEL_ISR_Disable(void); + +void SCSI_SEL_ISR_SetPending(void); +void SCSI_SEL_ISR_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_SEL_ISR ISR. */ +#define SCSI_SEL_ISR_INTC_VECTOR ((reg32 *) SCSI_SEL_ISR__INTC_VECT) + +/* Address of the SCSI_SEL_ISR ISR priority. */ +#define SCSI_SEL_ISR_INTC_PRIOR ((reg8 *) SCSI_SEL_ISR__INTC_PRIOR_REG) + +/* Priority of the SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_PRIOR_NUMBER SCSI_SEL_ISR__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_SET_EN ((reg32 *) SCSI_SEL_ISR__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_CLR_EN ((reg32 *) SCSI_SEL_ISR__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SCSI_SEL_ISR interrupt state to pending. */ +#define SCSI_SEL_ISR_INTC_SET_PD ((reg32 *) SCSI_SEL_ISR__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_CLR_PD ((reg32 *) SCSI_SEL_ISR__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SCSI_SEL_ISR_H */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/cymetadata.c b/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/cymetadata.c index 6c072bf..13c882b 100644 --- a/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/cymetadata.c +++ b/software/SCSI2SD/v3/SCSI2SD.cydsn/Generated_Source/PSoC5/cymetadata.c @@ -28,7 +28,7 @@ __attribute__ ((__section__(".cyloadablemeta"), used)) const uint8 cy_meta_loadable[] = { 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, - 0x00u, 0x00u, 0x00u, 0x00u, 0x5Cu, 0xD1u, 0x24u, 0x04u, + 0x00u, 0x00u, 0x00u, 0x00u, 0x5Cu, 0xD1u, 0x30u, 0x04u, 0x01u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, diff --git a/software/SCSI2SD/v3/SCSI2SD.cydsn/SCSI2SD.cyfit b/software/SCSI2SD/v3/SCSI2SD.cydsn/SCSI2SD.cyfit index 74fb4b3030f06ff89a96e1e29302178cce0e5ae2..b1fdfe02262970cde4085ff6cc1cecad4c7a1a3d 100644 GIT binary patch delta 8193 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 delta 8193 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 diff --git a/software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c b/software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c new file mode 100644 index 0000000..2f75936 --- /dev/null +++ b/software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.c @@ -0,0 +1,356 @@ +/******************************************************************************* +* File Name: SCSI_SEL_ISR.c +* Version 1.70 +* +* Description: +* API for controlling the state of an interrupt. +* +* +* Note: +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ + + +#include +#include +#include + +#if !defined(SCSI_SEL_ISR__REMOVED) /* Check for removal by optimization */ + +/******************************************************************************* +* Place your includes, defines and code here +********************************************************************************/ +/* `#START SCSI_SEL_ISR_intc` */ + +/* `#END` */ + +#ifndef CYINT_IRQ_BASE +#define CYINT_IRQ_BASE 16 +#endif /* CYINT_IRQ_BASE */ +#ifndef CYINT_VECT_TABLE +#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET) +#endif /* CYINT_VECT_TABLE */ + +/* Declared in startup, used to set unused interrupts to. */ +CY_ISR_PROTO(IntDefaultHandler); + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Start +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Start(void) +{ + /* For all we know the interrupt is active. */ + SCSI_SEL_ISR_Disable(); + + /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */ + SCSI_SEL_ISR_SetVector(&SCSI_SEL_ISR_Interrupt); + + /* Set the priority. */ + SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_SEL_ISR_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_StartEx +******************************************************************************** +* +* Summary: +* Set up the interrupt and enable it. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_StartEx(cyisraddress address) +{ + /* For all we know the interrupt is active. */ + SCSI_SEL_ISR_Disable(); + + /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */ + SCSI_SEL_ISR_SetVector(address); + + /* Set the priority. */ + SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER); + + /* Enable it. */ + SCSI_SEL_ISR_Enable(); +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Stop +******************************************************************************** +* +* Summary: +* Disables and removes the interrupt. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Stop(void) +{ + /* Disable this interrupt. */ + SCSI_SEL_ISR_Disable(); + + /* Set the ISR to point to the passive one. */ + SCSI_SEL_ISR_SetVector(&IntDefaultHandler); +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Interrupt +******************************************************************************** +* +* Summary: +* The default Interrupt Service Routine for SCSI_SEL_ISR. +* +* Add custom code between the coments to keep the next version of this file +* from over writting your code. +* +* Parameters: +* +* Return: +* None +* +*******************************************************************************/ +CY_ISR(SCSI_SEL_ISR_Interrupt) +{ + /* Place your Interrupt code here. */ + /* `#START SCSI_SEL_ISR_Interrupt` */ + + /* `#END` */ +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_SetVector +******************************************************************************** +* +* Summary: +* Change the ISR vector for the Interrupt. Note calling SCSI_SEL_ISR_Start +* will override any effect this method would have had. To set the vector +* before the component has been started use SCSI_SEL_ISR_StartEx instead. +* +* Parameters: +* address: Address of the ISR to set in the interrupt vector table. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_SetVector(cyisraddress address) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER] = address; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_GetVector +******************************************************************************** +* +* Summary: +* Gets the "address" of the current ISR vector for the Interrupt. +* +* Parameters: +* None +* +* Return: +* Address of the ISR in the interrupt vector table. +* +*******************************************************************************/ +cyisraddress SCSI_SEL_ISR_GetVector(void) +{ + cyisraddress * ramVectorTable; + + ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE; + + return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER]; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_SetPriority +******************************************************************************** +* +* Summary: +* Sets the Priority of the Interrupt. Note calling SCSI_SEL_ISR_Start +* or SCSI_SEL_ISR_StartEx will override any effect this method +* would have had. This method should only be called after +* SCSI_SEL_ISR_Start or SCSI_SEL_ISR_StartEx has been called. To set +* the initial priority for the component use the cydwr file in the tool. +* +* Parameters: +* priority: Priority of the interrupt. 0 - 7, 0 being the highest. +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_SetPriority(uint8 priority) +{ + *SCSI_SEL_ISR_INTC_PRIOR = priority << 5; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_GetPriority +******************************************************************************** +* +* Summary: +* Gets the Priority of the Interrupt. +* +* Parameters: +* None +* +* Return: +* Priority of the interrupt. 0 - 7, 0 being the highest. +* +*******************************************************************************/ +uint8 SCSI_SEL_ISR_GetPriority(void) +{ + uint8 priority; + + + priority = *SCSI_SEL_ISR_INTC_PRIOR >> 5; + + return priority; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Enable +******************************************************************************** +* +* Summary: +* Enables the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Enable(void) +{ + /* Enable the general interrupt. */ + *SCSI_SEL_ISR_INTC_SET_EN = SCSI_SEL_ISR__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_GetState +******************************************************************************** +* +* Summary: +* Gets the state (enabled, disabled) of the Interrupt. +* +* Parameters: +* None +* +* Return: +* 1 if enabled, 0 if disabled. +* +*******************************************************************************/ +uint8 SCSI_SEL_ISR_GetState(void) +{ + /* Get the state of the general interrupt. */ + return ((*SCSI_SEL_ISR_INTC_SET_EN & (uint32)SCSI_SEL_ISR__INTC_MASK) != 0u) ? 1u:0u; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_Disable +******************************************************************************** +* +* Summary: +* Disables the Interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_Disable(void) +{ + /* Disable the general interrupt. */ + *SCSI_SEL_ISR_INTC_CLR_EN = SCSI_SEL_ISR__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_SetPending +******************************************************************************** +* +* Summary: +* Causes the Interrupt to enter the pending state, a software method of +* generating the interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_SetPending(void) +{ + *SCSI_SEL_ISR_INTC_SET_PD = SCSI_SEL_ISR__INTC_MASK; +} + + +/******************************************************************************* +* Function Name: SCSI_SEL_ISR_ClearPending +******************************************************************************** +* +* Summary: +* Clears a pending interrupt. +* +* Parameters: +* None +* +* Return: +* None +* +*******************************************************************************/ +void SCSI_SEL_ISR_ClearPending(void) +{ + *SCSI_SEL_ISR_INTC_CLR_PD = SCSI_SEL_ISR__INTC_MASK; +} + +#endif /* End check for removal by optimization */ + + +/* [] END OF FILE */ diff --git a/software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h b/software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h new file mode 100644 index 0000000..dd5175a --- /dev/null +++ b/software/SCSI2SD/v4/SCSI2SD.cydsn/Generated_Source/PSoC5/SCSI_SEL_ISR.h @@ -0,0 +1,70 @@ +/******************************************************************************* +* File Name: SCSI_SEL_ISR.h +* Version 1.70 +* +* Description: +* Provides the function definitions for the Interrupt Controller. +* +* +******************************************************************************** +* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved. +* You may use this file only in accordance with the license, terms, conditions, +* disclaimers, and limitations in the end user license agreement accompanying +* the software package with which this file was provided. +*******************************************************************************/ +#if !defined(CY_ISR_SCSI_SEL_ISR_H) +#define CY_ISR_SCSI_SEL_ISR_H + + +#include +#include + +/* Interrupt Controller API. */ +void SCSI_SEL_ISR_Start(void); +void SCSI_SEL_ISR_StartEx(cyisraddress address); +void SCSI_SEL_ISR_Stop(void); + +CY_ISR_PROTO(SCSI_SEL_ISR_Interrupt); + +void SCSI_SEL_ISR_SetVector(cyisraddress address); +cyisraddress SCSI_SEL_ISR_GetVector(void); + +void SCSI_SEL_ISR_SetPriority(uint8 priority); +uint8 SCSI_SEL_ISR_GetPriority(void); + +void SCSI_SEL_ISR_Enable(void); +uint8 SCSI_SEL_ISR_GetState(void); +void SCSI_SEL_ISR_Disable(void); + +void SCSI_SEL_ISR_SetPending(void); +void SCSI_SEL_ISR_ClearPending(void); + + +/* Interrupt Controller Constants */ + +/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_SEL_ISR ISR. */ +#define SCSI_SEL_ISR_INTC_VECTOR ((reg32 *) SCSI_SEL_ISR__INTC_VECT) + +/* Address of the SCSI_SEL_ISR ISR priority. */ +#define SCSI_SEL_ISR_INTC_PRIOR ((reg8 *) SCSI_SEL_ISR__INTC_PRIOR_REG) + +/* Priority of the SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_PRIOR_NUMBER SCSI_SEL_ISR__INTC_PRIOR_NUM + +/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_SET_EN ((reg32 *) SCSI_SEL_ISR__INTC_SET_EN_REG) + +/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_CLR_EN ((reg32 *) SCSI_SEL_ISR__INTC_CLR_EN_REG) + +/* Address of the INTC.SET_PD[x] register to set the SCSI_SEL_ISR interrupt state to pending. */ +#define SCSI_SEL_ISR_INTC_SET_PD ((reg32 *) SCSI_SEL_ISR__INTC_SET_PD_REG) + +/* Address of the INTC.CLR_PD[x] register to clear the SCSI_SEL_ISR interrupt. */ +#define SCSI_SEL_ISR_INTC_CLR_PD ((reg32 *) SCSI_SEL_ISR__INTC_CLR_PD_REG) + + +#endif /* CY_ISR_SCSI_SEL_ISR_H */ + + +/* [] END OF FILE */ diff --git a/software/scsi2sd-util/ConfigUtil.cc b/software/scsi2sd-util/ConfigUtil.cc index 05d059d..38ba70f 100644 --- a/software/scsi2sd-util/ConfigUtil.cc +++ b/software/scsi2sd-util/ConfigUtil.cc @@ -227,7 +227,7 @@ ConfigUtil::toXML(const TargetConfig& config) " " << std::string(config.vendor, 8) << "\n" << "\n" << " \n" << - " \n" << + " \n" << " " << std::string(config.prodId, 16) << "\n" << "\n" << " \n" << diff --git a/software/scsi2sd-util/Makefile b/software/scsi2sd-util/Makefile index 8f42edf..d84529c 100755 --- a/software/scsi2sd-util/Makefile +++ b/software/scsi2sd-util/Makefile @@ -3,7 +3,7 @@ VPATH=cybootloaderutils ../SCSI2SD/src CPPFLAGS = -I cybootloaderutils -I hidapi/hidapi -I ../include -Ilibzipper-1.0.4 -I$(BUILD)/zlib CFLAGS += -Wall -Wno-pointer-sign -O2 -g CXXFLAGS += -Wall -O2 -g -std=c++0x -LDFLAGS += -L$(BUILD)/libzipper/.libs -lzipper -L$(BUILD)/zlib -lz -lexpat +LDFLAGS += -L$(BUILD)/libzipper/.libs -lzipper -L$(BUILD)/zlib -lz LIBZIPPER_CONFIG = --disable-shared LDFLAGS="-L../zlib" CPPFLAGS="-I../zlib" @@ -36,13 +36,13 @@ ifeq ($(TARGET),Win64) endif ifeq ($(TARGET),Linux) VPATH += hidapi/linux - LDFLAGS += -ludev + LDFLAGS += -ludev -lexpat BUILD = build/linux endif ifeq ($(TARGET),Darwin) # Should match OSX VPATH += hidapi-mac - LDFLAGS += -framework IOKit -framework CoreFoundation + LDFLAGS += -framework IOKit -framework CoreFoundation -lexpat CC=clang -mmacosx-version-min=10.7 CXX=clang++ -stdlib=libc++ -mmacosx-version-min=10.7 WX_CONFIG += --with-macosx-version-min=10.7 diff --git a/software/scsi2sd-util/scsi2sd-util.cc b/software/scsi2sd-util/scsi2sd-util.cc index a46a534..59a3b89 100644 --- a/software/scsi2sd-util/scsi2sd-util.cc +++ b/software/scsi2sd-util/scsi2sd-util.cc @@ -22,6 +22,7 @@ #include #endif +#include #include #include #include @@ -985,10 +986,9 @@ private: } // Note: Don't confuse this with the wxApp::OnExit virtual method - void OnExitEvt(wxCommandEvent& event) - { - Close(true); - } + void OnExitEvt(wxCommandEvent& event); + + void OnCloseEvt(wxCloseEvent& event); void OnAbout(wxCommandEvent& event) { @@ -1031,6 +1031,7 @@ wxBEGIN_EVENT_TABLE(AppFrame, wxFrame) EVT_BUTTON(ID_BtnSave, AppFrame::doSave) EVT_BUTTON(ID_BtnLoad, AppFrame::doLoad) + EVT_CLOSE(AppFrame::OnCloseEvt) wxEND_EVENT_TABLE() @@ -1052,4 +1053,15 @@ public: // Main Method wxIMPLEMENT_APP(App); +void +AppFrame::OnExitEvt(wxCommandEvent& event) +{ + wxGetApp().ExitMainLoop(); +} + +void +AppFrame::OnCloseEvt(wxCloseEvent& event) +{ + wxGetApp().ExitMainLoop(); +} -- 2.38.5