Component* Button::updateFocus(int direction, int buttonsPressed) { Component* newFocus = NULL; if(!getFocus() && active) { setFocus(true); newFocus = this; } else if (!getFocus() && !active) { //try to move direction, and if new component found send to focus manager and remove focus for current component if (getNextFocus(direction)) newFocus = (getNextFocus(direction))->updateFocus(direction, buttonsPressed); else newFocus = getNextFocus(direction); } else { if (getNextFocus(direction)) newFocus = (getNextFocus(direction))->updateFocus(direction, buttonsPressed); if (newFocus) setFocus(false); else newFocus = this; } if (newFocus == this) { //finally update button behavior based on buttons pressed if(buttonsPressed & Focus::ACTION_BACK) doReturn(); else if (buttonsPressed & Focus::ACTION_SELECT) doClicked(); } return newFocus; }
int SdpBuild::checkCodec( bool testReInvite, SipCallMember *member, bool forceHold , bool *srtpErr) { bool holdMe=false; cntParam=0; setRecvonly(false); ReInvite=testReInvite; int status = (int)SipCall::GarKeinCall; int isRtpMap=0; int i=0, j=0; QString transT; bool evaluateV=false, evaluateA=false, evaluateAV=false; QString mstr = member->getSessionDescription(); QString ipaddress; QString curline; QString portstr; QString codecstr; QString codecstr1; QString codecstr2; int receivedAudioMediaNumber = 0, receivedVideoMediaNumber = 0; QString dp=":"; QString sec; mstr += '\n'; // Guarentee termination if( mstr.left( mstr.find( '\n' ) ) != "v=0" ) { return doReturn (status); } mstr.remove( 0, mstr.find( '\n' ) + 1 ); while( mstr.length() > 2 ) { curline = mstr.left( mstr.find( '\n' ) ); mstr.remove( 0, mstr.find( '\n' ) + 1 ); if( curline.left( curline.find( '=' ) ) == "c" ) { if( curline.contains("IP4") ) { ipaddress = curline.mid( curline.find( "IP4" ) + 4 ).stripWhiteSpace(); } else { ipaddress = curline.mid( curline.find( "IP6" ) + 4 ).stripWhiteSpace(); } } if( curline.contains("m=audio")) { if(ipaddress.contains("0.0.0.0") || ipaddress.contains("::0") || forceHold){ status = (int) SipCall::putMeOnHold; setExtHost(ipaddress); holdMe = true; } else { if(evaluateV==true) { evaluateAV=true; status = (int)SipCall::auviCall; } else { status = (int)SipCall::StandardCall; evaluateA=true; } if ( ( curline.contains("RTP/SAVP") && (sessionC->getSrtpMode() != 1) )|| ( curline.contains("RTP/AVP") && (sessionC->getSrtpMode() != 0) ) ) { *srtpErr = true; } setAudioPort(curline.section(' ',1,1)); setExtHost(ipaddress); int i = (-1); do { i++; acc[i] = curline.section(' ', i+3, i+3); } while (acc[i].length() != 0); receivedAudioMediaNumber = i; } } if( curline.contains("m=video")) { if(ipaddress.contains("0.0.0.0")|| ipaddress.contains("::0") || forceHold){ status = (int) SipCall::putMeOnHold; setExtHost(ipaddress); holdMe = true; } else { if(evaluateA==true) { evaluateAV=true; status = (int)SipCall::auviCall; } else { status = (int)SipCall::videoCall; evaluateV=true; } setExtPort(curline.section(' ',1,1)); setExtHost(ipaddress); int i = (-1); do { i++; vcc[i] = curline.section(' ', i+3, i+3); } while (vcc[i].length() != 0); receivedVideoMediaNumber = i; } } if( ( curline.contains("m=application") ) ) { if(ipaddress.contains("0.0.0.0") || ipaddress.contains("::0") || forceHold){; status = (int) SipCall::putMeOnHold; setExtHost(ipaddress); holdMe = true; } else { setExtHost(ipaddress); setExtPort(curline.section(' ',1,1)); transT=curline.section(' ',2,2); sec=curline.section(' ',3,3); status = checkVectorId(status,sec); // find the load type call->setRemoteStart(false); // if(status==0){ return doReturn (status); // error } if(!testTrans(status,transT)) return doReturn (0); } } if( curline.contains("a=")) { if (curline.contains("a=sendonly") || curline.contains("a=inactive") || curline.contains("a=recvonly") ) { status = (int) SipCall::putMeOnHold; if( curline.contains("a=sendonly")) { setRecvonly(true); } if(KStatics::haveIPv6){ setExtHost( "::0"); } else { setExtHost("0.0.0.0"); } return doReturn (status); } if (holdMe) { return doReturn (status); //hold was detected by ipaddress } // if (curline.contains("a=fmtp:" + sec) ) {// we have a=vec or a=cmd if(curline.contains("rstart")) { call->setRemoteStart(true); return doReturn (status); } } // we look for audio and video if( curline.contains("a=rtpmap")) { isRtpMap++; codecstr=curline.section(' ',1,1); codecstr1=curline.section(':',1,1); codecstr2=codecstr1.section(' ',0,0); // STORE RECEIVED MEDIA ATTRIBUTES bool concerningAudio = false; // search for audio i=0; while ( i<receivedAudioMediaNumber) { if (codecstr2 == acc[i]) { acstr[i] = codecstr.section('/',0,0); concerningAudio = true; break; } i++; } // search for video, if not audio if (concerningAudio == false) { for (i=0; i<receivedVideoMediaNumber; i++) { if (codecstr2 == vcc[i]) { vcstr[i] = codecstr.section('/',0,0); break; } } } } if ( curline.contains("a=fmtp:97")) { // looks strange, but works, as only ILBC uses responsePay if ( curline.contains ("mode=30") ) tempresponsepay = 240; if ( curline.contains ("mode=20") ) tempresponsepay = 160; } } } // END OF WHILE-LOOP if( (isRtpMap<receivedAudioMediaNumber) && ( evaluateA || evaluateV || evaluateAV) ){ for(i=0;i<=receivedAudioMediaNumber;i++) { for(j=0;j<=NAUDIO;j++) { if (acc[i] == sessionC->getACodecNum(j) ) { if(acstr[i] == "" )acstr[i] = sessionC->getACodecName(j); break; } } } for(i=0;i<=receivedVideoMediaNumber;i++) { for(j=0;j<=NAUDIO;j++) { if (vcc[i] == sessionC->getCodecNum(j) ) { vcstr[i] = sessionC->getCodecName(j); break; } } } } if( evaluateV || evaluateAV) { // *** VIDEO *** if (videoMediaNegotiationINVITE(receivedVideoMediaNumber) == false) { status=0; // no good codec for us; audiocheck is not necessary any longer return doReturn (status); } } if( evaluateA || evaluateAV) { // *** AUDIO *** if (audioMediaNegotiationINVITE(receivedAudioMediaNumber) == false) { status=0; // no good codec for us; return doReturn (status); } } // We have a good Codec return doReturn (status); }
void Interpreter::executeFun(uint16_t id) { _bc = ((BytecodeFunction*)_code->functionById(id))->bytecode(); _insPtr = 0; Instruction inst; while (true) { inst = nextInsn(); //cout << "Current instruction " << inst << endl; //cout << "__STACK:" << endl; //printStack(); switch (inst) { case BC_INVALID: _out << inst << " Invalid instruction" << endl; assert(false); break; case BC_DLOAD: loadDouble(); break; case BC_ILOAD: loadInt(); break; case BC_SLOAD: loadString(); break; case BC_DLOAD0: _out << inst << " Not implemented" << endl; assert(false); break; case BC_ILOAD0: pushInt(0); break; case BC_SLOAD0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_DLOAD1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_ILOAD1: pushInt(1); break; case BC_DLOADM1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_ILOADM1: pushInt(-1); break; case BC_DADD: addDoubles(); break; case BC_IADD: addInts(); break; case BC_DSUB: subDoubles(); break; case BC_ISUB: subInts(); break; case BC_DMUL: dMul(); break; case BC_IMUL: iMul(); break; case BC_DDIV: divDoubles(); break; case BC_IDIV: divInts(); break; case BC_IMOD: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_DNEG: dNeg(); break; case BC_INEG: iNeg(); break; case BC_IPRINT: printInt(); break; case BC_DPRINT: printDouble(); break; case BC_SPRINT: printString(); break; case BC_I2D: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_D2I: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_S2I: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_SWAP: swap(); break; case BC_POP: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADDVAR0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADDVAR1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADDVAR2: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADDVAR3: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADIVAR0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADIVAR1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADIVAR2: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADIVAR3: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADSVAR0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADSVAR1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADSVAR2: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADSVAR3: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREDVAR0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREDVAR1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREDVAR2: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREDVAR3: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREIVAR0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREIVAR1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREIVAR2: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREIVAR3: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STORESVAR0: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STORESVAR1: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STORESVAR2: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STORESVAR3: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADDVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADIVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADSVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREDVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOREIVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STORESVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_LOADCTXDVAR: loadCtxDouble(); break; case BC_LOADCTXIVAR: loadCtxInt(); break; case BC_LOADCTXSVAR: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STORECTXDVAR: storeCtxDouble(); break; case BC_STORECTXIVAR: storeCtxInt(); break; case BC_STORECTXSVAR: _out << inst << " STORE STRING ? Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_DCMP: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_ICMP: compareInts(); break; case BC_JA: jumpAlways(); break; case BC_IFICMPNE: intsNotEqualJMP(); break; case BC_IFICMPE: intsEqualJMP(); break; case BC_IFICMPG: GJump(); break; case BC_IFICMPGE: GEJump(); break; case BC_IFICMPL: //cout << "IFLESS" << endl; assert(false); break; case BC_IFICMPLE: LEJump(); break; case BC_DUMP: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_STOP: this->popContext(); return; case BC_CALL: //cout << "CALLING. STACK SIZE: " << _stack.size() << endl; call(); break; case BC_CALLNATIVE: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; case BC_RETURN: doReturn(); break; case BC_BREAK: _out << inst << " Not implemented" << endl; exit(EXIT_FAILURE); break; default: _out << "Bad instruction" << endl; break; } } this->popContext(); }
static COLDFIRE_DISPATCH_FN(morphRTS) {doReturn(info->instruction, info->thisPC, False, info->instrSize, info->type);}