Subversion Repositories Projects

Rev

Rev 263 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 263 Rev 272
Line 57... Line 57...
57
void MKTool::init_GUI()
57
void MKTool::init_GUI()
58
{
58
{
59
    setWindowTitle(QA_NAME + " v" + QA_VERSION);
59
    setWindowTitle(QA_NAME + " v" + QA_VERSION);
Line 60... Line 60...
60
 
60
 
61
    // Tab mit Debug-Elementen verbergen
61
    // Tab mit Debug-Elementen verbergen
62
     tab_Main->removeTab(6);
-
 
63
 
62
    tab_Main->removeTab(6);
-
 
63
    // Develop - Nicht gebrauchte sachen abschalten.
64
    // Tab mit Wegpunkte-Elementen verbergen
64
    pb_SettingsReset->hide();
-
 
65
    pb_Flash->hide();
Line 65... Line 66...
65
//    tab_Main->removeTab(5);
66
    rb_NC->hide();
66
 
67
 
67
    // Settings-Tab hinzufügen.
68
    // Settings-Tab hinzufügen.
68
    f_Settings = new wdg_Settings( this );
69
    f_Settings = new wdg_Settings( this );
69
    f_Settings->set_Config(Settings);
70
    f_Settings->set_Config(Settings);
Line 70... Line -...
70
    tab_Main->insertTab ( 2, f_Settings, ac_View2->icon(), "FC-Settings");
-
 
71
    tab_Main->widget(2)->setObjectName("Tab_2");
-
 
72
 
-
 
73
    // Develop - Nicht gebrauchte sachen abschalten.
-
 
74
    pb_SettingsReset->hide();
-
 
75
    pb_Flash->hide();
71
    tab_Main->insertTab ( 2, f_Settings, ac_View2->icon(), "FC-Settings");
76
    rb_NC->hide();
72
    tab_Main->widget(2)->setObjectName("Tab_2");
77
 
73
 
Line 78... Line 74...
78
    // Zusätzliche Widgets in die Toolbar.
74
    // Zusätzliche Widgets in die Toolbar.
Line 87... Line 83...
87
    tb_Werkzeuge->setVisible(Settings->GUI.ToolViews[1]);
83
    tb_Werkzeuge->setVisible(Settings->GUI.ToolViews[1]);
88
    tb_Debug->setVisible(Settings->GUI.ToolViews[2]);
84
    tb_Debug->setVisible(Settings->GUI.ToolViews[2]);
89
    tb_TTY->setVisible(Settings->GUI.ToolViews[3]);
85
    tb_TTY->setVisible(Settings->GUI.ToolViews[3]);
90
    tb_Hardware->setVisible(Settings->GUI.ToolViews[4]);
86
    tb_Hardware->setVisible(Settings->GUI.ToolViews[4]);
Line -... Line 87...
-
 
87
 
-
 
88
#ifdef _EEEPC_
-
 
89
    lb_Status->hide();
-
 
90
#endif
91
 
91
 
Line -... Line 92...
-
 
92
    lb_Status->setText(tr("Hallo bei QMK-Groundstation...!!!"));
92
    lb_Status->setText(tr("Hallo bei QMK-Groundstation...!!!"));
93
 
Line 93... Line 94...
93
 
94
    // Cockpit-Elemente
94
    QPalette newPalette;
95
    QPalette newPalette;
95
 
96
 
Line 131... Line 132...
131
    SpeedMeter->setScale(1, 2, 0.5);
132
    SpeedMeter->setScale(1, 2, 0.5);
132
    SpeedMeter->setProperty("END", 5);
133
    SpeedMeter->setProperty("END", 5);
Line 133... Line 134...
133
 
134
 
Line 134... Line -...
134
    LayOut_Speed->addWidget(SpeedMeter);
-
 
135
 
-
 
136
#ifdef _EEEPC_
-
 
137
    lb_Status->hide();
-
 
138
#endif
135
    LayOut_Speed->addWidget(SpeedMeter);
139
 
136
 
Line 140... Line 137...
140
    resize(Settings->GUI.Size);
137
    resize(Settings->GUI.Size);
141
    move(Settings->GUI.Point);
138
    move(Settings->GUI.Point);
Line 150... Line 147...
150
    {
147
    {
151
        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
148
        lb_Analog[a]->setText(Settings->Analog1.Label[a]);
152
    }
149
    }
Line 153... Line 150...
153
 
150
 
154
    // Kopie der Tabs anlegen
-
 
155
//    for (int b = 0; b < 7; b++)
151
    // Kopie der Tabs anlegen
156
    for (int b = 0; b < 6; b++)
152
    for (int b = 0; b < 7; b++)
157
    {
153
    {
158
        TabWidgets[b] = tab_Main->widget(b);
154
        TabWidgets[b] = tab_Main->widget(b);
Line 159... Line 155...
159
    }
155
    }
160
 
-
 
161
    // Ausgeblendete Tabs ausblenden
156
 
162
//    for (int c = 0; c < 7; c++)
157
    // Ausgeblendete Tabs ausblenden
163
    for (int c = 0; c < 6; c++)
158
    for (int c = 0; c < 7; c++)
164
    {
159
    {
165
        if (Settings->GUI.TabViews[c] == false)
160
        if (Settings->GUI.TabViews[c] == false)
Line 180... Line 175...
180
    ac_View1->setChecked(Settings->GUI.TabViews[1]);
175
    ac_View1->setChecked(Settings->GUI.TabViews[1]);
181
    ac_View2->setChecked(Settings->GUI.TabViews[2]);
176
    ac_View2->setChecked(Settings->GUI.TabViews[2]);
182
    ac_View3->setChecked(Settings->GUI.TabViews[3]);
177
    ac_View3->setChecked(Settings->GUI.TabViews[3]);
183
    ac_View4->setChecked(Settings->GUI.TabViews[4]);
178
    ac_View4->setChecked(Settings->GUI.TabViews[4]);
184
    ac_View5->setChecked(Settings->GUI.TabViews[5]);
179
    ac_View5->setChecked(Settings->GUI.TabViews[5]);
185
//    ac_View6->setChecked(Settings->GUI.TabViews[6]);
180
    ac_View6->setChecked(Settings->GUI.TabViews[6]);
Line 186... Line 181...
186
 
181
 
Line 187... Line 182...
187
    le_Port->setText(Settings->TTY.Port);
182
    le_Port->setText(Settings->TTY.Port);
188
 
183
 
Line 194... Line 189...
194
void MKTool::init_Objects()
189
void MKTool::init_Objects()
195
{
190
{
196
    // QTimer-Instanzen
191
    // QTimer-Instanzen
197
    Ticker = new QTimer(this);
192
    Ticker = new QTimer(this);
Line 198... Line -...
198
 
-
 
199
    // Seriell-Port
-
 
200
//    serialPort = new ManageSerialPort;
-
 
201
 
193
 
Line 202... Line 194...
202
    Conn = new cConnection();
194
    Conn = new cConnection();
203
 
195
 
Line 204... Line 196...
204
    // neuer Logger
196
    // neuer Logger
205
    logger = new Logger(Settings, &Mode);
197
    logger = new Logger(Settings, &Mode);
Line 206... Line -...
206
 
-
 
207
    // LCD-Dialog
-
 
208
    f_LCD = new dlg_LCD(this);
-
 
209
 
198
 
210
    // Senden erlauben (Warum auch immer)
-
 
211
//    AllowSend = true;
-
 
212
 
-
 
Line -... Line 199...
-
 
199
    // LCD-Dialog
-
 
200
    f_LCD = new dlg_LCD(this);
Line 213... Line 201...
213
    Server = new cServer();
201
 
214
 
202
    GE_Server = new cServer();
215
    MyServer = new cQMK_Server();
203
 
216
    MyServer->setProperty("Connect", false);
204
    QMK_Server = new cQMK_Server();
217
 
205
    QMK_Server->setProperty("Connect", false);
218
 
206
 
Line 219... Line 207...
219
    if (Settings->Server.StartServer)
207
    if (Settings->Server.StartServer)
220
    {
208
    {
Line 359... Line 347...
359
    qwtPlot->replot();
347
    qwtPlot->replot();
360
}
348
}
Line 361... Line 349...
361
 
349
 
362
void MKTool::slot_Test()
350
void MKTool::slot_Test()
-
 
351
{
-
 
352
//    qDebug("Decode Data");
-
 
353
    sRxData RX;
-
 
354
 
-
 
355
    RX.String = IN->text();
-
 
356
 
-
 
357
//    qDebug(RX.String.toLatin1().data());
-
 
358
 
-
 
359
//    if (ToolBox::check_CRC(RX.String))
-
 
360
    {
-
 
361
        qDebug("Decode Data CRC OK");
-
 
362
        RX.Input = RX.String.toLatin1().data();
-
 
363
 
-
 
364
//        qDebug(RX.Input);
-
 
365
 
-
 
366
        slot_newData(RX);
363
{
367
    }
Line -... Line 368...
-
 
368
}
-
 
369
 
364
}
370
// KML-Datei nach Wegpunkt parsen
365
 
371
// TODO: Richtigen KML-Parser bauen
366
void MKTool::parse_TargetKML()
372
void MKTool::parse_TargetKML()
367
{
373
{
Line 376... Line 382...
376
        le_TarLong->setText(ToolBox::get_Float((List[0].toDouble() * 10000000), 10000000));
382
        le_TarLong->setText(ToolBox::get_Float((List[0].toDouble() * 10000000), 10000000));
377
        le_TarLat->setText(ToolBox::get_Float((List[1].toDouble() * 10000000), 10000000));
383
        le_TarLat->setText(ToolBox::get_Float((List[1].toDouble() * 10000000), 10000000));
378
    }
384
    }
379
}
385
}
Line -... Line 386...
-
 
386
 
380
 
387
// Waypoint zur NC Senden.
381
void MKTool::slot_pb_SendWaypoint()
388
void MKTool::slot_pb_SendWaypoint()
382
{
389
{
383
    if ((Navi.Current.Longitude == 0) && (Navi.Current.Latitude == 0))
390
    if ((Navi.Current.Longitude == 0) && (Navi.Current.Latitude == 0))
384
    {
391
    {
385
        QMessageBox msgB;
392
        QMessageBox msgB;
386
        QString msg;
393
        QString msg;
387
        msgB.setText("Fehler: Es konnten keine GPS-Daten vom Mikrokopter empfangen werden");
394
        msgB.setText("Fehler: Es konnten keine GPS-Daten vom Mikrokopter empfangen werden");
388
        msgB.exec();
395
        msgB.exec();
389
        return;
396
        return;
390
    }
-
 
Line -... Line 397...
-
 
397
    }
391
    //erstelle einen Wegpunkt, den die NaviCtrl auswerten kann
398
 
392
 
399
    //erstelle einen Wegpunkt, den die NaviCtrl auswerten kann
Line 393... Line 400...
393
    Waypoint_t desired_pos;
400
    Waypoint_t desired_pos;
394
    bool ok_lat, ok_lon;
401
    bool ok_lat, ok_lon;
Line 573... Line 580...
573
{
580
{
574
    if (ac_QMKServer->isChecked())
581
    if (ac_QMKServer->isChecked())
575
    {
582
    {
576
        lb_Status->setText(tr("Verbinde zum QMK-Datenserver."));
583
        lb_Status->setText(tr("Verbinde zum QMK-Datenserver."));
Line 577... Line 584...
577
 
584
 
578
        MyServer->Connect("nimari.de", 16441, Settings->Server.QMKS_Login, Settings->Server.QMKS_Password);
-
 
579
        connect(MyServer, SIGNAL(sig_Connected()), this, SLOT(slot_QMKS_Connected()));
-
 
Line -... Line 585...
-
 
585
        QMK_Server->Connect(Settings->Server.QMKS_Host, Settings->Server.QMKS_Port.toInt(), Settings->Server.QMKS_Login, Settings->Server.QMKS_Password);
-
 
586
 
580
        connect(MyServer, SIGNAL(sig_Disconnected(int)), this, SLOT(slot_QMKS_Disconnected(int)));
587
        connect(QMK_Server, SIGNAL(sig_Connected()), this, SLOT(slot_QMKS_Connected()));
581
 
588
        connect(QMK_Server, SIGNAL(sig_Disconnected(int)), this, SLOT(slot_QMKS_Disconnected(int)));
582
    }
589
    }
583
    else
590
    else
584
    {
591
    {
585
        if ((MyServer->property("Connect")) == true)
592
        if ((QMK_Server->property("Connect")) == true)
586
        {
593
        {
Line 587... Line 594...
587
            disconnect(MyServer, SIGNAL(sig_Disconnected(int)), 0, 0);
594
            disconnect(QMK_Server, SIGNAL(sig_Disconnected(int)), 0, 0);
588
            lb_Status->setText(tr("Trenne vom QMK-Datenserver."));
595
            lb_Status->setText(tr("Trenne vom QMK-Datenserver."));
589
 
596
 
590
            MyServer->Disconnect();
597
            QMK_Server->Disconnect();
591
            MyServer->setProperty("Connect", false);
598
            QMK_Server->setProperty("Connect", false);
592
            ac_QMKServer->setText("QMK-Server Verbinden");
599
            ac_QMKServer->setText("QMK-Server Verbinden");
Line 593... Line 600...
593
        }
600
        }
594
    }
601
    }
595
}
602
}
596
 
603
 
597
void MKTool::slot_QMKS_Connected()
604
void MKTool::slot_QMKS_Connected()
598
{
605
{
Line 599... Line 606...
599
    MyServer->setProperty("Connect", true);
606
    QMK_Server->setProperty("Connect", true);
600
    ac_QMKServer->setText("QMK-Server Trennnen");
607
    ac_QMKServer->setText("QMK-Server Trennnen");
601
    lb_Status->setText(tr("Verbunden mit QMK-Datenserver."));
608
    lb_Status->setText(tr("Verbunden mit QMK-Datenserver."));
602
}
609
}
603
 
610
 
Line 604... Line 611...
604
void MKTool::slot_QMKS_Disconnected(int Error)
611
void MKTool::slot_QMKS_Disconnected(int Error)
Line 605... Line 612...
605
{
612
{
606
    MyServer->setProperty("Connect", false);
613
    QMK_Server->setProperty("Connect", false);
607
    ac_QMKServer->setText("QMK-Server Verbinden");
614
    ac_QMKServer->setText("QMK-Server Verbinden");
608
    ac_QMKServer->setChecked(false);
615
    ac_QMKServer->setChecked(false);
Line 705... Line 712...
705
        // CVS-Datei neu anlegen.
712
        // CVS-Datei neu anlegen.
706
        if ((logger->is_active()) && (Old_Analog1.LogView != Settings->Analog1.LogView))
713
        if ((logger->is_active()) && (Old_Analog1.LogView != Settings->Analog1.LogView))
707
        {
714
        {
708
            logger->close();
715
            logger->close();
709
            logger->start_Log();
716
            logger->start_Log();
710
//            update_Log();
-
 
711
        }
717
        }
Line 712... Line 718...
712
 
718
 
713
    }
719
    }
Line 714... Line 720...
714
}
720
}
715
 
721
 
716
//aktualisiere Logging-Status
722
//aktualisiere Logging-Status
717
void MKTool::update_Log()
723
void MKTool::update_Log()
718
{
724
{
719
    if (logger->is_active())
-
 
720
    {
-
 
-
 
725
    if (logger->is_active())
721
//        logger->write(AnalogData);
726
    {
722
//        pb_Record->setText("Log Stop");
727
 
723
        ac_RecordCSV->setText("Log Stop");
728
        ac_RecordCSV->setText("Log Stop");
724
        lb_Status->setText(tr("Log-Record gestartet."));
729
        lb_Status->setText(tr("Log-Record gestartet."));
725
    }
730
    }
726
    else
-
 
727
    {
731
    else
728
//        pb_Record->setText("Log Aufzeichnen");
732
    {
729
        ac_RecordCSV->setText("Log Aufzeichnen");
733
        ac_RecordCSV->setText("Log Aufzeichnen");
730
        lb_Status->setText(tr("Log-Record gestopt."));
734
        lb_Status->setText(tr("Log-Record gestopt."));
Line 790... Line 794...
790
        Aktive = 3;
794
        Aktive = 3;
791
    if (Action->objectName() == QString("ac_View4"))
795
    if (Action->objectName() == QString("ac_View4"))
792
        Aktive = 4;
796
        Aktive = 4;
793
    if (Action->objectName() == QString("ac_View5"))
797
    if (Action->objectName() == QString("ac_View5"))
794
        Aktive = 5;
798
        Aktive = 5;
795
//    if (Action->objectName() == QString("ac_View6"))
799
    if (Action->objectName() == QString("ac_View6"))
796
//        Aktive = 6;
800
        Aktive = 6;
Line 797... Line 801...
797
 
801
 
Line 798... Line 802...
798
    QString TabName = QString("Tab_%1").arg(Aktive);
802
    QString TabName = QString("Tab_%1").arg(Aktive);
799
 
803
 
Line 915... Line 919...
915
void MKTool::slot_ac_StartServer()
919
void MKTool::slot_ac_StartServer()
916
{
920
{
917
    if (ac_StartServer->isChecked())
921
    if (ac_StartServer->isChecked())
918
    {
922
    {
919
        lb_Status->setText(tr("GoogleEarth-Server gestartet."));
923
        lb_Status->setText(tr("GoogleEarth-Server gestartet."));
920
        Server->start_Server(Settings->Server.Port.toInt(), Settings);
924
        GE_Server->start_Server(Settings->Server.Port.toInt(), Settings);
921
    }
925
    }
922
    else
926
    else
923
    {
927
    {
924
        lb_Status->setText(tr("GoogleEarth-Server gestopt."));
928
        lb_Status->setText(tr("GoogleEarth-Server gestopt."));
925
        Server->stop_Server();
929
        GE_Server->stop_Server();
926
    }
930
    }
927
}
931
}
Line 928... Line 932...
928
 
932
 
Line 1173... Line 1177...
1173
    Settings->GUI.Point       = pos();
1177
    Settings->GUI.Point       = pos();
Line 1174... Line 1178...
1174
 
1178
 
1175
    Settings->TTY.Port = le_Port->text();
1179
    Settings->TTY.Port = le_Port->text();
Line 1176... Line -...
1176
}
-
 
1177
 
1180
}
1178
 
1181
 
1179
void MKTool::show_DebugData()
1182
void MKTool::show_DebugData()
1180
{
1183
{
Line 1247... Line 1250...
1247
        Attitude->setAngle(Roll);
1250
        Attitude->setAngle(Roll);
1248
        Attitude->setGradient(double(double(Nick) / 100.0));
1251
        Attitude->setGradient(double(double(Nick) / 100.0));
1249
    }
1252
    }
1250
}
1253
}
Line 1251... Line -...
1251
 
-
 
1252
 
1254
 
1253
void MKTool::new_NaviData(sRxData RX)
1255
void MKTool::new_NaviData(sRxData RX)
1254
{
1256
{
1255
    Navi.Current.Longitude = ToolBox::Data2Long(RX.Decode, N_CUR_LONGITUDE, true);
1257
    Navi.Current.Longitude = ToolBox::Data2Long(RX.Decode, N_CUR_LONGITUDE, true);
1256
    Navi.Current.Latitude  = ToolBox::Data2Long(RX.Decode, N_CUR_LATITUDE,  true);
1258
    Navi.Current.Latitude  = ToolBox::Data2Long(RX.Decode, N_CUR_LATITUDE,  true);
Line 1308... Line 1310...
1308
 
1310
 
1309
    NaviString.Longitude = ToolBox::get_Float(Navi.Current.Longitude,10000000);
1311
    NaviString.Longitude = ToolBox::get_Float(Navi.Current.Longitude,10000000);
1310
    NaviString.Latitude  = ToolBox::get_Float(Navi.Current.Latitude,10000000);
1312
    NaviString.Latitude  = ToolBox::get_Float(Navi.Current.Latitude,10000000);
Line 1311... Line 1313...
1311
    NaviString.Altitude  = ToolBox::get_Float(Navi.Current.Altitude,1000);
1313
    NaviString.Altitude  = ToolBox::get_Float(Navi.Current.Altitude,1000);
Line 1312... Line 1314...
1312
 
1314
 
1313
    Server->store_NaviString(NaviString);
1315
    GE_Server->store_NaviString(NaviString);
-
 
1316
 
1314
 
1317
    if ((QMK_Server->property("Connect")) == true)
1315
    if ((MyServer->property("Connect")) == true)
1318
    {
1316
    {
1319
//        qDebug("Send Data to Server..!!");
Line 1317... Line 1320...
1317
        MyServer->NewPosition(NaviString);
1320
        QMK_Server->NewPosition(NaviString);
1318
    }
1321
    }
Line 1319... Line 1322...
1319
}
1322
}
1320
 
1323
 
1321
// Seriel-Port Bereich, Befehle senden und Daten empfangen
1324
// Kopter-Kommunikations-Bereich, Befehle senden und Daten empfangen
1322
//////////////////////////////////////////////////////////
-
 
1323
 
-
 
1324
// Neues Datenpacket empfangen -> Verarbeiten
1325
////////////////////////////////////////////////////////////////////
1325
void MKTool::slot_newData(sRxData RX) // DONE 0.71g
1326
 
1326
{
1327
// Neues Datenpacket empfangen -> Verarbeiten
1327
    slot_showTerminal(1, RX.String);
-
 
1328
 
1328
void MKTool::slot_newData(sRxData RX) // DONE 0.71g
Line 1329... Line 1329...
1329
    if (LastSend.length() > 2)
1329
{
1330
    {
1330
    if (LastSend.length() > 2)
1331
    }
1331
    {
Line 1473... Line 1473...
1473
 
1473
 
Line 1474... Line 1474...
1474
                        setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version);
1474
                        setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version);
1475
 
1475
 
1476
                        if (Mode.VERSION_SERIAL_MAJOR != VERSION_SERIAL_MAJOR)
1476
                        if (Mode.VERSION_SERIAL_MAJOR != VERSION_SERIAL_MAJOR)
1477
                        {
1477
                        {
1478
                                AllowSend = false;
1478
//                                AllowSend = false;
1479
                                QMessageBox::warning(this, QA_NAME,
1479
                                QMessageBox::warning(this, QA_NAME,
Line 1480... Line 1480...
1480
                                   "Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,", QMessageBox::Ok);
1480
                                   "Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,", QMessageBox::Ok);
Line 1563... Line 1563...
1563
                        config_Plot();
1563
                        config_Plot();
1564
                    }
1564
                    }
1565
                break;
1565
                break;
1566
            }
1566
            }
1567
    }
1567
    }
-
 
1568
 
-
 
1569
    // TODO: Roh-Daten senden zum QMK-Server dazu Sendebuffer bauen.
-
 
1570
    if ((QMK_Server->property("Connect")) == true)
-
 
1571
    {
-
 
1572
//        QMK_Server->send_RawData(RX.String);
-
 
1573
    }
-
 
1574
 
-
 
1575
    slot_showTerminal(1, RX.String);
1568
}
1576
}
Line 1569... Line 1577...
1569
 
1577
 
1570
void MKTool::slot_showTerminal(int Typ, QString Text)
1578
void MKTool::slot_showTerminal(int Typ, QString Text)
1571
{
1579
{
Line 1599... Line 1607...
1599
        }
1607
        }
1600
        break;
1608
        break;
1601
    }
1609
    }
1602
}
1610
}
Line 1603... Line 1611...
1603
 
1611
 
1604
// Seriellen Port öffnen
1612
// Verbindung zum Kopter herstellen / Trennen
1605
void MKTool::slot_OpenPort()
1613
void MKTool::slot_OpenPort()
1606
{
1614
{
1607
    if (Conn->isOpen())
1615
    if (Conn->isOpen())
1608
    {
1616
    {
Line 1615... Line 1623...
1615
            TX_Data[0] = Settings->Data.Navi_Off / 10;
1623
            TX_Data[0] = Settings->Data.Navi_Off / 10;
1616
            Conn->send_Cmd('o', ADDRESS_NC, TX_Data, 1, false);
1624
            Conn->send_Cmd('o', ADDRESS_NC, TX_Data, 1, false);
1617
            ToolBox::Wait(SLEEP);
1625
            ToolBox::Wait(SLEEP);
1618
        }
1626
        }
Line 1619... Line 1627...
1619
 
1627
 
1620
        if (Mode.ID == ADDRESS_NC)
1628
        if (Mode.ID == ADDRESS_FC)
1621
        {
1629
        {
1622
            TX_Data[0] = 0;
1630
            TX_Data[0] = 0;
1623
            TX_Data[1] = 0;
1631
            TX_Data[1] = 0;
1624
            TX_Data[2] = 0;
1632
            TX_Data[2] = 0;