Esempio n. 1
0
static void REF_StateMachine(void) {
  int i;

  switch (refState) {
    case REF_STATE_INIT:
      SHELL_SendString((unsigned char*)"INFO: No calibration data present.\r\n");
      refState = REF_STATE_NOT_CALIBRATED;
      break;
      

      // SW1 pressen, dann kommt er da rein.
    case REF_STATE_NOT_CALIBRATED:
      REF_MeasureRaw(SensorRaw);
      /*! \todo Add a new event to your event module...*/
      if (EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) {
        EVNT_ClearEvent(EVNT_REF_START_STOP_CALIBRATION);
        refState = REF_STATE_START_CALIBRATION;
        break;
      }
      break;
    
    case REF_STATE_START_CALIBRATION:
      SHELL_SendString((unsigned char*)"start calibration...\r\n");
      for(i=0;i<REF_NOF_SENSORS;i++) {
        SensorCalibMinMax.minVal[i] = MAX_SENSOR_VALUE;
        SensorCalibMinMax.maxVal[i] = 0;
        SensorCalibrated[i] = 0;
      }
      refState = REF_STATE_CALIBRATING;
      break;
    
    case REF_STATE_CALIBRATING:
      REF_CalibrateMinMax(SensorCalibMinMax.minVal, SensorCalibMinMax.maxVal, SensorRaw);
      if (EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) {
        EVNT_ClearEvent(EVNT_REF_START_STOP_CALIBRATION);
        refState = REF_STATE_STOP_CALIBRATION;
      }
      break;
    
    case REF_STATE_STOP_CALIBRATION:
      SHELL_SendString((unsigned char*)"...stopping calibration.\r\n");
      refState = REF_STATE_READY;
      break;
        
    case REF_STATE_READY:
      REF_Measure();
      if (EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) {
        EVNT_ClearEvent(EVNT_REF_START_STOP_CALIBRATION);
        refState = REF_STATE_START_CALIBRATION;
      }
      break;
  } /* switch */
}
Esempio n. 2
0
void APP_EvntHandler(EVNT_Handle event) {
  switch(event) {
  case EVNT_STARTUP:
#if !PL_CONFIG_EVENTS_AUTO_CLEAR
      EVNT_ClearEvent(EVNT_STARTUP);
    #endif
	  LED_Test();
	  break;
  default:
      #if PL_CONFIG_HAS_KEYS
	  APP_KeyEvntHandler(event);
      #endif

	  break;
  }
}
Esempio n. 3
0
static void REF_StateMachine(void) {
  int i;

  switch (refState) {
    case REF_STATE_INIT:
#if PL_HAS_CONFIG_NVM
    	/* If Calibration Data are saved, read it */
    	for (i = 0; i<REF_NOF_SENSORS;i++){
    		SensorCalibMinMax.minVal[i] = *((uint16_t*)NVMC_GetReflectanceData()+i);
    		SensorCalibMinMax.minVal[i+REF_NOF_SENSORS] = *((uint16_t*)NVMC_GetReflectanceData()+(i+REF_NOF_SENSORS));
    	}
      SHELL_SendString((unsigned char*)"INFO: Loaded calibration data from FLASH...Gordon.\r\n");
      refState = REF_STATE_READY;
#else
      SHELL_SendString((unsigned char*)"INFO: No calibration data present.\r\n");
      refState = REF_STATE_NOT_CALIBRATED;
      break;
#endif
    case REF_STATE_NOT_CALIBRATED:

      REF_MeasureRaw(SensorRaw);

      if (EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) {
        EVNT_ClearEvent(EVNT_REF_START_STOP_CALIBRATION);
        refState = REF_STATE_START_CALIBRATION;
        break;
      }
      break;

    case REF_STATE_START_CALIBRATION:
      SHELL_SendString((unsigned char*)"start calibration...\r\n");
      for(i=0;i<REF_NOF_SENSORS;i++) {
        SensorCalibMinMax.minVal[i] = MAX_SENSOR_VALUE;
        SensorCalibMinMax.maxVal[i] = 0;
        SensorCalibrated[i] = 0;
      }
      refState = REF_STATE_CALIBRATING;
      break;

    case REF_STATE_CALIBRATING:
      REF_CalibrateMinMax(SensorCalibMinMax.minVal, SensorCalibMinMax.maxVal, SensorRaw);
      if (EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) {
        EVNT_ClearEvent(EVNT_REF_START_STOP_CALIBRATION);
        refState = REF_STATE_STOP_CALIBRATION;
      }
      break;
    
    case REF_STATE_STOP_CALIBRATION:

    	/* Save Calibration Data */
      NVMC_SaveReflectanceData(&SensorCalibMinMax, sizeof(SensorCalibMinMax));


      SHELL_SendString((unsigned char*)"...stopping calibration. Files written to Flash\r\n");
      refState = REF_STATE_READY;
      break;
        
    case REF_STATE_READY:
      REF_Measure();
      if (EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION)) {
        EVNT_ClearEvent(EVNT_REF_START_STOP_CALIBRATION);
        refState = REF_STATE_START_CALIBRATION;
      }
      break;
  } /* switch */
}