Simulated trajectory efforts

This commit is contained in:
emanuel 2022-02-04 16:15:18 +00:00
parent 85ca6df0c9
commit c66539eaeb
5 changed files with 30 additions and 25 deletions

View File

@ -430,6 +430,7 @@ int facilities_config(void* facilities_s) {
mreq->choice.attributes.choice.get.clockType = 1;
mreq->choice.attributes.choice.get.clock = 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);
zmq_connect(management_socket, facilities->zmq.management_address);
uint8_t buffer[256];
@ -449,7 +450,8 @@ int facilities_config(void* facilities_s) {
mrep->attributes->clockType &&
mrep->attributes->clock &&
mrep->attributes->clockOffset &&
mrep->attributes->gpsType) {
mrep->attributes->gpsType &&
mrep->attributes->trajectory) {
facilities->epv.space.latitude = mrep->attributes->coordinates->latitude;
facilities->epv.space.latitude_conf = mrep->attributes->coordinates->latitudeConfidence;
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->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 {
syslog_err("[applications] rejected MR attribute request");
rv = 1;

View File

@ -1,7 +1,9 @@
#include "dcm.h"
#include "facilities.h"
#include <it2s-tender/epv.h>
#include <it2s-tender/space.h>
#include <it2s-tender/trajectory.h>
#include <itss-transport/TransportRequest.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 rv = 0;
it2s_tender_st_s* trajectory = NULL;
it2s_tender_st_s trajectory[TRAJECTORY_MAX_LEN];
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);
lat = facilities->epv.space.latitude;
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_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.longitude = lon;
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:
ASN_STRUCT_FREE(asn_DEF_DCM, dcm);
free(trajectory);
return rv;
}

View File

@ -36,6 +36,7 @@
#include <it2s-tender/space.h>
#include <it2s-tender/time.h>
#include <it2s-tender/trajectory.h>
#define syslog_info(msg, ...) syslog(LOG_INFO, msg, ##__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;
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);
asn_INTEGER2ulong(&mi->choice.attributes.clock, &facilities->epv.time.clock);
it2s_tender_unlock_time(&facilities->epv);

View File

@ -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;
}

View File

@ -1,4 +0,0 @@
#pragma once
void* mc_service(void* fc);