示例#1
0
//LED control function
static int _F1_Handler (void)
{
	if(NumberOfArguments() == 2)
	{
		Board_LED_Set(argAsInt(1), argAsInt(2));
	}
	else
	{
		if(argAsInt(1) == 1)
		{
			//Turn on all leds
			Board_LED_Set(1, 1);
			Board_LED_Set(2, 1);
			Board_LED_Set(3, 1);
		}
		else
		{
			//Turn off all leds
			Board_LED_Set(1, 0);
			Board_LED_Set(2, 0);
			Board_LED_Set(3, 0);
		}

	}
	return 0;
}
示例#2
0
//Write a register
static int _F6_Handler (void)
{
	uint8_t RegToWrite = argAsInt(1);
	uint32_t DataToWrite = argAsInt(2);

	if(tcs3414_WriteReg(RegToWrite, DataToWrite) == 0)
	{
		printf_P(PSTR("OK\n"));
	}
	else
	{
		printf_P(PSTR("Error\n"));
	}

	return 0;
}
示例#3
0
RoopList ResizeImage::execute(RoopMachine &machine, RoopList arguments) {
    const size_t argsize = arguments.size();
    cv::Mat newImage;
    cv::Mat original = arguments[0].resultMat;

    int newSizeX;
    int newSizeY;

    if (argsize < 2) {
        machine.exceptionBitSet = true;
        return RoopList();
    }
    else if (argsize == 2) {
        newSizeX = argAsInt(arguments[1]);
        newSizeY = argAsInt(arguments[1]);
    } else {
        newSizeX = argAsInt(arguments[1]);
        newSizeY = argAsInt(arguments[2]);
    }

    cv::resize(original, newImage, cv::Size(newSizeX, newSizeY));
    return fromMatrix(newImage);
}
示例#4
0
//Set time on the internal timer
static int _F4_Handler (void)
{
	TimeAndDate CurrentTime;
	//<year> <month> <day> <dow> <hr> <min> <sec>
	CurrentTime.year	= argAsInt(1);
	CurrentTime.month	= argAsInt(2);
	CurrentTime.day		= argAsInt(3);
	CurrentTime.dow		= argAsInt(4);
	CurrentTime.hour	= argAsInt(5);
	CurrentTime.min		= argAsInt(6);
	CurrentTime.sec		= argAsInt(7);
	SetTime(CurrentTime);
	printf_P(PSTR("Setting %02u/%02u/%04u %02u:%02u:%02u"), CurrentTime.month, CurrentTime.day, CurrentTime.year, CurrentTime.hour, CurrentTime.min, CurrentTime.sec);
	
	printf_P(PSTR("......Done\n"));
	return 0;
}
示例#5
0
//Read a register
static int _F3_Handler (void)
{
	uint8_t DataToReceive = 0;
	uint8_t DataToSend = argAsInt(1);
	uint8_t stat;
	
	stat = tcs3414_ReadReg(DataToSend, &DataToReceive);
	
	if(stat == 0)
	{
		printf_P(PSTR("reg[0x%02X]: 0x%02X\n"), DataToSend, DataToReceive);
	}
	else
	{
		printf_P(PSTR("Error: 0x%02X\n"), stat);
	}
	
	return 0;
}
示例#6
0
//Humidity sensor functions
static int _F11_Handler (void)
{
	uint8_t temp;
	uint8_t stat;
	uint8_t InputCmd	= argAsInt(1);
	uint8_t InputVal	= argAsInt(2);
	int16_t RecievedData;
	
	uint16_t SNA;
	uint32_t SNB;
	uint16_t SNC;
	
	if(InputCmd == 1)
	{
		stat = SHT25_ReadUserReg(&temp);
		if(stat != SOFT_I2C_STAT_OK)
		{
			printf_P(PSTR("ERROR: 0x%02X\n"), stat);
		}
		else
		{
			printf_P(PSTR("REG: 0x%02X\n"), temp);
		}
		return 0;
	}
	else if(InputCmd == 2)
	{
		printf_P(PSTR("Writing 0x%02X..."), InputVal);
		stat = SHT25_WriteUserReg(InputVal);
		printf_P(PSTR("0x%02X\n"), stat);
		return 0;
	}
	else if(InputCmd == 3)
	{
		printf_P(PSTR("Device reset\n"));
		SHT25_Reset();
	}
	else if(InputCmd == 4)
	{
		stat = SHT25_ReadTemp(&RecievedData);
		if(stat == SHT25_RETURN_STATUS_OK)
		{
			printf_P(PSTR("Temp %d.%02u C\n"), RecievedData/100, RecievedData%100);
		}
		else if(stat == SHT25_RETURN_STATUS_CRC_ERROR)
		{
			printf_P(PSTR("CRC Error\n"));
		}
		else
		{
			printf_P(PSTR("Timeout\n"));
		}
	}
	else if(InputCmd == 5)
	{
		stat = SHT25_ReadRH(&RecievedData);
		if(stat == SHT25_RETURN_STATUS_OK)
		{
			printf_P(PSTR("RH: %u.%02u%%\n"), RecievedData/100, RecievedData%100);
		}
		else if(stat == SHT25_RETURN_STATUS_CRC_ERROR)
		{
			printf_P(PSTR("CRC Error\n"));
		}
		else
		{
			printf_P(PSTR("Timeout\n"));
		}
	}
	else if(InputCmd == 6)
	{
		stat = SHT25_ReadID(&SNA, &SNB, &SNC);
		if(stat == SHT25_RETURN_STATUS_OK)
		{
			printf_P(PSTR("SN: 0x%04X%08lX%04X\n"), SNA, SNB, SNC);
		}
		else if(stat == SHT25_RETURN_STATUS_CRC_ERROR)
		{
			printf_P(PSTR("CRC Error\n"));
		}
		else
		{
			printf_P(PSTR("I2C error\n"));
		}
	}
	
	return 0;
}
示例#7
0
//Read a register from the memory
static int _F9_Handler (void)
{
	uint8_t RegToRead 		= argAsInt(1);
	uint8_t BufferNumber 	= argAsInt(2);
	uint16_t Addr 			= argAsInt(3);
	uint8_t DataBuffer[10];
	
	if(RegToRead == 1)
	{
		AT45DB321D_Select();
	}
	else if(RegToRead == 0)
	{
		AT45DB321D_Deselect();
	}
	else if(RegToRead == 2)	//Read status
	{
		//SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);		
		InitSPIMaster(0,0);		//Mode 0,0 is good
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_ReadStatus());
	}
	else if(RegToRead == 3)	//Read IDs
	{
		//SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);		
		InitSPIMaster(0,0);		//Mode 0,0 is good
		AT45DB321D_Select();
		SPISendByte(AT45DB321D_CMD_READ_DEVICE_ID);
		printf_P(PSTR("ID[1]: 0x%02X\n"), SPISendByte(0x00));
		printf_P(PSTR("ID[2]: 0x%02X\n"), SPISendByte(0x00));
		printf_P(PSTR("ID[3]: 0x%02X\n"), SPISendByte(0x00));
		printf_P(PSTR("ID[4]: 0x%02X\n"), SPISendByte(0x00));
		AT45DB321D_Deselect();
	}
	else if(RegToRead == 4)	//Read bytes from buffer
	{
		printf_P(PSTR("Reading 5 bytes from buffer %u at address 0x%04X\n"), BufferNumber, Addr);
		AT45DB321D_BufferRead(BufferNumber, Addr, DataBuffer, 5);
		printf_P(PSTR("0: 0x%02X\n"), DataBuffer[0]);
		printf_P(PSTR("1: 0x%02X\n"), DataBuffer[1]);
		printf_P(PSTR("2: 0x%02X\n"), DataBuffer[2]);
		printf_P(PSTR("3: 0x%02X\n"), DataBuffer[3]);
		printf_P(PSTR("4: 0x%02X\n"), DataBuffer[4]);
	}
	
	else if(RegToRead == 5)	//write bytes to buffer
	{
		printf_P(PSTR("writing 5 bytes to buffer %u at address 0x%04X\n"), BufferNumber, Addr);
		DataBuffer[0] = 0xAE;
		DataBuffer[1] = 0x14;
		DataBuffer[2] = 0x9A;
		DataBuffer[3] = 0x22;
		DataBuffer[4] = 0x17;
		AT45DB321D_BufferWrite(BufferNumber, Addr, DataBuffer, 5);
	}
	
	else if(RegToRead == 6)	//Copy page to buffer
	{
		printf_P(PSTR("Copy page 0x%04X to buffer %u\n"), Addr, BufferNumber);
		AT45DB321D_CopyPageToBuffer(BufferNumber, Addr);
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_WaitForReady());
	}
	
	else if(RegToRead == 7)	//Copy buffer to page
	{
		printf_P(PSTR("Copy buffer %u to page 0x%04X\n"), BufferNumber, Addr);
		AT45DB321D_CopyBufferToPage(BufferNumber, Addr);
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_WaitForReady());
	}
	
	else if(RegToRead == 8)	//Erase page
	{
		printf_P(PSTR("Erase page 0x%04X\n"), Addr);
		AT45DB321D_ErasePage(Addr);
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_WaitForReady());
	}
	
	else if(RegToRead == 9)	//init datalogger
	{
		 Datalogger_Init(DATALOGGER_INIT_APPEND | DATALOGGER_INIT_RESTART_IF_FULL);
	}
	
	else if (RegToRead == 10)
	{
		Datalogger_AddDataSet(DataBuffer);
	}
	
	else if (RegToRead == 11)
	{
		Datalogger_SaveDataToFlash();
	}
	
	else if (RegToRead == 12)
	{
		Datalogger_ReadBackData(5);
	}
	
	return 0;
}
示例#8
0
//LED control function
static int _F1_Handler (void)
{
	LED((uint8_t)argAsInt(1));
	return 0;
}