Skip to content
Snippets Groups Projects
Commit 736141b6 authored by Hoop77's avatar Hoop77
Browse files

-

parent 917c54df
No related merge requests found
......@@ -33,6 +33,13 @@ inline bool isStandardMessageType(MessageType messageType)
return messageTypes::standardMessageTypes.find(messageType) != messageTypes::standardMessageTypes.end();
}
template<typename ... MessageTypes>
bool contains(MessageType type, MessageTypes ... types)
{
std::unordered_set<MessageType> set{types...};
return set.find(type) != set.end();
}
}
namespace jsonNames
......@@ -145,11 +152,16 @@ struct Encoder<platoonProtocol::PlatoonMessage>
using json = nlohmann::json;
using namespace jsonNames;
auto j = json{{SRC_VEHICLE, message.srcVehicle},
{DST_VEHICLE, message.dstVehicle},
{PLATOON_ID, message.platoonId}};
auto j = json{{SRC_VEHICLE, message.srcVehicle}};
using namespace messageTypes;
if (messageTypes::contains(messageType, FV_HEARTBEAT, LV_ACCEPT, REJECT, FV_LEAVE))
j[DST_VEHICLE] = message.dstVehicle;
if (messageType == messageTypes::LV_BROADCAST)
if (messageTypes::contains(messageType, LV_BROADCAST, FV_HEARTBEAT, LV_ACCEPT, FV_LEAVE))
j[PLATOON_ID] = message.platoonId;
if (messageTypes::contains(messageType, LV_BROADCAST))
{
j[PLATOON_SPEED] = message.platoonSpeed;
j[INNER_PLATOON_DISTANCE] = message.innerPlatoonDistance;
......@@ -184,10 +196,15 @@ struct Decoder<platoonProtocol::PlatoonMessage>
using namespace jsonNames;
message.srcVehicle = j.at(SRC_VEHICLE).get<VehicleId>();
message.dstVehicle = j.at(DST_VEHICLE).get<VehicleId>();
message.platoonId = j.at(PLATOON_ID).get<PlatoonId>();
if (messageType == messageTypes::LV_BROADCAST)
using namespace messageTypes;
if (messageTypes::contains(messageType, FV_HEARTBEAT, LV_ACCEPT, REJECT, FV_LEAVE))
message.dstVehicle = j.at(DST_VEHICLE).get<VehicleId>();
if (messageTypes::contains(messageType, LV_BROADCAST, FV_HEARTBEAT, LV_ACCEPT, FV_LEAVE))
message.platoonId = j.at(PLATOON_ID).get<VehicleId>();
if (messageTypes::contains(messageType, LV_BROADCAST))
{
message.platoonSpeed = j.at(PLATOON_SPEED).get<PlatoonSpeed>();
message.innerPlatoonDistance = j.at(INNER_PLATOON_DISTANCE).get<InnerPlatoonDistance>();
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment