// update header of specified table (kennung) of the database // and close the table (it can't be extended anymore) void DBB::close_db(int kennung) { HEADER *h = &header[kennung]; // calculate position of last record h->dslast = h->dsfirst + (h->dsanzahl-1) * h->dslaenge; // build database header Volkslogger::TableHeader *dest = GetHeader(kennung); dest->start_offset = ToBE16(h->dsfirst); dest->end_offset = ToBE16(h->dslaenge); dest->dslaenge = h->dslaenge; dest->keylaenge = h->keylaenge; }
SkyLinesTracking::UserNameRequestPacket SkyLinesTracking::MakeUserNameRequest(uint64_t key, uint32_t user_id) { assert(key != 0); UserNameRequestPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::USER_NAME_REQUEST); packet.header.key = ToBE64(key); packet.user_id = ToBE32(user_id); packet.reserved = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return packet; }
SkyLinesTracking::PingPacket SkyLinesTracking::MakePing(uint64_t key, uint16_t id) { assert(key != 0); PingPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::PING); packet.header.key = ToBE64(key); packet.id = ToBE16(id); packet.reserved = 0; packet.reserved2 = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return packet; }
bool SkyLinesTracking::Client::SendUserNameRequest(uint32_t user_id) { if (key == 0 || !socket.IsDefined()) return false; UserNameRequestPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::USER_NAME_REQUEST); packet.header.key = ToBE64(key); packet.user_id = ToBE32(user_id); packet.reserved = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return socket.Write(&packet, sizeof(packet), address) == sizeof(packet); }
bool SkyLinesTracking::Client::SendTrafficRequest(bool followees, bool club) { if (key == 0 || !socket.IsDefined()) return false; TrafficRequestPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::TRAFFIC_REQUEST); packet.header.key = ToBE64(key); packet.flags = ToBE32((followees ? packet.FLAG_FOLLOWEES : 0) | (club ? packet.FLAG_CLUB : 0)); packet.reserved = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return socket.Write(&packet, sizeof(packet), address) == sizeof(packet); }
bool SkyLinesTracking::Client::SendPing(uint16_t id) { if (key == 0 || !socket.IsDefined()) return false; PingPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::PING); packet.header.key = ToBE64(key); packet.id = ToBE16(id); packet.reserved = 0; packet.reserved2 = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return socket.Write(&packet, sizeof(packet), address) == sizeof(packet); }
SkyLinesTracking::TrafficRequestPacket SkyLinesTracking::MakeTrafficRequest(uint64_t key, bool followees, bool club, bool near) { assert(key != 0); TrafficRequestPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::TRAFFIC_REQUEST); packet.header.key = ToBE64(key); packet.flags = ToBE32((followees ? packet.FLAG_FOLLOWEES : 0) | (club ? packet.FLAG_CLUB : 0) | (near ? packet.FLAG_NEAR : 0)); packet.reserved = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return packet; }
bool SkyLinesTracking::Client::SendFix(const NMEAInfo &basic) { assert(basic.time_available); if (key == 0 || !socket.IsDefined()) return false; FixPacket packet; packet.header.magic = ToBE32(MAGIC); packet.header.crc = 0; packet.header.type = ToBE16(Type::FIX); packet.header.key = ToBE64(key); packet.flags = 0; packet.time = ToBE32(uint32_t(basic.time * 1000)); packet.reserved = 0; if (basic.location_available) { packet.flags |= ToBE32(FixPacket::FLAG_LOCATION); ::GeoPoint location = basic.location; location.Normalize(); packet.location.latitude = ToBE32(int(location.latitude.Degrees() * 1000000)); packet.location.longitude = ToBE32(int(location.longitude.Degrees() * 1000000)); } else packet.location.latitude = packet.location.longitude = 0; if (basic.track_available) { packet.flags |= ToBE32(FixPacket::FLAG_TRACK); packet.track = ToBE16(uint16_t(basic.track.AsBearing().Degrees())); } else packet.track = 0; if (basic.ground_speed_available) { packet.flags |= ToBE32(FixPacket::FLAG_GROUND_SPEED); packet.ground_speed = ToBE16(uint16_t(basic.ground_speed * 16)); } else packet.ground_speed = 0; if (basic.airspeed_available) { packet.flags |= ToBE32(FixPacket::FLAG_AIRSPEED); packet.airspeed = ToBE16(uint16_t(basic.indicated_airspeed * 16)); } else packet.airspeed = 0; if (basic.baro_altitude_available) { packet.flags |= ToBE32(FixPacket::FLAG_ALTITUDE); packet.altitude = ToBE16(int(basic.baro_altitude)); } else if (basic.gps_altitude_available) { packet.flags |= ToBE32(FixPacket::FLAG_ALTITUDE); packet.altitude = ToBE16(int(basic.gps_altitude)); } else packet.altitude = 0; if (basic.total_energy_vario_available) { packet.flags |= ToBE32(FixPacket::FLAG_VARIO); packet.vario = ToBE16(int(basic.total_energy_vario * 256)); } else if (basic.netto_vario_available) { packet.flags |= ToBE32(FixPacket::FLAG_VARIO); packet.vario = ToBE16(int(basic.netto_vario * 256)); } else if (basic.noncomp_vario_available) { packet.flags |= ToBE32(FixPacket::FLAG_VARIO); packet.vario = ToBE16(int(basic.noncomp_vario * 256)); } else packet.vario = 0; if (basic.engine_noise_level_available) { packet.flags |= ToBE32(FixPacket::FLAG_ENL); packet.engine_noise_level = ToBE16(basic.engine_noise_level); } else packet.engine_noise_level = 0; packet.header.crc = ToBE16(UpdateCRC16CCITT(&packet, sizeof(packet), 0)); return socket.Write(&packet, sizeof(packet), address) == sizeof(packet); }
void IOBuffer::storeUI16BE(rx_uint16 data) { ensureSize(16); data = ToBE16(data); memcpy(buffer+published, &data, 2); published += 2; }