//============================================================================ // PROJECT = ASMN Test Monitor // MODULE = $Source$ // VERSION = $Revision: 8025 $ // DATE = $Date: 2016-08-11 11:26:00 +0200 (to, 11 aug 2016) $ //============================================================================ // C O P Y R I G H T //============================================================================ // Copyright (c) 2002 by NEC Electronics (Europe) GmbH. All rights reserved. // Kanzlerstrasse 2 // D-40472 Duesseldorf // Germany //============================================================================ //Purpose: Main Program // //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 NEC, //either expressed or implied, including but not limited to those for //non-infringement of intellectual property, merchantability and/or //fitness for the particular purpose. //NEC 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 NEC 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. NEC shall not be liable for any services or products //provided by third party vendors, developers or consultants identified or //referred to the User by NEC in connection with the Product(s) and/or the //Application. // // // //============================================================================ // Environment: Devices: All featuring ASMN Monitor (min. 128k ROM) // Assembler: GHS MULTI 2000 // C-Compiler: GHS MULTI 2000 // Linker: GHS MULTI 2000 // Debugger: GHS MULTI 2000 //============================================================================ // // $Log$ // Revision 1.6 2004/09/23 08:12:54 liederr // Timer 0 interface added. // // Revision 1.5 2004/08/09 07:56:26 liederr // Added Timer Y, Timer Z and WATCH Timer Support. // // Revision 1.4 2004/04/07 10:05:49 liederr // Timer P (TMP) integrated. // // Revision 1.3 2004/02/19 15:06:20 liederr // CSI Macro access added. // // Revision 1.2 2004/02/09 14:29:07 liederr // Power Saving Module (ATIF) , STFN and multiple UART types support added. // // Revision 1.1 2003/12/11 13:58:45 liederr // Initial creation. // // //============================================================================ // This file has been adapted for use with IAR Embedded Workbench. #include #include #include #include #include #include "device.h" /* MAP includes */ #include /* Basic ASMN Configuration, dependent on device specifics */ #include #include /* ASMN Modules: Port Functions (always needed) */ #if( defined PORTS_TYPE ) #if( PORTS_TYPE == PORTS_STANDARD ) #include "standardports_p.h" #else #error "ASMN: Unknown Interface Defined" #endif #else #error "ASMN: No Port Interface Defined" #endif /* ASMN Modules: Interrupt Functions */ #if( defined INTC_MACROS ) #include #endif /* ASMN Modules: Main Communication Port */ #if( ASMN_UARTINTERFACE == UARTA_STANDARD ) #if( defined UARTA_MACROS ) #include #else #error "ASMN: UARTA Communication Interface Missing" #endif #elif( ASMN_UARTINTERFACE == UARTC_STANDARD ) #if( defined UARTC_MACROS ) #include #else #error "ASMN: UARTC Communication Interface Missing" #endif #elif( ASMN_UARTINTERFACE == UARTD_STANDARD ) #if( defined UARTD_MACROS ) #include #else #error "ASMN: UARTD Communication Interface Missing" #endif #elif( ASMN_UARTINTERFACE == UARTE_STANDARD ) #if( defined UARTE_MACROS ) #include #else #error "ASMN: UARTE Communication Interface Missing" #endif #elif( ASMN_UARTINTERFACE == UARTF_STANDARD ) #if( defined UARTF_MACROS ) #include #else #error "ASMN: UARTF Communication Interface Missing" #endif #elif( ASMN_UARTINTERFACE == DEBUG_INTERNAL ) #else #error "ASMN: No Communication Interface Defined" #endif /* ASMN Modules: SML Primitive Test Access */ #include "asmn_ports_p_asmnif.h" #ifdef ADC_MACROS #include "asmn_adc_p_asmnif.h" #endif #ifdef BRG_MACROS #include "asmn_brg_p_asmnif.h" #endif #ifdef MEMC_MACROS #include "asmn_memc_p_asmnif.h" #endif #ifdef DMAC_MACROS #include "asmn_dmac_p_asmnif.h" #endif #ifdef DCAN_MACROS #include "asmn_dcan_p_asmnif.h" #endif #ifdef INTC_MACROS #include "asmn_intc_p_asmnif.h" #endif #ifdef TMC_MACROS #include "asmn_timer_cp_asmnif.h" #endif #ifdef TMD_MACROS #include "asmn_timer_dp_asmnif.h" #endif #ifdef TME_MACROS #include "asmn_timer_ep_asmnif.h" #endif #ifdef TMG_MACROS #include "asmn_timer_gp_asmnif.h" #endif #ifdef TMP_MACROS #include "asmn_timerp_p_asmnif.h" #endif #ifdef TMY_MACROS #include "asmn_timery_p_asmnif.h" #endif #ifdef TMZ_MACROS #include "asmn_timerz_p_asmnif.h" #endif #ifdef TM0_MACROS #include "asmn_timer0_p_asmnif.h" #endif #ifdef WTM_MACROS #include "asmn_watch_p_asmnif.h" #endif #ifdef WDT_MACROS #include "asmn_watchdog_p_asmnif.h" #endif #ifdef UARTA_MACROS #include "asmn_uarta_p_asmnif.h" #endif #ifdef UARTC_MACROS #include "asmn_uartc_p_asmnif.h" #endif #ifdef CSI_MACROS #include "asmn_csi_p_asmnif.h" #endif /* ASMN Modules: SML Application Test Access */ #ifdef EE_RSCAN_MACROS #include "asmn_rscan_a_asmnif.h" #endif #ifdef EE_AFCAN_MACROS #include "asmn_afcan_a_asmnif.h" #endif #ifdef AFCAN_MACROS #include "asmn_afcan_a_asmnif.h" #endif #ifdef FVAN_MACROS #include "asmn_fvan_a_asmnif.h" #endif #ifdef SWC_MACROS #include "asmn_swc_a_asmnif.h" #endif #ifdef TMC_MACROS #include "asmn_timer_ca_asmnif.h" #endif #ifdef TME_MACROS #include "asmn_timer_ea_asmnif.h" #endif #ifdef TMG_MACROS #include "asmn_timer_ga_asmnif.h" #endif #ifdef TMP_MACROS #include "asmn_timerp_a_asmnif.h" #endif #ifdef TMY_MACROS #include "asmn_timery_a_asmnif.h" #endif #ifdef TMZ_MACROS #include "asmn_timerz_a_asmnif.h" #endif #ifdef UARTA_MACROS #include "asmn_uarta_a_asmnif.h" #endif #ifdef UARTC_MACROS #include "asmn_uartc_a_asmnif.h" #endif #ifdef UARTF_MACROS #include "asmn_uartf_a_asmnif.h" #endif /* SDST includes */ #ifdef SDST_EMIEMS #include #endif /* ATIF includes */ #ifdef ATIF_INJCUR #include #endif #ifdef ATIF_POWER #include #include #include #endif #ifdef ATIF_BUSIF #include #include #include #endif /* STFN includes */ #ifdef STFN_SELFTEST #include #include #include #endif /* Global Settings */ #define ASMN_MENUCODE_NOCMD -1 #define ASMN_MENUCODE_EXIT 0 #define ASMN_MENUCODE_PORTS 1 #ifdef ADC_MACROS #define ASMN_MENUCODE_ADP 2 #endif #ifdef ATIF_INJCUR #define ASMN_MENUCODE_ADA 3 #endif #ifdef BRG_MACROS #define ASMN_MENUCODE_BRGP 4 #endif #ifdef TMC_MACROS #define ASMN_MENUCODE_TMCP 5 #define ASMN_MENUCODE_TMCA 6 #endif #ifdef TMD_MACROS #define ASMN_MENUCODE_TMD 7 #endif #ifdef TME_MACROS #define ASMN_MENUCODE_TMEP 8 #define ASMN_MENUCODE_TMEA 9 #endif #ifdef TMG_MACROS #define ASMN_MENUCODE_TMGP 10 #define ASMN_MENUCODE_TMGA 11 #endif #ifdef TMP_MACROS #define ASMN_MENUCODE_TMPP 12 #define ASMN_MENUCODE_TMPA 13 #endif #ifdef TMY_MACROS #define ASMN_MENUCODE_TMYP 14 #define ASMN_MENUCODE_TMYA 15 #endif #ifdef TMZ_MACROS #define ASMN_MENUCODE_TMZP 16 #define ASMN_MENUCODE_TMZA 17 #endif #ifdef TM0_MACROS #define ASMN_MENUCODE_TM0P 18 #endif #ifdef WTM_MACROS #define ASMN_MENUCODE_WTM 19 #endif #ifdef WDT_MACROS #define ASMN_MENUCODE_WDT 20 #endif #ifdef DCAN_MACROS #define ASMN_MENUCODE_DCANP 21 #endif #ifdef FCAN_MACROS #define ASMN_MENUCODE_FCANA 22 #endif #ifdef AFCAN_MACROS #define ASMN_MENUCODE_AFCANA 23 #endif #ifdef EE_AFCAN_MACROS #define ASMN_MENUCODE_AFCANA 23 #endif #ifdef FVAN_MACROS #define ASMN_MENUCODE_FVANA 24 #endif #ifdef RSCAN_MACROS #define ASMN_MENUCODE_RSCANA 25 #endif #ifdef EE_RSCAN_MACROS #define ASMN_MENUCODE_RSCANA 25 #endif #ifdef UARTA_MACROS #define ASMN_MENUCODE_UARTAP 26 #define ASMN_MENUCODE_UARTAA 27 #endif #ifdef UARTC_MACROS #define ASMN_MENUCODE_UARTCP 28 #define ASMN_MENUCODE_UARTCA 29 #endif #ifdef UARTF_MACROS #define ASMN_MENUCODE_UARTFA 30 #endif #ifdef CSI_MACROS #define ASMN_MENUCODE_CSIP 31 #endif #ifdef INTC_MACROS #define ASMN_MENUCODE_INTC 32 #endif #ifdef DMAC_MACROS #define ASMN_MENUCODE_DMACP 33 #endif #ifdef SWC_MACROS #define ASMN_MENUCODE_SWC 34 #endif #ifdef ATIF_BUSIF #define ASMN_MENUCODE_BUSIF 35 #endif #ifdef ATIF_POWER #define ASMN_MENUCODE_PWR 36 #endif #ifdef STFN_SELFTEST #define ASMN_MENUCODE_SELF 99 #endif #define ASMN_MENULINE_HDR1 "ASMN APPLICATION TEST MONITOR\n" #define ASMN_MENULINE_HDR2 " (C) RL 01/2001 \n\n" #define ASMN_MENULINE_MEN0 "0 -> Exit\n" #define ASMN_MENULINE_MEN1 "1 -> Ports Low Level Access\n" #ifdef ADC_MACROS #define ASMN_MENULINE_MEN2 "2 -> A/D Converter Low Level Access\n" #endif #ifdef ATIF_INJCUR #define ASMN_MENULINE_MEN3 "3 -> A/D Converter Applications\n" #endif #ifdef BRG_MACROS #define ASMN_MENULINE_MEN4 "4 -> Baud Rate Generator Low Level Access\n" #endif #ifdef TMC_MACROS #define ASMN_MENULINE_MEN5 "5 -> Timer C Low Level Access\n" #define ASMN_MENULINE_MEN6 "6 -> Timer C Applications\n" #endif #ifdef TMD_MACROS #define ASMN_MENULINE_MEN7 "7 -> Timer D\n" #endif #ifdef TME_MACROS #define ASMN_MENULINE_MEN8 "8 -> Timer E Low Level Access\n" #define ASMN_MENULINE_MEN9 "9 -> Timer E Applications\n" #endif #ifdef TMG_MACROS #define ASMN_MENULINE_MEN10 "10-> Timer G Low Level Access\n" #define ASMN_MENULINE_MEN11 "11-> Timer G Applications\n" #endif #ifdef TMP_MACROS #define ASMN_MENULINE_MEN12 "12-> Timer P Low Level Access\n" #define ASMN_MENULINE_MEN13 "13-> Timer P Applications\n" #endif #ifdef TMY_MACROS #define ASMN_MENULINE_MEN14 "14-> Timer Y Low Level Access\n" #define ASMN_MENULINE_MEN15 "15-> Timer Y Applications\n" #endif #ifdef TMZ_MACROS #define ASMN_MENULINE_MEN16 "16-> Timer Z Low Level Access\n" #define ASMN_MENULINE_MEN17 "17-> Timer Z Applications\n" #endif #ifdef TM0_MACROS #define ASMN_MENULINE_MEN18 "18-> Timer 0 Low Level Access\n" #endif #ifdef WTM_MACROS #define ASMN_MENULINE_MEN19 "19-> Watch Timer Low Level Access\n" #endif #ifdef WDT_MACROS #define ASMN_MENULINE_MEN20 "20-> WatchDog Timer Low Level Access\n" #endif #ifdef DCAN_MACROS #define ASMN_MENULINE_MEN21 "21-> DCAN Low Level Access\n" #endif #ifdef FCAN_MACROS #define ASMN_MENULINE_MEN22 "22-> FCAN Applications\n" #endif #ifdef AFCAN_MACROS #define ASMN_MENULINE_MEN23 "23-> AFCAN Applications\n" #endif #ifdef EE_AFCAN_MACROS #define ASMN_MENULINE_MEN23 "23-> AFCAN Applications\n" #endif #ifdef FVAN_MACROS #define ASMN_MENULINE_MEN24 "24-> FVAN Applications\n" #endif #ifdef RSCAN_MACROS #define ASMN_MENULINE_MEN25 "25-> RSCAN Applications\n" #endif #ifdef EE_RSCAN_MACROS #define ASMN_MENULINE_MEN25 "25-> RSCAN Applications\n" #endif #ifdef UARTA_MACROS #define ASMN_MENULINE_MEN26 "26-> UART A Low Level Access\n" #define ASMN_MENULINE_MEN27 "27-> UART A Applications\n" #endif #ifdef UARTC_MACROS #define ASMN_MENULINE_MEN28 "28-> UART C Low Level Access\n" #define ASMN_MENULINE_MEN29 "29-> UART C Applications\n" #endif #ifdef UARTF_MACROS #define ASMN_MENULINE_MEN30 "30-> UART F Applications\n" #endif #ifdef CSI_MACROS #define ASMN_MENULINE_MEN31 "31-> CSI Low Level Access\n" #endif #ifdef INTC_MACROS #define ASMN_MENULINE_MEN32 "32-> NMI / External Interrupts\n" #endif #ifdef DMAC_MACROS #define ASMN_MENULINE_MEN33 "33-> DMA Low Level Access\n" #endif #ifdef SWC_MACROS #define ASMN_MENULINE_MEN34 "34-> SWC Applications\n" #endif #ifdef ATIF_BUSIF #define ASMN_MENULINE_MEN35 "35-> Bus Interface\n" #endif #ifdef ATIF_POWER #define ASMN_MENULINE_MEN36 "36-> Power Saving\n" #endif #ifdef STFN_SELFTEST #define ASMN_MENULINE_MEN99 "99-> SelfTest\n" #endif #define ASMN_MENULINE_CMD1 "\nPlease Enter Command: " #define ASMN_MENULINE_NOCMD "\nILLEGAL COMMAND\n\n" #define ASMN_MENULINE_GOODBYE "\n\nTHANK YOU - GOODBYE!\n\n" #define ASMN_MENULINE_OK "\nOK.\n" #define ASMN_MENULINE_FAIL "\nFAILED!!\n" #define ASMN_MENULINE_IERR "\nINPUT ERROR\n" /* UART Replacement Functions for Monitor */ #define ASMN_A_TTYMODE_CR 0 /* application level constants */ #define ASMN_A_TTYMODE_CRLF 1 #define ASMN_A_HEXMODE 1 #define ASMN_A_DECMODE 0 #define ASMN_A_RECBUFLEN 80 bit ASMN_SendString( u08 UnitNumber_u08, char *SendString, u08 TTYMode_u08 ) { printf( (const char*) SendString ); fflush(stdout); return( ASMN_UARTTRANSFEROK ); } bit ASMN_SendByte( u08 UnitNumber_u08, u08 SendByte_u08 ) { putchar( SendByte_u08 ); return( ASMN_UARTTRANSFEROK ); } bit ASMN_ReceiveByte( u08 UnitNumber_u08, pu08 ReceiveByte_pu08 ) { *ReceiveByte_pu08 = getchar( ); return( ASMN_UARTTRANSFEROK ); } bit ASMN_ReceiveInteger( u08 UnitNumber_u08, u16 ReceiveLength_u16, char *RequestString, int *Result, pu08 ScanState_pu08 ) { bit UARTStatus_bit; bit ReceiveStatus_bit; u08 ReceiveMode_u08 = ASMN_A_DECMODE; s16 ActualReceived_s16 = 0; char InputBuffer[ ASMN_A_RECBUFLEN ]; char ActualDisplayBuffer[ 20 ]; if( ReceiveLength_u16 >= ASMN_A_RECBUFLEN ) return( ASMN_UARTERROR ); UARTStatus_bit = ASMN_SendString( UnitNumber_u08, RequestString, ASMN_UARTMODECRLF ); if( UARTStatus_bit != ASMN_UARTTRANSFEROK ) return( UARTStatus_bit ); if( *Result >= 0 ) { sprintf( ActualDisplayBuffer, "(%d [%XH]) ", *Result, *Result ); UARTStatus_bit = ASMN_SendString( UnitNumber_u08, ActualDisplayBuffer, ASMN_A_TTYMODE_CR ); if( UARTStatus_bit != ASMN_UARTTRANSFEROK ) return( UARTStatus_bit ); } do { ReceiveStatus_bit = ASMN_ReceiveByte( UnitNumber_u08, ( pu08 )( &InputBuffer[ ActualReceived_s16 ] ) ); if( ReceiveStatus_bit == ASMN_UARTTRANSFEROK ) { ASMN_SendByte( UnitNumber_u08, ( u08 )InputBuffer[ ActualReceived_s16 ] ); if( ( InputBuffer[ ActualReceived_s16 ] == 'H' ) || ( InputBuffer[ ActualReceived_s16 ] == 'h' ) ) { ReceiveMode_u08 = ASMN_A_HEXMODE; } else { ActualReceived_s16++; if( InputBuffer[ ActualReceived_s16 - 1 ] < ' ' ) { if( InputBuffer[ ActualReceived_s16 - 1 ] == 0x08 ) { InputBuffer[ ActualReceived_s16 - 1 ] = 0x00; ActualReceived_s16 -= 2; if( ActualReceived_s16 < 0 ) ActualReceived_s16 = 0; } continue; } } } } while( ( ActualReceived_s16 < ReceiveLength_u16 ) && ( InputBuffer[ ActualReceived_s16 - 1 ] != 0x0D ) && ( InputBuffer[ ActualReceived_s16 - 1 ] != 0x0A ) ); if( ActualReceived_s16 > 1 ) { InputBuffer[ ActualReceived_s16 ] = 0; switch( ReceiveMode_u08 ) { case ASMN_A_DECMODE: *ScanState_pu08 = ( unsigned char )sscanf( InputBuffer, "%d", Result ); break; case ASMN_A_HEXMODE: *ScanState_pu08 = ( unsigned char )sscanf( InputBuffer, "%x", Result ); break; default: return( ASMN_UARTERROR ); } } return( UARTStatus_bit ); } bit ASMN_ReceiveULong( u08 UnitNumber_u08, u16 ReceiveLength_u16, char *RequestString, unsigned long *Result, pu08 ScanState_pu08 ) { bit UARTStatus_bit; bit ReceiveStatus_bit; u08 ReceiveMode_u08 = ASMN_A_DECMODE; s16 ActualReceived_s16 = 0; char InputBuffer[ ASMN_A_RECBUFLEN ]; char ActualDisplayBuffer[ 20 ]; if( ReceiveLength_u16 >= ASMN_A_RECBUFLEN ) return( ASMN_UARTERROR ); UARTStatus_bit = ASMN_SendString( UnitNumber_u08, RequestString, ASMN_A_TTYMODE_CR ); if( UARTStatus_bit != ASMN_UARTTRANSFEROK ) return( UARTStatus_bit ); sprintf( ActualDisplayBuffer, "(%ld [%lXH]) ", *Result, *Result ); UARTStatus_bit = ASMN_SendString( UnitNumber_u08, ActualDisplayBuffer, ASMN_A_TTYMODE_CR ); if( UARTStatus_bit != ASMN_UARTTRANSFEROK ) return( UARTStatus_bit ); do { ReceiveStatus_bit = ASMN_ReceiveByte( UnitNumber_u08, ( pu08 )( &InputBuffer[ ActualReceived_s16 ] ) ); if( ReceiveStatus_bit == ASMN_UARTTRANSFEROK ) { ASMN_SendByte( UnitNumber_u08, ( u08 )InputBuffer[ ActualReceived_s16 ] ); if( ( InputBuffer[ ActualReceived_s16 ] == 'H' ) || ( InputBuffer[ ActualReceived_s16 ] == 'h' ) ) { ReceiveMode_u08 = ASMN_A_HEXMODE; } else { ActualReceived_s16++; if( InputBuffer[ ActualReceived_s16 - 1 ] < ' ' ) { if( InputBuffer[ ActualReceived_s16 - 1 ] == 0x08 ) { InputBuffer[ ActualReceived_s16 - 1 ] = 0x00; ActualReceived_s16 -= 2; if( ActualReceived_s16 < 0 ) ActualReceived_s16 = 0; } continue; } } } } while( ( ActualReceived_s16 < ReceiveLength_u16 ) && ( InputBuffer[ ActualReceived_s16 - 1 ] != 0x0D ) && ( InputBuffer[ ActualReceived_s16 - 1 ] != 0x0A ) ); if( ActualReceived_s16 > 1 ) { InputBuffer[ ActualReceived_s16 ] = 0; switch( ReceiveMode_u08 ) { case ASMN_A_DECMODE: *ScanState_pu08 = ( unsigned char )sscanf( InputBuffer, "%ld", Result ); break; case ASMN_A_HEXMODE: *ScanState_pu08 = ( unsigned char )sscanf( InputBuffer, "%lx", Result ); break; default: return( ASMN_UARTERROR ); } } return( UARTStatus_bit ); } bit ASMN_ReceiveFloat( u08 UnitNumber_u08, u16 ReceiveLength_u16, char *RequestString, float *Result, pu08 ScanState_pu08 ) { bit UARTStatus_bit; bit ReceiveStatus_bit; s16 ActualReceived_s16 = 0; char InputBuffer[ ASMN_A_RECBUFLEN ]; if( ReceiveLength_u16 >= ASMN_A_RECBUFLEN ) return( ASMN_UARTERROR ); UARTStatus_bit = ASMN_SendString( UnitNumber_u08, RequestString, ASMN_A_TTYMODE_CR ); if( UARTStatus_bit != ASMN_UARTTRANSFEROK ) return( UARTStatus_bit ); do { ReceiveStatus_bit = ASMN_ReceiveByte( UnitNumber_u08, ( pu08 )( &InputBuffer[ ActualReceived_s16 ] ) ); if( ReceiveStatus_bit == ASMN_UARTTRANSFEROK ) { ASMN_SendByte( UnitNumber_u08, ( u08 )InputBuffer[ ActualReceived_s16 ] ); ActualReceived_s16++; if( InputBuffer[ ActualReceived_s16 - 1 ] < ' ' ) { if( InputBuffer[ ActualReceived_s16 - 1 ] == 0x08 ) { InputBuffer[ ActualReceived_s16 - 1 ] = 0x00; ActualReceived_s16 -= 2; if( ActualReceived_s16 < 0 ) ActualReceived_s16 = 0; } continue; } } } while( ( ActualReceived_s16 < ReceiveLength_u16) && ( InputBuffer[ ActualReceived_s16 - 1 ] != 0x0D ) && ( InputBuffer[ ActualReceived_s16 - 1 ] != 0x0A ) ); *ScanState_pu08 = ( unsigned char )sscanf( InputBuffer, "%f", Result ); return( UARTStatus_bit ); } /* Dummy Interrupt function for Communication Interface (UART) */ #pragma diag_suppress = Pe177 static void ASMN_COMInterrupt( void ) { } static unsigned char /* local submenu: invisible from outside */ DisplayMenu( char *MenuCommand ) { unsigned char UARTStatus; u08 UserInput = 0; unsigned int DigitCounter = 0; int DigitValue; char InputString[ ASMN_MENUCOM_BUFLEN ]; UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_HDR1, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_HDR2, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN0, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #ifdef ASMN_MENULINE_MEN1 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN1, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN2 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN2, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN3 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN3, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN4 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN4, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN5 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN5, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN6 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN6, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN7 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN7, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN8 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN8, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN9 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN9, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN10 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN10, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN11 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN11, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN12 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN12, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN13 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN13, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN14 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN14, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN15 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN15, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN16 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN16, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN17 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN17, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN18 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN18, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN19 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN19, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN20 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN20, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN21 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN21, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN22 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN22, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN23 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN23, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN24 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN24, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN25 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN25, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN26 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN26, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN27 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN27, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN28 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN28, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN29 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN29, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN30 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN30, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN31 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN31, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN32 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN32, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN33 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN33, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN34 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN34, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN35 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN35, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN36 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN36, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif #ifdef ASMN_MENULINE_MEN99 UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_MEN99, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); #endif UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_CMD1, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); while( DigitCounter < ( ASMN_MENUCOM_BUFLEN-1 ) ) { do { /* wait for one char to be received */ UARTStatus = ASMN_UARTRECEIVEBYTE( ASMN_MENUCOM, &UserInput ); } while( UARTStatus != ASMN_UARTTRANSFEROK ); if(!(DigitCounter <= 0 && (UserInput == 0x08 || UserInput == 0x7F))) { UARTStatus = ASMN_UARTSENDBYTE( ASMN_MENUCOM, UserInput ); /* echo */ } if( ( UserInput == ASMN_MENUCOM_EXE1 ) || ( UserInput == ASMN_MENUCOM_EXE2 ) ) { /* the "return" */ InputString[ DigitCounter ] = 0; /* close string */ sscanf( InputString, "%d", &DigitValue ); *MenuCommand = ( unsigned char )DigitValue; return( UARTStatus ); } else { /* store digit */ if( UserInput >= ' ' && UserInput != 0x7F ) { InputString[ DigitCounter++ ] = UserInput; } else if( UserInput == 0x08 || UserInput == 0x7F ) { if( DigitCounter > 0 ) DigitCounter--; } } } *MenuCommand = -1; return( UARTStatus ); } #ifdef STFN_SELFTEST unsigned char ASMN_SelfTest( u08 MenuCom ) { unsigned char UARTStatus; unsigned char SuccessFlag = STFN_SELFTEST_OK; int TestCom = STFN_SELFTEST_TESTCOM; unsigned long TestBaudrate = STFN_SELFTEST_TESTCOM_BAUD; #if( !STFN_SELFTEST_ONECOM ) unsigned char ScanState; UARTStatus = ASMN_UARTRECEIVEINT( MenuCom, ASMN_MENUINPUT_BUFLEN, ASMN_MENUINPUT_TIMERUNIT, &TestCom, &ScanState ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); if( ScanState != ASMN_MENUCODE_SCANOK ) SuccessFlag = SELFTEST_ERROR; UARTStatus = ASMN_UARTRECEIVELONG( MenuCom, ASMN_MENUINPUT_BUFLEN, ASMN_MENUINPUT_TICKPERIOD, &TestBaudRate, &ScanState ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); if( ScanState != ASMN_MENUCODE_SCANOK ) SuccessFlag = SELFTEST_ERROR; #endif if( SuccessFlag == STFN_SELFTEST_OK ) { SuccessFlag = STFN_SelfTest( MenuCom, TestCom, TestBaudrate ); } else { UARTStatus = ASMN_UARTSENDSTRING( MenuCom, ASMN_MENULINE_IERR, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); } if( SuccessFlag == STFN_SELFTEST_OK ) { UARTStatus = ASMN_UARTSENDSTRING( MenuCom, ASMN_MENULINE_OK, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); } else { UARTStatus = ASMN_UARTSENDSTRING( MenuCom, ASMN_MENULINE_FAIL, ASMN_UARTMODECRLF ); if( UARTStatus != ASMN_UARTTRANSFEROK ) return( UARTStatus ); } return( UARTStatus ); } #endif void main( ) { unsigned char UARTStatus; char MenuCommand = ASMN_MENUCODE_NOCMD; #ifdef INTC_MACROS INTC_EnableInterrupts( ); #else ASMN_EICOMMAND; #endif #ifdef ATIF_POWER ATIF_Pwrtest_Entry( ); #endif #ifdef SDST_EMIEMS SDST_EMI_Entry( ); #endif #ifdef OSC_PORT if( PORT_Oscillator_Switch_Setup( OSC_PORT ) != PORT_OK ) { exit( 0 ); } #endif #if( ASMN_UARTINTERFACE == DEBUG_INTERNAL ) UARTStatus = ASMN_UARTTRANSFEROK; #else UARTStatus = ASMN_UARTRESET( ASMN_MENUCOM ); UARTStatus *= ASMN_UARTPORTENABLE( ASMN_MENUCOM ); if( UARTStatus != ASMN_UARTTRANSFEROK ) { ASMN_UARTPORTDISABLE( ASMN_MENUCOM ); exit( 0 ); } UARTStatus = ASMN_UARTCONFIG( ASMN_MENUCOM, OSCILLATOR_FREQUENCY, ASMN_MENUCOM_BAUD, ASMN_MENUCOM_PARITY, ASMN_MENUCOM_CHLEN, ASMN_MENUCOM_STOP, ASMN_MENUCOM_DIR ); UARTStatus *= ASMN_UARTCREATEINT( ASMN_MENUCOM, ASMN_UARTIRQTX, ASMN_UARTIRQLEV, ASMN_COMInterrupt ); UARTStatus *= ASMN_UARTCREATEINT( ASMN_MENUCOM, ASMN_UARTIRQRX, ASMN_UARTIRQLEV, ASMN_COMInterrupt ); if( UARTStatus != ASMN_UARTTRANSFEROK ) { ASMN_UARTRESET( ASMN_MENUCOM ); ASMN_UARTPORTDISABLE( ASMN_MENUCOM ); exit( 0 ); } #endif while( ( UARTStatus == ASMN_UARTTRANSFEROK ) && ( MenuCommand != ASMN_MENUCODE_EXIT ) ) { UARTStatus = DisplayMenu( &MenuCommand ); switch( MenuCommand ) { case ASMN_MENUCODE_EXIT: break; #ifdef ASMN_MENUCODE_PORTS case ASMN_MENUCODE_PORTS: UARTStatus = ASMN_PORTFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_ADP case ASMN_MENUCODE_ADP: UARTStatus = ASMN_ADConverterFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_ADA case ASMN_MENUCODE_ADA: UARTStatus = ATIF_ADConverterApplications( ASMN_MENUCOM ); UARTStatus *= ASMN_UARTRESET( ASMN_MENUCOM ); UARTStatus *= ASMN_UARTCONFIG( ASMN_MENUCOM, OSCILLATOR_FREQUENCY, ASMN_MENUCOM_BAUD, ASMN_MENUCOM_PARITY, ASMN_MENUCOM_CHLEN, ASMN_MENUCOM_STOP, ASMN_MENUCOM_DIR ); UARTStatus *= ASMN_UARTCREATEINT( ASMN_MENUCOM, ASMN_UARTIRQTX, ASMN_UARTIRQLEV, ASMN_COMInterrupt ); UARTStatus *= ASMN_UARTCREATEINT( ASMN_MENUCOM, ASMN_UARTIRQRX, ASMN_UARTIRQLEV, ASMN_COMInterrupt ); if( UARTStatus != ASMN_UARTTRANSFEROK ) { ASMN_UARTRESET( ASMN_MENUCOM ); ASMN_UARTPORTDISABLE( ASMN_MENUCOM ); exit( 0 ); } break; #endif #ifdef ASMN_MENUCODE_BRGP case ASMN_MENUCODE_BRGP: UARTStatus = ASMN_BRGFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMCP case ASMN_MENUCODE_TMCP: UARTStatus = ASMN_TimerCFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMCA case ASMN_MENUCODE_TMCA: UARTStatus = ASMN_TimerCApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMD case ASMN_MENUCODE_TMD: UARTStatus = ASMN_TimerDFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMEP case ASMN_MENUCODE_TMEP: UARTStatus = ASMN_TimerEFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMEA case ASMN_MENUCODE_TMEA: UARTStatus = ASMN_TimerEApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMGP case ASMN_MENUCODE_TMGP: UARTStatus = ASMN_TimerGFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMGA case ASMN_MENUCODE_TMGA: UARTStatus = ASMN_TimerGApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMPP case ASMN_MENUCODE_TMPP: UARTStatus = ASMN_TimerPFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMPA case ASMN_MENUCODE_TMPA: UARTStatus = ASMN_TimerPApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMYP case ASMN_MENUCODE_TMYP: UARTStatus = ASMN_TimerYFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMYA case ASMN_MENUCODE_TMYA: UARTStatus = ASMN_TimerYApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMZP case ASMN_MENUCODE_TMZP: UARTStatus = ASMN_TimerZFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TMZA case ASMN_MENUCODE_TMZA: UARTStatus = ASMN_TimerZApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_TM0P case ASMN_MENUCODE_TM0P: UARTStatus = ASMN_Timer0Functions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_WTM case ASMN_MENUCODE_WTM: UARTStatus = ASMN_WatchFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_WDT case ASMN_MENUCODE_WDT: UARTStatus = ASMN_WatchdogFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_DCANP case ASMN_MENUCODE_DCANP: UARTStatus = ASMN_DCANFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_FCANA case ASMN_MENUCODE_FCANA: UARTStatus = ASMN_FCANApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_AFCANA case ASMN_MENUCODE_AFCANA: UARTStatus = ASMN_AFCANApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_FVANA case ASMN_MENUCODE_FVANA: UARTStatus = ASMN_FVANApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_RSCANA case ASMN_MENUCODE_RSCANA: UARTStatus = ASMN_RSCANApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_SWC case ASMN_MENUCODE_SWC: UARTStatus = ASMN_SWCApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_UARTAP case ASMN_MENUCODE_UARTAP: UARTStatus = ASMN_UARTAFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_UARTAA case ASMN_MENUCODE_UARTAA: UARTStatus = ASMN_UARTAApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_UARTCP case ASMN_MENUCODE_UARTCP: UARTStatus = ASMN_UARTCFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_UARTCA case ASMN_MENUCODE_UARTCA: UARTStatus = ASMN_UARTCApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_UARTFA case ASMN_MENUCODE_UARTFA: UARTStatus = ASMN_UARTFApplications( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_CSIP case ASMN_MENUCODE_CSIP: UARTStatus = ASMN_CSIFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_INTC case ASMN_MENUCODE_INTC: UARTStatus = ASMN_INTCFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_DMACP case ASMN_MENUCODE_DMACP: UARTStatus = ASMN_DMACFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_BUSIFM case ASMN_MENUCODE_BUSIF: UARTStatus = ATIF_BusInterfaceFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_PWR case ASMN_MENUCODE_PWR: UARTStatus = ATIF_PowerSaveFunctions( ASMN_MENUCOM ); break; #endif #ifdef ASMN_MENUCODE_SELF case ASMN_MENUCODE_SELF: UARTStatus = ASMN_SelfTest( ASMN_MENUCOM ); break; #endif default: UARTStatus = ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_NOCMD, ASMN_UARTMODECRLF ); break; } } ASMN_UARTSENDSTRING( ASMN_MENUCOM, ASMN_MENULINE_GOODBYE, ASMN_UARTMODECRLF ); #if( ASMN_UARTINTERFACE != DEBUG_INTERNAL ) ASMN_UARTRESET( ASMN_MENUCOM ); ASMN_UARTPORTDISABLE( ASMN_MENUCOM ); #endif while(true){} // Spin forever }