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; } }
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; }
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; }
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; }