u16 getCmdUSB(u8 * buf)
{
    u16 len = 0;
    cmd_info wrap;
	u8 * pBuf = buf;
	u8 nrLongPack = 0;
	u16 limit = 2000;

    pBuf++;        //missing pilot
    wrap.cmd  = *pBuf;
    pBuf  += SIZE_WRAP_CMD;

    pBuf  += SIZE_WRAP_AUX;  //missing aux

    wrap.len = *(u16*)pBuf;   //length
    pBuf  += SIZE_WRAP_LEN;

	buf += SIZE_HEADER_PACKET;

    /*Executing commands and handling data*/
    switch(wrap.cmd)
     {
	   case  CMD_ALL_INFO        :  len = genInfo(buf, 0);  			 break;
       case  CMD_READ_CONFIG     :  len = menuDisplay(buf, &nrLongPack, limit);break;
       case  CMD_WRITE_CONFIG    :  len = writeConfig(wrap.len, buf );   break;
       case  CMD_PSW_CHECK       :  len = checkPsw( buf );  			 break;
       case  CMD_BL_ENTER        :  len = blEnter();  					 break;
       case  CMD_BL_PORTION      :  len = addPortion(wrap.len, buf);     break;
       case  CMD_BL_ADD_PAGE     :  len = addPage(wrap.len, buf);        break;
       case  CMD_BL_CHECK_CRC    :  len = blCheckCRC(buf);  			 break;
	   case  CMD_BL_RESTART      :  len = systemRestartDelayed();  	     break;
	   case  CMD_GET_VERSION     :  len = getVersion(buf);  			 break;
	   case  CMD_ACCEL           :  len = accelHandle(buf);  			 break;
	   case  CMD_TU              :  len = controlTU(buf);  			     break;
	   case  CMD_DEBUG           :  len = debScan(buf); 				 break;
	   case  CMD_QUITTANCE       :  len = quittance();  				 break;
	   case  CMD_GET_BALANCE     :  len = getBalance(buf);               break;
	   case  CMD_GET_GPS_PACKET  :  len = getGpsPacket(buf);             break;
	   case  CMD_SET_CALIBR_KOEF :  len = setCalibrKoef(buf);            break;
	   case  CMD_GET_PHONE_NUMBER:  len = getPhoneNumber(buf);           break;
	   case  CMD_GET_RTC_TIME    :  len = getRTCTime(buf);               break;
	   case  CMD_MK_ZERO_MILEAGE :  len = zeroMileage(buf);              break;

       default :    break;
     }

	len = prepareForSendUSB(buf,len,nrLongPack);
     
    /* todo: should make some error codes and results*/

    return len;
}
u16 getCmd(u8 * buf)
{
    u16 len = 0;
    cmd_info wrap;
	u8 nrLongPack = 0;
	u16 limit = 2000;  //exact

    buf  += SIZE_WRAP_BLOCKID;

    wrap.cmd  = *buf;               //cmd
    buf  += SIZE_WRAP_CMD;

    buf  += SIZE_WRAP_AUX;  //aux

    wrap.len = *(u16*)buf;   //length
    buf  += SIZE_WRAP_LEN;
    
    /*Executing commands and handling data*/
    switch(wrap.cmd)
     {
	   case  CMD_ALL_INFO        :     len = genInfo(buf, 1);    		  break;
       case  CMD_READ_CONFIG     :     len = menuDisplay(buf, &nrLongPack, limit);            break;
       case  CMD_WRITE_CONFIG    :     len = writeConfig(wrap.len, buf ); break;
       case  CMD_PSW_CHECK       :     len = checkPsw( buf );    		  break;
       case  CMD_BL_ENTER        :     len = blEnter();                   break;
       case  CMD_BL_PORTION      :     len = addPortion(wrap.len, buf);   break;
       case  CMD_BL_ADD_PAGE     :     len = addPage(wrap.len, buf);      break;
       case  CMD_BL_CHECK_CRC    :     len = blCheckCRC(buf);    		  break;
	   case  CMD_BL_RESTART   	 :     len = systemRestartDelayed();      break;
	   case  CMD_GET_VERSION  	 :     len = getVersion(buf);    		  break;
	   case  CMD_TU           	 :     len = controlTU(buf);     		  break;
	   case  CMD_QUITTANCE    	 :     len = quittance();                 break;
	   case  CMD_GET_BALANCE     :     len = getBalance(buf);             break;
	   case  CMD_GET_GPS_PACKET  :     len = getGpsPacket(buf);           break;
	   case  CMD_GET_PHONE_NUMBER:     len = getPhoneNumber(buf);         break;
	   case  CMD_GET_RTC_TIME    :     len = getRTCTime(buf);             break;
	   case  CMD_MK_ZERO_MILEAGE :     len = zeroMileage(buf);            break;

							   
       default :    break;
     }

	//if(len)
        len = prepareForSend(bufRxOperGSM,len, 0x01, wrap.cmd, nrLongPack);   /* filling cmd,uid,len crc ...*/
    /* todo: should make some error codes and results*/
    return len;
}
Esempio n. 3
0
QString Fixture::status() const
{
    QString info;
    QString t;

    QString title("<TR><TD CLASS='hilite' COLSPAN='3'>%1</TD></TR>");
    QString subTitle("<TR><TD CLASS='subhi' COLSPAN='3'>%1</TD></TR>");
    QString genInfo("<TR><TD CLASS='emphasis'>%1</TD><TD COLSPAN='2'>%2</TD></TR>");

    /********************************************************************
     * General info
     ********************************************************************/

    info += "<TABLE COLS='3' WIDTH='100%'>";

    // Fixture title
    info += title.arg(name());

    // Manufacturer
    if (isDimmer() == false)
    {
        info += genInfo.arg(tr("Manufacturer")).arg(m_fixtureDef->manufacturer());
        info += genInfo.arg(tr("Model")).arg(m_fixtureDef->model());
        info += genInfo.arg(tr("Mode")).arg(m_fixtureMode->name());
        info += genInfo.arg(tr("Type")).arg(m_fixtureDef->type());
    }
    else
    {
        info += genInfo.arg(tr("Type")).arg(tr("Generic Dimmer"));
    }

    // Universe
    info += genInfo.arg(tr("Universe")).arg(universe() + 1);

    // Address
    QString range = QString("%1 - %2").arg(address() + 1).arg(address() + channels());
    info += genInfo.arg(tr("Address Range")).arg(range);

    // Channels
    info += genInfo.arg(tr("Channels")).arg(channels());

    // Binary address
    QString binaryStr = QString("%1").arg(address() + 1, 10, 2, QChar('0'));
    QString dipTable("<TABLE COLS='33' cellspacing='0'><TR><TD COLSPAN='33'><IMG SRC=\"" ":/ds_top.png\"></TD></TR>");
    dipTable += "<TR><TD><IMG SRC=\"" ":/ds_border.png\"></TD><TD><IMG SRC=\"" ":/ds_border.png\"></TD>";
    for (int i = 9; i >= 0; i--)
    {
        if (binaryStr.at(i) == '0')
            dipTable += "<TD COLSPAN='3'><IMG SRC=\"" ":/ds_off.png\"></TD>";
        else
            dipTable += "<TD COLSPAN='3'><IMG SRC=\"" ":/ds_on.png\"></TD>";
    }
    dipTable += "<TD><IMG SRC=\"" ":/ds_border.png\"></TD></TR>";
    dipTable += "<TR><TD COLSPAN='33'><IMG SRC=\"" ":/ds_bottom.png\"></TD></TR>";
    dipTable += "</TABLE>";

    info += genInfo.arg(tr("Binary Address (DIP)"))
            .arg(QString("%1").arg(dipTable));

    /********************************************************************
     * Channels
     ********************************************************************/

    // Title row
    info += QString("<TR><TD CLASS='subhi'>%1</TD>").arg(tr("Channel"));
    info += QString("<TD CLASS='subhi'>%1</TD>").arg(tr("DMX"));
    info += QString("<TD CLASS='subhi'>%1</TD></TR>").arg(tr("Name"));

    // Fill table with the fixture's channels
    for (quint32 ch = 0; ch < channels();	ch++)
    {
        QString chInfo("<TR><TD>%1</TD><TD>%2</TD><TD>%3</TD></TR>");
        info += chInfo.arg(ch + 1).arg(address() + ch + 1)
                .arg(channel(ch)->name());
    }

    /********************************************************************
     * Extended device information for non-dimmers
     ********************************************************************/

    if (isDimmer() == false)
    {
        QLCPhysical physical = m_fixtureMode->physical();
        info += title.arg(tr("Physical"));

        float mmInch = 0.0393700787;
        float kgLbs = 2.20462262;
        QString mm("%1mm (%2\")");
        QString kg("%1kg (%2 lbs)");
        QString W("%1W");
        info += genInfo.arg(tr("Width")).arg(mm.arg(physical.width()))
                                        .arg(physical.width() * mmInch, 0, 'g', 4);
        info += genInfo.arg(tr("Height")).arg(mm.arg(physical.height()))
                                         .arg(physical.height() * mmInch, 0, 'g', 4);
        info += genInfo.arg(tr("Depth")).arg(mm.arg(physical.depth()))
                                        .arg(physical.depth() * mmInch, 0, 'g', 4);
        info += genInfo.arg(tr("Weight")).arg(kg.arg(physical.weight()))
                                         .arg(physical.weight() * kgLbs, 0, 'g', 4);
        info += genInfo.arg(tr("Power consumption")).arg(W.arg(physical.powerConsumption()));
        info += genInfo.arg(tr("DMX Connector")).arg(physical.dmxConnector());

        // Bulb
        QString K("%1K");
        QString lm("%1lm");
        info += subTitle.arg(tr("Bulb"));
        info += genInfo.arg(tr("Type")).arg(physical.bulbType());
        info += genInfo.arg(tr("Luminous Flux")).arg(lm.arg(physical.bulbLumens()));
        info += genInfo.arg(tr("Colour Temperature")).arg(K.arg(physical.bulbColourTemperature()));

        // Lens
        QString angle1("%1&deg;");
        QString angle2("%1&deg; &ndash; %2&deg;");

        info += subTitle.arg(tr("Lens"));
        info += genInfo.arg(tr("Name")).arg(physical.lensName());

        if (physical.lensDegreesMin() == physical.lensDegreesMax())
        {
            info += genInfo.arg(tr("Beam Angle"))
                .arg(angle1.arg(physical.lensDegreesMin()));
        }
        else
        {
            info += genInfo.arg(tr("Beam Angle"))
                .arg(angle2.arg(physical.lensDegreesMin())
                .arg(physical.lensDegreesMax()));
        }


        // Focus
        QString range("%1&deg;");
        info += subTitle.arg(tr("Focus"));
        info += genInfo.arg(tr("Type")).arg(physical.focusType());
        info += genInfo.arg(tr("Pan Range")).arg(range.arg(physical.focusPanMax()));
        info += genInfo.arg(tr("Tilt Range")).arg(range.arg(physical.focusTiltMax()));
    }

    // HTML document & table closure
    info += "</TABLE>";

    if (isDimmer() == false)
    {
        info += "<HR>";
        info += "<DIV CLASS='author' ALIGN='right'>";
        info += tr("Fixture definition author: ") + fixtureDef()->author();
        info += "</DIV>";
    }

    return info;
}