void FSOperandVisitor::visitOLitAdd(OLitAdd* olitadd)
{
    m_bLastWasHexConstant = true;

    switch(otype)
    {
    case FLD:
        out.Push(0x05);
        break;
    case FST:
        out.Push(0x15);
        break;
    case FSTP:
        out.Push(0x1D);
        break;
    default:
        // other
        break;
    }
    
    m_uLastHex = ConvertHex( olitadd->hexconstant_ );
    unsigned int c = m_uLastHex;
    out.Push(c & 0xFF);
    c >>= 8;
    out.Push(c & 0xFF);
    c >>= 8;
    out.Push(c & 0xFF);
    c >>= 8;
    out.Push(c & 0xFF);
}
Beispiel #2
0
void Vector4D::SetHex(std::string sRed,std::string sGreen,std::string sBlue,std::string sAlpha){
	StringChecker(sRed);
	StringChecker(sGreen);
	StringChecker(sBlue);
	StringChecker(sAlpha);

	ConvertHex(sRed,sGreen,sBlue,sAlpha);
}
Beispiel #3
0
	Color ConvertColor(const WString& colorString)
	{
		return Color(
			ConvertHex(colorString[1])*16+ConvertHex(colorString[2]),
			ConvertHex(colorString[3])*16+ConvertHex(colorString[4]),
			ConvertHex(colorString[5])*16+ConvertHex(colorString[6])
			);
	}
void FSOperandVisitor::visitOHex(OHex* ohex)
{
    m_bLastWasHexConstant = true;

    m_uLastHex = ConvertHex( ohex->hexconstant_ );
    unsigned int c = m_uLastHex;

    switch(otype)
    {
    default:
        // error
        return;
    case JMP:
        out.Push(c & 0xFF);
        c >>= 8;
        out.Push(c & 0xFF);
        c >>= 8;
        out.Push(c & 0xFF);
        c >>= 8;
        out.Push(c & 0xFF);
        break;
    }
}
Beispiel #5
0
bool Gps::TermComplete() {
  if (_is_checksum_term) {
    byte checksum = 16 * ConvertHex(_term[0]) + ConvertHex(_term[1]);
    if (checksum == _parity) {
      if (_gps_data_good){
        _last_time_fix = _new_time_fix;
        _last_position_fix = _new_position_fix;

        switch(_sentence_type) {
          case _GPS_SENTENCE_GPRMC:
            _time      = _new_time;
            _date      = _new_date;
            _latitude  = _new_latitude;
            _longitude = _new_longitude;
            _speed     = _new_speed;
            _course    = _new_course;
            break;
          case _GPS_SENTENCE_GPGGA:
            _altitude  = _new_altitude;
            _time      = _new_time;
            _latitude  = _new_latitude;
            _longitude = _new_longitude;
            _numsats   = _new_numsats;
            _hdop      = _new_hdop;
            break;
        }

        return true;
      }
    }

    return false;
  }

  // the first term determines the sentence type
  if (_term_number == 0) {
    if (!gpsstrcmp(_term, _GPRMC_TERM))
      _sentence_type = _GPS_SENTENCE_GPRMC;
    else if (!gpsstrcmp(_term, _GPGGA_TERM))
      _sentence_type = _GPS_SENTENCE_GPGGA;
    else
      _sentence_type = _GPS_SENTENCE_OTHER;
    return false;
  }

  if (_sentence_type != _GPS_SENTENCE_OTHER && _term[0]) {
    switch(COMBINE(_sentence_type, _term_number)) {
      case COMBINE(_GPS_SENTENCE_GPRMC, 1): // Time in both sentences
      case COMBINE(_GPS_SENTENCE_GPGGA, 1):
        _new_time = ParseDecimal();
        _new_time_fix = millis();
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 2): // GPRMC validity
        _gps_data_good = _term[0] == 'A';
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 3): // Latitude
      case COMBINE(_GPS_SENTENCE_GPGGA, 2):
        _new_latitude = ParseDegrees();
        _new_position_fix = millis();
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 4): // N/S
      case COMBINE(_GPS_SENTENCE_GPGGA, 3):
        if (_term[0] == 'S')
          _new_latitude = -_new_latitude;
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 5): // Longitude
      case COMBINE(_GPS_SENTENCE_GPGGA, 4):
        _new_longitude = ParseDegrees();
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 6): // E/W
      case COMBINE(_GPS_SENTENCE_GPGGA, 5):
        if (_term[0] == 'W')
          _new_longitude = -_new_longitude;
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 7): // Speed (GPRMC)
        _new_speed = ParseDecimal();
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 8): // Course (GPRMC)
        _new_course = ParseDecimal();
        break;
      case COMBINE(_GPS_SENTENCE_GPRMC, 9): // Date (GPRMC)
        _new_date = gpsatol(_term);
        break;
      case COMBINE(_GPS_SENTENCE_GPGGA, 6): // Fix data (GPGGA)
        _gps_data_good = _term[0] > '0';
        break;
      case COMBINE(_GPS_SENTENCE_GPGGA, 7): // Satellites used (GPGGA)
        _new_numsats = (unsigned char)atoi(_term);
        break;
      case COMBINE(_GPS_SENTENCE_GPGGA, 8): // HDOP
        _new_hdop = ParseDecimal();
        break;
      case COMBINE(_GPS_SENTENCE_GPGGA, 9): // Altitude (GPGGA)
        _new_altitude = ParseDecimal();
        break;
    }
  }

  return false;
}