void Parser::OnBatchTimer(wxTimerEvent& event) { if (Manager::IsAppShuttingDown()) return; // Current batch parser is already exists if (s_CurrentParser && s_CurrentParser != this) { m_BatchTimer.Start(1000, wxTIMER_ONE_SHOT); return; } bool sendStartParseEvent = false; do { TRACK_THREAD_LOCKER(s_ParserCritical); wxCriticalSectionLocker locker(s_ParserCritical); THREAD_LOCKER_SUCCESS(s_ParserCritical); if (!m_StopWatchRunning) StartStopWatch(); if (!m_PoolTask.empty()) { m_Pool.BatchBegin(); PTVector& v = m_PoolTask.front(); for (PTVector::const_iterator it = v.begin(); it != v.end(); ++it) m_Pool.AddTask(*it, true); m_PoolTask.pop(); m_Pool.BatchEnd(); return; } else if ( !m_PriorityHeaders.empty() || !m_BatchParseFiles.empty() || !m_PredefinedMacros.IsEmpty() ) { AddParseThread* thread = new AddParseThread(*this); m_Pool.AddTask(thread, true); // Have not done any batch parsing if (s_CurrentParser) return; else { s_CurrentParser = this; m_StopWatch.Start(); // reset timer sendStartParseEvent = true; } } } while (false); if (sendStartParseEvent) ProcessParserEvent(m_ParsingType, idParserStart); else ProcessParserEvent(ptUndefined, idParserStart, _T("Unexpected behavior!")); }
void SystemSensorInit(unsigned int time) { //CONFIG ADC adcinit(); //CONFIG GP_BUTTON ConfigGPButton(); //CONFIG LEDS //led 0 ConfigLED0(); //led 1 ConfigLED1(); //CONFIG 12V SWITCH. NO LONGER USED IN MCN V2.0 //Config12V(); conv_watch_in_sys = StartStopWatch(time); }
void Connection::UpdateCallState(USART_TypeDef *shudouki){ if(doCall){ if(!calling){ USART_Print(shudouki,"hello;"); ResetStopWatch(stopWatchNumber); StartStopWatch(stopWatchNumber); calling = true; }else{ if(replyed){ calling = false; connected = true; replyed = false; }else if(GetStopWatchMillis(stopWatchNumber) > timeOut){ connected = false; calling = false; } } }else{ calling = 0; } }
void CANSetup() { InitECanaGpio(); InitECana(); ClearMailBoxes(); ECanaShadow.CANMIM.all = 0; ECanaShadow.CANMIL.all = 0; ECanaShadow.CANGIM.all = 0; ECanaShadow.CANGAM.bit.AMI = 0; //must be standard ECanaShadow.CANGIM.bit.I1EN = 1; // enable I1EN ECanaShadow.CANMD.all = ECanaRegs.CANMD.all; ECanaShadow.CANME.all = ECanaRegs.CANME.all; //todo USER: Node specifc CAN setup EALLOW; // create mailbox for all Receive and transmit IDs // MBOX0 - MBOX31 //Command RECEIVE ECanaMboxes.MBOX0.MSGID.bit.IDE = 0; //standard id ECanaMboxes.MBOX0.MSGID.bit.AME = 0; // all bit must match ECanaMboxes.MBOX0.MSGID.bit.AAM = 0; // no RTR AUTO TRANSMIT ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8; ECanaMboxes.MBOX0.MSGID.bit.STDMSGID = COMMAND_ID; ECanaShadow.CANMD.bit.MD0 = 1; //receive ECanaShadow.CANME.bit.ME0 = 1; //enable ECanaShadow.CANMIM.bit.MIM0 = 1; //int enable ECanaShadow.CANMIL.bit.MIL0 = 1; // Int.-Level MB#0 -> I1EN //Heart TRANSMIT ECanaMboxes.MBOX1.MSGID.bit.IDE = 0; //standard id ECanaMboxes.MBOX1.MSGID.bit.AME = 0; // all bit must match ECanaMboxes.MBOX1.MSGID.bit.AAM = 1; //RTR AUTO TRANSMIT ECanaMboxes.MBOX1.MSGCTRL.bit.DLC = 8; ECanaMboxes.MBOX1.MSGID.bit.STDMSGID = HEARTBEAT_ID; ECanaShadow.CANMD.bit.MD1 = 0; //transmit ECanaShadow.CANME.bit.ME1 = 1; //enable //SOMETHING ODD ABOUT ORDER HERE AND RTR BIT... //adc TRANSMIT ECanaMboxes.MBOX2.MSGID.bit.IDE = 0; //standard id ECanaMboxes.MBOX2.MSGID.bit.AME = 0; // all bit must match ECanaMboxes.MBOX2.MSGID.bit.AAM = 1; //RTR AUTO TRANSMIT ECanaMboxes.MBOX2.MSGCTRL.bit.DLC = 8; ECanaMboxes.MBOX2.MSGID.bit.STDMSGID = ADC_ID; ECanaShadow.CANMD.bit.MD2 = 0; //transmit ECanaShadow.CANME.bit.ME2 = 1; //enable //gp_button TRANSMIT ECanaMboxes.MBOX3.MSGID.bit.IDE = 0; //standard id ECanaMboxes.MBOX3.MSGID.bit.AME = 0; // all bit must match ECanaMboxes.MBOX3.MSGID.bit.AAM = 1; //RTR AUTO TRANSMIT ECanaMboxes.MBOX3.MSGCTRL.bit.DLC = 8; ECanaMboxes.MBOX3.MSGID.bit.STDMSGID = GP_BUTTON_ID; ECanaShadow.CANMD.bit.MD3 = 0; //transmit ECanaShadow.CANME.bit.ME3 = 1; //enable ECanaRegs.CANGAM.all = ECanaShadow.CANGAM.all; ECanaRegs.CANGIM.all = ECanaShadow.CANGIM.all; ECanaRegs.CANMIM.all = ECanaShadow.CANMIM.all; ECanaRegs.CANMIL.all = ECanaShadow.CANMIL.all; ECanaRegs.CANMD.all = ECanaShadow.CANMD.all; ECanaRegs.CANME.all = ECanaShadow.CANME.all; ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; ECanaShadow.CANMC.bit.STM = 0; // No self-test mode ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; EDIS; //ENABLE PIE INTERRUPTS IER |= M_INT9; PieCtrlRegs.PIEIER9.bit.INTx6= 1; can_watch = StartStopWatch(SENDCAN_STOPWATCH); }