Пример #1
0
void TKN_Window::startTkn()
{
    int baud = ui->comboBox_Baud->currentText().toInt();

    /*Get the port index. Needed by rs232 lib */
    char portName[32];
    strcpy(portName, ui->comboBox_ComPort->currentText().toLatin1().data());
    int port = getPortIndexByName(portName);

    if (port<0){
        consoleOut("Not a valid port");
        return;
    }

    /* Init the network */
    if (TKN_Init(port, baud, TKN_ID_DEFAULT, TKN_Window::tokenReceivedCallback, TKN_Window::dataReceivedCallback))
        return;

    QString msg;
    msg = QString("Opened TKN in ")+ui->comboBox_ComPort->currentText();
    consoleOut(msg);
    msg = QString("Discovering nodes");
    consoleOut(msg);

    BYTE *nodes = TKN_ListActiveNodes(10);

    if (nodes == NULL){
        msg = QString("No connectivity");
        consoleOut(msg);
        TKN_Close();
        msg = QString("Closed TKN");
        consoleOut(msg);
        return;
    }

    while (*nodes){
        TKN_NodeBox *nd = new TKN_NodeBox(this, (int)(*nodes));
        nodeMap[*nodes] = nd;
        ui->centralWidget->layout()->addWidget(nd);
        nodes++;
    }

    if (TKN_Start())
        return;

    TKN_PrintCols();

    mTknCounter = 0;
    this->mTknStarted = true;
    mTime->start();
}
Пример #2
0
/*--------------------------------------------------------------------------
**  Purpose:        Set the channel full with data previously saved
**
**  Parameters:     Name        Description.
**
**  Returns:        Nothing.
**
**------------------------------------------------------------------------*/
static void pciFull(void)
{
#if DEBUG
    fprintf(pciLog, " O(%04o)", pci->data);
#endif
    pciCmd(PciCmdFull | pci->data);
    consoleOut(pci->data);
}
Пример #3
0
/*
 * Output a character to logfile, console, or terminal.
 * Replace LF by CR/LF.
 */
static void charOut(char c) {
  if (c == '\n') {
    if (outputToLogfile) {
      logfileOut('\r');
    }
    if (outputToConsole) {
      consoleOut('\r');
    }
    if (outputToTerminal) {
      terminalOut('\r');
    }
  }
  if (outputToLogfile) {
    logfileOut(c);
  }
  if (outputToConsole) {
    consoleOut(c);
  }
  if (outputToTerminal) {
    terminalOut(c);
  }
}
Пример #4
0
TKN_NodeBox::TKN_NodeBox(QWidget *parent, int id) :
    NODE_ID(id),
    voltometer(this),
    QGroupBox(parent),
    ui(new Ui::TKN_NodeBox)
{
    ui->setupUi(this);
    setTitle(QString("Node ").append(QString('0'+NODE_ID)));

    /* Configure the voltometer */
    ui->groupBox_adc->layout()->addWidget(&voltometer);
    voltometer.setReadOnly(true);
    voltometer.setMode(QwtDial::RotateNeedle);
    voltometer.setScaleArc(30, 330);
    voltometer.setScale(0.0, 5.0);
    voltometer.setNeedle(new QwtDialSimpleNeedle(QwtDialSimpleNeedle::Arrow));

    /* Signal connections */
    connect(this, SIGNAL(dataReceived(TKN_Data)), this, SLOT(dataEcho(TKN_Data)));
    connect(this, SIGNAL(dataReceived(TKN_Data)), this, SLOT(voltometerSet(TKN_Data)));
    connect(this, SIGNAL(consoleOut(QString)), parentWidget(), SLOT(consoleOut(QString)), Qt::QueuedConnection);

    PAGESIZE = 128;
}
Пример #5
0
void TKN_Window::stopTkn()
{
    if ( !TKN_Stop()) {
        if (!nodeMap.empty()){
            QMap<int, TKN_NodeBox*>::iterator i;
            for (i = nodeMap.begin(); i != nodeMap.end(); ++i)
                ui->centralWidget->layout()->removeWidget(*i);

            qDeleteAll(nodeMap.begin(), nodeMap.end());
            nodeMap.clear();
        }

        TKN_Close();
        this->mTknStarted = false;
        QTimer::singleShot(20, this, SLOT(shrink()));
    }
    else emit consoleOut("Network is unstopable. (Not responding)");
}
Пример #6
0
int main()
{
	std::shared_ptr<Signals::CLightsStatus> signal(new Signals::CLightsStatus);
	std::unique_ptr<Console::CConsoleOutput> consoleOut(new Console::CConsoleOutput(signal));
	
	// Init countdown timer.
	std::unique_ptr<CountdownTimer::CTimer> countdown(new CountdownTimer::CTimer(10));
	int lightsSet = 0;

	// Initialize state.
	if(signal->SystemIsReset())
	{
		signal->SetStatusRed(1);
		signal->SetStatusAmber(0);

		signal->SetStatusWalk(0);
		signal->SetStatusWalk(1);

		consoleOut->OutputDisplay();
	}

	while(!(GetKeyState(VK_ESCAPE) & 0x80))
	{
		if(countdown->UpdateSequence())
		{
			consoleOut->UpdateDisplay(lightsSet);
			consoleOut->OutputDisplay();

			lightsSet = signal->CycleLights(lightsSet);
		}

	}

	SetConsoleTextAttribute(hConsole, RED);

	return 0;
}
Пример #7
0
void TKN_NodeBox::hexUpload()
{
    int page=0;
    int word=0;
    int byteCount=0;
    long start, end, addr;
    TKN_Data recData;
    BYTE sendData[TKN_DATA_SIZE];
    BYTE byteForEmpty = 0xff;
    QString recString;

    HEXFile *h;

    try {
        h = new HEXFile(1024*1024, byteForEmpty);
        h->readFile(ui->lineEditHexFilePath->text().toStdString());
    } catch(ErrorMsg *err) {
        emit consoleOut(QString::fromStdString(err->What()));
        return;
    }

    start = h->getRangeStart();
    end   = h->getRangeEnd();

    for (addr=start; addr<= end; ) {
        /* Initiate a boot procedure */
        memset(sendData, 0, TKN_DATA_SIZE);
        strcpy ((char*)sendData, "B:");
        sendData[3] = addr/(PAGESIZE*2);

        /* Flush any data from receive queue */
        flushRecDataQueue();

        while (TKN_PushData ((TKN_Data *) sendData, NODE_ID));

        /* Wait MCU */
        do {
            if ( !dataDeque(&recData, 1500)) {
                emit consoleOut("MCU Busy, aborting.");
                return;
            }
            recString = QString(QByteArray((char*)&recData, sizeof(TKN_Data)));
        } while ( QString::compare(QString("-MCU-READY------"), recString));

        emit consoleOut(QString("Sending Page: ") + QString ('0'+sendData[3]));

        /* Send a complete page */
        do {
            /* Fill a TKN Packet */
            for (int i=0; i<sizeof(TKN_Data); i++){
                sendData[i] = addr<=end? ((BYTE) h->getData(addr)): byteForEmpty;
                byteCount++;
                addr++;
            }

            /* Send it to tha MCU */
            while (TKN_PushData ((TKN_Data *) sendData, NODE_ID));

        } while ((addr % (PAGESIZE*2)!=0) );

    }

    QString msg = QString("Hex upload complete. Sent ") + QString::number(byteCount) + QString(" bytes.");
    emit consoleOut(msg);
}