Ejemplo n.º 1
0
static void reflash_led_blinker(void *parameters)
{
	(void)parameters;
	while(!end_led) {
		led_set_red(0); led_set_green(1);
		vTaskDelay(100/portTICK_RATE_MS);
		led_set_red(1); led_set_green(0);
		vTaskDelay(100/portTICK_RATE_MS);
	}
	led_set_red(0); led_set_green(1);
	while(1) { vTaskDelay(1000/portTICK_RATE_MS); }
}
Ejemplo n.º 2
0
//////////////////////////////////////////////////////////////////////////////
/// Inizialization. This function is called once before entering 
/// main loop. 
///
//////////////////////////////////////////////////////////////////////////////
void init() {
	VMC_INT_16 motorID;

	init_aisc167b();
    init_asccom();    
    init_cycletime_counter();
	i2c_init();
	init_bioport();
	if (can_init(CAN_BAUD, 0)) while(1){led_swap_green();}

    led_set_green(0);
    led_set_red(0);
	ledseq_init();

    ais_system_init();


	//init_Thermic();
	init_error();
	init_calculatestate();
	init_motorcontrol();
	init_controller();
	init_current_limiter();
	mpwr_init();

	set_default_configuration();

	for (motorID = 0; motorID < 3; motorID++) {
	//	init_Limiter(i, 100);
		init_encoder(motorID);
	}
   


}
Ejemplo n.º 3
0
void
PtCmdInit (void)
{
	/* enable firmware defaults button */
	AT91F_PIO_CfgInputFilter (EXT_BUTTON_PIO, EXT_BUTTON_PIN);
	AT91F_PIO_CfgInput (EXT_BUTTON_PIO, EXT_BUTTON_PIN);

	/* enable power LED */
	led_set_red (1);

	xTaskCreate (vCmdTask, (signed portCHAR *) "CMD", TASK_CMD_STACK, NULL,
				 TASK_CMD_PRIORITY, NULL);
}
Ejemplo n.º 4
0
/* Reflash the controller flash if all of the following conditions are satisfied:
 *  + We have new flash content in eink_flash_content
 *  + The flash identification indicates our custom built controller and not the stock Epson one
 *  + The first 4 bytes of the existing flash content do not match eink_flash_content
 * 
 * If this function returns a positive value then the controller was reset and the application
 * should wait 5ms before proceeding; if the function returns 0, no change was done; if the
 * function returns a negative value it is an error code
 */
int eink_flash_conditional_reflash(void)
{
	if(sizeof(eink_flash_content) == 0) return 0;
	int r = eink_flash_acquire();
	if(r>=0) {
		unsigned int ident = eink_flash_read_identification();
		xTaskHandle led_task_handle;
#ifdef DEBUG_REFLASH
		printf("Device identification: %06X\n", ident);
#endif
		if( ident != 0x202016 ) { /* Only for our own flash, not the pre-assembled */
			goto out_done;
		}
		
		eink_flash_read(0, flash_tmpbuf, sizeof(flash_tmpbuf));
#ifdef DEBUG_REFLASH
		printf("%02X %02X %02X %02X\n", flash_tmpbuf[0], flash_tmpbuf[1], flash_tmpbuf[2], flash_tmpbuf[3]);
#endif
		if(memcmp(flash_tmpbuf, eink_flash_content, sizeof(flash_tmpbuf)) != 0) {
			printf("Flash content not correct, starting reflash cycle\nDO NOT POWER OFF\n");
			xTaskCreate( reflash_led_blinker, (signed char*)"LED BLINKER", 128, NULL, tskIDLE_PRIORITY+1, &led_task_handle);
			printf("Starting bulk erase\n");
			eink_flash_write_enable();
			eink_flash_bulk_erase();
			printf("Done bulk erase\n");
			printf("Starting programming (%i bytes)\n", sizeof(eink_flash_content));
			eink_flash_program(eink_flash_content, sizeof(eink_flash_content));
			printf("Done\n");
			end_led = 1;
			vTaskDelay(150/portTICK_RATE_MS);
			vTaskDelete(led_task_handle);
			led_set_red(0); led_set_green(1);
		}
	} else {
		return r;
	}
out_done:
	eink_flash_release();
	return 1;
}
Ejemplo n.º 5
0
void show_color(unsigned char dig){
          
              switch(dig){
                case 0:
                 led_set_yellow(POWER);   
                 led_set_black();
                 led_set_black();
                 led_set_black();
                 led_set_black();
                 sound_start(dig);
                 break;
                case 1:
                 led_set_black();
                 led_set_red(POWER);
                 led_set_black();
                 led_set_black();
                 led_set_black();
                 sound_start(dig);
                 break;
                case 2:
                 led_set_black();
                 led_set_black(); 
                 led_set_green(POWER);
                 led_set_black();
                 led_set_black();
                 sound_start(dig);
                 break;
                case 3:
                 led_set_black();
                 led_set_black();
                 led_set_black(); 
                 led_set_blue(POWER);
                 led_set_black();
                 sound_start(dig);
                 break;
                 
            }  
    
}
Ejemplo n.º 6
0
static void
vCmdTask (void *pvParameters)
{
	(void) pvParameters;
	unsigned int t = 0;
	portCHAR cByte;
	portBASE_TYPE len = 0;
	static char next_command[MAX_CMD_LINE_LENGTH];

	for (;;)
	{
		if (vUSBRecvByte (&cByte, 1, 100))
		{
			vDebugSendHook (cByte);
			switch (cByte)
			{
				case '\n':
				case '\r':
					if (len)
					{
						next_command[len] = 0;
						vCmdProcess (next_command);
						len = 0;
					}
					break;
				default:
					next_command[len++] = cByte;
			}
		}
		else if (AT91F_PIO_GetInput (EXT_BUTTON_PIO) & EXT_BUTTON_PIN)
		{
			if (t < 30)
				t++;
			else
			{
				for (t = 0; t < 10; t++)
				{
					vTaskDelay (500 / portTICK_RATE_MS);
					led_set_red (0);
					vTaskDelay (500 / portTICK_RATE_MS);
					led_set_red (1);
				}

				/* backup reader id */
				t = env.e.reader_id;
				vNetworkResetDefaultSettings ();
				/* restore reader id */
				env.e.reader_id = t;

				/* store the configuration */
				env_store ();

				/* wait a bit before the reset */
				debug_printf ("restoring original settings"
							  " after reset pin triggerd & reboot...\n");
				vTaskDelay (1000 / portTICK_RATE_MS);

				/*force watchdog reset */
				while (1);
			}
		}
		else
			t = 0;
	}
}
Ejemplo n.º 7
0
static inline void
vCmdProcess (const char *cmdline)
{
	unsigned char cmd, assign;
	unsigned int t;

	cmd = (unsigned char) (*cmdline++);
	if ((cmd >= 'a') && (cmd <= 'z'))
		cmd -= ('a' - 'A');

	switch (*cmdline)
	{
		case '=':
		case ' ':
			assign = 1;
			cmdline++;
			break;
		case 0:
			assign = 0;
			break;
		default:
			assign = 1;
	}

	switch (cmd)
	{
		case 'A':
			vNetworkSetIP (&env.e.ip_host, assign ? cmdline : NULL, "reader");
			break;

		case 'B':
			debug_printf ("rebooting...\n");
			vTaskDelay (1000 / portTICK_RATE_MS);
			/*force watchdog reset */
			while (1);
			break;

		case 'C':
			vNetworkDumpConfig ();
			debug_printf ("System configuration:\n"
						  "\tFirmware Version: v" PROGRAM_VERSION "\n"
						  "\tReader ID: %i\n"
						  "\tRF packet duplicate filter: %s\n\n",
						  env.e.reader_id,
						  env.e.filter_duplicates ? "ON" : "OFF");
			break;

		case 'D':
			if (assign)
			{
				t = atoiEx (cmdline);
				debug_printf ("setting debug level to %u\n", t);
				PtSetDebugLevel (t);
			}
			else
				debug_printf
					("usage: 'd' - set debug level ('d[disable=0, lowest=1]')\n");
			break;

		case 'F':
			if (assign)
			{
				t = atoiEx (cmdline) ? 1 : 0;
				debug_printf ("%s duplicate filtering\n",
							  t ? "enabled" : "disabled");
				env.e.filter_duplicates = t;
			}
			else
				debug_printf
					("usage: 'f' - set RF packet duplicate filtering\n"
					 "             ('f[disable=0, enable=1]')\n");
			break;

		case 'G':
			vNetworkSetIP (&env.e.ip_gateway, assign ? cmdline : NULL,
						   "gateway");
			break;

		case 'I':
			if (assign)
			{
#ifndef ALLOW_READER_ID_CHANGE
				if (env.e.reader_id)
					debug_printf ("ERROR: reader id already set!\n");
				else
				{
#endif /*ALLOW_READER_ID_CHANGE */
					t = atoiEx (cmdline);
					if (t > 0 && t < MAC_IAB_MASK)
						env.e.reader_id = t;
					else
						debug_printf
							("error: reader_id needs to be between 1 and %u (used '%s')\n",
							 MAC_IAB_MASK, cmdline);
#ifndef ALLOW_READER_ID_CHANGE
				}
#endif /*ALLOW_READER_ID_CHANGE */
			}
			debug_printf ("reader_id=%i\n", env.e.reader_id);
			break;

		case 'L':
			if (assign)
			{
				t = atoiEx (cmdline) > 0;
				debug_printf ("red_led=%i\n", t);
				led_set_red (t);
			}
			else
				debug_printf
					("usage: 'l' - red LED ('l[enable=0, disable=1]')\n");
			break;

		case 'M':
			vNetworkSetIP (&env.e.ip_netmask, assign ? cmdline : NULL,
						   "netmask");
			break;

		case 'N':
			if (assign)
				env.e.ip_autoconfig = atoiEx (cmdline);
			debug_printf ("ip_autoconfig=%i\n", env.e.ip_autoconfig);
			break;

		case 'P':
			if (assign)
				env.e.ip_server_port = atoiEx (cmdline);
			debug_printf ("server UDP port=%i\n", env.e.ip_server_port);
			break;

		case 'R':
			/* backup reader id */
			t = env.e.reader_id;
			vNetworkResetDefaultSettings ();
			/* restore reader id */
			env.e.reader_id = t;
			debug_printf ("restoring original settings & reboot...\n");
			vNetworkDumpConfig ();
			vTaskDelay (1000 / portTICK_RATE_MS);
			env_store ();
			/*force watchdog reset */
			while (1);
			break;

		case 'S':
			debug_printf ("storing configuration & reboot...\n");
			vTaskDelay (1000 / portTICK_RATE_MS);
			env_store ();
			/*force watchdog reset */
			while (1);
			break;

		case 'T':
			vNetworkSetIP (&env.e.ip_server, assign ? cmdline : NULL,
						   "server");
			break;

		case 'U':
			debug_printf ("resetting reader to firmware update mode...\n");
			vTaskDelay (1000 / portTICK_RATE_MS);
			env_reboot_to_update ();
			break;

		case 'H':
		case '?':
			vCmdHelp ();
			break;

		case 'X':
			vCmdDumpStatistics ();
			PtStatusRxTx ();
			break;

		default:
			debug_printf ("Unkown CMD:'%c'\n", cmd);
	}
}