generated from AfonsoCMSousa/CPP-Template
57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
#include "mapper.hpp"
|
|
#include "parcer.h"
|
|
|
|
Mapper::Mapper(const uint8_t *buf, size_t size) : buffer(buf), buffer_size(size), offset(0), ok(1) {}
|
|
|
|
uint8_t Mapper::get_message_type() {
|
|
if (buffer_size < 1) {
|
|
this->ok = false;
|
|
return 0;
|
|
}
|
|
|
|
return buffer[0];
|
|
}
|
|
|
|
void Mapper::parse_new_session(trackAtributes &track) {
|
|
reset();
|
|
int __ok;
|
|
|
|
track.protocol_version = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
track.session_index = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
track.current_session_index = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
track.session_count = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
|
|
track.session_type = (SessionType)track.session_index;
|
|
|
|
uint8_t str_len = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
read_utf32le_string(buffer, buffer_size, &offset, track.server_name, str_len, &__ok);
|
|
|
|
str_len = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
read_string(buffer, buffer_size, &offset, track.track, str_len, &__ok);
|
|
|
|
str_len = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
read_string(buffer, buffer_size, &offset, track.track_config, str_len, &__ok);
|
|
|
|
str_len = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
read_string(buffer, buffer_size, &offset, track.session_name, str_len, &__ok);
|
|
|
|
track.typ = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
track.time = read_uint16_le(buffer, buffer_size, &offset, &__ok);
|
|
track.laps = read_uint16_le(buffer, buffer_size, &offset, &__ok);
|
|
track.wait_time = read_uint16_le(buffer, buffer_size, &offset, &__ok);
|
|
track.ambient_temp = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
track.road_temp = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
|
|
str_len = read_uint8(buffer, buffer_size, &offset, &__ok);
|
|
read_string(buffer, buffer_size, &offset, track.weather_graphics, str_len, &__ok);
|
|
|
|
track.elapsed_ms = read_uint32(buffer, buffer_size, &offset, &__ok);
|
|
|
|
if (__ok == 0) {
|
|
this->ok = false;
|
|
} else {
|
|
this->ok = true;
|
|
}
|
|
}
|
|
|