Added .service

This commit is contained in:
emanuel 2020-11-06 14:18:16 +00:00
parent 2bb7010dca
commit a5a320cf94
3 changed files with 40 additions and 14 deletions

View File

@ -19,12 +19,12 @@
static int extract_val_string(char ** output, toml_table_t *table, char* name) {
toml_raw_t raw;
if (0 == (raw = toml_raw_in(table, name))) {
syslog_err("[itss] [config] error extracting %s from file", name);
syslog_err("[facilities] [config] error extracting %s from file", name);
return 1;
}
if (toml_rtos(raw, (char**) output)) {
syslog_err("[itss] [config] error extracting %s to string", name);
syslog_err("[facilities] [config] error extracting %s to string", name);
return 1;
}
@ -34,12 +34,12 @@ static int extract_val_string(char ** output, toml_table_t *table, char* name) {
static int extract_val_bool(int * output, toml_table_t *table, char* name) {
toml_raw_t raw;
if (0 == (raw = toml_raw_in(table, name))) {
syslog_err("[itss] [config] error extracting %s from file", name);
syslog_err("[facilities] [config] error extracting %s from file", name);
return 1;
}
if (toml_rtob(raw, output)) {
syslog_err("[itss] [config] error extracting %s to bool", name);
syslog_err("[facilities] [config] error extracting %s to bool", name);
return 1;
}
@ -49,12 +49,12 @@ static int extract_val_bool(int * output, toml_table_t *table, char* name) {
static int extract_val_int(int64_t * output, toml_table_t *table, char* name) {
toml_raw_t raw;
if (0 == (raw = toml_raw_in(table, name))) {
syslog_err("[itss] [config] error extracting %s from file", name);
syslog_err("[facilities] [config] error extracting %s from file", name);
return 1;
}
if (toml_rtoi(raw, output)) {
syslog_err("[itss] [config] error extracting %s to int", name);
syslog_err("[facilities] [config] error extracting %s to int", name);
return 1;
}
@ -88,7 +88,7 @@ int itss_config(void* facilities_s, char* config_file) {
// Tables
toml_table_t *general, *general_station_id;
if (0 == (general = toml_table_in(conf, "general"))) {syslog_err("[itss] [config] failed locating [general] table"); return 1;}
if (0 == (general = toml_table_in(conf, "general"))) {syslog_err("[facilities] [config] failed locating [general] table"); return 1;}
if (0 == (general_station_id = toml_table_in(general, "station-id"))) {syslog_err("CONFIG: Failed locating [general] station-id table"); return 1;}
// Values
@ -100,7 +100,7 @@ int itss_config(void* facilities_s, char* config_file) {
} else if (strcmp("rsu", itss_type) == 0) {
facilities->station_type = 15;
} else {
syslog_err("[itss] [config] Unrecognized ITSS type, running as unkown");
syslog_err("[facilities] [config] Unrecognized ITSS type, running as unkown");
facilities->station_type = 0;
}
free(itss_type);

View File

@ -16,9 +16,11 @@
#include <it2s-btp.h>
#include <zmq.h>
#include <unistd.h>
#include <syslog.h>
#include <stdbool.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.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__)
@ -258,7 +260,7 @@ static int facilities_request(facilities_t *facilities, void* responder, uint8_t
transmission_duration = valid_to - valid_from;
}
// Respond to [itss]
// Respond to [applications]
fdres->code = FacilitiesResultCode_accepted;
fdres_oer = malloc(16);
enc = oer_encode_to_buffer(&asn_DEF_FacilitiesDataResult, NULL, fdres, fdres_oer, 16);
@ -433,8 +435,8 @@ void* tx(void* fc) {
uint8_t code;
void* application_socket = zmq_socket(facilities->ctx, ZMQ_REQ);
zmq_connect(application_socket, APPLICATION_ADDRESS);
void* applications_socket = zmq_socket(facilities->ctx, ZMQ_REQ);
zmq_connect(applications_socket, APPLICATION_ADDRESS);
void* transport_socket = zmq_socket(facilities->ctx, ZMQ_REQ);
zmq_connect(transport_socket, TRANSPORT_ADDRESS);
@ -465,8 +467,8 @@ void* tx(void* fc) {
break;
case 5:
syslog_debug("[facilities]-> sending FDI to ->[application] (%dB)", stream->packet_len[i]);
zmq_send(application_socket, stream->packet[i], stream->packet_len[i], 0);
zmq_recv(application_socket, &code, 1, 0);
zmq_send(applications_socket, stream->packet[i], stream->packet_len[i], 0);
zmq_recv(applications_socket, &code, 1, 0);
break;
}
}
@ -481,6 +483,11 @@ int main() {
facilities_t facilities;
facilities.exit = false;
struct stat st = {0};
if (stat("/tmp/itss", &st) == -1) {
mkdir("/tmp/itss", 0777);
}
time_t t;
srand((unsigned) time(&t));

View File

@ -0,0 +1,19 @@
[Unit]
Description=it2s-itss-facilities service
[Service]
UMask=0000
Type=simple
ExecStart=/usr/bin/it2s-itss-facilities
KillMode=mixed
SuccessExitStatus=0 SIGKILL SIGHUP KILL
KillSignal=SIGINT
TimeoutStopSec=5
ExecStopPost=/usr/bin/systemctl daemon-reload
ExecStopPost=/usr/bin/systemctl reset-failed
SendSIGHUP=yes
SendSIGKILL=yes
[Install]
WantedBy=multi-user.target