static int uploadApp(void) { int retval = 0; uint8_t recvEndAddr; uint32_t flashMemory = APP_ADDR_START; uint32_t blockNum = 0; uint32_t recvCnt = 0; uint8_t* pAppBuffer = (uint8_t *)FLASH_BUFFER_ADDR; __disable_irq(); /* Erase the last sector which includes the application id */ retval = EraseSector(LAST_SECTOR_ADDR); if (0 != retval) return retval; /* receive user application firmware data */ retval = receiveAppData(&recvCnt, (uint8_t *)&recvEndAddr); if (0 != retval) return retval; /* receive firmware data */ while(1) { pAppBuffer = (uint8_t *)FLASH_BUFFER_ADDR + (blockNum << 10); if (*pAppBuffer > recvEndAddr) // reach at receive address tail { EraseSector(recvEndAddr); break; } /* Write flash */ flashMemory = APP_ADDR_START + (blockNum << 10); if (blockNum%4 == 0) { initAppBufData((uint32_t *)pAppBuffer); retval = EraseSector(flashMemory); } /* Write App data to falsh */ if (0 == retval) retval = ProgramPage(flashMemory, APP_DATA_BLOCK_SIZE, pAppBuffer); if (0 == retval) { blockNum++; continue; } else break; } __enable_irq(); return retval; }
void RTAutomationManager::clientConnected() { QSettings settings; m_brokerStatus->setText("Connected to " + settings.value(RTAUTOMATION_PARAMS_BROKERADDRESS).toString()); m_serverName->setText(QString("Using automation server: ") + settings.value(RTAUTOMATION_PARAMS_SERVERID).toString()); m_dialog = new DialogMenu(settings.value(RTAUTOMATION_PARAMS_SERVERID).toString(), this); connect(m_dialog, SIGNAL(sendAppData(QJsonObject)), m_client, SLOT(sendCommandData(QJsonObject))); connect(m_client, SIGNAL(receiveCommandData(QJsonObject)), m_dialog, SLOT(receiveAppData(QJsonObject))); m_dialog->exec(); onDisconnect(); }