//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; }
//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; }
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); }
//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; }
//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; }
//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; }
//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; }
//LED control function static int _F1_Handler (void) { LED((uint8_t)argAsInt(1)); return 0; }