C
Qt Quick Ultralite Automotive Cluster Demo
//============================================================================ // PROJECT = RH850/D1M2H //============================================================================ // C O P Y R I G H T //============================================================================ // Copyright (c) 2017 by RENESAS Electronics (Europe) GmbH. All rights reserved. // Arcadiastrasse 10 // D-40472 Duesseldorf // Germany //============================================================================ //Purpose: RSCFD Hardware Interrupt Bundling Decoder // //Warranty Disclaimer // //Because the Product(s) is licensed free of charge, there is no warranty //of any kind whatsoever and expressly disclaimed and excluded by RENESAS, //either expressed or implied, including but not limited to those for //non-infringement of intellectual property, merchantability and/or //fitness for the particular purpose. //RENESAS shall not have any obligation to maintain, service or provide bug //fixes for the supplied Product(s) and/or the Application. // //Each User is solely responsible for determining the appropriateness of //using the Product(s) and assumes all risks associated with its exercise //of rights under this Agreement, including, but not limited to the risks //and costs of program errors, compliance with applicable laws, damage to //or loss of data, programs or equipment, and unavailability or //interruption of operations. // //Limitation of Liability // //In no event shall RENESAS be liable to the User for any incidental, //consequential, indirect, or punitive damage (including but not limited //to lost profits) regardless of whether such liability is based on breach //of contract, tort, strict liability, breach of warranties, failure of //essential purpose or otherwise and even if advised of the possibility of //such damages. RENESAS shall not be liable for any services or products //provided by third party vendors, developers or consultants identified or //referred to the User by RENESAS in connection with the Product(s) and/or the //Application. // // // //============================================================================ // Environment: Devices: RH850/D1M2H // Assembler: GHS MULTI // C-Compiler: GHS MULTI // Linker: GHS MULTI // Debugger: GHS MULTI //============================================================================ #include <ree_types.h> #include <stddef.h> #include <map_rscfd.h> void RSCFD_IntBundlingDecode( u08 UnitNumber_u08, u08 *GlobalInterruptFlag_pu08, u08 *MachineInterruptFlag0_pu08, u08 *MachineInterruptFlag1_pu08, u08 *MachineInterruptFlag2_pu08, u08 *MachineInterruptFlag3_pu08, u08 *MachineInterruptFlag4_pu08, u08 *MachineInterruptFlag5_pu08, u08 *MachineInterruptFlag6_pu08, u08 *MachineInterruptFlag7_pu08 ) { u08 FIFONumber_u08; u08 TXIRQBundling_u08; if( *GlobalInterruptFlag_pu08 != EE_RSCFD_INT_NOINT ) { switch( *GlobalInterruptFlag_pu08 ) { case EE_RSCFD_INT_GERR: break; case EE_RSCFD_INT_RXF0: case EE_RSCFD_INT_RXF1: case EE_RSCFD_INT_RXF2: case EE_RSCFD_INT_RXF3: case EE_RSCFD_INT_RXF4: case EE_RSCFD_INT_RXF5: case EE_RSCFD_INT_RXF6: case EE_RSCFD_INT_RXF7: for( FIFONumber_u08 = 0; FIFONumber_u08 < EE_RSCFD_MAXRXFIFOS; FIFONumber_u08++ ) { if( ee_rscfd_common_p[ UnitNumber_u08 ]->rfsts[ FIFONumber_u08 ].rfif ) { *GlobalInterruptFlag_pu08 = EE_RSCFD_INT_RXF0 + FIFONumber_u08; } } break; default: break; } } if( *MachineInterruptFlag0_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag0_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 0 ] & 0x000000FF ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag0_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag0_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag0_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag0_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag0_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag1_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag1_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 0 ] & 0x0000FF00 ) >> 8 ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag1_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag1_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag1_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag1_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag1_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag2_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag2_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 0 ] & 0x00FF0000 ) >> 16 ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag2_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag2_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag2_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag2_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag2_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag3_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag3_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 0 ] & 0xFF000000 ) >> 24 ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag3_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag3_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag3_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag3_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag3_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag4_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag4_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 1 ] & 0x000000FF ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag4_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag4_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag4_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag4_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag4_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag5_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag5_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 1 ] & 0x0000FF00 ) >> 8 ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag6_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag6_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 1 ] & 0x00FF0000 ) >> 16 ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } if( *MachineInterruptFlag7_pu08 != EE_RSCFD_INT_NOINT ) { switch( *MachineInterruptFlag7_pu08 ) { case EE_RSCFD_INT_CERR: case EE_RSCFD_INT_RXCF: break; case EE_RSCFD_INT_TX: TXIRQBundling_u08 = ( u08 )( ( ee_rscfd_common_p[ UnitNumber_u08 ]->gtintsts[ 1 ] & 0xFF000000 ) >> 24 ); if( TXIRQBundling_u08 & 0x01 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TX; if( TXIRQBundling_u08 & 0x02 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXA; if( TXIRQBundling_u08 & 0x04 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXQ; if( TXIRQBundling_u08 & 0x08 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXCF; if( TXIRQBundling_u08 & 0x10 ) *MachineInterruptFlag5_pu08 = EE_RSCFD_INT_TXHL; break; default: break; } } }