/***************************************************************************/
/*                                                                         */
/*     dsk_lib.c                                                           */
/*                                                                         */
/*     Basic library functions for the DSK                                 */
/*                                                                         */
/***************************************************************************/
//  DSP 1 <=> TMS320C6711
#include "dsk_lib.h"

void LED_on(int LED_Num)
{

  unsigned int *pdata;
    
    
 	switch(LED_Num) {
 		case 1:
 		     LED_State = LED_State & LED1x;
 		 				break;
 				
  		case 2:
 			LED_State = LED_State & LED2x;
 			 		   	break; 		

  		case 3:
  			LED_State = LED_State & LED3x;
 						break; 		
       //-A2D2A -----------
       case 4:
 			LED_State = LED_State & LED_AYx;
 					   	break; 		

  		case 5:
  			LED_State = LED_State & LED_ARx;
 						break; 	
 					
         //-DSK_G_Y_R -----------
       case 6:
 			LED_State = LED_State & LED_Gx;
 			 			   	break; 		

  		case 7:
  			LED_State = LED_State & LED_Yx;
 						break; 		
 		
  		case 8:
  			LED_State = LED_State & LED_Rx;
 		 				break; 								 				
 						}
 	
 	/* Write higher 8 bits of register */
    pdata = (unsigned int *)(IO_PORT);
    *pdata = (LED_State & 0xff000000);
    										
  /*	*(unsigned volatile int *)IO_PORT =  LED_State ;  */
 						
	return;
}


void LED_off(int LED_Num)
{
	unsigned int *pdata;
	 
 	switch(LED_Num) {
 		case 1:
 		     LED_State = LED_State | LED1;
 		 	 break;
 				
  		case 2:
 			LED_State = LED_State | LED2;
 			break;
 			
 
  		case 3:
  			LED_State = LED_State | LED3;
 			break;	
 						
 		  //-A2D2A -----------							
  		case 4:
 			LED_State = LED_State | LED_AY;
 			break;
 			
  		case 5:
  			LED_State = LED_State | LED_AR;
 			break;	
 								
 		 //-DSK_G_Y_R -----------
 		case 6:
 		     LED_State = LED_State | LED_G;
 			break;
 				
  		case 7:
 			LED_State = LED_State | LED_Y;
 			break;
 			
 
  		case 8:
  			LED_State = LED_State | LED_R;
 			break;			
 		  						
 				}
 				
	/* Write higher 8 bits of register */
     pdata = (unsigned int *)(IO_PORT);
     *pdata = (LED_State & 0xff000000);
    										
 	/*  *(unsigned volatile int *)IO_PORT =  LED_State ;  */
 	return;
}



void LED_toggle(int LED_Num)
{
	 unsigned int *pdata;
	 
 	switch(LED_Num) {
 		case 1:
 		    LED_State = LED_State ^ LED1;
 			break;
 				
  		case 2:
 			LED_State = LED_State ^ LED2;
 			break;
 			 
  		case 3:
  			LED_State = LED_State ^ LED3;
 			break; 		
 				
 		//-A2D2A -----------		
 		case 4:
 			LED_State = LED_State ^ LED_AY;
 			break; 
 			
 		case 5:	
  			LED_State = LED_State ^ LED_AR;
 			break; 
 				
 		//-DSK_G_Y_R -----------
 		case 6:	
  			LED_State = LED_State ^ LED_G;
 			break; 
 			
 		case 7:	
  			LED_State = LED_State ^ LED_Y;
 			break;
 			 
 		case 8:	
  			LED_State = LED_State ^ LED_R;
 			break; 	
 	
 				}
 				
 	/* Write higher 8 bits of register */
    pdata = (unsigned int *)(IO_PORT);
    *pdata = (LED_State & 0xff000000);
    										
 	/* *(unsigned volatile int *)IO_PORT =  LED_State ;	 */			
 	return;
}



unsigned int Switch_isOn(int Switch_Num)
{ // if the switch is on returns a number > 0
 unsigned int itemp;
 unsigned int *ptemp;
 
    
    /* Return higher 8 bits of register */
    ptemp = (unsigned int *)(IO_PORT);
    itemp = (*ptemp & 0xff000000);
    
 	//itemp = *(unsigned volatile int *)IO_PORT;
 	
	switch(Switch_Num) {
 		case 1:
 		    itemp =  itemp & SWCH1;
 			break;
 			
  		case 2:
 			itemp =  itemp & SWCH2;
 			break;
 
  		case 3:
  			itemp =  itemp & SWCH3;
 			break; 
 					
 		//-A2D2A -----------		
 		case 4:
 			itemp =  itemp & SWCHA1;
 			break;
 
  		case 5:
  			itemp =  itemp & SWCHA2;
 			break; 	
 					}
 					
 		if(itemp) return 0;				
 		else return 1;						
 					
 	//return (!itemp) ;
}


unsigned int Switch_isOff(int Switch_Num)
{// if the switch is off returns a number > 0
 unsigned int  itemp;
  unsigned int *ptemp;
 
    
    /* Return higher 8 bits of register */
    ptemp = (unsigned int *)(IO_PORT);
    itemp = (*ptemp & 0xff000000);
    
 	//itemp = *(unsigned volatile int *)IO_PORT;
 
	switch(Switch_Num) {
 		case 1:
 			itemp =   itemp & SWCH1  ;
 			break;
 			
  		case 2:
 			itemp =    itemp & SWCH2  ;
 			break;
 
  		case 3:
  			itemp =    itemp & SWCH3 ;
 			break; 	
 				
 			//-A2D2A -----------		
 		case 4:
 			itemp =    itemp & SWCHA1  ;
 			break;
 
  		case 5:
  			itemp =    itemp & SWCHA2 ;
 			break; 	
 						
 						}
 		if(itemp) return 1;				
 		else return 0;				
 	//return (itemp) ;
}


