Add TPM position, station type
This commit is contained in:
parent
7ad01312de
commit
b777f21ab8
|
|
@ -359,7 +359,7 @@ int facilities_config(void* facilities_s) {
|
||||||
facilities->lightship->protected_zones.pz[i] = zone;
|
facilities->lightship->protected_zones.pz[i] = zone;
|
||||||
++facilities->lightship->protected_zones.pz_len;
|
++facilities->lightship->protected_zones.pz_len;
|
||||||
++i;
|
++i;
|
||||||
syslog_debug("[facilities] [config] loaded protection zone @ (%ld, %ld)", zone->protectedZoneLatitude, zone->protectedZoneLongitude);
|
syslog_debug("[facilities] [config] loaded protection zone @ (%lld, %lld)", zone->protectedZoneLatitude, zone->protectedZoneLongitude);
|
||||||
} else {
|
} else {
|
||||||
syslog_err("[facilities] [config] failure to decode protection zone '%s'", dir->d_name);
|
syslog_err("[facilities] [config] failure to decode protection zone '%s'", dir->d_name);
|
||||||
ASN_STRUCT_FREE(asn_DEF_ProtectedCommunicationZone, zone);
|
ASN_STRUCT_FREE(asn_DEF_ProtectedCommunicationZone, zone);
|
||||||
|
|
|
||||||
50
src/tpm.c
50
src/tpm.c
|
|
@ -70,8 +70,33 @@ int tpm_pay(void* fc, tolling_info_s* info, void* security_socket, uint8_t* neig
|
||||||
tpm->header.stationID = facilities->id.station_id;
|
tpm->header.stationID = facilities->id.station_id;
|
||||||
pthread_mutex_unlock(&facilities->id.lock);
|
pthread_mutex_unlock(&facilities->id.lock);
|
||||||
|
|
||||||
|
// timestamp
|
||||||
asn_ulong2INTEGER(&tpm->tpm.timestamp, it2s_tender_get_clock(&facilities->epv));
|
asn_ulong2INTEGER(&tpm->tpm.timestamp, it2s_tender_get_clock(&facilities->epv));
|
||||||
|
|
||||||
|
// stationType
|
||||||
|
tpm->tpm.stationType = facilities->station_type;
|
||||||
|
|
||||||
|
// referencePosition
|
||||||
|
it2s_tender_lock_space(&facilities->epv);
|
||||||
|
it2s_tender_get_space(&facilities->epv);
|
||||||
|
tpm->tpm.referencePosition.altitude.altitudeValue = facilities->epv.space.altitude;
|
||||||
|
tpm->tpm.referencePosition.altitude.altitudeConfidence = facilities->epv.space.altitude_conf;
|
||||||
|
tpm->tpm.referencePosition.latitude = facilities->epv.space.latitude;
|
||||||
|
tpm->tpm.referencePosition.longitude = facilities->epv.space.longitude;
|
||||||
|
uint16_t lat_conf = facilities->epv.space.latitude_conf;
|
||||||
|
uint16_t lon_conf = facilities->epv.space.longitude_conf;
|
||||||
|
it2s_tender_unlock_space(&facilities->epv);
|
||||||
|
if (lat_conf > lon_conf) {
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMinorConfidence = lon_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorConfidence = lat_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorOrientation = 0;
|
||||||
|
} else {
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMinorConfidence = lon_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorConfidence = lat_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorOrientation = 900;
|
||||||
|
}
|
||||||
|
|
||||||
|
// tollingFlow
|
||||||
tpm->tpm.tollingFlow.present = TollingFlow_PR_request;
|
tpm->tpm.tollingFlow.present = TollingFlow_PR_request;
|
||||||
tpm->tpm.tollingFlow.choice.request.clientId = tolling->client_id;
|
tpm->tpm.tollingFlow.choice.request.clientId = tolling->client_id;
|
||||||
tpm->tpm.tollingFlow.choice.request.infoId = info->asn->id;
|
tpm->tpm.tollingFlow.choice.request.infoId = info->asn->id;
|
||||||
|
|
@ -406,8 +431,33 @@ static void rsu_handle_recv(facilities_t* facilities, TPM_t* tpm_rx, void* secur
|
||||||
tpm->header.stationID = facilities->id.station_id;
|
tpm->header.stationID = facilities->id.station_id;
|
||||||
pthread_mutex_unlock(&facilities->id.lock);
|
pthread_mutex_unlock(&facilities->id.lock);
|
||||||
|
|
||||||
|
// timestamp
|
||||||
asn_ulong2INTEGER(&tpm->tpm.timestamp, it2s_tender_get_clock(&facilities->epv));
|
asn_ulong2INTEGER(&tpm->tpm.timestamp, it2s_tender_get_clock(&facilities->epv));
|
||||||
|
|
||||||
|
// stationType
|
||||||
|
tpm->tpm.stationType = facilities->station_type;
|
||||||
|
|
||||||
|
// referencePosition
|
||||||
|
it2s_tender_lock_space(&facilities->epv);
|
||||||
|
it2s_tender_get_space(&facilities->epv);
|
||||||
|
tpm->tpm.referencePosition.altitude.altitudeValue = facilities->epv.space.altitude;
|
||||||
|
tpm->tpm.referencePosition.altitude.altitudeConfidence = facilities->epv.space.altitude_conf;
|
||||||
|
tpm->tpm.referencePosition.latitude = facilities->epv.space.latitude;
|
||||||
|
tpm->tpm.referencePosition.longitude = facilities->epv.space.longitude;
|
||||||
|
uint16_t lat_conf = facilities->epv.space.latitude_conf;
|
||||||
|
uint16_t lon_conf = facilities->epv.space.longitude_conf;
|
||||||
|
it2s_tender_unlock_space(&facilities->epv);
|
||||||
|
if (lat_conf > lon_conf) {
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMinorConfidence = lon_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorConfidence = lat_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorOrientation = 0;
|
||||||
|
} else {
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMinorConfidence = lon_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorConfidence = lat_conf;
|
||||||
|
tpm->tpm.referencePosition.positionConfidenceEllipse.semiMajorOrientation = 900;
|
||||||
|
}
|
||||||
|
|
||||||
|
// tollingFlow
|
||||||
tpm->tpm.tollingFlow.present = TollingFlow_PR_reply;
|
tpm->tpm.tollingFlow.present = TollingFlow_PR_reply;
|
||||||
tpm->tpm.tollingFlow.choice.reply.clientId = req->clientId;
|
tpm->tpm.tollingFlow.choice.reply.clientId = req->clientId;
|
||||||
tpm->tpm.tollingFlow.choice.reply.infoId = req->infoId;
|
tpm->tpm.tollingFlow.choice.reply.infoId = req->infoId;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue