Simulated trajectory efforts
This commit is contained in:
parent
85ca6df0c9
commit
c66539eaeb
11
src/config.c
11
src/config.c
|
|
@ -430,6 +430,7 @@ int facilities_config(void* facilities_s) {
|
||||||
mreq->choice.attributes.choice.get.clockType = 1;
|
mreq->choice.attributes.choice.get.clockType = 1;
|
||||||
mreq->choice.attributes.choice.get.clock = 1;
|
mreq->choice.attributes.choice.get.clock = 1;
|
||||||
mreq->choice.attributes.choice.get.clockOffset = 1;
|
mreq->choice.attributes.choice.get.clockOffset = 1;
|
||||||
|
mreq->choice.attributes.choice.get.trajectory = 1;
|
||||||
void* management_socket = zmq_socket(facilities->zmq.ctx, ZMQ_REQ);
|
void* management_socket = zmq_socket(facilities->zmq.ctx, ZMQ_REQ);
|
||||||
zmq_connect(management_socket, facilities->zmq.management_address);
|
zmq_connect(management_socket, facilities->zmq.management_address);
|
||||||
uint8_t buffer[256];
|
uint8_t buffer[256];
|
||||||
|
|
@ -449,7 +450,8 @@ int facilities_config(void* facilities_s) {
|
||||||
mrep->attributes->clockType &&
|
mrep->attributes->clockType &&
|
||||||
mrep->attributes->clock &&
|
mrep->attributes->clock &&
|
||||||
mrep->attributes->clockOffset &&
|
mrep->attributes->clockOffset &&
|
||||||
mrep->attributes->gpsType) {
|
mrep->attributes->gpsType &&
|
||||||
|
mrep->attributes->trajectory) {
|
||||||
facilities->epv.space.latitude = mrep->attributes->coordinates->latitude;
|
facilities->epv.space.latitude = mrep->attributes->coordinates->latitude;
|
||||||
facilities->epv.space.latitude_conf = mrep->attributes->coordinates->latitudeConfidence;
|
facilities->epv.space.latitude_conf = mrep->attributes->coordinates->latitudeConfidence;
|
||||||
facilities->epv.space.longitude = mrep->attributes->coordinates->longitude;
|
facilities->epv.space.longitude = mrep->attributes->coordinates->longitude;
|
||||||
|
|
@ -466,6 +468,13 @@ int facilities_config(void* facilities_s) {
|
||||||
|
|
||||||
asn_INTEGER2ulong(mrep->attributes->clock, &facilities->epv.time.clock);
|
asn_INTEGER2ulong(mrep->attributes->clock, &facilities->epv.time.clock);
|
||||||
asn_INTEGER2ulong(mrep->attributes->clockOffset, &facilities->epv.time.offset);
|
asn_INTEGER2ulong(mrep->attributes->clockOffset, &facilities->epv.time.offset);
|
||||||
|
|
||||||
|
facilities->epv.trajectory.len = mrep->attributes->trajectory->list.count;
|
||||||
|
for (int i = 0; i < mrep->attributes->trajectory->list.count; ++i) {
|
||||||
|
facilities->epv.trajectory.path[i].latitude = mrep->attributes->trajectory->list.array[i]->latitude;
|
||||||
|
facilities->epv.trajectory.path[i].longitude = mrep->attributes->trajectory->list.array[i]->longitude;
|
||||||
|
asn_INTEGER2ulong(&mrep->attributes->trajectory->list.array[i]->timestamp, &facilities->epv.trajectory.path[i].timestamp);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
syslog_err("[applications] rejected MR attribute request");
|
syslog_err("[applications] rejected MR attribute request");
|
||||||
rv = 1;
|
rv = 1;
|
||||||
|
|
|
||||||
13
src/dcm.c
13
src/dcm.c
|
|
@ -1,7 +1,9 @@
|
||||||
#include "dcm.h"
|
#include "dcm.h"
|
||||||
#include "facilities.h"
|
#include "facilities.h"
|
||||||
|
|
||||||
|
#include <it2s-tender/epv.h>
|
||||||
#include <it2s-tender/space.h>
|
#include <it2s-tender/space.h>
|
||||||
|
#include <it2s-tender/trajectory.h>
|
||||||
#include <itss-transport/TransportRequest.h>
|
#include <itss-transport/TransportRequest.h>
|
||||||
#include <dcm/DCM.h>
|
#include <dcm/DCM.h>
|
||||||
|
|
||||||
|
|
@ -15,7 +17,7 @@ int dcm_check() {
|
||||||
int mk_dcm(facilities_t* facilities, uint8_t* dcm_uper, uint16_t* dcm_uper_len) {
|
int mk_dcm(facilities_t* facilities, uint8_t* dcm_uper, uint16_t* dcm_uper_len) {
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
|
||||||
it2s_tender_st_s* trajectory = NULL;
|
it2s_tender_st_s trajectory[TRAJECTORY_MAX_LEN];
|
||||||
|
|
||||||
DCM_t* dcm = calloc(1, sizeof(DCM_t));
|
DCM_t* dcm = calloc(1, sizeof(DCM_t));
|
||||||
|
|
||||||
|
|
@ -32,11 +34,13 @@ int mk_dcm(facilities_t* facilities, uint8_t* dcm_uper, uint16_t* dcm_uper_len)
|
||||||
it2s_tender_get_space(&facilities->epv);
|
it2s_tender_get_space(&facilities->epv);
|
||||||
lat = facilities->epv.space.latitude;
|
lat = facilities->epv.space.latitude;
|
||||||
lon = facilities->epv.space.longitude;
|
lon = facilities->epv.space.longitude;
|
||||||
trajectory_len = facilities->epv.trajectory.len;
|
|
||||||
trajectory = malloc(trajectory_len * sizeof(it2s_tender_st_s));
|
|
||||||
memcpy(trajectory, facilities->epv.trajectory.path, trajectory_len * sizeof(it2s_tender_st_s));
|
|
||||||
it2s_tender_unlock_space(&facilities->epv);
|
it2s_tender_unlock_space(&facilities->epv);
|
||||||
|
|
||||||
|
it2s_tender_lock_trajectory(&facilities->epv);
|
||||||
|
trajectory_len = facilities->epv.trajectory.len;
|
||||||
|
memcpy(trajectory, facilities->epv.trajectory.path, trajectory_len * sizeof(it2s_tender_st_s));
|
||||||
|
it2s_tender_unlock_trajectory(&facilities->epv);
|
||||||
|
|
||||||
dcm->dcm.currentPosition.latitude = lat;
|
dcm->dcm.currentPosition.latitude = lat;
|
||||||
dcm->dcm.currentPosition.longitude = lon;
|
dcm->dcm.currentPosition.longitude = lon;
|
||||||
asn_ulong2INTEGER(&dcm->dcm.currentPosition.timestamp, now);
|
asn_ulong2INTEGER(&dcm->dcm.currentPosition.timestamp, now);
|
||||||
|
|
@ -61,7 +65,6 @@ int mk_dcm(facilities_t* facilities, uint8_t* dcm_uper, uint16_t* dcm_uper_len)
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
ASN_STRUCT_FREE(asn_DEF_DCM, dcm);
|
ASN_STRUCT_FREE(asn_DEF_DCM, dcm);
|
||||||
free(trajectory);
|
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include <it2s-tender/space.h>
|
#include <it2s-tender/space.h>
|
||||||
#include <it2s-tender/time.h>
|
#include <it2s-tender/time.h>
|
||||||
|
#include <it2s-tender/trajectory.h>
|
||||||
|
|
||||||
#define syslog_info(msg, ...) syslog(LOG_INFO, msg, ##__VA_ARGS__)
|
#define syslog_info(msg, ...) syslog(LOG_INFO, msg, ##__VA_ARGS__)
|
||||||
#define syslog_emerg(msg, ...) syslog(LOG_EMERG, "%s:%d [" msg "]", __func__, __LINE__, ##__VA_ARGS__)
|
#define syslog_emerg(msg, ...) syslog(LOG_EMERG, "%s:%d [" msg "]", __func__, __LINE__, ##__VA_ARGS__)
|
||||||
|
|
@ -573,6 +574,17 @@ static int management_indication(facilities_t* facilities, void* responder, uint
|
||||||
facilities->epv.space.altitude_conf = mi->choice.attributes.altitude.altitudeConfidence;
|
facilities->epv.space.altitude_conf = mi->choice.attributes.altitude.altitudeConfidence;
|
||||||
it2s_tender_unlock_space(&facilities->epv);
|
it2s_tender_unlock_space(&facilities->epv);
|
||||||
|
|
||||||
|
it2s_tender_lock_trajectory(&facilities->epv);
|
||||||
|
if (mi->choice.attributes.trajectory) {
|
||||||
|
facilities->epv.trajectory.len = mi->choice.attributes.trajectory->list.count;
|
||||||
|
for (int i = 0; i < mi->choice.attributes.trajectory->list.count; ++i) {
|
||||||
|
facilities->epv.trajectory.path[i].latitude = mi->choice.attributes.trajectory->list.array[i]->latitude;
|
||||||
|
facilities->epv.trajectory.path[i].longitude = mi->choice.attributes.trajectory->list.array[i]->longitude;
|
||||||
|
asn_INTEGER2ulong(&mi->choice.attributes.trajectory->list.array[i]->timestamp, &facilities->epv.trajectory.path[i].timestamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
it2s_tender_unlock_trajectory(&facilities->epv);
|
||||||
|
|
||||||
it2s_tender_lock_time(&facilities->epv);
|
it2s_tender_lock_time(&facilities->epv);
|
||||||
asn_INTEGER2ulong(&mi->choice.attributes.clock, &facilities->epv.time.clock);
|
asn_INTEGER2ulong(&mi->choice.attributes.clock, &facilities->epv.time.clock);
|
||||||
it2s_tender_unlock_time(&facilities->epv);
|
it2s_tender_unlock_time(&facilities->epv);
|
||||||
|
|
|
||||||
15
src/mcm.c
15
src/mcm.c
|
|
@ -1,15 +0,0 @@
|
||||||
#include "mcm.h"
|
|
||||||
#include "facilities.h"
|
|
||||||
|
|
||||||
|
|
||||||
void* mc_service(void* fc) {
|
|
||||||
|
|
||||||
facilities_t* facilities = (facilities_t*) fc;
|
|
||||||
|
|
||||||
while (!facilities->exit) {
|
|
||||||
|
|
||||||
usleep(50*1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue