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); }
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); }
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; } }
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; }