Subversion Repositories tpanel

Rev

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

Rev 446 Rev 464
Line 1118... Line 1118...
1118
                    else if (comm.data.filetransfer.ftype == 4 && comm.data.filetransfer.function == 0x0007)    // End of file transfer
1118
                    else if (comm.data.filetransfer.ftype == 4 && comm.data.filetransfer.function == 0x0007)    // End of file transfer
1119
                        handleFTransfer(s, comm.data.filetransfer);
1119
                        handleFTransfer(s, comm.data.filetransfer);
1120
 
1120
 
1121
                break;
1121
                break;
1122
 
1122
 
-
 
1123
                case 0x020d:    // request network information
-
 
1124
                    s.MC = 0x020e;
-
 
1125
                    s.channel = 0;
-
 
1126
                    s.level = 0;
-
 
1127
                    s.port = 0;
-
 
1128
                    s.value = 0;
-
 
1129
                    sendCommand(s);
-
 
1130
                break;
-
 
1131
 
1123
                case 0x0501:    // ping
1132
                case 0x0501:    // ping
1124
                    comm.data.chan_state.device = makeWord(buff_[0], buff_[1]);
1133
                    comm.data.chan_state.device = makeWord(buff_[0], buff_[1]);
1125
                    comm.data.chan_state.system = makeWord(buff_[2], buff_[3]);
1134
                    comm.data.chan_state.system = makeWord(buff_[2], buff_[3]);
1126
                    s.channel = 0;
1135
                    s.channel = 0;
1127
                    s.level = 0;
1136
                    s.level = 0;
Line 1422... Line 1431...
1422
            com.hlen = 0x0016 - 3 + len;
1431
            com.hlen = 0x0016 - 3 + len;
1423
            comStack.push_back(com);
1432
            comStack.push_back(com);
1424
            mSendReady = true;
1433
            mSendReady = true;
1425
        break;
1434
        break;
1426
 
1435
 
-
 
1436
        case 0x020c:
-
 
1437
        case 0x020e:
-
 
1438
        {
-
 
1439
            if (!mSocket)
-
 
1440
                break;
-
 
1441
 
-
 
1442
            string host = mSocket->getMyHostName();
-
 
1443
            string netmask = mSocket->getMyNetmask();
-
 
1444
            string ip = mSocket->getMyIP();
-
 
1445
 
-
 
1446
            size_t total = host.length() + 1 + netmask.length() + 1 + ip.length() + 1 + 1;
-
 
1447
 
-
 
1448
            MSG_DEBUG("Host name (" << host.length() << "): " << host);
-
 
1449
            MSG_DEBUG("Host IP (" << ip.length() << "): " << ip);
-
 
1450
            MSG_DEBUG("Netmask (" << netmask.length() << "): " << netmask);
-
 
1451
            MSG_DEBUG("Total length: " << total);
-
 
1452
 
-
 
1453
            if (total >= sizeof(com.data.network.data))
-
 
1454
            {
-
 
1455
                MSG_WARNING("Not enough space for sending network information!");
-
 
1456
                break;
-
 
1457
            }
-
 
1458
 
-
 
1459
            memset(com.data.network.data, 0, sizeof(com.data.network.data));
-
 
1460
 
-
 
1461
            com.data.network.bf = 0;    // Satic IP address
-
 
1462
            size_t pos = host.length();
-
 
1463
            memcpy(com.data.network.data, host.c_str(), host.length());
-
 
1464
            *(com.data.network.data+pos) = 0;
-
 
1465
            pos++;
-
 
1466
            memcpy(com.data.network.data+pos, ip.c_str(), ip.length());
-
 
1467
            pos += ip.length();
-
 
1468
            *(com.data.network.data+pos) = 0;
-
 
1469
            pos++;
-
 
1470
            memcpy(com.data.network.data+pos, netmask.c_str(), netmask.length());
-
 
1471
            pos += netmask.length();
-
 
1472
            *(com.data.network.data+pos) = 0;
-
 
1473
            MSG_DEBUG("Counted length: " << pos);
-
 
1474
            com.data.network.len = total + 1;
-
 
1475
            com.hlen = 0x0016 - 3 + total + 1;
-
 
1476
            comStack.push_back(com);
-
 
1477
            mSendReady = true;
-
 
1478
        }
-
 
1479
        break;
-
 
1480
 
1427
        case 0x0581:        // Pong
1481
        case 0x0581:        // Pong
1428
            com.data.srDeviceInfo.device = panelID; // Configuration->getAMXChannel();
1482
            com.data.srDeviceInfo.device = panelID; // Configuration->getAMXChannel();
1429
            com.data.srDeviceInfo.system = TConfig::getSystem();
1483
            com.data.srDeviceInfo.system = TConfig::getSystem();
1430
            com.data.srDeviceInfo.herstID = devInfo[0].manufacturerID;
1484
            com.data.srDeviceInfo.herstID = devInfo[0].manufacturerID;
1431
            com.data.srDeviceInfo.deviceID = devInfo[0].deviceID;
1485
            com.data.srDeviceInfo.deviceID = devInfo[0].deviceID;
Line 2125... Line 2179...
2125
            {
2179
            {
2126
                MSG_ERROR("Error creating a buffer! Token number: " << mSend.MC);
2180
                MSG_ERROR("Error creating a buffer! Token number: " << mSend.MC);
2127
                continue;
2181
                continue;
2128
            }
2182
            }
2129
 
2183
 
2130
            MSG_DEBUG("Wrote buffer with " << (mSend.hlen + 4) << " bytes.");
2184
            MSG_DEBUG("Wrote buffer with token 0x" << std::setw(4) << std::setfill('0') << std::hex << mSend.MC << " and " << std::setw(0) << std::setfill(' ') << std::dec << (mSend.hlen + 4) << " bytes.");
2131
            mSocket->send((char *)buf, mSend.hlen + 4);
2185
            mSocket->send((char *)buf, mSend.hlen + 4);
2132
            delete[] buf;
2186
            delete[] buf;
2133
        }
2187
        }
2134
 
2188
 
2135
        mSendReady = false;
2189
        mSendReady = false;
Line 2645... Line 2699...
2645
 
2699
 
2646
            *(buf + pos) = calcChecksum(buf, pos);
2700
            *(buf + pos) = calcChecksum(buf, pos);
2647
            valid = true;
2701
            valid = true;
2648
        break;
2702
        break;
2649
 
2703
 
-
 
2704
        case 0x020c:
-
 
2705
        case 0x020e:
-
 
2706
            *(buf+22) = s.data.network.bf;
-
 
2707
            memcpy(buf+23, s.data.network.data, s.data.network.len);
-
 
2708
            *(buf+s.data.network.len+1) = calcChecksum(buf, 23 + s.data.network.len+1);
-
 
2709
            valid = true;
-
 
2710
        break;
-
 
2711
 
2650
        case 0x0581:    // Pong
2712
        case 0x0581:    // Pong
2651
            *(buf + 22) = s.data.srDeviceInfo.device >> 8;
2713
            *(buf + 22) = s.data.srDeviceInfo.device >> 8;
2652
            *(buf + 23) = s.data.srDeviceInfo.device;
2714
            *(buf + 23) = s.data.srDeviceInfo.device;
2653
            *(buf + 24) = s.data.srDeviceInfo.system >> 8;
2715
            *(buf + 24) = s.data.srDeviceInfo.system >> 8;
2654
            *(buf + 25) = s.data.srDeviceInfo.system;
2716
            *(buf + 25) = s.data.srDeviceInfo.system;