Пример #1
0
void MicroSettingsDlg::slotCreatePinMap()
{
	//m_pNewPinMappingDlg = new KDialog( this, "New Pin Mapping Dlg", true, i18n("New Pin Mapping"), Ok | Cancel );
    m_pNewPinMappingDlg = new KDialog( this);
    m_pNewPinMappingDlg->setName( "New Pin Mapping Dlg" );
    m_pNewPinMappingDlg->setModal( true );
    m_pNewPinMappingDlg->setCaption(i18n("New Pin Mapping"));
    m_pNewPinMappingDlg->setButtons( KDialog::Ok | KDialog::Cancel );
	m_pNewPinMappingDlg->setButtonText( Ok, i18n("Create") );
	m_pNewPinMappingWidget = new NewPinMappingWidget( m_pNewPinMappingDlg );
	m_pNewPinMappingDlg->setMainWidget( m_pNewPinMappingWidget );
	
	PinMappingNameValidator * validator = new PinMappingNameValidator( this );
	m_pNewPinMappingWidget->nameEdit->setValidator( validator );
	
	connect( m_pNewPinMappingWidget->nameEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckNewPinMappingName(const QString &)) );
	slotCheckNewPinMappingName( 0 );
	
	int accepted = m_pNewPinMappingDlg->exec();
	unsigned selectedType = m_pNewPinMappingWidget->typeCombo->currentItem();
	QString name = m_pNewPinMappingWidget->nameEdit->text();
	
	delete m_pNewPinMappingDlg;
	delete validator;
	m_pNewPinMappingDlg = 0l;
	m_pNewPinMappingWidget = 0l;
	if ( accepted != QDialog::Accepted )
		return;
	
	PinMapping::Type type = PinMapping::Invalid;
		
	switch ( selectedType )
	{
		case 0:
			type = PinMapping::SevenSegment;
			break;
				
		case 1:
			type = PinMapping::Keypad_4x3;
			break;
				
		case 2:
			type = PinMapping::Keypad_4x4;
			break;
				
		default:
			kError() << k_funcinfo << "Unknown selected type " << type << endl;
			break;
	}
	
	m_pinMappings[name] = PinMapping( type );
	m_pWidget->pinMapCombo->insertItem( name );
	//m_pWidget->pinMapCombo->setCurrentItem( m_pWidget->pinMapCombo->count() - 1 );
    m_pWidget->pinMapCombo->setCurrentItem( name );
	
	updatePinMapButtons();
	slotModifyPinMap();
}
Пример #2
0
int main (void)
{
//	_DOZE = 0;
   	_RCDIV = 0;
   	//pin mapping
    PinMapping();
    //Initialize the outputs
	OutputInit();
	// Set up the timer
	TimerInit();
	_system_flags.uart_hi_speed = 1;
	if (_system_flags.uart_hi_speed) {
		// divisor=8 for 460800bps
		initUART(8);
	} else {
    	initUART(34);
    }
	//Initialize the system
	SYSTEMInit();	
	ADCinit();	
	//Initialize the button processes	
	BtnInit();
	//Initialize the system flags
	FLAGInit();
	// variable to hold number of times we've passed the 50 msec counter without completing a UART receive
	char receivedCtr=0;

	while (1)
	{
		// check continuity to PIC
		if(uartDataAvailable_receive )
		{
			// set a flag if we're inside a receive packet
			// then, in 50msec timer, if we've not received anything after ~150-200msec, 
			// clear it and tell uart_getPacket to reset state
			_system_flags.PacketisBeingReceived=1;
	        uart_getPacket(0);
            uartDataAvailable_receive = 0;
		}
		if(_system_flags.TwelveBitflag)
		{
			if(_system_flags.EndofFrameflag)
			{
				// if stopped, and all data already pushed out, turn off HTPA
				if(_system_flags.Stopflag)
				{
					while (TX_Sent_Counter!=TX_ToSend_Counter);
					TurnOffHTPA();
					IEC0bits.U1TXIE = 1; // re-enable UART TX ISR
					_system_flags.Standbyflag=1;
					_system_flags.RefreshStatusflag = 1;
					_system_flags.Stopflag = 0;
				}
				_system_flags.EndofFrameflag = 0;
			}
		}
		if (ms_flag)// 1ms loop
		{	
			BtnProcessEvents();  	// Button debounce processing
			StateMachine();	
			if((_button_press.SW1DBB)&&(!_system_flags.SW1released))
			{
				SleepCounter = SLEEPTIME;
				LaserOutlat = ~LaserOutlat;
				LaserCounter=10;
				ButtonTimer = 3;
				_system_flags.SW1released = 1;
			}
			if( _system_flags.PacketisReadyforParse)
			{
				_system_flags.PacketisBeingReceived=0;
				receivedCtr=0;
				_system_flags.PacketisReadyforParse = 0;
				ParsingRXMsg();	
			}    
			if (TimeBase50ms())   //increment and check for 50ms software timer
			{
				if (_system_flags.PacketisBeingReceived)
				{
					// increment counter
					receivedCtr++;
					if (receivedCtr>2)
					{
						receivedCtr=0;
						// reset uart_getPacket
						_system_flags.PacketisBeingReceived=0;
						uart_getPacket(1);
					}
				}
			}//end of 50ms interval
    		if (TimeBase100ms())   //increment and check for 100ms software timer
    		{
    			// if we're in standby, and the change UART flag has been set, change it
    			if (state==STATE_STANDBY)
    			{
	    			if (_system_flags.ChangeUARTSpeed)
	          		{
		          		if (_system_flags.PacketisBeingReceived)
				    	{
				    		uart_getPacket(1);
				    	}
						_system_flags.ChangeUARTSpeed=0;
						// simply toggle UART speed if we get this command
						if (_system_flags.uart_hi_speed==1) {
            				_system_flags.uart_hi_speed=0;
            				initUART(34);
        				} else {
            				_system_flags.uart_hi_speed=1;
            				initUART(8);
        				}
        				FLAGInit();
        				SYSTEMInit();
        			}
       			}
			}//end of 100ms
			if (TimeBase250ms())   //increment and check for 250ms software timer   
			{
				LED1BlinkingCounter++;
				if(LED1BlinkingCounter == 1)
				{
					LED2lat = 1;//green off
					LED1lat = 1; // red is off
				}
				// blink at double speed if in high speed mode
				if(LED1BlinkingCounter > (10-(5*_system_flags.uart_hi_speed))) {
					if(state ==STATE_STREAM )
					{
						LED2lat = 0; // green flashing during streaming
						LED1lat = 1; // red is off
					}
					if(state ==STATE_STANDBY )
					{
						LED1lat = 0; // red flashing during standby
						LED2lat = 1; // green is off	
					}
					LED1BlinkingCounter = 0;
				}
				if((!_button_press.SW1DBB)&&(_system_flags.SW1released))
				{
					_system_flags.SW1released = 0;
					SleepCounter = SLEEPTIME;
				}
				if((ButtonTimer==0)&&(_system_flags.SW1released)&&(!_system_flags.InSleepWake))
				{
					if((_button_press.SW1DBB))
					{
						if(state==STATE_STREAM)
						{
							TurnOffHTPA();
						}	
						// nuclear option, reset firmware and start over with clean plate. 
						asm ("reset");
					}
				}
			}
			if (TimeBase1s())   //increment and check for 1000ms software timer
			{
				if (LaserCounter!=0) LaserCounter--;
				if (LaserCounter==0)
				{
					LaserOutlat = 0;
    			}    
				if(ButtonTimer>0) 
				{
					ButtonTimer=ButtonTimer-1;
				}
				_system_flags.InSleepWake=0;
				if(state == STATE_STANDBY)
				{
					if(SleepCounter>0) 
					{
						SleepCounter=SleepCounter-1;
					}
					if((SleepCounter==0))
					{
						// sleep flag will call state=SLEEP above
						_system_flags.Sleepflag = 1;
						_system_flags.RefreshStatusflag=1;
					}
				}//stand by mode
			}//End of TimeBase1s
			if (TimeBase1h())
			{				
			}//end of 1 hour base	
			ms_flag = 0;
		}// End of msflag 1 ms
	}// End of while (1)
} //End of main()
Пример #3
0
PinMapping PinMapDocument::pinMapping() const
{
	const NodeInfoMap picNodeInfoMap = m_pPicComponent->nodeMap();
	const NodeInfoMap::const_iterator picNodeInfoMapEnd = picNodeInfoMap.end();
	
	QStringList picPinIDs;
	QStringList attachedIDs;
	Component * attached = 0l;
	
	switch ( m_pinMappingType )
	{
		case PinMapping::SevenSegment:
			for ( unsigned i = 0; i < 7; ++i )
				attachedIDs << QChar('a'+i);
			attached = m_pSevenSegment;
			break;
			
		case PinMapping::Keypad_4x3:
			for ( unsigned i = 0; i < 4; ++i )
				attachedIDs << QString("row_%1").arg(i);
			for ( unsigned i = 0; i < 3; ++i )
				attachedIDs << QString("col_%1").arg(i);
			attached = m_pKeypad;
			break;
			
		case PinMapping::Keypad_4x4:
			for ( unsigned i = 0; i < 4; ++i )
				attachedIDs << QString("row_%1").arg(i);
			for ( unsigned i = 0; i < 4; ++i )
				attachedIDs << QString("col_%1").arg(i);
			attached = m_pKeypad;
			break;
			
		case PinMapping::Invalid:
			break;
	}
	
	if ( !attached )
		return PinMapping();
	
	QStringList::iterator end = attachedIDs.end();
	for ( QStringList::iterator attachedIt = attachedIDs.begin(); attachedIt != end; ++ attachedIt )
	{
		Node * node = attached->childNode( *attachedIt );
		QString pinID;
				
		for ( NodeInfoMap::const_iterator it = picNodeInfoMap.begin(); it != picNodeInfoMapEnd; ++it )
		{
			if ( it.data().node->isConnected( node ) )
			{
				pinID = it.key();
				break;
			}
		}
				
		picPinIDs << pinID;
	}
	
	PinMapping pinMapping( m_pinMappingType );
	pinMapping.setPins( picPinIDs );
	
	return pinMapping;
}