/***************************************************************************** * Function HandleTestConfig * DESCRIPTION: *****************************************************************************/ void GeniAppTestMode::HandleTestConfig(U8 new_config) { static mpc::display::DisplayController::TEST_SCREEN_TYPE display_test_picture_old = mpc::display::DisplayController::NORMAL; if (TEST_BIT_HIGH(new_config, DIG_OUT_TEST_BIT)) { IobComDrv::GetInstance()->SetTestModeFlag(); } else { IobComDrv::GetInstance()->ClearTestModeFlag(); } if (TEST_BIT_HIGH(new_config, LEDS_ON_OFF_TEST_BIT)) { GPio::GetInstance()->SetLedTest(true); } else { GPio::GetInstance()->SetLedTest(false); } if (TEST_BIT_HIGH(new_config, TEST_PICTURE_TEST_BIT)) { if (display_test_picture_old != G_ge_display_test_picture) { mpc::display::DisplayController::GetInstance()->TestScreen((mpc::display::DisplayController::TEST_SCREEN_TYPE)G_ge_display_test_picture); display_test_picture_old = (mpc::display::DisplayController::TEST_SCREEN_TYPE)G_ge_display_test_picture; } } else { if (display_test_picture_old != mpc::display::DisplayController::NORMAL) { mpc::display::DisplayController::GetInstance()->TestScreen(mpc::display::DisplayController::NORMAL); display_test_picture_old = mpc::display::DisplayController::NORMAL; } } if (TEST_BIT_HIGH(new_config, UART0_LB_TEST_BIT)) { StartUartLoopBackTest(); } else { StopUartLoopBackTest(); } }
/** * SPI task */ void spi_task(void *pvParameters) { while (1) { if(TEST_BIT_HIGH(SSI0_SR_R, 3)) { // Receive full led_red_toggle(); } if(TEST_BIT_LOW(SSI0_SR_R, 1)) { // Send full led_green_toggle(); } spi_send_task(); spi_receive_task(); vTaskDelay(10); } }
/***************************************************************************** * Function HandleGeniTestData * DESCRIPTION: *****************************************************************************/ void GeniAppTestMode::HandleGeniTestData(void) { static bool firmware_update_started = false; static bool io_simulation_mode_enable = false; G_ge_io_simulation_status = mpIOSimulationStatus->GetValue(); /* Handle G_ge_test_config */ HandleTestConfig(G_ge_test_config); if (G_ge_io_simulation_mode_enable != IO_SIMULATION_ENABLED) { if (io_simulation_mode_enable == true) { mpIOSimulationDisable->SetEvent(); HandleIOSimulation(); // To clear simulation data io_simulation_mode_enable = false; } // Normal test functions /* Handle G_ge_dig_out */ IobComDrv::GetInstance()->SetDigitalOutputTestMode(G_ge_dig_out_ref); // Display mpDisplayContrast->SetValueAsPercent(G_ge_display_contrast/2.54f); mpDisplayBacklight->SetValueAsPercent(G_ge_display_backlight/2.54f); } else { // Handle IO simulation if (io_simulation_mode_enable == false) { mpIOSimulationEnable->SetEvent(); io_simulation_mode_enable = true; } HandleIOSimulation(); } /* Handle G_ge_error_log_control */ if (TEST_BIT_HIGH(G_ge_error_log_control, 0)) //Reset ErrorLog { SET_BIT_LOW(G_ge_error_log_control, 0); ErrorLog::GetInstance()->ResetErrorLog(); } /* Handle G_ge_firmware_update_state */ if (G_ge_firmware_update_state == FIRMWARE_UPDATE_STATE_START && firmware_update_started == false) { mpFirmwareUpdateState->SetValue(FIRMWARE_UPDATE_STATE_START); firmware_update_started = true; } else if (G_ge_firmware_update_state == FIRMWARE_UPDATE_STATE_STARTBL && firmware_update_started == false) { mpFirmwareUpdateState->SetValue(FIRMWARE_UPDATE_STATE_STARTBL); firmware_update_started = true; } G_ge_firmware_update_state = mpFirmwareUpdateState->GetValue(); if (G_ge_firmware_update_state != FIRMWARE_UPDATE_STATE_START && G_ge_firmware_update_state != FIRMWARE_UPDATE_STATE_STARTBL) { firmware_update_started = false; } /* Handle G_ge_test_loop_displays */ if (G_ge_test_loop_displays == 1) { G_ge_test_loop_displays = 0; mpc::display::DisplayController::GetInstance()->TestLoopDisplays(); } /* Handle G_ge_emwin_key_input */ else if (G_ge_emwin_key_input != 255) { GUI_StoreKey(G_ge_emwin_key_input); G_ge_emwin_key_input = 255; } if (mpIobBoardId.IsUpdated()) { G_ge_iob_board_id = mpIobBoardId->GetValue(); } if (mpIobTemperature.IsUpdated()) { G_ge_iob_temperature = (U16)(mpIobTemperature->GetValue() + 273.15f + 0.5f); // K } if (mpIobPressure.IsUpdated()) { G_ge_iob_pressure = (U16)(mpIobPressure->GetValue()*0.01f + 0.5f); // Scale from Pa to mbar; } if (mpIobBatteryVoltage.IsUpdated()) { G_ge_iob_battery_voltage = (U16)(mpIobBatteryVoltage->GetValue()*1000.0f + 0.5f); // Scale from V to mV } if (mpIobBusModulePressent.IsUpdated()) { G_ge_iob_bus_module_pressent = mpIobBusModulePressent->GetValue(); } if (mpIobSupplyStatus.IsUpdated()) { G_ge_iob_supply_status = mpIobSupplyStatus->GetValue(); } if (mpIobBatteryStatus.IsUpdated()) { G_ge_iob_battery_status = mpIobBatteryStatus->GetValue(); } if (mpAnalogInput0.IsUpdated()) { G_ge_ana_in_raw_0 = mpAnalogInput0->GetValue(); } if (mpAnalogInput1.IsUpdated()) { G_ge_ana_in_raw_1 = mpAnalogInput1->GetValue(); } if (mpAnalogInput2.IsUpdated()) { G_ge_ana_in_raw_2 = mpAnalogInput2->GetValue(); } if (mpAnalogInput3.IsUpdated()) { G_ge_ana_in_raw_3 = mpAnalogInput3->GetValue(); } if (mpAnalogInput4.IsUpdated()) { G_ge_ana_in_raw_4 = mpAnalogInput4->GetValue(); } if (mpAnalogInput5.IsUpdated()) { G_ge_ana_in_raw_5 = mpAnalogInput5->GetValue(); } if (mpDigitalInput.IsUpdated()) { G_ge_dig_in = mpDigitalInput->GetValue(); } }