Beispiel #1
0
void intkheat_control(struct ecudata_t *d)
{
 if (!d->param.tmp_use)
 {
  IOCFG_INIT(IOP_INTK_HEAT, 0);
  return;
 }

 switch(ih.state)
 {
  case 0: //turn on heating and start timer
   IOCFG_SET(IOP_INTK_HEAT, (d->sens.temperat < TEMPERATURE_MAGNITUDE(HEATING_T_OFF)));   // control heating
   ih.strt_t1 = s_timer_gtc();
   ih.state = 1;
   break;

  case 1: //wait 10 minutes and turn off heating or it will be turned off immediatelly if crankshaft begin to revolve
   if (((s_timer_gtc() - ih.strt_t1) >= HEATING_TIME) || ckps_is_cog_changed())
   {
    IOCFG_SET(IOP_INTK_HEAT, 0);                                                          // turn off heating
    ih.state = 2;
   }
   break;

  case 2: //control heating if engine is running, otherwise turn it off
   if (d->st_block)
   { //engine is running
    IOCFG_SET(IOP_INTK_HEAT, (d->sens.temperat < TEMPERATURE_MAGNITUDE(HEATING_T_OFF)));  // control heating
   }
   else
    IOCFG_SET(IOP_INTK_HEAT, 0);
   break;
 }
}
Beispiel #2
0
int16_t calc_startup_corr(struct ecudata_t* d)
{
 switch(chks.strt_mode)
 {
  case 0:  //starting
   if (d->st_block)
   {
    chks.strt_t1 = s_timer_gtc();
    chks.strt_mode = 1;
   }
   break; //use correction
  case 1:
   if ((s_timer_gtc() - chks.strt_t1) >= STARTUP_CORR_TIME)
    chks.strt_mode = 2;
   break; //use correction
  case 2:
   if (!d->st_block)
    chks.strt_mode = 0; //engine is stopped, so use correction again
   return 0; //do not use correction
 }

 return (((int32_t)d->param.sm_steps) * STARTUP_CORR_VAL) / 200;
}
Beispiel #3
0
uint8_t bt_set_namepass(struct ecudata_t *d)
{
 switch(bts.btnp_mode)
 {
  //wait some time before we start to send first AT command
  case 0:
   ++bts.btnp_mode;
   bts.strt_t1 = s_timer_gtc();    //set timer
   return 0;
  case 1:
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
    ++bts.btnp_mode;
   return 0;

  //Send command to change name
  case 2:
   append_tx_buff_with_at_name_cmd(d->bt_name);
   ++bts.btnp_mode;
   bts.strt_t1 = s_timer_gtc();    //set timer
   break;                          //send!
  case 3:                          //wait some time
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
    ++bts.btnp_mode;
   return 0;

  //Send command to change password (pin)
  case 4:
   append_tx_buff_with_at_pass_cmd(d->bt_pass);
   ++bts.btnp_mode;
   bts.strt_t1 = s_timer_gtc();    //set timer
   break;                          //send!
  case 5:                          //wait some time
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
   {
    ++bts.btnp_mode;
    d->bt_name[0] = 0, d->bt_pass[0] = 0;
    return 1; //finished!
   }
   return 0;

  default:
   return 1;  //stopped
 }

 //Start background process of packet sending
 uart_begin_send();
 return 0;
}
Beispiel #4
0
uint8_t bt_set_baud(struct ecudata_t *d, uint16_t baud)
{
 if (255 == bts.btbr_mode)
  return 1; //not enabled/stopped

 switch(bts.btbr_mode)
 {
  //wait some time before we start to send first AT command
  case 0:
   ++bts.btbr_mode;
   bts.strt_t1 = s_timer_gtc();    //set timer
   return 0;
  case 1:
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_STRT_TIME)
    ++bts.btbr_mode;
   return 0;

  //Send command on 9600 baud
  case 2:
   SET_BRR(CBR_9600);
   append_tx_buff_with_at_baud_cmd(baud);
   ++bts.btbr_mode;
   bts.strt_t1 = s_timer_gtc();    //set timer
   break;
  case 3:                          //wait some time
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
    ++bts.btbr_mode;
   return 0;

  //Send command on 19200 baud
  case 4:
   if (!uart_is_sender_busy())
   {
    SET_BRR(CBR_19200);
    append_tx_buff_with_at_baud_cmd(baud);
    ++bts.btbr_mode;
    bts.strt_t1 = s_timer_gtc();   //set timer
    break;
   }
   else return 0;                  //busy
  case 5:                          //wait some time
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
    ++bts.btbr_mode;
   return 0;

  //Send command on 38400 baud
  case 6:
   if (!uart_is_sender_busy())
   {
    SET_BRR(CBR_38400);
    append_tx_buff_with_at_baud_cmd(baud);
    ++bts.btbr_mode;
    bts.strt_t1 = s_timer_gtc();   //set timer
    break;
   }
   else return 0;                  //busy
  case 7:                          //wait some time
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
    ++bts.btbr_mode;
   return 0;

  //Send command on 57600 baud
  case 8:
   if (!uart_is_sender_busy())
   {
    SET_BRR(CBR_57600);
    append_tx_buff_with_at_baud_cmd(baud);
    ++bts.btbr_mode;
    bts.strt_t1 = s_timer_gtc();   //set timer
    break;
   }
   else return 0;                  //busy
  case 9:                          //wait some time
   if ((s_timer_gtc() - bts.strt_t1) >= AT_COMMAND_TIME)
    ++bts.btbr_mode;
   return 0;

  //Finishing...
  case 10:
   if (!uart_is_sender_busy())
   {
    SET_BRR(baud);                 //return old baud rate back
    ++bts.btbr_mode;
    //reset flag and save parameters
    d->param.bt_flags&=~(1 << 1);
    sop_set_operation(SOP_SAVE_PARAMETERS);
   }
   return 0;

  default:
   return 1; //stopped
 }

 //Start background process of packet sending
 uart_begin_send();
 return 0;
}