Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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();
}