Example #1
0
/*****************************************************************************
 * 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);
    }
}
Example #3
0
/*****************************************************************************
 * 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();
  }
}