
#include "predef.h"
#include <stdio.h>
#include <ctype.h>
#include <startnet.h>
#include <autoupdate.h>
#include <dhcpclient.h>
#include <sim.h>
#include <pins.h>
#include <ucosmcfc.h>
#include <pinconstant.h>





void UserMain(void)
{
   InitializeStack();
   GetDHCPAddressIfNecessary();
   OSChangePrio(MAIN_PRIO);
   EnableAutoUpdate();

  
    const BYTE PinNum[8] = { 15, 16, 18, 23, 17, 19, 20, 24 };
 
    for ( int i = 0; i < 8; i++ )
    {
      J2[PinNum[i]].function(PIN_GPIO);
    }

   while (1)
   {
	   for (int j = 0; j < 3; j++)
	  	   {
	  		   for (int i = 0; i <= 3; i++)
	  		   {
	  			   J2[PinNum[i]] = 0;					// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second
	  			   J2[PinNum[i]] = 1;					// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second

	  			   J2[PinNum[7-i]] = 0;					// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second
	  			   J2[PinNum[7-i]] = 1;					// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second

	  		   }
	  		   for (int i = 2; i >= 0; i--)
	  		   {
	  			   J2[PinNum[i]] = 0;					// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second
	  			   J2[PinNum[i]] = 1;					// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second

	  			   J2[PinNum[7-i]] = 0;					// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second
	  			   J2[PinNum[7-i]] = 1;					// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait 1/20 second
	  		   }

	  	   }

	  	   for (int j = 0; j < 3; j++)
	  	   	   {
	  		   for (int i = 0; i < 7; i++)
	  		   {
	  			   J2[PinNum[i]] = 0;				// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  			   J2[PinNum[i]] = 1;				// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second

	  		   }

	  		   for (int i = 7; i > 0; i--)
	  		   {
	  			   J2[PinNum[i]] = 0;				// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  			   J2[PinNum[i]] = 1;				// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  		   }
	  	   	   }

	  	   for (int j = 0; j < 3; j++)
	  	   	   {
	  		   for (int i = 0; i < 7; i++)
	  		   {
	  			   for (int k = 0; k < 5; k++)
	  			   {
	  			   J2[PinNum[i]] = 0;				// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  			   J2[PinNum[i]] = 1;				// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  			   }
	  		   }

	  		   for (int i = 7; i > 0; i--)
	  		   {
	  			   for (int k = 0; k < 5; k++)
	  			   {
	  			   J2[PinNum[i]] = 0;				// Turns LED on
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  			   J2[PinNum[i]] = 1;				// Turn LED off
	  			   OSTimeDly( TICKS_PER_SECOND/20 );		// Wait one second
	  			   }
	  		   }
	  	   	   }
	  	   for (int j = 0; j < 3; j++)
	  	  	   {
	  	  		   for (int i = 0; i <= 3; i++)
	  	  		   {
	  	  			   for (int k = 0; k < 5; k++)
	  	  			   {
	  	  				   J2[PinNum[i]] = 0;					// Turns LED on
	  	  				   J2[PinNum[7-i]] = 0;					// Turns LED on
	  	  				   OSTimeDly( TICKS_PER_SECOND/10 );		// Wait 1/20 second
	  	  				   J2[PinNum[i]] = 1;					// Turn LED off
	  	  				   J2[PinNum[7-i]] = 1;					// Turn LED off
	  	  				   OSTimeDly( TICKS_PER_SECOND/10 );		// Wait 1/20 second
	  	  			   }
	  	  		   }
	  	  		   for (int i = 2; i >= 0; i--)
	  	  		   {
	  	  			   for (int k = 0; k < 5; k++)
	  	  			   {
	  	  				   J2[PinNum[i]] = 0;					// Turns LED on
	  	  				   J2[PinNum[7-i]] = 0;					// Turns LED on
	  	  				   OSTimeDly( TICKS_PER_SECOND/10 );		// Wait 1/20 second
	  	  				   J2[PinNum[i]] = 1;					// Turn LED off
	  	  				   J2[PinNum[7-i]] = 1;					// Turn LED off
	  	  				   OSTimeDly( TICKS_PER_SECOND/10 );		// Wait 1/20 second
	  	  			   }
	  	  			}

	  	  	   }

   }

}
