void Mirobot::updateHandler(){ if(_updateFWflag){ _updateFWflag = false; updateFirmware(); } if(_updateUIflag){ _updateUIflag = false; updateUI(); } }
/*! Delayed trigger to update the firmware. */ void DeRestPluginPrivate::firmwareUpdateTimerFired() { if (otauLastBusyTimeDelta() < OTA_LOW_PRIORITY_TIME) { fwUpdateState = FW_Idle; fwUpdateTimer->start(FW_IDLE_TIMEOUT); } else if (fwUpdateState == FW_Idle) { if (gwFirmwareNeedUpdate) { gwFirmwareNeedUpdate = false; updateEtag(gwConfigEtag); } fwUpdateState = FW_CheckDevices; fwUpdateTimer->start(0); } else if (fwUpdateState == FW_CheckDevices) { checkFirmwareDevices(); } else if (fwUpdateState == FW_CheckVersion) { queryFirmwareVersion(); } else if (fwUpdateState == FW_DisconnectDevice) { updateFirmwareDisconnectDevice(); } else if (fwUpdateState == FW_Update) { updateFirmware(); } else if (fwUpdateState == FW_UpdateWaitFinished) { updateFirmwareWaitFinished(); } else if (fwUpdateState == FW_WaitUserConfirm) { fwUpdateState = FW_Idle; fwUpdateTimer->start(FW_IDLE_TIMEOUT); } else { fwUpdateState = FW_Idle; fwUpdateTimer->start(FW_IDLE_TIMEOUT); } }
bool OwlNestSettings::perform(const InvocationInfo& info){ switch(info.commandID){ case ApplicationCommands::updateFirmware: updateFirmware(); break; case ApplicationCommands::updateBootloader: updateBootloader(); break; case ApplicationCommands::checkForFirmwareUpdates: downloadFromServer(info.commandID); break; case ApplicationCommands::checkForBootloaderUpdates: downloadFromServer(info.commandID); break; case ApplicationCommands::owlNestVersionInfo: AlertWindow alert("About", ApplicationConfiguration::getApplicationDescription(), juce::AlertWindow::InfoIcon); alert.addButton("Close", 1, juce::KeyPress(), juce::KeyPress()); alert.runModalLoop(); break; } return true; }
/* * register module to server */ int register2Server() { int ret = -1; msg msgbuf; int counter=0; int srv_fd; struct timeval tv; tv.tv_sec=1; tv.tv_usec=0; srv_fd = socket(PF_INET,SOCK_STREAM,0); if(srv_fd < 0){ perror("can't open socket\n"); exit(1); } server_addr.sin_port = htons(SERVER_PORT); ret = connect(srv_fd, (struct sockaddr*)&server_addr, sizeof(struct sockaddr)); if(ret < 0){ printf("can not connect to server\n"); close(srv_fd); return -1; } printf("connect to server\n"); /*****************************/ /******** REQ_REGISTER *******/ /*****************************/ printModuleInfo(); ret = sendData(srv_fd, REQ_REGISTER, &g_moduleInfo, sizeof(moduleInfo)); if(ret < 0){ /* FIXME */ printf("%s:sendData error",__FUNCTION__); return -1; } ret = recvData(srv_fd, &msgbuf, &tv); if(ret<0 || ret==0 || msgbuf.dataType != RESP_SUCCESS){ return -1; } /***********************************/ /******* REQ_FIRTWARE_UPDATE *******/ /***********************************/ #ifndef DEBUG_PC ret = sendData(srv_fd, REQ_FIRTWARE_UPDATE, g_moduleInfo.fwVersion, sizeof(g_moduleInfo.fwVersion)); #else ret = sendData(srv_fd, REQ_FIRTWARE_UPDATE, NULL, 0); #endif if(ret < 0){ /* FIXME */ printf("%s:sendData error\n",__FUNCTION__); return -1; } tv.tv_sec=1; tv.tv_usec=0; ret = recvData(srv_fd, &msgbuf, &tv); if(ret<0 || ret==0 || msgbuf.dataType != REQ_FIRTWARE_UPDATE){ printf("REQ_FIRTWARE_UPDATE response error\n"); return -1; } if( *(int*)(msgbuf.dataBuf) == 1 ){ recvFirmware(srv_fd); //this function will reboot the module!! updateFirmware(); exit(0); } /**********************/ /***** REQ_CONFIG *****/ /**********************/ ret = sendData(srv_fd, REQ_CONFIG, NULL, 0); if(ret < 0){ /* FIXME */ printf("%s:sendData error",__FUNCTION__); return -1; } tv.tv_sec=1; tv.tv_usec=0; ret = recvData(srv_fd, &msgbuf, &tv); if(ret<0 ||ret==0 || msgbuf.dataType != REQ_CONFIG){ printf("REQ_FIRTWARE_UPDATE response error\n"); return -1; } if( msgbuf.dataSize!=0 ){ //doConfiguration(buf, buflen); return -1; } /***********************/ /******* REQ_RUN ******/ /**********************/ ret = sendData(srv_fd, REQ_RUN, NULL, 0); if(ret < 0){ /* FIXME */ printf("%s:sendData error",__FUNCTION__); return -1; } tv.tv_sec=1; tv.tv_usec=0; ret = recvData(srv_fd, &msgbuf, &tv); if(ret<0 ||ret==0 || msgbuf.dataType != RESP_SUCCESS){ printf(" REQ_RUN error\n"); return -1; } g_state = STATE_RUN; close(srv_fd); srv_fd = -1; return 0; }