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