コード例 #1
0
ファイル: parser.cpp プロジェクト: stahta01/codeblocks_r7456
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!"));
}
コード例 #2
0
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);
}
コード例 #3
0
ファイル: base_flow.cpp プロジェクト: AOKI-Shuhei/Robocon2014
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;
	}
}
コード例 #4
0
ファイル: can.c プロジェクト: lordnathan0/F28035_Template
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);
}