CentralWidget::CentralWidget() { _windowManager = TalkWindowManagerSingleton::getInstance(); _callButton.setShape(CustomButton::ROUND); _hangUpButton.setShape(CustomButton::ROUND); _callButton.setText("Call"); _hangUpButton.setText("HangUp" ); _callButton.setRadius(8.0, 8.0); _hangUpButton.setRadius(8.0, 8.0); _callButton.setIcon(QPixmap("../trunk/images/call.png")); _hangUpButton.setIcon(QPixmap("../trunk/images/hang_up.png")); _callButton.setBold(true); _hangUpButton.setBold(true); _layout.addWidget(&_callButton, 0, 0, Qt::AlignTop); _layout.addWidget(&_hangUpButton, 0, 1, Qt::AlignTop); _dockWidgetContent = DockWidgetContentSingleton::getInstance(); setLayout(&_layout); connect(&_callButton, SIGNAL(clicked()), this, SLOT(call())); connect(&_hangUpButton, SIGNAL(clicked()), this, SLOT(hangUp())); connect(_windowManager, SIGNAL(tabClosed(QString const &)), this, SLOT(hangUpTab(QString const &))); }
/*! \brief Constructor * * set up the widget, start timer. */ CallWidget::CallWidget(UserInfo *ui, const QString &channelme, const QString &status, uint ts, const QString &channelpeer, const QString & callerid, const QString &calleridname, QWidget *parent, const PhoneInfo *_pi) : QWidget(parent), m_square(16,16), m_parkedCall(false) { // qDebug() << Q_FUNC_INFO << channelme; m_ui = ui; pi = _pi; QGridLayout * gridlayout = new QGridLayout(this); m_channelme = channelme; m_channelpeer = channelpeer; gridlayout->setColumnStretch(3, 1); m_lbl_status = new QLabel(this); gridlayout->addWidget(m_lbl_status, 0, 0); m_lbl_time = new QLabel(this); m_lbl_time->setFont(QFont("", 8, QFont::Bold)); m_startTime = QDateTime::fromTime_t(ts); startTimer(1000); gridlayout->addWidget(m_lbl_time, 1, 0, 1, 3); m_lbl_direction = new QLabel(this); gridlayout->addWidget(m_lbl_direction, 0, 1); m_lbl_exten = new QLabel(this); m_lbl_exten->setFont(QFont("courier", 10, QFont::Light)); gridlayout->addWidget(m_lbl_exten, 0, 2); //updateWidget(status, ts, "cpeer", callerid, calleridname); updateWidget(status, ts, channelpeer, callerid, calleridname, pi); m_hangUpAction = new QAction(tr("&Hangup"), this); m_hangUpAction->setStatusTip(tr("Hang up/Close the channel")); connect(m_hangUpAction, SIGNAL(triggered()), this, SLOT(hangUp())); m_transferToNumberAction = new QAction(tr("&Transfer to number"), this); m_transferToNumberAction->setStatusTip(tr("Transfer the channel to the dialed number") ); connect(m_transferToNumberAction, SIGNAL(triggered()), this, SLOT(transferToNumber())); m_parkCall = new QAction(tr("&Park the call"), this); m_parkCall->setStatusTip(tr("Park this call") ); connect(m_parkCall, SIGNAL(triggered()), this, SLOT(parkCall())); }
/* makelostCall(const char* , uint8_t) - makes a lost call to the seleted telephone number * * This function makes a call to the given telephone number and its duration is specified by the other input. * After 'timeCall' seconds, hang the call up. * * It modifies 'flag' if expected answer is not received after sending a command to GPRS module * * Returns '1' on success and '0' if error */ uint8_t WaspGPRS::makeLostCall(const char* tlfNumber, uint8_t timeCall) { char command[25]; flag &= ~(GPRS_ERROR_CALL); uint8_t answer=0; sprintf(command,"%s%s;",AT_CALL,tlfNumber); answer=sendATCommand(command,AT_CALL_R,SEND_ONCE); switch(answer) { case 0 : flag |= GPRS_ERROR_CALL; break; case 1 : for(int a=0; a<timeCall ; a++) delay(1000); hangUp(); break; case 2 : flag |= GPRS_ERROR_CALL; break; } if(flag & GPRS_ERROR_CALL) return 0; return 1; }
MobileWindow::MobileWindow(MusicPlayer* player) { ui.setupUi(this); this->player = player; //initFolderList(); // SIGNALS // CALL NUMBERS connect(ui.call1Button, SIGNAL(clicked()), this, SLOT(add1())); connect(ui.call2Button, SIGNAL(clicked()), this, SLOT(add2())); connect(ui.call3Button, SIGNAL(clicked()), this, SLOT(add3())); connect(ui.call4Button, SIGNAL(clicked()), this, SLOT(add4())); connect(ui.call5Button, SIGNAL(clicked()), this, SLOT(add5())); connect(ui.call6Button, SIGNAL(clicked()), this, SLOT(add6())); connect(ui.call7Button, SIGNAL(clicked()), this, SLOT(add7())); connect(ui.call8Button, SIGNAL(clicked()), this, SLOT(add8())); connect(ui.call9Button, SIGNAL(clicked()), this, SLOT(add9())); connect(ui.call0Button, SIGNAL(clicked()), this, SLOT(add0())); connect(ui.callAsteriskButton, SIGNAL(clicked()), this, SLOT(addAsterisk())); connect(ui.callHashButton, SIGNAL(clicked()), this, SLOT(addHash())); // CALL, HANG UP AND DELETE BUTTONS connect(ui.removeButton, SIGNAL(clicked()), this, SLOT(removeDigit())); connect(ui.callButton, SIGNAL(clicked()), this, SLOT(call())); connect(ui.hangUpButton, SIGNAL(clicked()), this, SLOT(hangUp())); // CONTACTS connect(ui.contactList, SIGNAL(itemSelectionChanged()), this, SLOT(contactSelected())); // FILL CONTACTS ddbb.readFromFile("ddbb\\contacts.xml"); QList<Contact*> contacts = ddbb.getContacts(); foreach (Contact* c,contacts) { ui.contactList->addItem(c->name); }
int main() { RCC_Config(); // to read and write to AFIO_remap AFIO_clock must first be eanble NVIC_Config(); TIM_Config(); GPIO_Config(); EXTI_Configuration(); initUsart(); //initBT(); // Only for debug the clock tree *********************************************** // Put the clock configuration into RCC_APB2PeriphClockCmd RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* Output clock on MCO pin ---------------------------------------------*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // RCC_MCOConfig(RCC_MCO_HSE); // Put on MCO pin the: freq. of external crystal RCC_MCOConfig(RCC_MCO_SYSCLK); // Put on MCO pin the: System clock selected // //RTCInit(); RCC_GetClocksFreq(&RCC_Clocks); writeStringUSART2("\033[2J"); //clear usart 2 screen writeStringUSART1("\033[2J"); //clear usart 1 screen writeStringUSART1(" <<<<- Welcome To Hinkens Cobra Bluetooth ->>>>\n\n\r"); while(1) { if(GPIO_ReadInputDataBit(GPIOB, COBRA_BOARDSWITCH)== false) writeStringUSART1("On Hook\n\r"); else //Luren är lyft { writeStringUSART1("Phone is off hook!\n\r Dial: \n\r"); acceptCall(); //accept incoming call Delay(Delay_10ms); //for(counter = 0 ; counter < 10 ; counter++) while(TIM_GetITStatus(TIM2, TIM_IT_Update) == RESET) // { dialed_number = 0; while(GPIO_ReadInputDataBit(GPIOB, COBRA_DIALING)== true && GPIO_ReadInputDataBit(GPIOB, COBRA_BOARDSWITCH)== true)//Wait for user to start dialing { //writeStringUSART1("Timer Counter: %d\r\n",TIM_GetCounter(TIM2)); if(state == 1 && dialingFlag == true) //check if timer has run out and user has started a call { writeStringUSART1("time is up dialing number: "); for (int x = 0; x < counter; x++) { //printf("%d", number[x] ); } sendPhoneNumber(number, counter); writeStringUSART1("\r\n"); dialingFlag = false; state = 0; counter = 0; } } Delay(Delay_100ms); //Wait for switch to debounce while(GPIO_ReadInputDataBit(GPIOB, COBRA_DIALING) == false) { dialingFlag = true; state = 0; TIM_SetCounter(TIM2, 0); TIM_Cmd(TIM2, ENABLE); //Start timer //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); Delay(Delay_10ms); Delay(Delay_10ms); //Now count how many times the mechnical switch toggles if(GPIO_ReadInputDataBit(GPIOB, COBRA_PULSE)== false && pulseFlag == 1) { pulseFlag = 0; dialed_number ++; } else if(GPIO_ReadInputDataBit(GPIOB, COBRA_PULSE) == true && pulseFlag == 0) { pulseFlag = 1; //Do notthing just idle.. } Delay(Delay_10ms); } Delay(Delay_100ms); if(dialed_number != 0) // to handle the error of a extra loop after dialed number { dialed_number--; //Rotary always has one extra closure that must be taken off number[counter] = dialed_number; counter ++; } if(GPIO_ReadInputDataBit(GPIOB, COBRA_BOARDSWITCH)== false) //Hunng upp { hangUp(); //hang-up command to bluettooh writeStringUSART1("Hung up!\n\r"); counter = 0; break; } //printf("%d\n\r", dialed_number); }//end for loop } Delay(Delay_100ms); }//end while(1) }//end main()
//读取串口缓冲区的消息并分析 void Gprs::ReadMsg(QString strRecv) { //读取信息内容,并将信息内容写到本地 if(strRecv.indexOf("+CMGR:",Qt::CaseInsensitive)>=0) { //readFlag=0; QString strNum; QString strMsgContent=ProcessMessage(strRecv,strNum); if(!isRemoteCtl&&!isLocationInfo){ MessageRecieved *messageRecieved=new MessageRecieved(0,this,strNum,strMsgContent); messageRecieved->init(); } isRemoteCtl=false; isLocationInfo=false; const char *chCmd; QString cmd="AT+CMGD="+msgIndex+"\r\n"; chCmd=cmd.toLatin1().data(); int len=strlen(chCmd); SerialPort::nwrite(fd, chCmd, len); } //获取短信中心号码 if(serverNumFlag) { int ITmp=strRecv.indexOf("+CSCA:\"+86", Qt::CaseInsensitive); if(ITmp>0 ) { serverNumFlag=0; serverNumber=strRecv.mid(ITmp+sizeof("+CSCA:\"+86")-1,11); qDebug()<<("Init success"+serverNumber); } else{ QMessageBox::warning(0, tr("Warning:"), tr("Can't get the server number!")); } } //收到新消息 if(strRecv.indexOf("+CMTI",Qt::CaseInsensitive)>=0) { int index=strRecv.indexOf(","); msgIndex=strRecv.mid(index+2,2); //readFlag=1; qDebug()<<("New message arrive!"); ReadMessage(msgIndex); } //待发送短信 if(strRecv.indexOf(">",Qt::CaseInsensitive)>=0) { const char *sendata=sendContent.toLatin1().data(); int len=strlen(sendata); if(fd>0){ SerialPort::nwrite(fd,sendata,len); } qDebug()<<("send success"); } //获得来电者信息 if(strRecv.indexOf("+CLIP:",Qt::CaseInsensitive)>=0) { if(ringFlag==0){ int index1=strRecv.indexOf(" "); int index2=strRecv.indexOf(","); QString number=strRecv.mid(index1+2,index2-index1-3); ringFlag=1; calledView->setNum(number); calledView->setVisible(true); // ringFlag = 0; } } //来电结束 if(strRecv.indexOf("ATH",Qt::CaseInsensitive)>=0||strRecv.indexOf("NO CARRIER",Qt::CaseInsensitive)>=0) { ringFlag = 0; calledView->stopTimer(); calledView->setVisible(false); } //对方挂断 if(strRecv.indexOf("BUSY",Qt::CaseInsensitive)>=0||strRecv.indexOf("NO CARRIER",Qt::CaseInsensitive)>=0) { emit hangUp(); } }